{"version":3,"file":"ontimize-web-ngx.mjs","sources":["../../projects/ontimize-web-ngx/src/lib/util/base64.ts","../../projects/ontimize-web-ngx/src/lib/util/codes.ts","../../projects/ontimize-web-ngx/src/lib/util/util.ts","../../projects/ontimize-web-ngx/src/lib/config/app-config.ts","../../projects/ontimize-web-ngx/src/lib/pipes/is-empty-value.pipe.ts","../../projects/ontimize-web-ngx/src/lib/components/list/list-item/o-list-item.ts","../../projects/ontimize-web-ngx/src/lib/components/list/list-item/o-list-item.directive.ts","../../projects/ontimize-web-ngx/src/lib/directives/input-regulate.directive.ts","../../projects/ontimize-web-ngx/src/lib/directives/keyboard-listener.directive.ts","../../projects/ontimize-web-ngx/src/lib/decorators/input-converter.ts","../../projects/ontimize-web-ngx/src/lib/i18n/i18n.ts","../../projects/ontimize-web-ngx/src/lib/services/moment.service.ts","../../projects/ontimize-web-ngx/src/lib/util/async.ts","../../projects/ontimize-web-ngx/src/lib/services/auth.service.ts","../../projects/ontimize-web-ngx/src/lib/services/login-storage.service.ts","../../projects/ontimize-web-ngx/src/lib/services/base-service-response.class.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize/ontimize-service-response.class.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize/ontimize-service-response.adapter.ts","../../projects/ontimize-web-ngx/src/lib/services/parser/o-service-response.parser.ts","../../projects/ontimize-web-ngx/src/lib/services/pagination-context.service.ts","../../projects/ontimize-web-ngx/src/lib/services/base-service.class.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize/ontimize-base-service.class.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize/ontimize.service.ts","../../projects/ontimize-web-ngx/src/lib/services/permissions/ontimize-base-permissions-service.class.ts","../../projects/ontimize-web-ngx/src/lib/services/permissions/ontimize-ee-permissions.service.ts","../../projects/ontimize-web-ngx/src/lib/services/permissions/ontimize-permissions.service.ts","../../projects/ontimize-web-ngx/src/lib/services/permissions/permissions.service.ts","../../projects/ontimize-web-ngx/src/lib/services/local-storage.service.ts","../../projects/ontimize-web-ngx/src/lib/services/remote-config.service.ts","../../projects/ontimize-web-ngx/src/lib/services/o-auth.service.ts","../../projects/ontimize-web-ngx/src/lib/util/filter-expression.utils.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize-export-data-base-provider.service.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize-export-data-provider-3x.service.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize-export-data-provider.service.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize/ontimize-ee.service.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize/ontimize-export-3xx.service.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize/ontimize-export.service.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize/ontimize-file.service.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-component-state.class.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-component-state.service.ts","../../projects/ontimize-web-ngx/src/lib/services/factories.ts","../../projects/ontimize-web-ngx/src/lib/services/translate/o-translate.service.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/dialog/o-dialog-internal.component.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/dialog/o-dialog-internal.component.html","../../projects/ontimize-web-ngx/src/lib/services/o-error-dialog-manager.service.ts","../../projects/ontimize-web-ngx/src/lib/components/form/o-form-value.ts","../../projects/ontimize-web-ngx/src/lib/util/sqltypes.ts","../../projects/ontimize-web-ngx/src/lib/util/service.utils.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/o-content-menu-base-item.class.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/context-menu-group/o-context-menu-group.component.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/context-menu-item/o-context-menu-item.component.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/context-menu-separator/o-context-menu-separator.component.ts","../../projects/ontimize-web-ngx/src/lib/pipes/o-translate.pipe.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component.html","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/context-menu/o-context-menu-content.component.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/context-menu/o-context-menu-content.component.html","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/o-context-menu-overlay.service.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/o-context-menu.service.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/o-context-menu.component.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/dialog/o-dialog-base.class.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/dialog/o-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/dialog/o-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/services/dialog.service.ts","../../projects/ontimize-web-ngx/src/lib/services/o-breadcrumb.service.ts","../../projects/ontimize-web-ngx/src/lib/services/navigation.service.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/snackbar/o-snackbar-base.class.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/snackbar/o-snackbar.component.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/snackbar/o-snackbar.component.html","../../projects/ontimize-web-ngx/src/lib/services/snackbar.service.ts","../../projects/ontimize-web-ngx/src/lib/components/breadcrumb/o-breadcrumb.component.ts","../../projects/ontimize-web-ngx/src/lib/components/breadcrumb/o-breadcrumb.component.html","../../projects/ontimize-web-ngx/src/lib/components/form-container/o-form-container.component.ts","../../projects/ontimize-web-ngx/src/lib/components/form-container/o-form-container.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/o-form-control.class.ts","../../projects/ontimize-web-ngx/src/lib/components/form/cache/o-form.cache.class.ts","../../projects/ontimize-web-ngx/src/lib/components/form/navigation/o-form-confirm-exit.service.ts","../../projects/ontimize-web-ngx/src/lib/components/form/guards/o-form-can-deactivate.guard.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/directives/o-form-layout-manager-content.directive.ts","../../projects/ontimize-web-ngx/src/lib/services/o-form-layout-manager.service.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/o-form-layout-manager-base.class.ts","../../projects/ontimize-web-ngx/src/lib/components/form/navigation/o-form.navigation.class.ts","../../projects/ontimize-web-ngx/src/lib/components/form/o-form-base.class.ts","../../projects/ontimize-web-ngx/src/lib/components/form/o-form-tokens.ts","../../projects/ontimize-web-ngx/src/lib/components/form/services/o-form-message.service.ts","../../projects/ontimize-web-ngx/src/lib/util/permissions.ts","../../projects/ontimize-web-ngx/src/lib/components/form/toolbar/o-form-toolbar-base.class.ts","../../projects/ontimize-web-ngx/src/lib/components/form/navigation/o-form-navigation.component.ts","../../projects/ontimize-web-ngx/src/lib/components/form/navigation/o-form-navigation.component.html","../../projects/ontimize-web-ngx/src/lib/components/form/toolbar/o-form-toolbar.component.ts","../../projects/ontimize-web-ngx/src/lib/components/form/toolbar/o-form-toolbar.component.html","../../projects/ontimize-web-ngx/src/lib/components/form/o-form.component.ts","../../projects/ontimize-web-ngx/src/lib/components/form/o-form.component.html","../../projects/ontimize-web-ngx/src/lib/util/errors.ts","../../projects/ontimize-web-ngx/src/lib/directives/o-mat-error.directive.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/validation/o-validator.component.ts","../../projects/ontimize-web-ngx/src/lib/components/o-component.class.ts","../../projects/ontimize-web-ngx/src/lib/components/o-value-change-event.class.ts","../../projects/ontimize-web-ngx/src/lib/components/o-form-data-component.class.ts","../../projects/ontimize-web-ngx/src/lib/components/input/o-form-service-component.class.ts","../../projects/ontimize-web-ngx/src/lib/directives/locker.directive.ts","../../projects/ontimize-web-ngx/src/lib/directives/o-file-drag-and-drop.directive.ts","../../projects/ontimize-web-ngx/src/lib/directives/o-hidden.directive.ts","../../projects/ontimize-web-ngx/src/lib/directives/o-mat-prefix.directive.ts","../../projects/ontimize-web-ngx/src/lib/directives/o-mat-suffix.directive.ts","../../projects/ontimize-web-ngx/src/lib/directives/o-tab-group.directive.ts","../../projects/ontimize-web-ngx/src/lib/config/o-directives.ts","../../projects/ontimize-web-ngx/src/lib/pipes/columns-filter.pipe.ts","../../projects/ontimize-web-ngx/src/lib/services/number.service.ts","../../projects/ontimize-web-ngx/src/lib/services/currency.service.ts","../../projects/ontimize-web-ngx/src/lib/pipes/o-integer.pipe.ts","../../projects/ontimize-web-ngx/src/lib/pipes/o-real.pipe.ts","../../projects/ontimize-web-ngx/src/lib/pipes/o-currency.pipe.ts","../../projects/ontimize-web-ngx/src/lib/pipes/o-safe.pipe.ts","../../projects/ontimize-web-ngx/src/lib/services/icon.service.ts","../../projects/ontimize-web-ngx/src/lib/pipes/o-icon.pipe.ts","../../projects/ontimize-web-ngx/src/lib/pipes/o-moment.pipe.ts","../../projects/ontimize-web-ngx/src/lib/pipes/o-percentage.pipe.ts","../../projects/ontimize-web-ngx/src/lib/pipes/order-by.pipe.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/error403/o-error-403.component.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/error403/o-error-403.component.html","../../projects/ontimize-web-ngx/src/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/o-table-base-dialog.class.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/filter/store-filter/o-store-filter-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/filter/store-filter/o-store-filter-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/shared/components/validation/o-error.component.ts","../../projects/ontimize-web-ngx/src/lib/services/ontimize-icon-registry.service.ts","../../projects/ontimize-web-ngx/src/lib/shared/material/date/mat-date-formats.factory.ts","../../projects/ontimize-web-ngx/src/lib/shared/material/custom.material.module.ts","../../projects/ontimize-web-ngx/src/lib/shared/shared.module.ts","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/o-bar-menu-base.class.ts","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/o-base-menu-item.class.ts","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/locale-menu-item/o-locale-bar-menu-item.component.ts","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/locale-menu-item/o-locale-bar-menu-item.component.html","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/menu-group/o-bar-menu-group.component.ts","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/menu-group/o-bar-menu-group.component.html","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/menu-item/o-bar-menu-item.component.ts","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/menu-item/o-bar-menu-item.component.html","../../projects/ontimize-web-ngx/src/lib/services/app-menu.service.ts","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/menu-nested/o-bar-menu-nested.component.ts","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/menu-nested/o-bar-menu-nested.component.html","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/menu-separator/o-bar-menu-separator.component.ts","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/menu-separator/o-bar-menu-separator.component.html","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/o-bar-menu.component.ts","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/o-bar-menu.component.html","../../projects/ontimize-web-ngx/src/lib/components/bar-menu/o-bar-menu.module.ts","../../projects/ontimize-web-ngx/src/lib/components/breadcrumb/o-breadcrumb.module.ts","../../projects/ontimize-web-ngx/src/lib/components/button-toggle/o-button-toggle.component.ts","../../projects/ontimize-web-ngx/src/lib/components/button-toggle/o-button-toggle.component.html","../../projects/ontimize-web-ngx/src/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.ts","../../projects/ontimize-web-ngx/src/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.html","../../projects/ontimize-web-ngx/src/lib/components/button-toggle/o-button-toggle.module.ts","../../projects/ontimize-web-ngx/src/lib/services/app-config.provider.ts","../../projects/ontimize-web-ngx/src/lib/services/o-user-info.service.ts","../../projects/ontimize-web-ngx/src/lib/services/auth-guard.service.ts","../../projects/ontimize-web-ngx/src/lib/services/o-modules-info.service.ts","../../projects/ontimize-web-ngx/src/lib/services/share-can-activate-child.service.ts","../../projects/ontimize-web-ngx/src/lib/services/permissions/permissions-can-activate.guard.ts","../../projects/ontimize-web-ngx/src/lib/services/permissions/o-permissions.module.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-form-layout-manager-component-state.class.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-form-layout-manager-component-state.service.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-grid-component-state.class.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-grid-component-state.service.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-list-component-state.class.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-list-component-state.service.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-table-component-state.class.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-table-component-state.service.ts","../../projects/ontimize-web-ngx/src/lib/services/translate/o-translate-http-loader.ts","../../projects/ontimize-web-ngx/src/lib/services/translate/o-translate.parser.ts","../../projects/ontimize-web-ngx/src/lib/services/appearance.service.ts","../../projects/ontimize-web-ngx/src/lib/util/currencyUtil.ts","../../projects/ontimize-web-ngx/src/lib/components/button/o-button.component.ts","../../projects/ontimize-web-ngx/src/lib/components/button/o-button.component.html","../../projects/ontimize-web-ngx/src/lib/components/button/o-button.module.ts","../../projects/ontimize-web-ngx/src/lib/components/card-menu-item/o-card-menu-item.component.ts","../../projects/ontimize-web-ngx/src/lib/components/card-menu-item/o-card-menu-item.component.html","../../projects/ontimize-web-ngx/src/lib/components/card-menu-item/o-card-menu-item.module.ts","../../projects/ontimize-web-ngx/src/lib/components/container/o-container-component.class.ts","../../projects/ontimize-web-ngx/src/lib/components/container/o-container-collapsible-component.class.ts","../../projects/ontimize-web-ngx/src/lib/components/container/column-collapsible/o-column-collapsible.component.ts","../../projects/ontimize-web-ngx/src/lib/components/container/column-collapsible/o-column-collapsible.component.html","../../projects/ontimize-web-ngx/src/lib/components/container/column-collapsible/o-column-collapsible.module.ts","../../projects/ontimize-web-ngx/src/lib/components/container/column/o-column.component.ts","../../projects/ontimize-web-ngx/src/lib/components/container/column/o-column.component.html","../../projects/ontimize-web-ngx/src/lib/components/container/column/o-column.module.ts","../../projects/ontimize-web-ngx/src/lib/components/container/row-collapsible/o-row-collapsible.component.ts","../../projects/ontimize-web-ngx/src/lib/components/container/row-collapsible/o-row-collapsible.component.html","../../projects/ontimize-web-ngx/src/lib/components/container/row-collapsible/o-row-collapsible.module.ts","../../projects/ontimize-web-ngx/src/lib/components/container/row/o-row.component.ts","../../projects/ontimize-web-ngx/src/lib/components/container/row/o-row.component.html","../../projects/ontimize-web-ngx/src/lib/components/container/row/o-row.module.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/o-context-menu.directive.ts","../../projects/ontimize-web-ngx/src/lib/components/contextmenu/o-context-menu.module.ts","../../projects/ontimize-web-ngx/src/lib/components/dual-list-selector/dual-list-selector-item/date/o-dual-list-selector-date-item.component.ts","../../projects/ontimize-web-ngx/src/lib/components/dual-list-selector/dual-list-selector-item/date/o-dual-list-selector-date-item.component.html","../../projects/ontimize-web-ngx/src/lib/components/dual-list-selector/o-dual-list-selector.component.ts","../../projects/ontimize-web-ngx/src/lib/components/dual-list-selector/o-dual-list-selector.component.html","../../projects/ontimize-web-ngx/src/lib/components/dual-list-selector/o-dual-list-selector.module.ts","../../projects/ontimize-web-ngx/src/lib/components/expandable-container/o-expandable-container.component.ts","../../projects/ontimize-web-ngx/src/lib/components/expandable-container/o-expandable-container.component.html","../../projects/ontimize-web-ngx/src/lib/components/expandable-container/o-expandable-container.module.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-filter-builder-component-state.class.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-filter-builder-component-state.service.ts","../../projects/ontimize-web-ngx/src/lib/components/filter-builder/o-filter-builder-base.class.ts","../../projects/ontimize-web-ngx/src/lib/components/filter-builder/o-filter-builder.component.ts","../../projects/ontimize-web-ngx/src/lib/components/filter-builder/o-filter-builder.component.html","../../projects/ontimize-web-ngx/src/lib/components/filter-builder/o-filter-builder-clear.directive.ts","../../projects/ontimize-web-ngx/src/lib/components/filter-builder/o-filter-builder-query.directive.ts","../../projects/ontimize-web-ngx/src/lib/components/filter-builder/filter-builder-menu/filter-builder-menu.component.ts","../../projects/ontimize-web-ngx/src/lib/components/filter-builder/filter-builder-menu/filter-builder-menu.component.html","../../projects/ontimize-web-ngx/src/lib/components/filter-builder/o-filter-builder.module.ts","../../projects/ontimize-web-ngx/src/lib/components/form-container/o-form-container.module.ts","../../projects/ontimize-web-ngx/src/lib/components/form/toolbar/o-form-toolbar.module.ts","../../projects/ontimize-web-ngx/src/lib/components/form/o-form.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/search-input/o-search-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/search-input/o-search-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/search-input/o-search-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/o-data-toolbar/o-data-toolbar.component.ts","../../projects/ontimize-web-ngx/src/lib/components/o-data-toolbar/o-data-toolbar.component.html","../../projects/ontimize-web-ngx/src/lib/components/o-data-toolbar/o-data-toolbar.module.ts","../../projects/ontimize-web-ngx/src/lib/components/grid/grid-item/o-grid-item.component.ts","../../projects/ontimize-web-ngx/src/lib/components/grid/grid-item/o-grid-item.component.html","../../projects/ontimize-web-ngx/src/lib/components/grid/grid-item/o-grid-item.directive.ts","../../projects/ontimize-web-ngx/src/lib/types/o-global-config.type.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/guards/o-form-layout-can-activate-child.guard.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.html","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.html","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/o-form-layout-manager.component.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/o-form-layout-manager.component.html","../../projects/ontimize-web-ngx/src/lib/components/o-service-base-component.class.ts","../../projects/ontimize-web-ngx/src/lib/components/o-service-component.class.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/sort/o-mat-sort.ts","../../projects/ontimize-web-ngx/src/lib/components/o-skeleton.component.ts","../../projects/ontimize-web-ngx/src/lib/components/grid/skeketon/o-grid-skeleton.component.ts","../../projects/ontimize-web-ngx/src/lib/components/grid/skeketon/o-grid-skeleton.component.html","../../projects/ontimize-web-ngx/src/lib/components/grid/o-grid.component.ts","../../projects/ontimize-web-ngx/src/lib/components/grid/o-grid.component.html","../../projects/ontimize-web-ngx/src/lib/components/grid/o-grid.module.ts","../../projects/ontimize-web-ngx/src/lib/components/image/fullscreen/fullscreen-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/components/image/fullscreen/fullscreen-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/components/image/o-image.component.ts","../../projects/ontimize-web-ngx/src/lib/components/image/o-image.component.html","../../projects/ontimize-web-ngx/src/lib/components/image/o-image.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/o-boolean-form-data-component.class.ts","../../projects/ontimize-web-ngx/src/lib/components/input/checkbox/o-checkbox.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/checkbox/o-checkbox.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/checkbox/o-checkbox.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-search/o-combo-search.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-search/o-combo-search.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/combo/o-combo.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/o-combo.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/o-combo-renderer.class.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/boolean/o-combo-renderer-boolean.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/boolean/o-combo-renderer-boolean.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/integer/o-combo-renderer-integer.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/integer/o-combo-renderer-integer.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/real/o-combo-renderer-real.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/real/o-combo-renderer-real.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/currency/o-combo-renderer-currency.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/currency/o-combo-renderer-currency.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/date/o-combo-renderer-date.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/date/o-combo-renderer-date.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/icon/o-combo-renderer-icon.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/icon/o-combo-renderer-icon.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/percentage/o-combo-renderer-percentage.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/percentage/o-combo-renderer-percentage.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/combo/combo-renderer/combo-renderer.ts","../../projects/ontimize-web-ngx/src/lib/components/input/combo/o-combo.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/text-input/o-text-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/text-input/o-text-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/text-input/o-text-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/integer-input/o-integer-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/integer-input/o-integer-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/integer-input/o-integer-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/real-input/o-real-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/real-input/o-real-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/real-input/o-real-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/currency-input/o-currency-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/currency-input/o-currency-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/currency-input/o-currency-input.module.ts","../../projects/ontimize-web-ngx/src/lib/shared/material/date/ontimize-moment-date-adapter.ts","../../projects/ontimize-web-ngx/src/lib/components/input/date-input/o-date-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/date-input/o-date-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/date-input/o-date-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/date-range-legacy/o-daterange-picker.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/date-range-legacy/o-daterange-picker.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/date-range-legacy/o-daterange-input.directive.ts","../../projects/ontimize-web-ngx/src/lib/components/input/date-range-legacy/o-daterange-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/date-range-legacy/o-daterange-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/date-range-legacy/o-daterange-input.module.ts","../../projects/ontimize-web-ngx/src/lib/validators/o-validators.ts","../../projects/ontimize-web-ngx/src/lib/components/input/email-input/o-email-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/email-input/o-email-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/email-input/o-email-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/file-input/o-file-item.class.ts","../../projects/ontimize-web-ngx/src/lib/components/input/file-input/o-file-uploader.class.ts","../../projects/ontimize-web-ngx/src/lib/components/input/file-input/o-file-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/file-input/o-file-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/file-input/o-file-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/hour-input/o-hour-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/hour-input/o-hour-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/hour-input/o-hour-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/material/ckeditor/ck-editor.component.ts","../../projects/ontimize-web-ngx/src/lib/components/material/ckeditor/ck-editor.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/html-input/o-html-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/html-input/o-html-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/html-input/o-html-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/o-list-picker-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/o-list-picker-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/o-list-picker.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/o-list-picker.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/o-list-picker-renderer.class.ts","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/integer/o-list-picker-renderer-integer.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/integer/o-list-picker-renderer-integer.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/real/o-list-picker-renderer-real.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/real/o-list-picker-renderer-real.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/currency/o-list-picker-renderer-currency.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/currency/o-list-picker-renderer-currency.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/date/o-list-picker-renderer-date.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/date/o-list-picker-renderer-date.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/percentage/o-list-picker-renderer-percentage.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/percentage/o-list-picker-renderer-percentage.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/listpicker-renderer/listpicker-renderer.ts","../../projects/ontimize-web-ngx/src/lib/components/input/listpicker/o-list-picker.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/nif-input/o-nif-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/nif-input/o-nif-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/nif-input/o-nif-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/password-input/o-password-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/password-input/o-password-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/password-input/o-password-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/percent-input/o-percent-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/percent-input/o-percent-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/percent-input/o-percent-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/phone-input/enums/country-iso.enum.ts","../../projects/ontimize-web-ngx/src/lib/components/input/phone-input/data/country-code.ts","../../projects/ontimize-web-ngx/src/lib/components/input/phone-input/enums/phone-number-format.enum.ts","../../projects/ontimize-web-ngx/src/lib/components/input/phone-input/o-phone-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/phone-input/o-phone-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/phone-input/o-phone-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/radio/o-radio.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/radio/o-radio.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/radio/o-radio.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/slide-toggle/o-slide-toggle.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/slide-toggle/o-slide-toggle.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/slide-toggle/o-slide-toggle.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/slider/o-slider.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/slider/o-slider.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/slider/o-slider.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/textarea-input/o-textarea-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/textarea-input/o-textarea-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/textarea-input/o-textarea-input.module.ts","../../projects/ontimize-web-ngx/src/lib/components/input/time-input/o-time-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/time-input/o-time-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/time-input/o-time-input.module.ts","../../projects/ontimize-web-ngx/src/lib/util/locale.ts","../../projects/ontimize-web-ngx/src/lib/components/language-selector/o-language-selector.component.ts","../../projects/ontimize-web-ngx/src/lib/components/language-selector/o-language-selector.component.html","../../projects/ontimize-web-ngx/src/lib/components/language-selector/o-language-selector.module.ts","../../projects/ontimize-web-ngx/src/lib/components/list/skeleton/o-list-skeleton.component.ts","../../projects/ontimize-web-ngx/src/lib/components/list/skeleton/o-list-skeleton.component.html","../../projects/ontimize-web-ngx/src/lib/components/list/o-list.component.ts","../../projects/ontimize-web-ngx/src/lib/components/list/o-list.component.html","../../projects/ontimize-web-ngx/src/lib/components/list/list-item/o-list-item.component.ts","../../projects/ontimize-web-ngx/src/lib/components/list/list-item/o-list-item.component.html","../../projects/ontimize-web-ngx/src/lib/components/list/renderers/o-list-item-text-renderer.class.ts","../../projects/ontimize-web-ngx/src/lib/components/list/renderers/avatar/o-list-item-avatar.component.ts","../../projects/ontimize-web-ngx/src/lib/components/list/renderers/avatar/o-list-item-avatar.component.html","../../projects/ontimize-web-ngx/src/lib/components/list/renderers/o-list-item-card-renderer.class.ts","../../projects/ontimize-web-ngx/src/lib/components/list/renderers/card-image/o-list-item-card-image.component.ts","../../projects/ontimize-web-ngx/src/lib/components/list/renderers/card-image/o-list-item-card-image.component.html","../../projects/ontimize-web-ngx/src/lib/components/list/renderers/card/o-list-item-card.component.ts","../../projects/ontimize-web-ngx/src/lib/components/list/renderers/card/o-list-item-card.component.html","../../projects/ontimize-web-ngx/src/lib/components/list/renderers/text/o-list-item-text.component.ts","../../projects/ontimize-web-ngx/src/lib/components/list/renderers/text/o-list-item-text.component.html","../../projects/ontimize-web-ngx/src/lib/components/list/o-list.module.ts","../../projects/ontimize-web-ngx/src/lib/types/table/o-column-value-filter.type.ts","../../projects/ontimize-web-ngx/src/lib/types/table/o-table-filter-by-column-data.type.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/o-column.class.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/row/o-table-row-group.class.ts","../../projects/ontimize-web-ngx/src/lib/components/table/o-table-base.class.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/contextmenu/o-table-context-menu.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/contextmenu/o-table-context-menu.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/default-o-table-options.class.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/default-o-table.datasource.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/export-button/o-table-export-button.service.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-menu/o-table-export-configuration.class.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/export-button/o-table-export-button.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/footer/paginator/o-base-table-paginator.class.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/footer/paginator/o-table-mat-paginator-intl.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/footer/paginator/o-table-paginator.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-button/o-table-button.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-button/o-table-button.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-buttons/o-table-buttons.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-buttons/o-table-buttons.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-option/o-table-option.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-option/o-table-option.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-menu/o-table-menu.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-menu/o-table-menu.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/sort/o-mat-sort-header.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/sort/sort-header.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-header-column-filter-icon/o-table-header-column-filter-icon.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-header-column-filter-icon/o-table-header-column-filter-icon.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-header/o-table-header.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-header/o-table-header.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-columns-grouping/columns/o-table-columns-grouping-column.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-columns-grouping/o-table-columns-grouping.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-column-select-all/o-table-column-select-all.directive.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/o-table.dao.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/row/o-table-row.directive.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/sort/o-mat-sort-module.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/row/table-row-expandable/o-table-row-expandable.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/o-table-datasource.service.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/o-table-strategy.service.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/pipes/o-table-row-class.pipe.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/skeleton/o-table-skeleton.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/skeleton/o-table-skeleton.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/utils/o-table.tokens.ts","../../projects/ontimize-web-ngx/src/lib/components/table/o-table.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/o-table.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/boolean/o-table-cell-editor-boolean.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/boolean/o-table-cell-editor-boolean.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/date/o-table-cell-editor-date.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/date/o-table-cell-editor-date.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/email/o-table-cell-editor-email.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/email/o-table-cell-editor-email.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/integer/o-table-cell-editor-integer.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/integer/o-table-cell-editor-integer.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/text/o-table-cell-editor-text.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/text/o-table-cell-editor-text.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-editor/cell-editor.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/action/o-table-cell-renderer-action.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/action/o-table-cell-renderer-action.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/boolean/o-table-cell-renderer-boolean.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/boolean/o-table-cell-renderer-boolean.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/integer/o-table-cell-renderer-integer.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/integer/o-table-cell-renderer-integer.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/real/o-table-cell-renderer-real.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/real/o-table-cell-renderer-real.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/currency/o-table-cell-renderer-currency.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/currency/o-table-cell-renderer-currency.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/date/o-table-cell-renderer-date.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/date/o-table-cell-renderer-date.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/image/o-table-cell-renderer-image.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/image/o-table-cell-renderer-image.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/percentage/o-table-cell-renderer-percentage.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/percentage/o-table-cell-renderer-percentage.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/time/o-table-cell-renderer-time.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/time/o-table-cell-renderer-time.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/translate/o-table-cell-renderer-translate.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/translate/o-table-cell-renderer-translate.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/cell-renderer/cell-renderer.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/o-table-column.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/o-table-column.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/column/calculated/o-table-column-calculated.component.ts","../../projects/ontimize-web-ngx/src/lib/components/table/column/calculated/o-table-column-calculated.component.html","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/dialog/o-table-dialog-components.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/footer/o-table-footer-components.ts","../../projects/ontimize-web-ngx/src/lib/components/table/extensions/header/o-table-header-components.ts","../../projects/ontimize-web-ngx/src/lib/components/table/o-table.module.ts","../../projects/ontimize-web-ngx/src/lib/components/tree/o-tree-dao.service.ts","../../projects/ontimize-web-ngx/src/lib/components/tree/o-tree.datasource.ts","../../projects/ontimize-web-ngx/src/lib/components/tree/header/tree-menu/o-tree-menu.component.ts","../../projects/ontimize-web-ngx/src/lib/components/tree/header/tree-menu/o-tree-menu.component.html","../../projects/ontimize-web-ngx/src/lib/components/tree/o-tree.component.ts","../../projects/ontimize-web-ngx/src/lib/components/tree/o-tree.component.html","../../projects/ontimize-web-ngx/src/lib/components/tree/tree-node/tree-node.component.ts","../../projects/ontimize-web-ngx/src/lib/components/tree/o-tree.module.ts","../../projects/ontimize-web-ngx/src/lib/components/user-info/o-user-info.component.ts","../../projects/ontimize-web-ngx/src/lib/components/user-info/o-user-info.component.html","../../projects/ontimize-web-ngx/src/lib/components/user-info/user-info-configuration-item/o-user-info-configuration-item.directive.ts","../../projects/ontimize-web-ngx/src/lib/components/user-info/user-info-configuration/o-user-info-configuration.directive.ts","../../projects/ontimize-web-ngx/src/lib/components/user-info/o-user-info.module.ts","../../projects/ontimize-web-ngx/src/lib/components/user-info/o-user-info-base.class.ts","../../projects/ontimize-web-ngx/src/lib/components/app-header/o-app-header-base.class.ts","../../projects/ontimize-web-ngx/src/lib/components/app-header/o-app-header.component.ts","../../projects/ontimize-web-ngx/src/lib/components/app-header/o-app-header.component.html","../../projects/ontimize-web-ngx/src/lib/components/app-header/o-app-header.module.ts","../../projects/ontimize-web-ngx/src/lib/components/app-sidenav/o-app-sidenav-base.class.ts","../../projects/ontimize-web-ngx/src/lib/components/app-sidenav/image/o-app-sidenav-image.component.ts","../../projects/ontimize-web-ngx/src/lib/components/app-sidenav/image/o-app-sidenav-image.component.html","../../projects/ontimize-web-ngx/src/lib/layouts/app-layout/o-app-layout-base.class.ts","../../projects/ontimize-web-ngx/src/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.ts","../../projects/ontimize-web-ngx/src/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.html","../../projects/ontimize-web-ngx/src/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.ts","../../projects/ontimize-web-ngx/src/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.html","../../projects/ontimize-web-ngx/src/lib/services/state/o-app-menu-component-state.class.ts","../../projects/ontimize-web-ngx/src/lib/services/state/o-app-menu-component-state.service.ts","../../projects/ontimize-web-ngx/src/lib/components/app-sidenav/o-app-sidenav.component.ts","../../projects/ontimize-web-ngx/src/lib/components/app-sidenav/o-app-sidenav.component.html","../../projects/ontimize-web-ngx/src/lib/components/app-sidenav/o-app-sidenav.module.ts","../../projects/ontimize-web-ngx/src/lib/layouts/app-layout/app-layout-header/o-app-layout-header.component.ts","../../projects/ontimize-web-ngx/src/lib/layouts/app-layout/app-layout-header/o-app-layout-header.component.html","../../projects/ontimize-web-ngx/src/lib/layouts/app-layout/app-layout-sidenav/o-app-layout-sidenav.component.ts","../../projects/ontimize-web-ngx/src/lib/layouts/app-layout/app-layout-sidenav/o-app-layout-sidenav.component.html","../../projects/ontimize-web-ngx/src/lib/layouts/app-layout/o-app-layout.component.ts","../../projects/ontimize-web-ngx/src/lib/layouts/app-layout/o-app-layout.component.html","../../projects/ontimize-web-ngx/src/lib/layouts/app-layout/o-app-layout.module.ts","../../projects/ontimize-web-ngx/src/lib/layouts/card-menu-layout/o-card-menu-layout.component.ts","../../projects/ontimize-web-ngx/src/lib/layouts/card-menu-layout/o-card-menu-layout.component.html","../../projects/ontimize-web-ngx/src/lib/layouts/card-menu-layout/o-card-menu-layout.module.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/split-pane/options/o-form-layout-split-pane-options.directive.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/tabgroup/options/o-form-layout-tabgroup-options.directive.ts","../../projects/ontimize-web-ngx/src/lib/layouts/form-layout/o-form-layout-manager.module.ts","../../projects/ontimize-web-ngx/src/lib/config/o-providers.ts","../../projects/ontimize-web-ngx/src/lib/shared/components/dialog/o-dialog.config.ts","../../projects/ontimize-web-ngx/src/lib/components/input/date-range/o-daterange-input.component.ts","../../projects/ontimize-web-ngx/src/lib/components/input/date-range/o-daterange-input.component.html","../../projects/ontimize-web-ngx/src/lib/components/input/date-range/o-daterange-input.module.ts","../../projects/ontimize-web-ngx/src/lib/config/o-modules.ts","../../projects/ontimize-web-ngx/src/lib/ontimize-web-ngx.module.ts","../../projects/ontimize-web-ngx/src/lib/MainLauncher.ts"],"sourcesContent":["\nexport class Base64 {\n  private static PADCHAR: string = '=';\n  private static ALPHA: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n  public static decode(s: string): string {\n    let pads = 0,\n      i, b10, imax = s.length,\n      x = [];\n\n    s = String(s);\n\n    if (imax === 0) {\n      return s;\n    }\n\n    if (s.charAt(imax - 1) === this.PADCHAR) {\n      pads = 1;\n      if (s.charAt(imax - 2) === this.PADCHAR) {\n        pads = 2;\n      }\n      imax -= 4;\n    }\n\n    for (i = 0; i < imax; i += 4) {\n      b10 = (this.getByte64(s, i) << 18) | (this.getByte64(s, i + 1) << 12) | (this.getByte64(s, i + 2) << 6) | this.getByte64(s, i + 3);\n      x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255, b10 & 255));\n    }\n\n    switch (pads) {\n      case 1:\n        b10 = (this.getByte64(s, i) << 18) | (this.getByte64(s, i + 1) << 12) | (this.getByte64(s, i + 2) << 6);\n        x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255));\n        break;\n      case 2:\n        b10 = (this.getByte64(s, i) << 18) | (this.getByte64(s, i + 1) << 12);\n        x.push(String.fromCharCode(b10 >> 16));\n        break;\n    }\n\n    return x.join('');\n  }\n\n  public static encode(s: string): string {\n    s = String(s);\n\n    let i, b10, x = [],\n      imax = s.length - s.length % 3;\n\n    if (s.length === 0) {\n      return s;\n    }\n\n    for (i = 0; i < imax; i += 3) {\n      b10 = (this.getByte(s, i) << 16) | (this.getByte(s, i + 1) << 8) | this.getByte(s, i + 2);\n      x.push(this.ALPHA.charAt(b10 >> 18));\n      x.push(this.ALPHA.charAt((b10 >> 12) & 63));\n      x.push(this.ALPHA.charAt((b10 >> 6) & 63));\n      x.push(this.ALPHA.charAt(b10 & 63));\n    }\n\n    switch (s.length - imax) {\n      case 1:\n        b10 = this.getByte(s, i) << 16;\n        x.push(this.ALPHA.charAt(b10 >> 18) + this.ALPHA.charAt((b10 >> 12) & 63) + this.PADCHAR + this.PADCHAR);\n        break;\n      case 2:\n        b10 = (this.getByte(s, i) << 16) | (this.getByte(s, i + 1) << 8);\n        x.push(this.ALPHA.charAt(b10 >> 18) + this.ALPHA.charAt((b10 >> 12) & 63) + this.ALPHA.charAt((b10 >> 6) & 63) + this.PADCHAR);\n        break;\n    }\n\n    return x.join('');\n  }\n\n  private static getByte(s: string, i: number): number {\n    const x = s.charCodeAt(i);\n    return x;\n  }\n\n  private static getByte64(s: string, i: number): number {\n    const idx = this.ALPHA.indexOf(s.charAt(i));\n    return idx;\n  }\n\n}\n","export type OAppLayoutMode = 'mobile' | 'desktop';\nexport type OSidenavMode = 'over' | 'push' | 'side';\nexport type CHANGE_EVENTS = 'onValueChange' | 'onChange';\n\nexport type ORowHeight = 'small' | 'medium' | 'large';\nexport type OTableEditionMode = 'none' | 'click' | 'dblclick' | 'doubleclick';\nexport type OTableDetailMode = 'none' | 'click' | 'dblclick' | 'doubleclick';\nexport class Codes {\n\n  public static PAGINATED_QUERY_METHOD = 'advancedQuery';\n  public static DELETE_METHOD = 'delete';\n  public static INSERT_METHOD = 'insert';\n  public static UPDATE_METHOD = 'update';\n  public static QUERY_METHOD = 'query';\n\n  public static DEFAULT_QUERY_ROWS = 10;\n  public static PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\n\n  public static DETAIL_ICON = 'chevron_right';\n  public static EDIT_ICON = 'mode_edit';\n\n  public static DEFAULT_ROW_HEIGHT = 'medium';\n  public static readonly AVAILABLE_ROW_HEIGHTS_VALUES = ['small', 'medium', 'large'];\n\n  public static DETAIL_MODE_NONE = 'none';\n  public static DETAIL_MODE_CLICK = 'click';\n  public static DETAIL_MODE_DBLCLICK_VALUES = ['dblclick', 'doubleclick'];\n  public static readonly AVAILABLE_DETAIL_MODES = [Codes.DETAIL_MODE_NONE, Codes.DETAIL_MODE_CLICK, ...Codes.DETAIL_MODE_DBLCLICK_VALUES];\n\n  public static EDITION_MODE_NONE = 'none';\n  public static EDITION_MODE_CLICK = 'click';\n  public static EDITION_MODE_DBLCLICK_VALUES = ['dblclick', 'doubleclick'];\n  public static readonly AVAILABLE_MODES = [Codes.EDITION_MODE_NONE, Codes.EDITION_MODE_CLICK, ...Codes.EDITION_MODE_DBLCLICK_VALUES];\n\n  public static SELECTION_MODE_NONE = 'none';\n  public static SELECTION_MODE_SINGLE = 'single';\n  public static SELECTION_MODE_MULTIPLE = 'multiple';\n\n  public static EXPORT_MODE_VISIBLE = 'visible';\n  public static EXPORT_MODE_LOCAL = 'local';\n  public static EXPORT_MODE_ALL = 'all';\n\n  public static HYPHEN_SEPARATOR = '-';\n  public static SPACE_SEPARATOR = ' ';\n  public static COLUMNS_ALIAS_SEPARATOR = ':';\n  public static ARRAY_INPUT_SEPARATOR = ';';\n  public static TYPE_SEPARATOR = ':';\n  public static VALUES_SEPARATOR = '=';\n  public static ASC_SORT = 'asc';\n  public static DESC_SORT = 'desc';\n\n  public static TYPE_INT = 'int';\n\n  public static ROUTE_SEPARATOR = '/';\n  public static ROUTE_VARIABLE_CHAR = ':';\n\n  public static PARENT_KEYS_KEY = 'pk';\n  public static QUERY_PARAMS = 'queryParams';\n  public static IS_DETAIL = 'isdetail';\n\n  public static LANGUAGE_KEY = 'lang';\n  public static SESSION_KEY = 'session';\n  public static SESSION_EXPIRED_KEY = 'session-expired';\n\n  public static LOGIN_ROUTE = '/login';\n  public static FORBIDDEN_ROUTE = '403';\n  public static DEFAULT_EDIT_ROUTE = 'edit';\n  public static DEFAULT_DETAIL_ROUTE = undefined;\n  public static DEFAULT_INSERT_ROUTE = 'new';\n\n  public static IGNORE_CAN_DEACTIVATE = 'ignore_can_deactivate';\n  public static INSERTION_MODE = 'insertionMode';\n\n  public static ONTIMIZE_SUCCESSFUL_CODE = 0;\n  public static ONTIMIZE_FAILED_CODE = 1;\n  public static ONTIMIZE_UNAUTHORIZED_CODE = 3;\n\n  public static ICON_POSITION_LEFT = 'left';\n  public static ICON_POSITION_RIGHT = 'right';\n\n  public static COLUMN_TITLE_ALIGN_START = 'start';\n  public static COLUMN_TITLE_ALIGN_CENTER = 'center';\n  public static COLUMN_TITLE_ALIGN_END = 'end';\n  public static COLUMN_TITLE_ALIGN_AUTO = 'auto';\n  public static AVAILABLE_COLUMN_TITLE_ALIGNS =\n    [Codes.COLUMN_TITLE_ALIGN_START, Codes.COLUMN_TITLE_ALIGN_CENTER, Codes.COLUMN_TITLE_ALIGN_END, Codes.COLUMN_TITLE_ALIGN_AUTO];\n\n  public static O_MAT_ERROR_STANDARD = 'standard';\n  public static O_MAT_ERROR_LITE = 'lite';\n\n  public static O_INPUTS_OPTIONS_COLOR_ACCENT = 'accent';\n  public static HourFormat = {\n    TWELVE: 'hh:mm a',\n    TWENTY_FOUR: 'HH:mm a',\n  };\n\n  // OFormComponent\n  public static CLOSE_DETAIL_ACTION: string = 'CLOSE';\n  public static BACK_ACTION: string = 'BACK';\n  public static RELOAD_ACTION: string = 'RELOAD';\n  public static GO_EDIT_ACTION: string = 'GO_EDIT';\n  public static EDIT_ACTION: string = 'EDIT';\n  public static INSERT_ACTION: string = 'INSERT';\n  public static GO_INSERT_ACTION: string = 'GO_INSERT';\n  public static DELETE_ACTION: string = 'DELETE';\n  public static UNDO_LAST_CHANGE_ACTION: string = 'UNDO_LAST_CHANGE';\n\n  // OTableComponent\n  public static DEFAULT_COLUMN_MIN_WIDTH = 80;\n  public static NAME_COLUMN_SELECT = 'select';\n  public static NAME_COLUMN_EXPANDABLE = 'expandable';\n  public static SUFFIX_COLUMN_INSERTABLE = '_insertable';\n  public static LIMIT_SCROLLVIRTUAL = 50;\n\n  public static TWENTY_FOUR_HOUR_FORMAT = 24;\n  public static TWELVE_FOUR_HOUR_FORMAT = 12;\n\n  public static OAppLayoutModes: OAppLayoutMode[] = ['mobile', 'desktop'];\n  public static OSidenavModes: OSidenavMode[] = ['over', 'push', 'side'];\n\n  public static OAppLayoutMode = ['mobile', 'desktop'];\n  public static OSidenavMode = ['over', 'push', 'side'];\n\n  public static APP_LAYOUT_MODE_DESKTOP: OAppLayoutMode = 'desktop';\n  public static APP_LAYOUT_MODE_MOBILE: OAppLayoutMode = 'mobile';\n  public static VISIBLE_EXPORT_BUTTONS: string[] = ['xlsx', 'pdf', 'html'];\n  public static VISIBLE_EXPORT_BUTTONS3X: string[] = ['xlsx', 'pdf', 'csv'];\n\n  public static DEFAULT_CHANGE_EVENT: CHANGE_EVENTS = 'onValueChange';\n  public static TYPES_DATE_GROUPS = [\"YEAR\", \"MONTH\", \"YEAR_MONTH\", \"YEAR_MONTH_DAY\"];\n\n\n  static isDoubleClickMode(value: string): boolean {\n    return Codes.DETAIL_MODE_DBLCLICK_VALUES.indexOf(value) !== -1;\n  }\n\n  static isValidRowHeight(value: string): boolean {\n    return Codes.AVAILABLE_ROW_HEIGHTS_VALUES.indexOf(value) !== -1;\n  }\n\n  static getIsDetailObject(): any {\n    const res = {};\n    res[Codes.IS_DETAIL] = 'true';\n    return res;\n  }\n\n  static formatString(format: number) {\n    return (format === Codes.TWENTY_FOUR_HOUR_FORMAT ? Codes.HourFormat.TWENTY_FOUR : Codes.HourFormat.TWELVE);\n  }\n\n  static isHourInputAllowed(e: KeyboardEvent): boolean {\n    // Allow: backspace, delete, tab, escape, enter\n    if ([46, 8, 9, 27, 13].some(n => n === e.keyCode) ||\n      (e.key === ':') ||\n      // Allow: Ctrl/cmd+A\n      (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) ||\n      // Allow: Ctrl/cmd+C\n      (e.keyCode === 67 && (e.ctrlKey === true || e.metaKey === true)) ||\n      // Allow: Ctrl/cmd+X\n      (e.keyCode === 88 && (e.ctrlKey === true || e.metaKey === true)) ||\n      // Allow: home, end, left, right, up, down\n      (e.keyCode >= 35 && e.keyCode <= 40)) {\n      return true;\n    }\n    return !((e.keyCode < 48 || e.keyCode > 57) && (e.keyCode < 96 || e.keyCode > 105));\n  }\n  static isValidEditionMode(editionMode: OTableEditionMode) {\n    return Codes.AVAILABLE_MODES.indexOf(editionMode) !== -1;\n  }\n  static isValidDetailMode(detailMode: OTableDetailMode): any {\n    return Codes.AVAILABLE_DETAIL_MODES.indexOf(detailMode) !== -1;\n  }\n\n}\n","import { Injector } from '@angular/core';\nimport moment from 'moment';\nimport { from, isObservable, Observable, of } from 'rxjs';\n\nimport { IDataService } from '../interfaces/data-service.interface';\nimport { IFormDataComponent } from '../interfaces/form-data-component.interface';\nimport { IPermissionsService } from '../interfaces/permissions-service.interface';\nimport { ODateValueType } from '../types/o-date-value.type';\nimport { OConfigureServiceArgs } from '../types/configure-service-args.type';\nimport { Base64 } from './base64';\nimport { Codes } from './codes';\nimport { OConfigureMessageServiceArgs } from '../types/configure-message-service-args.type';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\nexport class Util {\n\n  static readonly columnAggregates = ['sum', 'count', 'avg', 'min', 'max'];\n\n  static isObject(val: any): boolean {\n    const valType = typeof val;\n    return valType === 'object';\n  }\n\n  static isArray(val: any): boolean {\n    return val instanceof Array;\n  }\n\n  static parseBoolean(value: string, defaultValue?: boolean): boolean {\n    if ((typeof value === 'string') && (value.toUpperCase() === 'TRUE' || value.toUpperCase() === 'YES')) {\n      return true;\n    } else if ((typeof value === 'string') && (value.toUpperCase() === 'FALSE' || value.toUpperCase() === 'NO')) {\n      return false;\n    } else if (Util.isDefined(defaultValue)) {\n      return defaultValue;\n    }\n    return false;\n  }\n\n  static parseArray(value: string, excludeRepeated: boolean = false): string[] {\n    let result = [];\n    if (value) {\n      result = value.split(Codes.ARRAY_INPUT_SEPARATOR);\n    }\n    if (excludeRepeated && result.length > 0) {\n      result = Array.from(new Set(result));\n    }\n    return result;\n  }\n\n  /**\n   * Returns an object with parent keys equivalences.\n   * @param  pKeysArray Array of strings. Accepted format: key | key:alias\n   * @returns Object\n   */\n  static parseParentKeysEquivalences(pKeysArray: Array<string>, separator: string = ':'): object {\n    const equivalences = {};\n    if (pKeysArray && pKeysArray.length > 0) {\n      pKeysArray.forEach(item => {\n        const aux = item.split(separator);\n        if (aux && aux.length === 2) {\n          if (/.+\\[.+\\]/.test(aux[1])) {\n            const equivKey = aux[1].substring(0, aux[1].indexOf('['));\n            const equivValue = aux[1].substring(aux[1].indexOf('[') + 1, aux[1].indexOf(']'));\n            const equiv = {};\n            equiv[equivKey] = equivValue;\n            equivalences[aux[0]] = equiv;\n          } else {\n            equivalences[aux[0]] = aux[1];\n          }\n        } else if (aux && aux.length === 1) {\n          equivalences[item] = item;\n        }\n      });\n    }\n    return equivalences;\n  }\n\n  static encodeParentKeys(parentKeys: object): string {\n    let encoded: string = '';\n    if (parentKeys) {\n      encoded = Base64.encode(JSON.stringify(parentKeys));\n    }\n    return encoded;\n  }\n\n  static decodeParentKeys(parentKeys: string): object {\n    let decoded = {};\n    if (parentKeys && parentKeys.length > 0) {\n      const d = Base64.decode(parentKeys);\n      decoded = JSON.parse(d);\n    }\n    return decoded;\n  }\n\n  static isArrayEmpty(array: any[]): boolean {\n    if (array && array.length === 0) {\n      return true;\n    }\n    return false;\n  }\n\n  static isObjectEmpty(obj: object): boolean {\n    return typeof obj === 'object' && Object.keys(obj).length === 0;\n  }\n\n  /**\n   * Checks wether specified service as argument implements 'IDataService' interface\n   * @param arg The service instance for checking.\n   * @returns boolean\n   */\n  static isDataService(arg: any): arg is IDataService {\n    if (arg === undefined || arg === null) {\n      return false;\n    }\n    return ((arg as IDataService).getDefaultServiceConfiguration !== undefined &&\n      (arg as IDataService).configureService !== undefined);\n  }\n\n  /**\n   * Checks wether specified service as argument implements 'IDataService' interface\n   * @param arg The service instance for checking.\n   * @returns boolean\n   */\n  static isPermissionsService(arg: any): arg is IPermissionsService {\n    if (arg === undefined || arg === null) {\n      return false;\n    }\n    return ((arg as IPermissionsService).loadPermissions !== undefined);\n  }\n\n  /**\n   * Checks wether specified component as argument implements 'IFormDataComponent' interface\n   * @param arg The component instance for checking.\n   * @returns boolean\n   */\n  static isFormDataComponent(arg: any): arg is IFormDataComponent {\n    if (arg === undefined || arg === null) {\n      return false;\n    }\n    return ((arg as IFormDataComponent).isAutomaticBinding !== undefined);\n  }\n\n  /**\n   * Compare is equal two objects\n   * @param a Object 1\n   * @param b Object 2\n   *\n   */\n  static isEquivalent(a, b) {\n    // Create arrays of property names\n    const aProps = Object.getOwnPropertyNames(a);\n    const bProps = Object.getOwnPropertyNames(b);\n\n    // If number of properties is different, objects are not equivalent\n    if (aProps.length !== bProps.length) {\n      return false;\n    }\n\n    for (let i = 0; i < aProps.length; i++) {\n      const propName = aProps[i];\n      // If values of same property are not equal, objects are not equivalent\n      let bValue = b[propName];\n      if (typeof a[propName] === 'number') {\n        const intB = parseInt(bValue, 10);\n        bValue = isNaN(intB) ? bValue : intB;\n      }\n      if (a[propName] !== bValue) {\n        return false;\n      }\n    }\n\n    // If we made it this far, objects are considered equivalent\n    return true;\n  }\n\n  static equals(o1: any, o2: any): boolean {\n    if (o1 === o2) {\n      return true;\n    }\n    if (o1 === null || o2 === null) {\n      return false;\n    }\n    if (o1 !== o1 && o2 !== o2) {\n      // NaN === NaN\n      return true;\n    }\n    const t1 = typeof o1;\n    const t2 = typeof o2;\n    let length: number;\n    let key: any;\n    let keySet: any;\n    if (t1 === t2 && t1 === 'object') {\n      if (Array.isArray(o1)) {\n        if (!Array.isArray(o2)) {\n          return false;\n        }\n        length = o1.length;\n        if (length === o2.length) {\n          for (key = 0; key < length; key++) {\n            if (!Util.equals(o1[key], o2[key])) {\n              return false;\n            }\n          }\n          return true;\n        }\n      } else {\n        if (Array.isArray(o2)) {\n          return false;\n        }\n        keySet = Object.create(null);\n        for (key in o1) {\n          if (!Util.equals(o1[key], o2[key])) {\n            return false;\n          }\n          keySet[key] = true;\n        }\n        for (key in o2) {\n          if (!(key in keySet) && typeof o2[key] !== 'undefined') {\n            return false;\n          }\n        }\n        return true;\n      }\n    }\n    return false;\n  }\n\n  static isDefined(value: any): boolean {\n    return typeof value !== 'undefined' && value !== null;\n  }\n\n  /**\n   * Returns the a random number\n  */\n  static randomNumber() {\n    const randomArray = new Uint32Array(1);\n    window.crypto.getRandomValues(randomArray);\n    return randomArray[0];\n  }\n\n\n  /**\n   * Returns the provided string in lowercase and without accent marks.\n   * @param value the text to normalize\n   */\n  static normalizeString(value: string, toLowerCase: boolean = true): string {\n    if (typeof value === 'string') {\n      if (value && value.length) {\n        let result = value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n        if (toLowerCase) {\n          result = result.toLowerCase();\n        }\n        return result;\n      }\n      return '';\n    }\n    return value;\n  }\n\n  /**\n   * Returns the provided array flattend.\n   * @param array the array to flat\n   */\n  static flatten(array: Array<any>): Array<any> {\n    let flattened = [];\n    for (const current of array) {\n      if (!Array.isArray(current)) {\n        flattened.push(current);\n        continue;\n      }\n      for (const childCurrent of current) {\n        flattened.push(childCurrent)\n      }\n    }\n    return flattened\n  }\n\n  /**\n   * Returns a list with all the values from the provided object.\n   * @param obj the object\n   */\n  static getValuesFromObject(obj: object = {}): Array<any> {\n    const array: Array<any> = [];\n    Object.keys(obj).forEach(key => {\n      if (typeof obj[key] === 'object') {\n        array.push(Util.getValuesFromObject(obj[key]));\n      }\n      array.push(obj[key]);\n    });\n    return Util.flatten(array);\n  }\n\n  static parseIconPosition(value: string, defaultValue?: string): string {\n    let result = defaultValue || Codes.ICON_POSITION_LEFT;\n    const availablePositions = [Codes.ICON_POSITION_LEFT, Codes.ICON_POSITION_RIGHT];\n    if (value && value.length) {\n      result = value.toLowerCase();\n    }\n    if (availablePositions.indexOf(result) === -1) {\n      result = defaultValue || Codes.ICON_POSITION_LEFT;\n    }\n    return result;\n  }\n\n  static copyToClipboard(data: string) {\n    document.addEventListener('copy', (e: ClipboardEvent) => {\n      e.clipboardData.setData('text/plain', data);\n      e.preventDefault();\n      document.removeEventListener('copy', null);\n    });\n    document.execCommand('copy');\n  }\n\n  static checkPixelsValueString(value: string): boolean {\n    return typeof value === 'string' ? value.toLowerCase().endsWith('px') : false;\n  }\n\n  static extractPixelsValue(value: any, defaultValue?: number): number {\n    let result: number = typeof value === 'number' ? value : undefined;\n    if (Util.checkPixelsValueString(value)) {\n      const parsed = parseFloat(value.substr(0, value.length - 'px'.length));\n      result = isNaN(parsed) ? defaultValue : parsed;\n    }\n    return Util.isDefined(result) ? result : defaultValue;\n  }\n  /**\n   * Added class 'accent' in <mat-form-field> and set the color  accent in the icons\n   * @param elRef\n   * @param oInputsOptions\n   */\n\n  static parseOInputsOptions(elRef, oInputsOptions) {\n\n    if (oInputsOptions.iconColor === Codes.O_INPUTS_OPTIONS_COLOR_ACCENT) {\n      const matFormFieldEL = elRef.nativeElement.getElementsByTagName('mat-form-field')[0];\n      if (Util.isDefined(matFormFieldEL)) {\n        matFormFieldEL.classList.add('accent');\n      }\n    }\n  }\n\n\n  /**\n   *  Return string with escaped special character\n   */\n  static escapeSpecialCharacter(S: string): string {\n\n    const str = String(S);\n\n    const cpList = Array.from(str[Symbol.iterator]());\n\n    const cuList = [];\n    for (const c of cpList) {\n      // i. If c is a SpecialCharacter then do:\n      if ('^$\\\\.*+?()[]{}|'.indexOf(c) !== -1) {\n        // a. Append \"\\\" to cuList.\n        cuList.push('\\\\');\n      }\n      // Append c to cpList.\n      cuList.push(c);\n    }\n    const L = cuList.join('');\n    return L;\n\n  }\n\n  static isArrayEqual(array1: Array<any>, array2: Array<any>) {\n    return array1.length === array2.length && array1.every((v, i) => v === array2[i])\n  };\n\n  static differenceArrays(array1: Array<any>, array2: Array<any>): Array<any> {\n    const difference = array1.filter(obj => {\n      return !array2.some(obj2 => {\n        return this.equals(obj, obj2);\n      });\n    });\n    return difference;\n  }\n\n  static convertToODateValueType(val: any): ODateValueType {\n    let result: ODateValueType = 'timestamp';\n    const lowerVal = (val || '').toLowerCase();\n    if (lowerVal === 'string' || lowerVal === 'date' || lowerVal === 'timestamp' || lowerVal === 'iso-8601') {\n      result = lowerVal;\n    }\n    return result;\n  }\n\n\n  static uniqueBy(a: Array<any>, key) {\n    const seen = {};\n    return a.filter((item) => {\n      const k = key(item);\n      return seen.hasOwnProperty(k) ? false : (seen[k] = true);\n    });\n  }\n\n  /**\n   * Compares two strings and returns a negative value if first argument is less than second argument, zero if they're equal and a positive value otherwise.\n   */\n  static compare(a: string, b: string): number {\n    if (a < b) {\n      return -1;\n    }\n    if (a > b) {\n      return 1;\n    }\n    return 0;\n  }\n\n  static parseByValueType(value: any, valueType: ODateValueType, format: string) {\n    if (!Util.isDefined(value)) {\n      return void 0;\n    }\n\n    let result = value;\n    const m = moment(value);\n    if (!m.isValid()) {\n      return void 0;\n    }\n    switch (valueType) {\n      case 'string':\n        result = m.format(format);\n        break;\n      case 'date':\n        result = m.toDate();\n        break;\n      case 'iso-8601':\n        result = m.toISOString();\n        break;\n      case 'timestamp':\n        result = m.valueOf();\n        break;\n      default:\n        result = void 0;\n        break;\n    }\n    return result;\n  }\n\n  static wrapIntoObservable<T>(value: T | Promise<T> | Observable<T>): Observable<T> {\n    if (isObservable(value)) {\n      return value;\n    }\n\n    if (Util.isPromise(value)) {\n      // Use `Promise.resolve()` to wrap promise-like instances.\n      return from(Promise.resolve(value));\n    }\n\n    return of(value);\n  }\n\n  static isPromise<T = any>(obj: any): obj is Promise<T> {\n    return !!obj && typeof obj.then === 'function';\n  }\n\n\n  static configureService(configureServiceArgs: OConfigureServiceArgs): any {\n    let dataService = configureServiceArgs.baseService;\n    const entity = configureServiceArgs.entity;\n    const service = configureServiceArgs.service;\n    const serviceType = configureServiceArgs.serviceType;\n    const injector = configureServiceArgs.injector;\n\n    if (serviceType) {\n      dataService = serviceType;\n    }\n    try {\n      dataService = injector.get<any>(dataService);\n      if (serviceType) {\n        dataService = Util.createServiceInstance(dataService, injector)\n      }\n      if (Util.isDataService(dataService)) {\n        const serviceCfg = dataService.getDefaultServiceConfiguration(service);\n        if (entity) {\n          serviceCfg.entity = entity;\n        }\n        dataService.configureService(serviceCfg);\n      }\n    } catch (e) {\n      console.error(e);\n    }\n    return dataService;\n  }\n\n  /**\n * Returns an instance of the provided service class\n * @param clazz the class reference\n * @param injector the injector\n */\n  static createServiceInstance(clazz: any, injector: Injector) {\n    if (!Util.isDefined(clazz)) {\n      return;\n    }\n\n    const newInstance = new clazz(injector);\n    return newInstance;\n  }\n\n  static configureMessageService(configureServiceArgs: OConfigureMessageServiceArgs): any {\n    let messageService = configureServiceArgs.baseService;\n    const serviceType = configureServiceArgs.serviceType;\n    const injector = configureServiceArgs.injector;\n\n    if (serviceType) {\n      messageService = serviceType;\n    }\n    try {\n      messageService = injector.get<any>(messageService);\n      if (serviceType) {\n        messageService = Util.createServiceInstance(messageService, injector)\n      }\n    } catch (e) {\n      console.error(e);\n    }\n    return messageService;\n  }\n\n  static isBase64(file: string) {\n    const pattern = new RegExp(/^([A-Za-z0-9+\\/]{4})*([A-Za-z0-9+\\/]{4}|[A-Za-z0-9+\\/]{3}=|[A-Za-z0-9+\\/]{2}==)$/g)\n\n    if (file.substring(0, 4) === 'data') {\n      file = file.substring(file.indexOf('base64') + 7);\n    }\n    return pattern.test(file.replace(/\\s+/g, ''));\n\n  }\n  /**\n * Converts an object to a JSON string, avoiding circular references.\n * @param obj The object to convert to JSON.\n * @returns A JSON string representing the object.\n */\n  static stringify(obj: object) {\n    let cache = [];\n    let str = JSON.stringify(obj, function (key, value) {\n      if (typeof value === \"object\" && value !== null) {\n        if (cache.indexOf(value) !== -1) {\n          return; // Avoid circular references\n        }\n        cache.push(value);\n      }\n      return value;\n    });\n    cache = null;\n    return str;\n  }\n\n  static sortFunction(propertyA: string | number, propertyB: string | number, activeSortDirection: string) {\n\n    let valueA: string | number = '';\n    let valueB: string | number = '';\n\n    if (Util.isDefined(propertyA)) {\n      valueA = isNaN(+propertyA) ? propertyA.toString().trim().toLowerCase() : +propertyA;\n    }\n\n    if (Util.isDefined(propertyB)) {\n      valueB = isNaN(+propertyB) ? propertyB.toString().trim().toLowerCase() : +propertyB;\n    }\n    return (valueA <= valueB ? -1 : 1) * (activeSortDirection === 'asc' ? 1 : -1);\n  }\n\n  static cloneArray<T>(arr: T[]): T[] {\n    const clonedArray = arr.map((x) => Object.assign({}, x))\n    return clonedArray;\n  }\n\n  static getLastActivateRoute(routeSnapshot: ActivatedRouteSnapshot): ActivatedRouteSnapshot {\n    let child = routeSnapshot;\n    while (child.firstChild) {\n      child = child.firstChild;\n    }\n    return child;\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { Config } from '../types/config.type';\nimport { MenuRootItem } from '../types/menu-root-item.type';\nimport { OInputsOptions } from '../types/o-inputs-options.type';\nimport { ORemoteConfiguration } from '../types/remote-configuration.type';\nimport { Util } from '../util/util';\n\nconst DEFAULT_LOCAL_STORAGE_KEY = undefined;\nconst DEFAULT_CONFIG: Config = {\n  uuid: DEFAULT_LOCAL_STORAGE_KEY,\n  title: 'Ontimize Web App'\n};\n\nexport const O_INPUTS_OPTIONS = new InjectionToken<OInputsOptions>('o-inputs-options');\n\nexport const APP_CONFIG = new InjectionToken<Config>('app.config');\n\nexport class AppConfig {\n  private _config: Config;\n\n  constructor(config?) {\n    this._config = (config && Util.isObject(config) && !Array.isArray(config)) ? config : {};\n  }\n\n  public getConfiguration(): Config {\n    return Object.assign(DEFAULT_CONFIG, this._config);\n  }\n\n  public getServiceConfiguration(): any {\n    return this._config.servicesConfiguration || {};\n  }\n\n  public getMenuConfiguration(): MenuRootItem[] {\n    return this._config.appMenuConfiguration || [];\n  }\n\n  public useRemoteBundle(): boolean {\n    return Util.isDefined(this._config.bundle);\n  }\n\n  public getBundleEndpoint(): string {\n    let result: string;\n    const existsBundleConf = this.useRemoteBundle();\n    if (existsBundleConf && Util.isDefined(this._config.bundle.endpoint)) {\n      result = this._config.bundle.endpoint;\n    } else if (existsBundleConf && Util.isDefined(this._config.bundle.path)) {\n      result = this._config.apiEndpoint + '/' + this._config.bundle.path;\n    }\n    return result;\n  }\n\n  public getI18nAssetsConfiguration(): any {\n    if (Util.isDefined(this._config.assets) && Util.isDefined(this._config.assets.i18n)) {\n      return this._config.assets.i18n;\n    }\n    return undefined;\n  }\n\n  public getCssAssetsConfiguration(): any {\n    if (Util.isDefined(this._config.assets) && Util.isDefined(this._config.assets.css)) {\n      return this._config.assets.css;\n    }\n    return undefined;\n  }\n\n  public getImagesAssetsConfiguration(): any {\n    if (Util.isDefined(this._config.assets) && Util.isDefined(this._config.assets.images)) {\n      return this._config.assets.images;\n    }\n    return undefined;\n  }\n\n  public getJsAssetsConfiguration(): any {\n    if (Util.isDefined(this._config.assets) && Util.isDefined(this._config.assets.js)) {\n      return this._config.assets.js;\n    }\n    return undefined;\n  }\n\n  public getRemoteConfigurationConfig(): ORemoteConfiguration {\n    return this._config.remoteConfig;\n  }\n\n  public useRemoteConfiguration(): boolean {\n    return Util.isDefined(this._config.remoteConfig);\n  }\n\n  public getRemoteConfigurationEndpoint(): string {\n    let result: string;\n    const existsRemoteConf = this.useRemoteConfiguration();\n    if (existsRemoteConf && Util.isDefined(this._config.remoteConfig.endpoint)) {\n      result = this._config.remoteConfig.endpoint;\n    } else if (existsRemoteConf && Util.isDefined(this._config.remoteConfig.path)) {\n      result = this._config.apiEndpoint + '/' + this._config.remoteConfig.path;\n    }\n    return result;\n  }\n\n  public useExportConfiguration(): boolean {\n    return Util.isDefined(this._config.exportConfiguration);\n  }\n\n  public getExportPath() {\n    let result: string;\n    const existsRemoteConf = this.useExportConfiguration();\n    if (existsRemoteConf && Util.isDefined(this._config.exportConfiguration.path)) {\n      result = this._config.exportConfiguration.path;\n    } else {\n      result = this._config.apiEndpoint + '/export';\n    }\n    return result;\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'isEmptyValue',\n  pure: true  // Se ejecuta solo cuando cambia el valor\n})\nexport class IsEmptyValuePipe implements PipeTransform {\n\n  transform(value: any): unknown {\n    return value === null || value === undefined || value === '';\n  }\n\n}\n","\nexport abstract class ListItem{\n  public abstract getItemData(): any;\n  public abstract setItemData(data: any): void;\n }\n","import {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Host,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Renderer2,\n  Self\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { IList } from '../../../interfaces/o-list.interface';\nimport { Codes } from '../../../util/codes';\nimport { Util } from '../../../util/util';\nimport { ListItem } from './o-list-item';\n\n@Directive({\n  selector: 'o-list-item, mat-list-item[o-list-item], mat-card[o-list-item]',\n  exportAs: 'olistitem',\n  host: {\n    '[class.o-list-item]': 'true',\n    '(click)': 'onItemClicked($event)',\n    '(dblclick)': 'onItemDoubleClicked($event)'\n  }\n})\nexport class OListItemDirective implements OnInit, OnDestroy {\n\n  public onClick: EventEmitter<any> = new EventEmitter();\n  public onDoubleClick: EventEmitter<any> = new EventEmitter();\n\n  @Input('o-list-item')\n  public modelData: any;\n\n  @Input()\n  public selectable: boolean = false;\n\n  protected _list: IList;\n  protected subscription: Subscription = new Subscription();\n\n  constructor(\n    @Host() @Self() @Optional() public listItem: ListItem,\n    public _el: ElementRef,\n    private renderer: Renderer2,\n    public actRoute: ActivatedRoute\n  ) { }\n\n  public ngOnInit(): void {\n    this.subscription.add(this.actRoute.params.subscribe(params => this.updateActiveState(params)));\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  @HostListener('mouseenter')\n  public onMouseEnter(): void {\n    if (!this.selectable && this._list && this._list.detailMode !== Codes.DETAIL_MODE_NONE) {\n      this.renderer.setStyle(this._el.nativeElement, 'cursor', 'pointer');\n    }\n  }\n\n  public updateActiveState(params): void {\n    if (this._list) {\n      const aKeys = this._list.getKeys();\n      if (this.modelData) {\n        let _act = false;\n        if (aKeys.length > 0) {\n          for (let k = 0; k < aKeys.length; ++k) {\n            const key = aKeys[k];\n            const id = params[key];\n            _act = (this.modelData[key] === id);\n            if (_act === false) {\n              break;\n            }\n          }\n        }\n        if (_act) {\n          this._el.nativeElement.classList.add('mat-active');\n        } else {\n          this._el.nativeElement.classList.remove('mat-active');\n        }\n      } else {\n        this._el.nativeElement.classList.remove('mat-active');\n      }\n    }\n  }\n\n  public onItemClicked(e?: Event): void {\n    if (!this.selectable && this._list) {\n      this._list.onItemDetailClick(this);\n      this.onClick.emit(this.getItemData())\n    }\n  }\n\n  public onItemDoubleClicked(e?: Event): void {\n    if (!this.selectable && this._list) {\n      this._list.onItemDetailDoubleClick(this);\n      this.onDoubleClick.emit(this.getItemData())\n    }\n  }\n\n  public isSelected(): boolean {\n    return this._list && this._list.isItemSelected(this.modelData);\n  }\n\n  public setListComponent(list: IList): void {\n    this._list = list;\n  }\n\n  public setItemData(data: any): void {\n    if (!Util.isDefined(this.modelData) || this.modelData !== 'object') {\n      this.modelData = data;\n    }\n    if (Util.isDefined(this.listItem)) {\n      this.listItem.setItemData(this.modelData);\n    }\n  }\n\n  public getItemData(): any {\n    return this.modelData;\n  }\n\n}\n","import { Directive, ElementRef, forwardRef, HostListener, Input, OnInit, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Util } from '../util/util';\n\n@Directive({\n  selector: '[oInputRegulate]',\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => InputRegulateDirective),\n    multi: true\n  }]\n})\nexport class InputRegulateDirective implements ControlValueAccessor, OnInit {\n  private onChange: (val: string) => void;\n  private onTouched: () => void;\n  private value: string;\n\n  @Input()\n  oInputRegulatePattern: string;\n  regExpattern: RegExp;\n\n  constructor(\n    private readonly elementRef: ElementRef,\n    private readonly renderer: Renderer2\n  ) {\n\n  }\n  ngOnInit(): void {\n    if (Util.isDefined(this.oInputRegulatePattern)) {\n      this.regExpattern = new RegExp(this.oInputRegulatePattern);\n    }\n  }\n\n  @HostListener('input', ['$event.target.value'])\n  onInputChange(value: string) {\n    if (Util.isDefined(this.regExpattern)) {\n      const filterValue = this.regExpattern.test(value) ? value : this.value;\n      this.updateTextInput(filterValue, filterValue !== this.value);\n    }\n  }\n\n  @HostListener('blur')\n  onBlur() {\n    this.onTouched();\n  }\n\n  private updateTextInput(value: string, propagateChange: boolean) {\n    this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n    if (propagateChange) {\n      this.onChange(value);\n    }\n    this.value = value;\n  }\n\n  // ControlValueAccessor Interface\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\n  }\n\n  writeValue(value: any): void {\n    value = value ? String(value) : '';\n    this.updateTextInput(value, false);\n  }\n\n}\n\n","import { Directive, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\n\nimport { Util } from '../util/util';\n\n@Directive({\n  selector: '[oKeyboardListener]'\n})\nexport class OKeyboardListenerDirective implements OnInit {\n\n  @Input() keyboardKeys: string;\n  @Output() onKeysPressed: EventEmitter<object> = new EventEmitter<object>();\n\n  protected keyboardNumberKeysArray: Array<number> = [];\n  protected activeKeys: object = {};\n\n  @HostListener('keydown', ['$event'])\n  keyDown(e: KeyboardEvent) {\n    const pressedCode = e.keyCode;\n    if (this.keyboardNumberKeysArray.indexOf(pressedCode) !== -1) {\n      this.activeKeys[pressedCode] = true;\n      this.checkNeededKeys(e);\n    }\n  }\n\n  @HostListener('keyup', ['$event'])\n  keyUp(e: KeyboardEvent) {\n    const pressedCode = e.keyCode;\n    if (this.keyboardNumberKeysArray.indexOf(pressedCode) !== -1) {\n      this.activeKeys[pressedCode] = false;\n    }\n  }\n\n  ngOnInit(): void {\n    this.parseKeyboardKeys();\n  }\n\n  parseKeyboardKeys() {\n    const keysAsStringArray = Util.parseArray(this.keyboardKeys);\n    keysAsStringArray.forEach(key => {\n      try {\n        this.keyboardNumberKeysArray.push(parseInt(key, 10));\n      } catch (e) {\n        console.error(e);\n      }\n    });\n  }\n\n  checkNeededKeys(e: KeyboardEvent) {\n    let trigger = true;\n    this.keyboardNumberKeysArray.forEach(key => {\n      trigger = trigger && this.activeKeys[key];\n    });\n    if (trigger) {\n      e.preventDefault();\n      e.stopPropagation();\n      // this.activeKeys = {};\n      this.onKeysPressed.emit();\n    }\n  }\n\n}\n","import { coerceNumberProperty } from \"@angular/cdk/coercion\";\n\nexport function StringConverter(value: any) {\n  if (value == null || typeof value === 'string') {\n    return value;\n  }\n  return value.toString();\n}\n\nexport function BooleanConverter(value: any) {\n  if (value == null || typeof value === 'boolean') {\n    return value;\n  }\n  return value.toString() === 'true' || value.toString() === 'yes';\n}\n\nexport function NumberConverter(value: any) {\n  return coerceNumberProperty(value);\n}\n\nexport function BooleanInputConverter() {\n  return function decorator(target: unknown, propertyKey: PropertyKey): any {\n    const privateFieldName = `_${String(propertyKey)}`\n    Object.defineProperty(target, privateFieldName, {\n      configurable: true,\n      writable: true,\n    })\n    return {\n      get() {\n        return this[privateFieldName]\n      },\n      set(value: unknown) {\n        this[privateFieldName] = BooleanConverter(value);\n      },\n    }\n  }\n}\nexport function NumberInputConverter() {\n  return function decorator(target: unknown, propertyKey: PropertyKey): any {\n    const privateFieldName = `_${String(propertyKey)}`\n    Object.defineProperty(target, privateFieldName, {\n      configurable: true,\n      writable: true,\n    })\n    return {\n      get() {\n        return this[privateFieldName]\n      },\n      set(value: unknown) {\n        this[privateFieldName] = NumberConverter(value);\n      },\n    }\n  }\n}","\n/* eslint-disable quote-props */\nexport const MAP = {\n  // English\n  en: {\n    'LANGUAGE': 'Language',\n    'LOCALE_en': 'EN',\n    'LOCALE_es': 'ES',\n    'LOCALE_pt': 'PT',\n    'USERNAME': 'Username',\n    'PASSWORD': 'Password',\n    'LOGIN': 'Login',\n    'LOGOUT': 'Logout',\n    'OK': 'Ok',\n    'ACCEPT': 'Accept',\n    'CANCEL': 'Cancel',\n    'CLOSE': 'Close',\n    'YES': 'Yes',\n    'NO': 'No',\n    'RESET': 'Reset',\n    'CONFIRM': 'Confirm',\n    'NEXT': 'Next',\n    'PREVIOUS': 'Previous',\n    'FINISH': 'Finish',\n    'SAVE': 'Save',\n    'INSERT': 'Ok',\n    'REFRESH': 'Refresh',\n    'SEARCH': 'Search',\n    'FILTER': 'Filter',\n    'DELETE': 'Delete',\n    'ADD': 'New',\n    'SELECT': 'Select',\n    'SELECT_ALL': 'Select all',\n    'INFO': 'Information',\n    'ERROR': 'Error',\n    'FOUND': 'Found',\n    'RESULTS': 'Results',\n    'TOTAL': 'Total',\n    'MONEY': 'Money',\n    'HOME': 'Home',\n    'SHOW_CONSOLE': 'Show console',\n    'FILE': 'File',\n    'OPTIONS': 'Options',\n    'EDIT': 'Edit',\n    'UNDO': 'Undo',\n    'REDO': 'Redo',\n    'COPY': 'Copy',\n    'PASTE': 'Paste',\n    'LOCK': 'Lock',\n    'EXIT': 'Exit',\n    'SETTINGS': 'Settings',\n    'FORM': 'Form',\n    'LIST': 'List',\n    'LIST.EMPTY': 'No results found',\n    'LIST.EMPTY_USING_FILTER': ' using filter \"{0}\"',\n\n    'TABLE': 'Table',\n    'DETAIL': 'Detail',\n    'PAGE': 'Page',\n    'FIRST_PAGE': 'First',\n    'LAST_PAGE': 'Last',\n    'PREVIOUS_PAGE': 'Previous',\n    'NEXT_PAGE': 'Next',\n    'PHOTO': 'Picture',\n    'CHOOSE_FILE': 'Choose file',\n\n    'FORM_VALIDATION.REQUIRED': 'Required',\n    'FORM_VALIDATION.LENGTH': 'Invalid length',\n    'FORM_VALIDATION.MIN_LENGTH': 'Minimum length',\n    'FORM_VALIDATION.MAX_LENGTH': 'Maximum length',\n    'FORM_VALIDATION.MIN_DECIMAL_DIGITS': 'Minimum number of decimal digits',\n    'FORM_VALIDATION.MAX_DECIMAL_DIGITS': 'Maximum number of decimal digits',\n    'FORM_VALIDATION.EMAIL_FORMAT': 'Invalid email',\n    'FORM_VALIDATION.NIF_FORMAT': 'Invalid format (DNI: 12345678-A, NIE: X-1234567-A)',\n    'FORM_VALIDATION.DNI_LETTER': 'Invalid DNI letter',\n    'FORM_VALIDATION.DATE_RANGE': 'Date outside valid range',\n    'FORM_VALIDATION.MIN_VALUE': 'Minimum value',\n    'FORM_VALIDATION.MAX_VALUE': 'Maximum value',\n\n    'FORM_VALIDATION.DATE_PARSE': 'Date not valid format',\n    'FORM_VALIDATION.DATE_FILTER': 'Date is not valid for the defined filter',\n    'FORM_VALIDATION.DATE_MIN': 'Date min',\n    'FORM_VALIDATION.DATE_MAX': 'Date max',\n    'FORM_VALIDATION.DATERANGE_MIN': 'Date min is not in the range',\n    'FORM_VALIDATION.DATERANGE_MAX': 'Date max is not in the range',\n    'FORM_VALIDATION.DATERANGE_INVALID': 'Date range invalid',\n    'FORM_VALIDATION.FILE_TYPE': 'Invalid format',\n    'FORM_VALIDATION.FILE_MAXSIZE': 'Maximum file size',\n    'FORM_VALIDATION.FILE_MAXNUM': 'Max. files',\n    'FORM_VALIDATION.HOUR_FORMAT': 'Format not valid format',\n    'FORM_VALIDATION.PHONE_FORMAT': 'Invalid format',\n    'MESSAGES.FORM_VALIDATION_ERROR': 'Form values are not valid!',\n    'MESSAGES.FORM_NOTHING_TO_UPDATE_INFO': 'There are no values to update!',\n    'MESSAGES.FORM_CHANGES_WILL_BE_LOST': 'Are you sure you want to continue? All unsaved changes will be lost',\n    'MESSAGES.ERROR_LOGIN': 'Login failed. Check username and/or password.',\n    'MESSAGES.ERROR_SESSION': 'Session expired.',\n    'MESSAGES.ERROR_INSERT': 'Failed to insert data.',\n    'MESSAGES.ERROR_QUERY': 'Failed to get data from the server.',\n    'MESSAGES.ERROR_UPDATE': 'Failed to save data.',\n    'MESSAGES.ERROR_DELETE': 'Failed to delete data.',\n    'MESSAGES.ERROR_ATTRIBUTE_REQUIRED': 'Required attribute not set.',\n    'MESSAGES.ERROR_FILE_LOAD': 'Failed to load file.',\n    'MESSAGES.CONFIRM_ACTION': 'Are you sure you want to continue?',\n    'MESSAGES.CONFIRM_LOGOUT': 'Are you sure you want to leave?',\n    'MESSAGES.CONFIRM_DELETE': 'Are you sure you want to delete the selected items?',\n    'MESSAGES.CONFIRM_CANCEL': 'Are you sure you want to cancel without saving changes?',\n    'MESSAGES.SAVING': 'Saving, please wait...',\n    'MESSAGES.SAVED': 'Saved',\n    'MESSAGES.DELETED': 'Deleted',\n    'MESSAGES.INSERTED': 'Inserted',\n    'MESSAGES.UPDATED': 'Updated',\n    'MESSAGES.NO_RESULTS': 'No results were obtained.',\n    'MESSAGES.ERROR_MISSING_LANG': 'Selected language bundle file not found',\n    'MESSAGES.CONFIRM_DISCARD_FILTER_BY_COLUMN': 'Are you sure you want to discard all active columns filters?',\n    'MESSAGES.ERROR_EXPORT_TABLE_DATA': 'Failed to export table data.',\n    'MESSAGES.SUCCESS_EXPORT_TABLE_DATA': 'Table data exported successfully.',\n    'MESSAGES.OPERATION_NOT_ALLOWED_PERMISSION': 'Operation is not allowed due to permissions restrictions',\n    'MESSAGES.NAVIGATION_NOT_ALLOWED_PERMISSION': 'Navigation is not allowed due to permissions restrictions',\n    'MESSAGES.NAVIGATION_REDIRECTED_PERMISSION': 'Navigation redirected due to permissions restrictions',\n    'MESSAGES.ERROR_403_TEXT': 'You are not authorized to view this page.',\n    'MESSAGES.ERROR_403_TEXT_BUTTON': 'Navigate back',\n    'MESSAGES.AVOID_QUERY_WITHOUT_QUICKFILTER_COLUMNS': 'No column has been selected to perform the search.',\n    'MESSAGES.OPERATION_NOT_ALLOWED_READONLY':'Operation is not allowed due to the table is read-only',\n    'INPUT.COMBO.EMPTY': 'No results found',\n    'INPUT.COMBO.MESSAGE_TRIGGER': ' (+{0} others)',\n    'TABLE.FILTER_BY_COLUMN.CHECK_ALL': 'Select all',\n    'TABLE.FILTER_BY_COLUMN.EMPTY_VALUE': '(empty value)',\n    'TABLE.FILTER_BY_COLUMN.HINT_STAR': 'Use * to search for any character string',\n    'TABLE.FILTER_BY_COLUMN.BY_VALUE': 'Filter by value',\n    'TABLE.FILTER_BY_COLUMN.CUSTOM_FILTER': 'Custom filter',\n    'TABLE.FILTER_BY_COLUMN.FROM': 'From',\n    'TABLE.FILTER_BY_COLUMN.TO': 'To',\n    'TABLE.FILTER_BY_COLUMN.LIST_EMPTY': 'No values',\n    'TABLE.FILTER_BY_COLUMN.LIST_EMPTY_FILTER': 'Insert a filter',\n    'TABLE.FILTER_BY_COLUMN.LABEL_DATA': 'Filter values',\n    'TABLE.FILTER_BY_COLUMN.CURRENT_PAGE': 'Current page',\n    'TABLE.FILTER_BY_COLUMN.ALL_PAGE': 'All pages',\n    'TABLE.FILTER': 'Filter',\n    'TABLE.FILTER.CASE_SENSITIVE': 'Match uppercase and lowercase',\n    'TABLE.EMPTY': 'No results found',\n    'TABLE.EMPTY_USING_FILTER': ' using filter \"{0}\"',\n    'TABLE.INFO': '_START_ - _END_ of _TOTAL_',\n    'TABLE.INFO_EMPTY': '0 - 0 of 0',\n    'TABLE.INFO_FILTERED': '(filtered from _MAX_ total entries)',\n    'TABLE.INFO_POST_FIX': ' ',\n    'TABLE.LENGTH_MENU': 'Rows per page: _MENU_',\n    'TABLE.LOADING_RECORDS': 'Loading...',\n    'TABLE.PROCESSING': 'Processing...',\n    'TABLE.SEARCH': ' ',\n    'TABLE.ZERO_RECORDS': 'No matching records found',\n    'TABLE.PAGINATE.FIRST': 'First',\n    'TABLE.PAGINATE.LAST': 'Last',\n    'TABLE.PAGINATE.NEXT': 'Next',\n    'TABLE.PAGINATE.PREVIOUS': 'Previous',\n    'TABLE.PAGINATE.RANGE_LABEL': 'of',\n    'TABLE.PAGINATE.ITEMSPERPAGELABEL': 'Items per page',\n    'TABLE.ARIA.SORT_ASCENDING': ': activate to sort column ascending',\n    'TABLE.ARIA.SORT_DESCENDING': ': activate to sort column descending',\n    'TABLE.BUTTONS.COLVIS': 'Show / hide columns',\n    'TABLE.BUTTONS.COPY_TITLE': 'Added to clipboard',\n    'TABLE.BUTTONS.COPY_SUCCESS._': '%d rows copied',\n    'TABLE.BUTTONS.COPY_SUCCESS.1': '1 row copied',\n    'TABLE.BUTTONS.COPY_TO_CLIPBOARD': 'Copy to clipboard',\n    'TABLE.BUTTONS.PRINT': 'Print',\n    'TABLE.BUTTONS.EXPORT': 'Export',\n    'TABLE.BUTTONS.EXCEL': 'Excel',\n    'TABLE.BUTTONS.HTML': 'HTML',\n    'TABLE.BUTTONS.PDF': 'PDF',\n    'TABLE.BUTTONS.CSV': 'CSV',\n    'TABLE.BUTTONS.GROUP_ROWS': 'Group rows',\n    'TABLE.BUTTONS.RESIZE_COLUMNS': 'Resize columns',\n    'TABLE.BUTTONS.FILTER': 'Filter',\n    'TABLE.BUTTONS.FILTER_SAVE': 'Save filter',\n    'TABLE.BUTTONS.FILTER_LOAD': 'Load filter',\n    'TABLE.BUTTONS.FILTER_CLEAR': 'Clear filter',\n    'TABLE.BUTTONS.REFRESH': 'Refresh',\n    'TABLE.BUTTONS.DELETE': 'Delete',\n    'TABLE.BUTTONS.ADD': 'New',\n    'TABLE.BUTTONS.SELECT': 'Select...',\n    'TABLE.BUTTONS.FILTER_BY_COLUMN': 'Filter by column',\n    'TABLE.BUTTONS.SAVE_FILTER': 'Save filter',\n    'TABLE.BUTTONS.CONFIGURATION': 'Configuration',\n    'TABLE.BUTTONS.SAVE_CONFIGURATION': 'Save configuration',\n    'TABLE.BUTTONS.APPLY_CONFIGURATION': 'Load configuration',\n    'TABLE.BUTTONS.APPLY': 'Load',\n    'TABLE.BUTTONS.RESETWIDTH': 'Reset column widths',\n    'TABLE.BUTTONS.REPORT_ON_DEMAND': 'Report on demand',\n    'TABLE.SELECT.ROWS._': '%d selected rows',\n    'TABLE.SELECT.ROWS.0': ' ',\n    'TABLE.SELECT.ROWS.1': '1 row selected',\n    'TABLE.SHOW_ALL': 'All',\n    'TABLE.SELECT_DATE': 'Select date',\n    'TABLE.ROW_VALIDATION_ERROR': 'Row data is not valid!',\n    'TABLE.DIALOG.SAVE_FILTER': 'Select a name for the filter.',\n    'TABLE.DIALOG.FILTER_NAME': 'Name',\n    'TABLE.DIALOG.FILTER_DESCRIPTION': 'Description',\n    'TABLE.DIALOG.LOAD_FILTER': 'Select a filter to apply to the data',\n    'TABLE.DIALOG.CONFIRM_CLEAR_FILTER': 'This action will clear every filter on the table. Are you sure you want to continue?',\n    'TABLE.DIALOG.CONFIRM_RESET_WIDTH': 'This action will reset the width of all the table columns. Are you sure you want to continue?',\n    'TABLE.DIALOG.CONFIRM_REMOVE_FILTER': 'Are you sure you want to delete the selected filter?',\n    'TABLE.DIALOG.EMPTY_FILTER_LIST': 'There are no filters stored',\n    'TABLE.DIALOG.FILTER_NAME_ALREADY_EXISTS': 'Already exists a filter with that name',\n    'TABLE.DIALOG.SAVE_CONFIGURATION': 'Enter a name and description for the configuration',\n    'TABLE.DIALOG.CONFIGURATION_NAME': 'Name',\n    'TABLE.DIALOG.CONFIGURATION_DESCRIPTION': 'Description',\n    'TABLE.DIALOG.APPLY_CONFIGURATION': 'Select a configuration to apply to the table',\n    'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT': 'Default configuration',\n    'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT_DESCRIPTION': 'Restores the initial configuration of the table',\n    'TABLE.DIALOG.CONFIGURATION_PROPERTIES': 'Select which properties you want to store',\n    'TABLE.DIALOG.PROPERTIES.SORT': 'Columns sort',\n    'TABLE.DIALOG.PROPERTIES.SORT.INFO': 'Stores the sort of each column',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_DISPLAY': 'Columns visibility',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_DISPLAY.INFO': 'Stores the columns displayed and its order and width',\n    'TABLE.DIALOG.PROPERTIES.QUICK_FILTER': 'Filter state',\n    'TABLE.DIALOG.PROPERTIES.QUICK_FILTER.INFO': 'Stores the current value of the filter',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_FILTER': 'Filter by column',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_FILTER.INFO': 'Stores the filter configured on each column',\n    'TABLE.DIALOG.PROPERTIES.PAGE': 'Pagination status',\n    'TABLE.DIALOG.PROPERTIES.PAGE.INFO': 'Stores the pagination status',\n    'TABLE.DIALOG.PROPERTIES.FILTER_BUILDER': 'Advanced filters',\n    'TABLE.DIALOG.PROPERTIES.FILTER_BUILDER.INFO': 'Stores the values ​​of the advanced filters',\n    'TABLE.DIALOG.CONFIRM_REMOVE_CONFIGURATION': 'Are you sure you want to delete the selected configuration?',\n    'TABLE.DIALOG.EXPORT.DESCRIPTION': 'Select the format you want to export the table information.',\n    'LAYOUT_MANANGER.MAIN_TAB_LABEL': 'Home',\n    'LAYOUT_MANANGER.DIALOG_TITLE': 'Detail',\n    'LAYOUT_MANANGER.INSERTION_MODE_TITLE': 'New',\n    'LAYOUT_MANANGER.MAX_TABS_NUMBER_REACHED': 'Operation is not allowed: you have reached the maximum number of opened tabs',\n    'APP_LAYOUT.USER_PROFILE': 'My profile',\n    'CARD_MENU_LAYOUT.BUTTON_TEXT': 'View list',\n    'GRID.ITEMS_PER_PAGE': 'Items per page',\n    'GRID.SORT_BY': 'Sort by',\n    'GRID.SORT_BY_ASC': 'Sort by {0} ascending',\n    'GRID.SORT_BY_DESC': 'Sort by {0} descending',\n    'GRID.BUTTON_NEXT': 'Show more',\n    'GRID.TEXT_SHOWN_ITEMS': '{0} / {1}',\n    'GRID.EMPTY': 'No results found',\n    'GRID.EMPTY_USING_FILTER': ' using filter \"{0}\"',\n    'TABLE_CONTEXT_MENU.VIEW_DETAIL': 'View detail',\n    'TABLE_CONTEXT_MENU.EDIT': 'Edit',\n    'TABLE_CONTEXT_MENU.INSERT': 'Insert',\n    'TABLE_CONTEXT_MENU.COPY': 'Copy',\n    'TABLE_CONTEXT_MENU.COPY_CELL': 'Copy cell',\n    'TABLE_CONTEXT_MENU.COPY_ROW': 'Copy row',\n    'TABLE_CONTEXT_MENU.COPY_ALL': 'Copy all',\n    'TABLE_CONTEXT_MENU.COPY_SELECTION': 'Copy selection',\n    'TABLE_CONTEXT_MENU.SELECT_ALL': 'Select all',\n    'TABLE_CONTEXT_MENU.DESELECT_ALL': 'Deselect all',\n    'TABLE_CONTEXT_MENU.REFRESH': 'Refresh',\n    'TABLE_CONTEXT_MENU.DELETE': 'Delete',\n    'TABLE_CONTEXT_MENU.FILTER': 'Filter',\n    'TABLE_CONTEXT_MENU.FILTER_BY': 'Filter by:',\n    'TABLE_CONTEXT_MENU.FILTER_BY_VALUE': 'Filter by this value',\n    'DATERANGE.today': 'Today',\n    'DATERANGE.yesterday': 'Yesterday',\n    'DATERANGE.last_7days': 'Last 7 days',\n    'DATERANGE.last_30days': 'Last 30 days',\n    'DATERANGE.this_month': 'This month',\n    'DATERANGE.last_month': 'Last month',\n    'DATERANGE.this_year': 'This year',\n    'DATERANGE.APPLYLABEL': 'Select dates',\n    'DATERANGE.W': 'W',\n    'DATERANGE.PLACEHOLDER_STARTDATE': 'Start day',\n    'DATERANGE.PLACEHOLDER_ENDDATE': 'End day',\n    'TABLE_CONTEXT_MENU.GROUP_BY': 'Group by',\n    'TABLE_CONTEXT_MENU.GROUP_BY_YEAR': 'Group by year',\n    'TABLE_CONTEXT_MENU.GROUP_BY_MONTH': 'Group by month',\n    'TABLE_CONTEXT_MENU.GROUP_BY_YEAR_MONTH': 'Group by year and month',\n    'TABLE_CONTEXT_MENU.GROUP_BY_YEAR_MONTH_DAY': 'Group by year, month and day',\n    'TABLE_CONTEXT_MENU.GROUP_BY_COLUMN': 'Group by {0}',\n    'TABLE_CONTEXT_MENU.UNGROUP_BY_COLUMN': 'Ungroup by {0}',\n    'TABLE_CONTEXT_MENU.UNGROUP_ALLCOLUMNS': 'Ungroup all',\n    'TABLE_CONTEXT_MENU.GROUP_BY.AGGREGATE_FUNCTION': 'Aggregate function',\n    'TABLE_CONTEXT_MENU.EXPAND_ALL_GROUPS': 'Expand all',\n    'TABLE_CONTEXT_MENU.COLLAPSE_ALL_GROUPS': 'Collapse all',\n    'TABLE.BUTTONS.GROUPBY': 'Group / ungroup by',\n    'TABLE.BUTTONS.CHART_ON_DEMAND': 'Chart on demand',\n    'TABLE_GROUP_BY_COLUMNS_DIALOG.DESCRIPTION': 'Drag and drop item from the left (Available columns) to the right (Grouped columns). Reorder the items in Grouped columns as needed.',\n    'TABLE_GROUP_BY_COLUMNS_DIALOG.ALL_COLUMNS': 'Available columns',\n    'TABLE_GROUP_BY_COLUMNS_DIALOG.GROUPED_COLUMNS': 'Grouped columns',\n    'DUAL_LIST_SELECTOR.DROP_EMPTY_MESSAGE': 'Drag here to set the grouped columns',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.HIDE_COLUMN_WARNING': 'Are you sure you want to hide this column? The following properties of this column will be erased if you hide it: <ul> {0} {1} </ul>',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.VALUE_FILTER_WARN': '<li>Column value filter</li>',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.SORT_WARN': '<li>Column sorting</li>',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.GROUPING_WARN': '<li>Column grouping</li>',\n    'TABLE.VISIBLE_COLUMNS.DESCRIPTION': 'Click on icon to hide/display the column. Use drag and drop to modify the column order.',\n    'APP_LAYOUT.SETTINGS': 'Settings',\n    'AGGREGATE_NAME.count': 'Count',\n    'AGGREGATE_NAME.min': 'Min',\n    'AGGREGATE_NAME.max': 'Max',\n    'AGGREGATE_NAME.avg': 'Avg',\n    'AGGREGATE_NAME.sum': 'Sum',\n    'FORM_SERVICE_COMPONENT.REFRESH': 'Refresh',\n    'DUAL_LIST_SELECTOR.GROUP_BY_MONTH': 'month',\n    'DUAL_LIST_SELECTOR.GROUP_BY_YEAR_MONTH': 'month and year',\n    'DUAL_LIST_SELECTOR.GROUP_BY_YEAR': 'year',\n    'DUAL_LIST_SELECTOR.GROUP_BY_YEAR_MONTH_DAY': 'day, month and year',\n    'FILTERBUILDERMENU.BUTTONS.ARIALBUTTON': 'Filter menu',\n    'FILTERBUILDERMENU.BUTTONS.FILTER': 'Filter',\n    'FILTERBUILDERMENU.BUTTONS.SAVE_FILTER': 'Save filter',\n    'FILTERBUILDERMENU.BUTTONS.LOAD_FILTER': 'Load filter',\n    'FILTERBUILDERMENU.BUTTONS.CLEAR_FILTER': 'Clear filter',\n    'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER': 'This action will clear every filter on this section. Are you sure you want to continue?',\n    'OIMAGE.TEXT.DROP&DRAG': 'Drag and drop image file here',\n    'OIMAGE.BUTTON.BROWSEFILE': 'Select image',\n    'TREE.BUTTONS.SELECT': 'Select...',\n    'REPORT.COLUMN.TRUEVALUE': 'Yes',\n    'REPORT.COLUMN.FALSEVALUE': 'No',\n    'EXPORT.DIALOG.COLUMNS': 'Columns',\n    'EXPORT.DIALOG.EXPORT_FORMAT': 'Export format',\n    'EXPORT.DIALOG.ORIENTATION': 'Orientation',\n    'EXPORT.DIALOG.VERTICAL': 'Vertical',\n    'EXPORT.DIALOG.HORIZONTAL': 'Horizontal',\n    'EXPORT.DIALOG.FILE_NAME': 'File name',\n    'EXPORT.DIALOG.EXPORT_BUTTON': \"Export\",\n    'EXPORT.DIALOG.ADVANCED_OPTIONS': \" Advanced options\",\n    'EXPORT.DIALOG.FILE_NAME.PLACEHOLDER': \"You can indicate a file name\"\n  },\n\n  // Spanish\n\n  es: {\n    'LANGUAGE': 'Idioma',\n    'LOCALE_en': 'EN',\n    'LOCALE_es': 'ES',\n    'LOCALE_pt': 'PT',\n    'USERNAME': 'Usuario',\n    'PASSWORD': 'Contraseña',\n    'LOGIN': 'Entrar',\n    'LOGOUT': 'Salir',\n    'OK': 'Ok',\n    'ACCEPT': 'Aceptar',\n    'CANCEL': 'Cancelar',\n    'CLOSE': 'Cerrar',\n    'YES': 'Sí',\n    'NO': 'No',\n    'RESET': 'Resetear',\n    'CONFIRM': 'Confirmar',\n    'NEXT': 'Siguiente',\n    'PREVIOUS': 'Anterior',\n    'FINISH': 'Finalizar',\n    'SAVE': 'Guardar',\n    'INSERT': 'Ok',\n    'REFRESH': 'Refrescar',\n    'SEARCH': 'Buscar',\n    'FILTER': 'Filtrar',\n    'DELETE': 'Borrar',\n    'ADD': 'Nuevo',\n    'SELECT': 'Seleccionar',\n    'SELECT_ALL': 'Seleccionar todo',\n    'INFO': 'Información',\n    'ERROR': 'Error',\n    'FOUND': 'Encontrados',\n    'RESULTS': 'Resultados',\n    'TOTAL': 'Total',\n    'MONEY': 'Dinero',\n    'HOME': 'Inicio',\n    'SHOW_CONSOLE': 'Mostrar consola',\n    'FILE': 'Archivo',\n    'OPTIONS': 'Opciones',\n    'EDIT': 'Editar',\n    'UNDO': 'Deshacer',\n    'REDO': 'Rehacer',\n    'COPY': 'Copiar',\n    'PASTE': 'Pegar',\n    'LOCK': 'Bloquear',\n    'EXIT': 'Salir',\n    'SETTINGS': 'Configuración',\n    'FEATURES': 'Características',\n    'FORM': 'Formulario',\n    'LIST': 'Lista',\n    'LIST.EMPTY': 'No se han obtenido resultados',\n    'LIST.EMPTY_USING_FILTER': ' usando el filtro \"{0}\"',\n\n    'TABLE': 'Tabla',\n    'DETAIL': 'Detalle',\n    'PAGE': 'Página',\n    'FIRST_PAGE': 'Primera',\n    'LAST_PAGE': 'Última',\n    'PREVIOUS_PAGE': 'Anterior',\n    'NEXT_PAGE': 'Siguiente',\n    'PHOTO': 'Fotografía',\n    'CHOOSE_FILE': 'Escoger fichero',\n\n    'FORM_VALIDATION.REQUIRED': 'Requerido',\n    'FORM_VALIDATION.LENGTH': 'Longitud no válida',\n    'FORM_VALIDATION.MIN_LENGTH': 'Longitud mínima',\n    'FORM_VALIDATION.MAX_LENGTH': 'Longitud máxima',\n    'FORM_VALIDATION.MIN_DECIMAL_DIGITS': 'Mínimo número de cifras decimales',\n    'FORM_VALIDATION.MAX_DECIMAL_DIGITS': 'Máximo número de cifras decimales',\n    'FORM_VALIDATION.EMAIL_FORMAT': 'Email no válido',\n    'FORM_VALIDATION.NIF_FORMAT': 'Formato no válido (DNI: 12345678-A, NIE: X-1234567-A)',\n    'FORM_VALIDATION.DNI_LETTER': 'Letra de DNI no válida',\n    'FORM_VALIDATION.DATE_RANGE': 'Fecha fuera del rango válido',\n    'FORM_VALIDATION.MIN_VALUE': 'Valor mínimo',\n    'FORM_VALIDATION.MAX_VALUE': 'Valor máximo',\n\n    'FORM_VALIDATION.DATE_PARSE': 'Formato no válido',\n    'FORM_VALIDATION.DATE_FILTER': 'Fecha no es válida para el filtro definido',\n    'FORM_VALIDATION.DATE_MIN': 'Fecha mínima',\n    'FORM_VALIDATION.DATE_MAX': 'Fecha máxima',\n    'FORM_VALIDATION.DATERANGE_INVALID': 'Rango de fechas inválido',\n\n    'FORM_VALIDATION.FILE_TYPE': 'Formato no válido',\n    'FORM_VALIDATION.FILE_MAXSIZE': 'Tamaño de fichero máximo',\n    'FORM_VALIDATION.FILE_MAXNUM': 'Número máximo de ficheros',\n    'FORM_VALIDATION.HOUR_FORMAT': 'Formato no válido',\n    'FORM_VALIDATION.PHONE_FORMAT': 'Formato no válido',\n    'MESSAGES.FORM_VALIDATION_ERROR': 'El formulario contiene campos con valores no válidos',\n    'MESSAGES.FORM_NOTHING_TO_UPDATE_INFO': '¡No existen valores para actualizar!',\n    'MESSAGES.FORM_CHANGES_WILL_BE_LOST': '¿Está seguro de que quiere continuar? Perderá los cambios realizados',\n    'MESSAGES.ERROR_LOGIN': 'Error de inicio de sesión. Compruebe nombre de usuario y/o contraseña.',\n    'MESSAGES.ERROR_SESSION': 'La sesión ha caducado',\n    'MESSAGES.ERROR_INSERT': 'Error al insertar datos.',\n    'MESSAGES.ERROR_QUERY': 'Error al consultar datos del servidor.',\n    'MESSAGES.ERROR_UPDATE': 'Error al actualizar datos.',\n    'MESSAGES.ERROR_DELETE': 'Error al borrar datos.',\n    'MESSAGES.ERROR_ATTRIBUTE_REQUIRED': 'Atributo requerido no proporcionado.',\n    'MESSAGES.ERROR_FILE_LOAD': 'Error al cargar el archivo.',\n    'MESSAGES.CONFIRM_ACTION': '¿Está seguro de que quiere continuar?',\n    'MESSAGES.CONFIRM_LOGOUT': '¿Está seguro de que quiere salir?',\n    'MESSAGES.CONFIRM_DELETE': '¿Está seguro de que quiere borrar los items seleccionados?',\n    'MESSAGES.CONFIRM_CANCEL': '¿Está seguro de que quiere cancelar sin guardar los cambios?',\n    'MESSAGES.SAVING': 'Guardando, espere...',\n    'MESSAGES.SAVED': 'Guardado',\n    'MESSAGES.DELETED': 'Borrado',\n    'MESSAGES.INSERTED': 'Insertado',\n    'MESSAGES.UPDATED': 'Actualizado',\n    'MESSAGES.NO_RESULTS': 'No se obtuvieron resultados.',\n    'MESSAGES.ERROR_MISSING_LANG': 'No se ha encontrado el fichero de configuración del idioma seleccionado',\n    'MESSAGES.CONFIRM_DISCARD_FILTER_BY_COLUMN': '¿Está seguro de que quiere descartar todos los filtros de columna activos?',\n    'MESSAGES.ERROR_EXPORT_TABLE_DATA': 'Error al exportar los datos de la tabla.',\n    'MESSAGES.SUCCESS_EXPORT_TABLE_DATA': 'Se han exportado los datos de la tabla correctamente.',\n    'MESSAGES.OPERATION_NOT_ALLOWED_PERMISSION': 'Operación no permitida debido a restricciones de permisos.',\n    'MESSAGES.OPERATION_NOT_ALLOWED_READONLY': 'Operación no permitida debido a que la tabla es de solo lectura',\n    'MESSAGES.NAVIGATION_NOT_ALLOWED_PERMISSION': 'Navegación no permitida debido a restricciones de permisos.',\n    'MESSAGES.NAVIGATION_REDIRECTED_PERMISSION': 'Navegación redirigida debido a restricciones de permisos.',\n    'MESSAGES.ERROR_403_TEXT': 'No está autorizado para ver esta página.',\n    'MESSAGES.ERROR_403_TEXT_BUTTON': 'Volver atrás',\n    'MESSAGES.AVOID_QUERY_WITHOUT_QUICKFILTER_COLUMNS': 'No se ha seleccionado ninguna columna por la que realizar la búsqueda.',\n    'INPUT.COMBO.EMPTY': 'No hay resultados',\n    'INPUT.COMBO.MESSAGE_TRIGGER': ' (+ otros {0})',\n    'TABLE.FILTER_BY_COLUMN.CHECK_ALL': 'Seleccionar todos',\n    'TABLE.FILTER_BY_COLUMN.EMPTY_VALUE': '(valor vacío)',\n    'TABLE.FILTER_BY_COLUMN.HINT_STAR': 'Use * para buscar por cualquier valor',\n    'TABLE.FILTER_BY_COLUMN.BY_VALUE': 'Filtro por valor',\n    'TABLE.FILTER_BY_COLUMN.CUSTOM_FILTER': 'Filtro personalizado',\n    'TABLE.FILTER_BY_COLUMN.FROM': 'Desde',\n    'TABLE.FILTER_BY_COLUMN.TO': 'Hasta',\n    'TABLE.FILTER_BY_COLUMN.LIST_EMPTY': 'No hay valores',\n    'TABLE.FILTER_BY_COLUMN.LIST_EMPTY_FILTER': 'Introduzca un filtro',\n    'TABLE.FILTER_BY_COLUMN.LABEL_DATA': 'Filtrar valores sobre',\n    'TABLE.FILTER_BY_COLUMN.CURRENT_PAGE': 'Página actual',\n    'TABLE.FILTER_BY_COLUMN.ALL_PAGE': 'Todos los datos',\n    'TABLE.FILTER': 'Filtrar',\n    'TABLE.FILTER.CASE_SENSITIVE': 'Coincidir mayúsculas y minúsculas',\n    'TABLE.EMPTY': 'No se han obtenido resultados',\n    'TABLE.EMPTY_USING_FILTER': ' usando el filtro \"{0}\"',\n    'TABLE.INFO': '_START_ - _END_ de _TOTAL_',\n    'TABLE.INFO_EMPTY': '0 - 0 de 0',\n    'TABLE.INFO_FILTERED': '(filtrados de un total de _MAX_ registros)',\n    'TABLE.INFO_POST_FIX': ' ',\n    'TABLE.LENGTH_MENU': 'Registros por página: _MENU_',\n    'TABLE.LOADING_RECORDS': 'Cargando...',\n    'TABLE.PROCESSING': 'Procesando...',\n    'TABLE.SEARCH': ' ',\n    'TABLE.ZERO_RECORDS': 'No se encontraron coincidencias',\n    'TABLE.PAGINATE.FIRST': 'Primero',\n    'TABLE.PAGINATE.LAST': 'Último',\n    'TABLE.PAGINATE.NEXT': 'Siguiente',\n    'TABLE.PAGINATE.PREVIOUS': 'Anterior',\n    'TABLE.PAGINATE.RANGE_LABEL': 'de',\n    'TABLE.PAGINATE.ITEMSPERPAGELABEL': 'Registros por página',\n    'TABLE.ARIA.SORT_ASCENDING': ': activar para ordenar la columna de forma ascendente',\n    'TABLE.ARIA.SORT_DESCENDING': ': activar para ordenar la columna de forma descendente',\n    'TABLE.BUTTONS.COLVIS': 'Mostrar / ocultar columnas',\n    'TABLE.BUTTONS.COPY_TITLE': 'Copiado al portapapeles',\n    'TABLE.BUTTONS.COPY_SUCCESS._': '%d registros copiados',\n    'TABLE.BUTTONS.COPY_SUCCESS.1': '1 registro copiado',\n    'TABLE.BUTTONS.COPY_TO_CLIPBOARD': 'Copiar al portapapeles',\n    'TABLE.BUTTONS.PRINT': 'Imprimir',\n    'TABLE.BUTTONS.EXPORT': 'Exportar',\n    'TABLE.BUTTONS.EXCEL': 'Excel',\n    'TABLE.BUTTONS.HTML': 'HTML',\n    'TABLE.BUTTONS.PDF': 'PDF',\n    'TABLE.BUTTONS.CSV': 'CSV',\n    'TABLE.BUTTONS.GROUP_ROWS': 'Agrupar registros',\n    'TABLE.BUTTONS.RESIZE_COLUMNS': 'Cambiar tamaño de columnas',\n    'TABLE.BUTTONS.FILTER': 'Filtrar',\n    'TABLE.BUTTONS.FILTER_SAVE': 'Guardar filtro',\n    'TABLE.BUTTONS.FILTER_LOAD': 'Aplicar filtro',\n    'TABLE.BUTTONS.FILTER_CLEAR': 'Limpiar filtro',\n    'TABLE.BUTTONS.REFRESH': 'Refrescar',\n    'TABLE.BUTTONS.DELETE': 'Eliminar',\n    'TABLE.BUTTONS.ADD': 'Nuevo',\n    'TABLE.BUTTONS.SELECT': 'Seleccionar...',\n    'TABLE.BUTTONS.FILTER_BY_COLUMN': 'Filtrado por columnas',\n    'TABLE.BUTTONS.SAVE_FILTER': 'Guardar filtro',\n    'TABLE.BUTTONS.CONFIGURATION': 'Configuración',\n    'TABLE.BUTTONS.SAVE_CONFIGURATION': 'Guardar configuración',\n    'TABLE.BUTTONS.APPLY_CONFIGURATION': 'Aplicar configuración',\n    'TABLE.BUTTONS.APPLY': 'Aplicar',\n    'TABLE.BUTTONS.RESETWIDTH': 'Resetear el ancho de las columnas',\n    'TABLE.BUTTONS.REPORT_ON_DEMAND': 'Informe a la carta',\n    'TABLE.SELECT.ROWS._': '%d registros seleccionados',\n    'TABLE.SELECT.ROWS.0': ' ',\n    'TABLE.SELECT.ROWS.1': '1 registro seleccionado',\n    'TABLE.SHOW_ALL': 'Todo',\n    'TABLE.SELECT_DATE': 'Seleccionar fecha',\n    'TABLE.ROW_VALIDATION_ERROR': 'La fila contiene campos con valores no válidos',\n    'TABLE.DIALOG.SAVE_FILTER': 'Seleccione un nombre para el filtro.',\n    'TABLE.DIALOG.FILTER_NAME': 'Nombre',\n    'TABLE.DIALOG.FILTER_DESCRIPTION': 'Descripción',\n    'TABLE.DIALOG.LOAD_FILTER': 'Seleccione un filtro para aplicar a los datos',\n    'TABLE.DIALOG.CONFIRM_CLEAR_FILTER': 'Esta acción limpiará todos los filtros aplicados a la tabla. ¿Desea continuar?',\n    'TABLE.DIALOG.CONFIRM_RESET_WIDTH': 'Esta acción reseteará el ancho de todas las columnas de la tabla. ¿Desea continuar?',\n    'TABLE.DIALOG.CONFIRM_REMOVE_FILTER': '¿Está seguro de que quiere eliminar el filtro seleccionado?',\n    'TABLE.DIALOG.EMPTY_FILTER_LIST': 'No hay filtros almacenados',\n    'TABLE.DIALOG.FILTER_NAME_ALREADY_EXISTS': 'Ya existe un filtro con ese nombre',\n    'TABLE.DIALOG.SAVE_CONFIGURATION': 'Introduzca un nombre y una descripción para la configuración',\n    'TABLE.DIALOG.CONFIGURATION_NAME': 'Nombre',\n    'TABLE.DIALOG.CONFIGURATION_DESCRIPTION': 'Descripción',\n    'TABLE.DIALOG.APPLY_CONFIGURATION': 'Seleccione una configuración para aplicar a la tabla',\n    'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT': 'Configuración por defecto',\n    'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT_DESCRIPTION': 'Restaura la configuración inicial de la tabla',\n    'TABLE.DIALOG.CONFIGURATION_PROPERTIES': 'Seleccione qué propiedades desea almacenar',\n    'TABLE.DIALOG.PROPERTIES.SORT': 'Ordenación de columnas',\n    'TABLE.DIALOG.PROPERTIES.SORT.INFO': 'Almacena la ordenación de cada columna',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_DISPLAY': 'Visibilidad de columnas',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_DISPLAY.INFO': 'Almacena las columnas que se muestran, el orden en el que se muestran y el ancho de cada una',\n    'TABLE.DIALOG.PROPERTIES.QUICK_FILTER': 'Estado del filtro',\n    'TABLE.DIALOG.PROPERTIES.QUICK_FILTER.INFO': 'Almacena el valor actual del filtro',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_FILTER': 'Filtrado por columnas',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_FILTER.INFO': 'Almacena los filtros configurados en cada una de las columnas',\n    'TABLE.DIALOG.PROPERTIES.FILTER_BUILDER': 'Filtros avanzados',\n    'TABLE.DIALOG.PROPERTIES.FILTER_BUILDER.INFO': 'Almacena los valores de los filtros avanzados',\n    'TABLE.DIALOG.PROPERTIES.PAGE': 'Estado de paginación',\n    'TABLE.DIALOG.PROPERTIES.PAGE.INFO': 'Almacena el estado de la paginación',\n    'TABLE.DIALOG.CONFIRM_REMOVE_CONFIGURATION': '¿Está seguro de que quiere eliminar la configuración seleccionada?',\n    'TABLE.DIALOG.EXPORT.DESCRIPTION': 'Seleccione el formato al que desea exportar la información de la tabla.',\n    'LAYOUT_MANANGER.MAIN_TAB_LABEL': 'Inicio',\n    'LAYOUT_MANANGER.DIALOG_TITLE': 'Detalle',\n    'LAYOUT_MANANGER.INSERTION_MODE_TITLE': 'Nuevo',\n    'LAYOUT_MANANGER.MAX_TABS_NUMBER_REACHED': 'Operación no permitida: ha alcanzado el número máximo de pestañas abiertas.',\n    'APP_LAYOUT.USER_PROFILE': 'Mi perfil',\n    'CARD_MENU_LAYOUT.BUTTON_TEXT': 'Acceder',\n    'GRID.ITEMS_PER_PAGE': 'Elementos por página',\n    'GRID.SORT_BY': 'Ordenado por',\n    'GRID.SORT_BY_ASC': 'Ordenado por {0} ascendente',\n    'GRID.SORT_BY_DESC': 'Ordenado por {0} descendente',\n    'GRID.BUTTON_NEXT': 'Ver más',\n    'GRID.TEXT_SHOWN_ITEMS': '{0} / {1}',\n    'GRID.EMPTY': 'No se han obtenido resultados',\n    'GRID.EMPTY_USING_FILTER': ' usando el filtro \"{0}\"',\n    'TABLE_CONTEXT_MENU.VIEW_DETAIL': 'Ver detalle',\n    'TABLE_CONTEXT_MENU.EDIT': 'Editar',\n    'TABLE_CONTEXT_MENU.INSERT': 'Insertar',\n    'TABLE_CONTEXT_MENU.COPY': 'Copiar',\n    'TABLE_CONTEXT_MENU.COPY_CELL': 'Copiar celda',\n    'TABLE_CONTEXT_MENU.COPY_ROW': 'Copiar fila',\n    'TABLE_CONTEXT_MENU.COPY_ALL': 'Copiar todo',\n    'TABLE_CONTEXT_MENU.COPY_SELECTION': 'Copiar selección',\n    'TABLE_CONTEXT_MENU.SELECT_ALL': 'Seleccionar todos',\n    'TABLE_CONTEXT_MENU.DESELECT_ALL': 'Deseleccionar todos',\n    'TABLE_CONTEXT_MENU.REFRESH': 'Refrescar',\n    'TABLE_CONTEXT_MENU.DELETE': 'Borrar',\n    'TABLE_CONTEXT_MENU.FILTER': 'Filtrar',\n    'TABLE_CONTEXT_MENU.FILTER_BY': 'Filtrar por:',\n    'TABLE_CONTEXT_MENU.FILTER_BY_VALUE': 'Filtrar por este valor',\n    'TABLE_CONTEXT_MENU.GROUP_BY': 'Agrupar por',\n    'TABLE_CONTEXT_MENU.GROUP_BY_YEAR': 'Agrupar por año',\n    'TABLE_CONTEXT_MENU.GROUP_BY_MONTH': 'Agrupar por mes',\n    'TABLE_CONTEXT_MENU.GROUP_BY_YEAR_MONTH': 'Agrupar por año y mes',\n    'TABLE_CONTEXT_MENU.GROUP_BY_YEAR_MONTH_DAY': 'Agrupar por año, mes y día',\n    'TABLE_CONTEXT_MENU.GROUP_BY_COLUMN': 'Agrupar por {0}',\n    'TABLE_CONTEXT_MENU.UNGROUP_BY_COLUMN': 'Desagrupar por {0}',\n    'TABLE_CONTEXT_MENU.UNGROUP_ALLCOLUMNS': 'Desagrupar todas las columnas',\n    'TABLE_CONTEXT_MENU.GROUP_BY.AGGREGATE_FUNCTION': 'Función de agrupamiento',\n    'TABLE_CONTEXT_MENU.EXPAND_ALL_GROUPS': 'Expandir todas',\n    'TABLE_CONTEXT_MENU.COLLAPSE_ALL_GROUPS': 'Colapsar todas',\n    'TABLE.BUTTONS.GROUPBY': 'Agrupar por',\n    'TABLE.BUTTONS.CHART_ON_DEMAND': 'Gráficas a la carta',\n    'TABLE.DIALOG.TITLE_GROUPBY': 'Agrupar / desagrupar por columnas',\n    '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',\n    'TABLE_GROUP_BY_COLUMNS_DIALOG.ALL_COLUMNS': 'Columnas disponibles',\n    'TABLE_GROUP_BY_COLUMNS_DIALOG.GROUPED_COLUMNS': 'Columnas agrupadas',\n    'DUAL_LIST_SELECTOR.DROP_EMPTY_MESSAGE': 'Arrastre aquí para establecer las columnas agrupadas',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.HIDE_COLUMN_WARNING': '¿Está seguro de que quiere ocultar esta columna? Las siguientes propiedades serán eliminadas si la oculta: <ul> {0} {1} </ul>',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.VALUE_FILTER_WARN': '<li>Filtrado de columna</li>',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.SORT_WARN': '<li>Ordenación por columna</li>',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.GROUPING_WARN': '<li>Agrupamento por coluna</li>',\n    '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.',\n    'APP_LAYOUT.SETTINGS': 'Configuración',\n    'AGGREGATE_NAME.count': 'Count',\n    'AGGREGATE_NAME.min': 'Min',\n    'AGGREGATE_NAME.max': 'Max',\n    'AGGREGATE_NAME.avg': 'Media',\n    'AGGREGATE_NAME.sum': 'Sum',\n    'FORM_SERVICE_COMPONENT.REFRESH': 'Refrescar',\n    'DUAL_LIST_SELECTOR.GROUP_BY_MONTH': 'mes',\n    'DUAL_LIST_SELECTOR.GROUP_BY_YEAR_MONTH': 'mes y año',\n    'DUAL_LIST_SELECTOR.GROUP_BY_YEAR': 'año',\n    'DUAL_LIST_SELECTOR.GROUP_BY_YEAR_MONTH_DAY': 'día, mes y año',\n    'FILTERBUILDERMENU.BUTTONS.ARIALBUTTON': 'Menú de filtro',\n    'FILTERBUILDERMENU.BUTTONS.FILTER': 'Filtrar',\n    'FILTERBUILDERMENU.BUTTONS.SAVE_FILTER': 'Guardar filtro',\n    'FILTERBUILDERMENU.BUTTONS.LOAD_FILTER': 'Cargar filtro',\n    'FILTERBUILDERMENU.BUTTONS.CLEAR_FILTER': 'Limpiar filtro',\n    'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER': 'Esta acción limpiará todos los filtros de esta sección. ¿Desea continuar?',\n    'OIMAGE.TEXT.DROP&DRAG': 'Arrastra y suelta la imagen aquí',\n    'OIMAGE.BUTTON.BROWSEFILE': 'Seleccionar imagen',\n    'TREE.BUTTONS.SELECT': 'Seleccionar...',\n    'REPORT.COLUMN.TRUEVALUE': 'Si',\n    'REPORT.COLUMN.FALSEVALUE': 'No',\n    'EXPORT.DIALOG.COLUMNS': 'Columnas',\n    'EXPORT.DIALOG.EXPORT_FORMAT': 'Formato de exportación',\n    'EXPORT.DIALOG.ORIENTATION': 'Orientación',\n    'EXPORT.DIALOG.VERTICAL': 'Vertical',\n    'EXPORT.DIALOG.HORIZONTAL': 'Horizontal',\n    'EXPORT.DIALOG.FILE_NAME': 'Nombre del fichero',\n    'EXPORT.DIALOG.EXPORT_BUTTON': \"Exportar\",\n    'EXPORT.DIALOG.ADVANCED_OPTIONS': \" Opciones Avanzadas\",\n    'EXPORT.DIALOG.FILE_NAME.PLACEHOLDER': \"Puede indicar un nombre para el fichero\",\n    'DATERANGE.PLACEHOLDER_STARTDATE': 'Fecha inicio',\n    'DATERANGE.PLACEHOLDER_ENDDATE': 'Fecha fin'\n  },\n  // Portuguese - BRAZIL\n  pt: {\n    'LANGUAGE': 'Idioma',\n    'LOCALE_en': 'EN',\n    'LOCALE_es': 'ES',\n    'LOCALE_pt': 'PT',\n    'USERNAME': 'Usuário',\n    'PASSWORD': 'Senha',\n    'LOGIN': 'Entrar',\n    'LOGOUT': 'Sair',\n    'OK': 'Ok',\n    'ACCEPT': 'Aceitar',\n    'CANCEL': 'Cancelar',\n    'CLOSE': 'Fechar',\n    'YES': 'Sim',\n    'NO': 'Não',\n    'RESET': 'Resetar',\n    'CONFIRM': 'Confirmar',\n    'NEXT': 'Próximo',\n    'PREVIOUS': 'Anterior',\n    'FINISH': 'Finalizar',\n    'SAVE': 'Salvar',\n    'INSERT': 'Ok',\n    'REFRESH': 'Recarregar',\n    'SEARCH': 'Buscar',\n    'FILTER': 'Filtrar',\n    'DELETE': 'Apagar',\n    'ADD': 'Novo',\n    'SELECT': 'Selecionar',\n    'SELECT_ALL': 'Selecionar Tudo',\n    'INFO': 'Informação',\n    'ERROR': 'Erro',\n    'FOUND': 'Encontrados',\n    'RESULTS': 'Resultados',\n    'TOTAL': 'Total',\n    'MONEY': 'Dinheiro',\n    'HOME': 'Início',\n    'SHOW_CONSOLE': 'Mostrar console',\n    'FILE': 'Arquivo',\n    'OPTIONS': 'Opções',\n    'EDIT': 'Editar',\n    'UNDO': 'Desfazer',\n    'REDO': 'Refazer',\n    'COPY': 'Copiar',\n    'PASTE': 'Colar',\n    'LOCK': 'Bloquear',\n    'EXIT': 'Sair',\n    'SETTINGS': 'Configuração',\n    'FEATURES': 'Características',\n    'FORM': 'Formulário',\n    'LIST': 'Lista',\n    'LIST.EMPTY': 'Nenhum resultado encontrado',\n    'LIST.EMPTY_USING_FILTER': ' usando o filtro \"{0}\"',\n\n    'TABLE': 'Tabela',\n    'DETAIL': 'Detalhe',\n    'PAGE': 'Página',\n    'FIRST_PAGE': 'Primeira',\n    'LAST_PAGE': 'Última',\n    'PREVIOUS_PAGE': 'Anterior',\n    'NEXT_PAGE': 'Próxima',\n    'PHOTO': 'Fotografia',\n    'CHOOSE_FILE': 'Escolher Arquivo',\n\n    'FORM_VALIDATION.REQUIRED': 'Requerido',\n    'FORM_VALIDATION.LENGTH': 'Longitude inválida',\n    'FORM_VALIDATION.MIN_LENGTH': 'Longitude mínima',\n    'FORM_VALIDATION.MAX_LENGTH': 'Longitude máxima',\n    'FORM_VALIDATION.MIN_DECIMAL_DIGITS': 'Mínimo número de cifras decimais',\n    'FORM_VALIDATION.MAX_DECIMAL_DIGITS': 'Máximo número de cifras decimais',\n    'FORM_VALIDATION.EMAIL_FORMAT': 'Email inválido',\n    'FORM_VALIDATION.NIF_FORMAT': 'Formato inválido (DNI: 12345678-A, NIE: X-1234567-A)',\n    'FORM_VALIDATION.DNI_LETTER': 'Letra de RG inválida',\n    'FORM_VALIDATION.DATE_RANGE': 'Data inválida',\n    'FORM_VALIDATION.MIN_VALUE': 'Valor mínimo',\n    'FORM_VALIDATION.MAX_VALUE': 'Valor máximo',\n\n    'FORM_VALIDATION.DATE_PARSE': 'Data inválida para o filtro definido',\n    'FORM_VALIDATION.DATE_FILTER': 'Fecha no es válida para el filtro definido',\n    'FORM_VALIDATION.DATE_MIN': 'Data mínima',\n    'FORM_VALIDATION.DATE_MAX': 'Data máxima',\n\n    'FORM_VALIDATION.FILE_TYPE': 'Formato no válido',\n    'FORM_VALIDATION.FILE_MAXSIZE': 'Tamanho de arquivo máximo',\n    'FORM_VALIDATION.FILE_MAXNUM': 'Número máximo de arquivos',\n    'FORM_VALIDATION.HOUR_FORMAT': 'Formato inválido',\n    'FORM_VALIDATION.PHONE_FORMAT': 'Formato inválido',\n    'MESSAGES.FORM_VALIDATION_ERROR': 'O formulário apresenta campos com valores inválidos',\n    'MESSAGES.FORM_NOTHING_TO_UPDATE_INFO': 'Não existem valores a serem atualizados!',\n    'MESSAGES.FORM_CHANGES_WILL_BE_LOST': 'Tem certeza que quer continuar? Perderá todas as alterações realizadas',\n    'MESSAGES.ERROR_LOGIN': 'Erro de início de sessão. Comprove nome de usuário e/ou senha.',\n    'MESSAGES.ERROR_SESSION': 'A sessão foi encerrada',\n    'MESSAGES.ERROR_INSERT': 'Erro ao inserir os dados.',\n    'MESSAGES.ERROR_QUERY': 'Erro na consulta de dados do servidor.',\n    'MESSAGES.ERROR_UPDATE': 'Erro de atualização dos dados.',\n    'MESSAGES.ERROR_DELETE': 'Erro ao apagar os dados.',\n    'MESSAGES.ERROR_ATTRIBUTE_REQUIRED': 'Atributo requerido não fornecido.',\n    'MESSAGES.ERROR_FILE_LOAD': 'Erro ao carregar o arquivo.',\n    'MESSAGES.CONFIRM_ACTION': 'Tem certeza que quer continuar?',\n    'MESSAGES.CONFIRM_LOGOUT': 'Tem certeza que quer sair?',\n    'MESSAGES.CONFIRM_DELETE': 'Tem certeza que quer apagar os ítens selecionados?',\n    'MESSAGES.CONFIRM_CANCEL': 'Tem certeza que quer cancelar sem salvar as alterações?',\n    'MESSAGES.SAVING': 'Salvando, aguarde...',\n    'MESSAGES.SAVED': 'Salvado',\n    'MESSAGES.DELETED': 'Apagado',\n    'MESSAGES.INSERTED': 'Inserido',\n    'MESSAGES.UPDATED': 'Atualizado',\n    'MESSAGES.NO_RESULTS': 'Nenhum resultado encontrado.',\n    'MESSAGES.ERROR_MISSING_LANG': 'Não foi encontrado o arquivo de configuração do idioma selecionado',\n    'MESSAGES.CONFIRM_DISCARD_FILTER_BY_COLUMN': 'Tem certeza que quer descartar todos os filtros de coluna ativos?',\n    'MESSAGES.ERROR_EXPORT_TABLE_DATA': 'Erro na exportação dos dados da tabela.',\n    'MESSAGES.SUCCESS_EXPORT_TABLE_DATA': 'Os dados da tabela foram exportados corretamente.',\n    'MESSAGES.OPERATION_NOT_ALLOWED_PERMISSION': 'Operação não permitida por falta de permissões.',\n    'MESSAGES.OPERATION_NOT_ALLOWED_READONLY': 'Operação não permitida porque a tabela é somente leitura',\n    'MESSAGES.NAVIGATION_NOT_ALLOWED_PERMISSION': 'Navegação não permitida por falta de permissões.',\n    'MESSAGES.NAVIGATION_REDIRECTED_PERMISSION': 'Navegção redirecionada por falta de permissões.',\n    'MESSAGES.ERROR_403_TEXT': 'Não tem autorização para ver esta página.',\n    'MESSAGES.ERROR_403_TEXT_BUTTON': 'Voltar',\n    'MESSAGES.AVOID_QUERY_WITHOUT_QUICKFILTER_COLUMNS': 'Não foi selecionada nenhuma coluna para realizar a busca.',\n    'INPUT.COMBO.EMPTY': 'Não existem resultados',\n    'INPUT.COMBO.MESSAGE_TRIGGER': '(+ outros {0})',\n    'TABLE.FILTER_BY_COLUMN.CHECK_ALL': 'Selecionar todos',\n    'TABLE.FILTER_BY_COLUMN.EMPTY_VALUE': '(valor vazío)',\n    'TABLE.FILTER_BY_COLUMN.HINT_STAR': 'Use * para buscar por quaisquer valores',\n    'TABLE.FILTER_BY_COLUMN.BY_VALUE': 'Filtro por valor',\n    'TABLE.FILTER_BY_COLUMN.CUSTOM_FILTER': 'Filtro personalizado',\n    'TABLE.FILTER_BY_COLUMN.FROM': 'De',\n    'TABLE.FILTER_BY_COLUMN.TO': 'Até',\n    'TABLE.FILTER_BY_COLUMN.LIST_EMPTY': 'Não existem valores',\n    'TABLE.FILTER_BY_COLUMN.LIST_EMPTY_FILTER': 'Introduza um filtro',\n    'TABLE.FILTER_BY_COLUMN.LABEL_DATA': 'Filtrar valores ativados',\n    'TABLE.FILTER_BY_COLUMN.CURRENT_PAGE': 'Página atual',\n    'TABLE.FILTER_BY_COLUMN.ALL_PAGE': 'Todos os dados',\n    'TABLE.FILTER': 'Filtrar',\n    'TABLE.FILTER.CASE_SENSITIVE': 'Coincidir maiúsculas e minúsculas',\n    'TABLE.EMPTY': 'Nenhum resultado encontrado.',\n    'TABLE.EMPTY_USING_FILTER': 'usando o filtro \\'{0}',\n    'TABLE.INFO': '_START_ - _END_ de _TOTAL_',\n    'TABLE.INFO_EMPTY': '0 - 0 de 0',\n    'TABLE.INFO_FILTERED': '(filtrados de um total de _MAX_ registros)',\n    'TABLE.INFO_POST_FIX': '',\n    'TABLE.LENGTH_MENU': 'Registros por página: _MENU_',\n    'TABLE.LOADING_RECORDS': 'Carregando...',\n    'TABLE.PROCESSING': 'Processando...',\n    'TABLE.SEARCH': '',\n    'TABLE.ZERO_RECORDS': 'Não foram encontradas coincidências',\n    'TABLE.PAGINATE.FIRST': 'Primeiro',\n    'TABLE.PAGINATE.LAST': 'Último',\n    'TABLE.PAGINATE.NEXT': 'Próximo',\n    'TABLE.PAGINATE.PREVIOUS': 'Anterior',\n    'TABLE.PAGINATE.RANGE_LABEL': 'de',\n    'TABLE.PAGINATE.ITEMSPERPAGELABEL': 'Registros por página',\n    'TABLE.ARIA.SORT_ASCENDING': ': ativar para ordenar a coluna de forma ascendente',\n    'TABLE.ARIA.SORT_DESCENDING': ': ativar para ordenar a coluna de forma descendente',\n    'TABLE.BUTTONS.COLVIS': 'Mostrar / ocultar colunas',\n    'TABLE.BUTTONS.COPY_TITLE': 'Copiado na área de transferência (clipboard)',\n    'TABLE.BUTTONS.COPY_SUCCESS._': '%d registros copiados',\n    'TABLE.BUTTONS.COPY_SUCCESS.1': '1 registro copiado',\n    'TABLE.BUTTONS.COPY_TO_CLIPBOARD': 'Copia para a área de transferência (clipboard)',\n    'TABLE.BUTTONS.PRINT': 'Imprimir',\n    'TABLE.BUTTONS.EXPORT': 'Exportar',\n    'TABLE.BUTTONS.EXCEL': 'Excel',\n    'TABLE.BUTTONS.HTML': 'HTML',\n    'TABLE.BUTTONS.PDF': 'PDF',\n    'TABLE.BUTTONS.GROUP_ROWS': 'Agrupar registros',\n    'TABLE.BUTTONS.RESIZE_COLUMNS': 'Alterar tamanho de colunas',\n    'TABLE.BUTTONS.FILTER': 'Filtrar',\n    'TABLE.BUTTONS.FILTER_SAVE': 'Guardar filtro',\n    'TABLE.BUTTONS.FILTER_LOAD': 'Aplicar filtro',\n    'TABLE.BUTTONS.FILTER_CLEAR': 'Limpar filtro',\n    'TABLE.BUTTONS.REFRESH': 'Recarregar',\n    'TABLE.BUTTONS.DELETE': 'Eliminar',\n    'TABLE.BUTTONS.ADD': 'Novo',\n    'TABLE.BUTTONS.SELECT': 'Selecionar...',\n    'TABLE.BUTTONS.FILTER_BY_COLUMN': 'Filtrado por colunas',\n    'TABLE.BUTTONS.SAVE_FILTER': 'Guardar filtro',\n    'TABLE.BUTTONS.CONFIGURATION': 'Configuração',\n    'TABLE.BUTTONS.SAVE_CONFIGURATION': 'Guardar configuração',\n    'TABLE.BUTTONS.APPLY_CONFIGURATION': 'Aplicar configuração',\n    'TABLE.BUTTONS.APPLY': 'Aplicar',\n    'TABLE.SELECT.ROWS._': '%d registros selecionados',\n    'TABLE.SELECT.ROWS.0': '',\n    'TABLE.SELECT.ROWS.1': '1 registro selecionado',\n    'TABLE.SHOW_ALL': 'Tudo',\n    'TABLE.SELECT_DATE': 'Selecionar data',\n    'TABLE.ROW_VALIDATION_ERROR': 'A linha apresenta campos com valores inválidos',\n    'TABLE.DIALOG.SAVE_FILTER': 'Selecione um nome para o filtro.',\n    'TABLE.DIALOG.FILTER_NAME': 'Nome',\n    'TABLE.DIALOG.FILTER_DESCRIPTION': 'Descrição',\n    'TABLE.DIALOG.LOAD_FILTER': 'Selecione um filtro para aplicar aos dados',\n    'TABLE.DIALOG.CONFIRM_CLEAR_FILTER': 'Esta ação limpará todos os filtros aplicados à tabela. Deseja continuar?',\n    'TABLE.DIALOG.CONFIRM_REMOVE_FILTER': 'Tem certeza que quer eliminar o filtro selecionado?',\n    'TABLE.DIALOG.EMPTY_FILTER_LIST': 'Não existem filtros armazenados',\n    'TABLE.DIALOG.FILTER_NAME_ALREADY_EXISTS': 'Já existe um filtro com esse nome',\n    'TABLE.DIALOG.SAVE_CONFIGURATION': 'Introduza um nome e uma descrição para a configuração',\n    'TABLE.DIALOG.CONFIGURATION_NAME': 'Nome',\n    'TABLE.DIALOG.CONFIGURATION_DESCRIPTION': 'Descrição',\n    'TABLE.DIALOG.APPLY_CONFIGURATION': 'Selecione uma configuração para aplicar à tabela',\n    'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT': 'Configuração padrão',\n    'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT_DESCRIPTION': 'Restaura a configuração inicial da tabela',\n    'TABLE.DIALOG.CONFIGURATION_PROPERTIES': 'Selecione que propriedades deseja armazenar',\n    'TABLE.DIALOG.PROPERTIES.SORT': 'Ordenação de colunas',\n    'TABLE.DIALOG.PROPERTIES.SORT.INFO': 'Armazena a ordenação de cada coluna',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_DISPLAY': 'Visibilidade de colunas',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_DISPLAY.INFO': 'Armazena as colunas mostradas, a ordem em que são mostradas e a largura de cada uma',\n    'TABLE.DIALOG.PROPERTIES.QUICK_FILTER': 'Estado do filtro',\n    'TABLE.DIALOG.PROPERTIES.QUICK_FILTER.INFO': 'Armazena o valor atual do filtro',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_FILTER': 'Filtrado por colunas',\n    'TABLE.DIALOG.PROPERTIES.COLUMNS_FILTER.INFO': 'Armazena os filtros configurados em cada uma das colunas',\n    'TABLE.DIALOG.PROPERTIES.PAGE': 'Estado de paginação',\n    'TABLE.DIALOG.PROPERTIES.PAGE.INFO': 'Armazena o estado da paginação',\n    'TABLE.DIALOG.CONFIRM_REMOVE_CONFIGURATION': 'Tem certeza que quer eliminar a configuração selecionada?',\n    'TABLE.DIALOG.EXPORT.DESCRIPTION': 'Selecione o formato de exportação da informação da tabela.',\n    'LAYOUT_MANANGER.MAIN_TAB_LABEL': 'Início',\n    'LAYOUT_MANANGER.DIALOG_TITLE': 'Detalhe',\n    'LAYOUT_MANANGER.INSERTION_MODE_TITLE': 'Novo',\n    'LAYOUT_MANANGER.MAX_TABS_NUMBER_REACHED': 'Operação não permitida: você atingiu o número máximo de abas abertas.',\n    'APP_LAYOUT.USER_PROFILE': 'Meu perfil',\n    'CARD_MENU_LAYOUT.BUTTON_TEXT': 'Acessar',\n    'GRID.ITEMS_PER_PAGE': 'Elementos por página',\n    'GRID.SORT_BY': 'Ordenado por',\n    'GRID.SORT_BY_ASC': 'Ordenado por {0} ascendente',\n    'GRID.SORT_BY_DESC': 'Ordenado por {0} descendente',\n    'GRID.BUTTON_NEXT': 'Ver mais',\n    'GRID.TEXT_SHOWN_ITEMS': '{0} / {1}',\n    'GRID.EMPTY': 'Não existem resultados',\n    'GRID.EMPTY_USING_FILTER': 'usando o filtro \\'{0}',\n    'TABLE_CONTEXT_MENU.VIEW_DETAIL': 'Ver detalhes',\n    'TABLE_CONTEXT_MENU.EDIT': 'Editar',\n    'TABLE_CONTEXT_MENU.INSERT': 'Inserir',\n    'TABLE_CONTEXT_MENU.COPY': 'Copiar',\n    'TABLE_CONTEXT_MENU.COPY_CELL': 'Copiar célula',\n    'TABLE_CONTEXT_MENU.COPY_ROW': 'Copiar linha',\n    'TABLE_CONTEXT_MENU.COPY_ALL': 'Copiar todos',\n    'TABLE_CONTEXT_MENU.COPY_SELECTION': 'Copiar seleção',\n    'TABLE_CONTEXT_MENU.SELECT_ALL': 'Selecionar todos',\n    'TABLE_CONTEXT_MENU.DESELECT_ALL': 'Desselecionar todos',\n    'TABLE_CONTEXT_MENU.REFRESH': 'Recarregar',\n    'TABLE_CONTEXT_MENU.DELETE': 'Apagar',\n    'TABLE_CONTEXT_MENU.FILTER': 'Filtrar',\n    'TABLE_CONTEXT_MENU.FILTER_BY': 'Filtrar por:',\n    'TABLE_CONTEXT_MENU.FILTER_BY_VALUE': 'Filtrar por ese valor',\n    'TABLE_CONTEXT_MENU.GROUP_BY_COLUMN': 'Agrupar por {0}',\n    'TABLE_CONTEXT_MENU.UNGROUP_BY_COLUMN': 'Desagrupar por {0}',\n    'TABLE_CONTEXT_MENU.UNGROUP_ALLCOLUMNS': 'Desagrupar todas las columnas',\n    'TABLE_CONTEXT_MENU.GROUP_BY.AGGREGATE_FUNCTION': 'Función de agrupamiento',\n    'TABLE_CONTEXT_MENU.EXPAND_ALL_GROUPS': 'Expandir todas',\n    'TABLE_CONTEXT_MENU.COLLAPSE_ALL_GROUPS': 'Colapsar todas',\n    'TABLE.BUTTONS.GROUPBY': 'Agrupar / desagrupar por',\n    'TABLE.BUTTONS.CHART_ON_DEMAND': 'Gráficas a la carta',\n    'TABLE.DIALOG.TITLE_GROUPBY': 'Agrupar / desagrupar por columnas',\n    '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',\n    'TABLE_GROUP_BY_COLUMNS_DIALOG.AVAILABLE_COLUMNS': 'Columnas disponibles',\n    'TABLE_GROUP_BY_COLUMNS_DIALOG.GROUPED_COLUMNS': 'Columnas agrupadas',\n    'DUAL_LIST_SELECTOR.DROP_EMPTY_MESSAGE': 'Arrastre aquí para establecer las columnas agrupadas',\n    '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.',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.HIDE_COLUMN_WARNING': 'Tem certeza de que quer esconder esta coluna? As seguintes propriedades desta coluna serão apagadas se você a esconder: <ul> {0} {1} </ul>',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.VALUE_FILTER_WARN': '<li>Filtro de valor de coluna</li>',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.SORT_WARN': '<li>Ordenação de coluna</li>',\n    'TABLE.VISIBLE_COLUMNS_DIALOG.GROUPING_WARN': '<li>Column grouping</li>',\n    'APP_LAYOUT.SETTINGS': 'Definições',\n    'AGGREGATE_NAME.count': 'Count',\n    'AGGREGATE_NAME.min': 'Min',\n    'AGGREGATE_NAME.max': 'Max',\n    'AGGREGATE_NAME.avg': 'Media',\n    'AGGREGATE_NAME.sum': 'Sum',\n    'FORM_SERVICE_COMPONENT.REFRESH': 'Recarregar',\n    'DUAL_LIST_SELECTOR.GROUP_BY_MONTH': 'mês',\n    'DUAL_LIST_SELECTOR.GROUP_BY_YEAR_MONTH': 'mês e ano',\n    'DUAL_LIST_SELECTOR.GROUP_BY_YEAR': 'ano',\n    'DUAL_LIST_SELECTOR.GROUP_BY_YEAR_MONTH_DAY': 'dia, mês e ano',\n    'FILTERBUILDERMENU.BUTTONS.ARIALBUTTON': 'Menu de filtro',\n    'FILTERBUILDERMENU.BUTTONS.FILTER': 'Filtro',\n    'FILTERBUILDERMENU.BUTTONS.SAVE_FILTER': 'Salvar filtro',\n    'FILTERBUILDERMENU.BUTTONS.LOAD_FILTER': 'Filtro de carga',\n    'FILTERBUILDERMENU.BUTTONS.CLEAR_FILTER': 'Filtro limpo',\n    'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER': 'Esta ação limpará todos os filtros nesta seção. Você tem certeza que quer continuar?',\n    'OIMAGE.TEXT.DROP&DRAG': 'Arraste e solte a imagem aqui',\n    'OIMAGE.BUTTON.BROWSEFILE': 'Selecione uma imagem',\n    'TREE.BUTTONS.SELECT': 'Selecionar...',\n    'REPORT.COLUMN.TRUEVALUE': 'Sim',\n    'REPORT.COLUMN.FALSEVALUE': 'Não',\n    'DATERANGE.PLACEHOLDER_STARTDATE': 'Data de início',\n    'DATERANGE.PLACEHOLDER_ENDDATE': 'Data de término'\n  }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport moment from 'moment';\n\nimport { AppConfig } from '../config/app-config';\nimport { Config } from '../types/config.type';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MomentService {\n\n  // HTML5 input date: YYYY-MM-DD // locale ES-es: DD-MM-YYYY // locale EN-en: MM-DD-YYYY // ISO 8601:\n  // YYYY-MM-DDThh:mm:ss.S // UTC: YYYY-MM-DD hh:mm:ssZ\n  static DATE_FORMATS = ['YYYY-MM-DD', 'DD-MM-YYYY', 'MM-DD-YYYY', 'YYYY-MM-DDThh:mm:ss.S', 'YYYY-MM-DDThh:mm:ss.SSSZ', 'YYYY-MM-DD hh:mm:ssZ'];\n  static defaultFormat: string = 'L';\n  private _locale: string;\n  private _config: Config;\n\n  constructor(protected injector: Injector) {\n    this._config = this.injector.get(AppConfig).getConfiguration();\n    this.load(this._config.locale);\n  }\n\n  load(locale: string) {\n    this._locale = locale;\n  }\n\n  parseDate(value: any, format?: string, locale?: string): any {\n    let result = '';\n    if (!locale) {\n      locale = this._locale;\n    }\n    if (typeof value === 'number') {\n      result = moment(new Date(value)).locale(locale).format(format ? format : MomentService.defaultFormat);\n    } else {\n      result = moment(value, MomentService.DATE_FORMATS, locale).format(format ? format : MomentService.defaultFormat);\n    }\n    result = (result === 'Invalid date') ? '' : result;\n    return result;\n  }\n\n  getLocale() {\n    return this._locale;\n  }\n\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Code copied from '@angular/core/src/facade/async of RC4. On RC5 this classes are removed!!\n */\nimport { EventEmitter } from '@angular/core';\n\nexport { Observable, Subject } from 'rxjs';\n\nexport function noop() {\n  // nothing to do\n}\n\nexport class ObservableWrapper {\n  // TODO(vsavkin): when we use rxnext, try inferring the generic type from the first arg\n  static subscribe<T>(\n    emitter: any, onNext: (value: T) => void, onError?: (exception: any) => void,\n    onComplete: () => void = () => {\n      // nothing to do\n    }): object {\n    onError = (typeof onError === 'function') && onError || noop;\n    onComplete = (typeof onComplete === 'function') && onComplete || noop;\n    return emitter.subscribe({ next: onNext, error: onError, complete: onComplete });\n  }\n\n  static isObservable(obs: any): boolean { return !!obs.subscribe; }\n\n  /**\n   * Returns whether `obs` has any subscribers listening to events.\n   */\n  static hasSubscribers(obs: EventEmitter<any>): boolean { return obs.observers.length > 0; }\n\n  static dispose(subscription: any) { subscription.unsubscribe(); }\n\n  /**\n   * @deprecated - use callEmit() instead\n   */\n  static callNext(emitter: EventEmitter<any>, value: any) { emitter.emit(value); }\n\n  static callEmit(emitter: EventEmitter<any>, value: any) { emitter.emit(value); }\n\n  static callError(emitter: EventEmitter<any>, error: any) { emitter.error(error); }\n\n  static callComplete(emitter: EventEmitter<any>) { emitter.complete(); }\n\n}\n\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { type ODialogConfig } from '../shared';\nimport { ODialogInternalComponent } from '../shared/components/dialog/o-dialog-internal.component';\nimport { SessionInfo } from '../types/session-info.type';\n\n@Injectable()\nexport abstract class AuthService {\n\n  public onLogin: Subject<any> = new Subject();\n  public onLogout: Subject<any> = new Subject();\n  protected ng2Dialog: MatDialog;\n  dialogRef: MatDialogRef<ODialogInternalComponent>;\n\n  constructor(protected injector: Injector) {\n    this.ng2Dialog = injector.get(MatDialog);\n  }\n\n  public abstract login(user: string, password: string): Observable<any>;\n  public abstract logout(): Observable<any>;\n  public abstract clearSessionData(): void;\n  public abstract isLoggedIn(): boolean;\n  public abstract getSessionInfo(): SessionInfo;\n\n  public logoutWithConfirmation(): void {\n    this.confirm('CONFIRM', 'MESSAGES.CONFIRM_LOGOUT').then(res => {\n      if (res) {\n        this.logout();\n      }\n    });\n  }\n  public confirm(title: string, message: string, config?: ODialogConfig): Promise<any> {\n    const self = this;\n    const observable = new Observable(observer => {\n      self.openDialog(observer);\n      self.dialogRef.componentInstance.confirm(title, message, config);\n    });\n    return observable.toPromise();\n  }\n\n  protected openDialog(observer) {\n    const cfg: MatDialogConfig = {\n      role: 'alertdialog',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-dialog-service']\n    };\n    //TODO It has been typed with the component type because it needed the component but adding it produces a circular dependency\n    this.dialogRef = this.ng2Dialog.open(ODialogInternalComponent, cfg);\n    this.dialogRef.afterClosed().subscribe(result => {\n      result = result === undefined ? false : result;\n      observer.next(result);\n      observer.complete();\n      this.dialogRef = null;\n    });\n  }\n  public alert(title: string, message: string, config?: ODialogConfig): Promise<any> {\n    const self = this;\n    const observable = new Observable(observer => {\n      self.openDialog(observer);\n      self.dialogRef.componentInstance.alert(title, message, config);\n    });\n    return observable.toPromise();\n  }\n\n}","import { Injectable, Injector } from '@angular/core';\n\nimport { AppConfig } from '../config/app-config';\nimport { Config } from '../types/config.type';\nimport { SessionInfo } from '../types/session-info.type';\nimport { Codes } from '../util/codes';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginStorageService {\n\n  private _config: Config;\n  public _localStorageKey: string;\n\n  constructor(protected injector: Injector) {\n    this._config = this.injector.get(AppConfig).getConfiguration();\n    this._localStorageKey = this._config.uuid;\n  }\n\n  public getSessionInfo(): SessionInfo {\n    const info = localStorage.getItem(this._localStorageKey);\n    if (!info) {\n      return {};\n    }\n    const stored = JSON.parse(info);\n    return stored[Codes.SESSION_KEY] || {};\n  }\n\n  public storeSessionInfo(sessionInfo: SessionInfo): void {\n    if (sessionInfo !== undefined) {\n      const info = localStorage.getItem(this._localStorageKey);\n      let stored = null;\n      if (info && info.length > 0) {\n        stored = JSON.parse(info);\n      } else {\n        stored = {};\n      }\n      stored[Codes.SESSION_KEY] = sessionInfo;\n      try {\n        localStorage.setItem(this._localStorageKey, JSON.stringify(stored));\n      } catch (e) {\n        console.error(\"Cannot set new item in localStorage. Error: \" + e);\n      }\n    }\n  }\n\n  public updateSessionId(id: string | number) {\n    let session = this.getSessionInfo();\n    if (session.id !== id) {\n      session.id = id;\n      this.storeSessionInfo(session);\n    }\n  }\n\n  public sessionExpired(): void {\n    const sessionInfo = this.getSessionInfo();\n    delete sessionInfo.id;\n    delete sessionInfo.user;\n    this.storeSessionInfo(sessionInfo);\n  }\n\n  public isLoggedIn(): boolean {\n    const sessionInfo = this.getSessionInfo();\n    if (sessionInfo && sessionInfo.id && sessionInfo.user && sessionInfo.user.length > 0) {\n      if (typeof sessionInfo.id === 'number' && (isNaN(sessionInfo.id) || sessionInfo.id < 0)) {\n        return false;\n      }\n      return true;\n    }\n    return false;\n  }\n\n}\n","import { ServiceResponse } from '../interfaces/service-response.interface';\nimport { Codes } from '../util/codes';\n\nexport abstract class BaseServiceResponse implements ServiceResponse {\n\n  constructor(\n    public code: number,\n    public data: any,\n    public message: string,\n    public sqlTypes?: { [key: string]: number; },\n    public startRecordIndex?: number,\n    public totalQueryRecordsNumber?: number\n  ) {\n  }\n\n  isSuccessful(): boolean {\n    return this.code === Codes.ONTIMIZE_SUCCESSFUL_CODE;\n  }\n\n  isFailed(): boolean {\n    return this.code === Codes.ONTIMIZE_FAILED_CODE;\n  }\n\n  isUnauthorized(): boolean {\n    return this.code === Codes.ONTIMIZE_UNAUTHORIZED_CODE;\n  }\n}\n","import { BaseServiceResponse } from '../base-service-response.class';\n\nexport class OntimizeServiceResponse extends BaseServiceResponse {\n\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ServiceResponseAdapter } from '../../interfaces/service-response-adapter.interface';\nimport { ServiceResponse } from '../../interfaces/service-response.interface';\nimport { OntimizeServiceResponse } from './ontimize-service-response.class';\n\n@Injectable()\nexport class OntimizeServiceResponseAdapter implements ServiceResponseAdapter<OntimizeServiceResponse> {\n\n  adapt(res: HttpResponse<any>): ServiceResponse {\n    return new OntimizeServiceResponse(\n      res.body.code,\n      res.body.data,\n      res.body.message,\n      res.body.sqlTypes,\n      res.body.startRecordIndex,\n      res.body.totalQueryRecordsNumber\n    );\n  }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Subscriber } from 'rxjs';\n\nimport { ServiceResponse } from '../../interfaces/service-response.interface';\nimport { BaseService } from '../base-service.class';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OntimizeServiceResponseParser {\n\n  constructor(\n    protected injector: Injector\n  ) { }\n\n  parseSuccessfulResponse(resp: ServiceResponse, subscriber: Subscriber<ServiceResponse>, service: BaseService) {\n    if (resp && resp.isUnauthorized()) {\n      service.clientErrorFallback(401);\n    } else if (resp && resp.isFailed()) {\n      subscriber.error(resp.message);\n    } else if (resp && resp.isSuccessful()) {\n      subscriber.next(resp);\n    } else {\n      // Unknow state -> error\n      subscriber.error('Service unavailable');\n    }\n  }\n\n  parseUnsuccessfulResponse(error, subscriber: Subscriber<ServiceResponse>, service: BaseService) {\n    if (error) {\n      switch (error.status) {\n        case 401:\n        case 403:\n        case 404:\n        case 405:\n          service.clientErrorFallback(error.status);\n          break;\n        case 500:\n        case 501:\n        case 502:\n        case 503:\n        case 504:\n        default:\n          subscriber.error(error);\n          service.serverErrorFallback(error.status);\n          break;\n      }\n    } else {\n      subscriber.error(error);\n    }\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { PaginationContext } from '../interfaces/pagination-context.interface';\nimport { Codes } from '../util/codes';\n\n@Injectable()\nexport class PaginationContextService {\n  private context: PaginationContext;\n\n  constructor() {\n    this.context = { pageNumber: 0, totalSize: 0, offset: 0, pageSize: Codes.DEFAULT_QUERY_ROWS };\n  }\n\n  setContext(context: PaginationContext): void {\n    if (context !== null && context !== undefined) {\n      this.context = context;\n    }\n  }\n\n  getContext(): PaginationContext | null {\n    return this.context;\n  }\n\n  /**\n   * Reset the component to its initial state, just before making any REST requests.\n   * @param [pageSize]\n   */\n  reinitializeContext(pageSize?: number): void {\n    this.setContext({ pageNumber: 0, pageSize: pageSize ?? Codes.DEFAULT_QUERY_ROWS, offset: 0, totalSize: 0 });\n  }\n}\n","import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\nimport { Injector, Type } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Observable, Subscriber } from 'rxjs';\nimport { map, share } from 'rxjs/operators';\n\nimport { AppConfig } from '../config/app-config';\nimport { ServiceResponseAdapter } from '../interfaces/service-response-adapter.interface';\nimport { ServiceResponse } from '../interfaces/service-response.interface';\nimport { Config } from '../types/config.type';\nimport { ServiceRequestParam } from '../types/service-request-param.type';\nimport { Util } from '../util/util';\nimport { Codes } from '../util/codes';\nimport { AuthService } from './auth.service';\nimport { BaseServiceResponse } from './base-service-response.class';\nimport { LoginStorageService } from './login-storage.service';\nimport { OntimizeServiceResponseAdapter } from './ontimize/ontimize-service-response.adapter';\nimport { OntimizeServiceResponseParser } from './parser/o-service-response.parser';\nimport { HttpRequestOptions } from '../types/http-request-options.type';\nimport { PaginationContext } from '../interfaces/pagination-context.interface';\nimport { PaginationContextService } from './pagination-context.service';\n\nexport class BaseService {\n\n  protected httpClient: HttpClient;\n  protected router: Router;\n\n  protected _urlBase: string;\n  protected _appConfig: Config;\n  protected _config: AppConfig;\n  protected responseParser: OntimizeServiceResponseParser;\n  protected authService: AuthService;\n  protected adapter: ServiceResponseAdapter<BaseServiceResponse>;\n  protected loginStorageService: LoginStorageService;\n  protected paginationContextService: PaginationContextService;\n\n\n  constructor(protected injector: Injector) {\n    this.httpClient = this.injector.get<HttpClient>(HttpClient as Type<HttpClient>);\n    this.router = this.injector.get<Router>(Router as Type<Router>);\n    this._config = this.injector.get<AppConfig>(AppConfig as Type<AppConfig>);\n    this._appConfig = this._config.getConfiguration();\n    this.responseParser = this.injector.get<OntimizeServiceResponseParser>(OntimizeServiceResponseParser as Type<OntimizeServiceResponseParser>);\n    this.authService = this.injector.get<AuthService>(AuthService as Type<AuthService>);\n    this.loginStorageService = this.injector.get<LoginStorageService>(LoginStorageService)\n    this.paginationContextService = new PaginationContextService(); //\n    this.configureAdapter();\n  }\n\n  public configureAdapter() {\n    this.adapter = this.injector.get(OntimizeServiceResponseAdapter);\n  }\n\n  public configureService(config: any): void {\n    this._urlBase = config.urlBase ? config.urlBase : this._appConfig.apiEndpoint;\n  }\n\n  public getDefaultServiceConfiguration(serviceName?: string): any {\n    const configuration = this._config.getServiceConfiguration();\n    let servConfig = {};\n    if (serviceName && configuration.hasOwnProperty(serviceName)) {\n      servConfig = configuration[serviceName];\n    }\n    servConfig[Codes.SESSION_KEY] = this.authService.getSessionInfo();\n    return servConfig;\n  }\n\n  public get urlBase(): string {\n    return this._urlBase;\n  }\n\n  public set urlBase(value: string) {\n    this._urlBase = value;\n  }\n\n  public doRequest(param: ServiceRequestParam): Observable<ServiceResponse> {\n\n    const dataObservable: Observable<ServiceResponse> = new Observable((observer: Subscriber<ServiceResponse>) => {\n      const options = param.options || {\n        headers: this.buildHeaders()\n      };\n      options.observe = 'response';\n      let requestObs: Observable<ServiceResponse>;\n      switch (param.method) {\n        case 'GET':\n          requestObs = this.httpClient.get<ServiceResponse>(param.url, options);\n          break;\n        case 'PUT':\n          requestObs = this.httpClient.put<ServiceResponse>(param.url, param.body, options);\n          break;\n        case 'DELETE':\n          const deleteOptions: HttpRequestOptions = {\n            headers: options.headers,\n            body: param.body\n          };\n          deleteOptions.observe = 'response';\n          requestObs = this.httpClient.delete<ServiceResponse>(param.url, deleteOptions);\n          break;\n        case 'POST':\n        default:\n          requestObs = this.httpClient.post<ServiceResponse>(param.url, param.body, options);\n          break;\n      }\n\n      requestObs.pipe(\n        map((data: any) => {\n          this.refreshAuthToken(data);\n          return this.adapter.adapt(data);\n        })\n      ).subscribe(resp => {\n        (param.successCallback || this.parseSuccessfulResponse).bind(this)(resp, observer);\n      }, error => {\n        (param.errorCallBack || this.parseUnsuccessfulResponse).bind(this)(error, observer);\n      }, () => observer.complete());\n    });\n    return dataObservable.pipe(share());\n  }\n\n  protected buildHeaders(): HttpHeaders {\n    return new HttpHeaders({\n      'Access-Control-Allow-Origin': '*',\n      'Content-Type': 'application/json;charset=UTF-8'\n    });\n  }\n\n  public clientErrorFallback(errorCode: number) {\n\n  }\n\n  public serverErrorFallback(errorCode: number) {\n\n  }\n\n  /*\n   * Successful response parsers, there is one parser for each CRUD method which calls to the common parser.\n   * User can overwrite the chosen methods parsers or the common parser\n   */\n  protected parseSuccessfulResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.responseParser.parseSuccessfulResponse(resp, observer, this);\n  }\n\n  protected parseSuccessfulQueryResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.parseSuccessfulResponse(resp, observer);\n  }\n\n  protected parseSuccessfulAdvancedQueryResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.parseSuccessfulResponse(resp, observer);\n  }\n\n  protected parseSuccessfulInsertResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.parseSuccessfulResponse(resp, observer);\n  }\n\n  protected parseSuccessfulUpdateResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.parseSuccessfulResponse(resp, observer);\n  }\n\n  protected parseSuccessfulDeleteResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.parseSuccessfulResponse(resp, observer);\n  }\n\n  /*\n   * Unsuccessful response parsers, there is one parser for each CRUD method which calls to the common parser.\n   * User can overwrite the chosen methods parsers or the common parser\n   */\n  protected parseUnsuccessfulResponse(error: any, observer: Subscriber<ServiceResponse>) {\n    this.responseParser.parseUnsuccessfulResponse(error, observer, this);\n  }\n\n  protected parseUnsuccessfulQueryResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.parseUnsuccessfulResponse(resp, observer);\n  }\n\n  protected parseUnsuccessfulAdvancedQueryResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.parseUnsuccessfulResponse(resp, observer);\n  }\n\n  protected parseUnsuccessfulInsertResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.parseUnsuccessfulResponse(resp, observer);\n  }\n\n  protected parseUnsuccessfulUpdateResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.parseUnsuccessfulResponse(resp, observer);\n  }\n\n  protected parseUnsuccessfulDeleteResponse(resp: ServiceResponse, observer: Subscriber<ServiceResponse>) {\n    this.parseUnsuccessfulResponse(resp, observer);\n  }\n\n  protected refreshAuthToken(res: HttpResponse<any>) {\n    const authToken = res.headers.get('X-Auth-Token');\n    if (Util.isDefined(authToken)) {\n      this.loginStorageService.updateSessionId(authToken);\n    }\n  }\n  setPaginationContext(context: PaginationContext): void {\n    this.paginationContextService.setContext({ ...this.getPaginationContext(),...context });\n  }\n\n  getPaginationContext(): PaginationContext | null {\n    return this.paginationContextService.getContext();\n  }\n\n  reinitializePaginationContext(pageSize?:number): void {\n    this.paginationContextService.reinitializeContext(pageSize);\n  }\n\n}\n","import { Injector, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { IAuthService } from '../../interfaces/auth-service.interface';\nimport { BaseService } from '../base-service.class';\n\n@Injectable()\nexport class OntimizeBaseService extends BaseService implements IAuthService {\n\n  protected _startSessionPath: string;\n\n  public kv = {};\n  public av: string[] = [];\n  public sqltypes = {};\n  public pagesize: number = 10;\n  public offset: number = 0;\n  public orderby: Array<object> = [];\n  public totalsize: number = -1;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  public configureService(config: any): void {\n    super.configureService(config);\n  }\n\n  public startsession(user: string, password: string): Observable<any> {\n    return null;\n  }\n\n  public endsession(user: string, sessionId: number): Observable<any> {\n    return null;\n  }\n\n  public hassession(user: string, sessionId: string | number): Observable<boolean> {\n    return null;\n  }\n\n  public clientErrorFallback(errorCode: number) {\n    if (errorCode === 401) {\n      this.authService.logout();\n    }\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\nimport { IDataService } from '../../interfaces/data-service.interface';\nimport { Util } from '../../util/util';\nimport { OntimizeBaseService } from './ontimize-base-service.class';\n\n@Injectable()\nexport class OntimizeService extends OntimizeBaseService implements IDataService {\n\n  public entity: string = '';\n\n  protected user: string;\n\n  public configureService(config: any): void {\n    super.configureService(config);\n    this._startSessionPath = this._appConfig.startSessionPath ? this._appConfig.startSessionPath : '/startsession';\n    this.user = config.session ? config.session.user : '';\n    if (config.entity !== undefined) {\n      this.entity = config.entity;\n    }\n    // TODO init other params like 'kv', 'av', etc.\n  }\n\n  public startsession(user: string, password: string): Observable<string | number> {\n    const encodedPassword = encodeURIComponent(password);\n    const url = this.urlBase + this._startSessionPath + '?user=' + user + '&password=' + encodedPassword;\n    const dataObservable: Observable<string | number> = new Observable(_startSessionObserver => {\n      this.httpClient.get(url).subscribe((resp: number) => {\n        if (resp >= 0) {\n          _startSessionObserver.next(resp);\n        } else {\n          // Invalid sessionId...\n          _startSessionObserver.error('Invalid user or password');\n        }\n      }, error => _startSessionObserver.error(error));\n    });\n    return dataObservable.pipe(share());\n  }\n\n  public endsession(user: string, sessionId: number): Observable<number> {\n    const url = this.urlBase + '/endsession?user=' + user + '&sessionid=' + sessionId;\n    const dataObservable: Observable<any> = new Observable(_closeSessionObserver => {\n      this.httpClient.get(url).subscribe(resp => {\n        _closeSessionObserver.next(resp);\n      }, error => {\n        if (error.status === 401 || error.status === 0 || !error.ok) {\n          _closeSessionObserver.next(0);\n        } else {\n          _closeSessionObserver.error(error);\n        }\n      });\n    });\n    return dataObservable.pipe(share());\n  }\n\n  public hassession(user: string, sessionId: number): Observable<boolean> {\n    const dataObservable: Observable<any> = new Observable(observer => {\n      const url = this.urlBase + '/hassession?user=' + user + '&sessionid=' + sessionId;\n      this.httpClient.get(url).subscribe(resp => {\n        observer.next(resp);\n      }, error => observer.error(error));\n    });\n    return dataObservable.pipe(share());\n  }\n\n  public query(kv?: object, av?: Array<string>, entity?: string, sqltypes?: object): Observable<any> {\n    entity = (Util.isDefined(entity)) ? entity : this.entity;\n    // TODO improve this -> merge between global conf and specific params of method calling\n    kv = (Util.isDefined(kv)) ? kv : this.kv;\n    av = (Util.isDefined(av)) ? av : this.av;\n    sqltypes = (Util.isDefined(sqltypes)) ? sqltypes : this.sqltypes;\n\n    const url = `${this.urlBase}/query`;\n\n    const body = JSON.stringify({\n      user: this.user,\n      sessionid: this.authService.getSessionInfo().id,\n      type: 1,\n      entity: entity,\n      kv: kv,\n      av: av,\n      sqltypes: sqltypes\n    });\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body,\n      successCallback: this.parseSuccessfulQueryResponse,\n      errorCallBack: this.parseUnsuccessfulQueryResponse\n    });\n  }\n\n  public advancedQuery(kv?: object, av?: Array<string>, entity?: string, sqltypes?: object,\n    offset?: number, pagesize?: number, orderby?: Array<object>): Observable<any> {\n\n    entity = (Util.isDefined(entity)) ? entity : this.entity;\n    // TODO improve this -> merge between global conf and specific params of method calling\n    kv = (Util.isDefined(kv)) ? kv : this.kv;\n    av = (Util.isDefined(av)) ? av : this.av;\n    sqltypes = (Util.isDefined(sqltypes)) ? sqltypes : this.sqltypes;\n    orderby = (Util.isDefined(orderby)) ? orderby : this.orderby;\n    offset = (Util.isDefined(offset)) ? offset : this.offset;\n    pagesize = (Util.isDefined(pagesize)) ? pagesize : this.pagesize;\n\n    const url = `${this.urlBase}/advancedquery`;\n\n    const body = JSON.stringify({\n      user: this.user,\n      sessionid: this.authService.getSessionInfo().id,\n      type: 1,\n      entity: entity,\n      kv: kv,\n      av: av,\n      sqltypes: sqltypes,\n      offset: offset,\n      pageSize: pagesize,\n      orderBy: orderby\n    });\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body,\n      successCallback: this.parseSuccessfulAdvancedQueryResponse,\n      errorCallBack: this.parseUnsuccessfulAdvancedQueryResponse\n    });\n  }\n\n  public insert(av: object = {}, entity?: string, sqltypes?: object): Observable<any> {\n    entity = (Util.isDefined(entity)) ? entity : this.entity;\n    av = (Util.isDefined(av)) ? av : this.av;\n    sqltypes = (Util.isDefined(sqltypes)) ? sqltypes : this.sqltypes;\n\n    const url = `${this.urlBase}/insert`;\n\n    const body = JSON.stringify({\n      user: this.user,\n      sessionid: this.authService.getSessionInfo().id,\n      entity: entity,\n      av: av,\n      sqltypes: sqltypes\n    });\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body,\n      successCallback: this.parseSuccessfulInsertResponse,\n      errorCallBack: this.parseUnsuccessfulInsertResponse\n    });\n  }\n\n\n  public update(kv: object = {}, av: object = {}, entity?: string, sqltypes?: object): Observable<any> {\n    entity = (Util.isDefined(entity)) ? entity : this.entity;\n    kv = (Util.isDefined(kv)) ? kv : this.kv;\n    av = (Util.isDefined(av)) ? av : this.av;\n    sqltypes = (Util.isDefined(sqltypes)) ? sqltypes : this.sqltypes;\n\n    const url = `${this.urlBase}/update`;\n\n    const body = JSON.stringify({\n      user: this.user,\n      sessionid: this.authService.getSessionInfo().id,\n      entity: entity,\n      kv: kv,\n      av: av,\n      sqltypes: sqltypes\n    });\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body,\n      successCallback: this.parseSuccessfulUpdateResponse,\n      errorCallBack: this.parseUnsuccessfulUpdateResponse\n    });\n  }\n\n  public delete(kv: object = {}, entity?: string, sqltypes?: object): Observable<any> {\n    entity = (Util.isDefined(entity)) ? entity : this.entity;\n    kv = (Util.isDefined(kv)) ? kv : this.kv;\n    sqltypes = (Util.isDefined(sqltypes)) ? sqltypes : this.sqltypes;\n\n    const url = `${this.urlBase}/delete`;\n\n    const body = JSON.stringify({\n      user: this.user,\n      sessionid: this.authService.getSessionInfo().id,\n      entity: entity,\n      kv: kv,\n      sqltypes: sqltypes\n    });\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body,\n      successCallback: this.parseSuccessfulDeleteResponse,\n      errorCallBack: this.parseUnsuccessfulDeleteResponse\n    });\n  }\n\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injector, Type } from '@angular/core';\n\nimport { AppConfig } from '../../config/app-config';\nimport { Config } from '../../types/config.type';\nimport { AuthService } from '../auth.service';\n\nexport class OntimizeBasePermissionsService {\n  protected httpClient: HttpClient;\n  protected _appConfig: Config;\n  protected _config: AppConfig;\n  protected authService: AuthService;\n\n  constructor(protected injector: Injector) {\n    this.httpClient = this.injector.get<HttpClient>(HttpClient as Type<HttpClient>);\n    this._config = this.injector.get<AppConfig>(AppConfig as Type<AppConfig>);\n    this._appConfig = this._config.getConfiguration();\n    this.authService = this.injector.get<AuthService>(AuthService as Type<AuthService>);\n  }\n\n  protected buildHeaders(): HttpHeaders {\n    return new HttpHeaders({\n      'Access-Control-Allow-Origin': '*',\n      'Content-Type': 'application/json;charset=UTF-8'\n    });\n  }\n\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\nimport { IPermissionsService } from '../../interfaces/permissions-service.interface';\nimport { OntimizeEEPermissionsConfig } from '../../types/ontimize-ee-permissions-config.type';\nimport { Codes } from '../../util/codes';\nimport { Util } from '../../util/util';\nimport { OntimizeBasePermissionsService } from './ontimize-base-permissions-service.class';\n\n@Injectable()\nexport class OntimizeEEPermissionsService extends OntimizeBasePermissionsService implements IPermissionsService {\n\n  public static DEFAULT_PERMISSIONS_PATH = '/loadPermissions';\n  public static PERMISSIONS_KEY = 'permission';\n\n  public path: string = '';\n\n  protected _user: string;\n  protected _urlBase: string;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  getDefaultServiceConfiguration(permissionsConfig: OntimizeEEPermissionsConfig): any {\n    const serviceName: string = permissionsConfig ? permissionsConfig.service : undefined;\n\n    const authService = this.authService;\n    const configuration = this._config.getServiceConfiguration();\n\n    let servConfig = {};\n    if (serviceName && configuration.hasOwnProperty(serviceName)) {\n      servConfig = configuration[serviceName];\n    }\n    servConfig[Codes.SESSION_KEY] = authService.getSessionInfo();\n    return servConfig;\n  }\n\n  configureService(permissionsConfig: OntimizeEEPermissionsConfig): void {\n    const config = this.getDefaultServiceConfiguration(permissionsConfig);\n    this._urlBase = config.urlBase ? config.urlBase : this._appConfig.apiEndpoint;\n    this._user = config.session ? config.session.user : '';\n    this.path = config.path ? config.path : OntimizeEEPermissionsService.DEFAULT_PERMISSIONS_PATH;\n  }\n\n  loadPermissions(): Observable<any> {\n    const url = this._urlBase + this.path;\n    const options = {\n      headers: this.buildHeaders()\n    };\n    const self = this;\n\n    const dataObservable: Observable<any> = new Observable(_innerObserver => {\n      self.httpClient.get(url, options).subscribe({\n        next: (res: any) => {\n          let permissions = {};\n          if ((res.code === Codes.ONTIMIZE_SUCCESSFUL_CODE) && Util.isDefined(res.data)) {\n            const response = res.data;\n            if ((response.length === 1) && Util.isObject(response[0])) {\n              const rawPermissions = response[0][OntimizeEEPermissionsService.PERMISSIONS_KEY];\n              try {\n                permissions = JSON.parse(rawPermissions);\n              } catch (e) {\n                if (Util.isDefined(rawPermissions)) {\n                  console.warn('[OntimizeEEPermissionsService: permissions parsing failed]');\n                }\n              }\n            }\n          }\n          _innerObserver.next(permissions);\n        },\n        error: (error: any) => {\n          _innerObserver.error(error);\n        },\n        complete: () => {\n          _innerObserver.complete();\n        }\n      });\n    });\n\n    return dataObservable.pipe(share());\n  }\n\n\n  protected buildHeaders(): HttpHeaders {\n    let headers = new HttpHeaders({\n      'Access-Control-Allow-Origin': '*',\n      'Content-Type': 'application/json;charset=UTF-8'\n    });\n    const sessionId = this.authService.getSessionInfo().id;\n    if (Util.isDefined(sessionId)) {\n      headers = headers.append('Authorization', 'Bearer ' + sessionId);\n    }\n    return headers;\n  }\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\nimport { IPermissionsService } from '../../interfaces/permissions-service.interface';\nimport { OntimizePermissionsConfig } from '../../types/ontimize-permissions-config.type';\nimport { Codes } from '../../util/codes';\nimport { Util } from '../../util/util';\nimport { OntimizeBasePermissionsService } from './ontimize-base-permissions-service.class';\n\n@Injectable()\nexport class OntimizePermissionsService extends OntimizeBasePermissionsService implements IPermissionsService {\n\n  public entity: string = '';\n  public keyColumn: string;\n  public valueColumn: string;\n\n  protected _user: string;\n  protected _urlBase: string;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  getDefaultServiceConfiguration(): any {\n    const servConfig = {};\n    servConfig[Codes.SESSION_KEY] = this.authService.getSessionInfo();\n    return servConfig;\n  }\n\n  configureService(permissionsConfig: OntimizePermissionsConfig): void {\n    const config = this.getDefaultServiceConfiguration();\n    this._urlBase = config.urlBase ? config.urlBase : this._appConfig.apiEndpoint;\n    this._user = config.session ? config.session.user : '';\n\n    if (Util.isDefined(permissionsConfig)) {\n      if (permissionsConfig.entity !== undefined) {\n        this.entity = permissionsConfig.entity;\n      }\n      if (permissionsConfig.keyColumn !== undefined) {\n        this.keyColumn = permissionsConfig.keyColumn;\n      }\n      if (permissionsConfig.valueColumn !== undefined) {\n        this.valueColumn = permissionsConfig.valueColumn;\n      }\n    }\n  }\n\n  loadPermissions(): Observable<any> {\n    const kv: object = {};\n    kv[this.keyColumn] = this._user;\n\n    const av = [this.valueColumn];\n\n    const url = this._urlBase + '/query';\n    const options = {\n      headers: this.buildHeaders()\n    };\n    const body = JSON.stringify({\n      user: this._user,\n      sessionid: this.authService.getSessionInfo().id,\n      type: 1,\n      entity: this.entity,\n      kv: kv,\n      av: av\n    });\n    const self = this;\n    const dataObservable: Observable<any> = new Observable(_innerObserver => {\n      self.httpClient.post(url, body, options).subscribe((res: any) => {\n        let permissions = {};\n        if ((res.code === Codes.ONTIMIZE_SUCCESSFUL_CODE) && Util.isDefined(res.data)) {\n          const response = res.data;\n          if ((response.length === 1) && Util.isObject(response[0])) {\n            const permissionsResp = response[0];\n            try {\n              permissions = permissionsResp.hasOwnProperty(self.valueColumn) ? JSON.parse(permissionsResp[self.valueColumn]) : {};\n            } catch (e) {\n              console.warn('[OntimizePermissionsService: permissions parsing failed]');\n            }\n          }\n        }\n        _innerObserver.next(permissions);\n      }, error => {\n        _innerObserver.error(error);\n      }, () => _innerObserver.complete());\n    });\n    return dataObservable.pipe(share());\n  }\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable, Subject } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\nimport { AppConfig } from '../../config/app-config';\nimport { OComponentPermissionsByRoute } from '../../types/o-component-permissions-by-route.type';\nimport { OComponentPermissions } from '../../types/o-component-permissions.type';\nimport { OFormPermissions } from '../../types/o-form-permissions.type';\nimport { OGridPermissions } from '../../types/o-grid-permissions.type';\nimport { OListPermissions } from '../../types/o-list-permissions.type';\nimport { OPermissionsDefinition } from '../../types/o-permissions-definition.type';\nimport { OPermissions } from '../../types/o-permissions.type';\nimport { ORoutePermissions } from '../../types/o-route-permissions.type';\nimport { OTableMenuPermissions } from '../../types/table/o-table-menu-permissions.type';\nimport { OTablePermissions } from '../../types/table/o-table-permissions.type';\nimport { Util } from '../../util/util';\nimport { OntimizeEEPermissionsService } from './ontimize-ee-permissions.service';\nimport { OntimizePermissionsService } from './ontimize-permissions.service';\nimport { OTreePermissions } from '../../types/o-tree-permissions.type';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PermissionsService {\n  public onChangePermissions: Subject<any> = new Subject<[]>();\n\n  protected permissionsService: any;\n  protected ontimizePermissionsConfig: any;\n\n  protected permissions: OPermissionsDefinition;\n\n  constructor(protected injector: Injector) {\n    const appConfig = this.injector.get(AppConfig).getConfiguration();\n\n    if (Util.isDefined(appConfig.permissionsConfiguration)) {\n      this.ontimizePermissionsConfig = appConfig.permissionsConfiguration;\n    }\n  }\n\n  protected configureService() {\n    const loadingService: any = OntimizePermissionsService;\n    try {\n      this.permissionsService = this.injector.get(loadingService);\n      if (Util.isPermissionsService(this.permissionsService)) {\n        if (this.permissionsService instanceof OntimizePermissionsService) {\n          (this.permissionsService as OntimizePermissionsService).configureService(this.ontimizePermissionsConfig);\n        } else if (this.permissionsService instanceof OntimizeEEPermissionsService) {\n          (this.permissionsService as OntimizeEEPermissionsService).configureService(this.ontimizePermissionsConfig);\n        }\n      }\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  restart() {\n    this.permissions = undefined;\n    this.onChangePermissions.next(this.permissions);\n  }\n\n  hasPermissions(): boolean {\n    return this.permissions !== undefined;\n  }\n\n  getUserPermissionsAsPromise(): Promise<boolean> {\n    const self = this;\n    return new Promise((resolve: (value: boolean) => void) => {\n      self.permissions = {};\n      if (Util.isDefined(self.ontimizePermissionsConfig)) {\n        self.configureService();\n        const subscription = self.queryPermissions().subscribe({\n          next: () => {\n            resolve(true);\n          },\n          error: (err) => {\n            console.error(err);\n            resolve(true);\n          },\n          complete: () => {\n            subscription.unsubscribe();\n          }\n        });\n      } else {\n        resolve(true);\n      }\n    });\n  }\n\n  public queryPermissions(): Observable<any> {\n    const self = this;\n    const dataObservable: Observable<any> = new Observable(innerObserver => {\n      self.permissionsService.loadPermissions().subscribe((res: any) => {\n        self.permissions = res;\n        self.onChangePermissions.next(self.permissions);\n        innerObserver.next(res);\n      }, (err: any) => {\n        console.error('[Permissions.queryPermissions]: error', err);\n        innerObserver.error(err);\n      }, () => {\n        innerObserver.complete();\n      });\n    });\n    return dataObservable.pipe(share());\n  }\n\n  protected getPermissionIdFromActRoute(actRoute: ActivatedRoute): string {\n    if (!Util.isDefined(actRoute)) {\n      return undefined;\n    }\n    let result: string;\n    let snapshot: ActivatedRouteSnapshot = actRoute.snapshot;\n    result = ((snapshot.data || {})['oPermission'] || {})['permissionId'];\n    while (Util.isDefined(snapshot.firstChild) && !Util.isDefined(result)) {\n      snapshot = snapshot.firstChild;\n      result = ((snapshot.data || {})['oPermission'] || {})['permissionId'];\n    }\n    return result;\n  }\n\n  protected getComponentPermissionsUsingRoute(attr: string, actRoute: ActivatedRoute): OComponentPermissions {\n    let result: OComponentPermissions;\n    const permissionId = this.getPermissionIdFromActRoute(actRoute);\n    if (Util.isDefined(permissionId)) {\n      const routePermissions: ORoutePermissions = (this.permissions.routes || []).find(route => route.permissionId === permissionId);\n      if (Util.isDefined(routePermissions)) {\n        result = (routePermissions.components || []).find(comp => comp.attr === attr);\n      }\n    }\n    return result;\n  }\n\n  public getOComponentPermissions(attr: string, actRoute: ActivatedRoute, selector: string): OComponentPermissionsByRoute {\n    if (!Util.isDefined(this.permissions)) {\n      return undefined;\n    }\n    let routePermissions: any;\n    const genericRoutePerm: OComponentPermissions = this.getComponentPermissionsUsingRoute(attr, actRoute);\n    if (genericRoutePerm && genericRoutePerm.selector === selector) {\n      routePermissions = genericRoutePerm;\n    }\n    let compPermissions: any;\n    const attrPermissions = (this.permissions.components || []).find(comp => comp.attr === attr);\n    if (attrPermissions && attrPermissions.selector === selector) {\n      compPermissions = attrPermissions;\n    }\n    const permissions: OComponentPermissionsByRoute = {\n      route: routePermissions,\n      component: compPermissions\n    };\n    return permissions;\n  }\n\n  getTablePermissions(attr: string, actRoute: ActivatedRoute): OTablePermissions {\n    if (!Util.isDefined(this.permissions)) {\n      return undefined;\n    }\n    const perm = this.getOComponentPermissions(attr, actRoute, 'o-table');\n    const routePerm: OTablePermissions = <OTablePermissions>perm.route;\n    const compPerm: OTablePermissions = <OTablePermissions>perm.component;\n    if (!Util.isDefined(routePerm) || !Util.isDefined(compPerm)) {\n      return compPerm || routePerm;\n    }\n    const permissions: OTablePermissions = {\n      selector: 'o-table',\n      attr: routePerm.attr,\n      menu: this.mergeOTableMenuPermissions(compPerm.menu, routePerm.menu),\n      columns: this.mergeOPermissionsArrays(compPerm.columns, routePerm.columns),\n      actions: this.mergeOPermissionsArrays(compPerm.actions, routePerm.actions),\n      contextMenu: this.mergeOPermissionsArrays(compPerm.contextMenu, routePerm.contextMenu)\n    };\n    return permissions;\n  }\n  private getServiceBasePermissions(attr: string, actRoute: ActivatedRoute, selector: string): OComponentPermissions {\n    if (!Util.isDefined(this.permissions)) {\n      return undefined;\n    }\n    const perm = this.getOComponentPermissions(attr, actRoute, selector);\n    const routePerm: OComponentPermissions = perm.route;\n    const compPerm: OComponentPermissions = perm.component;\n\n    if (!Util.isDefined(routePerm) || !Util.isDefined(compPerm)) {\n      return compPerm || routePerm;\n    }\n\n    const permissions: OComponentPermissions = {\n      selector: selector,\n      attr: routePerm.attr,\n      components: this.mergeOPermissionsArrays(compPerm.components, routePerm.components),\n      actions: this.mergeOPermissionsArrays(compPerm.actions, routePerm.actions)\n    };\n\n    return permissions;\n  }\n  getFormPermissions(attr: string, actRoute: ActivatedRoute): OFormPermissions {\n    return <OFormPermissions>this.getServiceBasePermissions(attr, actRoute, 'o-form');\n  }\n\n  getListPermissions(attr: string, actRoute: ActivatedRoute): OListPermissions {\n    return <OListPermissions>this.getServiceBasePermissions(attr, actRoute, 'o-list');\n  }\n\n  getGridPermissions(attr: string, actRoute: ActivatedRoute): OGridPermissions {\n    return <OGridPermissions>this.getServiceBasePermissions(attr, actRoute, 'o-grid');\n  }\n\n  getTreePermissions(attr: string, actRoute: ActivatedRoute): OTreePermissions {\n    return <OTreePermissions>this.getServiceBasePermissions(attr, actRoute, 'o-tree');\n  }\n\n  getMenuPermissions(attr: string): OPermissions {\n    let permissions;\n    if (!Util.isDefined(this.permissions)) {\n      return undefined;\n    }\n    const allMenu: OPermissions[] = this.permissions.menu || [];\n\n    permissions = allMenu.find(comp => comp.attr === attr);\n\n    return permissions;\n  }\n\n  getAllMenuPermissions(): OPermissions[] {\n\n    if (!Util.isDefined(this.permissions)) {\n      return undefined;\n    }\n    const permissions: OPermissions[] = this.permissions.menu || [];\n\n    return permissions;\n  }\n\n\n  getOButtonPermissions(attr: string, actRoute: ActivatedRoute): OPermissions {\n    let permissions;\n    if (!Util.isDefined(this.permissions)) {\n      return undefined;\n    }\n    permissions = this.getOComponentPermissions(attr, actRoute, 'o-button');\n\n    return permissions.component;\n  }\n\n  protected mergeOPermissionsArrays(permissionsA: OPermissions[], permissionsB: OPermissions[]): OPermissions[] {\n    if (!Util.isDefined(permissionsA) || !Util.isDefined(permissionsB)) {\n      return permissionsA || permissionsB;\n    }\n    const result = Object.assign([], permissionsA);\n    permissionsB.forEach((perm: OPermissions) => {\n      const found = result.find(r => r.attr === perm.attr);\n      if (found) {\n        found.visible = perm.visible;\n        found.enabled = perm.enabled;\n      } else {\n        result.push(perm);\n      }\n    });\n    return result;\n  }\n\n  protected mergeOTableMenuPermissions(permissionsA: OTableMenuPermissions, permissionsB: OTableMenuPermissions): OTableMenuPermissions {\n    if (!Util.isDefined(permissionsA) || !Util.isDefined(permissionsB)) {\n      return permissionsA || permissionsB;\n    }\n    const result = {\n      visible: permissionsB.visible,\n      enabled: permissionsB.enabled,\n      items: this.mergeOPermissionsArrays(permissionsA.items, permissionsB.items)\n    };\n    return result;\n  }\n\n  isPermissionIdRouteRestricted(permissionId: string): boolean {\n    const routeData = (this.permissions.routes || []).find(route => route.permissionId === permissionId);\n    return Util.isDefined(routeData) && routeData.enabled === false;\n  }\n}\n","import { EventEmitter, Injectable, Injector, Type } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\n\nimport { AppConfig } from '../config/app-config';\nimport { ILocalStorageComponent } from '../interfaces/local-storage-component.interface';\nimport { Config } from '../types/config.type';\nimport { SessionInfo } from '../types/session-info.type';\nimport { ObservableWrapper } from '../util/async';\nimport { Util } from '../util/util';\nimport { AuthService } from './auth.service';\nimport { ILocalStorageService } from '../interfaces/local-service.interface';\n\n@Injectable()\nexport class LocalStorageService implements ILocalStorageService {\n  static COMPONENTS_STORAGE_KEY: string = 'components';\n  static USERS_STORAGE_KEY: string = 'users';\n  static SESSION_STORAGE_KEY: string = 'session';\n\n  public onRouteChange: EventEmitter<any> = new EventEmitter();\n  public onSetLocalStorage: EventEmitter<any> = new EventEmitter();\n\n  private _config: Config;\n  private _router: Router;\n  private authService: AuthService;\n\n\n  constructor(protected injector: Injector) {\n    this._config = this.injector.get<AppConfig>(AppConfig as Type<AppConfig>).getConfiguration();\n    this._router = this.injector.get<Router>(Router as Type<Router>);\n    this.authService = this.injector.get<AuthService>(AuthService as Type<AuthService>);\n    const self = this;\n    this._router.events.subscribe(event => {\n      if (event instanceof NavigationStart) {\n        ObservableWrapper.callEmit(self.onRouteChange, {});\n      }\n    });\n  }\n\n  getComponentStorage(comp: ILocalStorageComponent, routeKey?: string): any {\n    const componentKey = comp.getComponentKey();\n    let completeKey = componentKey;\n    if (routeKey) {\n      completeKey += '_' + routeKey;\n    }\n    return this.getAppComponentData(completeKey) || {};\n  }\n\n  updateComponentStorage(comp: ILocalStorageComponent, routeKey?: string) {\n    const dataToStore = comp.getDataToStore();\n    const componentKey = comp.getComponentKey();\n    if (!Util.isDefined(componentKey)) {\n      return;\n    }\n    let completeKey = componentKey;\n    if (routeKey) {\n      completeKey += '_' + routeKey;\n    }\n    const storedObject = {};\n    for (const prop in dataToStore) {\n      if (dataToStore.hasOwnProperty(prop)) {\n        storedObject[prop] = dataToStore[prop];\n      }\n    }\n    this.updateAppComponentStorage(completeKey, storedObject);\n  }\n\n  private getAppComponentData(key: string): object {\n    let componentData;\n    const storedComponents: object = this.getSessionUserComponentsData() || {};\n    if (storedComponents[key]) {\n      if (Object.keys(storedComponents[key]).length !== 0) {\n        const decoded = atob((storedComponents[key]));\n        try {\n          componentData = JSON.parse(decoded);\n        } catch (e) {\n          componentData = undefined;\n        }\n      }\n\n\n    }\n    return componentData;\n  }\n\n  updateAppComponentStorage(componentKey: string, componentData: object) {\n    let componentDataB64;\n    try {\n      componentDataB64 = btoa(Util.stringify(componentData));\n    } catch (e) {\n      componentDataB64 = undefined;\n    }\n    this.storeComponentInSessionUser(componentKey, componentDataB64);\n  }\n\n  public getSessionUserComponentsData(): object {\n    let storedComponentsByUser = {};\n    const appData = this.getStoredData();\n    const session: SessionInfo = appData[LocalStorageService.SESSION_STORAGE_KEY] || {};\n    const users = appData[LocalStorageService.USERS_STORAGE_KEY] || {};\n    storedComponentsByUser = (users[session.user] || {})[LocalStorageService.COMPONENTS_STORAGE_KEY] || {};\n    return storedComponentsByUser;\n  }\n\n  public storeSessionUserComponentsData(componentsData: object) {\n    const appData = this.getStoredData();\n    const session: SessionInfo = appData[LocalStorageService.SESSION_STORAGE_KEY] || {};\n    if (!Util.isDefined(appData[LocalStorageService.USERS_STORAGE_KEY])) {\n      appData[LocalStorageService.USERS_STORAGE_KEY] = {};\n    }\n    const userData = appData[LocalStorageService.USERS_STORAGE_KEY][session.user] || {};\n    userData[LocalStorageService.COMPONENTS_STORAGE_KEY] = componentsData;\n    appData[LocalStorageService.USERS_STORAGE_KEY][session.user] = userData;\n    this.setLocalStorage(appData);\n  }\n\n  private storeComponentInSessionUser(componentKey, componentDataB64) {\n    const appData = this.getStoredData();\n    const session = appData[LocalStorageService.SESSION_STORAGE_KEY] || {}; // uuid -> session\n    if (!Util.isDefined(this.authService)) {\n      this.authService = this.injector.get<AuthService>(AuthService as Type<AuthService>);\n    }\n    const users = appData[LocalStorageService.USERS_STORAGE_KEY] || {}; // uuid -> users\n    const idUser = session.user || this.authService.getSessionInfo()?.user;\n    if (!Util.isDefined(idUser)) {\n      return;\n    }\n    const user = users[idUser] || {}; // uuid -> users-> user\n\n    let componentsData = {};\n    if (users[idUser]) {\n      componentsData = users[idUser][LocalStorageService.COMPONENTS_STORAGE_KEY] || {};\n    }\n    componentsData[componentKey] = componentDataB64 || {};\n\n    user[LocalStorageService.COMPONENTS_STORAGE_KEY] = componentsData;\n    users[idUser] = user;\n    appData[LocalStorageService.USERS_STORAGE_KEY] = users;\n\n    this.setLocalStorage(appData);\n  }\n\n  public getStoredData(): object {\n    let appData = {};\n    const appStoredData = localStorage.getItem(this._config.uuid);\n    if (appStoredData) {\n      try {\n        appData = JSON.parse(appStoredData);\n      } catch (e) {\n        appData = {};\n      }\n    }\n    return appData;\n  }\n\n  public setBackwardCompatibility() {\n    const appData = this.getStoredData();\n    const session = appData[LocalStorageService.SESSION_STORAGE_KEY];\n    if (!Util.isDefined(session) || !Util.isDefined(session.user)) {\n      return;\n    }\n    const componentsInfo = appData[LocalStorageService.COMPONENTS_STORAGE_KEY] || {};\n    let usersObject = {};\n    const existsUsersTag = Util.isDefined(appData[LocalStorageService.USERS_STORAGE_KEY]);\n    let createUserInfo = existsUsersTag;\n    if (existsUsersTag) {\n      usersObject = appData[LocalStorageService.USERS_STORAGE_KEY];\n      createUserInfo = !Util.isDefined(appData[LocalStorageService.USERS_STORAGE_KEY][session.user]);\n    }\n    if (createUserInfo) {\n      usersObject[session.user] = {};\n      usersObject[session.user][LocalStorageService.COMPONENTS_STORAGE_KEY] = componentsInfo;\n\n      appData[LocalStorageService.USERS_STORAGE_KEY] = usersObject;\n      try {\n        localStorage.setItem(this._config.uuid, Util.stringify(appData));\n      } catch (e) {\n        console.error(\"Cannot set new item in localStorage. Error: \" + e);\n      }\n    }\n  }\n\n  setLocalStorage(appData: any) {\n    this.onSetLocalStorage.emit();\n    try {\n      localStorage.setItem(this._config.uuid, Util.stringify(appData));\n    } catch (e) {\n      console.error(\"Cannot set new item in localStorage. Error: \" + e);\n    }\n  }\n\n  removeStoredData() {\n    localStorage.removeItem(this._config.uuid);\n  }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { HostListener, Injectable, Injector, Type, Directive } from '@angular/core';\nimport { Observable, Subscriber, Subscription, timer } from 'rxjs';\n\nimport { AppConfig } from '../config/app-config';\nimport { ServiceResponse } from '../interfaces/service-response.interface';\nimport { ORemoteConfiguration, ORemoteConfigurationColumns } from '../types/remote-configuration.type';\nimport { SessionInfo } from '../types/session-info.type';\nimport { Codes } from '../util/codes';\nimport { Util } from '../util/util';\nimport { AuthService } from './auth.service';\nimport { LocalStorageService } from './local-storage.service';\n\n@Directive()\n@Injectable({\n  providedIn: 'root'\n})\nexport class ORemoteConfigurationService {\n\n  public static DEFAULT_COLUMN_USER = 'USER_';\n  public static DEFAULT_COLUMN_APPID = 'APP_UUID';\n  public static DEFAULT_COLUMN_CONFIG = 'CONFIGURATION';\n  public static DEFAULT_STORAGE_TIMEOUT = 60000;\n\n  protected localStorageService: LocalStorageService;\n  protected authService: AuthService;\n  protected httpClient: HttpClient;\n  protected _appConfig: AppConfig;\n  protected _url: string;\n  protected _uuid: string;\n  protected _timeout: number;\n  protected timerSubscription: Subscription;\n  protected storeSubscription: Subscription;\n\n  protected _columns: ORemoteConfigurationColumns = {\n    user: ORemoteConfigurationService.DEFAULT_COLUMN_USER,\n    appId: ORemoteConfigurationService.DEFAULT_COLUMN_APPID,\n    configuration: ORemoteConfigurationService.DEFAULT_COLUMN_CONFIG\n  };\n\n  @HostListener('window:beforeunload', [])\n  beforeunloadHandler() {\n    this.finalize().subscribe(() => {\n      //\n    });\n  }\n\n  constructor(protected injector: Injector) {\n    this.httpClient = this.injector.get<HttpClient>(HttpClient as Type<HttpClient>);\n    this._appConfig = this.injector.get<AppConfig>(AppConfig as Type<AppConfig>);\n    this.authService = this.injector.get<AuthService>(AuthService as Type<AuthService>);\n    this.localStorageService = this.injector.get<LocalStorageService>(LocalStorageService as Type<LocalStorageService>);\n\n    this.httpClient = this.injector.get<HttpClient>(HttpClient as Type<HttpClient>);\n    this._uuid = this._appConfig.getConfiguration().uuid;\n\n    if (this._appConfig.useRemoteConfiguration()) {\n      this._url = this._appConfig.getRemoteConfigurationEndpoint();\n\n      const remoteConfig: ORemoteConfiguration = this._appConfig.getRemoteConfigurationConfig();\n      this._columns = (remoteConfig && remoteConfig.columns) ? Object.assign(this._columns, remoteConfig.columns) : this._columns;\n\n      this._timeout = (remoteConfig && remoteConfig.timeout) ? remoteConfig.timeout : ORemoteConfigurationService.DEFAULT_STORAGE_TIMEOUT;\n      const self = this;\n      this.localStorageService.onSetLocalStorage.subscribe(() => {\n        if (self.storeSubscription) {\n          self.storeSubscription.unsubscribe();\n        }\n      });\n    }\n  }\n\n  public getUserConfiguration(): Observable<ServiceResponse> {\n    const self = this;\n    const observable = new Observable((observer: Subscriber<ServiceResponse>) => {\n      const sessionInfo = self.authService.getSessionInfo();\n      if (!self.hasSession(sessionInfo)) {\n        observer.error();\n        return;\n      }\n      const url = self._url + '/search';\n      const body: any = {};\n      body[self._columns.user] = sessionInfo.user;\n      body[self._columns.appId] = self._uuid;\n      const options = {\n        headers: self.buildHeaders()\n      };\n      self.httpClient.post(url, body, options).subscribe((resp: ServiceResponse) => {\n        if (resp && resp.code === Codes.ONTIMIZE_SUCCESSFUL_CODE && Util.isDefined(resp.data)) {\n          observer.next(resp);\n        } else {\n          observer.error();\n        }\n      },\n        (error) => observer.error(error),\n        () => observer.complete());\n    });\n    return observable;\n  }\n\n  public storeUserConfiguration(): Observable<any> {\n    const self = this;\n    if (self.storeSubscription) {\n      self.storeSubscription.unsubscribe();\n    }\n    const observable = new Observable((observer: Subscriber<ServiceResponse>) => {\n      const sessionInfo = self.authService.getSessionInfo();\n      if (!self._appConfig.useRemoteConfiguration() || !self.hasSession(sessionInfo)) {\n        observer.next();\n        observer.complete();\n        return;\n      }\n      const url = self._url;\n      const body: any = { filter: {}, data: {} };\n      body.filter[self._columns.user] = sessionInfo.user;\n      body.filter[self._columns.appId] = self._uuid;\n      let userData = self.localStorageService.getSessionUserComponentsData() || '';\n      try {\n        userData = btoa(JSON.stringify(userData));\n      } catch (e) {\n        userData = '';\n      }\n      body.data[self._columns.configuration] = userData;\n      const options = {\n        headers: self.buildHeaders()\n      };\n      self.httpClient.put(url, body, options).subscribe((resp: ServiceResponse) => {\n        if (resp && resp.code === Codes.ONTIMIZE_SUCCESSFUL_CODE) {\n          observer.next(resp);\n        } else {\n          observer.error();\n        }\n      }, (error) => observer.error(error),\n        () => observer.complete());\n    });\n    return observable;\n  }\n\n  public initialize(): Observable<any> {\n    const self = this;\n    return new Observable(observer => {\n      if (self._appConfig.useRemoteConfiguration()) {\n        self.timerSubscription = timer(self._timeout, self._timeout).subscribe(() => {\n          self.storeSubscription = self.storeUserConfiguration().subscribe(() => {\n            //\n          });\n        });\n        self.getUserConfiguration().subscribe((resp: ServiceResponse) => {\n          let storedConf;\n          if (Util.isArray(resp.data)) {\n            storedConf = resp.data[0][self._columns.configuration];\n          } else {\n            storedConf = resp.data;\n          }\n          if (Util.isDefined(storedConf)) {\n            let componentsData;\n            try {\n              const decoded = atob(storedConf);\n              componentsData = JSON.parse(decoded);\n            } catch (e) {\n              componentsData = {};\n            }\n            self.localStorageService.storeSessionUserComponentsData(componentsData);\n          }\n          observer.next();\n        }, () => {\n          observer.next();\n        });\n      } else {\n        observer.next();\n      }\n    });\n  }\n\n  public finalize(): Observable<any> {\n    if (this.timerSubscription) {\n      this.timerSubscription.unsubscribe();\n    }\n    return this.storeUserConfiguration();\n  }\n\n  protected hasSession(sessionInfo: SessionInfo): boolean {\n    return Util.isDefined(sessionInfo) && Util.isDefined(sessionInfo.user) && Util.isDefined(sessionInfo.id);\n  }\n\n  protected buildHeaders(): HttpHeaders {\n    const sessionInfo = this.authService.getSessionInfo();\n    return new HttpHeaders({\n      'Access-Control-Allow-Origin': '*',\n      'Content-Type': 'application/json;charset=UTF-8',\n      Authorization: 'Bearer ' + sessionInfo.id\n    });\n  }\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { combineLatest, from, Observable } from 'rxjs';\n\nimport { AppConfig } from '../config/app-config';\nimport { IAuthService } from '../interfaces/auth-service.interface';\nimport { Config } from '../types/config.type';\nimport { SessionInfo } from '../types/session-info.type';\nimport { Codes } from '../util/codes';\nimport { AuthService } from './auth.service';\nimport { LoginStorageService } from './login-storage.service';\nimport { OntimizeService } from './ontimize/ontimize.service';\nimport { PermissionsService } from './permissions/permissions.service';\nimport { ORemoteConfigurationService } from './remote-config.service';\n\n@Injectable()\nexport class OntimizeAuthService extends AuthService {\n\n  private _user: string;\n  private _config: Config;\n  private router: Router;\n  private ontService: OntimizeService;\n  private loginStorageService: LoginStorageService;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this._config = this.injector.get(AppConfig).getConfiguration();\n    this.router = this.injector.get(Router);\n    this.loginStorageService = this.injector.get(LoginStorageService);\n    const sessionInfo = this.loginStorageService.getSessionInfo();\n    if (sessionInfo && sessionInfo.id && sessionInfo.user && sessionInfo.user.length > 0) {\n      this._user = sessionInfo.user;\n    }\n  }\n\n  public get user(): string {\n    return this._user;\n  }\n\n  public get localStorageKey(): string {\n    return this.loginStorageService._localStorageKey;\n  }\n\n  public configureOntimizeAuthService(config: object): void {\n    this.ontService = this.injector.get(OntimizeService);\n    const servConf = {};\n    servConf[Codes.SESSION_KEY] = this.loginStorageService.getSessionInfo();\n    this.ontService.configureService(servConf);\n  }\n\n  public retrieveAuthService(): Promise<IAuthService> {\n    return new Promise<IAuthService>(resolve => {\n      if (this.ontService !== undefined) {\n        resolve(this.ontService);\n      } else {\n        this.configureOntimizeAuthService(this._config);\n        resolve(this.ontService);\n      }\n    });\n  }\n\n  public login(user: string, password: string): Observable<any> {\n    this._user = user;\n    const dataObservable: Observable<any> = new Observable(observer => {\n      this.retrieveAuthService().then(service => {\n        service.startsession(user, password).subscribe(resp => {\n          this.onLoginSuccess(resp);\n          const permissionsService = this.injector.get(PermissionsService);\n          const remoteConfigService = this.injector.get(ORemoteConfigurationService);\n          const pendingArray = [];\n          pendingArray.push(permissionsService.getUserPermissionsAsPromise());\n          pendingArray.push(remoteConfigService.initialize());\n          combineLatest(pendingArray).subscribe(() => {\n            observer.next();\n            observer.complete();\n          });\n        }, error => {\n          this.onLoginError(error);\n          observer.error(error);\n        });\n      });\n    });\n    return from(dataObservable.toPromise());\n  }\n\n  public onLoginSuccess(sessionId: string | number): void {\n    // save user and sessionid into local storage\n    const session = {\n      user: this._user,\n      id: sessionId\n    };\n    this.loginStorageService.storeSessionInfo(session);\n    this.onLogin.next(session);\n  }\n\n  public onLoginError(error: any): void {\n    this.alert('ERROR', 'MESSAGES.ERROR_LOGIN');\n  }\n\n  public logout(): Observable<any> {\n    this.onLogout.next(null);\n    const sessionInfo = this.loginStorageService.getSessionInfo();\n    const dataObservable: Observable<any> = new Observable(innerObserver => {\n      this.retrieveAuthService().then(service => {\n        service.endsession(sessionInfo.user, sessionInfo.id).subscribe(resp => {\n          const remoteConfigService = this.injector.get(ORemoteConfigurationService);\n          remoteConfigService.finalize().subscribe(() => {\n            this.onLogoutSuccess(resp);\n            innerObserver.next();\n            innerObserver.complete();\n          });\n        }, error => {\n          this.onLogoutError(error);\n          innerObserver.error(error);\n        });\n      });\n    });\n    return from(dataObservable.toPromise());\n  }\n\n  public onLogoutSuccess(sessionId: number): void {\n    if (sessionId === 0) {\n      this.clearSessionData();\n      this.restartPermission();\n      this.redirectLogin(false);\n    }\n  }\n\n  public onLogoutError(error: any): void {\n    console.error('Error on logout');\n    this.clearSessionData();\n    this.restartPermission();\n    this.redirectLogin(false);\n  }\n\n  public clearSessionData(): void {\n    this.loginStorageService.sessionExpired();\n  }\n\n  public isLoggedIn(): boolean {\n    return this.loginStorageService.isLoggedIn();\n  }\n\n  public getSessionInfo(): SessionInfo {\n    return this.loginStorageService.getSessionInfo();\n  }\n\n  public storeSessionInfo(info: SessionInfo): void {\n    this.loginStorageService.storeSessionInfo(info);\n  }\n\n  redirectLogin(sessionExpired: boolean = false) {\n    const arg = {};\n    arg[Codes.SESSION_EXPIRED_KEY] = sessionExpired;\n    const extras = {};\n    extras[Codes.QUERY_PARAMS] = arg;\n    this.router.navigate([Codes.LOGIN_ROUTE], extras);\n  }\n\n  public restartPermission() {\n    const permissionsService = this.injector.get(PermissionsService);\n    permissionsService.restart();\n  }\n\n}\n","import { BasicExpression } from '../types/basic-expression.type';\nimport { Expression } from '../types/expression.type';\nimport { FilterExpression } from '../types/filter-expression.type';\n\n/**\n * Utility class for building basic and filter expressions.\n */\nexport class FilterExpressionUtils {\n\n  /**\n   * The basic expresion key.\n   */\n  static BASIC_EXPRESSION_KEY = '@basic_expression';\n\n  /**\n   * The filter expresion key.\n   */\n  static FILTER_EXPRESSION_KEY = '@filter_expression';\n\n  /**\n   * The `OR` operator.\n   */\n  static OP_OR: string = 'OR';\n\n  /**\n   * The `AND` operator.\n   */\n  static OP_AND: string = 'AND';\n\n  /**\n   * The `LIKE` operator\n   */\n  static OP_LIKE: string = 'LIKE';\n\n  /**\n   * The `NOT LIKE` operator.\n   */\n  static OP_NOT_LIKE: string = 'NOT LIKE';\n\n  /**\n   * The `EQUAL` operator.\n   */\n  static OP_EQUAL: string = '=';\n\n  /**\n   * The `NOT EQUAL` operator.\n   */\n  static OP_NOT_EQUAL: string = '<>';\n\n  /**\n   * The `IS NULL` operator.\n   */\n  static OP_NULL: string = 'IS NULL';\n\n  /**\n   * The `IS NOT NULL` operator.\n   */\n  static OP_NOT_NULL: string = 'IS NOT NULL';\n\n  /**\n   * The `LESS` operator.\n   */\n  static OP_LESS: string = '<';\n\n  /**\n   * The `LES EQUAL` operator.\n   */\n  static OP_LESS_EQUAL: string = '<=';\n\n  /**\n   * The `MORE` operator.\n   */\n  static OP_MORE: string = '>';\n\n  /**\n   * The `MORE EQUAL` operator.\n   */\n  static OP_MORE_EQUAL: string = '>=';\n\n  /**\n   * The `IN` operator.\n   */\n  static OP_IN: string = 'IN';\n\n  /**\n   * Evaluates if the the expression provided is an instance of `BasicExpression`..\n   * @param arg the expression to evaluate.\n   * @returns `true` if the provided expression is an instance of `BasicExpression`, `false` otherwise.\n   */\n  static instanceofBasicExpression(arg: any): boolean {\n    return arg.hasOwnProperty(FilterExpressionUtils.BASIC_EXPRESSION_KEY)\n      && FilterExpressionUtils.instanceofExpression(arg[FilterExpressionUtils.BASIC_EXPRESSION_KEY]);\n  }\n\n  /**\n   * Builds a `BasicExpression` instance from the filtering expression (`Expression`) provided.\n   * @param exp the filtering expression.\n   * @returns the basic expression.\n   */\n  static buildBasicExpression(exp: Expression): BasicExpression {\n    if (exp) {\n      if (!FilterExpressionUtils.instanceofExpression(exp)) {\n        console.error('The expression provided is not an instance of \\'Expression\\'');\n      }\n      const be: BasicExpression = {\n        '@basic_expression': exp\n      };\n      return be;\n    }\n    return undefined;\n  }\n\n  /**\n   * Evaluates if an expresion is instance of `FilterExpression`.\n   * @param exp the expression to evaluate.\n   * @returns `true` if the provided expression is an instance of `FilterExpression`, `false` otherwise.\n   */\n  static instanceofFilterExpression(exp: any): boolean {\n    return exp.hasOwnProperty(FilterExpressionUtils.FILTER_EXPRESSION_KEY)\n      && FilterExpressionUtils.instanceofExpression(exp[FilterExpressionUtils.FILTER_EXPRESSION_KEY]);\n  }\n\n  /**\n   * Builds an `FilterExpression` instance from the filtering expression (`Expression`) provided.\n   * @param exp the filtering expression.\n   * @returns the `FilterExpression`.\n   */\n  static buildFilterExpression(exp: Expression): FilterExpression {\n    if (exp) {\n      if (!FilterExpressionUtils.instanceofExpression(exp)) {\n        console.error('The expression provided is not an instance of \\'Expression\\'');\n      }\n      const be: FilterExpression = {\n        '@filter_expression': exp\n      };\n      return be;\n    }\n    return undefined;\n  }\n\n  /**\n   * Evaluates if an expresion is instance of `Expression`.\n   * @param exp the expression to evaluate.\n   * @returns `true` if the provided expression is an instance of `Expression`, `false` otherwise.\n   */\n  static instanceofExpression(exp: any): boolean {\n    return exp.hasOwnProperty('lop') && exp.hasOwnProperty('op');\n  }\n\n  /**\n   * Builds a complex `Expression` instance joining two expressions with the provided operator.\n   * @param expr1 the first `Expression` to join.\n   * @param expr2 the second `Expression` to join.\n   * @param op the joining operator.\n   * @returns the complex `Expression`.\n   */\n  static buildComplexExpression(expr1: Expression, expr2: Expression, op: string): Expression {\n    if (expr1.lop === undefined && expr1.op === undefined) {\n      return expr2;\n    }\n    if (expr2.lop === undefined && expr2.op === undefined) {\n      return expr1;\n    }\n    const expr: Expression = {\n      lop: expr1,\n      op: op,\n      rop: expr2\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key EQUAL to the provided value.\n   * @param key the key.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildExpressionEquals(key: string, value: any): Expression {\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_EQUAL,\n      rop: value\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key with a NOT NULL value.\n   * @param key the key.\n   * @returns the `Expression`.\n   */\n  static buildExpressionIsNotNull(key: string): Expression {\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_NOT_NULL\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key with a NULL value.\n   * @param key the key.\n   * @returns the `Expression`.\n   */\n  static buildExpressionIsNull(key: string): Expression {\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_NULL\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key LESS than the provided value.\n   * @param key the key.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildExpressionLess(key: string, value: any): Expression {\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_LESS,\n      rop: value\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key LESS OR EQUAL to the provided value.\n   * @param key the key.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildExpressionLessEqual(key: string, value: any): Expression {\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_LESS_EQUAL,\n      rop: value\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key MORE than the provided value.\n   * @param key the key.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildExpressionMore(key: string, value: any): Expression {\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_MORE,\n      rop: value\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key MORE OR EQUAL to the provided value.\n   * @param key the key.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildExpressionMoreEqual(key: string, value: any): Expression {\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_MORE_EQUAL,\n      rop: value\n    };\n    return expr;\n  }\n\n  static buildExpressionIn(key: string, values: any[]): Expression {\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_IN,\n      rop: values\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key NOT LIKE the provided value.\n   * @param key the key.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildExpressionNotLike(key: string, value: string): Expression {\n    if (value !== undefined) {\n      value = value.replace(new RegExp('\\\\*', 'g'), '%');\n      if (value.indexOf('%') === -1) {\n        value = '%' + value + '%';\n      }\n    }\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_NOT_LIKE,\n      rop: value\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key LIKE the provided value.\n   * @param key the key.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildExpressionLike(key: string, value: string): Expression {\n    if (value !== undefined) {\n      value = value.replace(new RegExp('\\\\*', 'g'), '%');\n      if (value.indexOf('%') === -1) {\n        value = '%' + value + '%';\n      }\n    }\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_LIKE,\n      rop: value\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key ENDS LIKE the provided value.\n   * @param key the key.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildExpressionLikeEnd(key: string, value: string): Expression {\n    if (value !== undefined) {\n      value = '%' + value;\n    }\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_LIKE,\n      rop: value\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key STARTS LIKE the provided value.\n   * @param key the key.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildExpressionLikeStart(key: string, value: string): Expression {\n    if (value !== undefined) {\n      value = value + '%';\n    }\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_LIKE,\n      rop: value\n    };\n    return expr;\n  }\n\n  /**\n   * Builds an `Expression` instance for filtering the provided key NOT EQUAL the provided value.\n   * @param key the key.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildExpressionNotEquals(key: string, value: any): Expression {\n    const expr: Expression = {\n      lop: key,\n      op: FilterExpressionUtils.OP_NOT_EQUAL,\n      rop: value\n    };\n    return expr;\n  }\n\n  /**\n   * Builds a complex `Expression` for filtering the provided key with two conditions:\n   * * The first filter the provided key with a NULL value.\n   * * The second filter the provided key EQUAL to the provided value.\n   *\n   * Both expressions are joined using the provided operator.\n   * @param key the key.\n   * @param value the value.\n   * @param op the operator.\n   * @returns the `Expression`.\n   */\n  static buildExpressionNullAndValue(key: string, value: any, op: string): Expression {\n    const isNull: Expression = FilterExpressionUtils.buildExpressionIsNull(key);\n    const equals: Expression = FilterExpressionUtils.buildExpressionEquals(key, value);\n    const expr: Expression = {\n      lop: isNull,\n      op: op,\n      rop: equals\n    };\n    return expr;\n  }\n\n  /**\n   * Builds a complex `Expression` for filtering the provided keys LIKE the value provided.\n   * @param keys the keys.\n   * @param value the value.\n   * @returns the `Expression`.\n   */\n  static buildArrayExpressionLike(keys: any[], value: any): Expression {\n    let result: Expression = {\n      lop: undefined,\n      op: undefined\n    };\n    keys.forEach((col) => {\n      result = FilterExpressionUtils.stackExpressionLikeOR(col, value, result);\n    });\n    return result;\n  }\n\n  /**\n   * Builds an `Expression` instance from the provided object.\n   * @param obj the object.\n   * @returns the `Expression`.\n   */\n  static buildExpressionFromObject(obj: any): Expression {\n    let result: Expression = {\n      lop: undefined,\n      op: undefined\n    };\n    Object.keys(obj || {}).forEach((key) => {\n      result = FilterExpressionUtils.stackExpressionEqualsAND(key, obj[key], result);\n    });\n    return result;\n  }\n\n  private static stackExpressionLikeOR(key: string, value: any, expr: Expression): Expression {\n    const likeExpr = FilterExpressionUtils.buildExpressionLike(key, value);\n    if (expr.lop === undefined && expr.op === undefined) {\n      return likeExpr;\n    } else {\n      expr = FilterExpressionUtils.buildComplexExpression(expr, likeExpr, FilterExpressionUtils.OP_OR);\n    }\n    return expr;\n  }\n\n  private static stackExpressionEqualsAND(key: string, value: any, expr: Expression): Expression {\n    const equalsExpr = FilterExpressionUtils.buildExpressionEquals(key, value);\n    if (expr.lop === undefined && expr.op === undefined) {\n      return equalsExpr;\n    } else {\n      expr = FilterExpressionUtils.buildComplexExpression(expr, equalsExpr, FilterExpressionUtils.OP_AND);\n    }\n    return expr;\n  }\n\n}\n","import { Injectable, Injector } from \"@angular/core\";\nimport { OTableBase } from \"../components/table/o-table-base.class\";\nimport { FilterExpressionUtils } from \"../util/filter-expression.utils\";\nimport { Util } from \"../util/util\";\n\n\n@Injectable()\nexport class OntimizeExportDataBaseProviderService {\n\n  table: OTableBase;\n  columns: any;\n  colsNotIncluded: string[]\n  columnNames: any;\n  sqlTypes: any;\n  entity: string;\n  service: string;\n  filter: any;\n\n  constructor(protected injector: Injector) { }\n\n\n  initializeProvider(table: OTableBase) {\n    this.table = table;\n    // Table columns\n    const tableOptions = this.table.oTableOptions;\n    this.colsNotIncluded = this.table.getColumnsNotIncluded()\n    this.columns = tableOptions.visibleColumns.filter(c => this.colsNotIncluded.indexOf(c) === -1);\n\n    // Table column names\n    const tableColumnNames = tableOptions.visibleColumns.filter(c => this.colsNotIncluded.indexOf(c) === -1);\n    this.columnNames = this.table.getColumnNames(tableColumnNames);\n\n    // Table column sqlTypes\n    this.sqlTypes = this.table.getSqlTypes();\n\n    // Table entity\n    this.entity = this.table.entity;\n\n    // Table service\n    this.service = this.table.service;\n\n    // Table filter\n    this.filter = this.getFilterWithBasicExpression();\n  }\n\n  protected getFilterWithBasicExpression(): any {\n    let filter = {};\n    let parentKeysfilter = this.table.getComponentFilter();\n\n    filter = this.applyParentItemExpression(filter);\n    filter = this.applyColumnFilters(filter);\n\n    filter = Object.assign(filter || {}, parentKeysfilter);\n\n    if (!this.table.pageable) {\n      filter = this.applyQuickAndBuilderFilters(filter);\n    }\n\n    return filter;\n  }\n\n  private applyParentItemExpression(filter: any): any {\n    if (Object.keys(filter).length > 0) {\n      const parentItemExpr = FilterExpressionUtils.buildExpressionFromObject(filter);\n      filter = {};\n      filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] = parentItemExpr;\n    }\n    return filter;\n  }\n\n  private applyColumnFilters(filter: any): any {\n    const beColFilter = this.table.getColumnFiltersExpression();\n\n    if (beColFilter) {\n      const currentFilterExpr = filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY];\n\n      if (!Util.isDefined(currentFilterExpr)) {\n        filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] = beColFilter;\n      } else {\n        filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] =\n          FilterExpressionUtils.buildComplexExpression(currentFilterExpr, beColFilter, FilterExpressionUtils.OP_AND);\n      }\n    }\n\n    return filter;\n  }\n\n  private applyQuickAndBuilderFilters(filter: any): any {\n    const quickFilterExpr = Util.isDefined(this.table.oTableQuickFilterComponent)\n      ? this.table.oTableQuickFilterComponent.filterExpression\n      : undefined;\n\n    const filterBuilderExpr = Util.isDefined(this.table.filterBuilder)\n      ? this.table.filterBuilder.getExpression()\n      : undefined;\n\n    let complexExpr = quickFilterExpr || filterBuilderExpr;\n    if (quickFilterExpr && filterBuilderExpr) {\n      complexExpr = FilterExpressionUtils.buildComplexExpression(quickFilterExpr, filterBuilderExpr, FilterExpressionUtils.OP_AND);\n    }\n\n    if (complexExpr) {\n      const currentBasicExpr = filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY];\n\n      if (!Util.isDefined(currentBasicExpr)) {\n        filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY] = complexExpr;\n      } else {\n        filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY] =\n          FilterExpressionUtils.buildComplexExpression(currentBasicExpr, complexExpr, FilterExpressionUtils.OP_AND);\n      }\n    }\n\n    return filter;\n  }\n\n}","import { Injectable, Injector } from \"@angular/core\";\nimport type { IExportDataProvider } from \"../interfaces/export-data-provider.interface\";\nimport { Util } from \"../util/util\";\nimport { OntimizeExportDataBaseProviderService } from \"./ontimize-export-data-base-provider.service\";\n\n@Injectable()\nexport class OntimizeExportDataProviderService3X extends OntimizeExportDataBaseProviderService implements IExportDataProvider {\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  getExportConfiguration(param: any): any {\n\n    // Table data/filters/queryParam\n    let currentPage = 0;\n    if (this.table.pageable && Util.isDefined(this.table.currentPage)) {\n      currentPage = this.table.currentPage;\n    }\n    let exportData: any = {\n      type: param.format,\n      queryParam: {\n        columns: param.columns,\n        sqltypes: this.sqlTypes,\n        offset: this.table.pageable ? currentPage * this.table.queryRows : -1,\n        pageSize: this.table.queryRows,\n        filter: this.filter,\n        orderBy: this.table.sortColArray\n\n      },\n      advQuery: (this.table.pageable ? true : false),\n      path: param.path,\n      dao: this.entity\n    };\n\n    if (param.format === 'xlsx' || 'pdf') {\n      exportData.columns = this.parseColumns(param.columns);\n      exportData.columnTitles = this.columnNames;\n      exportData.styles = {};\n      exportData.rowStyles = {};\n      exportData.columnStyles = {};\n      exportData.columnTypes = {};\n      exportData.cellStyles = {};\n    }\n    if (param.format === 'pdf') {\n      exportData.landscape = param.landscape;\n    }\n\n    return exportData;\n\n\n  }\n\n  private parseColumns(columns: any[]): { [key: string]: string } {\n    let obj = {};\n    columns.forEach((column: string) => {\n      obj[column] = {};\n    });\n    return obj\n  }\n\n\n\n}","import { Injectable, Injector } from \"@angular/core\";\nimport { IExportDataProvider } from \"../interfaces/export-data-provider.interface\";\nimport { OTableExportData } from \"../interfaces/o-table-export-data.interface\";\nimport { OntimizeExportDataBaseProviderService } from \"./ontimize-export-data-base-provider.service\";\n\n@Injectable()\nexport class OntimizeExportDataProviderService extends OntimizeExportDataBaseProviderService implements IExportDataProvider {\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  getExportConfiguration(): OTableExportData {\n\n    // Table data/filters\n    let data = [];\n\n    /*\n     PENDING THAT THIS FUNCTIONALITY IS COMPATIBLE WITH ONTIMIZE BACK\n     switch (this.table.exportMode) {\n       case Codes.EXPORT_MODE_ALL:\n         filter = this.table.getComponentFilter();\n         break;\n       case Codes.EXPORT_MODE_LOCAL:\n         data = this.table.getAllRenderedValues();\n         this.colsNotIncluded.forEach(attr => data.forEach(row => delete row[attr]));\n         break;\n       default:\n         data = this.table.getRenderedValue();\n         this.colsNotIncluded.forEach(attr => data.forEach(row => delete row[attr]));\n         break;\n     }\n     */\n\n\n    const exportData: OTableExportData = {\n      data: data,\n      columns: this.columns,\n      columnNames: this.columnNames,\n      sqlTypes: this.sqlTypes,\n      filter: this.filter\n    }\n    return exportData;\n  }\n}","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\nimport { IDataService } from '../../interfaces/data-service.interface';\nimport { ServiceResponse } from '../../interfaces/service-response.interface';\nimport { Util } from '../../util/util';\nimport { OntimizeBaseService } from './ontimize-base-service.class';\n\n@Injectable()\nexport class OntimizeEEService extends OntimizeBaseService implements IDataService {\n\n  public path: string = '';\n\n  public configureService(config: any): void {\n    super.configureService(config);\n    this._startSessionPath = this._appConfig.startSessionPath ? this._appConfig.startSessionPath : '/users/login';\n    this.path = config.path;\n    // TODO init other params\n  }\n\n  public startsession(user: string, password: string): Observable<string | number> {\n    const url = this.urlBase + this._startSessionPath;\n    const options: any = {\n      headers: new HttpHeaders({\n        Authorization: 'Basic ' + btoa(user + ':' + password)\n      }),\n      observe: 'response'\n    };\n    const dataObservable: Observable<string | number> = new Observable(observer => {\n      this.httpClient.post(url, null, options).subscribe((resp: any) => {\n        if (Util.isDefined(resp) && Util.isDefined(resp.headers) && Util.isDefined(resp.headers.get('X-Auth-Token'))) {\n          observer.next(resp.headers.get('X-Auth-Token'));\n        } else {\n          // Invalid sessionId ...\n          observer.error('Invalid user or password');\n        }\n      }, error => observer.error(error));\n    });\n    return dataObservable.pipe(share());\n  }\n\n  public endsession(user: string, sessionId: any): Observable<number> {\n    const dataObservable: Observable<any> = new Observable(observer => {\n      setTimeout(() => {\n        observer.next(0);\n      }, 0);\n    });\n    return dataObservable.pipe(share());\n  }\n\n  public hassession(user: string, sessionId: any): Observable<boolean> {\n    const dataObservable: Observable<any> = new Observable(observer => {\n      observer.next(true);\n    });\n    return dataObservable.pipe(share());\n  }\n\n  public query(kv?: object, av?: Array<string>, entity?: string, sqltypes?: object): Observable<ServiceResponse> {\n    // TODO improve this -> merge between global conf and specific params of method calling\n    kv = (Util.isDefined(kv)) ? kv : this.kv;\n    av = (Util.isDefined(av)) ? av : this.av;\n    sqltypes = (Util.isDefined(sqltypes)) ? sqltypes : this.sqltypes;\n\n    const url = `${this.urlBase}${this.path}/${entity}/search`;\n\n    const body = JSON.stringify({\n      filter: kv,\n      columns: av,\n      sqltypes: sqltypes\n    });\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body,\n      successCallback: this.parseSuccessfulQueryResponse,\n      errorCallBack: this.parseUnsuccessfulQueryResponse\n    });\n  }\n\n  public advancedQuery(kv?: object, av?: Array<string>, entity?: string, sqltypes?: object,\n    offset?: number, pagesize?: number, orderby?: Array<object>): Observable<ServiceResponse> {\n\n    // TODO improve this -> merge between global conf and specific params of method calling\n    kv = (Util.isDefined(kv)) ? kv : this.kv;\n    av = (Util.isDefined(av)) ? av : this.av;\n    sqltypes = (Util.isDefined(sqltypes)) ? sqltypes : this.sqltypes;\n    orderby = (Util.isDefined(orderby)) ? orderby : this.orderby;\n    offset = (Util.isDefined(offset)) ? offset : this.offset;\n    pagesize = (Util.isDefined(pagesize)) ? pagesize : this.pagesize;\n\n    const url = `${this.urlBase}${this.path}/${entity}/advancedsearch`;\n\n    const body = JSON.stringify({\n      filter: kv,\n      columns: av,\n      sqltypes: sqltypes,\n      offset: offset,\n      pageSize: pagesize,\n      orderBy: orderby\n    });\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body,\n      successCallback: this.parseSuccessfulAdvancedQueryResponse,\n      errorCallBack: this.parseUnsuccessfulAdvancedQueryResponse\n    });\n  }\n\n  public insert(av: object = {}, entity: string, sqltypes?: object): Observable<ServiceResponse> {\n\n    const url = `${this.urlBase}${this.path}/${entity}`;\n\n    const body = JSON.stringify({\n      data: av,\n      sqltypes: sqltypes\n    });\n\n    return this.doRequest({\n      method: 'POST',\n      url: url,\n      body: body,\n      successCallback: this.parseSuccessfulInsertResponse,\n      errorCallBack: this.parseUnsuccessfulInsertResponse\n    });\n  }\n\n  public update(kv: object = {}, av: object = {}, entity?: string, sqltypes?: object): Observable<ServiceResponse> {\n\n    const url = `${this.urlBase}${this.path}/${entity}`;\n\n    const body = JSON.stringify({\n      filter: kv,\n      data: av,\n      sqltypes: sqltypes\n    });\n\n    return this.doRequest({\n      method: 'PUT',\n      url: url,\n      body: body,\n      successCallback: this.parseSuccessfulUpdateResponse,\n      errorCallBack: this.parseUnsuccessfulUpdateResponse\n    });\n  }\n\n  public delete(kv: object = {}, entity?: string, sqltypes?: object): Observable<ServiceResponse> {\n\n    const url = `${this.urlBase}${this.path}/${entity}`;\n\n    const body = JSON.stringify({\n      filter: kv,\n      sqltypes: sqltypes\n    });\n\n    return this.doRequest({\n      method: 'DELETE',\n      url: url,\n      body: body,\n      successCallback: this.parseSuccessfulDeleteResponse,\n      errorCallBack: this.parseUnsuccessfulDeleteResponse\n    });\n  }\n\n  protected buildHeaders(): HttpHeaders {\n    let headers = super.buildHeaders();\n    const sessionId = this.authService.getSessionInfo().id;\n    if (Util.isDefined(sessionId)) {\n      headers = headers.append('Authorization', 'Bearer ' + sessionId);\n    }\n    return headers;\n  }\n\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\nimport { AppConfig } from '../../config/app-config';\nimport { IExportDataProvider } from '../../interfaces/export-data-provider.interface';\nimport { IExportService } from '../../interfaces/export-service.interface';\nimport { OntimizeExportDataProviderService } from '../ontimize-export-data-provider.service';\nimport { OntimizeBaseService } from './ontimize-base-service.class';\nimport { Util } from '../../util/util';\nimport { HttpRequestOptions } from '../../types/http-request-options.type';\n\n@Injectable()\nexport class OntimizeExportService3X extends OntimizeBaseService implements IExportService {\n\n  public exportPath: string;\n  public servicePath: string;\n  protected exportDataProvider: IExportDataProvider;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.exportPath = this.injector.get<AppConfig>(AppConfig).getExportPath();\n    this.exportDataProvider = this.injector.get<OntimizeExportDataProviderService>(OntimizeExportDataProviderService);\n  }\n\n  public configureService(config: any): void {\n    super.configureService(config);\n    this.servicePath = config.path;\n  }\n\n  protected buildHeaders(): HttpHeaders {\n    let headers = new HttpHeaders({ 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': 'X-Requested-With,content-type' });\n    const sessionId = this.authService.getSessionInfo().id;\n    if (Util.isDefined(sessionId)) {\n      headers = headers.append('Authorization', 'Bearer ' + sessionId);\n    }\n    return headers;\n  }\n\n  public exportData(format: string, columns?: string[], landscape?: boolean, filename?: string): Observable<any> {\n\n    const url = `${this.urlBase}${this.exportPath}/${format}`;\n\n    const options: HttpRequestOptions = {\n      headers: this.buildHeaders().append('Content-Type', 'application/json;charset=UTF-8'),\n      observe: 'response',\n      responseType: 'blob'\n    };\n\n    let paramExport = {\n      format: format,\n      path: this.servicePath,\n      columns: columns,\n      landscape: landscape\n    };\n\n    let exportData: any = this.exportDataProvider.getExportConfiguration(paramExport);\n\n    const body = JSON.stringify(exportData);\n\n    const dataObservable = new Observable(observer => {\n      this.httpClient.post(url, body, options).subscribe(\n        (resp: any) => {\n          const fileData = resp.body;\n          const contentDisposition = resp.headers.get('content-disposition');\n          let fileName = filename && filename.trim() !== '' ? filename + '.' + format : 'file.' + format;\n\n          const fileNameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n          const matches = fileNameRegex.exec(contentDisposition);\n          if (!filename && matches?.[1]) {\n            fileName = matches[1].replace(/['\"]/g, '');\n          }\n\n          const fileURL = URL.createObjectURL(fileData);\n          const a = document.createElement('a');\n          document.body.appendChild(a);\n          a.href = fileURL;\n          a.download = fileName;\n          a.click();\n          document.body.removeChild(a);\n          observer.next(fileData);\n          URL.revokeObjectURL(fileURL);\n        },\n        error => observer.error(error),\n        () => observer.complete()\n      );\n    });\n\n    return dataObservable.pipe(share());\n  }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Observable, Subscriber } from 'rxjs';\nimport { map, share } from 'rxjs/operators';\nimport { IExportDataProvider } from '../../interfaces/export-data-provider.interface';\n\nimport { IExportService } from '../../interfaces/export-service.interface';\nimport { ServiceResponse } from '../../interfaces/service-response.interface';\nimport { Util } from '../../util/util';\nimport { OntimizeExportDataProviderService } from '../ontimize-export-data-provider.service';\nimport { OntimizeBaseService } from './ontimize-base-service.class';\nimport { HttpRequestOptions } from '../../types/http-request-options.type';\n\n@Injectable()\nexport class OntimizeExportService extends OntimizeBaseService implements IExportService {\n\n  public exportPath: string;\n  public downloadPath: string;\n  public servicePath: string;\n  public exportDataProvider: IExportDataProvider;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.exportDataProvider = this.injector.get<OntimizeExportDataProviderService>(OntimizeExportDataProviderService);\n  }\n\n  public configureService(config: any): void {\n    super.configureService(config);\n    if (config.exportPath) {\n      this.exportPath = config.exportPath;\n    }\n    if (config.downloadPath) {\n      this.downloadPath = config.downloadPath;\n    }\n    if (config.path) {\n      this.servicePath = config.path;\n    }\n  }\n\n  protected buildHeaders(): HttpHeaders {\n    let headers = new HttpHeaders({ 'Access-Control-Allow-Origin': '*' });\n    const sessionId = this.authService.getSessionInfo().id;\n    if (Util.isDefined(sessionId)) {\n      headers = headers.append('Authorization', 'Bearer ' + sessionId);\n    }\n    return headers;\n  }\n\n  public exportData(format: string): Observable<any> {\n    const entity = this.exportDataProvider.entity;\n    const url = `${this.urlBase}${this.exportPath ? this.exportPath : ''}${this.servicePath}/${entity}/${format}`;\n\n    const options: HttpRequestOptions = {\n      headers: this.buildHeaders().append('Content-Type', 'application/json;charset=UTF-8'),\n      observe: 'response'\n    };\n\n    const exportData = this.exportDataProvider.getExportConfiguration();\n    const body = JSON.stringify(exportData);\n    // TODO: try multipart\n    const dataObservable: Observable<ServiceResponse> = new Observable((observer: Subscriber<ServiceResponse>) => {\n      this.httpClient.post<ServiceResponse>(url, body, options).pipe(\n        map((resData: any) => this.adapter.adapt(resData))\n      ).subscribe(resp => {\n        this.parseSuccessfulExportDataResponse(format, resp, observer);\n      }, error => {\n        this.parseUnsuccessfulResponse(error, observer);\n      });\n    });\n    return dataObservable.pipe(share());\n  }\n\n  protected parseSuccessfulExportDataResponse(format: string, resp: ServiceResponse, subscriber: Subscriber<ServiceResponse>) {\n    if (resp && resp.isUnauthorized()) {\n      this.clientErrorFallback(401);\n    } else if (resp && resp.isFailed()) {\n      subscriber.error(resp.message);\n    } else if (resp && resp.isSuccessful()) {\n      this.downloadFile(resp.data[0][format + 'Id'], format)\n        .subscribe(\n          r => subscriber.next(r),\n          e => subscriber.error(e),\n          () => subscriber.complete()\n        );\n    } else {\n      // Unknow state -> error\n      subscriber.error('Service unavailable');\n    }\n\n  }\n\n  public downloadFile(fileId: string, fileExtension: string): Observable<any> {\n    const url = `${this.urlBase}${this.downloadPath ? this.downloadPath : ''}${this.servicePath}/${fileExtension}/${fileId}`;\n\n    const options: any = {\n      headers: this.buildHeaders(),\n      observe: 'response',\n      responseType: 'blob'\n    };\n\n    const dataObservable = new Observable(observer => {\n      // .map((res: any) => new Blob([res.blob()], { type: responseType }))\n      this.httpClient.get(url, options).subscribe(\n        (resp: any) => {\n          const fileData = resp.body;\n          const fileURL = URL.createObjectURL(fileData);\n          const a = document.createElement('a');\n          document.body.appendChild(a);\n          a.href = fileURL;\n          a.download = fileId + '.' + fileExtension;\n          a.click();\n          document.body.removeChild(a);\n          observer.next(fileData);\n          URL.revokeObjectURL(fileURL);\n        }, error => observer.error(error),\n        () => observer.complete()\n      );\n    });\n    return dataObservable.pipe(share());\n  }\n}","import { HttpEventType, HttpHeaders, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\nimport { IFileService } from '../../interfaces/file-service.interface';\nimport { Util } from '../../util/util';\nimport { OntimizeBaseService } from './ontimize-base-service.class';\n\n@Injectable()\nexport class OntimizeFileService extends OntimizeBaseService implements IFileService {\n\n  public path: string = '';\n\n  public configureService(config: any): void {\n    super.configureService(config);\n    this.path = config.path;\n  }\n\n  /**\n   * Sends file/s upload request/s\n   *\n   * @param files the array of files to upload\n   * @param entity the entity\n   */\n  public upload(files: any[], entity: string, data?: object): Observable<any> {\n\n    const dataObservable = new Observable(observer => {\n\n      const url = `${this.urlBase}${this.path}/${entity}`;\n\n      const toUpload: any = new FormData();\n      files.forEach(item => {\n        item.prepareToUpload();\n        item.isUploading = true;\n        toUpload.append('name', item.name);\n        toUpload.append('file', item.file);\n      });\n\n      if (data) {\n        toUpload.append('data', JSON.stringify(data));\n      }\n\n      const request = new HttpRequest('POST', url, toUpload, {\n        headers: this.buildHeaders(),\n        reportProgress: true\n      });\n\n      this.httpClient.request(request).subscribe(resp => {\n        if (HttpEventType.UploadProgress === resp.type) {\n          // Upload progress event received\n          const progressData = {\n            loaded: resp.loaded,\n            total: resp.total\n          };\n          observer.next(progressData);\n        } else if (HttpEventType.Response === resp.type) {\n          // Full response received\n          if (resp.body) {\n            if (resp.body['code'] === 3) {\n              this.authService.logout();\n            } else if (resp.body['code'] === 1) {\n              observer.error(resp.body['message']);\n            } else if (resp.body['code'] === 0) {\n              // RESPONSE\n              observer.next(resp.body);\n            } else {\n              // Unknow state -> error\n              observer.error('Service unavailable');\n            }\n          } else {\n            observer.next(resp.body);\n          }\n        }\n      }, error => {\n        console.error(error);\n        if (error.status === 401) {\n          this.authService.logout();\n        } else {\n          observer.error(error);\n        }\n      },\n        () => observer.complete());\n    });\n    return dataObservable.pipe(share());\n  }\n\n  protected buildHeaders(): HttpHeaders {\n    let headers = new HttpHeaders({ 'Access-Control-Allow-Origin': '*' });\n    const sessionId = this.authService.getSessionInfo().id;\n    if (Util.isDefined(sessionId)) {\n      headers = headers.append('Authorization', 'Bearer ' + sessionId);\n    }\n    return headers;\n  }\n\n}\n","\nexport abstract class AbstractComponentStateClass {\n  abstract setData(data: any);\n}\nexport abstract class AbstractServiceComponentStateClass extends AbstractComponentStateClass {\n  abstract queryRows: number;\n  abstract totalQueryRecordsNumber: number;\n  abstract queryRecordOffset: number;\n  abstract quickFilterValue: string;\n\n}\nexport class DefaultComponentStateClass extends AbstractComponentStateClass {\n  setData(data: any) {\n    Object.assign(this, data);\n  }\n}\n\nexport class DefaultServiceComponentStateClass extends AbstractServiceComponentStateClass {\n\n  // quick-filter\n  protected 'filter-case-sensitive': boolean;\n  protected filterValue: string;\n  // page\n  totalQueryRecordsNumber: number;\n  queryRecordOffset: number;\n  protected 'query-rows': number;\n\n  get filterCaseSensitive(): boolean {\n    return this['filter-case-sensitive'];\n  }\n\n  set filterCaseSensitive(value: boolean) {\n    this['filter-case-sensitive'] = value;\n  }\n\n  get quickFilterValue(): string {\n    return this['filterValue'];\n  }\n\n  set quickFilterValue(value: string) {\n    this['filterValue'] = value;\n  }\n\n  get queryRows(): number {\n    return this['query-rows'];\n  }\n\n  set queryRows(value: number) {\n    this['query-rows'] = value;\n  }\n\n  constructor() {\n    super();\n  }\n\n  setData(data: any) {\n    Object.assign(this, data);\n  }\n\n\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ILocalStorageComponent } from '../../interfaces/local-storage-component.interface';\nimport { Util } from '../../util/util';\nimport { LocalStorageService } from '../local-storage.service';\nimport { AbstractComponentStateClass, DefaultComponentStateClass, DefaultServiceComponentStateClass } from './o-component-state.class';\n\n@Injectable()\nexport abstract class AbstractComponentStateService<S extends AbstractComponentStateClass, C extends ILocalStorageComponent = any>{\n\n  protected localStorageService: LocalStorageService;\n\n  protected component: C;\n  public state: S;\n\n  constructor(protected injector: Injector) {\n    this.localStorageService = injector.get<LocalStorageService>(LocalStorageService);\n  }\n\n  public initialize(comp: C) {\n    this.component = comp;\n    if (Util.isDefined(this.state)) {\n      this.initializeState(this.state);\n    }\n  }\n\n  public initializeState(state: S) {\n    if (Util.isDefined(this.state) &&\n      ((Util.isDefined(this.component.storeState) && this.component.storeState\n        ||\n        !Util.isDefined(this.component.storeState)))\n    ) {\n      state.setData(this.localStorageService.getComponentStorage(this.component, this.component.getRouteKey()));\n    }\n  }\n}\n\n@Injectable()\nexport class DefaultComponentStateService extends AbstractComponentStateService<DefaultComponentStateClass, ILocalStorageComponent> {\n\n  initialize(comp: ILocalStorageComponent) {\n    this.state = new DefaultComponentStateClass();\n    super.initialize(comp);\n  }\n}\n\n@Injectable()\nexport class DefaultServiceComponentStateService extends AbstractComponentStateService<DefaultServiceComponentStateClass, ILocalStorageComponent> {\n\n  initialize(comp: ILocalStorageComponent) {\n    this.state = new DefaultServiceComponentStateClass();\n    super.initialize(comp);\n  }\n}\n","import { InjectionToken, Injector } from '@angular/core';\n\nimport { AppConfig } from '../config/app-config';\nimport { IChartOnDemandService } from '../interfaces/chart-on-demand.interface';\nimport { IExportDataProvider } from '../interfaces/export-data-provider.interface';\nimport { IExportService } from '../interfaces/export-service.interface';\nimport { IFileService } from '../interfaces/file-service.interface';\nimport { IPermissionsService } from '../interfaces/permissions-service.interface';\nimport { IReportService } from '../interfaces/report-on-demand-service.interface';\nimport { OMatErrorOptions } from '../types/o-mat-error.type';\nimport { Util } from '../util/util';\nimport { AuthService } from './auth.service';\nimport { OntimizeAuthService } from './o-auth.service';\nimport { OErrorDialogManager } from './o-error-dialog-manager.service';\nimport { OntimizeExportDataProviderService3X } from './ontimize-export-data-provider-3x.service';\nimport { OntimizeExportDataProviderService } from './ontimize-export-data-provider.service';\nimport { OntimizeEEService } from './ontimize/ontimize-ee.service';\nimport { OntimizeExportService3X } from './ontimize/ontimize-export-3xx.service';\nimport { OntimizeExportService } from './ontimize/ontimize-export.service';\nimport { OntimizeFileService } from './ontimize/ontimize-file.service';\nimport { OntimizeService } from './ontimize/ontimize.service';\nimport { OntimizeEEPermissionsService } from './permissions/ontimize-ee-permissions.service';\nimport { OntimizePermissionsService } from './permissions/ontimize-permissions.service';\nimport { AbstractComponentStateService, DefaultComponentStateService } from './state/o-component-state.service';\nimport { LocalStorageService } from './local-storage.service';\nimport { ILocalStorageService } from '../interfaces/local-service.interface';\n\n/* ----------------------------------------------------------------------------------------------------\n * ----------------------------------------- INJECTION TOKENS -----------------------------------------\n * ---------------------------------------------------------------------------------------------------- */\n\n/**\n * Injection token that can be used to replace the data service `OntimizeService` or `OntimizeEEService`.\n */\nexport const O_DATA_SERVICE = new InjectionToken('Ontimize data service');\n\n/**\n * Injection token that can be used to replace the translate service `OTranslateService`.\n */\nexport const O_TRANSLATE_SERVICE = new InjectionToken('Translate service');\n\n/**\n * Injection token that can be used to replace the file service `OntimizeFileService`.\n */\nexport const O_FILE_SERVICE = new InjectionToken<IFileService>('File uploader service');\n\n/**\n * Injection token that can be used to replace the localstorage service `LocalStorageService`.\n */\nexport const O_LOCALSTORAGE_SERVICE = new InjectionToken<ILocalStorageService>('Local storage service');\n\n/**\n * Injection token that can be used to replace the exportation service `OntimizeExportService`.\n */\nexport const O_EXPORT_SERVICE = new InjectionToken<IExportService>('Export service');\n\n/**\n * Injection token that can be used to replace the permission service `OntimizePermissionsService or OntimizeEEPermissionsService`.\n */\nexport const O_PERMISSION_SERVICE = new InjectionToken<IPermissionsService>('Permission service');\n\n/**\n * Injection token that can be used to replace the authentication service `AuthService`.\n */\nexport const O_AUTH_SERVICE = new InjectionToken<AuthService>('Authentication service');\n\n/**\n* Injection token that can be used to replace the component state service `DefaultComponentStateService`.\n*/\nexport const O_COMPONENT_STATE_SERVICE = new InjectionToken<DefaultComponentStateService>('Component state service');\n\n\n/**\n* Injection token that can be used to replace the component state service `DefaultComponentStateService`.\n*/\nexport const O_CHART_ON_DEMAND_SERVICE = new InjectionToken<IChartOnDemandService>('Chart on demand service');\n\nexport const O_REPORT_SERVICE = new InjectionToken<IReportService>('Report service');\n\nexport const O_ERROR_DIALOG_MANAGER = new InjectionToken<OErrorDialogManager>('Error dialog manager');\n\nexport const O_EXPORT_DATA_SERVICE = new InjectionToken<IExportDataProvider>('Export data provider');\n\nexport const O_MAT_ERROR_OPTIONS = new InjectionToken<OMatErrorOptions>('o-mat-error-options');\n\nexport const O_FORM_MESSAGE_SERVICE = new InjectionToken('Ontimize o-form message service');\n\n/* ----------------------------------------------------------------------------------------------------\n * --------------------------------------------- FACTORIES --------------------------------------------\n * ---------------------------------------------------------------------------------------------------- */\n\n/**\n * Creates a new instance of the data service.\n */\nexport function dataServiceFactory(injector: Injector): any {\n  const serviceClass = _getInjectionTokenValue(O_DATA_SERVICE, injector);\n  const service = Util.createServiceInstance(serviceClass, injector);\n  if (Util.isDefined(service)) {\n    return service;\n  }\n  const config = injector.get(AppConfig).getConfiguration();\n  if (!Util.isDefined(config.serviceType) || 'OntimizeEE' === config.serviceType) {\n    return new OntimizeEEService(injector);\n  } else if ('Ontimize' === config.serviceType) {\n    return new OntimizeService(injector);\n  }\n  return Util.createServiceInstance(config.serviceType, injector);\n}\n\n/**\n * Creates a new instance of the file service.\n */\nexport function fileServiceFactory(injector: Injector): IFileService {\n  const serviceClass = _getInjectionTokenValue(O_FILE_SERVICE, injector);\n  const service = Util.createServiceInstance(serviceClass, injector);\n  return Util.isDefined(service) ? service : new OntimizeFileService(injector);\n}\n\n/**\n * Creates a new instance of the local storage service.\n */\nexport function localStorageServiceFactory(injector: Injector): ILocalStorageService {\n  const serviceClass = _getInjectionTokenValue(O_LOCALSTORAGE_SERVICE, injector);\n  const service = Util.createServiceInstance(serviceClass, injector);\n  return Util.isDefined(service) ? service : new LocalStorageService(injector);\n}\n/**\n * Creates a new instance of the exportation service.\n */\nexport function exportServiceFactory(injector: Injector): IExportService {\n  const serviceClass = _getInjectionTokenValue(O_EXPORT_SERVICE, injector);\n  const service = Util.createServiceInstance(serviceClass, injector);\n  if (Util.isDefined(service)) {\n    return service;\n  }\n  const config = injector.get(AppConfig).getConfiguration();\n\n  if (typeof (config.exportServiceType) === 'undefined') {\n    if (config.exportConfiguration) {\n      return new OntimizeExportService3X(injector);\n    } else {\n      return new OntimizeExportService(injector);\n    }\n  }\n  return Util.createServiceInstance(config.exportServiceType, injector);\n}\n\nexport function exportDataFactory(injector: Injector): IExportDataProvider {\n  const provider = _getInjectionTokenValue(O_EXPORT_DATA_SERVICE, injector);\n  const service = Util.createServiceInstance(provider, injector);\n  if (Util.isDefined(service)) {\n    return service;\n  } else {\n    const config = injector.get(AppConfig).getConfiguration();\n    if (typeof (config.exportConfiguration) === 'undefined') {\n      return new OntimizeExportDataProviderService(injector);\n    } else {\n      return new OntimizeExportDataProviderService3X(injector);\n    }\n  }\n\n}\n\n/**\n * Creates a new instance of the permission service.\n */\nexport function permissionsServiceFactory(injector: Injector): IPermissionsService {\n  const serviceClass = _getInjectionTokenValue(O_PERMISSION_SERVICE, injector);\n  const service = Util.createServiceInstance(serviceClass, injector);\n  if (Util.isDefined(service)) {\n    return service;\n  }\n  const config = injector.get(AppConfig).getConfiguration();\n\n  if (!Util.isDefined(config.permissionsServiceType) || 'OntimizeEEPermissions' === config.permissionsServiceType) {\n    return new OntimizeEEPermissionsService(injector);\n  } else if ('OntimizePermissions' === config.permissionsServiceType) {\n    return new OntimizePermissionsService(injector);\n  }\n  return Util.createServiceInstance(config.permissionsServiceType, injector);\n}\n\n/**\n * Creates a new instance of the authentication service.\n */\nexport function authServiceFactory(injector: Injector): AuthService {\n  const serviceClass = _getInjectionTokenValue(O_AUTH_SERVICE, injector);\n  const service = Util.createServiceInstance(serviceClass, injector);\n  return Util.isDefined(service) ? service : new OntimizeAuthService(injector);\n}\n\nexport function componentStateFactory(injector: Injector): AbstractComponentStateService<any, any> {\n  const service = _getInjectionTokenValue(O_COMPONENT_STATE_SERVICE, injector);\n  return Util.isDefined(service) ? service : new DefaultComponentStateService(injector);\n}\n\n/* ----------------------------------------------------------------------------------------------------\n * -------------------------------------------- PROVIDERS ---------------------------------------------\n * ----------------------------------------------------------------------------------------------------\n * Using the same provider multiple times accross the project produces namespaces conflicts when\n * building with ng-packagr, so we reused the providers defined here.\n * ---------------------------------------------------------------------------------------------------- */\n\nexport const OntimizeServiceProvider = { provide: OntimizeService, useFactory: dataServiceFactory, deps: [Injector] };\n\nexport const OntimizeExportServiceProvider = { provide: OntimizeExportService, useFactory: exportServiceFactory, deps: [Injector] };\n\nexport const OntimizeAuthServiceProvider = { provide: AuthService, useFactory: authServiceFactory, deps: [Injector] };\n\nexport const ComponentStateServiceProvider = { provide: AbstractComponentStateService, useFactory: componentStateFactory, deps: [Injector] };\n\nexport const ExportDataServiceProvider = { provide: OntimizeExportDataProviderService, useFactory: exportDataFactory, deps: [Injector] };\n\nexport const OntimizeLocalStorageServiceProvider = { provide: LocalStorageService, useFactory: localStorageServiceFactory, deps: [Injector] };\n/* ----------------------------------------------------------------------------------------------------\n * ----------------------------------------- Utility methods ------------------------------------------\n * ---------------------------------------------------------------------------------------------------- */\n\n/**\n * Returns the value for the provided injection token\n * @param token the injection token\n * @param injector the injector\n */\nexport function _getInjectionTokenValue<T>(token: InjectionToken<T>, injector: Injector): T {\n  let service: T;\n  try {\n    service = injector.get(token);\n  } catch (e) {\n    // No value provided for the injection token\n  }\n  return service;\n}\n\n\n","import { HttpClient } from '@angular/common/http';\nimport { EventEmitter, Injectable, Injector } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, Subscriber } from 'rxjs';\n\nimport { AppConfig } from '../../config/app-config';\nimport * as CORE_TRANSLATIONS from '../../i18n/i18n';\nimport { MomentService } from '../../services/moment.service';\nimport { ObservableWrapper } from '../../util/async';\nimport { _getInjectionTokenValue, O_TRANSLATE_SERVICE } from '../factories';\nimport { Util } from '../../util/util';\nimport { Codes } from '../../util/codes';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n/**\n * `OTranslateService` factory.\n * Creates a new instance of the translate service.\n */\nexport function translateServiceFactory(injector: Injector): any {\n  const serviceClass = _getInjectionTokenValue(O_TRANSLATE_SERVICE, injector);\n  const service = Util.createServiceInstance(serviceClass, injector);\n  return Util.isDefined(service) ? service : new OTranslateService(injector);\n}\n\n@Injectable({ providedIn: 'root', useFactory: translateServiceFactory, deps: [Injector] })\nexport class OTranslateService {\n\n  public static ASSETS_PATH = './assets/i18n/';\n  public static ASSETS_EXTENSION = '.json';\n  public DEFAULT_LANG = 'en';\n  public onLanguageChanged: EventEmitter<any> = new EventEmitter();\n\n  protected ngxTranslateService: TranslateService;\n  protected momentService: MomentService;\n  protected httpClient: HttpClient;\n\n  protected localStorageKey: string;\n  protected notFoundLang: Array<string> = [];\n  protected appConfig: AppConfig;\n  protected existingLangFiles: Array<string> = [];\n  protected defaultLocale: string;\n\n  constructor(protected injector: Injector) {\n    this.ngxTranslateService = this.injector.get(TranslateService);\n    this.momentService = this.injector.get(MomentService);\n    this.httpClient = this.injector.get(HttpClient);\n    this.appConfig = this.injector.get(AppConfig);\n    this.localStorageKey = this.appConfig.getConfiguration().uuid;\n    this.defaultLocale = this.appConfig.getConfiguration().defaultLocale;\n  }\n\n  public storeLanguage(language: string): void {\n    if (language) {\n      const dataStr = localStorage.getItem(this.localStorageKey);\n      const data = (dataStr && dataStr.length > 0) ? JSON.parse(dataStr) : {};\n      data[Codes.LANGUAGE_KEY] = language;\n      try {\n        localStorage.setItem(this.localStorageKey, JSON.stringify(data));\n      } catch (e) {\n        console.error(\"Cannot set new item in localStorage. Error: \" + e);\n      }\n    }\n  }\n\n  public getStoredLanguage(): string {\n    const dataStr = localStorage.getItem(this.localStorageKey);\n    return dataStr ? JSON.parse(dataStr)[Codes.LANGUAGE_KEY] : void 0;\n  }\n\n  protected checkExistingLangFile(lang: string): Promise<any> {\n    const self = this;\n    return new Promise((resolve) => {\n      if (self.existingLangFiles.indexOf(lang) !== -1) {\n        resolve(true);\n        return;\n      }\n      const localeAssetsPath = (this.ngxTranslateService.currentLoader as any).prefix;\n      const localeAssetsExtension = (this.ngxTranslateService.currentLoader as any).suffix;\n      self.httpClient.get(localeAssetsPath + lang + localeAssetsExtension).subscribe(() => {\n        if (self.existingLangFiles.indexOf(lang) === -1) {\n          self.existingLangFiles.push(lang);\n        }\n        // I18N File loaded successfully\n        resolve(true);\n      }, () => {\n        // I18N File failed to load\n        if (self.notFoundLang.indexOf(lang) === -1) {\n          self.notFoundLang.push(lang);\n        }\n        resolve(false);\n      });\n    });\n  }\n\n  public setDefaultLang(lang: string): void {\n    this.ngxTranslateService.defaultLang = lang;\n    this.checkExistingLangFile(lang).then((exists) => {\n      if (!exists) {\n        console.error('Default language(' + lang + ') has no bundle file defined');\n      }\n    });\n  }\n\n  public get(text: string, values: any[] = []): string {\n    let textTranslated;\n    try {\n      const bundle = this.ngxTranslateService.get(text, values);\n      if (bundle) {\n        bundle.subscribe(x => textTranslated = x);\n      }\n      textTranslated = textTranslated === text ? undefined : textTranslated;\n    } catch (e) {\n      textTranslated = undefined;\n    }\n    if (!textTranslated) {\n      const bundle = CORE_TRANSLATIONS.MAP[this.ngxTranslateService.currentLang] || CORE_TRANSLATIONS.MAP[this.defaultLocale] || CORE_TRANSLATIONS.MAP[this.DEFAULT_LANG];\n      if (bundle && bundle[text]) {\n        textTranslated = bundle[text];\n      } else {\n        textTranslated = text;\n      }\n    }\n    return textTranslated;\n  }\n\n  public setAppLang(lang: string): Observable<any> {\n    const observable = new Observable(observer => {\n      this.use(lang, observer);\n    });\n    return observable;\n  }\n\n  public use(lang: string, observer?: Subscriber<any>): void {\n    if (lang === undefined) {\n      const newLang = lang || this.DEFAULT_LANG;\n      // setting lang for initializING moment and other components\n      this.propagateLang(newLang, {}, observer);\n    } else {\n      this.checkExistingLangFile(lang).then((exists) => {\n        let newLang = lang;\n        if (!exists) {\n          newLang = Util.isDefined(this.appConfig['_config']['defaultLocale']) ? this.appConfig['_config']['defaultLocale'] : this.ngxTranslateService.getDefaultLang();\n          const translations = CORE_TRANSLATIONS.MAP[newLang] || CORE_TRANSLATIONS.MAP[this.DEFAULT_LANG];\n          const msg = translations['MESSAGES.ERROR_MISSING_LANG'];\n          this.injector.get(MatSnackBar).open(msg, ' ', {\n            duration: 2500\n          });\n        }\n        this.ngxTranslateService.use(newLang).subscribe(\n          res => {\n            this.storeLanguage(newLang);\n            this.propagateLang(newLang, res, observer);\n          }\n        );\n      });\n    }\n  }\n\n  protected propagateLang(lang: string, langRes?: any, observer?: Subscriber<any>) {\n    const coreBundle = CORE_TRANSLATIONS.MAP[lang || this.DEFAULT_LANG];\n    if (coreBundle !== undefined) {\n      const mixed = Object.assign({}, coreBundle, langRes);\n      this.ngxTranslateService.translations[lang] = mixed;\n    }\n    this.momentService.load(lang);\n    ObservableWrapper.callEmit(this.onLanguageChanged, lang);\n    if (observer) {\n      observer.next(langRes);\n    }\n  }\n\n  public getCurrentLang() {\n    return this.ngxTranslateService.currentLang;\n  }\n\n  public getBrowserLang() {\n    // copying this.ngxTranslateService.getBrowserLang() but with a fix for default selected language (browserLang)\n    if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n      return undefined;\n    }\n    const navigator: any = window.navigator;\n    let browserLang = navigator.languages ? navigator.languages[0] : null;\n    browserLang = navigator.language || browserLang || navigator.browserLanguage || navigator.userLanguage;\n    if (browserLang.indexOf('-') !== -1) {\n      browserLang = browserLang.split('-')[0];\n    }\n    if (browserLang.indexOf('_') !== -1) {\n      browserLang = browserLang.split('_')[0];\n    }\n    return browserLang;\n  }\n\n}\n","import { Component, Injector } from \"@angular/core\";\nimport { MatDialogRef } from \"@angular/material/dialog\";\nimport { OTranslateService } from \"../../../services/translate/o-translate.service\";\nimport type { ODialogConfig } from \"./o-dialog.config\";\n\n@Component({\n  selector: 'app-local-dialog',\n  templateUrl: './o-dialog-internal.component.html',\n})\nexport class ODialogInternalComponent {\n\n  protected static DEFAULT_OK_BUTTON_TEXT = 'OK';\n  protected static DEFAULT_CANCEL_BUTTON_TEXT = 'CANCEL';\n\n  protected _title: string;\n  protected _message: string;\n  protected _okButtonText: string;\n  protected _cancelButtonText: string;\n  protected _twoOptions: boolean;\n  protected _useIcon: boolean;\n  protected _icon: string;\n  protected _alertType: string;\n  private translateService: OTranslateService;\n  constructor(\n    public dialogRef: MatDialogRef<ODialogInternalComponent>, protected injector: Injector) {\n    this.translateService = injector.get(OTranslateService);\n  }\n\n  onOkClick() {\n    if (this.dialogRef) {\n      this.dialogRef.close(true);\n    }\n  }\n\n  public alert(title: string, message: string, config?: ODialogConfig) {\n    config = this.ensureConfig(config);\n    this.configureDefaultAlert(title, message, config);\n  }\n\n  public confirm(title: string, message: string, config?: ODialogConfig) {\n    config = this.ensureConfig(config);\n    this.configureDefaultAlert(title, message, config);\n    this.twoOptions = true;\n  }\n\n  /* Utility methods */\n  protected ensureConfig(config: ODialogConfig): ODialogConfig {\n    if (!config) {\n      config = {};\n    }\n    return config;\n  }\n  public getTranslation(value: string): string {\n    return this.translateService.get(value);\n  }\n  protected configureDefaultAlert(title: string, message: string, config?: ODialogConfig) {\n    this.twoOptions = false;\n    this.title = title;\n    this.message = message;\n\n    this.icon = (typeof (config.icon) !== 'undefined') ? config.icon : undefined;\n    if (this.icon !== undefined) {\n      this.useIcon = true;\n    }\n    this.alertType = config.alertType;\n\n    this.okButtonText = (typeof (config.okButtonText) !== 'undefined') ? config.okButtonText : ODialogInternalComponent.DEFAULT_OK_BUTTON_TEXT;\n    this.cancelButtonText = (typeof (config.cancelButtonText) !== 'undefined') ? config.cancelButtonText : ODialogInternalComponent.DEFAULT_CANCEL_BUTTON_TEXT;\n  }\n\n  get isInfo(): boolean {\n    return this.alertType === 'info';\n  }\n\n  get isWarn(): boolean {\n    return this.alertType === 'warn';\n  }\n\n  get isError(): boolean {\n    return this.alertType === 'error';\n  }\n\n  get title(): string {\n    return this._title;\n  }\n\n  set title(val: string) {\n    this._title = val;\n  }\n\n  get message(): string {\n    return this._message;\n  }\n\n  set message(val: string) {\n    this._message = val;\n  }\n\n  get okButtonText(): string {\n    return this._okButtonText;\n  }\n\n  set okButtonText(val: string) {\n    this._okButtonText = val;\n  }\n\n  get cancelButtonText(): string {\n    return this._cancelButtonText;\n  }\n\n  set cancelButtonText(val: string) {\n    this._cancelButtonText = val;\n  }\n\n  get icon(): string {\n    return this._icon;\n  }\n\n  set icon(val: string) {\n    this._icon = val;\n  }\n\n  get alertType(): string {\n    return this._alertType;\n  }\n\n  set alertType(val: string) {\n    this._alertType = val;\n  }\n\n\n  get twoOptions(): boolean {\n    return this._twoOptions;\n  }\n\n  set twoOptions(val: boolean) {\n    this._twoOptions = val;\n  }\n\n  get useIcon(): boolean {\n    return this._useIcon;\n  }\n\n  set useIcon(val: boolean) {\n    this._useIcon = val;\n  }\n\n\n}","<div *ngIf=\"title && title.length > 0\" mat-dialog-title>{{ getTranslation(title) }}</div>\n<div mat-dialog-content>\n  <div fxLayout=\"row\" class=\"alert-content\" [class.alert-content-icon]=\"useIcon\" fxLayoutAlign=\"space-between center\">\n    <mat-icon *ngIf=\"useIcon\" class=\"alert-icon\" [class.info]=\"isInfo\" [class.warn]=\"isWarn\" [class.error]=\"isError\">\n      {{ icon }}\n    </mat-icon>\n    <span [innerHTML]=\"getTranslation(message) \"></span>\n  </div>\n</div>\n<mat-dialog-actions align=\"end\">\n  <span fxFlex></span>\n  <button type=\"button\" *ngIf=\"twoOptions\" mat-stroked-button mat-dialog-close class=\"o-button-default cancel\">\n    {{getTranslation( cancelButtonText) }}\n  </button>\n  <button type=\"button\" mat-stroked-button class=\"o-button-primary\" (click)=\"onOkClick()\">{{ getTranslation(okButtonText) }}</button>\n</mat-dialog-actions>\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport type { ODialogConfig } from '../shared';\nimport { ODialogInternalComponent } from '../shared/components/dialog/o-dialog-internal.component';\nimport { Util } from '../util/util';\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OErrorDialogManager {\n\n  protected errorDialogSubscription: Promise<boolean>;\n\n  dialogRef: MatDialogRef<ODialogInternalComponent>;\n\n  constructor(protected ng2Dialog: MatDialog) {\n  }\n  protected restart() {\n    this.errorDialogSubscription = null;\n  }\n\n  public openErrorDialog(err?: any): Promise<boolean> {\n    if (!Util.isDefined(this.errorDialogSubscription)) {\n      this.errorDialogSubscription = new Promise((resolve) => {\n        const errorMsg = (err && typeof err !== 'object') ? err : 'MESSAGES.ERROR_QUERY';\n        this.alert('ERROR', errorMsg).then(res => {\n          this.restart();\n          resolve(res);\n        });\n      });\n    }\n    return this.errorDialogSubscription;\n  }\n  protected openDialog(observer) {\n    const cfg: MatDialogConfig = {\n      role: 'alertdialog',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-dialog-service']\n    };\n    //TODO It has been typed with the component type because it needed the component but adding it produces a circular dependency\n    this.dialogRef = this.ng2Dialog.open(ODialogInternalComponent, cfg);\n    this.dialogRef.afterClosed().subscribe(result => {\n      result = result === undefined ? false : result;\n      observer.next(result);\n      observer.complete();\n      this.dialogRef = null;\n    });\n  }\n  public alert(title: string, message: string, config?: ODialogConfig): Promise<any> {\n    const self = this;\n    const observable = new Observable(observer => {\n      self.openDialog(observer);\n      self.dialogRef.componentInstance.alert(title, message, config);\n    });\n    return observable.toPromise();\n  }\n}","export class OFormValue {\n  value: any;\n  constructor(value?: any) {\n    this.value = value;\n  }\n}\n","export class SQLTypes {\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>BIT</code>.\n   */\n  public static BIT = -7;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>TINYINT</code>.\n   */\n  public static TINYINT = -6;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>SMALLINT</code>.\n   */\n  public static SMALLINT = 5;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>INTEGER</code>.\n   */\n  public static INTEGER = 4;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>BIGINT</code>.\n   */\n  public static BIGINT = -5;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>FLOAT</code>.\n   */\n  public static FLOAT = 6;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>REAL</code>.\n   */\n  public static REAL = 7;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>DOUBLE</code>.\n   */\n  public static DOUBLE = 8;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>NUMERIC</code>.\n   */\n  public static NUMERIC = 2;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>DECIMAL</code>.\n   */\n  public static DECIMAL = 3;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>CHAR</code>.\n   */\n  public static CHAR = 1;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>VARCHAR</code>.\n   */\n  public static VARCHAR = 12;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>LONGVARCHAR</code>.\n   */\n  public static LONGVARCHAR = -1;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>DATE</code>.\n   */\n  public static DATE = 91;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>TIME</code>.\n   */\n  public static TIME = 92;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>TIMESTAMP</code>.\n   */\n  public static TIMESTAMP = 93;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>BINARY</code>.\n   */\n  public static BINARY = -2;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>VARBINARY</code>.\n   */\n  public static VARBINARY = -3;\n\n  /**\n   * <P>The constant in the Java programming language, sometimes referred\n   * to as a type code, that identifies the generic SQL type\n   * <code>LONGVARBINARY</code>.\n   */\n  public static LONGVARBINARY = -4;\n\n  /**\n   * <P>The constant in the Java programming language\n   * that identifies the generic SQL value\n   * <code>NULL</code>.\n   */\n  public static NULL = 0;\n\n  /**\n   * The constant in the Java programming language that indicates\n   * that the SQL type is database-specific and\n   * gets mapped to a Java object that can be accessed via\n   * the methods <code>getObject</code> and <code>setObject</code>.\n   */\n  public static OTHER = 1111;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type\n   * <code>JAVA_OBJECT</code>.\n   * @since 1.2\n   */\n  public static JAVA_OBJECT = 2000;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type\n   * <code>DISTINCT</code>.\n   * @since 1.2\n   */\n  public static DISTINCT = 2001;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type\n   * <code>STRUCT</code>.\n   * @since 1.2\n   */\n  public static STRUCT = 2002;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type\n   * <code>ARRAY</code>.\n   * @since 1.2\n   */\n  public static ARRAY = 2003;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type\n   * <code>BLOB</code>.\n   * @since 1.2\n   */\n  public static BLOB = 2004;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type\n   * <code>CLOB</code>.\n   * @since 1.2\n   */\n  public static CLOB = 2005;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type\n   * <code>REF</code>.\n   * @since 1.2\n   */\n  public static REF = 2006;\n\n  /**\n   * The constant in the Java programming language, somtimes referred to\n   * as a type code, that identifies the generic SQL type <code>DATALINK</code>.\n   *\n   * @since 1.4\n   */\n  public static DATALINK = 70;\n\n  /**\n   * The constant in the Java programming language, somtimes referred to\n   * as a type code, that identifies the generic SQL type <code>BOOLEAN</code>.\n   *\n   * @since 1.4\n   */\n  public static BOOLEAN = 16;\n\n  // ------------------------- JDBC 4.0 -----------------------------------\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type <code>ROWID</code>\n   *\n   * @since 1.6\n   *\n   */\n  public static ROWID = -8;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type <code>NCHAR</code>\n   *\n   * @since 1.6\n   */\n  public static NCHAR = -15;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type <code>NVARCHAR</code>.\n   *\n   * @since 1.6\n   */\n  public static NVARCHAR = -9;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type <code>LONGNVARCHAR</code>.\n   *\n   * @since 1.6\n   */\n  public static LONGNVARCHAR = -16;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type <code>NCLOB</code>.\n   *\n   * @since 1.6\n   */\n  public static NCLOB = 2011;\n\n  public static BASE64 = 6464;\n\n  public static UUID = 6465;\n\n  /**\n   * The constant in the Java programming language, sometimes referred to\n   * as a type code, that identifies the generic SQL type <code>XML</code>.\n   *\n   * @since 1.6\n   */\n  public static SQLXML = 2009;\n\n  public static getSQLTypeValue(type: string): number {\n    let value: number;\n    type = type ? type.toUpperCase() : '';\n    switch (type) {\n      case 'BIT':\n        value = SQLTypes.BIT;\n        break;\n      case 'TINYINT':\n        value = SQLTypes.TINYINT;\n        break;\n      case 'SMALLINT':\n        value = SQLTypes.SMALLINT;\n        break;\n      case 'INTEGER':\n        value = SQLTypes.INTEGER;\n        break;\n      case 'BIGINT':\n        value = SQLTypes.BIGINT;\n        break;\n      case 'FLOAT':\n        value = SQLTypes.FLOAT;\n        break;\n      case 'REAL':\n        value = SQLTypes.REAL;\n        break;\n      case 'DOUBLE':\n        value = SQLTypes.DOUBLE;\n        break;\n      case 'NUMERIC':\n        value = SQLTypes.NUMERIC;\n        break;\n      case 'DECIMAL':\n        value = SQLTypes.DECIMAL;\n        break;\n      case 'CHAR':\n        value = SQLTypes.CHAR;\n        break;\n      case 'VARCHAR':\n        value = SQLTypes.VARCHAR;\n        break;\n      case 'LONGVARCHAR':\n        value = SQLTypes.LONGVARCHAR;\n        break;\n      case 'DATE':\n        value = SQLTypes.DATE;\n        break;\n      case 'TIME':\n        value = SQLTypes.TIME;\n        break;\n      case 'TIMESTAMP':\n        value = SQLTypes.TIMESTAMP;\n        break;\n      case 'BINARY':\n        value = SQLTypes.BINARY;\n        break;\n      case 'VARBINARY':\n        value = SQLTypes.VARBINARY;\n        break;\n      case 'LONGVARBINARY':\n        value = SQLTypes.LONGVARBINARY;\n        break;\n      case 'NULL':\n        value = SQLTypes.NULL;\n        break;\n      case 'OTHER':\n        value = SQLTypes.OTHER;\n        break;\n      case 'JAVA_OBJECT':\n        value = SQLTypes.JAVA_OBJECT;\n        break;\n      case 'DISTINCT':\n        value = SQLTypes.DISTINCT;\n        break;\n      case 'STRUCT':\n        value = SQLTypes.STRUCT;\n        break;\n      case 'ARRAY':\n        value = SQLTypes.ARRAY;\n        break;\n      case 'BLOB':\n        value = SQLTypes.BLOB;\n        break;\n      case 'CLOB':\n        value = SQLTypes.CLOB;\n        break;\n      case 'REF':\n        value = SQLTypes.REF;\n        break;\n      case 'DATALINK':\n        value = SQLTypes.DATALINK;\n        break;\n      case 'BOOLEAN':\n        value = SQLTypes.BOOLEAN;\n        break;\n      case 'ROWID':\n        value = SQLTypes.ROWID;\n        break;\n      case 'NCHAR':\n        value = SQLTypes.NCHAR;\n        break;\n      case 'NVARCHAR':\n        value = SQLTypes.NVARCHAR;\n        break;\n      case 'LONGNVARCHAR':\n        value = SQLTypes.LONGNVARCHAR;\n        break;\n      case 'NCLOB':\n        value = SQLTypes.NCLOB;\n        break;\n      case 'SQLXML':\n        value = SQLTypes.SQLXML;\n        break;\n      case 'BASE64':\n        value = SQLTypes.BASE64;\n        break;\n      case 'UUID':\n        value = SQLTypes.UUID;\n        break;\n      default:\n        value = SQLTypes.OTHER;\n        break;\n    }\n    return value;\n  }\n\n  public static getSQLTypeKey(type: number): string {\n    let value: string;\n    switch (type) {\n      case SQLTypes.BIT:\n        value = 'BIT';\n        break;\n      case SQLTypes.TINYINT:\n        value = 'TINYINT';\n        break;\n      case SQLTypes.SMALLINT:\n        value = 'SMALLINT';\n        break;\n      case SQLTypes.INTEGER:\n        value = 'INTEGER';\n        break;\n      case SQLTypes.BIGINT:\n        value = 'BIGINT';\n        break;\n      case SQLTypes.FLOAT:\n        value = 'FLOAT';\n        break;\n      case SQLTypes.REAL:\n        value = 'REAL';\n        break;\n      case SQLTypes.DOUBLE:\n        value = 'DOUBLE';\n        break;\n      case SQLTypes.NUMERIC:\n        value = 'NUMERIC';\n        break;\n      case SQLTypes.DECIMAL:\n        value = 'DECIMAL';\n        break;\n      case SQLTypes.CHAR:\n        value = 'CHAR';\n        break;\n      case SQLTypes.VARCHAR:\n        value = 'VARCHAR';\n        break;\n      case SQLTypes.LONGVARCHAR:\n        value = 'LONGVARCHAR';\n        break;\n      case SQLTypes.DATE:\n        value = 'DATE';\n        break;\n      case SQLTypes.TIME:\n        value = 'TIME';\n        break;\n      case SQLTypes.TIMESTAMP:\n        value = 'TIMESTAMP';\n        break;\n      case SQLTypes.BINARY:\n        value = 'BINARY';\n        break;\n      case SQLTypes.VARBINARY:\n        value = 'VARBINARY';\n        break;\n      case SQLTypes.LONGVARBINARY:\n        value = 'LONGVARBINARY';\n        break;\n      case SQLTypes.NULL:\n        value = 'NULL';\n        break;\n      case SQLTypes.OTHER:\n        value = 'OTHER';\n        break;\n      case SQLTypes.JAVA_OBJECT:\n        value = 'JAVA_OBJECT';\n        break;\n      case SQLTypes.DISTINCT:\n        value = 'DISTINCT';\n        break;\n      case SQLTypes.STRUCT:\n        value = 'STRUCT';\n        break;\n      case SQLTypes.ARRAY:\n        value = 'ARRAY';\n        break;\n      case SQLTypes.BLOB:\n        value = 'BLOB';\n        break;\n      case SQLTypes.CLOB:\n        value = 'CLOB';\n        break;\n      case SQLTypes.REF:\n        value = 'REF';\n        break;\n      case SQLTypes.DATALINK:\n        value = 'DATALINK';\n        break;\n      case SQLTypes.BOOLEAN:\n        value = 'BOOLEAN';\n        break;\n      case SQLTypes.ROWID:\n        value = 'ROWID';\n        break;\n      case SQLTypes.NCHAR:\n        value = 'NCHAR';\n        break;\n      case SQLTypes.NVARCHAR:\n        value = 'NVARCHAR';\n        break;\n      case SQLTypes.LONGNVARCHAR:\n        value = 'LONGNVARCHAR';\n        break;\n      case SQLTypes.NCLOB:\n        value = 'NCLOB';\n        break;\n      case SQLTypes.SQLXML:\n        value = 'SQLXML';\n        break;\n      case SQLTypes.BASE64:\n        value = 'BASE64';\n        break;\n      case SQLTypes.UUID:\n        value = 'UUID';\n        break;\n      default:\n        value = 'OTHER';\n        break;\n    }\n    return value;\n  }\n\n  public static parseUsingSQLType(arg: any, type: string): any {\n    let value = arg;\n    type = type ? type.toUpperCase() : '';\n    try {\n      switch (type) {\n        case 'TINYINT':\n        case 'SMALLINT':\n        case 'INTEGER':\n        case 'BIGINT':\n          value = Number(arg);\n          break;\n        case 'FLOAT':\n        case 'REAL':\n        case 'DOUBLE':\n        case 'NUMERIC':\n        case 'DECIMAL':\n          value = parseFloat(arg);\n          break;\n        default:\n          break;\n      }\n    } catch (err) {\n      console.error('SQLTypes.parseUsingSQLType error');\n    }\n    return value;\n  }\n\n  public static isNumericSQLType(arg: number): boolean {\n    return [\n      SQLTypes.TINYINT,\n      SQLTypes.SMALLINT,\n      SQLTypes.INTEGER,\n      SQLTypes.BIGINT,\n      SQLTypes.FLOAT,\n      SQLTypes.REAL,\n      SQLTypes.DOUBLE,\n      SQLTypes.NUMERIC,\n      SQLTypes.DECIMAL\n    ].indexOf(arg) !== -1;\n  }\n\n}\n","import { ActivatedRoute, ActivatedRouteSnapshot } from '@angular/router';\n\nimport { OExpandableContainerComponent } from '../components/expandable-container/o-expandable-container.component';\nimport { OFormValue } from '../components/form/o-form-value';\nimport { OFormComponent } from '../components/form/o-form.component';\nimport { SQLOrder } from '../types/sql-order.type';\nimport { Codes } from './codes';\nimport { SQLTypes } from './sqltypes';\nimport { Util } from './util';\n\nexport class ServiceUtils {\n\n  static getParentKeysFromExpandableContainer(parentKeysObject: object, expandableContainer: OExpandableContainerComponent, route?: ActivatedRoute, checkRouteParamsRecursive: boolean = true): {} {\n    const result = {};\n    const ownKeys = Object.keys(parentKeysObject || {});\n\n    const dataComponent = expandableContainer ? expandableContainer.data : {};\n    const existsData = Object.keys(dataComponent).length > 0;\n\n    const routeParams = route ? ServiceUtils.getRouteParams(route.snapshot, checkRouteParamsRecursive) : {};\n    const existsRouteParams = Object.keys(routeParams).length > 0;\n\n    if (existsData || existsRouteParams) {\n      ownKeys.forEach(ownKey => {\n        const keyValue = parentKeysObject[ownKey];\n        let value;\n        if (dataComponent.hasOwnProperty(keyValue)) {\n          value = dataComponent[keyValue];\n        } else if (routeParams.hasOwnProperty(keyValue)) {\n          value = routeParams[keyValue];\n        }\n        if (Util.isDefined(value)) {\n          switch (typeof (value)) {\n            case 'string':\n              if (value.trim().length > 0) {\n                result[ownKey] = value.trim();\n              }\n              break;\n            case 'number':\n              if (!isNaN(value)) {\n                result[ownKey] = value;\n              }\n              break;\n          }\n        }\n      });\n    }\n    return result;\n  }\n\n  static getParentKeysFromForm(parentKeysObject: object, form: OFormComponent, route?: ActivatedRoute, checkRouteParamsRecursive: boolean = true) {\n    const result = {};\n    const ownKeys = Object.keys(parentKeysObject || {});\n\n    const formComponents = form ? form.getComponents() : {};\n    const existsComponents = Object.keys(formComponents).length > 0;\n\n    const formDataProperties = form ? form.getDataValues() : {};\n    const existsProperties = Object.keys(formDataProperties).length > 0;\n\n    const urlData = form ? form.getFormNavigation().getFilterFromUrlParams() : {};\n    const existsUrlData = Object.keys(urlData).length > 0;\n    if (existsUrlData) {\n      form.keysArray.forEach((key: string, i: number) => {\n        if (urlData.hasOwnProperty(key)) {\n          urlData[key] = SQLTypes.parseUsingSQLType(urlData[key], form.keysSqlTypesArray[i]);\n        }\n      });\n    }\n\n    const routeParams = route ? ServiceUtils.getRouteParams(route.snapshot, checkRouteParamsRecursive) : {};\n    const existsRouteParams = Object.keys(routeParams).length > 0;\n\n    if (existsComponents || existsProperties || existsUrlData || existsRouteParams) {\n      ownKeys.forEach(ownKey => {\n        const keyValue = parentKeysObject[ownKey];\n        // Parent key equivalence may be an object\n        const isEquivObject = Util.isObject(keyValue);\n        const formFieldAttr = isEquivObject ? Object.keys(keyValue)[0] : keyValue;\n        let currentData;\n        if (formComponents.hasOwnProperty(formFieldAttr)) {\n          const component = formComponents[formFieldAttr];\n          // Is service component (combo, listpicker, radio)\n          if ('getSelectedRecord' in component && isEquivObject) {\n            currentData = ((component as any).getSelectedRecord() || {})[keyValue[formFieldAttr]];\n          } else {\n            currentData = component.getValue();\n          }\n        } else if (formDataProperties.hasOwnProperty(formFieldAttr)) {\n          const formPropValue = formDataProperties[formFieldAttr];\n          currentData = formPropValue instanceof OFormValue ? formPropValue.value : formPropValue;\n        } else if (urlData.hasOwnProperty(formFieldAttr)) {\n          currentData = urlData[formFieldAttr];\n        } else if (routeParams.hasOwnProperty(formFieldAttr)) {\n          currentData = routeParams[formFieldAttr];\n        }\n        if (Util.isDefined(currentData)) {\n          switch (typeof (currentData)) {\n            case 'string':\n              if (currentData.trim().length > 0) {\n                result[ownKey] = currentData.trim();\n              }\n              break;\n            case 'number':\n              if (!isNaN(currentData)) {\n                result[ownKey] = currentData;\n              }\n              break;\n          }\n        }\n      });\n    }\n    return result;\n  }\n\n  static filterContainsAllParentKeys(parentKeysFilter, parentKeys): boolean {\n    const pkKeys = Object.keys(parentKeys);\n    if ((pkKeys.length > 0) && Util.isDefined(parentKeysFilter)) {\n      const parentKeysFilterKeys = Object.keys(parentKeysFilter);\n      return pkKeys.every(a => parentKeysFilterKeys.indexOf(a) !== -1);\n    }\n    return true;\n  }\n\n  static getFilterUsingParentKeys(parentItem: any, parentKeysObject: object) {\n    const filter = {};\n    const ownKeys = Object.keys(parentKeysObject);\n    if (ownKeys.length > 0 && Util.isDefined(parentItem)) {\n      ownKeys.forEach(ownKey => {\n        const parentKey = parentKeysObject[ownKey];\n        if (parentItem.hasOwnProperty(parentKey)) {\n          let currentData = parentItem[parentKey];\n          if (currentData instanceof OFormValue) {\n            currentData = currentData.value;\n          }\n          filter[ownKey] = currentData;\n        }\n      });\n    }\n    return filter;\n  }\n\n  static getArrayProperties(array: any[], properties: any[]): any[] {\n    const result = array.map(item => {\n      return ServiceUtils.getObjectProperties(item, properties);\n    });\n    return result;\n  }\n\n  static getObjectProperties(object: any, properties: any[]): any {\n    const objectProperties = {};\n    properties.forEach(key => {\n      objectProperties[key] = object[key];\n    });\n    return objectProperties;\n  }\n\n  static parseSortColumns(sortColumns: string): Array<SQLOrder> {\n    const sortColArray = [];\n    if (sortColumns) {\n      const cols = Util.parseArray(sortColumns);\n      cols.forEach(col => {\n        const colDef = col.split(Codes.TYPE_SEPARATOR);\n        if (colDef.length > 0) {\n          const colName = colDef[0];\n          const colSort = colDef[1] || Codes.ASC_SORT;\n          sortColArray.push({\n            columnName: colName,\n            ascendent: colSort === Codes.ASC_SORT\n          });\n        }\n      });\n    }\n    return sortColArray;\n  }\n\n  /**\n   * Return the params of the provided route.\n   * Params from parent routes are replaced by child route param values if repeated.\n   * @param route the route\n   * @param recursive indicates whether or not to return route params from route ancestors.\n   * @returns params containing all the route parameters\n   */\n  static getRouteParams(route: ActivatedRouteSnapshot, recursive: boolean): object {\n    let params = { ...route.params };\n    if (recursive && route.parent) {\n      params = { ...this.getRouteParams(route.parent, recursive), ...params };\n    }\n    return params;\n  }\n\n}\n","import { Directive } from '@angular/core';\nimport { Util } from '../../util/util';\n\nexport const DEFAULT_INPUTS_O_CONTEXT_MENU_ITEMS = [\n  'attr',\n  'ovisible: visible',\n  'icon',\n  'data',\n  'label',\n  'oenabled: enabled',\n  'svgIcon: svg-icon'\n];\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_CONTEXT_MENU_ITEMS\n})\nexport class OComponentMenuBaseItem {\n\n  public static TYPE_ITEM_MENU = 'item_menu';\n  public static TYPE_GROUP_MENU = 'item_group';\n  public static TYPE_SEPARATOR_MENU = 'item_separator';\n  public ovisible: boolean | ((item: any) => boolean) = true;\n  public attr;\n  public type = OComponentMenuBaseItem.TYPE_GROUP_MENU;\n  public icon: string;\n  public data: any;\n  public label: string;\n  public enabled: boolean | ((item: any) => boolean) = true;\n  public svgIcon: string;\n\n  get disabled(): boolean {\n    if (this.enabled instanceof Function) {\n      return !this.enabled(this.data);\n    }\n    return !this.enabled;\n  }\n\n  get isVisible(): boolean {\n    if (this.ovisible instanceof Function) {\n      return this.ovisible(this.data);\n    }\n    return this.ovisible;\n  }\n\n  set oenabled(value: (boolean | ((item: any) => boolean))) {\n    if (value instanceof Function) {\n      this.enabled = value;\n    } else {\n      this.enabled = this.parseInput(value, true);\n    }\n  }\n\n  protected parseInput(value: any, defaultValue?: boolean): boolean {\n    if (value instanceof Function || typeof value === 'boolean') {\n      return value;\n    }\n    return Util.parseBoolean(value, defaultValue);\n  }\n\n}\n","import { AfterContentInit, Component, ContentChildren, forwardRef, OnDestroy, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { OComponentMenuBaseItem } from '../o-content-menu-base-item.class';\n\n@Component({\n  selector: 'o-context-menu-group',\n  template: ' ',\n  providers: [{ provide: OComponentMenuBaseItem, useExisting: forwardRef(() => OContextMenuGroupComponent) }]\n})\nexport class OContextMenuGroupComponent extends OComponentMenuBaseItem implements AfterContentInit, OnDestroy {\n\n  public type = OComponentMenuBaseItem.TYPE_GROUP_MENU;\n  public children: OComponentMenuBaseItem[] = [];\n  @ContentChildren(OComponentMenuBaseItem) public oContextMenuItems: QueryList<OComponentMenuBaseItem>;\n\n  protected subscription = new Subscription();\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  ngAfterContentInit(): void {\n    this.subscription.add(this.oContextMenuItems.changes.subscribe(() => {\n      this.updateChildren();\n    }));\n    this.updateChildren();\n  }\n\n  protected updateChildren() {\n    this.children = this.oContextMenuItems.toArray();\n  }\n\n}\n","import { Component, EventEmitter, forwardRef } from '@angular/core';\n\nimport { OnExecuteTableContextEvent } from '../../../interfaces/o-table-context-onexecute.interface';\nimport { DEFAULT_INPUTS_O_CONTEXT_MENU_ITEMS, OComponentMenuBaseItem } from '../o-content-menu-base-item.class';\n\nexport const DEFAULT_CONTEXT_MENU_ITEM_OUTPUTS = [\n  'execute'\n];\n\n@Component({\n  selector: 'o-context-menu-item',\n  template: ' ',\n  outputs: DEFAULT_CONTEXT_MENU_ITEM_OUTPUTS,\n  providers: [{ provide: OComponentMenuBaseItem, useExisting: forwardRef(() => OContextMenuItemComponent) }]\n})\nexport class OContextMenuItemComponent extends OComponentMenuBaseItem {\n\n  public execute: EventEmitter<OnExecuteTableContextEvent> = new EventEmitter();\n  public type = OComponentMenuBaseItem.TYPE_ITEM_MENU;\n\n  public onClick(event: MouseEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n    this.triggerExecute(this.data, event);\n  }\n\n  public triggerExecute(data: any, $event?: Event): void {\n    if (!this.enabled) {\n      return;\n    }\n    this.execute.emit({ event: $event, data: data });\n  }\n}\n","import { Component, forwardRef } from '@angular/core';\n\nimport { OComponentMenuBaseItem } from '../o-content-menu-base-item.class';\n\nexport const DEFAULT_CONTEXT_MENU_ITEM_INPUTS = [\n  'attr',\n  'ovisible: visible'\n];\n\n@Component({\n  selector: 'o-context-menu-separator',\n  template: ' ',\n  inputs: DEFAULT_CONTEXT_MENU_ITEM_INPUTS,\n  providers: [{ provide: OComponentMenuBaseItem, useExisting: forwardRef(() => OContextMenuSeparatorComponent) }]\n})\nexport class OContextMenuSeparatorComponent extends OComponentMenuBaseItem  {\n\n  public type = OComponentMenuBaseItem.TYPE_SEPARATOR_MENU;\n\n}\n","import {\n  ChangeDetectorRef,\n  Injector,\n  ModuleWithProviders,\n  NgModule,\n  OnDestroy,\n  Pipe,\n  PipeTransform,\n  Type\n} from '@angular/core';\n\nimport { OTranslateService } from '../services/translate/o-translate.service';\nimport { Util } from '../util/util';\n\nexport interface ITranslatePipeArgument {\n  values?: any[];\n}\n\n@Pipe({\n  name: 'oTranslate',\n  pure: false // required to update the value when the promise is resolved\n})\nexport class OTranslatePipe implements PipeTransform, OnDestroy {\n\n  public value: string = '';\n  public lastKey: string;\n  public lastParams: any;\n\n  public onLanguageChanged: any; // Change this from EventEmitter<any> to any because Error: Type 'Subscription' is missing the following properties from type 'EventEmitter<any>': emit, subscribe, observers, isStopped, and 15 more.\n\n  protected oTranslateService: OTranslateService;\n  protected _ref: ChangeDetectorRef;\n\n  constructor(protected injector: Injector) {\n    this._ref = this.injector.get<ChangeDetectorRef>(ChangeDetectorRef as Type<ChangeDetectorRef>);\n    this.oTranslateService = this.injector.get<OTranslateService>(OTranslateService as Type<OTranslateService>);\n  }\n\n  public ngOnDestroy(): void {\n    this._dispose();\n  }\n\n  public transform(text: string, args?: ITranslatePipeArgument): string {\n    if (!text || text.length === 0) {\n      return text;\n    }\n\n    // if we ask another time for the same key, return the last value\n    if (Util.equals(text, this.lastKey) && Util.equals(args, this.lastParams)) {\n      return this.value;\n    }\n\n    // store the query, in case it changes\n    this.lastKey = text;\n\n    // store the params, in case they change\n    this.lastParams = args;\n\n    // set the value\n    this.updateValue(text);\n\n    // if there is a subscription to onLanguageChanged, clean it\n    this._dispose();\n\n    // subscribe to onLanguageChanged event, in case the language changes\n    if (!this.onLanguageChanged) {\n      this.onLanguageChanged = this.oTranslateService.onLanguageChanged.subscribe(lang => {\n        if (this.lastKey) {\n          this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n          this.updateValue(text);\n        }\n      });\n    }\n    return this.value;\n  }\n\n  public updateValue(key: string): void {\n    const args = Util.isDefined(this.lastParams) ? this.lastParams.values || [] : [];\n\n    const res = this.oTranslateService.get(key, args);\n    this.value = res !== undefined ? res : key;\n    this.lastKey = key;\n    this._ref.markForCheck();\n  }\n\n  protected _dispose(): void {\n    if (typeof this.onLanguageChanged !== 'undefined') {\n      this.onLanguageChanged.unsubscribe();\n      this.onLanguageChanged = undefined;\n    }\n  }\n\n}\n\n@NgModule({\n  declarations: [OTranslatePipe],\n  imports: [],\n  exports: [OTranslatePipe]\n})\nexport class OTranslateModule {\n  public static forRoot(): ModuleWithProviders<OTranslateModule> {\n    return {\n      ngModule: OTranslateModule,\n      providers: []\n    };\n  }\n}\n","import { Component, Injector, Input, ViewChild } from '@angular/core';\nimport { MatMenu } from '@angular/material/menu';\n\nimport { OContextMenuGroupComponent } from '../../context-menu-group/o-context-menu-group.component';\nimport { OContextMenuItemComponent } from '../../context-menu-item/o-context-menu-item.component';\nimport { OContextMenuSeparatorComponent } from '../../context-menu-separator/o-context-menu-separator.component';\nimport { OComponentMenuBaseItem } from '../../o-content-menu-base-item.class';\n\nexport const DEFAULT_CONTEXT_MENU_CONTENT_ITEM_INPUTS = [\n  'items',\n  'class'\n];\n\n@Component({\n  selector: 'o-wrapper-content-menu',\n  templateUrl: 'o-wrapper-content-menu.component.html',\n  styleUrls: ['./o-wrapper-content-menu.component.scss'],\n  inputs: DEFAULT_CONTEXT_MENU_CONTENT_ITEM_INPUTS\n})\nexport class OWrapperContentMenuComponent {\n\n  public class: string;\n\n  @Input()\n  public items: OComponentMenuBaseItem[];\n\n  @ViewChild('childMenu', { static: true })\n  public childMenu: MatMenu;\n\n  @ViewChild(OWrapperContentMenuComponent, { static: true })\n  public menu: OWrapperContentMenuComponent;\n\n  constructor(\n    protected injector: Injector\n  ) { }\n\n  public onClick(item: OComponentMenuBaseItem, event?): void {\n    if (item instanceof OContextMenuItemComponent) {\n      item.triggerExecute(item.data, event);\n    }\n  }\n\n  public isGroup(item: OComponentMenuBaseItem): boolean {\n    return item instanceof OContextMenuGroupComponent;\n  }\n\n  public isSeparator(item: OComponentMenuBaseItem): boolean {\n    return item instanceof OContextMenuSeparatorComponent;\n  }\n\n  public isItem(item: OComponentMenuBaseItem): boolean {\n    return item instanceof OContextMenuItemComponent;\n  }\n\n  public getChildren(item: OComponentMenuBaseItem) {\n    return item instanceof OContextMenuGroupComponent ? item.children : [];\n  }\n\n}\n","<mat-menu class=\"o-mat-menu\" #childMenu=\"matMenu\" [class]=\"class\" [overlapTrigger]=\"false\" [hasBackdrop]=\"false\">\n  <ng-container *ngFor=\"let child of items\">\n    <!-- Handle branch node menu items -->\n    <span *ngIf=\"isGroup(child) && child.isVisible\">\n      <button mat-menu-item color=\"primary\" [matMenuTriggerFor]=\"menu.childMenu\" [disabled]=\"child.disabled\">\n        <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n        <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n        <span>{{ child.label | oTranslate}}</span>\n      </button>\n      <o-wrapper-content-menu #menu [items]=\"getChildren(child)\" [class]=\"class\"></o-wrapper-content-menu>\n    </span>\n    <!-- Handle leaf node menu items -->\n    <button mat-menu-item (click)=\"onClick(child, $event)\" [disabled]=\"child.disabled\" *ngIf=\"isItem(child) && child.isVisible\">\n      <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n      <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n      <span>{{ child.label | oTranslate}} </span>\n    </button>\n    <!-- separator leaf node menu items -->\n    <mat-divider *ngIf=\"isSeparator(child) && child.isVisible\"></mat-divider>\n  </ng-container>\n</mat-menu>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { AfterViewInit, Component, EventEmitter, HostListener, Injector, OnInit, QueryList, ViewChild } from '@angular/core';\nimport { MatMenuTrigger } from '@angular/material/menu';\n\nimport { OContextMenuGroupComponent } from '../context-menu-group/o-context-menu-group.component';\nimport { OContextMenuItemComponent } from '../context-menu-item/o-context-menu-item.component';\nimport { OComponentMenuBaseItem } from '../o-content-menu-base-item.class';\n\nexport const DEFAULT_CONTEXT_MENU_CONTENT_INPUTS = [\n  'menuItems',\n  'externalMenuItems',\n  'overlay',\n  'data',\n  'menuClass'\n];\n\nexport const DEFAULT_CONTEXT_MENU_CONTENT_OUTPUTS = [\n  'execute',\n  'close'\n];\n\n@Component({\n  selector: 'o-context-menu-content',\n  templateUrl: 'o-context-menu-content.component.html',\n  inputs: DEFAULT_CONTEXT_MENU_CONTENT_INPUTS,\n  outputs: DEFAULT_CONTEXT_MENU_CONTENT_OUTPUTS,\n  host: {\n    '[class.o-context-menu-content]': 'true'\n  }\n})\nexport class OContextMenuContentComponent implements AfterViewInit, OnInit {\n\n  public menuItems: QueryList<OComponentMenuBaseItem>;\n  public externalMenuItems: QueryList<OComponentMenuBaseItem>;\n  public overlay: OverlayRef;\n  public data: any;\n  public menuClass: string;\n  public execute: EventEmitter<{ event: Event, data: any, menuItem: OContextMenuItemComponent }> = new EventEmitter();\n  public close: EventEmitter<any> = new EventEmitter();\n  @ViewChild(MatMenuTrigger)\n  public trigger: MatMenuTrigger;\n  public allMenuItems: OComponentMenuBaseItem[];\n\n  constructor(\n    protected injector: Injector\n  ) { }\n\n  @HostListener('document:click')\n  public click(): void {\n    this.closeContent();\n  }\n\n  public ngOnInit(): void {\n    this.initialize();\n  }\n\n  public ngAfterViewInit(): void {\n    this.trigger.openMenu();\n  }\n\n\n  public initialize(): void {\n    const menuItemsArray = this.menuItems ? this.menuItems.toArray() : [];\n    const externalItemsArray = this.externalMenuItems ? this.externalMenuItems.toArray() : [];\n    this.allMenuItems = menuItemsArray.concat(externalItemsArray);\n    this.setData(this.allMenuItems);\n  }\n\n  public setData(items: OComponentMenuBaseItem[]): void {\n    if (this.data) {\n      (items || []).forEach((menuItem: OComponentMenuBaseItem) => {\n        menuItem.data = this.data;\n        if (menuItem instanceof OContextMenuGroupComponent) {\n          this.setData(menuItem.children);\n        }\n      });\n    }\n  }\n\n  public onMenuClosed(): void {\n    this.closeContent();\n  }\n\n  public closeContent(): void {\n    this.trigger.closeMenu();\n    this.close.emit();\n  }\n\n}\n","<button mat-button [matMenuTriggerFor]=\"menu.childMenu\" (menuClosed)=\"onMenuClosed()\"></button>\n<o-wrapper-content-menu #menu [items]=\"allMenuItems\" [class]=\"menuClass\"> </o-wrapper-content-menu>","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OContextMenuOverlayService {\n  protected overlays: OverlayRef[] = [];\n\n  public addOverlay(value: OverlayRef) {\n    this.overlays.push(value);\n  }\n\n  public destroyOverlays(): void {\n    if (this.overlays) {\n      this.overlays.forEach((overlay) => {\n        overlay.detach();\n        overlay.dispose();\n      });\n    }\n    this.overlays = [];\n  }\n}","import { Overlay, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ChangeDetectorRef, ComponentRef, ElementRef, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { IOContextMenuClickEvent, IOContextMenuContext } from '../../interfaces/o-context-menu.interface';\nimport { OContextMenuContentComponent } from './context-menu/o-context-menu-content.component';\nimport { OContextMenuOverlayService } from './o-context-menu-overlay.service';\n\n@Injectable()\nexport class OContextMenuService implements OnDestroy {\n\n  public showContextMenu: Subject<IOContextMenuClickEvent> = new Subject<IOContextMenuClickEvent>();\n  public closeContextMenu: Subject<void> = new Subject<void>();\n  protected fakeElement: ElementRef = new ElementRef({ nativeElement: '' });\n  protected subscription: Subscription = new Subscription();\n\n  constructor(\n    private overlay: Overlay,\n    private scrollStrategy: ScrollStrategyOptions,\n    private cd: ChangeDetectorRef,\n    private overlayService: OContextMenuOverlayService,\n    private renderer: Renderer2\n  ) { }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public openContextMenu(context: IOContextMenuContext): void {\n    this.destroyOverlays();\n    this.createOverlay(context);\n  }\n\n  protected destroyOverlays(): void {\n    this.overlayService.destroyOverlays();\n  }\n\n  // Create overlay and attach `o-context-menu-content` to it in order to trigger the menu click, the menu opens in a new overlay\n  // TODO: try to use only one overlay\n  protected createOverlay(context: IOContextMenuContext): void {\n    context.event.preventDefault();\n    context.event.stopPropagation();\n\n    this.fakeElement.nativeElement.getBoundingClientRect = (): DOMRect => ({\n      bottom: context.event.clientY,\n      height: 0,\n      left: context.event.clientX,\n      right: context.event.clientX,\n      top: context.event.clientY,\n      width: 0,\n      x: 0,\n      y: 0,\n      toJSON: () => { }\n    });\n\n    const positionStrategy = this.overlay.position()\n      .flexibleConnectedTo(context.anchorElement || this.fakeElement)\n      .withPositions([{\n        overlayX: 'start',\n        overlayY: 'top',\n        originX: 'start',\n        originY: 'bottom'\n      }]);\n\n    const overlayRef = this.overlay.create({\n      positionStrategy: positionStrategy,\n      hasBackdrop: false,\n      panelClass: ['o-context-menu'],\n      scrollStrategy: this.scrollStrategy.close()\n    });\n\n    this.overlayService.addOverlay(overlayRef);\n\n    this.attachContextMenu(overlayRef, context);\n\n    setTimeout(() => {\n      // Workaround to delete first level menu trigger\n      overlayRef.hostElement.classList.add('overlay-ref-display-none');\n      const nextSibling = overlayRef.hostElement.nextElementSibling;\n      if (nextSibling) {\n        const top = nextSibling.getBoundingClientRect().top;\n        this.renderer.setStyle(nextSibling, 'top', `${top - 32}px`);\n      }\n\n      this.cd.detectChanges();\n    })\n  }\n\n  protected attachContextMenu(overlay: OverlayRef, context: IOContextMenuContext): void {\n    const contextMenuContent: ComponentRef<OContextMenuContentComponent> = overlay.attach(new ComponentPortal(OContextMenuContentComponent));\n    contextMenuContent.instance.overlay = overlay;\n    contextMenuContent.instance.menuItems = context.menuItems;\n    contextMenuContent.instance.externalMenuItems = context.externalMenuItems;\n    contextMenuContent.instance.data = context.data;\n    contextMenuContent.instance.menuClass = context.class;\n    this.subscription.add(contextMenuContent.instance.close.subscribe(() => {\n      this.closeContextMenu.next();\n      this.destroyOverlays();\n    }));\n  }\n\n}\n","import { Component, ContentChildren, EventEmitter, Injector, OnDestroy, OnInit, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IOContextMenuContext } from '../../interfaces/o-context-menu.interface';\nimport { OComponentMenuBaseItem } from './o-content-menu-base-item.class';\nimport { OContextMenuService } from './o-context-menu.service';\n\nexport const DEFAULT_OUTPUTS_O_CONTEXT_MENU = [\n  'onShow',\n  'onClose'\n];\n\n@Component({\n  selector: 'o-context-menu',\n  template: ' ',\n  outputs: DEFAULT_OUTPUTS_O_CONTEXT_MENU,\n  providers: [OContextMenuService]\n})\nexport class OContextMenuComponent implements OnDestroy, OnInit {\n  public externalContextMenuItems: QueryList<OComponentMenuBaseItem>;\n  @ContentChildren(OComponentMenuBaseItem)\n  public oContextMenuItems: QueryList<OComponentMenuBaseItem>;\n\n  public origin: HTMLElement;\n  public onShow: EventEmitter<any> = new EventEmitter();\n  public onClose: EventEmitter<any> = new EventEmitter();\n\n  public oContextMenuService: OContextMenuService;\n  protected subscription: Subscription = new Subscription();\n\n  constructor(\n    protected injector: Injector\n  ) {\n    this.oContextMenuService = this.injector.get(OContextMenuService);\n  }\n\n  public ngOnInit(): void {\n    this.subscription.add(this.oContextMenuService.showContextMenu.subscribe(param => this.showContextMenu(param)));\n    this.subscription.add(this.oContextMenuService.closeContextMenu.subscribe(param => this.onClose.emit()));\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public showContextMenu(params: IOContextMenuContext): void {\n    this.origin = params.event.target as HTMLElement;\n    this.onShow.emit(params);\n    if (params.contextMenu !== this) {\n      return;\n    }\n    params.menuItems = this.oContextMenuItems;\n    params.externalMenuItems = this.externalContextMenuItems;\n    if (params.menuItems.length > 0) {\n      this.oContextMenuService.openContextMenu(params);\n    }\n  }\n\n}\n","import type { ODialogConfig } from \"./o-dialog.config\";\n\nexport abstract class ODialogBase {\n  abstract alert(title: string, message: string, config?: ODialogConfig);\n  abstract info(title: string, message: string, config?: ODialogConfig);\n  abstract warn(title: string, message: string, config?: ODialogConfig);\n  abstract error(title: string, message: string, config?: ODialogConfig);\n  abstract confirm(title: string, message: string, config?: ODialogConfig);\n}","import { Component, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport type { ODialogConfig } from './o-dialog.config';\nimport { ODialogBase } from './o-dialog-base.class';\n\n@Component({\n  selector: 'o-dialog',\n  templateUrl: './o-dialog.component.html',\n  styleUrls: ['./o-dialog.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-dialog]': 'true'\n  },\n  providers: [\n    { provide: ODialogBase, useExisting: forwardRef(() => ODialogComponent) }\n\n  ]\n})\nexport class ODialogComponent {\n\n  protected static DEFAULT_OK_BUTTON_TEXT = 'OK';\n  protected static DEFAULT_CANCEL_BUTTON_TEXT = 'CANCEL';\n\n  protected _title: string;\n  protected _message: string;\n  protected _okButtonText: string;\n  protected _cancelButtonText: string;\n  protected _twoOptions: boolean;\n  protected _useIcon: boolean;\n  protected _icon: string;\n  protected _alertType: string;\n\n  constructor(\n    public dialogRef: MatDialogRef<ODialogComponent>) {\n  }\n\n  onOkClick() {\n    if (this.dialogRef) {\n      this.dialogRef.close(true);\n    }\n  }\n\n  public alert(title: string, message: string, config?: ODialogConfig) {\n    config = this.ensureConfig(config);\n    this.configureDefaultAlert(title, message, config);\n  }\n\n  public info(title: string, message: string, config?: ODialogConfig) {\n    config = this.ensureConfig(config);\n    config.alertType = 'info';\n    if (typeof (config.icon) === 'undefined') {\n      config.icon = 'info';\n    }\n    this.configureDefaultAlert(title, message, config);\n  }\n\n  public warn(title: string, message: string, config?: ODialogConfig) {\n    config = this.ensureConfig(config);\n    config.alertType = 'warn';\n    if (typeof (config.icon) === 'undefined') {\n      config.icon = 'warning';\n    }\n    this.configureDefaultAlert(title, message, config);\n  }\n\n  public error(title: string, message: string, config?: ODialogConfig) {\n    config = this.ensureConfig(config);\n    config.alertType = 'error';\n    if (typeof (config.icon) === 'undefined') {\n      config.icon = 'error';\n    }\n    this.configureDefaultAlert(title, message, config);\n  }\n\n  public confirm(title: string, message: string, config?: ODialogConfig) {\n    config = this.ensureConfig(config);\n    this.configureDefaultAlert(title, message, config);\n    this.twoOptions = true;\n  }\n\n  /* Utility methods */\n  protected ensureConfig(config: ODialogConfig): ODialogConfig {\n    if (!config) {\n      config = {};\n    }\n    return config;\n  }\n\n  protected configureDefaultAlert(title: string, message: string, config?: ODialogConfig) {\n    this.twoOptions = false;\n    this.title = title;\n    this.message = message;\n\n    this.icon = (typeof (config.icon) !== 'undefined') ? config.icon : undefined;\n    if (this.icon !== undefined) {\n      this.useIcon = true;\n    }\n    this.alertType = config.alertType;\n\n    this.okButtonText = (typeof (config.okButtonText) !== 'undefined') ? config.okButtonText : ODialogComponent.DEFAULT_OK_BUTTON_TEXT;\n    this.cancelButtonText = (typeof (config.cancelButtonText) !== 'undefined') ? config.cancelButtonText : ODialogComponent.DEFAULT_CANCEL_BUTTON_TEXT;\n  }\n\n  get isInfo(): boolean {\n    return this.alertType === 'info';\n  }\n\n  get isWarn(): boolean {\n    return this.alertType === 'warn';\n  }\n\n  get isError(): boolean {\n    return this.alertType === 'error';\n  }\n\n  get title(): string {\n    return this._title;\n  }\n\n  set title(val: string) {\n    this._title = val;\n  }\n\n  get message(): string {\n    return this._message;\n  }\n\n  set message(val: string) {\n    this._message = val;\n  }\n\n  get okButtonText(): string {\n    return this._okButtonText;\n  }\n\n  set okButtonText(val: string) {\n    this._okButtonText = val;\n  }\n\n  get cancelButtonText(): string {\n    return this._cancelButtonText;\n  }\n\n  set cancelButtonText(val: string) {\n    this._cancelButtonText = val;\n  }\n\n  get icon(): string {\n    return this._icon;\n  }\n\n  set icon(val: string) {\n    this._icon = val;\n  }\n\n  get alertType(): string {\n    return this._alertType;\n  }\n\n  set alertType(val: string) {\n    this._alertType = val;\n  }\n\n\n  get twoOptions(): boolean {\n    return this._twoOptions;\n  }\n\n  set twoOptions(val: boolean) {\n    this._twoOptions = val;\n  }\n\n  get useIcon(): boolean {\n    return this._useIcon;\n  }\n\n  set useIcon(val: boolean) {\n    this._useIcon = val;\n  }\n}\n","<div *ngIf=\"title && title.length > 0\" mat-dialog-title>{{ title | oTranslate }}</div>\n<div mat-dialog-content>\n  <div fxLayout=\"row\" class=\"alert-content\" [class.alert-content-icon]=\"useIcon\" fxLayoutAlign=\"space-between center\">\n    <mat-icon *ngIf=\"useIcon\" class=\"alert-icon\" [class.info]=\"isInfo\" [class.warn]=\"isWarn\" [class.error]=\"isError\">\n      {{ icon }}\n    </mat-icon>\n    <span [innerHTML]=\"message | oTranslate\"></span>\n  </div>\n</div>\n<mat-dialog-actions align=\"end\">\n  <span fxFlex></span>\n  <button type=\"button\" *ngIf=\"twoOptions\" mat-stroked-button mat-dialog-close class=\"o-button-default cancel\">\n    {{ cancelButtonText | oTranslate }}\n  </button>\n  <button type=\"button\" mat-stroked-button class=\"o-button-primary\" (click)=\"onOkClick()\">{{ okButtonText | oTranslate }}</button>\n</mat-dialog-actions>\n","import { Injectable, Injector } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\n\nimport { ODialogBase } from '../shared/components/dialog/o-dialog-base.class';\nimport { ODialogComponent } from '../shared/components/dialog/o-dialog.component';\nimport type { ODialogConfig } from '../shared/components/dialog/o-dialog.config';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DialogService {\n\n  protected ng2Dialog: MatDialog;\n  dialogRef: MatDialogRef<ODialogBase>;\n\n  constructor(protected injector: Injector) {\n    this.ng2Dialog = this.injector.get(MatDialog);\n  }\n\n  public get dialog(): ODialogBase {\n    if (this.dialogRef) {\n      return this.dialogRef.componentInstance;\n    }\n    return undefined;\n  }\n\n  public alert(title: string, message: string, config?: ODialogConfig): Promise<any> {\n    const self = this;\n    const observable = new Observable(observer => {\n      self.openDialog(observer);\n      self.dialogRef.componentInstance.alert(title, message, config);\n    });\n    return observable.toPromise();\n  }\n\n  public info(title: string, message: string, config?: ODialogConfig): Promise<any> {\n    const self = this;\n    const observable = new Observable(observer => {\n      self.openDialog(observer);\n      self.dialogRef.componentInstance.info(title, message, config);\n    });\n    return observable.toPromise();\n  }\n\n  public warn(title: string, message: string, config?: ODialogConfig): Promise<any> {\n    const self = this;\n    const observable = new Observable(observer => {\n      self.openDialog(observer);\n      self.dialogRef.componentInstance.warn(title, message, config);\n    });\n    return observable.toPromise();\n  }\n\n  public error(title: string, message: string, config?: ODialogConfig): Promise<any> {\n    const self = this;\n    const observable = new Observable(observer => {\n      self.openDialog(observer);\n      self.dialogRef.componentInstance.error(title, message, config);\n    });\n    return observable.toPromise();\n  }\n\n  public confirm(title: string, message: string, config?: ODialogConfig): Promise<any> {\n    const self = this;\n    const observable = new Observable(observer => {\n      self.openDialog(observer);\n      self.dialogRef.componentInstance.confirm(title, message, config);\n    });\n    return observable.toPromise();\n  }\n\n  protected openDialog(observer) {\n    const cfg: MatDialogConfig = {\n      role: 'alertdialog',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-dialog-service']\n    };\n    //TODO It has been typed with the component type because it needed the component but adding it produces a circular dependency\n    this.dialogRef = this.ng2Dialog.open(ODialogComponent, cfg);\n    this.dialogRef.afterClosed().subscribe(result => {\n      result = result === undefined ? false : result;\n      observer.next(result);\n      observer.complete();\n      this.dialogRef = null;\n    });\n  }\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { OBreadcrumb } from '../types/o-breadcrumb-item.type';\n\n@Injectable({ providedIn: 'root' })\nexport class OBreadcrumbService {\n\n  public breadcrumbs$: BehaviorSubject<OBreadcrumb[]> = new BehaviorSubject([]);\n\n  constructor(protected injector: Injector) { }\n\n}\n","import { Location } from '@angular/common';\nimport { EventEmitter, Injectable, Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, NavigationEnd, Router, UrlSegment } from '@angular/router';\nimport { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { ILocalStorageComponent } from '../interfaces/local-storage-component.interface';\nimport { OBreadcrumb } from '../types/o-breadcrumb-item.type';\nimport { ObservableWrapper } from '../util/async';\nimport { Codes } from '../util/codes';\nimport { Util } from '../util/util';\nimport { LocalStorageService } from './local-storage.service';\nimport { OBreadcrumbService } from './o-breadcrumb.service';\n\nexport type ONavigationRoutes = {\n  mainFormLayoutManagerComponent?: boolean;\n  isMainNavigationComponent?: boolean;\n  detailFormRoute: string;\n  editFormRoute: string;\n  insertFormRoute: string;\n};\n\nexport class ONavigationItem {\n  url: string;\n  queryParams: object;\n  activeFormMode: string;\n  formRoutes: ONavigationRoutes;\n  formLayoutRoutes: ONavigationRoutes;\n  keysValues: any;\n  queryConfiguration: any;\n\n  constructor(value: any) {\n    this.url = value.url ? value.url : '';\n    this.queryParams = value[Codes.QUERY_PARAMS] ? value[Codes.QUERY_PARAMS] : {};\n    this.formRoutes = value.formRoutes;\n    this.formLayoutRoutes = value.formLayoutRoutes;\n    this.activeFormMode = value.activeFormMode;\n    this.keysValues = value.keysValues;\n    this.queryConfiguration = value.queryConfiguration;\n  }\n\n  getActiveModePath(): string {\n    let result;\n    if (Util.isDefined(this.activeFormMode)) {\n      result = (this.formRoutes || {})[this.activeFormMode];\n    }\n    return result;\n  }\n\n  isInsertFormRoute(): boolean {\n    return this.activeFormMode === 'insertFormRoute';\n  }\n\n  getInsertFormRoute(): string {\n    const routes = this.formRoutes;\n    return routes ? (routes.insertFormRoute || Codes.DEFAULT_INSERT_ROUTE) : Codes.DEFAULT_INSERT_ROUTE;\n  }\n\n  getEditFormRoute(): string {\n    const routes = this.formRoutes;\n    return routes ? (routes.editFormRoute || Codes.DEFAULT_EDIT_ROUTE) : Codes.DEFAULT_EDIT_ROUTE;\n  }\n\n  getDetailFormRoute(): string {\n    const routes = this.formRoutes;\n    return routes ? (routes.detailFormRoute || Codes.DEFAULT_DETAIL_ROUTE) : Codes.DEFAULT_DETAIL_ROUTE;\n  }\n\n  isMainFormLayoutManagerComponent(): boolean {\n    return Util.isDefined(this.formLayoutRoutes);\n  }\n\n  isMainNavigationComponent(): boolean {\n    return Util.isDefined(this.formRoutes) && this.formRoutes.isMainNavigationComponent;\n  }\n\n  getFormRoutes(): ONavigationRoutes {\n    return this.formRoutes;\n  }\n\n  setFormRoutes(arg: ONavigationRoutes) {\n    if (arg && arg.mainFormLayoutManagerComponent) {\n      this.formLayoutRoutes = arg;\n    } else {\n      this.formRoutes = arg;\n    }\n  }\n\n  deleteActiveFormMode() {\n    this.activeFormMode = undefined;\n  }\n}\n\nconst MAXIMIUM_NAVIGATION_HEAP_SIZE = 15;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NavigationService implements ILocalStorageComponent {\n\n  public static NAVIGATION_STORAGE_KEY: string = 'nav_service';\n\n  public currentTitle: string = null;\n  public visible: boolean = true;\n\n  protected navigationItems: Array<ONavigationItem> = [];\n  protected allNavigationItems: ONavigationItem[] = [];\n\n  protected router: Router;\n\n  protected oBreadcrumbService: OBreadcrumbService;\n  protected localStorageService: LocalStorageService;\n  protected location: Location;\n\n  public navigationEvents$: ReplaySubject<Array<ONavigationItem>> = new ReplaySubject<Array<ONavigationItem>>(1);\n\n  private readonly _titleEmitter: EventEmitter<any> = new EventEmitter();\n  private readonly _visibleEmitter: EventEmitter<boolean> = new EventEmitter<boolean>();\n  private readonly _sidenavEmitter: EventEmitter<any> = new EventEmitter();\n\n\n  protected isNavigationSubject: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  public isNavigation$: Observable<boolean> = this.isNavigationSubject.asObservable();\n\n  constructor(\n    protected injector: Injector\n  ) {\n    this.router = this.injector.get(Router);\n    this.oBreadcrumbService = this.injector.get(OBreadcrumbService);\n    this.localStorageService = this.injector.get(LocalStorageService);\n    this.location = this.injector.get(Location);\n    this.location.subscribe(val => {\n      const previousRoute = this.getPreviousRouteData();\n      const qParams = Object.keys(previousRoute.queryParams);\n      const arr = [];\n      qParams.forEach((p) => {\n        arr.push(`${p}=${previousRoute.queryParams[p]}`);\n      });\n      let fullUrl = `/${previousRoute.url}`;\n      if (arr.length > 0) {\n        fullUrl = `/${previousRoute.url}?${arr.join('&')}`;\n      }\n      if (fullUrl === val.url) {\n        this.navigationItems.pop();\n      }\n    });\n  }\n\n  set isNavigating(value: boolean) {\n    this.isNavigationSubject.next(value);\n  }\n  get isNavigating(): boolean {\n    return this.isNavigationSubject.getValue();\n  }\n\n\n  initialize(): void {\n    this.router.events.pipe(\n      filter(event => event instanceof NavigationEnd),\n      map(() => this.router.routerState.root),\n      map(route => {\n        while (route.firstChild) {\n          route = route.firstChild;\n        }\n        return route;\n      }),\n      filter(route => route.outlet === 'primary')\n    ).subscribe(this.parseNavigationItems.bind(this));\n  }\n\n  protected buildBreadcrumbsForRoute(activatedRoute: ActivatedRouteSnapshot) {\n    const breadcrumbs: OBreadcrumb[] = [];\n    let url = '';\n    let route = activatedRoute.firstChild;\n    while (route.firstChild) {\n      if (route.url.length) {\n        const pRoute = this.parseRoute(url, route);\n        breadcrumbs.push(pRoute);\n        url = pRoute.route;\n      }\n      route = route.firstChild;\n    }\n    const parsedRoute = this.parseRoute(url, route);\n    breadcrumbs.push(parsedRoute);\n\n    this.oBreadcrumbService.breadcrumbs$.next(breadcrumbs);\n  }\n\n  protected parseRoute(route: string, activatedRoute: ActivatedRouteSnapshot): OBreadcrumb {\n    let label = '';\n    for (let i = 0, len = activatedRoute.url.length; i < len; i++) {\n      const segment: UrlSegment = activatedRoute.url[i];\n      if (label.length === 0) {\n        label = label.length > 0 ? ('/' + segment.path) : segment.path;\n        route += '/' + segment.path;\n      }\n    }\n    return { route, label, queryParams: activatedRoute.queryParams };\n  }\n\n  protected parseNavigationItems() {\n    const storedNavigation: ONavigationItem[] = this.getStoredData();\n    const route: ActivatedRouteSnapshot = this.router.routerState.root.snapshot;\n    const url = this.router.routerState.snapshot.url.split('?')[0];\n    this.buildBreadcrumbsForRoute(route);\n    const lastStored: any = storedNavigation[storedNavigation.length - 1];\n    if (!lastStored || lastStored.url !== url) {\n      const navigationItem = new ONavigationItem({ url, queryParams: route.queryParams });\n\n      this.navigationItems.push(navigationItem);\n      this.setNavigationItems(this.navigationItems);\n    } else {\n      //if lastStored.url == url, it is because the page is reloaded\n      this.navigationItems = storedNavigation;\n    }\n  }\n\n  public setNavigationItems(navigationItems: ONavigationItem[]) {\n    this.navigationItems = navigationItems;\n    this.storeNavigation();\n    this.navigationEvents$.next(navigationItems);\n  }\n\n  public getDataToStore(): object {\n    return this.navigationItems;\n  }\n\n  public getComponentKey(): string {\n    return NavigationService.NAVIGATION_STORAGE_KEY;\n  }\n\n  protected storeNavigation(): void {\n    if (this.localStorageService) {\n      this.localStorageService.updateComponentStorage(this);\n    }\n  }\n\n  public setTitle(title: string): void {\n    this.currentTitle = title;\n    this._emitTitleChanged(this.currentTitle);\n  }\n\n  public setVisible(visible: boolean): void {\n    this.visible = visible;\n    this._emitVisibleChanged(this.visible);\n  }\n\n  public openSidenav() {\n    this._emitOpenSidenav();\n  }\n\n  public closeSidenav() {\n    this._emitCloseSidenav();\n  }\n\n  /**\n   * Subscribe to title updates\n   */\n  public onTitleChange(onNext: (value: any) => void): object {\n    return ObservableWrapper.subscribe(this._titleEmitter, onNext);\n  }\n\n  public onVisibleChange(onNext: (value: boolean) => void): object {\n    return ObservableWrapper.subscribe(this._visibleEmitter, onNext);\n  }\n\n  public onSidenavChange(onNext: (value: any) => void): object {\n    return ObservableWrapper.subscribe(this._sidenavEmitter, onNext);\n  }\n\n  private _emitTitleChanged(title): void {\n    ObservableWrapper.callEmit(this._titleEmitter, title);\n  }\n\n  private _emitVisibleChanged(visible): void {\n    ObservableWrapper.callEmit(this._visibleEmitter, visible);\n  }\n\n  private _emitOpenSidenav() {\n    ObservableWrapper.callEmit(this._sidenavEmitter, 'open');\n  }\n\n  private _emitCloseSidenav() {\n    ObservableWrapper.callEmit(this._sidenavEmitter, 'close');\n  }\n\n  storeFormRoutes(routes: ONavigationRoutes, activeMode: string, queryConf?: any) {\n    if (this.navigationItems.length > 0) {\n      this.navigationItems[this.navigationItems.length - 1].setFormRoutes(routes);\n      this.navigationItems[this.navigationItems.length - 1].activeFormMode = activeMode;\n      if (queryConf) {\n        this.navigationItems[this.navigationItems.length - 1].keysValues = queryConf.keysValues;\n        delete queryConf.keysValues;\n        this.navigationItems[this.navigationItems.length - 1].queryConfiguration = Object.keys(queryConf).length > 0 ? queryConf : null;\n      }\n      this.storeNavigation();\n    }\n  }\n\n  protected getStoredData(): any[] {\n    const storageData: any = this.localStorageService.getComponentStorage(this);\n    const result = [];\n    Object.keys(storageData).forEach(key => result.push(new ONavigationItem(storageData[key])));\n    return result;\n  }\n\n  getPreviousRouteData(): ONavigationItem {\n    let result: ONavigationItem;\n    const len = this.navigationItems.length;\n    if (len >= 2) {\n      result = this.navigationItems[len - 2];\n      if (result && result.formRoutes && result.formRoutes.mainFormLayoutManagerComponent && this.navigationItems[len - 3]) {\n        const parent = this.navigationItems[len - 3];\n        if (parent.isMainFormLayoutManagerComponent()) {\n          result = parent;\n        }\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Return the main navigation route data that matches the most with the current route\n   */\n  getLastMainNavigationRouteData(): ONavigationItem {\n    const routeMatches = [];\n    const items = this.navigationItems.slice().reverse()\n      .map((item, i) => {\n        let currentLocation = this.location.path().substr(1);\n        if (currentLocation.includes('?')) {\n          currentLocation = currentLocation.substring(0, currentLocation.indexOf('?'));\n        }\n\n        // Compare current route with item route and count segment matches\n        const arr1 = item.url.substr(1).split('/');\n        const arr2 = currentLocation.split('/');\n        let result = 0;\n        let index = -1;\n        while (++index <= arr1.length && index <= arr2.length) {\n          routeMatches[i] = (arr1[index] === arr2[index]) ? result++ : result;\n        }\n\n        return item;\n      });\n\n    if (!routeMatches.length) {\n      return void 0;\n    }\n    let maxMatches = routeMatches.reduce((a, b) => Math.max(a, b));\n    const lastNavItem = this.navigationItems[this.navigationItems.length - 1];\n    if (!lastNavItem.isMainNavigationComponent() && !lastNavItem.isMainFormLayoutManagerComponent()) {\n      maxMatches--;\n    }\n    let itemResult = void 0;\n    while (!itemResult && maxMatches >= 0) {\n      itemResult = items.find((item, i) => (item.isMainNavigationComponent() || item.isMainFormLayoutManagerComponent()) && routeMatches[i] === maxMatches);\n      maxMatches--;\n    }\n    return itemResult;\n  }\n\n  removeLastItem() {\n    this.navigationItems.pop();\n    this.storeNavigation();\n  }\n\n  removeLastItemsUntilMain() {\n    const lastMain = this.getLastMainNavigationRouteData();\n    if (!Util.isDefined(lastMain)) {\n      return false;\n    }\n    const index = this.navigationItems.indexOf(lastMain);\n    this.navigationItems = this.navigationItems.slice(0, index + 1);\n    this.storeNavigation();\n    return true;\n  }\n\n  isCurrentRoute(route: string): boolean {\n    let currentRoute = this.router.routerState.snapshot.url;\n    currentRoute = currentRoute.split('?')[0];\n    return route === currentRoute;\n  }\n\n  getLastItem(): ONavigationItem {\n    let result;\n    if (this.navigationItems.length > 0) {\n      result = this.navigationItems[this.navigationItems.length - 1];\n    }\n    return result;\n  }\n\n  deleteActiveFormMode(arg: ONavigationItem) {\n    arg.deleteActiveFormMode();\n    this.storeNavigation();\n  }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport type { OSnackBarConfig } from \"./o-snackbar.component\";\n@Injectable()\nexport abstract class OSnackBarBase {\n  abstract open(message: string, config?: OSnackBarConfig): void;\n}","import { Component, Injector, forwardRef } from '@angular/core';\nimport { MatSnackBarRef } from '@angular/material/snack-bar';\nimport { OSnackBarBase } from './o-snackbar-base.class';\n\nexport declare type OSnackBarIconPosition = 'left' | 'right';\n\n/**\n * Configuration for showing a SnackBar with the SnackBar service.\n */\nexport class OSnackBarConfig {\n  /** Text shown in the action button. */\n  public action?: string;\n  /** Time the SnackBar is shown. */\n  public milliseconds?: number;\n  /** Material icon shown in the SnackBar. */\n  public icon?: string;\n  /** Position where the icon is shown. Default left. */\n  public iconPosition?: OSnackBarIconPosition;\n  /** CSS class to be added to the snack bar container */\n  public cssClass?: string;\n}\n\n@Component({\n  selector: 'o-snackbar',\n  templateUrl: 'o-snackbar.component.html',\n  styleUrls: ['o-snackbar.component.scss'],\n  host: {\n    '[class.o-snackbar]': 'true'\n  },\n  providers: [\n    { provide: OSnackBarBase, useExisting: forwardRef(() => OSnackBarComponent) }\n\n  ]\n})\nexport class OSnackBarComponent {\n\n  public message: string;\n  public action: string;\n  public icon: string;\n  public iconPosition: OSnackBarIconPosition = 'left';\n\n  protected snackBarRef: MatSnackBarRef<{}>;\n\n  constructor(\n    protected injector: Injector\n  ) {\n    this.snackBarRef = this.injector.get(MatSnackBarRef);\n  }\n\n  public open(message: string, config?: OSnackBarConfig): void {\n    this.message = message;\n    if (config) {\n      if (config.action) {\n        this.action = config.action;\n      }\n      if (config.icon) {\n        this.icon = config.icon;\n      }\n      if (config.iconPosition) {\n        this.iconPosition = config.iconPosition;\n      }\n    }\n  }\n\n  public onAction(): void {\n    this.snackBarRef.dismissWithAction();\n  }\n\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n  <mat-icon *ngIf=\"icon && iconPosition==='left'\" class=\"o-snackbar-icon\">{{ icon }}</mat-icon>\n  <span fxFlex class=\"o-snackbar-message\">\n    {{ message | oTranslate }}\n  </span>\n  <mat-icon *ngIf=\"icon && iconPosition==='right'\" class=\"o-snackbar-icon\">{{ icon }}</mat-icon>\n  <button type=\"button\" *ngIf=\"action\" (click)=\"onAction()\"\n    class=\"mat-simple-snackbar-action\">{{ action | oTranslate }}</button>\n</div>\n","import { Injectable, Injector } from '@angular/core';\nimport { MatSnackBar, MatSnackBarConfig, MatSnackBarRef } from '@angular/material/snack-bar';\nimport { Observable } from 'rxjs';\n\nimport { OSnackBarComponent, OSnackBarConfig } from '../shared/components/snackbar/o-snackbar.component';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SnackBarService {\n\n  protected static DEFAULT_DURATION: number = 2000;\n  protected static DEFAULT_CONTAINER_CLASS: string = 'o-snackbar-container';\n\n  protected matSnackBar: MatSnackBar;\n  protected snackBarRef: MatSnackBarRef<OSnackBarComponent>;\n\n  constructor(\n    protected injector: Injector,\n  ) {\n    this.matSnackBar = this.injector.get(MatSnackBar);\n  }\n\n  public open(message: string, config?: OSnackBarConfig): Promise<any> {\n    const self = this;\n    const observable: Observable<any> = new Observable(observer => {\n      const containerClasses: string[] = [SnackBarService.DEFAULT_CONTAINER_CLASS];\n      if (config && config.cssClass) {\n        containerClasses.push(config.cssClass);\n      }\n\n      const matConfig: MatSnackBarConfig = {\n        duration: config && config.milliseconds ? config.milliseconds : SnackBarService.DEFAULT_DURATION,\n        panelClass: containerClasses\n      };\n\n      self.snackBarRef = self.matSnackBar.openFromComponent(OSnackBarComponent, matConfig);\n\n      self.snackBarRef.onAction().subscribe(arg => {\n        observer.next(arg);\n      });\n\n      self.snackBarRef.afterDismissed().subscribe(() => {\n        observer.complete();\n        self.snackBarRef = null;\n      });\n\n      self.snackBarRef.instance.open(message, config);\n    });\n    return observable.toPromise();\n  }\n\n\n\n}\n","import { AfterViewInit, Component, Injector, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { NavigationService } from '../../services/navigation.service';\nimport { OBreadcrumbService } from '../../services/o-breadcrumb.service';\nimport { OBreadcrumb } from '../../types/o-breadcrumb-item.type';\nimport { Codes } from '../../util/codes';\nimport { Util } from '../../util/util';\nimport { OFormBase } from '../form/o-form-base.class';\nexport const DEFAULT_INPUTS_O_BREADCRUMB = [\n  // form [OFormComponent]: Ontimize Web Form reference.\n  '_formRef: form',\n\n  // label-columns [string]: Form values shown on each element. Separated by ';'. Default: no value.\n  'labelColumns: label-columns',\n\n  // separator [string]: Form values shown on each element. Separated by ';'. Default: no value.\n  'separator'\n];\n\n@Component({\n  selector: 'o-breadcrumb',\n  templateUrl: 'o-breadcrumb.component.html',\n  styleUrls: ['o-breadcrumb.component.scss'],\n  inputs: DEFAULT_INPUTS_O_BREADCRUMB,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-breadcrumb]': 'true'\n  }\n})\nexport class OBreadcrumbComponent implements AfterViewInit, OnDestroy, OnInit {\n\n  public labelColumns: string;\n  public separator: string = ' ';\n  public breadcrumbs: BehaviorSubject<OBreadcrumb[]> = new BehaviorSubject([]);\n\n  protected router: Router;\n  set form(value: OFormBase) {\n    this._formRef = value;\n  }\n  protected _formRef: OFormBase;\n  protected labelColsArray: Array<string> = [];\n  protected navigationService: NavigationService;\n  protected subscription: Subscription = new Subscription();\n  protected oBreadcrumService: OBreadcrumbService;\n\n  constructor(\n    protected injector: Injector\n  ) {\n    this.router = this.injector.get(Router);\n    this.oBreadcrumService = this.injector.get(OBreadcrumbService);\n  }\n\n  ngOnInit() {\n    this.labelColsArray = Util.parseArray(this.labelColumns);\n\n    this.subscription.add(\n      this.oBreadcrumService.breadcrumbs$.subscribe(bs => this.breadcrumbs.next(bs))\n    );\n  }\n\n  ngAfterViewInit() {\n    if (this._formRef && this.labelColsArray.length) {\n      const self = this;\n      this.subscription.add(this._formRef.onDataLoaded.subscribe((value: any) => {\n        if (self.breadcrumbs.value.length) {\n          const displayText = self.labelColsArray.map(element => value[element]).join(self.separator);\n          self.breadcrumbs.value[self.breadcrumbs.value.length - 1].displayText = displayText;\n        }\n      }));\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n  }\n\n  isCurrentRoute(route: OBreadcrumb): boolean {\n    return route.route === this.router.routerState.snapshot.url.split('?')[0];\n  }\n\n  onRouteClick(route: OBreadcrumb) {\n    const extras = {};\n    if (route.queryParams) {\n      extras[Codes.QUERY_PARAMS] = route.queryParams;\n    }\n    this.router.navigate([route.route], extras);\n  }\n\n}\n","<mat-toolbar class=\"toolbar-breadcrumb\">\n  <ng-container *ngFor=\"let route of breadcrumbs | async; index as i; last as isLast\">\n    <span *ngIf=\"isCurrentRoute(route); else bredcrumItem\" class=\"breadcrumb-item active\" layout-padding>\n      {{ route.displayText ? route.displayText : route.label | uppercase | oTranslate }}\n    </span>\n    <ng-template #bredcrumItem>\n      <a (click)=\"onRouteClick(route)\" class=\"breadcrumb-item\" layout-padding>\n        {{ route.displayText ? route.displayText : route.label | uppercase | oTranslate }}\n      </a>\n    </ng-template>\n    <mat-icon *ngIf=\"!isLast\" svgIcon=\"ontimize:keyboard_arrow_right\"></mat-icon>\n  </ng-container>\n</mat-toolbar>\n","import { AfterViewInit, Component, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { OBreadcrumbComponent } from '../../components/breadcrumb/o-breadcrumb.component';\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { OFormBase } from '../form/o-form-base.class';\nimport { OFormLayoutManagerBase } from '../../layouts/form-layout/o-form-layout-manager-base.class';\n\nexport const DEFAULT_INPUTS_O_FORM_CONTAINER = [\n  // breadcrumb [boolean]: show breadscrum of the form. Default: yes.\n  'breadcrumb',\n  'breadcrumbSeparator : breadcrumb-separator',\n  'breadcrumbLabelColumns : breadcrumb-label-columns',\n  'form'\n];\n\n@Component({\n  selector: 'o-form-container',\n  templateUrl: './o-form-container.component.html',\n  styleUrls: ['./o-form-container.component.scss'],\n  inputs: DEFAULT_INPUTS_O_FORM_CONTAINER,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-form-container]': 'true',\n    '[class.breadcrumb]': 'breadcrumb'\n  }\n})\nexport class OFormContainerComponent implements AfterViewInit {\n\n  @ViewChild('breadcrumb', { read: ViewContainerRef }) breadContainer: ViewContainerRef;\n\n  @BooleanInputConverter()\n  breadcrumb: boolean = false;\n  public breadcrumbLabelColumns: string;\n  public breadcrumbSeparator: string = ' ';\n\n  protected form: OFormBase;\n  protected formMananger: OFormLayoutManagerBase;\n\n  ngAfterViewInit() {\n    this.breadcrumb = this.breadcrumb && this.form && !this.formMananger;\n    if (this.breadcrumb) {\n      this.createBreadcrumb(this.breadContainer);\n    }\n  }\n\n  setForm(form: OFormBase) {\n    this.form = form;\n    this.formMananger = form.getFormManager();\n  }\n\n  createBreadcrumb(container: ViewContainerRef) {\n    const ref = container.createComponent(OBreadcrumbComponent);\n    ref.instance.form = this.form;\n    ref.instance.labelColumns = this.breadcrumbLabelColumns;\n    ref.instance.separator = this.breadcrumbSeparator;\n  }\n\n}\n","<div class=\"o-form-container-content\">\n  <ng-template #breadcrumb></ng-template>\n  <ng-content></ng-content>\n</div>","import { AbstractControlOptions, AsyncValidatorFn, UntypedFormControl, ValidatorFn } from '@angular/forms';\n\nimport { OFormDataComponent } from '../o-form-data-component.class';\n\nexport class OFormControl extends UntypedFormControl {\n  public fControlChildren: (UntypedFormControl | OFormDataComponent)[];\n\n  constructor(\n    formState: any = null,\n    validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n    asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n  ) {\n    super(formState, validatorOrOpts, asyncValidator);\n  }\n\n  markAsTouched(opts: { onlySelf?: boolean } = {}): void {\n    super.markAsTouched(opts);\n    if (!this.fControlChildren) {\n      return;\n    }\n    this.fControlChildren.forEach(x => {\n      if (x instanceof UntypedFormControl) {\n        x.markAsTouched(opts);\n      } else if (x.getFormControl()) {\n        x.getFormControl().markAsTouched();\n      }\n    });\n  }\n\n  markAsDirty(opts: { onlySelf?: boolean } = {}): void {\n    super.markAsDirty(opts);\n    if (!this.fControlChildren) {\n      return;\n    }\n    this.fControlChildren.forEach(x => {\n      if (x instanceof UntypedFormControl) {\n        x.markAsDirty(opts);\n      } else if (x.getFormControl()) {\n        x.getFormControl().markAsDirty();\n      }\n    });\n  }\n\n  markAsPristine(opts: { onlySelf?: boolean } = {}): void {\n    super.markAsPristine(opts);\n    if (!this.fControlChildren) {\n      return;\n    }\n    this.fControlChildren.forEach(x => {\n      if (x instanceof UntypedFormControl) {\n        x.markAsPristine(opts);\n      } else if (x.getFormControl()) {\n        x.getFormControl().markAsPristine();\n      }\n    });\n  }\n\n  getValue() {\n    return this.value;\n  }\n\n  /**setValue(value: any, options: { } => Not override this method because there is a case where the children have a different value than the main one\n   */\n}\n","import { EventEmitter } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IFormControlComponent } from '../../../interfaces/form-control-component.interface';\nimport { IFormDataComponent } from '../../../interfaces/form-data-component.interface';\nimport { Util } from '../../../util/util';\nimport { OFormBase } from '../o-form-base.class';\n\nexport class OFormCacheClass {\n\n  protected initialDataCache: object = {};\n  protected formDataCache: object;\n  protected valueChangesStack: Array<any> = [];\n  protected _componentsSubscritpions: any = {};\n  protected blockCaching: boolean = false;\n  protected initializedCache: boolean = false;\n\n  onCacheStateChanges: EventEmitter<any> = new EventEmitter<any>();\n\n  protected changedFormControls: string[] = [];\n\n  constructor(protected form: OFormBase) {\n  }\n\n  protected updateFormDataCache() {\n    this.formDataCache = this.form.getRegisteredFieldsValues();\n  }\n\n  protected addChangeToStack(comp: IFormControlComponent) {\n    const currentValue = comp.getFormControl().value;\n    this.valueChangesStack.push({\n      attr: comp.getAttribute(),\n      value: currentValue\n    });\n    this.onCacheStateChanges.emit();\n  }\n\n  protected registerComponentCaching(comp: IFormDataComponent) {\n    const attr = comp.getAttribute();\n    const listenTo = this.form.detectChangesOnBlur ? comp.onValueChange : comp.onChange;\n    if (!Util.isDefined(listenTo)) {\n      return;\n    }\n    this._componentsSubscritpions[attr] = listenTo.subscribe(() => {\n      if (this.initializedCache && !this.blockCaching && this.hasComponentChanged(attr, comp)) {\n        if (this.changedFormControls.indexOf(attr) === -1) {\n          this.changedFormControls.push(attr);\n        }\n        this.updateFormDataCache();\n        this.addChangeToStack(comp);\n      }\n    });\n  }\n\n  getCachedValue(attr: string): any {\n    if (this.formDataCache && this.formDataCache.hasOwnProperty(attr)) {\n      return this.formDataCache[attr];\n    }\n    return undefined;\n  }\n\n  destroy() {\n    Object.keys(this._componentsSubscritpions).forEach((attr) => {\n      const subs: Subscription = this._componentsSubscritpions[attr];\n      subs.unsubscribe();\n    });\n    this._componentsSubscritpions = {};\n    this.formDataCache = undefined;\n    this.changedFormControls = [];\n  }\n\n  protected removeUndefinedProperties(arg: any): any {\n    Object.keys(arg).forEach((key) => {\n      if (arg[key] === undefined) {\n        delete arg[key];\n      }\n    });\n    return arg;\n  }\n\n  registerCache() {\n    const initialCache = this.form.getRegisteredFieldsValues();\n    this.removeUndefinedProperties(initialCache);\n    this.initializeCache(initialCache);\n    this.formDataCache = initialCache;\n\n    const components = this.form.getComponents();\n    const self = this;\n    Object.keys(components).forEach(attr => {\n      const comp: IFormDataComponent = components[attr];\n      if (comp.isAutomaticRegistering()) {\n        self.registerComponentCaching(comp);\n      }\n    });\n  }\n\n  initializeCache(val: any) {\n    this.initialDataCache = val;\n    this.valueChangesStack = [];\n    this.onCacheStateChanges.emit();\n    this.initializedCache = true;\n    this.changedFormControls = [];\n  }\n\n  getInitialDataCache() {\n    return this.initialDataCache;\n  }\n\n  getDataCache() {\n    return this.formDataCache;\n  }\n\n  restartCache() {\n    this.formDataCache = undefined;\n    this.initializeCache({});\n    this.initializedCache = false;\n    this.onCacheStateChanges.emit();\n  }\n\n  setCacheSnapshot() {\n    this.initializeCache(this.getDataCache());\n  }\n\n  undoLastChange() {\n    const lastElement = this.valueChangesStack[this.valueChangesStack.length - 1];\n    if (lastElement) {\n      const lastCacheValue = this.getCacheLastValue(lastElement.attr);\n      const lastValue = (lastCacheValue !== null) ? lastCacheValue : this.initialDataCache[lastElement.attr];\n      this.undoComponentValue(lastElement.attr, lastValue);\n\n      this.updateFormDataCache();\n      this.onCacheStateChanges.emit();\n    }\n  }\n\n  protected undoComponentValue(attr: string, val: any) {\n    this.blockCaching = true;\n    const comp = this.form.getFieldReference(attr);\n    if (comp) {\n      comp.setValue(val);\n    }\n    this.blockCaching = false;\n  }\n\n  protected hasComponentChanged(attr: string, comp: IFormControlComponent): boolean {\n    const currentValue = comp.getFormControl().value;\n    const cache = this.formDataCache || this.initialDataCache;\n    return (currentValue !== cache[attr]);\n  }\n\n  protected getCacheLastValue(attr: string): any {\n    this.updateChangesStack(attr);\n    let result = null;\n    for (let i = this.valueChangesStack.length - 1; i >= 0; i--) {\n      const current = this.valueChangesStack[i];\n      if (current.attr === attr) {\n        result = current.value;\n        break;\n      }\n    }\n    return result;\n  }\n\n  protected updateChangesStack(attr: string) {\n    let index: number;\n    for (let i = this.valueChangesStack.length - 1; i >= 0; i--) {\n      const current = this.valueChangesStack[i];\n      if (current.attr === attr) {\n        index = i;\n        break;\n      }\n    }\n    if (index !== undefined) {\n      for (let i = index; i >= 0; i--) {\n        const prev = this.valueChangesStack[i - 1];\n        const current = this.valueChangesStack[i];\n        if (current.attr === attr) {\n          this.valueChangesStack.splice(i, 1);\n          if (!prev || prev.attr === attr) {\n            continue;\n          } else {\n            break;\n          }\n        }\n      }\n    }\n    if (this.valueChangesStack.length === 0) {\n      this.onCacheStateChanges.emit();\n    }\n  }\n\n  get isCacheStackEmpty(): boolean {\n    return (this.valueChangesStack.length === 0);\n  }\n\n  isInitialStateChanged(ignoreAttrs: string[] = []): boolean {\n    const initialCache = Object.assign({}, this.initialDataCache);\n    let currentCache: object;\n    if (this.formDataCache) {\n      currentCache = Object.assign({}, this.formDataCache);\n      this.removeUndefinedProperties(currentCache);\n    } else {\n      return false;\n    }\n\n    let initialKeys = Object.keys(initialCache);\n    let currentKeys = currentCache ? Object.keys(currentCache) : initialKeys;\n\n    // Remove ignored fields from temporary initial cache data\n    if (ignoreAttrs.length) {\n      initialKeys = initialKeys.filter(key => !ignoreAttrs.includes(key));\n      currentKeys = currentKeys.filter(key => !ignoreAttrs.includes(key));\n      ignoreAttrs.forEach(key => delete initialCache[key]);\n    }\n\n    if (currentKeys.length === 0) {\n      return false;\n    }\n\n    if (initialKeys.length !== currentKeys.length) {\n      return true;\n    }\n    // Remove ignored fields from temporary initial cache data\n    if (ignoreAttrs.length) {\n      initialKeys = initialKeys.filter(key => !ignoreAttrs.includes(key));\n      ignoreAttrs.forEach(key => delete initialCache[key]);\n    }\n\n    let res = false;\n    for (let i = 0, len = initialKeys.length; i < len; i++) {\n      const key = initialKeys[i];\n      // TODO be careful with types comparisions\n      res = (initialCache[key] !== currentCache[key]);\n      if (res) {\n        break;\n      }\n    }\n    return res;\n  }\n\n  getChangedFormControlsAttr(): string[] {\n    return this.changedFormControls;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { DialogService } from '../../../services/dialog.service';\nimport { Util } from '../../../util/util';\nimport { OFormBase } from '../o-form-base.class';\n@Injectable({\n  providedIn: 'root'\n})\nexport class OFormConfirmExitService {\n\n  protected confirmDialogSubscription: Promise<boolean>;\n\n  constructor(protected dialogService: DialogService) { }\n\n  subscribeToDiscardChanges(form: OFormBase, ignoreAttrs: string[] = []): Promise<boolean> {\n    let subscription: Promise<boolean>;\n    if (form.isInitialStateChanged(ignoreAttrs)) {\n      subscription = this.getConfirmDialogSubscription(form);\n    } else {\n      const observable = new Observable<boolean>(observer => {\n        observer.next(true);\n        observer.complete();\n      });\n      subscription = observable.toPromise();\n    }\n    return subscription;\n  }\n\n  protected restart() {\n    this.confirmDialogSubscription = null;\n  }\n\n  protected getConfirmDialogSubscription(form: OFormBase): Promise<boolean> {\n    if (!Util.isDefined(this.confirmDialogSubscription)) {\n      this.confirmDialogSubscription = new Promise((resolve) => {\n        this.dialogService.confirm(\n          form.messageService.getDiscardChangesConfirmationDialogTitle(),\n          form.messageService.getDiscardChangesConfirmationMessage()).then((res) => {\n            this.restart();\n            resolve(res);\n          })\n      });\n    }\n    return this.confirmDialogSubscription;\n  }\n}\n\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot } from '@angular/router';\nimport { combineLatest, Observable } from 'rxjs';\n\nimport { BooleanConverter } from '../../../decorators/input-converter';\nimport { Codes } from '../../../util/codes';\nimport { Util } from '../../../util/util';\nimport { OFormConfirmExitService } from '../navigation/o-form-confirm-exit.service';\nimport { OFormComponent } from '../o-form.component';\n\nexport interface CanComponentDeactivate {\n  canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;\n}\n\n@Injectable()\nexport class CanDeactivateFormGuard implements CanDeactivate<CanComponentDeactivate> {\n  public static CLASSNAME = 'CanDeactivateFormGuard';\n\n  protected oForms: { [key: string]: OFormComponent } = {};\n\n  constructor(protected oFormConfirmExitService: OFormConfirmExitService) { }\n\n  canDeactivate(component: CanComponentDeactivate, curr: ActivatedRouteSnapshot, state: RouterStateSnapshot, future: RouterStateSnapshot)\n    : Observable<boolean> | Promise<boolean> | boolean {\n    if (BooleanConverter(future.root.queryParams[Codes.IGNORE_CAN_DEACTIVATE])) {\n      return true;\n    }\n    if (Object.keys(this.oForms).length) {\n      return new Promise((resolve) => {\n        const arr: Observable<boolean>[] = Object.keys(this.oForms).map((key) => Util.wrapIntoObservable(this.oForms[key].canDeactivate()));\n        combineLatest(arr).subscribe(res => {\n          resolve(res.every(value => value));\n        });\n      });\n    }\n    return true;\n  }\n\n  addForm(form: OFormComponent) {\n    form.deactivateGuardId = this.getFormKey(form)\n    this.oForms[form.deactivateGuardId] = form;\n  }\n\n  removeForm(form: OFormComponent) {\n    delete this.oForms[form.deactivateGuardId];\n    delete form.deactivateGuardId;\n  }\n\n  isFormsCacheEmpty(): boolean {\n    return Object.keys(this.oForms).length === 0;\n  }\n\n  private getFormKey(form: OFormComponent): string {\n    const formLayoutManager = form.getFormManager();\n    return formLayoutManager ? `${formLayoutManager.getIdOfActiveItem()}${form.oattr}` : form.oattr;\n  }\n}\n\n","import { Directive, Input, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: '[o-form-layout-manager-content]',\n})\nexport class OFormLayoutManagerContentDirective {\n\n  @Input() index: number;\n\n  constructor(public viewContainerRef: ViewContainerRef) { }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport type { OFormLayoutManagerComponent } from '../layouts/form-layout/o-form-layout-manager.component';\nimport { OFormLayoutManagerContext } from '../types/form-layout-manager-context.type';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OFormLayoutManagerService {\n  protected registeredFormLayoutManagers = {};\n  protected _activeFormLayoutManager: OFormLayoutManagerComponent;\n  private _context: OFormLayoutManagerContext;\n\n  constructor(protected injector: Injector) { }\n\n  registerFormLayoutManager(comp: OFormLayoutManagerComponent) {\n    this.registeredFormLayoutManagers[comp.getAttribute()] = comp;\n  }\n\n  removeFormLayoutManager(comp: OFormLayoutManagerComponent) {\n    delete this.registeredFormLayoutManagers[comp.getAttribute()];\n  }\n\n  get activeFormLayoutManager(): OFormLayoutManagerComponent {\n    return this._activeFormLayoutManager;\n  }\n\n  set activeFormLayoutManager(arg: OFormLayoutManagerComponent) {\n    this._activeFormLayoutManager = arg;\n  }\n\n  set context(value: OFormLayoutManagerContext) {\n    this._context = value;\n  }\n\n  get context(): OFormLayoutManagerContext {\n    return this._context;\n  }\n}\n","import { AfterViewInit, Component, Inject, Injector, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { ILayoutManagerComponent } from '../../../interfaces/layout-manager-component.interface';\nimport { OFormLayoutManagerMode } from '../../../interfaces/o-form-layout-manager-mode.interface';\nimport { DialogService } from '../../../services/dialog.service';\nimport { Util } from '../../../util/util';\nimport { OFormLayoutManagerContentDirective } from '../directives/o-form-layout-manager-content.directive';\nimport { OFormLayoutManagerBase } from '../o-form-layout-manager-base.class';\nimport { OFormLayoutManagerService } from '../../../services/o-form-layout-manager.service';\n\n@Component({\n  selector: 'o-form-layout-dialog',\n  templateUrl: './o-form-layout-dialog.component.html',\n  styleUrls: ['./o-form-layout-dialog.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-form-layout-dialog]': 'true'\n  }\n})\nexport class OFormLayoutDialogComponent implements OFormLayoutManagerMode, AfterViewInit {\n  formLayoutManager: OFormLayoutManagerBase;\n  queryParams: any;\n  params: object;\n  urlSegments: any[];\n  label: string;\n  title: string = 'LAYOUT_MANANGER.DIALOG_TITLE';\n  data: any;\n  dialogTitleSeparator: string;\n\n\n  protected component;\n  protected dialogService: DialogService;\n\n  @ViewChild(OFormLayoutManagerContentDirective) contentDirective: OFormLayoutManagerContentDirective;\n\n  constructor(\n    public dialogRef: MatDialogRef<OFormLayoutDialogComponent>,\n    protected injector: Injector,\n    @Inject(MAT_DIALOG_DATA) data: any\n  ) {\n    this.dialogService = injector.get(DialogService);\n    if (typeof data.title !== 'undefined') {\n      this.title = data.title;\n    }\n    if (data.data) {\n      this.data = data.data;\n      this.component = data.data.component;;\n      this.params = data.data.params;\n      this.queryParams = data.data.queryParams;\n      this.urlSegments = data.data.urlSegments;\n      this.dialogTitleSeparator = data.dialogTitleSeparator\n    }\n    if (data.layoutManagerComponent) {\n      this.formLayoutManager = data.layoutManagerComponent;\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.contentDirective && this.component) {\n      const viewContainerRef = this.contentDirective.viewContainerRef;\n      viewContainerRef.clear();\n      viewContainerRef.createComponent(this.component);\n    }\n  }\n\n  updateNavigation(data: any) {\n    const formLayoutManagerService = this.injector.get(OFormLayoutManagerService);\n    const context = formLayoutManagerService.context;\n\n    this.label = context?.label || this.formLayoutManager.getLabelFromData(data);\n  }\n\n  updateActiveData(data: any) {\n    this.data = Object.assign(this.data, data);\n  }\n\n  closeDialog(options?: any) {\n    if (Util.isDefined(options) && Util.isDefined(options.exitWithoutConfirmation) && options.exitWithoutConfirmation) {\n      this.dialogRef.close();\n    } else {\n      if (this.formLayoutManager.hasToConfirmExit(this.data)) {\n        this.dialogService.confirm('CONFIRM', 'MESSAGES.FORM_CHANGES_WILL_BE_LOST').then(res => {\n          if (res) {\n            this.dialogRef.close();\n          }\n        });\n      } else {\n        this.dialogRef.close();\n      }\n    }\n  }\n\n  getRouteOfActiveItem(): any[] {\n    const parentRoute = this.formLayoutManager.parentFormLayoutManager.getRouteOfActiveItem();\n    const segments = (this.urlSegments || []);\n    const route = [];\n    segments.forEach((segment, index) => {\n      if (parentRoute[index] !== segment.path) {\n        route.push(segment.path);\n      }\n    });\n    return route;\n  }\n\n  getParams(): any {\n    return this.params;\n  }\n\n  getFormCacheData() {\n    return this.data;\n  }\n\n  isMainComponent(comp: ILayoutManagerComponent): boolean {\n    return !comp.oFormLayoutDialog;\n  }\n\n  closeDetail(options) {\n    this.closeDialog(options);\n  }\n\n  getDataToStore(): any {\n    return null;\n  }\n\n  setModifiedState(formAttr: string, modified: boolean, confirmExit: boolean) {\n    this.data.innerFormsInfo[formAttr] = {\n      modified: modified,\n      confirmOnExit: confirmExit\n    };\n  }\n\n  canAddDetailComponent(): boolean {\n    return true;\n  }\n\n  getIdOfActiveItem(): string {\n    return 'dialog';\n  }\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"title-container\" mat-dialog-title>\n  <span fxFlex fxLayoutAlign=\"center center\"> {{ title | oTranslate }} <span *ngIf=\"title?.length>0\">{{dialogTitleSeparator}}&nbsp;</span>{{ label }}</span>\n  <mat-icon (click)=\"closeDialog()\" svgIcon=\"ontimize:close\"></mat-icon>\n</div>\n\n<div mat-dialog-content class=\"form-layout-dialog-container\">\n  <ng-template o-form-layout-manager-content></ng-template>\n</div>","import { EventEmitter } from '@angular/core';\n\nimport { ILayoutManagerComponent } from '../../interfaces/layout-manager-component.interface';\nimport { OFormLayoutManagerComponentStateClass } from '../../services/state/o-form-layout-manager-component-state.class';\nimport { FormLayoutCloseDetailOptions, FormLayoutDetailComponentData } from '../../types/form-layout-detail-component-data.type';\nimport { OFormLayoutManagerMode } from '../../interfaces/o-form-layout-manager-mode.interface';\nimport { NavigationService } from '../../services/navigation.service';\nimport { IOFormLayoutManager } from '../../interfaces/form-layout-manager.interface';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { OFormLayoutManagerContext } from '../../types/form-layout-manager-context.type';\n\n\nexport abstract class OFormLayoutManagerBase implements IOFormLayoutManager {\n  oattr: string;\n  mode: string;\n  separator: string;\n  title: string;\n  labelColumns: string;\n  tabGroupOptions: any;\n  dialogOptions: any;\n  splitPaneOptions: any;\n  onMainTabSelected: EventEmitter<any>;\n  public onTriggerUpdate: EventEmitter<any>;\n  public onSelectedTabChange: EventEmitter<any>;\n  onCloseTab: EventEmitter<any>;\n  state: OFormLayoutManagerComponentStateClass;\n  parentFormLayoutManager: OFormLayoutManagerBase;\n  markForUpdate: boolean;\n  navigationService: NavigationService;\n  storeState: boolean;\n  public oTabGroup: OFormLayoutManagerMode;\n  abstract addDetailComponent(childRoute: ActivatedRouteSnapshot, url: string, context?: OFormLayoutManagerContext);\n  abstract allowNavigation(): boolean;\n  abstract allowToUpdateNavigation(formAttr: string): boolean\n  abstract closeDetail(options?: FormLayoutCloseDetailOptions): void;\n  abstract closeDetails(detailsKeysData: any[], options?: FormLayoutCloseDetailOptions): void;\n  abstract get ignoreCanDeactivate(): boolean;\n  abstract getAttribute(): string;\n  abstract getComponentKey(): string;\n  abstract getDataToStore(): any;\n  abstract getFormCacheData(): FormLayoutDetailComponentData;\n  abstract getFormDataFromLabelColumns(data: any);\n  abstract getIdOfActiveItem(): string;\n  abstract getLabelFromData(data: any): string;\n  abstract getLabelFromUrlParams(urlParams: object): string;\n  abstract getParams(): any;\n  abstract getRouteForComponent(comp: ILayoutManagerComponent): any[];\n  abstract getRouteKey(): string;\n  abstract getRouteOfActiveItem(): any[];\n  abstract hasToConfirmExit(data: FormLayoutDetailComponentData, options?: FormLayoutCloseDetailOptions): boolean\n  abstract isDialogMode(): boolean;\n  abstract isMainComponent(comp: ILayoutManagerComponent): boolean;\n  abstract isSplitPaneMode(): boolean;\n  abstract isTabMode(): boolean;\n  abstract reloadMainComponents();\n  abstract setAsActiveFormLayoutManager();\n  abstract setModifiedState(formAttr: string, modified: boolean, confirmExit: boolean);\n  abstract updateActiveData(data: any);\n  abstract updateIfNeeded(): void;\n  abstract updateNavigation(data: any, keysValues: any, insertionMode: boolean);\n  abstract updateStateStorage();\n}\n","import { EventEmitter, Injector } from '@angular/core';\nimport { ActivatedRoute, NavigationExtras, Router, UrlSegmentGroup } from '@angular/router';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\n\nimport { OFormLayoutDialogComponent } from '../../../layouts/form-layout/dialog/o-form-layout-dialog.component';\nimport { NavigationService, ONavigationItem } from '../../../services/navigation.service';\nimport {\n  FormLayoutCloseDetailOptions,\n  FormLayoutDetailComponentData\n} from '../../../types/form-layout-detail-component-data.type';\nimport { Codes } from '../../../util/codes';\nimport { SQLTypes } from '../../../util/sqltypes';\nimport { Util } from '../../../util/util';\nimport { OFormConfirmExitService } from './o-form-confirm-exit.service';\nimport { OFormBase } from '../o-form-base.class';\nimport { OFormLayoutManagerBase } from '../../../layouts/form-layout/o-form-layout-manager-base.class';\n\nexport class OFormNavigationClass {\n\n  formLayoutManager: OFormLayoutManagerBase;\n  formLayoutDialog: OFormLayoutDialogComponent;\n\n  protected navigationService: NavigationService;\n  protected confirmExitService: OFormConfirmExitService;\n\n  protected qParamSub: Subscription;\n  protected queryParams: any;\n\n  protected urlParamSub: Subscription;\n  protected urlParams: object;\n\n  protected urlSub: Subscription;\n  protected urlSegments: any = [];\n\n  protected combinedNavigationStream: Observable<any>;\n  protected combinedNavigationStreamSubscription: Subscription;\n  protected onUrlParamChangedStream: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  public navigationStream: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  protected onCloseTabSubscription: Subscription;\n  protected cacheStateSubscription: Subscription;\n\n  constructor(\n    protected injector: Injector,\n    protected form: OFormBase,\n    protected router: Router,\n    protected actRoute: ActivatedRoute\n  ) {\n    this.navigationService = injector.get(NavigationService);\n    this.confirmExitService = injector.get(OFormConfirmExitService);\n\n    try {\n      this.formLayoutManager = this.injector.get(OFormLayoutManagerBase);\n    } catch (e) {\n      // No parent formLayoutManager\n    }\n\n    try {\n      this.formLayoutDialog = this.injector.get(OFormLayoutDialogComponent);\n    } catch (e) {\n      // No parent form layout dialog\n    }\n\n    if (this.formLayoutDialog && !this.formLayoutManager) {\n      this.formLayoutManager = this.formLayoutDialog.formLayoutManager;\n    }\n\n    const self = this;\n    this.combinedNavigationStream = combineLatest([self.onUrlParamChangedStream.asObservable()]);\n\n    this.combinedNavigationStream.subscribe(valArr => {\n      if (Util.isArray(valArr) && valArr.length === 1 && valArr[0]) {\n        self.navigationStream.emit(true);\n      }\n    });\n  }\n\n  initialize() {\n  }\n\n  destroy() {\n    if (this.qParamSub) {\n      this.qParamSub.unsubscribe();\n    }\n    if (this.urlParamSub) {\n      this.urlParamSub.unsubscribe();\n    }\n    if (this.urlSub) {\n      this.urlSub.unsubscribe();\n    }\n    if (this.combinedNavigationStreamSubscription) {\n      this.combinedNavigationStreamSubscription.unsubscribe();\n    }\n  }\n\n  subscribeToQueryParams() {\n    if (this.formLayoutManager) {\n      const cacheData: FormLayoutDetailComponentData = this.formLayoutManager.getFormCacheData();\n      if (Util.isDefined(cacheData)) {\n        this.queryParams = cacheData.queryParams || {};\n        this.parseQueryParams();\n      }\n    } else {\n      const self = this;\n      this.qParamSub = this.actRoute.queryParams.subscribe(params => {\n        if (params) {\n          self.queryParams = params;\n          self.parseQueryParams();\n        }\n      });\n    }\n  }\n\n  private parseQueryParams() {\n    const isDetail = this.queryParams[Codes.IS_DETAIL];\n    // ensuring isdetail = false when using form layout manager\n    this.form.isDetailForm = this.formLayoutManager ? false : (isDetail === 'true');\n  }\n\n  subscribeToUrlParams() {\n    if (this.formLayoutManager) {\n      const cacheData: FormLayoutDetailComponentData = this.formLayoutManager.getFormCacheData();\n      if (Util.isDefined(cacheData)) {\n        this.urlParams = cacheData.params;\n        this.parseUrlParams();\n      }\n    } else {\n      const self = this;\n      this.urlParamSub = this.actRoute.params.subscribe(params => {\n        self.urlParams = params;\n        this.parseUrlParams();\n      });\n    }\n  }\n\n  private parseUrlParams() {\n    if (Util.isDefined(this.urlParams) && Util.isDefined(this.urlParams[Codes.PARENT_KEYS_KEY])) {\n      this.form.formParentKeysValues = Util.decodeParentKeys(this.urlParams[Codes.PARENT_KEYS_KEY]);\n    }\n    // TODO Obtain 'datatype' of each key contained into urlParams for\n    // for building correctly query filter!!!!\n    if (this.urlParams) {\n      this.onUrlParamChangedStream.emit(true);\n    }\n  }\n\n  subscribeToUrl() {\n    if (this.formLayoutManager) {\n      const cacheData: FormLayoutDetailComponentData = this.formLayoutManager.getFormCacheData();\n      if (Util.isDefined(cacheData)) {\n        this.urlSegments = cacheData.urlSegments;\n      }\n    } else {\n      const self = this;\n      this.urlSub = this.actRoute.url.subscribe(urlSegments => {\n        self.urlSegments = urlSegments;\n      });\n    }\n  }\n\n  subscribeToCacheChanges() {\n    const formCache = this.form.getFormCache();\n    if (!Util.isDefined(formCache)) {\n      return;\n    }\n    this.cacheStateSubscription = formCache.onCacheStateChanges.subscribe(() => {\n      const initialStateChanged = this.form.isInitialStateChanged();\n      const triggerExitConfirm = this.form.confirmExit && this.form.isInitialStateChanged(this.form.ignoreOnExit);\n      this.setModifiedState(initialStateChanged, triggerExitConfirm);\n    });\n  }\n\n  getCurrentKeysValues(): object {\n    let filter = {};\n    if (this.urlParams) {\n      filter = this.getFilterFromObject(this.urlParams);\n    }\n    return filter;\n  }\n\n  private getFilterFromObject(objectParam: any) {\n    const filter = {};\n    if (!objectParam || Object.keys(objectParam).length === 0) {\n      return filter;\n    }\n    if (this.form.keysArray) {\n      this.form.keysArray.forEach((key, index) => {\n        if (objectParam[key]) {\n          filter[key] = SQLTypes.parseUsingSQLType(objectParam[key], this.form.keysSqlTypesArray[index]);\n        }\n      });\n    }\n    Object.keys(this.form._pKeysEquiv).forEach((item, index) => {\n      const urlVal = objectParam[this.form._pKeysEquiv[item]];\n      if (urlVal) {\n        filter[item] = SQLTypes.parseUsingSQLType(urlVal, this.form.keysSqlTypesArray[index]);\n      }\n    });\n    return filter;\n  }\n\n  getFilterFromUrlParams() {\n    const filter = Object.assign({}, this.getUrlParams() || {});\n    const urlParamsKeys = Object.keys(filter || {});\n    if (urlParamsKeys.length > 0) {\n      urlParamsKeys.forEach(key => {\n        if (key === Codes.PARENT_KEYS_KEY) {\n          delete filter[key];\n          Object.assign(filter, this.form.formParentKeysValues);\n        }\n      });\n    }\n    return filter;\n  }\n\n  getUrlSegments() {\n    return this.urlSegments;\n  }\n\n  getQueryParams() {\n    return this.queryParams;\n  }\n\n  setUrlParams(val: object) {\n    this.urlParams = val;\n  }\n\n  getUrlParams() {\n    return this.urlParams;\n  }\n\n  protected setModifiedState(modified: boolean, confirmExit: boolean) {\n    if (this.formLayoutManager) {\n      this.formLayoutManager.setModifiedState(this.form.getAttribute(), modified, confirmExit);\n    }\n  }\n\n  updateNavigation() {\n    if (this.formLayoutManager) {\n      const isInInsertMode = this.form.isInInsertMode();\n      let formData;\n      if (isInInsertMode) {\n        formData = {};\n        formData.new_tab_title = 'LAYOUT_MANANGER.INSERTION_MODE_TITLE';\n      } else if (this.formLayoutManager.allowToUpdateNavigation(this.form.getAttribute())) {\n        formData = {};\n        Object.keys(this.form.formData).forEach(key => {\n          formData[key] = this.form.formData[key].value;\n        });\n      }\n      if (formData) {\n        this.formLayoutManager.updateNavigation(formData, this.form.getKeysValues(), isInInsertMode);\n      }\n    }\n  }\n\n  navigateBack(options?: any) {\n    if (this.formLayoutManager) {\n      this.formLayoutManager.closeDetail(options);\n    } else if (this.navigationService) {\n      this.navigationService.removeLastItem();\n      if (options && options.ignoreNavigation) {\n        return;\n      }\n      const navData: ONavigationItem = this.navigationService.getLastItem();\n      if (navData) {\n        let extras:NavigationExtras = {};\n        extras[Codes.QUERY_PARAMS] = navData.queryParams;\n        if (options?.exitWithoutConfirmation) {\n          const ignore = { [Codes.IGNORE_CAN_DEACTIVATE]: options.exitWithoutConfirmation };\n          extras.queryParams = {\n            ...extras.queryParams, ...ignore\n          };\n        }\n        this.router.navigate([navData.url], extras);\n      }\n    }\n  }\n\n  closeDetailAction(options?: any) {\n    if (this.formLayoutManager) {\n      this.formLayoutManager.closeDetail(options);\n    } else if (this.navigationService) {\n      this.form.beforeCloseDetail.emit();\n      // `removeLastItemsUntilMain` may not remove all necessary items so current route will be checked below\n      if (!this.navigationService.removeLastItemsUntilMain()) {\n        // `removeLastItemsUntilMain` didn't find the main navigation item\n        this.navigationService.removeLastItem();\n      }\n      if (options && options.ignoreNavigation) {\n        return;\n      }\n      let navData: ONavigationItem = this.navigationService.getLastItem();\n      if (navData) {\n        // if navData route is the same as the current route, remove last item\n        if (this.navigationService.isCurrentRoute(navData.url)) {\n          this.navigationService.removeLastItem();\n          navData = this.navigationService.getLastItem();\n        }\n        let extras: NavigationExtras = {};\n        extras.queryParams = { ...navData.queryParams };\n        if (options && options.exitWithoutConfirmation) {\n          const ignore = { [Codes.IGNORE_CAN_DEACTIVATE]: options.exitWithoutConfirmation };\n          Object.assign(extras.queryParams, ignore);\n        }\n        this.router.navigate([navData.url], extras).then(val => {\n          if (val && options && options.changeToolbarMode) {\n            this.form.getFormToolbar().setInitialMode();\n          }\n        });\n      }\n    }\n  }\n\n  stayInRecordAfterInsert(insertedKeys: object) {\n    if (this.navigationService && this.form.keysArray && insertedKeys) {\n      if (this.formLayoutManager) {\n        const closeOpts: FormLayoutCloseDetailOptions = { exitWithoutConfirmation: true };\n        this.formLayoutManager.closeDetail(closeOpts);\n        this.formLayoutManager.setAsActiveFormLayoutManager();\n      } else {\n        // Remove 'new' navigation item from history\n        this.navigationService.removeLastItem();\n      }\n      let params: any[] = [];\n      this.form.keysArray.forEach((current) => {\n        if (insertedKeys[current]) {\n          params.push(insertedKeys[current]);\n        }\n      });\n      let extras: NavigationExtras = {};\n      let qParams: any = Object.assign({}, this.getQueryParams(), Codes.getIsDetailObject());\n      // deleting insertionMode current queryParam\n      delete qParams[Codes.INSERTION_MODE];\n      // Ignoring current closed form (the insertion form)\n      qParams[Codes.IGNORE_CAN_DEACTIVATE] = true;\n      extras[Codes.QUERY_PARAMS] = qParams;\n      let route = [];\n      const navData: ONavigationItem = this.navigationService.getLastMainNavigationRouteData();\n      if (navData) {\n        let url = navData.url;\n        const detailRoute = navData.getDetailFormRoute();\n        if (Util.isDefined(detailRoute)) {\n          route.push(detailRoute);\n          const detailIndex = url.lastIndexOf('/' + detailRoute);\n          if (detailIndex !== -1) {\n            url = url.substring(0, detailIndex);\n          }\n        }\n        route.unshift(url);\n        route.push(...params);\n        // deleting insertFormRoute as active mode (because stayInRecordAfterInsert changes it)\n        this.navigationService.deleteActiveFormMode(navData);\n      } else {\n        extras.relativeTo = this.actRoute;\n        route = ['../', ...params];\n      }\n      this.router.navigate(route, extras);\n    }\n  }\n\n  /**\n   * Navigates to 'insert' mode\n   */\n  goInsertMode(options?: any) {\n    if (this.formLayoutManager && this.formLayoutManager.allowNavigation()) {\n      this.form.setInsertMode();\n    } else if (this.navigationService) {\n      if (this.formLayoutManager) {\n        this.formLayoutManager.setAsActiveFormLayoutManager();\n      }\n\n      let route = [];\n      const extras: NavigationExtras = {};\n      const navData: ONavigationItem = this.navigationService.getLastMainNavigationRouteData();\n      if (!this.formLayoutManager && navData) {\n        route.push(navData.url);\n        const detailRoute = navData.getDetailFormRoute();\n        if (Util.isDefined(detailRoute)) {\n          route.push(detailRoute);\n        }\n        route.push(navData.getInsertFormRoute());\n      } else {\n        extras.relativeTo = this.actRoute;\n        route = [Codes.DEFAULT_INSERT_ROUTE];\n        if (this.formLayoutManager && this.formLayoutManager.isTabMode()) {\n          extras.queryParams = {};\n          extras.queryParams[Codes.INSERTION_MODE] = 'true';\n          extras.queryParams[Codes.IGNORE_CAN_DEACTIVATE] = true;\n        }\n      }\n      this.storeNavigationFormRoutes('insertFormRoute', !!this.formLayoutManager);\n      this.router.navigate(route, extras).then((val) => {\n        if (val && options && options.changeToolbarMode) {\n          this.form.getFormToolbar().setInsertMode();\n        }\n      });\n    }\n  }\n\n  /**\n   * Navigates to 'edit' mode\n   */\n  goEditMode(options?: any) {\n    if (this.formLayoutManager && this.formLayoutManager.allowNavigation()) {\n      this.form.setUpdateMode();\n    } else if (this.navigationService) {\n      let route = [];\n      const extras: NavigationExtras = {};\n      if (this.form.isDetailForm) {\n        extras[Codes.QUERY_PARAMS] = Codes.getIsDetailObject();\n      }\n      extras[Codes.QUERY_PARAMS] = Object.assign({}, this.getQueryParams(), extras[Codes.QUERY_PARAMS] || {});\n\n      const params: any[] = [];\n      const urlParams = this.getUrlParams();\n      this.form.keysArray.forEach(key => {\n        if (urlParams[key]) {\n          params.push(urlParams[key]);\n        }\n      });\n      const navData: ONavigationItem = this.navigationService.getPreviousRouteData();\n      if (Util.isDefined(navData)) {\n        route.push(navData.url);\n        const detailRoute = navData.getDetailFormRoute();\n        if (Util.isDefined(detailRoute)) {\n          route.push(detailRoute);\n        }\n        route.push(...params);\n        route.push(navData.getEditFormRoute());\n      } else {\n        extras.relativeTo = this.actRoute;\n        route = ['../', ...params, Codes.DEFAULT_EDIT_ROUTE];\n      }\n      this.storeNavigationFormRoutes('editFormRoute');\n      this.form.beforeUpdateMode.emit();\n      this.router.navigate(route, extras).then((val) => {\n        if (val && options && options.changeToolbarMode) {\n          this.form.getFormToolbar().setEditMode();\n        }\n      });\n    }\n  }\n\n  /**\n   * @deprecated\n   */\n  getNestedLevelsNumber() {\n    let actRoute = this.actRoute;\n    let i = 0;\n    while (actRoute.parent) {\n      actRoute = actRoute.parent;\n      actRoute.url.subscribe((x) => {\n        if (x && x.length) {\n          i++;\n        }\n      });\n    }\n    return i;\n  }\n\n  /**\n   * @deprecated\n   */\n  getFullUrlSegments() {\n    let fullUrlSegments = [];\n    const router = this.router;\n    if (router && router.url && router.url.length) {\n      const root: UrlSegmentGroup = router.parseUrl(router.url).root;\n      if (root && root.hasChildren() && root.children.primary) {\n        fullUrlSegments = root.children.primary.segments;\n      }\n    }\n    return fullUrlSegments;\n  }\n\n  showConfirmDiscardChanges(ignoreAttrs: string[] = []): Promise<boolean> {\n    return this.confirmExitService.subscribeToDiscardChanges(this.form, ignoreAttrs);\n  }\n\n  protected storeNavigationFormRoutes(activeMode: string, mainFormLayoutManagerComponent?: boolean) {\n    const prevRouteData = this.navigationService.getPreviousRouteData();\n    if (!Util.isDefined(prevRouteData)) {\n      return;\n    }\n    const formRoutes = prevRouteData.formRoutes;\n    this.navigationService.storeFormRoutes({\n      detailFormRoute: formRoutes ? formRoutes.detailFormRoute : Codes.DEFAULT_DETAIL_ROUTE,\n      editFormRoute: formRoutes ? formRoutes.editFormRoute : Codes.DEFAULT_EDIT_ROUTE,\n      insertFormRoute: formRoutes ? formRoutes.insertFormRoute : Codes.DEFAULT_INSERT_ROUTE,\n      mainFormLayoutManagerComponent\n    }, activeMode);\n  }\n\n}\n","import { EventEmitter } from '@angular/core';\nimport { OFormContainerComponent } from '../form-container/o-form-container.component';\nimport { OPermissions } from '../../types/o-permissions.type';\nimport { OFormCacheClass } from './cache/o-form.cache.class';\nimport { OFormMessageService } from './services/o-form-message.service';\nimport { OFormLayoutManagerBase } from '../../layouts/form-layout/o-form-layout-manager-base.class';\nimport { IFormDataComponentHash } from '../../interfaces/form-data-component-hash.interface';\nimport { IFormDataComponent } from '../../interfaces/form-data-component.interface';\nimport { OFormNavigationClass } from './navigation/o-form.navigation.class';\nimport { OFormToolbarBase } from './toolbar/o-form-toolbar-base.class';\n\n\nexport abstract class OFormBase {\n  _pKeysEquiv = {};\n  confirmExit: boolean;\n  formData: object;\n  ignoreOnExit: string[];\n  canDiscardChanges: boolean;\n  formParentKeysValues: object;\n  keysArray: string[];\n  keysSqlTypesArray: Array<string>\n  includeBreadcrumb: boolean;\n\n  isDetailForm: boolean;\n  formContainer: OFormContainerComponent;\n  undoButton: boolean;\n  detectChangesOnBlur: boolean;\n\n  onInsert: EventEmitter<any>;\n  onUpdate: EventEmitter<any>;\n  onDelete: EventEmitter<any>;\n  onCancel: EventEmitter<null>;\n  beforeUpdateMode: EventEmitter<null>;\n  onDataLoaded: EventEmitter<object>;\n  beforeCloseDetail: EventEmitter<any>;\n\n  abstract executeToolbarAction(action: string, options?: any);\n  abstract getAttribute(): string;\n  abstract getComponents(): IFormDataComponentHash;\n  abstract getFieldReference(attr: string): IFormDataComponent;\n  abstract getFieldReferences(attrs: string[]): IFormDataComponentHash;\n  abstract getFormCache(): OFormCacheClass;\n  abstract getFormManager(): OFormLayoutManagerBase;\n  abstract getFormNavigation(): OFormNavigationClass;\n  abstract getActionsPermissions(): OPermissions[];\n  abstract getKeysValues(): any;\n  abstract isEditableDetail(): boolean;\n  abstract isInInsertMode(): boolean;\n  abstract registerToolbar(toolbar: OFormToolbarBase): void;\n  abstract getRegisteredFieldsValues(): any;\n  abstract showConfirmDiscardChanges(): Promise<boolean>;\n  abstract setInitialMode();\n  abstract setInsertMode(): void;\n  abstract setUpdateMode(): void;\n  abstract setUrlParamsAndReload(val: object);\n  abstract isInitialStateChanged(ignoreAttrs?: string[]): boolean;\n  abstract getFormToolbar(): OFormToolbarBase;\n  abstract get isCacheStackEmpty(): boolean;\n  abstract get messageService(): OFormMessageService;\n\n\n}","import { InjectionToken } from \"@angular/core\";\nimport { OFormGlobalConfig } from \"../../types/form/o-form-global-config.type\";\n\n\nexport const O_FORM_GLOBAL_CONFIG = new InjectionToken<OFormGlobalConfig>('o-form-config');","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class OFormMessageService {\n\n  getQueryErrorMessage(): string {\n    return 'MESSAGES.ERROR_QUERY';\n  }\n\n  getUpdateSuccessMessage(): string {\n    return 'MESSAGES.SAVED';\n  }\n\n  getUpdateErrorMessage(): string {\n    return 'MESSAGES.ERROR_UPDATE';\n  }\n\n  getDeleteSuccessMessage(): string {\n    return 'MESSAGES.DELETED';\n  }\n\n  getDeleteErrorMessage(): string {\n    return 'MESSAGES.ERROR_DELETE';\n  }\n\n  getDeleteConfirmationMessage(): string {\n    return 'MESSAGES.CONFIRM_DELETE';\n  }\n\n  getDeleteConfirmationDialogTitle(): string {\n    return 'CONFIRM';\n  }\n  \n  getInsertSuccessMessage(): string {\n    return 'MESSAGES.INSERTED';\n  }\n\n  getInsertErrorMessage(): string {\n    return 'MESSAGES.ERROR_INSERT';\n  }\n\n  getValidationError(): string {\n    return 'MESSAGES.FORM_VALIDATION_ERROR';\n  }\n\n  getValidationErrorDialogTitle(): string {\n    return 'ERROR';\n  }\n\n  getNothingToUpdateMessage(): string {\n    return 'MESSAGES.FORM_NOTHING_TO_UPDATE_INFO';\n  }\n\n  getActionPermissionNotEnabledMessage(): string {\n    return 'MESSAGES.OPERATION_NOT_ALLOWED_PERMISSION';\n  }\n\n  getDiscardChangesConfirmationMessage(): string {\n    return 'MESSAGES.FORM_CHANGES_WILL_BE_LOST';\n  }\n\n  getDiscardChangesConfirmationDialogTitle(): string {\n    return 'CONFIRM';\n  }\n\n}\n","import { OPermissions } from '../types/o-permissions.type';\nimport { Util } from './util';\n\nexport class PermissionsUtils {\n  public static ACTION_REFRESH = 'refresh';\n  public static ACTION_INSERT = 'insert';\n  public static ACTION_UPDATE = 'update';\n  public static ACTION_DELETE = 'delete';\n\n  public static STANDARD_ACTIONS = [\n    PermissionsUtils.ACTION_REFRESH,\n    PermissionsUtils.ACTION_INSERT,\n    PermissionsUtils.ACTION_UPDATE,\n    PermissionsUtils.ACTION_DELETE\n  ];\n\n  static checkEnabledPermission(permission: OPermissions): boolean {\n    if (Util.isDefined(permission) && permission.enabled === false) {\n      console.warn('MESSAGES.OPERATION_NOT_ALLOWED_PERMISSION');\n      return false;\n    }\n    return true;\n  }\n\n  static registerDisabledChangesInDom(nativeElement: any, args?: any): MutationObserver {\n    const callback: Function = args && args.callback ? args.callback : PermissionsUtils.setDisabledDOMElement;\n    const checkStringValue: boolean = !!(args && args.checkStringValue);\n    if (!Util.isDefined(nativeElement)) {\n      return undefined;\n    }\n\n    const mutationObserver = new MutationObserver((mutations: MutationRecord[]) => {\n      const mutation = mutations[0];\n      if (mutation.type === 'attributes' && mutation.attributeName === 'disabled') {\n        const attribute = (mutation.target as any).attributes.getNamedItem('disabled');\n        if (attribute === null || (checkStringValue && attribute.value !== 'true')) {\n          callback(mutation);\n        }\n      }\n    });\n\n    mutationObserver.observe(nativeElement, {\n      attributes: true,\n      attributeFilter: ['disabled']\n    });\n\n    return mutationObserver;\n  }\n\n  static setDisabledDOMElement(mutation: MutationRecord) {\n    const element = <HTMLInputElement>mutation.target;\n    element.setAttribute('disabled', 'true');\n  }\n}\n","export abstract class OFormToolbarBase {\n  isDetail: boolean;\n  editMode: boolean;\n  abstract setInitialMode(): void;\n  abstract setInsertMode(): void;\n  abstract setEditMode(): void;\n}","import { OConfigureServiceArgs } from './../../../types/configure-service-args.type';\nimport { Component, forwardRef, Inject, Injector, OnDestroy, Type, ViewEncapsulation } from '@angular/core';\nimport { NavigationExtras, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { OFormLayoutManagerBase } from '../../../layouts/form-layout/o-form-layout-manager-base.class';\nimport { OntimizeServiceProvider } from '../../../services/factories';\nimport { NavigationService, ONavigationItem } from '../../../services/navigation.service';\nimport { OntimizeService } from '../../../services/ontimize/ontimize.service';\nimport { Codes } from '../../../util/codes';\nimport { Util } from '../../../util/util';\nimport { OFormBase } from '../o-form-base.class';\nimport { OFormNavigationClass } from './o-form.navigation.class';\n\nexport type QueryConfiguration = {\n  serviceType: string;\n  queryArguments: any[];\n  entity: string;\n  service: string;\n  queryMethod: string;\n  totalRecordsNumber: number;\n  queryRows: number;\n  queryRecordOffset: number;\n};\n\n@Component({\n  selector: 'o-form-navigation',\n  templateUrl: './o-form-navigation.component.html',\n  styleUrls: ['./o-form-navigation.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-form-navigation]': 'true'\n  },\n  providers: [\n    OntimizeServiceProvider\n  ]\n})\nexport class OFormNavigationComponent implements OnDestroy {\n\n  public navigationData: Array<any> = [];\n  private _currentIndex = 0;\n\n  protected formNavigation: OFormNavigationClass;\n  protected navigationService: NavigationService;\n  protected formLayoutManager: OFormLayoutManagerBase;\n\n  protected querySubscription: Subscription;\n  protected dataService: any;\n  protected queryConf: QueryConfiguration;\n\n  constructor(\n    protected injector: Injector,\n    @Inject(forwardRef(() => OFormBase)) private _form: OFormBase,\n    private router: Router\n  ) {\n    this.formNavigation = this._form.getFormNavigation();\n    this.navigationService = this.injector.get<NavigationService>(NavigationService as Type<NavigationService>);\n\n    this.formLayoutManager = this._form.getFormManager();\n\n    let navData;\n    if (this.formLayoutManager && this.formLayoutManager.allowNavigation()) {\n      navData = this.navigationService.getLastItem();\n    } else {\n      navData = this.navigationService.getPreviousRouteData();\n    }\n    if (Util.isDefined(navData)) {\n      this.navigationData = navData.keysValues || [];\n      this.queryConf = navData.queryConfiguration;\n    }\n    this.currentIndex = this.getCurrentIndex();\n    this.configureService();\n  }\n\n  configureService() {\n    if (!this.queryConf) {\n      return;\n    }\n    const configureService: OConfigureServiceArgs = {\n      injector: this.injector,\n      baseService: OntimizeService,\n      entity: this.queryConf.entity,\n      service: this.queryConf.service,\n      serviceType: this.queryConf.serviceType\n    };\n    this.dataService = Util.configureService(configureService);\n  }\n\n  protected queryNavigationData(offset: number, length?: number): Promise<any> {\n    const self = this;\n    return new Promise<any>((resolve: any, reject: any) => {\n      const conf = self.queryConf;\n      const queryArgs = conf.queryArguments;\n\n      queryArgs[1] = self.getKeysArray();\n      queryArgs[4] = offset;\n      queryArgs[5] = length ? length : conf.queryRows;\n\n      self.querySubscription = self.dataService[conf.queryMethod].apply(self.dataService, queryArgs).subscribe(res => {\n        if (res.isSuccessful()) {\n          self.navigationData = res.data;\n          self.queryConf.queryRecordOffset = offset;\n        }\n        resolve();\n      }, () => {\n        reject();\n      });\n    });\n  }\n\n  ngOnDestroy(): void {\n    if (this.querySubscription) {\n      this.querySubscription.unsubscribe();\n    }\n  }\n\n  protected getKeysArray(): string[] {\n    // getting available navigationData keys\n    const navData = this.navigationData ? (this.navigationData[0] || {}) : {};\n    const keysArray = [];\n    this._form.keysArray.forEach(key => {\n      if (navData.hasOwnProperty(key)) {\n        keysArray.push(key);\n      }\n    });\n    return keysArray;\n  }\n\n  getCurrentIndex(): number {\n    const keysArray = this.getKeysArray();\n    // current url keys object\n    const currentKeys = {};\n    const currentItem = this.formNavigation.getUrlParams();\n    keysArray.forEach(key => {\n      currentKeys[key] = currentItem[key];\n    });\n    const index: number = (this.navigationData || []).findIndex((item: any) => {\n      const itemKeys = {};\n      keysArray.forEach(key => {\n        itemKeys[key] = item[key];\n      });\n      return Util.isEquivalent(itemKeys, currentKeys);\n    });\n    return index >= 0 ? index : 0;\n  }\n\n  next() {\n    const total = this.navigationData.length;\n    const index = this.currentIndex + 1;\n    if (total > index) {\n      this.move(index);\n    } else if (this.queryConf) {\n      const offset: number = (this.queryConf.queryRecordOffset || 0) + this.queryConf.queryRows;\n      this.queryNavigationData(offset).then(() => {\n        this.move(0);\n      });\n    } else {\n      console.error('form-toolbar->next(): total > index');\n    }\n  }\n\n  previous() {\n    const index = this.currentIndex - 1;\n    if (index >= 0) {\n      this.move(index);\n    } else if (this.queryConf) {\n      const offset: number = this.queryConf.queryRecordOffset - this.queryConf.queryRows;\n      this.queryNavigationData(offset).then(() => {\n        this.move(this.navigationData.length - 1);\n      });\n    } else {\n      console.error('form-toolbar->next(): index < 0');\n    }\n  }\n\n  first() {\n    if (!this.queryConf || this.queryConf.queryRecordOffset === 0) {\n      this.move(0);\n    } else {\n      this.queryNavigationData(0).then(() => {\n        this.move(0);\n      });\n    }\n  }\n\n  last() {\n    if (!this.queryConf || this.isLast()) {\n      const index = this.navigationData.length - 1;\n      this.move(index);\n    } else {\n      const offset = this.queryConf.totalRecordsNumber - this.queryConf.queryRows;\n      this.queryNavigationData(offset, this.queryConf.queryRows).then(() => {\n        this.move(this.navigationData.length - 1);\n      });\n    }\n  }\n\n  isFirst() {\n    let result: boolean = this.currentIndex === 0;\n    if (result && this.queryConf) {\n      result = this.queryConf.queryRecordOffset === 0;\n    }\n    return result;\n  }\n\n  isLast() {\n    let result: boolean = this.currentIndex === (this.navigationData.length - 1);\n    if (result && this.queryConf) {\n      result = (this.queryConf.queryRecordOffset + this.queryConf.queryRows)\n        >= this.queryConf.totalRecordsNumber;\n    }\n    return result;\n  }\n\n  move(index: number) {\n    this._form.showConfirmDiscardChanges().then(res => {\n      if (res === true) {\n        this.currentIndex = index;\n        if (this.formLayoutManager && this.formLayoutManager.allowNavigation()) {\n          this.moveInFormLayoutManager(index);\n        } else {\n          this.moveWithoutManager(index);\n        }\n      }\n    });\n  }\n\n  private moveWithoutManager(index: number) {\n    const route = this.getRouteOfSelectedRow(this.navigationData[index]);\n    if (route.length > 0) {\n      const navData: ONavigationItem = this.navigationService.getLastItem();\n      if (navData) {\n        this._form.canDiscardChanges = true;\n\n        const extras: NavigationExtras = {};\n        extras[Codes.QUERY_PARAMS] = Codes.getIsDetailObject();\n\n        const urlArray = navData.url.split(Codes.ROUTE_SEPARATOR);\n        const url = urlArray.splice(0, urlArray.length - route.length).join(Codes.ROUTE_SEPARATOR);\n        route.unshift(url);\n\n        this.router.navigate(route, extras).then((navigationDone: boolean) => {\n          if (navigationDone) {\n            this.currentIndex = index;\n            const url = this.router.routerState.snapshot.url.split('?')[0];\n            if (url !== navData.url) {\n              this.navigationService.removeLastItem();\n            }\n          }\n        });\n      }\n    }\n  }\n\n  private moveInFormLayoutManager(index: number) {\n    this._form.setUrlParamsAndReload(this.navigationData[index]);\n  }\n\n  getRouteOfSelectedRow(item: any) {\n    const route = [];\n    if (Util.isObject(item)) {\n      this._form.keysArray.forEach(key => {\n        if (Util.isDefined(item[key])) {\n          route.push(item[key]);\n        }\n      });\n    }\n    return route;\n  }\n\n  showNavigation() {\n    /*\n      queryConf is only defined when the service is pageable\n    */\n    return (Util.isDefined(this.queryConf) && Util.isDefined(this.queryConf.totalRecordsNumber)) ? this.queryConf.totalRecordsNumber > 1 : this.navigationData.length > 1\n  }\n\n  set currentIndex(arg: number) {\n    this._currentIndex = arg;\n  }\n\n  get currentIndex(): number {\n    return this._currentIndex;\n  }\n\n  getRecordIndex(): number {\n    let index = this.currentIndex + 1;\n    if (this.queryConf) {\n      index += this.queryConf.queryRecordOffset;\n    }\n    return index;\n  }\n\n  getTotalRecordsNumber(): number {\n    if (this.queryConf && this.queryConf.totalRecordsNumber) {\n      return this.queryConf.totalRecordsNumber;\n    }\n    return this.navigationData.length;\n  }\n}\n","<ng-container *ngIf=\"showNavigation()\">\n  <button mat-icon-button class=\"o-form-toolbar-button\" [disabled]=\"isFirst()\" (click)=\"first()\">\n    <mat-icon aria-label=\"First\" layout-padding svgIcon=\"ontimize:first_page\"></mat-icon>\n  </button>\n  <button mat-icon-button class=\"o-form-toolbar-button\" [disabled]=\"isFirst()\" (click)=\"previous()\">\n    <mat-icon aria-label=\"Previous\" layout-padding svgIcon=\"ontimize:keyboard_arrow_left\"></mat-icon>\n  </button>\n  <span layout-padding>{{ getRecordIndex() }} / {{ getTotalRecordsNumber() }}</span>\n  <button mat-icon-button class=\"o-form-toolbar-button\" [disabled]=\"isLast()\" (click)=\"next()\">\n    <mat-icon aria-label=\"Next\" layout-padding svgIcon=\"ontimize:keyboard_arrow_right\"></mat-icon>\n  </button>\n  <button mat-icon-button class=\"o-form-toolbar-button\" [disabled]=\"isLast()\" (click)=\"last()\">\n    <mat-icon aria-label=\"Last\" layout-padding svgIcon=\"ontimize:last_page\"></mat-icon>\n  </button>\n</ng-container>","import { AfterViewInit, Component, ElementRef, EventEmitter, Injector, OnDestroy, OnInit, ViewChild, ViewContainerRef, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { DialogService } from '../../../services/dialog.service';\nimport { NavigationService } from '../../../services/navigation.service';\nimport { SnackBarService } from '../../../services/snackbar.service';\nimport { OPermissions } from '../../../types/o-permissions.type';\nimport { Codes } from '../../../util/codes';\nimport { PermissionsUtils } from '../../../util/permissions';\nimport { Util } from '../../../util/util';\nimport { OFormBase } from '../o-form-base.class';\nimport { OFormToolbarBase } from './o-form-toolbar-base.class';\n\nexport const DEFAULT_INPUTS_O_FORM_TOOLBAR = [\n  'labelHeader: label-header',\n  'labelHeaderAlign: label-header-align',\n  'headeractions: header-actions',\n  'showHeaderActionsText: show-header-actions-text',\n  // show-header-navigation [string][yes|no|true|false]: Include navigations buttons in form-toolbar. Default: true;\n  'showHeaderNavigation:show-header-navigation'\n];\n\nexport const DEFAULT_OUTPUTS_O_FORM_TOOLBAR = [\n  'onCancel'\n];\n\n@Component({\n  selector: 'o-form-toolbar',\n  templateUrl: './o-form-toolbar.component.html',\n  styleUrls: ['./o-form-toolbar.component.scss'],\n  inputs: DEFAULT_INPUTS_O_FORM_TOOLBAR,\n  outputs: DEFAULT_OUTPUTS_O_FORM_TOOLBAR,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-form-toolbar]': 'true'\n  },\n  providers: [{ provide: OFormToolbarBase, useExisting: forwardRef(() => OFormToolbarComponent) }],\n})\nexport class OFormToolbarComponent implements OnInit, OnDestroy, AfterViewInit {\n\n  /* Bindings */\n  public labelHeader: string = '';\n  public headeractions: string = '';\n  public labelHeaderAlign: string = 'center';\n\n  @BooleanInputConverter()\n  public showHeaderActionsText: boolean = true;\n  @BooleanInputConverter()\n  public showHeaderNavigation: boolean = true;\n\n  public formActions: string[];\n  public isDetail: boolean = true;\n\n  public editMode: boolean = false;\n  public insertMode: boolean = false;\n  public initialMode: boolean = true;\n  public refreshBtnEnabled: boolean = false;\n  public insertBtnEnabled: boolean = false;\n  public deleteBtnEnabled: boolean = false;\n\n  @ViewChild('breadcrumb', { read: ViewContainerRef })\n  public breadContainer: ViewContainerRef;\n\n  public onCancel: EventEmitter<null> = new EventEmitter();\n\n  public isSaveBtnEnabled: Observable<boolean>;\n  public isEditBtnEnabled: Observable<boolean>;\n  public existsChangesToSave: Observable<boolean>;\n\n  get changesToSave(): boolean {\n    return this._changesToSave;\n  }\n\n  set changesToSave(val: boolean) {\n    this._changesToSave = val;\n    const attr = this._form.isEditableDetail() ? PermissionsUtils.ACTION_UPDATE : PermissionsUtils.ACTION_INSERT;\n    const permissions: OPermissions = (this.actionsPermissions || []).find(p => p.attr === attr);\n    if (Util.isDefined(permissions) && permissions.enabled === false) {\n      return;\n    }\n\n    this._existsChangesToSaveSubject.next(val);\n  }\n\n  protected _changesToSave: boolean = false;\n\n  get editBtnEnabled(): boolean {\n    return this._editBtnEnabled;\n  }\n  set editBtnEnabled(value: boolean) {\n    this._editBtnEnabled = value;\n    this._isEditBtnEnabledSubject.next(this._editBtnEnabled);\n  }\n  protected _editBtnEnabled: boolean = false;\n\n  get saveBtnEnabled(): boolean {\n    return this._saveBtnEnabled;\n  }\n  set saveBtnEnabled(value: boolean) {\n    this._saveBtnEnabled = value;\n    this._isSaveBtnEnabledSubject.next(this._saveBtnEnabled);\n  }\n  protected _saveBtnEnabled: boolean = false;\n\n  protected _dialogService: DialogService;\n  protected _navigationService: NavigationService;\n  protected mutationObservers: MutationObserver[] = [];\n\n  protected formCacheSubscription: Subscription;\n  protected actionsPermissions: OPermissions[];\n  protected snackBarService: SnackBarService;\n\n  protected _includeBreadcrumb: boolean;\n\n  protected _isSaveBtnEnabledSubject = new BehaviorSubject<boolean>(false);\n  protected _isEditBtnEnabledSubject = new BehaviorSubject<boolean>(false);\n  protected _existsChangesToSaveSubject = new BehaviorSubject<boolean>(false);\n\n  constructor(\n    private _form: OFormBase,\n    public element: ElementRef,\n    protected injector: Injector\n  ) {\n    this.isSaveBtnEnabled = this._isSaveBtnEnabledSubject.asObservable();\n    this.isEditBtnEnabled = this._isEditBtnEnabledSubject.asObservable();\n    this.existsChangesToSave = this._existsChangesToSaveSubject.asObservable();\n\n    this._form.registerToolbar(this);\n    this._dialogService = this.injector.get(DialogService);\n    this._navigationService = this.injector.get(NavigationService);\n    this.snackBarService = this.injector.get(SnackBarService);\n  }\n\n  public ngOnInit(): void {\n    this.formActions = Util.parseArray(this.headeractions);\n    if (this.formActions && this.formActions.length > 0) {\n      this.refreshBtnEnabled = this.formActions.indexOf('R') !== -1;\n      this.insertBtnEnabled = this.formActions.indexOf('I') !== -1;\n      this.editBtnEnabled = this.formActions.indexOf('U') !== -1;\n      this.deleteBtnEnabled = !this.insertMode && this.formActions.indexOf('D') !== -1;\n    }\n    if (this._navigationService) {\n      const self = this;\n      this._navigationService.onTitleChange(title => {\n        self.labelHeader = title;\n      });\n    }\n    this.includeBreadcrumb = this._form.includeBreadcrumb && this._form.formContainer.breadcrumb;\n    if (this.includeBreadcrumb) {\n      this._form.formContainer.breadcrumb = false;\n    }\n  }\n\n  public ngOnDestroy(): void {\n    if (this.formCacheSubscription) {\n      this.formCacheSubscription.unsubscribe();\n    }\n    if (this.mutationObservers) {\n      this.mutationObservers.forEach((m: MutationObserver) => {\n        m.disconnect();\n      });\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    this.parsePermissions();\n    if (this.includeBreadcrumb) {\n      this._form.formContainer.createBreadcrumb(this.breadContainer);\n    }\n  }\n\n  public setInitialMode(): void {\n    this.manageEditableDetail();\n    this.initialMode = true;\n    this.insertMode = false;\n    this.editMode = false;\n  }\n\n  public setInsertMode(): void {\n    this.initialMode = false;\n    this.insertMode = true;\n    this.editMode = false;\n  }\n\n  public setEditMode(): void {\n    this.initialMode = false;\n    this.insertMode = false;\n    this.editMode = true;\n  }\n\n  public onCloseDetail(options?: any): void {\n    this._form.executeToolbarAction(Codes.CLOSE_DETAIL_ACTION, Object.assign(options || {}, {\n      changeToolbarMode: true\n    }));\n  }\n\n  public onBack(options?: any): void {\n    this._form.executeToolbarAction(Codes.BACK_ACTION, options);\n  }\n\n  public onReload(): void {\n    if (!this.checkEnabledPermission(PermissionsUtils.ACTION_REFRESH)) {\n      return;\n    }\n    this._form.showConfirmDiscardChanges().then(val => {\n      if (val) {\n        this._form.executeToolbarAction(Codes.RELOAD_ACTION, { exitWithoutConfirmation: true });\n      }\n    });\n  }\n\n  public onInsert(): void {\n    if (!this.checkEnabledPermission(PermissionsUtils.ACTION_INSERT)) {\n      return;\n    }\n\n    this._form.executeToolbarAction(Codes.GO_INSERT_ACTION, {\n      changeToolbarMode: true\n    });\n  }\n\n  public onEdit(): void {\n    if (!this.checkEnabledPermission(PermissionsUtils.ACTION_UPDATE)) {\n      return;\n    }\n\n    this._form.executeToolbarAction(Codes.GO_EDIT_ACTION, {\n      changeToolbarMode: true\n    });\n  }\n\n  public onDelete(): void {\n    if (!this.checkEnabledPermission(PermissionsUtils.ACTION_DELETE)) {\n      return;\n    }\n\n    this.showConfirmDelete();\n  }\n\n  public onSave(): void {\n    if (!this.checkEnabledPermission(PermissionsUtils.ACTION_UPDATE)) {\n      return;\n    }\n\n    this.handleAcceptEditOperation();\n  }\n\n  public cancelOperation(): void {\n    this._form.showConfirmDiscardChanges().then(val => {\n      if (val) {\n        // ensuring editMode to false to avoid o-form canDeactivate function triggering\n        this.editMode = false;\n        this.onCancel.emit();\n        const closeOptions = { exitWithoutConfirmation: true };\n        if (this.isDetail) {\n          this.onCloseDetail(closeOptions);\n        } else if (this.insertMode) {\n          this.onBack(closeOptions);\n        } else {\n          this.onReload();\n          this._form.setInitialMode();\n        }\n      }\n    });\n  }\n\n  public acceptOperation(): void {\n    if (this.editMode) {\n      if (!this.checkEnabledPermission(PermissionsUtils.ACTION_UPDATE)) {\n        return;\n      }\n      this.handleAcceptEditOperation();\n    } else if (this.insertMode) {\n      if (!this.checkEnabledPermission(PermissionsUtils.ACTION_INSERT)) {\n        return;\n      }\n      this.handleAcceptInsertOperation();\n    }\n  }\n\n  public handleAcceptInsertOperation(): void {\n    this._form.executeToolbarAction(Codes.INSERT_ACTION);\n  }\n\n  public handleAcceptEditOperation(): void {\n    this._form.executeToolbarAction(Codes.EDIT_ACTION);\n  }\n\n  public showConfirmDelete(): void {\n    this._dialogService.confirm(\n      this._form.messageService.getDeleteConfirmationDialogTitle(),\n      this._form.messageService.getDeleteConfirmationMessage()).then(res => {\n        if (res) {\n          this._form.executeToolbarAction(Codes.DELETE_ACTION).subscribe(resp => {\n            this._form.onDelete.emit(resp);\n            this.onCloseDetail({ exitWithoutConfirmation: true });\n          }, err => {\n            console.error('OFormToolbar.delete error', err);\n          });\n        }\n      }\n      );\n  }\n\n  get showNavigation(): boolean {\n    return this.showHeaderNavigation && !(this._form.getFormManager() && this._form.getFormManager().isTabMode());\n  }\n\n  public getLabelHeaderAlign(): string {\n    return this.labelHeaderAlign;\n  }\n\n  get showUndoButton(): boolean {\n    return this._form.undoButton && (!this.initialMode || this._form.isEditableDetail());\n  }\n\n  get isChangesStackEmpty(): boolean {\n    return this._form.isCacheStackEmpty;\n  }\n\n  public onUndoLastChange(): void {\n    this._form.executeToolbarAction(Codes.UNDO_LAST_CHANGE_ACTION);\n  }\n\n  get isRefreshBtnEnabled(): boolean {\n    return this.refreshBtnEnabled;\n  }\n\n  get isInsertBtnEnabled(): boolean {\n    return this.insertBtnEnabled;\n  }\n\n  get isDeleteBtnEnabled(): boolean {\n    return this.deleteBtnEnabled;\n  }\n\n  public hasEnabledPermission(permission: OPermissions): boolean {\n    return permission ? permission.enabled : true;\n  }\n\n  get includeBreadcrumb(): boolean {\n    return this._includeBreadcrumb;\n  }\n\n  set includeBreadcrumb(arg: boolean) {\n    this._includeBreadcrumb = arg;\n  }\n\n  protected manageEditableDetail(): void {\n    const isEditableDetail = this._form.isEditableDetail();\n\n    const updatePermissions: OPermissions = (this.actionsPermissions || []).find(p => p.attr === PermissionsUtils.ACTION_UPDATE);\n    if (this.hasEnabledPermission(updatePermissions)) {\n      this.saveBtnEnabled = isEditableDetail;\n    }\n\n    this.refreshBtnEnabled = this.refreshBtnEnabled && isEditableDetail;\n    this.insertBtnEnabled = this.insertBtnEnabled && isEditableDetail;\n    this.editBtnEnabled = this.editBtnEnabled && !isEditableDetail;\n\n    this.formCacheSubscription = this._form.getFormCache().onCacheStateChanges.subscribe((value: any) => {\n      if (this._form.isEditableDetail()) {\n        this.changesToSave = this._form.isInitialStateChanged();\n      }\n    });\n  }\n\n  protected parsePermissions(): void {\n    if (this._form.getAttribute()) {\n      this.actionsPermissions = this._form.getActionsPermissions();\n\n      if (!Util.isDefined(this.actionsPermissions)) {\n        return;\n      }\n      const self = this;\n      this.actionsPermissions.forEach((permission: OPermissions) => {\n        // others actions\n        self.permissionManagement(permission);\n\n        if (PermissionsUtils.STANDARD_ACTIONS.indexOf(permission.attr) > -1) {\n          // actions R;I;U;D\n          if (permission.attr === PermissionsUtils.ACTION_UPDATE) {\n            self.permissionManagement(permission, 'edit');\n          }\n        }\n      });\n    }\n  }\n\n  private permissionManagement(permission: OPermissions, attr?: string): void {\n    const attrAction = Util.isDefined(attr) ? attr : permission.attr;\n    const elementByAction = this.element.nativeElement.querySelector('[attr=\"' + attrAction + '\"]');\n\n    if (Util.isDefined(elementByAction)) {\n      if (!permission.visible) {\n        elementByAction.remove();\n      } else {\n        if (!permission.enabled) {\n          elementByAction.disabled = true;\n          const mutationObserver = PermissionsUtils.registerDisabledChangesInDom(elementByAction);\n          this.mutationObservers.push(mutationObserver);\n        }\n      }\n    }\n  }\n\n  private checkEnabledPermission(attr): boolean {\n    const permissions: OPermissions = (this.actionsPermissions || []).find(p => p.attr === attr);\n    const enabledPermision = PermissionsUtils.checkEnabledPermission(permissions);\n    if (!enabledPermision) {\n      this.snackBarService.open(this._form.messageService.getActionPermissionNotEnabledMessage());\n    }\n    return enabledPermision;\n  }\n\n}\n","<mat-toolbar class=\"o-form-toolbar-header\" [class.breadcrumb]=\"includeBreadcrumb\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n\n  <ng-template *ngIf=\"includeBreadcrumb\" #breadcrumb></ng-template>\n\n  <div class=\"mat-toolbar-tools\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n    <button type=\"button\" mat-icon-button (click)=\"onBack()\" *ngIf=\"isDetail\" class=\"o-form-toolbar-button o-form-toolbar-back\">\n      <mat-icon svgIcon=\"ontimize:arrow_back\"></mat-icon>\n    </button>\n\n    <o-form-navigation #formNavigation *ngIf=\"showNavigation\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n    </o-form-navigation>\n\n    <span *ngIf=\"getLabelHeaderAlign() === 'center' || getLabelHeaderAlign() === 'end'\" class=\"fill-remaining\"></span>\n    <div *ngIf=\"labelHeader!=''\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n      <span>{{ labelHeader | oTranslate }}</span>\n    </div>\n    <span *ngIf=\"getLabelHeaderAlign() === 'start' || getLabelHeaderAlign() === 'center'\" class=\"fill-remaining\"></span>\n\n    <ng-content select=\"[o-custom-form-toolbar-buttons-wrapper]\"></ng-content>\n\n    <ng-template [ngIf]=\"showHeaderActionsText\" [ngIfElse]=\"undoBtnWithoutText\">\n      <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-undo\" mat-stroked-button (click)=\"onUndoLastChange()\"\n        [disabled]=\"isChangesStackEmpty\" *ngIf=\"showUndoButton\">\n        <mat-icon svgIcon=\"ontimize:undo\"></mat-icon>\n        <span>{{ 'UNDO' | oTranslate }}</span>\n      </button>\n    </ng-template>\n    <ng-template #undoBtnWithoutText>\n      <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-undo\" mat-icon-button (click)=\"onUndoLastChange()\"\n        [disabled]=\"isChangesStackEmpty\" *ngIf=\"showUndoButton\">\n        <mat-icon svgIcon=\"ontimize:undo\"></mat-icon>\n      </button>\n    </ng-template>\n\n    <ng-container *ngIf=\"initialMode\">\n      <ng-template [ngIf]=\"showHeaderActionsText\" [ngIfElse]=\"buttonsWithouText\">\n        <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-refresh\" mat-stroked-button (click)=\"onReload()\"\n          *ngIf=\"isRefreshBtnEnabled\" attr=\"refresh\">\n          <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n          <span>{{ 'REFRESH' | oTranslate }}</span>\n        </button>\n        <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-insert\" mat-stroked-button (click)=\"onInsert()\"\n          *ngIf=\"isInsertBtnEnabled\" attr=\"insert\">\n          <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n          <span>{{ 'ADD' | oTranslate }}</span>\n        </button>\n        <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-edit\" mat-stroked-button (click)=\"onEdit()\"\n          *ngIf=\"isEditBtnEnabled | async\" attr=\"edit\">\n          <mat-icon svgIcon=\"ontimize:edit\"></mat-icon>\n          <span>{{ 'EDIT' | oTranslate }}</span>\n        </button>\n        <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-delete\" mat-stroked-button (click)=\"onDelete()\"\n          *ngIf=\"isDeleteBtnEnabled\" attr=\"delete\">\n          <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n          <span>{{ 'DELETE' | oTranslate }}</span>\n        </button>\n        <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-save\" mat-stroked-button (click)=\"onSave()\"\n          [disabled]=\"!(existsChangesToSave | async)\" *ngIf=\"isSaveBtnEnabled | async\" attr=\"update\">\n          <mat-icon svgIcon=\"ontimize:save\"></mat-icon>\n          <span>{{ 'SAVE' | oTranslate }}</span>\n        </button>\n      </ng-template>\n      <ng-template #buttonsWithouText>\n        <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-refresh\" mat-icon-button (click)=\"onReload()\"\n          *ngIf=\"isRefreshBtnEnabled\" attr=\"refresh\">\n          <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n        </button>\n        <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-insert\" mat-icon-button (click)=\"onInsert()\"\n          *ngIf=\"isInsertBtnEnabled\" attr=\"insert\">\n          <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n        </button>\n        <button type=\"button\" class=\"o-form-toolbar-button-o-form-toolbar-button-edit\" mat-icon-button (click)=\"onEdit()\"\n          *ngIf=\"isEditBtnEnabled | async\" attr=\"edit\">\n          <mat-icon svgIcon=\"ontimize:edit\"></mat-icon>\n        </button>\n        <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-delete\" mat-icon-button (click)=\"onDelete()\"\n          *ngIf=\"isDeleteBtnEnabled\" attr=\"delete\">\n          <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n        </button>\n        <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-save\" mat-icon-button (click)=\"onSave()\"\n          [disabled]=\"!existsChangesToSave\" *ngIf=\"isSaveBtnEnabled | async\" attr=\"update\">\n          <mat-icon svgIcon=\"ontimize:save\"></mat-icon>\n        </button>\n      </ng-template>\n    </ng-container>\n\n    <ng-container *ngIf=\"editMode || insertMode\">\n      <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-cancel\" mat-stroked-button (click)=\"cancelOperation()\">\n        <mat-icon svgIcon=\"ontimize:clear\"></mat-icon>\n        <span *ngIf=\"showHeaderActionsText\">{{ 'CANCEL' | oTranslate }}</span>\n      </button>\n      <button type=\"button\" class=\"o-form-toolbar-button o-form-toolbar-button-insert\" mat-stroked-button color=\"primary\" (click)=\"acceptOperation()\">\n        <mat-icon svgIcon=\"ontimize:done\"></mat-icon>\n        <span *ngIf=\"showHeaderActionsText\">{{ 'INSERT' | oTranslate }}</span>\n      </button>\n    </ng-container>\n  </div>\n\n</mat-toolbar>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Injector,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Type,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router, UrlSegment } from '@angular/router';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { IComponent } from '../../interfaces/component.interface';\nimport { IFormDataComponent } from '../../interfaces/form-data-component.interface';\nimport { IFormDataTypeComponent } from '../../interfaces/form-data-type-component.interface';\nimport { ServiceResponse } from '../../interfaces/service-response.interface';\nimport { OFormLayoutManagerBase } from '../../layouts/form-layout/o-form-layout-manager-base.class';\nimport { DialogService } from '../../services/dialog.service';\nimport { OntimizeServiceProvider } from '../../services/factories';\nimport { NavigationService, ONavigationItem } from '../../services/navigation.service';\nimport { OntimizeService } from '../../services/ontimize/ontimize.service';\nimport { PermissionsService } from '../../services/permissions/permissions.service';\nimport { SnackBarService } from '../../services/snackbar.service';\nimport { OConfigureMessageServiceArgs } from '../../types/configure-message-service-args.type';\nimport { OConfigureServiceArgs } from '../../types/configure-service-args.type';\nimport { FormLayoutCloseDetailOptions } from '../../types/form-layout-detail-component-data.type';\nimport { FormValueOptions } from '../../types/form-value-options.type';\nimport { OFormInitializationOptions } from '../../types/o-form-initialization-options.type';\nimport { OFormPermissions } from '../../types/o-form-permissions.type';\nimport { OPermissions } from '../../types/o-permissions.type';\nimport { Codes } from '../../util/codes';\nimport { SQLTypes } from '../../util/sqltypes';\nimport { Util } from '../../util/util';\nimport { OFormContainerComponent } from '../form-container/o-form-container.component';\nimport { OFormControl } from '../input/o-form-control.class';\nimport { OFormCacheClass } from './cache/o-form.cache.class';\nimport { CanComponentDeactivate, CanDeactivateFormGuard } from './guards/o-form-can-deactivate.guard';\nimport { OFormNavigationClass } from './navigation/o-form.navigation.class';\nimport { OFormBase } from './o-form-base.class';\nimport { O_FORM_GLOBAL_CONFIG } from './o-form-tokens';\nimport { OFormValue } from './o-form-value';\nimport { OFormMessageService } from './services/o-form-message.service';\nimport { OFormToolbarBase } from './toolbar/o-form-toolbar-base.class';\nimport { OFormToolbarComponent } from './toolbar/o-form-toolbar.component';\nimport { OFormValidation } from '../../types/error-form-validation.type';\n\ninterface IFormDataComponentHash {\n  [attr: string]: IFormDataComponent;\n}\n\nexport const DEFAULT_INPUTS_O_FORM = [\n  // show-header [boolean]: visibility of form toolbar. Default: yes.\n  'showHeader: show-header',\n\n  // header-mode [string][ none | floating ]: painting mode of form toolbar. Default: 'floating'\n  'headerMode: header-mode',\n\n  // header-position [ top | bottom ]: position of the form toolbar. Default: 'top'\n  'headerPosition: header-position',\n\n  // label-header [string]: displayable text on form toolbar. Default: ''.\n  'labelheader: label-header',\n\n  // label-header-align [string][start | center | end]: alignment of form toolbar text. Default: 'center'\n  'labelHeaderAlign: label-header-align',\n\n  // header-actions [string]: available action buttons on form toolbar of standard CRUD operations, separated by ';'. Available options are R;I;U;D (Refresh, Insert, Update, Delete). Default: R;I;U;D\n  'headeractions: header-actions',\n\n  // show-header-actions-text [string][yes|no|true|false]: show text of form toolbar buttons. Default yes\n  'showHeaderActionsText: show-header-actions-text',\n\n  // entity [string]: entity of the service. Default: no value.\n  'entity',\n\n  // keys [string]: entity keys, separated by ';'. Default: no value.\n  'keys',\n\n  // columns [string]: columns of the entity, separated by ';'. Default: no value.\n  'columns',\n\n  // service [string]: JEE service path. Default: no value.\n  'service',\n\n  // stay-in-record-after-edit [string][yes|no|true|false]: shows edit form after edit a record. Default: false;\n  'stayInRecordAfterEdit: stay-in-record-after-edit',\n\n  // [string][new | detail]: shows reseted form after insert a new record (new) or shows the inserted record after (detail)\n  'afterInsertMode: after-insert-mode',\n\n  'serviceType : service-type',\n\n  'queryOnInit : query-on-init',\n\n  'parentKeys: parent-keys',\n\n  // query-method [string]: name of the service method to perform queries. Default: query.\n  'queryMethod: query-method',\n\n  // insert-method [string]: name of the service method to perform inserts. Default: insert.\n  'insertMethod: insert-method',\n\n  // update-method [string]: name of the service method to perform updates. Default: update.\n  'updateMethod: update-method',\n\n  // delete-method [string]: name of the service method to perform deletions. Default: delete.\n  'deleteMethod: delete-method',\n\n  // layout-direction [string][column|row]: Default: column\n  'layoutDirection: layout-direction',\n\n  // fxLayoutAlign value. Default: 'start start'\n  'layoutAlign: layout-align',\n\n  // editable-detail [string][yes|no|true|false]: Default: true;\n  'editableDetail: editable-detail',\n\n  // keys-sql-types [string]: entity keys types, separated by ';'. Default: no value.\n  'keysSqlTypes: keys-sql-types',\n\n  // undo-button [string][yes|no|true|false]: Include undo button in form-toolbar. Default: true;\n  'undoButton: undo-button',\n\n  // show-header-navigation [string][yes|no|true|false]: Include navigations buttons in form-toolbar. Default: false;\n  'showHeaderNavigation: show-header-navigation',\n\n  // attr\n  'oattr:attr',\n\n  'includeBreadcrumb: include-breadcrumb',\n\n  'detectChangesOnBlur: detect-changes-on-blur',\n\n  'confirmExit: confirm-exit',\n\n  // ignore-on-exit [string]: fields attr's that will be ignored when the form is closed, separated by ';'. Default: no value.\n  'ignoreOnExit: ignore-on-exit',\n\n  // [function]: function to execute on query error. Default: no value.\n  'queryFallbackFunction: query-fallback-function',\n\n  // 'insertFallbackFunction: insert-fallback-function',\n\n  // 'updateFallbackFunction: update-fallback-function',\n\n  // 'deleteFallbackFunction: delete-fallback-function'\n\n  // ignore-default-navigation [string][yes|no|true|false]: ignore default navigation when user click the toolbar buttons. Default: no.\n  'ignoreDefaultNavigation: ignore-default-navigation',\n\n  'messageServiceType : message-service-type',\n  //set-value-order: order of the field attributes by which the value will be set, separated by '; '. Default: no value.\n  'setValueOrder: set-value-order',\n\n  //form-data-validation: Executes the before-save validation callback for insert and update operations\n  'formDataValidationFunction: form-data-validation-function'\n];\n\nexport const DEFAULT_OUTPUTS_O_FORM = [\n  'onDataLoaded',\n  'beforeCloseDetail',\n  'beforeGoEditMode',\n  'onFormModeChange',\n  'onBeforeInsert',\n  'onBeforeUpdate',\n  'onBeforeDelete',\n  'onInsert',\n  'onUpdate',\n  'onDelete',\n  'beforeInsertMode',\n  'beforeUpdateMode',\n  'beforeInitialMode',\n  'onInsertMode',\n  'onUpdateMode',\n  'onInitialMode',\n  'onCancel'\n];\n\n@Component({\n  selector: 'o-form',\n  providers: [\n    { provide: OFormBase, useExisting: forwardRef(() => OFormComponent) },\n    OntimizeServiceProvider,\n    OFormMessageService\n  ],\n  templateUrl: './o-form.component.html',\n  styleUrls: ['./o-form.component.scss'],\n  inputs: DEFAULT_INPUTS_O_FORM,\n  outputs: DEFAULT_OUTPUTS_O_FORM,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-form]': 'true'\n  }\n})\nexport class OFormComponent implements OnInit, OnDestroy, CanComponentDeactivate, AfterViewInit {\n\n  public static DEFAULT_LAYOUT_DIRECTION = 'column';\n  public static guardClassName = 'CanDeactivateFormGuard';\n\n  /* inputs variables */\n  @BooleanInputConverter()\n  showHeader: boolean = true;\n  headerMode: string = 'floating';\n  headerPosition: 'top' | 'bottom' = 'top';\n  labelheader: string = '';\n  labelHeaderAlign: string = 'center';\n  headeractions: string = 'all';\n  showHeaderActionsText: string = 'yes';\n  entity: string;\n  keys: string = '';\n  columns: string = '';\n  setValueOrder: string = '';\n  service: string;\n  @BooleanInputConverter()\n  stayInRecordAfterEdit: boolean = false;\n  afterInsertMode: 'new' | 'detail' | 'close' = 'close';\n  serviceType: string;\n  @BooleanInputConverter()\n  protected queryOnInit: boolean = true;\n  protected parentKeys: string;\n  protected queryMethod: string = Codes.QUERY_METHOD;\n  protected insertMethod: string = Codes.INSERT_METHOD;\n  protected updateMethod: string = Codes.UPDATE_METHOD;\n  protected deleteMethod: string = Codes.DELETE_METHOD;\n  protected _layoutDirection: string = OFormComponent.DEFAULT_LAYOUT_DIRECTION;\n  protected _layoutAlign: string = 'start stretch';\n  @BooleanInputConverter()\n  protected editableDetail: boolean = true;\n  protected keysSqlTypes: string;\n  @BooleanInputConverter()\n  undoButton: boolean = true;\n  @BooleanInputConverter()\n  showHeaderNavigation: boolean = false;\n  public oattr: string = '';\n  @BooleanInputConverter()\n  includeBreadcrumb: boolean = false;\n  @BooleanInputConverter()\n  detectChangesOnBlur: boolean = true;\n  @BooleanInputConverter()\n  confirmExit: boolean = true;\n  setValueOrderArray: string[];\n\n  set ignoreOnExit(val: string[]) {\n    if (typeof val === 'string') {\n      val = Util.parseArray(val, true);\n    }\n    this._ignoreOnExit = val;\n  }\n  get ignoreOnExit(): string[] {\n    return this._ignoreOnExit;\n  }\n  protected _ignoreOnExit: string[];\n  public queryFallbackFunction: (error: any) => void;\n\n  @BooleanInputConverter()\n  public ignoreDefaultNavigation: boolean = false;\n  messageServiceType: string;\n  public formDataValidationFunction: (data: any) => OFormValidation;\n\n  /* end of inputs variables */\n\n  /*parsed inputs variables */\n  isDetailForm: boolean = false;\n  keysArray: string[] = [];\n  colsArray: string[] = [];\n  dataService: any;\n  _pKeysEquiv = {};\n  keysSqlTypesArray: Array<string> = [];\n  protected _messageService: OFormMessageService;\n  /* end of parsed inputs variables */\n\n  formGroup: UntypedFormGroup;\n  onDataLoaded: EventEmitter<object> = new EventEmitter<object>();\n  beforeCloseDetail: EventEmitter<any> = new EventEmitter<any>();\n  /**\n   * @deprecated Use `beforeUpdateMode` instead\n   */\n  beforeGoEditMode: EventEmitter<any> = new EventEmitter<any>();\n  beforeInsertMode = new EventEmitter<null>();\n  beforeUpdateMode = new EventEmitter<null>();\n  beforeInitialMode = new EventEmitter<null>();\n  onInsertMode = new EventEmitter<null>();\n  onUpdateMode = new EventEmitter<null>();\n  onInitialMode = new EventEmitter<null>();\n  onFormModeChange: EventEmitter<number> = new EventEmitter<number>();\n  public onBeforeInsert: EventEmitter<any> = new EventEmitter();\n  public onBeforeUpdate: EventEmitter<any> = new EventEmitter();\n  public onBeforeDelete: EventEmitter<any> = new EventEmitter();\n  public onInsert: EventEmitter<any> = new EventEmitter();\n  public onUpdate: EventEmitter<any> = new EventEmitter();\n  public onDelete: EventEmitter<any> = new EventEmitter();\n  public onCancel: EventEmitter<null> = new EventEmitter();\n\n  protected loadingSubject = new BehaviorSubject<boolean>(false);\n  public loading: Observable<boolean> = this.loadingSubject.asObservable();\n  public formData: object = {};\n  public navigationData: Array<any> = [];\n  public currentIndex = 0;\n  public mode: number = OFormComponent.Mode().INITIAL;\n\n  protected dialogService: DialogService;\n  protected navigationService: NavigationService;\n  protected snackBarService: SnackBarService;\n\n  protected _formToolbar: OFormToolbarBase;\n\n  protected _components: IFormDataComponentHash = {};\n  protected _compSQLTypes: object = {};\n\n  formParentKeysValues: object;\n\n  public onFormInitStream: EventEmitter<boolean> = new EventEmitter<boolean>();\n  protected reloadStream: Observable<any>;\n  protected reloadStreamSubscription: Subscription;\n\n  protected querySubscription: Subscription;\n  protected loaderSubscription: Subscription;\n  protected dynamicFormSubscription: Subscription;\n\n  protected deactivateGuard: CanDeactivateFormGuard;\n  public deactivateGuardId: string;\n  protected formCache: OFormCacheClass;\n  protected formNavigation: OFormNavigationClass;\n\n  public formContainer: OFormContainerComponent;\n\n  protected permissionsService: PermissionsService;\n  protected permissions: OFormPermissions;\n\n  @ViewChild('innerForm') innerFormEl: ElementRef;\n\n  ignoreFormCacheKeys: Array<any> = [];\n  canDiscardChanges: boolean;\n\n  public static Mode(): any {\n    enum m {\n      QUERY,\n      INSERT,\n      UPDATE,\n      INITIAL\n    }\n    return m;\n  }\n\n  constructor(\n    protected router: Router,\n    protected actRoute: ActivatedRoute,\n    protected zone: NgZone,\n    protected cd: ChangeDetectorRef,\n    protected injector: Injector,\n    protected elRef: ElementRef\n  ) {\n\n    this.formCache = new OFormCacheClass(this);\n    this.formNavigation = new OFormNavigationClass(this.injector, this, this.router, this.actRoute);\n\n    this.dialogService = injector.get<DialogService>(DialogService as Type<DialogService>);\n    this.navigationService = injector.get<NavigationService>(NavigationService as Type<NavigationService>);\n    this.snackBarService = injector.get<SnackBarService>(SnackBarService as Type<SnackBarService>);\n    this.permissionsService = this.injector.get<PermissionsService>(PermissionsService as Type<PermissionsService>);\n\n    const self = this;\n    this.reloadStream = combineLatest([\n      self.onFormInitStream.asObservable(),\n      self.formNavigation.navigationStream.asObservable()\n    ]);\n\n    this.reloadStreamSubscription = this.reloadStream.subscribe(valArr => {\n      if (Util.isArray(valArr) && valArr.length === 2 && !self.isInInsertMode()) {\n        const valArrValues = valArr[0] === true && valArr[1] === true;\n        if (self.queryOnInit && valArrValues) {\n          self.reload(true);\n        } else {\n          self.initializeFields();\n        }\n      }\n    });\n\n    try {\n      this.formContainer = injector.get(OFormContainerComponent);\n      this.formContainer.setForm(this);\n    } catch (e) {\n      //\n    }\n    this.getGlobalConfig();\n  }\n\n  private getGlobalConfig() {\n    try {\n      const oFormGlobalConfig = this.injector.get(O_FORM_GLOBAL_CONFIG);\n      if (Util.isDefined(oFormGlobalConfig.headerActions)) {\n        this.headeractions = oFormGlobalConfig.headerActions;\n      };\n\n    } catch (error) {\n      // Do nothing because is optional\n    }\n  }\n\n  registerFormComponent(comp: any) {\n    if (comp) {\n      const attr = comp.getAttribute();\n      if (attr && attr.length > 0) {\n\n        if (!comp.isAutomaticRegistering()) {\n          return;\n        }\n\n        if (this._components.hasOwnProperty(attr)) {\n          comp.repeatedAttr = true;\n          console.error('There is already a component registered in the form with the attr: ' + attr);\n          return;\n        }\n\n        this._components[attr] = comp;\n        // Setting parent key values...\n        if (this.formParentKeysValues && this.formParentKeysValues[attr] !== undefined) {\n          const val = this.formParentKeysValues[attr];\n          this._components[attr].setValue(val, {\n            emitModelToViewChange: false,\n            emitEvent: false\n          });\n        }\n        /*\n        * TODO. Check it!!!\n        * En un formulario con tabs, cuando se cambia de uno a otro, se destruyen las vistas\n        * de los componentes hijo del formulario.\n        * formDataCache contiene los valores (originales ó editados) de los campos del formulario.\n        * La idea es asignar ese valor al campo cuando se registre de nuevo (Hay que asegurar el proceso\n        * para que sólo sea cuando se registra de nuevo ;) )\n        */\n        const cachedValue = this.formCache.getCachedValue(attr);\n        if (Util.isDefined(cachedValue) && this.getDataValues() && this._components.hasOwnProperty(attr)) {\n          this._components[attr].setValue(cachedValue, {\n            emitModelToViewChange: false,\n            emitEvent: false\n          });\n        }\n      }\n    }\n  }\n\n  registerSQLTypeFormComponent(comp: IFormDataTypeComponent) {\n    if ((comp as any).repeatedAttr) {\n      return;\n    }\n    if (comp) {\n      const type = comp.getSQLType();\n      const attr = comp.getAttribute();\n      if (type !== SQLTypes.OTHER && attr && attr.length > 0 && this.ignoreFormCacheKeys.indexOf(attr) === -1) {\n        // Right now just store values different of 'OTHER'\n        this._compSQLTypes[attr] = type;\n      }\n    }\n  }\n\n  registerFormControlComponent(comp: IFormDataComponent) {\n    if ((comp as any).repeatedAttr) {\n      return;\n    }\n    if (comp) {\n      const attr = comp.getAttribute();\n      if (attr && attr.length > 0) {\n        const control: UntypedFormControl = comp.getControl();\n        if (control) {\n          this.formGroup.registerControl(attr, control);\n          if (!comp.isAutomaticRegistering()) {\n            this.ignoreFormCacheKeys.push(comp.getAttribute());\n          }\n        }\n      }\n    }\n  }\n\n  unregisterFormComponent(comp: IComponent) {\n    if (comp) {\n      const attr = comp.getAttribute();\n      if (attr && attr.length > 0 && this._components.hasOwnProperty(attr)) {\n        delete this._components[attr];\n      }\n    }\n  }\n\n  getAttribute(): string {\n    if (this.oattr) {\n      return this.oattr;\n    }\n    return undefined;\n  }\n\n  unregisterFormControlComponent(comp: IFormDataComponent) {\n    if (comp && comp.isAutomaticRegistering()) {\n      const control: UntypedFormControl = comp.getControl();\n      const attr = comp.getAttribute();\n      if (control && attr && attr.length > 0) {\n        this.formGroup.removeControl(attr);\n      }\n    }\n  }\n\n  unregisterSQLTypeFormComponent(comp: IFormDataTypeComponent) {\n    if (comp) {\n      const attr = comp.getAttribute();\n      if (attr && attr.length > 0) {\n        delete this._compSQLTypes[attr];\n      }\n    }\n  }\n\n  registerToolbar(fToolbar: OFormToolbarComponent) {\n    if (fToolbar) {\n      this._formToolbar = fToolbar;\n      this._formToolbar.isDetail = this.isDetailForm;\n    }\n  }\n\n  getComponents(): IFormDataComponentHash {\n    return this._components;\n  }\n\n  public load(): any {\n    const self = this;\n    const zone = this.injector.get(NgZone);\n    const loadObservable = new Observable(observer => {\n      const timer = window.setTimeout(() => {\n        observer.next(true);\n      }, 250);\n\n      return () => {\n        window.clearTimeout(timer);\n        zone.run(() => {\n          self.loadingSubject.next(false);\n        });\n      };\n\n    });\n    const subscription = loadObservable.subscribe(val => {\n      zone.run(() => {\n        self.loadingSubject.next(val as boolean);\n      });\n    });\n    return subscription;\n  }\n\n  getDataValue(attr: string) {\n    if (this.isInInsertMode()) {\n      const urlParams = this.formNavigation.getFilterFromUrlParams();\n      const val = this.formGroup.value[attr] || urlParams[attr];\n      return new OFormValue(val);\n    } else if (this.isInInitialMode() && !this.isEditableDetail()) {\n      const data = this.formData;\n      if (data && data.hasOwnProperty(attr)) {\n        return data[attr];\n      }\n    } else if (this.isInUpdateMode() || this.isEditableDetail()) {\n      if (this.formData && Object.keys(this.formData).length > 0) {\n        const val = this.formCache.getCachedValue(attr);\n        if (this.formGroup.dirty && val) {\n          if (val instanceof OFormValue) {\n            return val;\n          }\n          return new OFormValue(val);\n        } else {\n          // Return original value stored into form data...\n          const data = this.formData;\n          if (data && data.hasOwnProperty(attr)) {\n            return data[attr];\n          }\n        }\n      }\n    }\n    return new OFormValue();\n  }\n\n  getDataValues() {\n    return this.formData;\n  }\n\n  /**\n   * Clears the form data. The data related to url params and parent keys remain unchanged.\n   */\n  clearData() {\n    const filter = this.formNavigation.getFilterFromUrlParams();\n    this.formGroup.reset({}, {\n      emitEvent: false\n    });\n    this.setData(filter);\n  }\n\n  canDeactivate(): Observable<boolean> | Promise<boolean> | boolean {\n    const readOnly = this.isInInitialMode() && !this.isEditableDetail();\n    const cancelledEdition = this.isInUpdateMode() && this._formToolbar && !this._formToolbar.editMode;\n    if (readOnly || cancelledEdition) {\n      return true;\n    }\n\n    if (!this.confirmExit) {\n      return true;\n    }\n    const canDiscardChanges = !!this.canDiscardChanges;\n    this.canDiscardChanges = false;\n    return canDiscardChanges || this.showConfirmDiscardChanges();\n  }\n\n  showConfirmDiscardChanges(): Promise<boolean> {\n    return this.formNavigation.showConfirmDiscardChanges(this.ignoreOnExit);\n  }\n\n  executeToolbarAction(action: string, options?: any) {\n    switch (action) {\n      case Codes.BACK_ACTION: this.back(options); break;\n      case Codes.CLOSE_DETAIL_ACTION: this.closeDetail(options); break;\n      case Codes.RELOAD_ACTION: this.reload(true); break;\n      case Codes.GO_INSERT_ACTION: this.goInsertMode(options); break;\n      case Codes.INSERT_ACTION: this.insert(); break;\n      case Codes.GO_EDIT_ACTION: this.goEditMode(); break;\n      case Codes.EDIT_ACTION: this.update(); break;\n      case Codes.UNDO_LAST_CHANGE_ACTION: this.undo(); break;\n      case Codes.DELETE_ACTION: return this.delete();\n      default: break;\n    }\n    return undefined;\n  }\n\n  ngOnInit(): void {\n    this.addDeactivateGuard();\n\n    this.formGroup = new UntypedFormGroup({});\n\n    this.formNavigation.initialize();\n\n    this.initialize();\n  }\n\n  addDeactivateGuard() {\n    if (!this.actRoute || !this.actRoute.routeConfig) {\n      return;\n    }\n    this.deactivateGuard = this.injector.get(CanDeactivateFormGuard);\n    this.deactivateGuard.addForm(this);\n    const canDeactivateArray = (this.actRoute.routeConfig.canDeactivate || []);\n    let previouslyAdded = false;\n    for (let i = 0, len = canDeactivateArray.length; i < len; i++) {\n      previouslyAdded = ((canDeactivateArray[i].hasOwnProperty('CLASSNAME') && canDeactivateArray[i].CLASSNAME) === OFormComponent.guardClassName);\n      if (previouslyAdded) {\n        break;\n      }\n    }\n    if (!previouslyAdded) {\n      canDeactivateArray.push(this.deactivateGuard.constructor);\n      this.actRoute.routeConfig.canDeactivate = canDeactivateArray;\n    }\n  }\n\n  destroyDeactivateGuard() {\n    try {\n      if (this.hasDeactivateGuard()) {\n        this.deactivateGuard.removeForm(this);\n        if (!this.deactivateGuard.isFormsCacheEmpty()) {\n          return;\n        }\n      }\n      if (!this.actRoute || !this.actRoute.routeConfig || !this.actRoute.routeConfig.canDeactivate) {\n        return;\n      }\n      const guardIndex = this.actRoute.routeConfig.canDeactivate.findIndex((canDeactivate) => canDeactivate.name === OFormComponent.guardClassName)\n      if (guardIndex >= 0) {\n        this.actRoute.routeConfig.canDeactivate.splice(guardIndex, 1);\n      }\n      if (this.actRoute.routeConfig.canDeactivate.length === 0) {\n        delete this.actRoute.routeConfig.canDeactivate;\n      }\n    } catch (e) {\n      //\n    }\n  }\n\n  hasDeactivateGuard() {\n    return Util.isDefined(this.deactivateGuard);\n  }\n\n  /**\n   * Angular methods\n   */\n\n  initialize() {\n    const self = this;\n    if (this.headeractions === 'all') {\n      this.headeractions = 'R;I;U;D';\n    }\n    this.keysArray = Util.parseArray(this.keys, true);\n    this.colsArray = Util.parseArray(this.columns, true);\n    const pkArray = Util.parseArray(this.parentKeys);\n    this._pKeysEquiv = Util.parseParentKeysEquivalences(pkArray);\n    this.keysSqlTypesArray = Util.parseArray(this.keysSqlTypes);\n    this.setValueOrderArray = Util.parseArray(this.setValueOrder);\n\n    this.configureService();\n\n    this.formNavigation.subscribeToQueryParams();\n    this.formNavigation.subscribeToUrlParams();\n    this.formNavigation.subscribeToUrl();\n    this.formNavigation.subscribeToCacheChanges();\n\n    if (this.navigationService) {\n      this.navigationService.onVisibleChange(visible => {\n        self.showHeader = visible;\n      });\n    }\n\n    this.mode = OFormComponent.Mode().INITIAL;\n\n    this.permissions = this.permissionsService.getFormPermissions(this.oattr, this.actRoute);\n\n    if (typeof this.queryFallbackFunction !== 'function') {\n      this.queryFallbackFunction = undefined;\n    }\n    // if (typeof this.insertFallbackFunction !== 'function') {\n    //   this.insertFallbackFunction = undefined;\n    // }\n    // if (typeof this.updateFallbackFunction !== 'function') {\n    //   this.updateFallbackFunction = undefined;\n    // }\n    // if (typeof this.deleteFallbackFunction !== 'function') {\n    //   this.deleteFallbackFunction = undefined;\n    // }\n  }\n\n\n  /**\n   * Reinitialize form adding options\n   * @param options\n   */\n  reinitialize(options: OFormInitializationOptions) {\n    if (options && Object.keys(options).length) {\n      const clonedOpts = Object.assign({}, options);\n      for (const prop in clonedOpts) {\n        if (clonedOpts.hasOwnProperty(prop)) {\n          this[prop] = clonedOpts[prop];\n        }\n      }\n      this.destroy();\n      this.initialize();\n    }\n  }\n\n  configureService() {\n    const msgConfigureServiceArgs: OConfigureMessageServiceArgs = { injector: this.injector, baseService: OFormMessageService, serviceType: this.messageServiceType }\n    this._messageService = Util.configureMessageService(msgConfigureServiceArgs);\n\n    const configureServiceArgs: OConfigureServiceArgs = { injector: this.injector, baseService: OntimizeService, entity: this.entity, service: this.service, serviceType: this.serviceType }\n    this.dataService = Util.configureService(configureServiceArgs);\n  }\n\n  get messageService(): OFormMessageService {\n    return this._messageService;\n  }\n\n  ngOnDestroy() {\n    this.destroy();\n  }\n\n  destroy() {\n    if (this.reloadStreamSubscription) {\n      this.reloadStreamSubscription.unsubscribe();\n    }\n    if (this.querySubscription) {\n      this.querySubscription.unsubscribe();\n    }\n    if (this.loaderSubscription) {\n      this.loaderSubscription.unsubscribe();\n    }\n    this.formCache.destroy();\n    this.formNavigation.destroy();\n    this.destroyDeactivateGuard();\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      this.determinateFormMode();\n      this.onFormInitStream.emit(true);\n    }, 0);\n  }\n\n  /*\n   * Inner methods\n   */\n\n  _setComponentsEditable(state: boolean) {\n    const components: any = this.getComponents();\n    Object.keys(components).forEach(compKey => {\n      const component = components[compKey];\n      component.isReadOnly = !state;\n    });\n  }\n\n  /**\n   * Sets form operation mode.\n   * @param mode The mode to be established\n   */\n  setFormMode(mode: number) {\n    switch (mode) {\n      case OFormComponent.Mode().INITIAL:\n        this.beforeInitialMode.emit();\n        this.mode = mode;\n        if (this._formToolbar) {\n          this._formToolbar.setInitialMode();\n        }\n        this._setComponentsEditable(this.isEditableDetail());\n        this.onFormModeChange.emit(this.mode);\n        this.onInitialMode.emit();\n        break;\n      case OFormComponent.Mode().INSERT:\n        this.beforeInsertMode.emit();\n        this.mode = mode;\n        if (this._formToolbar) {\n          this._formToolbar.setInsertMode();\n        }\n        this.clearData();\n        this._setComponentsEditable(true);\n        this.onFormModeChange.emit(this.mode);\n        this.onInsertMode.emit();\n        break;\n      case OFormComponent.Mode().UPDATE:\n        this.beforeUpdateMode.emit();\n        this.mode = mode;\n        if (this._formToolbar) {\n          this._formToolbar.setEditMode();\n        }\n        this._setComponentsEditable(true);\n        this.onFormModeChange.emit(this.mode);\n        this.onUpdateMode.emit();\n        break;\n      case OFormComponent.Mode().QUERY:\n        console.error('Form QUERY mode is not implemented');\n        break;\n      default:\n        break;\n    }\n  }\n\n\n  /**\n   * Sets new data for the form\n   * @param data\n   */\n  setData(data): void {\n    if (Util.isArray(data)) {\n      if (data.length > 1) {\n        console.warn('[OFormComponent] Form data has more than a single record. Storing empty data');\n      }\n      const currentData = data.length === 1 ? data[0] : {};\n      this._updateFormData(this.toFormValueData(currentData));\n      this._emitData(currentData);\n    } else if (Util.isObject(data)) {\n      this._updateFormData(this.toFormValueData(data));\n      this._emitData(data);\n    } else {\n      console.warn('Form has received not supported service data. Supported data are Array or Object');\n      this._updateFormData({});\n    }\n  }\n\n  /**\n   * @deprecated Use `setData(data)` instead\n   */\n  _setData(data) {\n    console.warn('Method `OFormComponent._setData` is deprecated and will be removed in the furute. Use `setData` instead');\n    this.setData(data);\n  }\n\n  _emitData(data) {\n    this.onDataLoaded.emit(data);\n  }\n\n  /**\n   * @deprecated Use `back()` instead\n   */\n  _backAction() {\n    console.warn('Method `OFormComponent._backAction` is deprecated and will be removed in the furute. Use `back` instead');\n    this.back();\n  }\n\n  /**\n   * Navigate back\n   */\n  back(options?: any) {\n    const allOptions = Object.assign(options || {}, { ignoreNavigation: this.ignoreDefaultNavigation });\n    this.formNavigation.navigateBack(allOptions);\n  }\n\n  /**\n   * @deprecated Use `closeDetail(options?: any)` instead\n   */\n  _closeDetailAction(options?: any) {\n    console.warn('Method `OFormComponent._closeDetailAction` is deprecated and will be removed in the furute. Use `closeDetail` instead');\n    this.closeDetail(options);\n  }\n\n  /**\n   * Close current detail form\n   */\n  closeDetail(options?: any) {\n    options = Util.isDefined(options) ? options : {};\n    options.ignoreNavigation = this.ignoreDefaultNavigation;\n    this.formNavigation.closeDetailAction(options);\n  }\n\n  _stayInRecordAfterInsert(insertedKeys: object) {\n    this.formNavigation.stayInRecordAfterInsert(insertedKeys);\n  }\n\n  /**\n   * @deprecated Use `reload(useFilter: boolean = false)` instead\n   */\n  _reloadAction(useFilter: boolean = false) {\n    console.warn('Method `OFormComponent._reloadAction` is deprecated and will be removed in the furute. Use `reload` instead');\n    this.reload(useFilter);\n  }\n\n  /**\n   * Reload the form data\n   */\n  reload(useFilter: boolean = false) {\n    let filter = {};\n    if (useFilter) {\n      filter = this.getCurrentKeysValues();\n    }\n    this.queryData(filter);\n  }\n\n  /**\n   * Navigates to 'insert' mode\n   * @deprecated Use `goInsertMode(options?: any)` instead\n   */\n  _goInsertMode(options?: any) {\n    console.warn('Method `OFormComponent._goInsertMode` is deprecated and will be removed in the furute. Use `goInsertMode` instead');\n    this.goInsertMode(options);\n  }\n\n  /**\n   * Navigates to 'insert' mode\n   */\n  goInsertMode(options?: any) {\n    this.formNavigation.goInsertMode(options);\n  }\n\n  _clearFormAfterInsert() {\n    this.clearData();\n    this._setComponentsEditable(true);\n  }\n\n  _clearAndCloseFormAfterInsert() {\n    const closeOpts: FormLayoutCloseDetailOptions = { exitWithoutConfirmation: true };\n    this.closeDetail(closeOpts);\n  }\n\n  /**\n   * Performs insert action.\n   * @deprecated Use `insert()` instead\n   */\n  _insertAction() {\n    console.warn('Method `OFormComponent._insertAction` is deprecated and will be removed in the furute. Use `insert` instead');\n    this.insert();\n  }\n\n  /**\n   * Performs insert action.\n   */\n  insert() {\n    Object.keys(this.formGroup.controls).forEach((control) => {\n      this.formGroup.controls[control].markAsTouched();\n    });\n\n    if (!this.formGroup.valid) {\n      this.dialogService.alert(this._messageService.getValidationErrorDialogTitle(), this._messageService.getValidationError());\n      return;\n    }\n\n    const self = this;\n    const values = this.getAttributesValuesToInsert();\n    const sqlTypes = this.getAttributesSQLTypes();\n\n    // validation before insert\n    if (!(this.validateBeforeAction(values))) {\n      return;\n    }\n\n    this.onBeforeInsert.emit(values);\n    this.insertData(values, sqlTypes).subscribe(resp => {\n      self.postCorrectInsert(resp);\n      self.formCache.setCacheSnapshot();\n      self.markFormLayoutManagerToUpdate();\n      if (self.afterInsertMode === 'detail') {\n        self._stayInRecordAfterInsert(resp);\n      } else if (self.afterInsertMode === 'new') {\n        this._clearFormAfterInsert();\n      } else if (self.afterInsertMode === 'close') {\n        this._clearAndCloseFormAfterInsert();\n      } else {\n        self.closeDetail();\n      }\n    }, error => {\n      self.postIncorrectInsert(error);\n    });\n  }\n\n  validateBeforeAction(values: object): boolean {\n    if (this.formDataValidationFunction) {\n      const result = this.formDataValidationFunction(values);\n      if (!result.valid) {\n        this.dialogService.alert(\n          result.title ?? this._messageService.getValidationErrorDialogTitle(),\n          result.messages ? result.messages.join('</br>') : this._messageService.getValidationError());\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * Navigates to 'edit' mode\n   * @deprecated Use `goEditMode()` instead\n   */\n  _goEditMode() {\n    console.warn('Method `OFormComponent._goEditMode` is deprecated and will be removed in the furute. Use `goEditMode` instead');\n    this.goEditMode();\n  }\n\n  /**\n   * Navigates to 'edit' mode\n   */\n  goEditMode() {\n    this.formNavigation.goEditMode();\n  }\n\n  /**\n   * Performs 'edit' action\n   * @deprecated Use `update()` instead\n   */\n  _editAction() {\n    console.warn('Method `OFormComponent._editAction` is deprecated and will be removed in the furute. Use `update` instead');\n    this.update();\n  }\n\n  /**\n   * Performs 'edit' action\n   */\n  update() {\n    Object.keys(this.formGroup.controls).forEach(\n      (control) => {\n        this.formGroup.controls[control].markAsTouched();\n      }\n    );\n\n    if (!this.formGroup.valid) {\n      this.dialogService.alert('ERROR', this._messageService.getValidationError());\n      return;\n    }\n\n    // retrieving keys...\n    const self = this;\n    const filter = this.getKeysValues();\n\n    // retrieving values to update...\n    const values = this.getAttributesValuesToUpdate();\n    const sqlTypes = this.getAttributesSQLTypes();\n\n    if (Object.keys(values).length === 0) {\n      // Nothing to update\n      this.dialogService.alert('INFO', this._messageService.getNothingToUpdateMessage());\n      return;\n    }\n\n    // validation before update\n    if (!(this.validateBeforeAction(values))) {\n      return;\n    }\n\n    this.onBeforeUpdate.emit(values);\n    // invoke update method...\n    this.updateData(filter, values, sqlTypes).subscribe(resp => {\n      self.postCorrectUpdate(resp);\n      self.formCache.setCacheSnapshot();\n      self.markFormLayoutManagerToUpdate();\n      if (self.stayInRecordAfterEdit) {\n        self.reload(true);\n      } else {\n        self.closeDetail();\n      }\n    }, error => {\n      self.postIncorrectUpdate(error);\n    });\n  }\n\n  /**\n   * Performs 'delete' action\n   * @deprecated Use `delete()` instead\n   */\n  _deleteAction() {\n    console.warn('Method `OFormComponent._deleteAction` is deprecated and will be removed in the furute. Use `delete` instead');\n    return this.delete();\n  }\n\n  /**\n   * Performs 'delete' action\n   */\n  delete() {\n    const filter = this.getKeysValues();\n    this.onBeforeDelete.emit(filter);\n    return this.deleteData(filter);\n  }\n\n  /**\n   * Allow to manage the call to the service data\n   * @param filter\n   */\n  queryData(filter: any) {\n    if (!Util.isDefined(this.dataService)) {\n      console.warn('OFormComponent: no service configured! aborting query');\n      return;\n    }\n    if (!Util.isDefined(filter) || Object.keys(filter).length === 0) {\n      console.warn('OFormComponent: no filter configured! aborting query');\n      return;\n    }\n    this.formCache.restartCache();\n    this.clearComponentsOldValue();\n    if (this.querySubscription) {\n      this.querySubscription.unsubscribe();\n    }\n    if (this.loaderSubscription) {\n      this.loaderSubscription.unsubscribe();\n    }\n    this.loaderSubscription = this.load();\n    const av = this.getAttributesToQuery();\n    const sqlTypes = this.getAttributesSQLTypes();\n    this.querySubscription = this.dataService[this.queryMethod](filter, av, this.entity, sqlTypes)\n      .subscribe((resp: ServiceResponse) => {\n        if (resp.isSuccessful()) {\n          this.setData(resp.data);\n        } else {\n          this._updateFormData({});\n          this.dialogService.alert('ERROR', this._messageService.getQueryErrorMessage());\n          console.error('ERROR: ' + resp.message);\n        }\n        this.loaderSubscription.unsubscribe();\n      }, err => {\n        console.error(err);\n        this._updateFormData({});\n        if (Util.isDefined(this.queryFallbackFunction)) {\n          this.queryFallbackFunction(err);\n        } else if (err && err.statusText) {\n          this.dialogService.alert('ERROR', err.statusText);\n        } else {\n          this.dialogService.alert('ERROR', this._messageService.getQueryErrorMessage());\n        }\n        this.loaderSubscription.unsubscribe();\n      });\n  }\n\n  getAttributesToQuery(): Array<any> {\n    let attributes: Array<any> = [];\n    // add form keys...\n    if (this.keysArray && this.keysArray.length > 0) {\n      attributes.push(...this.keysArray);\n    }\n    const components: any = this.getComponents();\n    // add only the fields contained into the form...\n    Object.keys(components).forEach(item => {\n      if (attributes.indexOf(item) < 0 &&\n        components[item].isAutomaticRegistering() && components[item].isAutomaticBinding()) {\n        attributes.push(item);\n      }\n    });\n\n    // add fields stored into form cache...\n    const dataCache = this.formCache.getDataCache();\n    if (dataCache) {\n      Object.keys(dataCache).forEach(item => {\n        if (item !== undefined && attributes.indexOf(item) === -1) {\n          attributes.push(item);\n        }\n      });\n    }\n    attributes = attributes.concat(this.colsArray.filter(col => attributes.indexOf(col) < 0));\n    return attributes;\n  }\n\n\n  /**\n   * Allow to manage the call to the insert service\n   * @param values\n   * @param [sqlTypes]\n   * @returns Observable<any>\n   */\n  insertData(values, sqlTypes?: object): Observable<any> {\n    if (this.loaderSubscription) {\n      this.loaderSubscription.unsubscribe();\n    }\n    this.loaderSubscription = this.load();\n    const self = this;\n    const observable = new Observable(observer => {\n      this.dataService[this.insertMethod](values, this.entity, sqlTypes).subscribe(\n        resp => {\n          if (resp.isSuccessful()) {\n            observer.next(resp.data);\n            observer.complete();\n          } else {\n            observer.error(resp.message);\n          }\n          self.loaderSubscription.unsubscribe();\n        },\n        err => {\n          observer.error(err);\n          self.loaderSubscription.unsubscribe();\n        });\n    });\n    return observable;\n  }\n\n  getAttributesValuesToInsert(): object {\n    const attrValues = {};\n    if (this.formParentKeysValues) {\n      Object.assign(attrValues, this.formParentKeysValues);\n    }\n    return Object.assign(attrValues, this.getRegisteredFieldsValues());\n  }\n\n  /**\n   * Returns an object with the sql types from the form components and the form keys\n   */\n  public getAttributesSQLTypes(): object {\n    const types: object = {};\n    // Add form keys sql types\n    this.keysSqlTypesArray.forEach((kst, i) => types[this.keysArray[i]] = SQLTypes.getSQLTypeValue(kst));\n    // Add form components sql types\n    if (this._compSQLTypes && Object.keys(this._compSQLTypes).length > 0) {\n      Object.assign(types, this._compSQLTypes);\n    }\n    return types;\n  }\n\n\n  /**\n   * Allow to manage the call to the update service\n   * @param filter\n   * @param values\n   * @param [sqlTypes]\n   * @returns  Observable<any>\n   */\n  updateData(filter, values, sqlTypes?: object): Observable<any> {\n    if (this.loaderSubscription) {\n      this.loaderSubscription.unsubscribe();\n    }\n    this.loaderSubscription = this.load();\n    const self = this;\n    const observable = new Observable(observer => {\n      this.dataService[this.updateMethod](filter, values, this.entity, sqlTypes).subscribe(\n        resp => {\n          if (resp.isSuccessful()) {\n            observer.next(resp.data);\n            observer.complete();\n          } else {\n            observer.error(resp.message);\n          }\n          self.loaderSubscription.unsubscribe();\n        },\n        err => {\n          observer.error(err);\n          self.loaderSubscription.unsubscribe();\n        });\n    });\n    return observable;\n  }\n\n  getAttributesValuesToUpdate(): object {\n    const values = {};\n    const self = this;\n    const changedAttrs = this.formCache.getChangedFormControlsAttr();\n    Object.keys(this.formGroup.controls).filter(controlName =>\n      self.ignoreFormCacheKeys.indexOf(controlName) === -1 &&\n      changedAttrs.indexOf(controlName) !== -1\n    ).forEach((item) => {\n      const control = self.formGroup.controls[item];\n      if (control instanceof OFormControl) {\n        values[item] = control.getValue();\n      } else {\n        values[item] = control.value;\n      }\n      if (values[item] === undefined) {\n        values[item] = null;\n      }\n    });\n    return values;\n  }\n\n  /**\n   * Allow to manage the call to the delete service\n   * @param filter\n   * @returns Observable<any>\n   */\n  deleteData(filter: any): Observable<any> {\n    if (this.loaderSubscription) {\n      this.loaderSubscription.unsubscribe();\n    }\n    this.loaderSubscription = this.load();\n    const self = this;\n    const sqlTypes = this.getAttributesSQLTypes();\n    const observable = new Observable(observer => {\n      this.canDiscardChanges = true;\n      this.dataService[this.deleteMethod](filter, this.entity, sqlTypes).subscribe(\n        resp => {\n          if (resp.isSuccessful()) {\n            self.formCache.setCacheSnapshot();\n            self.markFormLayoutManagerToUpdate();\n            self.postCorrectDelete(resp);\n            observer.next(resp.data);\n            observer.complete();\n          } else {\n            self.postIncorrectDelete(resp);\n            observer.error(resp.message);\n          }\n          self.loaderSubscription.unsubscribe();\n        },\n        err => {\n          self.postIncorrectDelete(err);\n          observer.error(err);\n          self.loaderSubscription.unsubscribe();\n        });\n    });\n    return observable;\n  }\n\n  toJSONData(data) {\n    if (!data) {\n      data = {};\n    }\n    const valueData = {};\n    Object.keys(data).forEach((item) => {\n      valueData[item] = data[item].value;\n    });\n    return valueData;\n  }\n\n  toFormValueData(data) {\n    if (data && Util.isArray(data)) {\n      const valueData: Array<object> = [];\n      const self = this;\n      data.forEach(item => {\n        valueData.push(self.objectToFormValueData(item));\n      });\n      return valueData;\n    } else if (data && Util.isObject(data)) {\n      return this.objectToFormValueData(data);\n    }\n    return undefined;\n  }\n\n  /**\n   * Gets keys values\n   * @returns keys\n   */\n  getKeysValues(): any {\n    const filter = {};\n    const currentRecord = this.formData;\n    if (!this.keysArray) {\n      return filter;\n    }\n    this.keysArray.forEach(key => {\n      if (currentRecord[key] !== undefined) {\n        let currentData = currentRecord[key];\n        if (currentData instanceof OFormValue) {\n          currentData = currentData.value;\n        }\n        filter[key] = currentData;\n      }\n    });\n    return filter;\n  }\n\n  isInQueryMode(): boolean {\n    return this.mode === OFormComponent.Mode().QUERY;\n  }\n\n  isInInsertMode(): boolean {\n    return this.mode === OFormComponent.Mode().INSERT;\n  }\n\n  isInUpdateMode(): boolean {\n    return this.mode === OFormComponent.Mode().UPDATE;\n  }\n\n  isInInitialMode(): boolean {\n    return this.mode === OFormComponent.Mode().INITIAL;\n  }\n\n  setQueryMode() {\n    this.setFormMode(OFormComponent.Mode().QUERY);\n  }\n\n  setInsertMode() {\n    this.setFormMode(OFormComponent.Mode().INSERT);\n  }\n\n  setUpdateMode() {\n    this.setFormMode(OFormComponent.Mode().UPDATE);\n  }\n\n  setInitialMode() {\n    this.setFormMode(OFormComponent.Mode().INITIAL);\n  }\n\n  registerDynamicFormComponent(dynamicForm) {\n    if (!Util.isDefined(dynamicForm)) {\n      return;\n    }\n    const self = this;\n    this.dynamicFormSubscription = dynamicForm.render.subscribe(res => {\n      if (res) {\n        self.refreshComponentsEditableState();\n        if (!self.isInInsertMode() && self.queryOnInit) {\n          self.reload(true);\n        }\n        if (self.formParentKeysValues) {\n          Object.keys(self.formParentKeysValues).forEach(parentKey => {\n            const value = self.formParentKeysValues[parentKey];\n            const comp = self.getFieldReference(parentKey);\n            if (Util.isFormDataComponent(comp) && comp.isAutomaticBinding()) {\n              comp.setValue(value, {\n                emitModelToViewChange: false,\n                emitEvent: false\n              });\n            }\n          });\n        }\n      }\n    });\n  }\n\n  unregisterDynamicFormComponent(dynamicForm) {\n    if (dynamicForm && this.dynamicFormSubscription) {\n      this.dynamicFormSubscription.unsubscribe();\n    }\n  }\n\n  getRequiredComponents(): object {\n    const requiredCompontents: object = {};\n    const components = this.getComponents();\n    if (components) {\n      Object.keys(components).forEach(key => {\n        const comp = components[key];\n        const attr = comp.getAttribute();\n        if ((comp as any).isRequired && attr && attr.length > 0) {\n          requiredCompontents[attr] = comp;\n        }\n      });\n    }\n    return requiredCompontents;\n  }\n\n  get layoutDirection(): string {\n    return this._layoutDirection;\n  }\n\n  set layoutDirection(val: string) {\n    const parsedVal = (val || '').toLowerCase();\n    this._layoutDirection = ['row', 'column', 'row-reverse', 'column-reverse'].indexOf(parsedVal) !== -1 ? parsedVal : OFormComponent.DEFAULT_LAYOUT_DIRECTION;\n  }\n\n  get layoutAlign(): string {\n    return this._layoutAlign;\n  }\n\n  set layoutAlign(val: string) {\n    this._layoutAlign = val;\n  }\n\n  get showFloatingToolbar(): boolean {\n    return this.showHeader && this.headerMode === 'floating';\n  }\n\n  get showNotFloatingToolbar(): boolean {\n    return this.showHeader && this.headerMode !== 'floating';\n  }\n\n  isEditableDetail() {\n    return this.editableDetail;\n  }\n\n  isInitialStateChanged(ignoreAttrs: string[] = []): boolean {\n    return this.formCache.isInitialStateChanged(ignoreAttrs);\n  }\n\n  /**\n   * @deprecated Use `undo()` instead\n   */\n  _undoLastChangeAction() {\n    console.warn('Method `OFormComponent._undoLastChangeAction` is deprecated and will be removed in the furute. Use `undo` instead');\n    this.undo();\n  }\n\n  /**\n   * Undo last change\n   */\n  undo() {\n    this.formCache.undoLastChange();\n  }\n\n  get isCacheStackEmpty(): boolean {\n    return this.formCache.isCacheStackEmpty;\n  }\n\n  undoKeyboardPressed() {\n    this.formCache.undoLastChange();\n  }\n\n  getFormToolbar(): OFormToolbarBase {\n    return this._formToolbar;\n  }\n\n  getFormManager(): OFormLayoutManagerBase {\n    return this.formNavigation.formLayoutManager;\n  }\n\n  getFormNavigation(): OFormNavigationClass {\n    return this.formNavigation;\n  }\n\n  getFormCache(): OFormCacheClass {\n    return this.formCache;\n  }\n\n  getUrlParam(arg: string) {\n    return this.getFormNavigation().getUrlParams()[arg];\n  }\n\n  getUrlParams() {\n    return this.getFormNavigation().getUrlParams();\n  }\n\n  setUrlParamsAndReload(val: object) {\n    this.formNavigation.setUrlParams(val);\n    this.reload(true);\n  }\n\n  getRegisteredFieldsValues() {\n    const values = {};\n    const components: IFormDataComponentHash = this.getComponents();\n    const self = this;\n    const componentsKeys = Object.keys(components).filter(key => self.ignoreFormCacheKeys.indexOf(key) === -1);\n    componentsKeys.forEach(compKey => {\n      const comp: IFormDataComponent = components[compKey];\n      values[compKey] = comp.getValue();\n    });\n    return values;\n  }\n\n  /**\n   * Return the current value of the control in the form\n   * @param attr the attr of the form field\n   */\n  getFieldValue(attr: string): any {\n    let value = null;\n    const comp = this.getFieldReference(attr);\n    if (comp) {\n      value = comp.getValue();\n    }\n    return value;\n  }\n\n  /**\n   * Return an object with the values of each attribute\n   * @param attrs the attr's of the form fields\n   */\n  getFieldValues(attrs: string[]): any {\n    const arr = {};\n    attrs.forEach(key => arr[key] = this.getFieldValue(key));\n    return arr;\n\n  }\n\n  /**\n   * Sets the value of the control in the form.\n   * @param attr attribute of control\n   * @param value value\n   */\n  setFieldValue(attr: string, value: any, options?: FormValueOptions) {\n    const comp = this.getFieldReference(attr);\n    if (comp) {\n      comp.setValue(value, options);\n    }\n  }\n\n  /**\n   * Sets the value of each control in the form.\n   * @param values the values\n   */\n  setFieldValues(values: any, options?: FormValueOptions) {\n    for (const key in values) {\n      if (values.hasOwnProperty(key)) {\n        this.setFieldValue(key, values[key], options);\n      }\n    }\n  }\n\n  /**\n   * Clear the value of each control in the form\n   * @param attr the attr of the form field\n   */\n  clearFieldValue(attr: string, options?: FormValueOptions) {\n    const comp = this.getFieldReference(attr);\n    if (comp) {\n      comp.clearValue(options);\n    }\n  }\n\n  /**\n   * Reset the value of each control in the form\n   * @param attrs the attr's of the form fields\n   */\n  clearFieldValues(attrs: string[], options?: FormValueOptions) {\n    const self = this;\n    attrs.forEach((key) => {\n      self.clearFieldValue(key, options);\n    });\n  }\n\n  /**\n   * Retrieves the reference of the control in the form.\n   * @param attr the attr of the form field\n   */\n  getFieldReference(attr: string): IFormDataComponent {\n    return this._components[attr];\n  }\n\n  /**\n   * Retrieves the reference of each control in the form\n   * @param attrs the attr's of the form fileds\n   */\n  getFieldReferences(attrs: string[]): IFormDataComponentHash {\n    const arr: IFormDataComponentHash = {};\n    const self = this;\n    attrs.forEach((key) => {\n      arr[key] = self.getFieldReference(key);\n    });\n    return arr;\n  }\n\n  getFormComponentPermissions(attr: string): OPermissions {\n    let permissions: OPermissions;\n    if (Util.isDefined(this.permissions)) {\n      permissions = (this.permissions.components || []).find(comp => comp.attr === attr);\n    }\n    return permissions;\n  }\n\n  getActionsPermissions(): OPermissions[] {\n    let permissions: OPermissions[];\n    if (Util.isDefined(this.permissions)) {\n      permissions = (this.permissions.actions || []);\n    }\n    return permissions;\n  }\n\n  protected determinateFormMode(): void {\n    const urlSegments = this.formNavigation.getUrlSegments();\n    if (urlSegments.length > 0) {\n      const segment = urlSegments[urlSegments.length - 1];\n      this.determinateModeFromUrlSegment(segment);\n    } else if (this.actRoute.parent) {\n      this.actRoute.parent.url.subscribe(segments => {\n        const segment = segments[segments.length - 1];\n        this.determinateModeFromUrlSegment(segment);\n      });\n    } else {\n      this.setFormMode(OFormComponent.Mode().INITIAL);\n    }\n    // stayInRecordAfterEdit is true if form has editable detail = true\n    this.stayInRecordAfterEdit = this.stayInRecordAfterEdit || this.isEditableDetail();\n  }\n\n  protected determinateModeFromUrlSegment(segment: UrlSegment): void {\n    const _path = segment ? segment.path : '';\n    if (this.isInsertModePath(_path)) {\n      this.setInsertMode();\n      return;\n    } else if (this.isUpdateModePath(_path)) {\n      this.setUpdateMode();\n    } else {\n      this.setInitialMode();\n    }\n  }\n\n  protected _updateFormData(newFormData: object): void {\n    const self = this;\n    this.zone.run(() => {\n      this.formData = newFormData;\n      const components = this.getComponents();\n      const keyComponents = [...Object.keys(components)];\n      if (!Util.isArrayEmpty(this.setValueOrderArray)) {\n        keyComponents.sort((a, b) => {\n          const indexA = this.setValueOrderArray.indexOf(a) === -1 ? 1 : 0;\n          const indexB = this.setValueOrderArray.indexOf(b) === -1 ? 1 : 0;\n          return indexA - indexB;\n        });\n      }\n\n      if (!Util.isArrayEmpty(keyComponents)) {\n        keyComponents.forEach(key => {\n          const comp = components[key];\n          this.setDataInFormDataComponent(comp, key);\n        });\n        self.initializeFields();\n      }\n    });\n  }\n\n  private setDataInFormDataComponent(comp: IFormDataComponent, attr: string) {\n    if (Util.isFormDataComponent(comp)) {\n      try {\n        if (comp.isAutomaticBinding()) {\n          comp.data = this.getDataValue(attr);\n        }\n      } catch (error) {\n        console.error(error);\n      }\n    }\n  }\n\n  protected initializeFields(): void {\n    Object.keys(this.formGroup.controls).forEach(control => {\n      this.formGroup.controls[control].markAsPristine();\n    });\n    this.formCache.registerCache();\n    this.formNavigation.updateNavigation();\n  }\n\n  protected clearComponentsOldValue(): void {\n    const components: IFormDataComponentHash = this.getComponents();\n    const self = this;\n    const componentsKeys = Object.keys(components).filter(key => self.ignoreFormCacheKeys.indexOf(key) === -1);\n    componentsKeys.forEach(compKey => {\n      const comp: IFormDataComponent = components[compKey];\n      (comp as any).oldValue = undefined;\n      comp.getFormControl().setValue(undefined);\n    });\n  }\n\n  protected postCorrectInsert(result: any): void {\n    this.snackBarService.open(this._messageService.getInsertSuccessMessage(), { icon: 'check_circle' });\n    this.onInsert.emit(result);\n  }\n\n  protected postIncorrectInsert(result: any): void {\n    this.showError('insert', result);\n  }\n\n  protected postIncorrectDelete(result: any): void {\n    this.showError('delete', result);\n  }\n\n  protected postIncorrectUpdate(result: any): void {\n    this.showError('update', result);\n  }\n\n  protected postCorrectUpdate(result: any): void {\n    this.snackBarService.open(this._messageService.getUpdateSuccessMessage(), { icon: 'check_circle' });\n    this.onUpdate.emit(result);\n  }\n\n  protected postCorrectDelete(result: any): void {\n    this.snackBarService.open(this._messageService.getDeleteSuccessMessage(), { icon: 'check_circle' });\n    this.onDelete.emit(result);\n  }\n\n  protected markFormLayoutManagerToUpdate(): void {\n    const formLayoutManager = this.getFormManager();\n    if (Util.isDefined(formLayoutManager)) {\n      formLayoutManager.markForUpdate = true;\n    }\n  }\n\n  protected objectToFormValueData(data: object = {}): object {\n    const valueData = {};\n    Object.keys(data).forEach((item) => {\n      valueData[item] = new OFormValue(data[item]);\n    });\n    return valueData;\n  }\n\n  protected getCurrentKeysValues(): object {\n    return this.formNavigation.getCurrentKeysValues();\n  }\n\n  protected refreshComponentsEditableState(): void {\n    switch (this.mode) {\n      case OFormComponent.Mode().INITIAL:\n        this._setComponentsEditable(this.isEditableDetail());\n        break;\n      case OFormComponent.Mode().INSERT:\n      case OFormComponent.Mode().UPDATE:\n        this._setComponentsEditable(true);\n        break;\n      default:\n        break;\n    }\n  }\n\n  protected isInsertModePath(path: string): boolean {\n    const navData: ONavigationItem = this.navigationService.getLastItem();\n    // TODO: solve issue #727 when `insert-form-route` is present\n    return Util.isDefined(navData) ? path === navData.getInsertFormRoute() : Codes.DEFAULT_INSERT_ROUTE === path;\n  }\n\n  protected isUpdateModePath(path: string): boolean {\n    const navData: ONavigationItem = this.navigationService.getPreviousRouteData();\n    return Util.isDefined(navData) && path === navData.getEditFormRoute();\n  }\n\n  private showError(operation: string, result: any): void {\n    if (result && typeof result !== 'object') {\n      this.dialogService.alert('ERROR', result);\n    } else {\n      let message = ''\n      switch (operation) {\n        case 'update':\n          message = this._messageService.getUpdateErrorMessage()\n          break;\n        case 'insert':\n          message = this._messageService.getInsertErrorMessage()\n          break;\n        case 'delete':\n          message = this._messageService.getDeleteErrorMessage()\n          break;\n      }\n      this.dialogService.alert('ERROR', message);\n    }\n  }\n\n}\n","<ng-template #customFormToolbarButtons>\n  <ng-content select=\"[o-form-toolbar-buttons]\"></ng-content>\n</ng-template>\n\n<o-form-toolbar *ngIf=\"showFloatingToolbar && headerPosition==='top'\" [label-header]=\"labelheader\" [label-header-align]=\"labelHeaderAlign\"\n  [header-actions]=\"headeractions\" [show-header-navigation]=\"showHeaderNavigation\" [show-header-actions-text]=\"showHeaderActionsText\"\n  (onCancel)=\"onCancel.emit($event)\" layout-padding>\n  <div o-custom-form-toolbar-buttons-wrapper fxLayout=\"row\" fxLayoutAlign=\"end center\">\n    <ng-container *ngTemplateOutlet=\"customFormToolbarButtons\"></ng-container>\n  </div>\n</o-form-toolbar>\n\n<ng-host oKeyboardListener keyboardKeys=\"17;90\" (onKeysPressed)=\"undoKeyboardPressed()\" class=\"scrolling o-scroll\">\n  <div fxFlex=\"grow\">\n    <o-form-toolbar *ngIf=\"showNotFloatingToolbar && headerPosition==='top'\" [label-header]=\"labelheader\" [label-header-align]=\"labelHeaderAlign\"\n      [header-actions]=\"headeractions\" [show-header-navigation]=\"showHeaderNavigation\" [show-header-actions-text]=\"showHeaderActionsText\"\n      (onCancel)=\"onCancel.emit($event)\" layout-padding>\n      <div o-custom-form-toolbar-buttons-wrapper fxLayout=\"row\" fxLayoutAlign=\"end center\">\n        <div o-custom-form-toolbar-buttons-wrapper fxLayout=\"row\" fxLayoutAlign=\"end center\">\n          <ng-container *ngTemplateOutlet=\"customFormToolbarButtons\"></ng-container>\n        </div>\n      </div>\n    </o-form-toolbar>\n\n    <form #innerForm [formGroup]=\"formGroup\" class=\"inner-form\" [class.form-no-toolbar]=\"!showHeader\" autocomplete=\"off\" autocorrect=\"off\"\n      autocapitalize=\"off\" spellcheck=\"false\">\n      <div *ngIf=\"loading | async\" class=\"progress-bar-container\">\n        <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n      </div>\n      <div layout-padding [fxLayout]=\"layoutDirection\" [fxLayoutAlign]=\"layoutAlign\" class=\"o-form-content-wrapper\">\n        <ng-content></ng-content>\n      </div>\n    </form>\n\n    <o-form-toolbar *ngIf=\"showNotFloatingToolbar && headerPosition==='bottom'\" [label-header]=\"labelheader\" [label-header-align]=\"labelHeaderAlign\"\n      [header-actions]=\"headeractions\" [show-header-navigation]=\"showHeaderNavigation\" [show-header-actions-text]=\"showHeaderActionsText\"\n      (onCancel)=\"onCancel.emit($event)\" layout-padding>\n      <div o-custom-form-toolbar-buttons-wrapper fxLayout=\"row\" fxLayoutAlign=\"end center\">\n        <ng-container *ngTemplateOutlet=\"customFormToolbarButtons\"></ng-container>\n      </div>\n    </o-form-toolbar>\n  </div>\n</ng-host>\n\n<o-form-toolbar *ngIf=\"showFloatingToolbar && headerPosition==='bottom'\" [label-header]=\"labelheader\" [label-header-align]=\"labelHeaderAlign\"\n  [header-actions]=\"headeractions\" [show-header-navigation]=\"showHeaderNavigation\" [show-header-actions-text]=\"showHeaderActionsText\"\n  (onCancel)=\"onCancel.emit($event)\" layout-padding>\n  <div o-custom-form-toolbar-buttons-wrapper fxLayout=\"row\" fxLayoutAlign=\"end center\">\n    <ng-container *ngTemplateOutlet=\"customFormToolbarButtons\"></ng-container>\n  </div>\n</o-form-toolbar>\n","import { Injector, QueryList } from '@angular/core';\n\nimport { O_MAT_ERROR_OPTIONS } from '../services/factories';\nimport { OMatErrorOptions, OMatErrorType } from '../types/o-mat-error.type';\nimport { Codes } from './codes';\nimport { Util } from './util';\nimport { AsyncValidatorFn, FormControl, ValidatorFn } from '@angular/forms';\nimport { ErrorData } from '../types/error-data.type';\nimport { OValidatorComponent } from '../shared/components/validation/o-validator.component';\nimport { OMatErrorDirective } from '../directives/o-mat-error.directive';\n\nexport interface ComponentWithValidatorsAndErrorsData {\n  errorOptions: OMatErrorOptions;\n  errorsData: ErrorData[];\n  validatorChildren: QueryList<OValidatorComponent>;\n  oMatErrorChildren: QueryList<OMatErrorDirective>;\n  tooltipPosition: string;\n  getFormControl(): FormControl;\n  resolveValidators: () => ValidatorFn[];\n  resolveAsyncValidators: () => AsyncValidatorFn[];\n  hasError: (error: string) => boolean;\n}\n\nexport class ErrorsUtils {\n  static getErrorOptions(injector: Injector): OMatErrorOptions {\n    let result: OMatErrorOptions\n    try {\n      result = injector.get(O_MAT_ERROR_OPTIONS) || {};\n    } catch (e) {\n      result = {};\n    }\n    if (!Util.isDefined(result.type)) {\n      result.type = Codes.O_MAT_ERROR_STANDARD as OMatErrorType;\n    }\n    return result;\n  }\n\n  static getErrorsTooltipText(comp: ComponentWithValidatorsAndErrorsData): string {\n    let errorsText = [];\n    if (comp.oMatErrorChildren && comp.oMatErrorChildren.length > 0) {\n      errorsText.push(...comp.oMatErrorChildren\n        .filter((oMatError: OMatErrorDirective) => Util.isDefined(oMatError.text))\n        .map((oMatError: OMatErrorDirective) => oMatError.text));\n    }\n    if (comp.errorsData && comp.errorsData.length > 0) {\n      errorsText.push(...comp.errorsData\n        .filter((item: ErrorData) => comp.hasError(item.name))\n        .map((item: ErrorData) => item.text));\n    }\n    return errorsText.join('\\n');\n  }\n\n  static getTooltipClasses(comp: ComponentWithValidatorsAndErrorsData): string {\n    let result: string = `o-tooltip ${comp.tooltipPosition}`;\n    const liteError = comp.errorOptions.type === Codes.O_MAT_ERROR_LITE;\n    if (!liteError) {\n      return result\n    }\n    const formControl = comp.getFormControl();\n    const errorClass = Util.isDefined(formControl) && Util.isDefined(formControl.errors) ? 'o-mat-error' : '';\n    return `${result} ${errorClass}`;\n  }\n\n  static updateFormControlValidators(comp: ComponentWithValidatorsAndErrorsData): void {\n    const formControl = comp.getFormControl();\n    if (!formControl) {\n      return;\n    }\n    formControl.clearValidators();\n    const validators = comp.resolveValidators();\n    const asyncValidators = comp.resolveAsyncValidators();\n    if (comp.validatorChildren) {\n      comp.validatorChildren.forEach((oValidator: OValidatorComponent) => {\n        const validatorFunction: ValidatorFn = oValidator.getValidatorFn();\n        if (validatorFunction) {\n          validators.push(validatorFunction);\n        }\n        const asyncValidatorFunction: AsyncValidatorFn = oValidator.getAsyncValidatorFn();\n        if (asyncValidatorFunction) {\n          asyncValidators.push(asyncValidatorFunction);\n        }\n        const errorsData: ErrorData[] = oValidator.getErrorsData();\n        comp.errorsData.push(...errorsData);\n      });\n    }\n    formControl.setValidators(validators);\n    formControl.setAsyncValidators(asyncValidators);\n    formControl.updateValueAndValidity({ emitEvent: false });\n  }\n\n  static getActiveOErrors(comp: ComponentWithValidatorsAndErrorsData): ErrorData[] {\n    if (comp.errorOptions.type === Codes.O_MAT_ERROR_STANDARD) {\n      return comp.errorsData.filter((item: ErrorData) => comp.hasError(item.name));\n    }\n    return [];\n  }\n\n  static pushToErrorsData(comp: ComponentWithValidatorsAndErrorsData, newErrorsData: ErrorData[] = []): void {\n    // avoid pushing repeated errors data\n    comp.errorsData.push(...newErrorsData.filter(err => !comp.errorsData.find(existingError => existingError.name === err.name)));\n  }\n}\n\n","import { Directive, ElementRef, Injector, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { OMatErrorOptions } from '../types/o-mat-error.type';\nimport { Codes } from '../util/codes';\nimport { ErrorsUtils } from '../util/errors';\n\n@Directive({\n  selector: '[oMatError]'\n})\nexport class OMatErrorDirective {\n  public text: string;\n  private errorOptions: OMatErrorOptions;\n\n  constructor(\n    private element: ElementRef,\n    private templateRef: TemplateRef<any>,\n    private viewContainer: ViewContainerRef,\n    private injector: Injector\n  ) {\n    this.errorOptions = ErrorsUtils.getErrorOptions(this.injector);\n    if (this.errorOptions.type === Codes.O_MAT_ERROR_LITE) {\n      this.element.nativeElement.hidden = true;\n    }\n  }\n\n  @Input()\n  set oMatError(val) {\n    if (val) {\n      this.viewContainer.createEmbeddedView(this.templateRef);\n      if (this.errorOptions.type === Codes.O_MAT_ERROR_LITE) {\n        setTimeout(() => {\n          try {\n            this.text = this.element.nativeElement.parentElement.getElementsByTagName('mat-error')[0].textContent;\n          } catch (e) {\n            this.text = undefined\n          }\n          this.viewContainer.clear();\n        }, 0)\n      }\n    } else {\n      this.text = undefined;\n      this.viewContainer.clear();\n    }\n  }\n}\n","import { Component, Injector } from '@angular/core';\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\n\nimport { ErrorData } from '../../../types/error-data.type';\nimport { Util } from '../../../util/util';\nimport { OErrorComponent } from './o-error.component';\n\nexport const DEFAULT_INPUTS_O_VALIDATOR = [\n  'validatorFn: validator-function',\n  'asyncValidatorFn: async-validator-function',\n  'errorName: error-name',\n  'errorText: error-text'\n];\n\n@Component({\n  selector: 'o-validator',\n  template: ' ',\n  inputs: DEFAULT_INPUTS_O_VALIDATOR\n})\nexport class OValidatorComponent {\n\n  validatorFn: ValidatorFn = null;\n  asyncValidatorFn: AsyncValidatorFn = null;\n  errorName: string;\n  errorText: string;\n\n  protected errorsData: ErrorData[] = [];\n\n  constructor(protected injector: Injector) { }\n\n  registerError(oError: OErrorComponent) {\n    this.errorsData.push({\n      name: oError.getName(),\n      text: oError.getText()\n    });\n  }\n\n  getValidatorFn(): ValidatorFn {\n    return this.validatorFn;\n  }\n\n  getAsyncValidatorFn(): AsyncValidatorFn {\n    return this.asyncValidatorFn;\n  }\n\n  getErrorsData(): ErrorData[] {\n    let result: ErrorData[] = [];\n    if (this.errorsData.length > 0) {\n      result = this.errorsData;\n    } else if (Util.isDefined(this.errorName) && Util.isDefined(this.errorText)) {\n      result = [{\n        name: this.errorName,\n        text: this.errorText\n      }];\n    }\n    return result;\n  }\n}\n","import { Injector } from '@angular/core';\n\nimport { BooleanConverter } from '../decorators/input-converter';\nimport { IComponent } from '../interfaces/component.interface';\nimport { OTranslateService } from '../services/translate/o-translate.service';\nimport { OPermissions } from '../types/o-permissions.type';\nimport { PermissionsUtils } from '../util/permissions';\nimport { Util } from '../util/util';\n\nexport class OBaseComponent implements IComponent {\n\n  /* Inputs */\n  protected oattr: string;\n  protected _olabel: string;\n  protected oplaceholder: string;\n  protected _enabled: boolean = true;\n  protected _readOnly: boolean;\n  protected _orequired: boolean = false;\n\n  /* Internal variables */\n  protected translateService: OTranslateService;\n\n  protected _isReadOnly: boolean;\n  protected _tooltip: string;\n  protected _tooltipPosition: string = 'below';\n  protected _tooltipShowDelay: number = 500;\n  protected _tooltipHideDelay: number = 0;\n  protected permissions: OPermissions;\n\n  constructor(protected injector: Injector) {\n    if (this.injector) {\n      this.translateService = this.injector.get<OTranslateService>(OTranslateService);\n    }\n  }\n\n  public initialize(): void {\n    if (!Util.isDefined(this._olabel)) {\n      this._olabel = this.oattr;\n    }\n    if (Util.isDefined(this.oplaceholder) && this.oplaceholder.length > 0) {\n      this.oplaceholder = this.translateService.get(this.oplaceholder);\n    }\n  }\n\n  public getAttribute(): string {\n    if (this.oattr) {\n      return this.oattr;\n    }\n    return undefined;\n  }\n\n  public setEnabled(value: boolean): void {\n    if (!PermissionsUtils.checkEnabledPermission(this.permissions)) {\n      return;\n    }\n    const parsedValue = BooleanConverter(value);\n    this._enabled = parsedValue;\n  }\n\n  get placeHolder(): string {\n    return this.oplaceholder;\n  }\n\n  set placeHolder(value: string) {\n    this.oplaceholder = value;\n  }\n\n  get tooltipClass(): string {\n    return this.getTooltipClass();\n  }\n\n  protected getTooltipClass(): string {\n    return `o-tooltip ${this.tooltipPosition}`;\n  }\n\n  protected getTooltipText(): string {\n    if (Util.isDefined(this._tooltip) && this.translateService) {\n      return this.translateService.get(this._tooltip);\n    }\n    return this._tooltip;\n  }\n\n  get tooltip(): string {\n    return this.getTooltipText();\n  }\n\n  set tooltip(value: string) {\n    this._tooltip = value;\n  }\n\n  get tooltipPosition(): string {\n    return this._tooltipPosition;\n  }\n\n  set tooltipPosition(value: string) {\n    this._tooltipPosition = value;\n  }\n\n  get tooltipShowDelay(): number {\n    return this._tooltipShowDelay;\n  }\n\n  set tooltipShowDelay(value: number) {\n    this._tooltipShowDelay = value;\n  }\n\n  get tooltipHideDelay(): number {\n    return this._tooltipHideDelay;\n  }\n\n  set tooltipHideDelay(value: number) {\n    this._tooltipHideDelay = value;\n  }\n\n  get isReadOnly(): boolean {\n    return this._isReadOnly;\n  }\n\n  set isReadOnly(value: boolean) {\n    this.setIsReadOnly(value);\n  }\n\n  protected setIsReadOnly(value: boolean): void {\n    // only modifiyng read only state if the component has not its own read-only input\n    if (Util.isDefined(this.readOnly)) {\n      return;\n    }\n    if (!this.enabled) {\n      this._isReadOnly = false;\n      return;\n    }\n    if (!PermissionsUtils.checkEnabledPermission(this.permissions)) {\n      return;\n    }\n    this._isReadOnly = value;\n  }\n\n  get readOnly(): any {\n    return this._readOnly;\n  }\n\n  set readOnly(value: any) {\n    if (!PermissionsUtils.checkEnabledPermission(this.permissions)) {\n      return;\n    }\n    const parsedValue = BooleanConverter(value);\n    this._readOnly = parsedValue;\n    this._isReadOnly = parsedValue;\n  }\n\n  set orequired(val: boolean) {\n    this._orequired = BooleanConverter(val);\n  }\n\n  get orequired(): boolean {\n    return this._orequired;\n  }\n\n  get isRequired(): boolean {\n    return this.orequired;\n  }\n\n  set required(value: boolean) {\n    this.orequired = value;\n  }\n\n  get enabled(): any {\n    return this._enabled;\n  }\n\n  set enabled(value: any) {\n    const parsedValue = BooleanConverter(value);\n    this.setEnabled(parsedValue);\n  }\n\n  get olabel(): string {\n    return this._olabel;\n  }\n\n  set olabel(value: string) {\n    this._olabel = value;\n  }\n\n}\n","export class OValueChangeEvent {\n  public static USER_CHANGE = 0;\n  public static PROGRAMMATIC_CHANGE = 1;\n\n  constructor(\n    public type: number,\n    public newValue: any,\n    public oldValue: any,\n    public target: any) { }\n\n  public isUserChange(): boolean {\n    return this.type === OValueChangeEvent.USER_CHANGE;\n  }\n\n  public isProgrammaticChange(): boolean {\n    return this.type === OValueChangeEvent.PROGRAMMATIC_CHANGE;\n  }\n}\n","import {\n  AfterViewInit,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  SimpleChange,\n  ViewChildren\n} from '@angular/core';\nimport { AsyncValidatorFn, UntypedFormControl, UntypedFormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { FloatLabelType, MatError, MatFormFieldAppearance, MatSuffix, SubscriptSizing } from '@angular/material/form-field';\nimport { Subscription } from 'rxjs';\n\nimport { O_INPUTS_OPTIONS } from '../config/app-config';\nimport { BooleanConverter, BooleanInputConverter } from '../decorators/input-converter';\nimport { OMatErrorDirective } from '../directives/o-mat-error.directive';\nimport { IFormDataComponent } from '../interfaces/form-data-component.interface';\nimport { IFormDataTypeComponent } from '../interfaces/form-data-type-component.interface';\nimport { PermissionsService } from '../services/permissions/permissions.service';\nimport { OValidatorComponent } from '../shared/components/validation/o-validator.component';\nimport { ErrorData } from '../types/error-data.type';\nimport { FormValueOptions } from '../types/form-value-options.type';\nimport { OInputsOptions } from '../types/o-inputs-options.type';\nimport { OMatErrorOptions } from '../types/o-mat-error.type';\nimport { OPermissions } from '../types/o-permissions.type';\nimport { Codes } from '../util/codes';\nimport { ErrorsUtils } from '../util/errors';\nimport { PermissionsUtils } from '../util/permissions';\nimport { SQLTypes } from '../util/sqltypes';\nimport { Util } from '../util/util';\nimport { OFormValue } from './form/o-form-value';\nimport { OFormComponent } from './form/o-form.component';\nimport { OFormControl } from './input/o-form-control.class';\nimport { OBaseComponent } from './o-component.class';\nimport { OValueChangeEvent } from './o-value-change-event.class';\n\nexport const DEFAULT_INPUTS_O_FORM_DATA_COMPONENT = [\n  'oattr: attr',\n  'olabel: label',\n  'floatLabel: float-label',\n  'oplaceholder: placeholder',\n  'tooltip',\n  'tooltipPosition: tooltip-position',\n  'tooltipShowDelay: tooltip-show-delay',\n  'tooltipHideDelay: tooltip-hide-delay',\n  'data',\n  'autoBinding: automatic-binding',\n  'autoRegistering: automatic-registering',\n  'enabled',\n  'orequired: required',\n  // sqltype[string]: Data type according to Java standard. See SQLType ngClass. Default: 'OTHER'\n  'sqlType: sql-type',\n  'width',\n  'readOnly: read-only',\n  'clearButton: clear-button',\n  'angularValidatorsFn: validators',\n  'angularValidatorsFnErrors: validators-errors',\n  'appearance',\n  'hideRequiredMarker:hide-required-marker',\n  'labelVisible:label-visible',\n  'selectAllOnClick:select-all-on-click',\n  'angularAsyncValidatorsFn: async-validators',\n];\n\nexport const DEFAULT_OUTPUTS_O_FORM_DATA_COMPONENT = [\n  'onChange',\n  'onValueChange',\n  'onFocus',\n  'onBlur'\n];\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_FORM_DATA_COMPONENT,\n  outputs: DEFAULT_OUTPUTS_O_FORM_DATA_COMPONENT\n})\nexport class OFormDataComponent extends OBaseComponent implements IFormDataComponent, IFormDataTypeComponent,\n  OnInit, AfterViewInit, OnDestroy, OnChanges {\n  /* Inputs */\n  public sqlType: string;\n  @BooleanInputConverter()\n  public autoBinding: boolean = true;\n  @BooleanInputConverter()\n  public autoRegistering: boolean = true;\n  public width: string;\n  @BooleanInputConverter()\n  public clearButton: boolean = false;\n  public angularValidatorsFn: ValidatorFn[] = [];\n  public angularValidatorsFnErrors: ErrorData[] = [];\n  @BooleanInputConverter()\n  public hideRequiredMarker: boolean = false;\n  @BooleanInputConverter()\n  public labelVisible: boolean = true;\n  @BooleanInputConverter()\n  public selectAllOnClick: boolean = false;\n  public angularAsyncValidatorsFn: AsyncValidatorFn[] = [];\n\n  @Input()\n  get subscriptSizing(): SubscriptSizing {\n    return this._subscriptSizing || this.errorOptions?.type==='lite'?'dynamic':'fixed' ;\n  }\n  set subscriptSizing(value: SubscriptSizing) {\n    this._subscriptSizing = value || this.errorOptions?.type === 'lite' ? 'dynamic' : 'fixed';\n  }\n  private _subscriptSizing: SubscriptSizing | null = null;\n\n  /* Outputs */\n  public onChange: EventEmitter<object> = new EventEmitter<object>();\n  public onValueChange: EventEmitter<OValueChangeEvent> = new EventEmitter<OValueChangeEvent>();\n  public onFocus: EventEmitter<object> = new EventEmitter<object>();\n  public onBlur: EventEmitter<object> = new EventEmitter<object>();\n\n  @HostBinding('style.width')\n  get hostWidth(): string {\n    return this.width;\n  }\n\n  @HostListener('click', [])\n  handleClick(): void {\n    if (this.selectAllOnClick) {\n      this.selectValue();\n    }\n  }\n\n  /* Internal variables */\n  protected value: OFormValue;\n  protected defaultValue: any = void 0;\n  protected _SQLType: number = SQLTypes.OTHER;\n  protected _defaultSQLTypeKey: string = 'OTHER';\n  protected _fControl: OFormControl;\n  protected _fControlSubscription: Subscription;\n  protected _fGroup: UntypedFormGroup;\n  protected elRef: ElementRef;\n  protected form: OFormComponent;\n  protected oldValue: any;\n\n  protected _floatLabel: FloatLabelType;\n  protected _appearance: MatFormFieldAppearance;\n\n  protected matSuffixSubscription: Subscription;\n  @ViewChildren(MatSuffix)\n  protected _matSuffixList: QueryList<MatSuffix>;\n\n  errorsData: ErrorData[] = [];\n  protected validatorsSubscription: Subscription;\n  @ContentChildren(OValidatorComponent)\n  validatorChildren: QueryList<OValidatorComponent>;\n\n  protected permissionsService: PermissionsService;\n  protected mutationObserver: MutationObserver;\n\n  errorOptions: OMatErrorOptions;\n  @ViewChildren(OMatErrorDirective)\n  oMatErrorChildren: QueryList<OMatErrorDirective>;\n  @ContentChildren(MatError) protected _errorChildren: QueryList<MatError>;\n\n  protected oInputsOptions: OInputsOptions;\n\n  constructor(\n    form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(injector);\n    this.form = form;\n    this.elRef = elRef;\n    this.permissionsService = this.injector.get<PermissionsService>(PermissionsService);\n    this.errorOptions = ErrorsUtils.getErrorOptions(this.injector);\n    try {\n      this.selectAllOnClick = this.injector.get(O_INPUTS_OPTIONS).selectAllOnClick;\n    } catch (e) {\n      this.selectAllOnClick = false;\n    }\n  }\n\n  public ngOnInit(): void {\n    this.initialize();\n  }\n\n  public ngAfterViewInit(): void {\n    if (this._matSuffixList) {\n      this.setSuffixClass(this._matSuffixList.length);\n      this.matSuffixSubscription = this._matSuffixList.changes.subscribe(() => {\n        this.setSuffixClass(this._matSuffixList.length);\n      });\n    }\n\n    if (this.validatorChildren) {\n      this.validatorsSubscription = this.validatorChildren.changes.subscribe(() => {\n        this.updateValidators();\n      });\n      if (this.validatorChildren.length > 0) {\n        this.updateValidators();\n      }\n    }\n\n    if (!this.hasEnabledPermission) {\n      this.mutationObserver = PermissionsUtils.registerDisabledChangesInDom(this.getMutationObserverTarget(), {\n        callback: this.disableFormControl.bind(this)\n      });\n    }\n    this.addOntimizeCustomAppearanceClass();\n    try {\n      this.oInputsOptions = this.injector.get(O_INPUTS_OPTIONS);\n    } catch (e) {\n      this.oInputsOptions = {};\n    }\n\n    Util.parseOInputsOptions(this.elRef, this.oInputsOptions);\n  }\n\n  public ngOnDestroy(): void {\n    this.destroy();\n  }\n\n  public ngOnChanges(changes: { [propName: string]: SimpleChange }): void {\n    if (Util.isDefined(changes.angularValidatorsFn) || Util.isDefined(changes.angularAsyncValidatorsFn)) {\n      this.updateValidators();\n    }\n  }\n\n  public hasEnabledPermission(): boolean {\n    return this.permissions ? this.permissions.enabled : true;\n  }\n\n  public hasVisiblePermission(): boolean {\n    return this.permissions ? this.permissions.visible : true;\n  }\n\n  public getFormGroup(): UntypedFormGroup {\n    if (this._fGroup) {\n      return this._fGroup;\n    }\n    let formGroup = this.form ? this.form.formGroup : undefined;\n    if ((!this.hasEnabledPermission() || !this.hasVisiblePermission()) && !this._fGroup) {\n      const group = {};\n      group[this.oattr] = this._fControl;\n      this._fGroup = new UntypedFormGroup(group);\n      formGroup = this._fGroup;\n    }\n    return formGroup;\n  }\n\n  public getFormControl(): UntypedFormControl {\n    return this._fControl;\n  }\n\n  public hasError(error: string): boolean {\n    return !this.isReadOnly && this._fControl && this._fControl.touched && this._fControl.hasError(error);\n  }\n\n  public hasSomeError(): boolean {\n    return !this.isReadOnly && this._fControl && this._fControl.touched && Util.isDefined(this._fControl.errors);\n  }\n\n  public getErrorValue(error: string, prop: string): string {\n    return this._fControl && this._fControl.hasError(error) ? this._fControl.getError(error)[prop] || '' : '';\n  }\n\n  public getActiveOErrors(): ErrorData[] {\n    return ErrorsUtils.getActiveOErrors(this);\n  }\n\n  public initialize(): void {\n    super.initialize();\n\n    // ensuring formControl creation\n    this.getControl();\n\n    this.parsePermissions();\n\n    if (!Util.isDefined(this.permissions)) {\n      if (this.form) {\n        this.registerFormListeners();\n        this.isReadOnly = !(this.form.isInUpdateMode() || this.form.isInInsertMode() || this.form.isEditableDetail());\n      } else {\n        this.isReadOnly = !this.enabled;\n      }\n    }\n  }\n\n  public destroy(): void {\n    this.unregisterFormListeners();\n    if (this.matSuffixSubscription) {\n      this.matSuffixSubscription.unsubscribe();\n    }\n    if (this.validatorsSubscription) {\n      this.validatorsSubscription.unsubscribe();\n    }\n    if (this.mutationObserver) {\n      this.mutationObserver.disconnect();\n    }\n    if (this._fControlSubscription) {\n      this._fControlSubscription.unsubscribe();\n    }\n  }\n\n  public registerFormListeners(): void {\n    if (this.form) {\n      this.form.registerFormComponent(this);\n      this.form.registerFormControlComponent(this);\n      this.form.registerSQLTypeFormComponent(this);\n    }\n  }\n\n  public unregisterFormListeners(): void {\n    if (this.form) {\n      this.form.unregisterFormComponent(this);\n      this.form.unregisterFormControlComponent(this);\n      this.form.unregisterSQLTypeFormComponent(this);\n    }\n  }\n\n  set data(value: any) {\n    this.setData(value);\n  }\n\n  public setData(newValue: any): void {\n    // emit OValueChangeEvent.PROGRAMMATIC_CHANGE when assign value to data\n    // this method skips the following permissions checking because the form is\n    // setting its query result using it\n    const previousValue = this.oldValue;\n    this.setFormValue(newValue);\n    this.emitOnValueChange(OValueChangeEvent.PROGRAMMATIC_CHANGE, newValue, previousValue);\n  }\n\n  public isAutomaticBinding(): boolean {\n    return this.autoBinding;\n  }\n\n  public isAutomaticRegistering(): boolean {\n    return this.autoRegistering;\n  }\n\n  public getValue(): any {\n    if (this.value instanceof OFormValue) {\n      if (this.value.value !== undefined) {\n        return this.value.value;\n      }\n    }\n    return this.defaultValue;\n  }\n\n  public setValue(val: any, options: FormValueOptions = {}, setDirty: boolean = false): void {\n    if (!PermissionsUtils.checkEnabledPermission(this.permissions)) {\n      return;\n    }\n    if (this.oldValue !== val) {\n      const previousValue = this.oldValue;\n      this.setFormValue(val, options, setDirty);\n      if (options && options.emitModelToViewValueChange !== false) {\n        const changeType: number = (options.hasOwnProperty('changeType')) ? options.changeType : OValueChangeEvent.PROGRAMMATIC_CHANGE;\n        this.emitOnValueChange(changeType, val, previousValue);\n      }\n    }\n  }\n\n  /**\n   * Clears the component value.\n   */\n  public clearValue(options?: FormValueOptions, setDirty: boolean = false): void {\n    if (!PermissionsUtils.checkEnabledPermission(this.permissions)) {\n      return;\n    }\n    this.setValue(void 0, options, setDirty);\n  }\n\n  public onClickClearValue(event: Event): void {\n    event.stopPropagation();\n    event.preventDefault();\n    this.clearValue({ changeType: OValueChangeEvent.USER_CHANGE }, true);\n  }\n\n  /* This method is called in output change event, not emit event onValueChange when oldvalue is same than newvalue*/\n  public onChangeEvent(arg: any): void {\n    const value = this.getValue();\n    if (this.oldValue !== value) {\n      const previousValue = this.oldValue;\n      this.oldValue = value;\n      this.emitOnValueChange(OValueChangeEvent.USER_CHANGE, value, previousValue);\n    }\n  }\n\n  get showClearButton(): boolean {\n    return this.clearButton && !this.isReadOnly && this.enabled && Util.isDefined(this.getValue());\n  }\n\n  public onFormControlChange(value: any): void {\n    // equivalente al innerOnChange\n    if (!this.value) {\n      this.value = new OFormValue();\n    }\n    this.ensureOFormValue(value);\n    this.onChange.emit(value);\n  }\n\n  public ensureOFormValue(arg: any): void {\n    if (arg instanceof OFormValue) {\n      this.value = arg;\n    } else if (Util.isDefined(arg) && !(arg instanceof OFormValue)) {\n      const val: OFormValue = this.value || new OFormValue();\n      val.value = arg;\n      this.value = val;\n    } else {\n      this.value = new OFormValue(this.defaultValue);\n    }\n  }\n\n  /**\n   * This method should overwritten in the child component when it have addicional form control or other oFormDataComponent\n   */\n  public createFormControl(cfg?, validators?: ValidatorFn | ValidatorFn[], asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[]): OFormControl {\n    return new OFormControl(cfg, validators, asyncValidators);\n  }\n\n  public getControl(): OFormControl {\n    if (!this._fControl) {\n      const validators: ValidatorFn[] = this.resolveValidators();\n      const asyncValidators: AsyncValidatorFn[] = this.resolveAsyncValidators();\n      const cfg = {\n        value: this.value ? this.value.value : undefined,\n        disabled: !this.enabled\n      };\n      this._fControl = this.createFormControl(cfg, validators, asyncValidators);\n      this.registerOnFormControlChange();\n    }\n    return this._fControl;\n  }\n\n  public resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    if (this.angularValidatorsFn && this.angularValidatorsFn.length > 0) {\n      validators.push(...this.angularValidatorsFn);\n      ErrorsUtils.pushToErrorsData(this, this.angularValidatorsFnErrors);\n    }\n\n    if (this.orequired) {\n      validators.push(Validators.required);\n    }\n    return validators;\n  }\n\n  public resolveAsyncValidators(): AsyncValidatorFn[] {\n    if (this.angularAsyncValidatorsFn && this.angularAsyncValidatorsFn.length > 0) {\n      ErrorsUtils.pushToErrorsData(this, this.angularValidatorsFnErrors);\n    }\n    return this.angularAsyncValidatorsFn || [];\n  }\n\n  public getSQLType(): number {\n    const sqlt = this.sqlType && this.sqlType.length > 0 ? this.sqlType : this._defaultSQLTypeKey;\n    this._SQLType = SQLTypes.getSQLTypeValue(sqlt);\n    return this._SQLType;\n  }\n\n  get isValid(): boolean {\n    if (this._fControl) {\n      return this._fControl.valid;\n    }\n    return false;\n  }\n\n  public isEmpty(): boolean {\n    if (this.value instanceof OFormValue) {\n      if (this.value.value !== undefined) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  public setEnabled(value: boolean): void {\n    super.setEnabled(value);\n    if (this._fControl && this.hasEnabledPermission() && this.hasVisiblePermission()) {\n      value ? this._fControl.enable() : this._fControl.disable();\n    }\n  }\n\n  get elementRef(): ElementRef {\n    return this.elRef;\n  }\n\n  get hasCustomWidth(): boolean {\n    return this.width !== undefined;\n  }\n\n  get orequired(): boolean {\n    return this._orequired;\n  }\n\n  set orequired(val: boolean) {\n    const old = this._orequired;\n    this._orequired = BooleanConverter(val);\n    if (val !== old) {\n      this.updateValidators();\n    }\n  }\n\n  public innerOnFocus(event: FocusEvent): void {\n\n    if (!this.isReadOnly && this.enabled) {\n      this.onFocus.emit(event);\n    }\n  }\n\n  public innerOnBlur(event: any): void {\n    if (!this.isReadOnly && this.enabled) {\n      this.onBlur.emit(event);\n    }\n  }\n\n  get appearance(): MatFormFieldAppearance {\n    return this._appearance;\n  }\n\n  set appearance(value: MatFormFieldAppearance) {\n    const values = ['fill', 'outline'];\n    if (values.indexOf(value) === -1) {\n      value = undefined;\n    }\n    this._appearance = value;\n  }\n\n  get floatLabel(): FloatLabelType {\n    if (!this.labelVisible) {\n      this.floatLabel = 'always';\n    }\n    return this._floatLabel;\n  }\n\n  set floatLabel(value: FloatLabelType) {\n    const values = ['always', 'auto'];\n    if (values.indexOf(value) === -1) {\n      value = 'auto';\n    }\n    this._floatLabel = value;\n  }\n\n  public selectValue() {\n    if (!this.enabled || this.isReadOnly) {\n      return;\n    }\n    const inputEl = document.getElementById(this.oattr);\n    if (inputEl) {\n      (inputEl as HTMLInputElement).select();\n    }\n  }\n\n  protected registerOnFormControlChange(): void {\n    if (this._fControl) {\n      this._fControlSubscription = this._fControl.valueChanges.subscribe(value => {\n        this.onFormControlChange(value);\n      });\n    }\n  }\n\n  protected emitOnValueChange(type, newValue, oldValue): void {\n    const event = new OValueChangeEvent(type, newValue, oldValue, this);\n    this.onValueChange.emit(event);\n  }\n\n  protected setFormValue(val: any, options?: FormValueOptions, setDirty: boolean = false): void {\n    this.ensureOFormValue(val);\n    if (this._fControl) {\n      this.updateOFormControlValue(this.value.value, options, setDirty);\n    }\n    this.oldValue = this.value.value;\n  }\n\n  protected updateOFormControlValue(value: any, options?: FormValueOptions, setDirty: boolean = false): void {\n    this._fControl.setValue(value, options);\n    if (setDirty) {\n      this._fControl.markAsDirty();\n    }\n    if (this._fControl.invalid && !this.form.isInInsertMode()) {\n      this._fControl.markAsTouched();\n    }\n  }\n\n  protected updateValidators(): void {\n    ErrorsUtils.updateFormControlValidators(this);\n  }\n\n  protected addOntimizeCustomAppearanceClass(): void {\n    try {\n      if (this.elRef) {\n        const matFormFieldEl = this.elRef.nativeElement.getElementsByTagName('mat-form-field');\n        if (matFormFieldEl && matFormFieldEl.length === 1) {\n          matFormFieldEl.item(0).classList.add('mat-form-field-appearance-ontimize');\n        }\n      }\n    } catch (e) {\n      //\n    }\n  }\n\n  protected getTooltipClass(): string {\n    return ErrorsUtils.getTooltipClasses(this);\n  }\n\n  protected getTooltipText(): string {\n    const liteError = this.errorOptions.type === Codes.O_MAT_ERROR_LITE;\n    return liteError && this.hasSomeError() ? ErrorsUtils.getErrorsTooltipText(this) : super.getTooltipText();\n  }\n\n  protected parsePermissions(): void {\n    // if oattr in form, it can have permissions\n    if (!this.form || !Util.isDefined(this.form.oattr)) {\n      return;\n    }\n    const permissions: OPermissions = this.form.getFormComponentPermissions(this.oattr);\n    if (!Util.isDefined(permissions)) {\n      return;\n    }\n    if (permissions.visible === false) {\n      /* hide input per permissions */\n      this.elRef.nativeElement.remove();\n      this.destroy();\n    } else if (permissions.enabled === false) {\n      /* disable input per permissions */\n      this.enabled = false;\n      if (this.form) {\n        this.form.registerFormComponent(this);\n      }\n    }\n    this.permissions = permissions;\n  }\n\n  protected getMutationObserverTarget(): any {\n    let result;\n    try {\n      result = this.elementRef.nativeElement.getElementsByTagName('input').item(0);\n    } catch (error) {\n      //\n    }\n    return result;\n  }\n\n  protected setSuffixClass(count: number): void {\n    const iconFieldEl = this.elRef.nativeElement.getElementsByClassName('icon-field');\n    if (iconFieldEl.length === 1) {\n      const classList: Array<string> = Array.from(iconFieldEl[0].classList || []);\n      classList.forEach(className => {\n        if (className.startsWith('icon-field-')) {\n          iconFieldEl[0].classList.remove(className);\n        }\n      });\n      if (count > 0) {\n        const matSuffixClass = `icon-field-${count}-suffix`;\n        iconFieldEl[0].classList.add(matSuffixClass);\n      }\n    }\n  }\n\n  /**\n   * Do not allow the disabled attribute to change by code or by inspector\n   */\n  private disableFormControl(): void {\n    const control = this.getFormControl();\n    control.disable({\n      onlySelf: true,\n      emitEvent: false\n    });\n  }\n}\n","import { Directive, ElementRef, EventEmitter, Injector, NgZone, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { ServiceResponse } from '../../interfaces/service-response.interface';\nimport { OErrorDialogManager } from '../../services/o-error-dialog-manager.service';\nimport { OntimizeService } from '../../services/ontimize/ontimize.service';\nimport { OConfigureServiceArgs } from '../../types/configure-service-args.type';\nimport { FormValueOptions } from '../../types/form-value-options.type';\nimport { Codes } from '../../util/codes';\nimport { ServiceUtils } from '../../util/service.utils';\nimport { Util } from '../../util/util';\nimport { OContextMenuComponent } from '../contextmenu/o-context-menu.component';\nimport { OFormComponent } from '../form/o-form.component';\nimport { OFormDataComponent } from '../o-form-data-component.class';\n\nexport const DEFAULT_INPUTS_O_FORM_SERVICE_COMPONENT = [\n  // static-data [Array<any>] : way to populate with static data. Default: no value.\n  'staticData: static-data',\n  'entity',\n  'service',\n  'columns',\n  'valueColumn: value-column',\n  'valueColumnType: value-column-type',\n  'parentKeys: parent-keys',\n  // Visible columns into selection dialog from parameter 'columns'. With empty parameter all columns are visible.\n  'visibleColumns: visible-columns',\n  // Visible columns in text field. By default, it is the parameter value of visible columns.\n  'descriptionColumns: description-columns',\n\n  'separator',\n\n  'queryOnInit: query-on-init',\n  'queryOnBind: query-on-bind',\n  'queryOnEvent: query-on-event',\n\n  // query-method [string]: name of the service method to perform queries. Default: query.\n  'queryMethod: query-method',\n\n  'serviceType: service-type',\n\n  // query-with-null-parent-keys [string][yes|no|true|false]: Indicates whether or not to trigger query method when parent-keys filter is null. Default: false\n  'queryWithNullParentKeys: query-with-null-parent-keys',\n\n  // set-value-on-value-change [string]: Form component attributes whose value will be set when the value of the current component changes due to user interaction. Separated by ';'. Accepted format: attr | columnName:attr\n  'setValueOnValueChange: set-value-on-value-change',\n\n  // [function]: function to execute on query error. Default: no value.\n  'queryFallbackFunction: query-fallback-function',\n\n  // 'insertFallbackFunction: insert-fallback-function',\n\n  // 'updateFallbackFunction: update-fallback-function',\n\n  // 'deleteFallbackFunction: delete-fallback-function'\n\n  'translate',\n\n  // sort [string]: sorting ASC or DESC. Default: no value\n  'sort'\n];\n\nexport const DEFAULT_OUTPUTS_O_FORM_SERVICE_COMPONENT = [\n  'onSetValueOnValueChange',\n  'onDataLoaded'\n];\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_FORM_SERVICE_COMPONENT,\n  outputs: DEFAULT_OUTPUTS_O_FORM_SERVICE_COMPONENT\n})\nexport class OFormServiceComponent extends OFormDataComponent {\n\n  /* Inputs */\n  protected staticData: Array<any>;\n  protected entity: string;\n  protected service: string;\n  protected columns: string;\n  public valueColumn: string;\n  protected valueColumnType: string = Codes.TYPE_INT;\n  protected parentKeys: string;\n  protected visibleColumns: string;\n  protected descriptionColumns: string;\n  public separator: string = Codes.SPACE_SEPARATOR;\n  @BooleanInputConverter()\n  protected queryOnInit: boolean = true;\n  @BooleanInputConverter()\n  protected queryOnBind: boolean = false;\n  protected queryOnEvent: any;\n  protected queryMethod: string = Codes.QUERY_METHOD;\n  protected serviceType: string;\n  @BooleanInputConverter()\n  queryWithNullParentKeys: boolean = false;\n  public setValueOnValueChange: string;\n  public queryFallbackFunction: (error: any) => void;\n\n  @BooleanInputConverter()\n  public translate: boolean = false;\n  public sort: 'ASC' | 'DESC';\n\n  /* Outputs */\n  public onSetValueOnValueChange: EventEmitter<object> = new EventEmitter<object>();\n  public onDataLoaded: EventEmitter<object> = new EventEmitter<object>();\n\n  /* Internal variables */\n  public dataArray: any[] = [];\n  protected colArray: string[] = [];\n  protected visibleColArray: string[] = [];\n  public descriptionColArray: string[] = [];\n  protected dataService: OntimizeService;\n  public loaderSubscription: Subscription;\n  loading: boolean = false;\n\n  protected querySuscription: Subscription;\n  protected cacheQueried: boolean = false;\n  protected _pKeysEquiv = {};\n  protected _setValueOnValueChangeEquiv = {};\n  protected _formDataSubcribe;\n  protected _currentIndex;\n  protected oErrorDialogManager: OErrorDialogManager;\n\n  protected queryOnEventSubscription: Subscription;\n  protected subscriptionDataLoad: Subscription = new Subscription();\n  public delayLoad = 250;\n  public loadingSubject = new BehaviorSubject<boolean>(false);\n\n  public oContextMenu: OContextMenuComponent;\n  @ViewChild(OContextMenuComponent)\n  set oContextMenuRef(value: OContextMenuComponent) {\n    this.oContextMenu = value;\n  }\n\n  constructor(\n    form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n    this.form = form;\n    this.elRef = elRef;\n    this.oErrorDialogManager = injector.get(OErrorDialogManager);\n  }\n\n  initialize() {\n    super.initialize();\n\n    this.subscriptionDataLoad.add(this.onDataLoaded.subscribe(() => this.syncDataIndex(false)));\n\n    this.cacheQueried = false;\n    this.colArray = Util.parseArray(this.columns, true);\n\n    this.visibleColArray = Util.parseArray(this.visibleColumns, true);\n    if (Util.isArrayEmpty(this.visibleColArray)) {\n      // It is necessary to assing value to visibleColumns to propagate the parameter.\n      this.visibleColumns = this.columns;\n      this.visibleColArray = this.colArray;\n    }\n\n    this.descriptionColArray = Util.parseArray(this.descriptionColumns);\n    if (Util.isArrayEmpty(this.descriptionColArray)) {\n      this.descriptionColArray = this.visibleColArray;\n    }\n\n    const pkArray = Util.parseArray(this.parentKeys);\n    this._pKeysEquiv = Util.parseParentKeysEquivalences(pkArray);\n\n    const setValueSetArray = Util.parseArray(this.setValueOnValueChange);\n    this._setValueOnValueChangeEquiv = Util.parseParentKeysEquivalences(setValueSetArray);\n\n    if (this.form && this.queryOnBind) {\n      this._formDataSubcribe = this.form.onDataLoaded.subscribe(() => this.queryData());\n    }\n\n    if (this.staticData) {\n      this.queryOnBind = false;\n      this.queryOnInit = false;\n      this.setDataArray(this.staticData);\n    } else {\n      this.configureService();\n    }\n\n    if (this.queryOnEvent !== undefined && this.queryOnEvent.subscribe !== undefined) {\n      this.queryOnEventSubscription = this.queryOnEvent.subscribe((value) => {\n        if (Util.isDefined(value) || this.queryWithNullParentKeys) {\n          this.queryData();\n        }\n      });\n    }\n\n    if (typeof this.queryFallbackFunction !== 'function') {\n      this.queryFallbackFunction = undefined;\n    }\n\n\n\n  }\n\n  destroy() {\n    super.destroy();\n    if (this._formDataSubcribe) {\n      this._formDataSubcribe.unsubscribe();\n    }\n    if (this.queryOnEventSubscription) {\n      this.queryOnEventSubscription.unsubscribe();\n    }\n    if (this.loaderSubscription) {\n      this.loaderSubscription.unsubscribe();\n    }\n    if (this.subscriptionDataLoad) {\n      this.subscriptionDataLoad.unsubscribe();\n    }\n  }\n\n  protected emitOnValueChange(type, newValue, oldValue) {\n    super.emitOnValueChange(type, newValue, oldValue);\n    // Set value for 'set-value-on-value-change' components\n    const record = this.getSelectedRecord();\n    this.onSetValueOnValueChange.emit(record);\n    const setValueSetKeys = Object.keys(this._setValueOnValueChangeEquiv);\n    if (setValueSetKeys.length) {\n      const formComponents = this.form.getComponents();\n      setValueSetKeys.forEach(key => {\n        const comp = formComponents[this._setValueOnValueChangeEquiv[key]];\n        if (Util.isDefined(comp)) {\n          comp.setValue(Util.isDefined(record) ? record[key] : undefined);\n        }\n      });\n    }\n  }\n\n  /* Utility methods */\n  configureService() {\n    const configureServiceArgs: OConfigureServiceArgs = { injector: this.injector, baseService: OntimizeService, entity: this.entity, service: this.service, serviceType: this.serviceType }\n    this.dataService = Util.configureService(configureServiceArgs);\n\n\n  }\n\n  getAttributesValuesToQuery(columns?: Array<any>) {\n    const result = Util.isDefined(columns) ? columns : this.colArray;\n    if (result.indexOf(this.valueColumn) === -1) {\n      result.push(this.valueColumn);\n    }\n    return result;\n  }\n\n  queryData(filter?: any) {\n    if (!this.dataService || !(this.queryMethod in this.dataService) || !this.entity) {\n      console.warn('Service not properly configured! aborting query');\n      return;\n    }\n    filter = Object.assign(filter || {}, ServiceUtils.getParentKeysFromForm(this._pKeysEquiv, this.form));\n    if (!ServiceUtils.filterContainsAllParentKeys(filter, this._pKeysEquiv) && !this.queryWithNullParentKeys) {\n      this.setDataArray([]);\n    } else {\n      if (this.querySuscription) {\n        this.querySuscription.unsubscribe();\n      }\n      if (this.loaderSubscription) {\n        this.loaderSubscription.unsubscribe();\n      }\n\n      const queryCols = this.getAttributesValuesToQuery();\n      const sqlTypes = this.form ? this.form.getAttributesSQLTypes() : {};\n\n      this.loaderSubscription = this.load();\n      this.querySuscription = this.dataService[this.queryMethod](filter, queryCols, this.entity, sqlTypes)\n        .subscribe((resp: ServiceResponse) => {\n          if (resp.isSuccessful()) {\n            this.cacheQueried = true;\n            this.setDataArray(resp.data);\n          }\n          this.loadingSubject.next(false);\n          this.loaderSubscription.unsubscribe();\n        }, err => {\n          console.error(err);\n          this.loadingSubject.next(false);\n          this.loaderSubscription.unsubscribe();\n          if (Util.isDefined(this.queryFallbackFunction)) {\n            this.queryFallbackFunction(err);\n          } else {\n            this.oErrorDialogManager.openErrorDialog(err);\n            console.error(err);\n          }\n        });\n    }\n  }\n\n  getDataArray(): any[] {\n    return this.dataArray;\n  }\n\n  setDataArray(data: any): void {\n    if (Util.isArray(data)) {\n      this.dataArray = this.sortData(data);\n    } else if (Util.isObject(data) && Object.keys(data).length > 0) {\n      this.dataArray = [data];\n    } else {\n      console.warn('Component has received not supported service data. Supported data are Array or not empty Object');\n      this.dataArray = [];\n    }\n    this.onDataLoaded.emit(this.dataArray);\n  }\n\n  syncDataIndex(queryIfNotFound: boolean = true) {\n    this._currentIndex = undefined;\n    if (Util.isDefined(this.value) && !this.isEmpty() && this.dataArray) {\n      this.dataArray.forEach((item, index) => {\n        if (this.value.value instanceof Array) {\n          this._currentIndex = [];\n          this.value.value.forEach((itemValue, indexValue) => {\n            if (item[this.valueColumn] === itemValue) {\n              this._currentIndex[this._currentIndex.length] = indexValue;\n            }\n          });\n        } else if (item[this.valueColumn] === this.value.value) {\n          this._currentIndex = index;\n        }\n        if (item[this.valueColumn] === this.value.value) {\n          this._currentIndex = index;\n        }\n      });\n\n      if (this._currentIndex === undefined) {\n        if (queryIfNotFound &&\n          this.queryOnBind && this.dataArray && this.dataArray.length === 0 && !this.cacheQueried) {\n          this.queryData();\n        } else if (!queryIfNotFound && this.dataArray && this.dataArray.length > 0) {\n          console.warn('It was set the value ' + this.value.value + ' to the component ' + this.oattr + ' but this value does not exist in the data array and this value will be set to undefined');\n          this.setValue(void 0);\n        }\n      }\n    }\n  }\n\n  protected parseByValueColumnType(val: any) {\n    let value = val;\n\n    if (this.valueColumnType === Codes.TYPE_INT) {\n      const parsed = parseInt(value, 10);\n      if (!isNaN(parsed)) {\n        value = parsed;\n      }\n    }\n    return value;\n  }\n\n  setValue(val: any, options?: FormValueOptions) {\n    const value = this.parseByValueColumnType(val);\n    super.setValue(value, options);\n  }\n\n  setData(val: any) {\n    const value = this.parseByValueColumnType(val);\n    super.setData(value);\n  }\n\n  getSelectedRecord() {\n    let result;\n    const selectedValue = this.getValue();\n    if (Util.isDefined(selectedValue)) {\n      result = this.getDataArray().find(item => item[this.valueColumn] === selectedValue);\n    }\n    return result;\n  }\n\n  load(): any {\n    const zone = this.injector.get(NgZone);\n    const loadObservable = new Observable(observer => {\n      const timer = window.setTimeout(() => {\n        observer.next(true);\n      }, this.delayLoad);\n\n      return () => {\n        window.clearTimeout(timer);\n        zone.run(() => {\n          observer.next(false);\n          this.loading = false;\n        });\n      };\n\n    });\n    const subscription = loadObservable.subscribe(val => {\n      zone.run(() => {\n        this.loading = val as boolean;\n        this.loadingSubject.next(val as boolean);\n      });\n    });\n    return subscription;\n  }\n\n  onFormControlChange(value: any) {\n    if (this.oldValue === value) {\n      return;\n    }\n    super.onFormControlChange(value);\n  }\n\n  public getOptionDescriptionValue(item: any = {}): string {\n    let descTxt = '';\n    if (this.descriptionColArray && this.descriptionColArray.length > 0) {\n      this.descriptionColArray.forEach((col, index) => {\n        let txt = item[col];\n        if (Util.isDefined(txt)) {\n          if (this.translate && this.translateService) {\n            txt = this.translateService.get(txt);\n          }\n          descTxt += txt;\n        }\n        if (index < this.descriptionColArray.length - 1) {\n          descTxt += this.separator;\n        }\n      });\n    }\n    return descTxt.trim();\n  }\n\n  protected sortData(data: any[]): any[] {\n    if (!Util.isDefined(this.sort)) {\n      return data;\n    }\n\n    const sortDirection = this.sort.toLowerCase();\n    if (sortDirection !== Codes.ASC_SORT && sortDirection !== Codes.DESC_SORT) {\n      return data;\n    }\n\n    const sortedData = data.sort((a, b) => Util.compare(this.getOptionDescriptionValue(a), this.getOptionDescriptionValue(b)));\n    if (sortDirection === Codes.DESC_SORT) {\n      sortedData.reverse();\n    }\n    return sortedData;\n  }\n\n  refresh() {\n    this.queryData();\n  }\n\n}\n","import { Directive, ElementRef, Host, Input, OnDestroy, Optional, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { OFormServiceComponent } from '../components/input/o-form-service-component.class';\n\nexport const DEFAULT_INPUTS_O_LOCKER = [\n  'oLockerMode',\n  /*Default:250ms*/\n  'oLockerDelay'\n];\n\n@Directive({\n  selector: '[oLocker]',\n  inputs: DEFAULT_INPUTS_O_LOCKER\n})\n\nexport class OLockerDirective implements OnDestroy {\n\n  private loadingParentDiv;\n  private componentDiv;\n\n  private _oLockerMode = 'load';\n  private subscription: Subscription;\n\n  constructor(\n    private element: ElementRef,\n    private renderer: Renderer2,\n    @Optional() @Host() private parent: OFormServiceComponent\n  ) {\n    if (parent) {\n      this.subscription = parent.loadingSubject.subscribe(x => this.manageLockerMode(x));\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  private manageLockerMode(loading: boolean): void {\n    if (this._oLockerMode === 'disable') {\n      this.manageDisableMode(loading);\n    } else {\n      this.manageLoadMode(loading);\n    }\n  }\n\n  private manageDisableMode(loading: boolean): void {\n    if (loading) {\n      this.parent.enabled = false;\n    } else {\n      this.parent.enabled = true;\n    }\n  }\n\n  private manageLoadMode(loading: boolean): void {\n    if (loading) {\n      this.addLoading();\n    } else {\n      this.removeLoading();\n    }\n  }\n\n  private addLoading(): void {\n    this.componentDiv = this.element.nativeElement.children[0]; // set opacity in componentDiv\n    this.loadingParentDiv = this.renderer.createElement('div');\n    const loaderChild1 = this.renderer.createElement('div');\n    const loaderChild2 = this.renderer.createElement('div');\n    const loaderChild3 = this.renderer.createElement('div');\n    const loaderChild4 = this.renderer.createElement('div');\n    this.renderer.appendChild(this.loadingParentDiv, loaderChild4);\n    this.renderer.appendChild(this.loadingParentDiv, loaderChild3);\n    this.renderer.appendChild(this.loadingParentDiv, loaderChild2);\n    this.renderer.appendChild(this.loadingParentDiv, loaderChild1);\n    this.renderer.insertBefore(this.element.nativeElement, this.loadingParentDiv, this.componentDiv);\n    this.renderer.addClass(this.loadingParentDiv, 'o-loading');\n    this.renderer.addClass(this.element.nativeElement, 'relative');\n    this.renderer.setStyle(this.componentDiv, 'opacity', '0.6');\n  }\n\n  private removeLoading(): void {\n    if (this.loadingParentDiv) {\n      this.renderer.removeChild(this.element.nativeElement, this.loadingParentDiv);\n      this.renderer.removeClass(this.element.nativeElement, 'relative');\n      this.renderer.removeStyle(this.componentDiv, 'opacity');\n    }\n  }\n\n  @Input()\n  set oLockerMode(value: 'load' | 'disabled') {\n    this._oLockerMode = value;\n  }\n\n  @Input()\n  set oLockerDelay(value: number) {\n    this.parent.delayLoad = value;\n  }\n\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n  selector: '[oFileDragAndDrop]'\n})\nexport class OFileDragAndDropDirective {\n\n  @Output() private onFileDropped: EventEmitter<File[]> = new EventEmitter();\n  @HostBinding('class.o-file-dragging') fileDragging: boolean;\n\n  @HostListener('dragover', ['$event']) public onDragOver(evt) {\n    evt.preventDefault();\n    evt.stopPropagation();\n    this.fileDragging = true;\n  }\n\n  @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\n    evt.preventDefault();\n    evt.stopPropagation();\n    this.fileDragging = false;\n  }\n\n  @HostListener('drop', ['$event']) public onDrop(evt) {\n    evt.preventDefault();\n    evt.stopPropagation();\n    this.fileDragging = false;\n    const files = evt.dataTransfer.files;\n    if (files.length > 0) {\n      this.onFileDropped.emit(files);\n    }\n  }\n}\n","import { Directive, ElementRef, Renderer2 } from '@angular/core';\n\n@Directive({\n  selector: '[oHidden]'\n})\nexport class OHiddenDirective {\n  constructor(el: ElementRef, renderer: Renderer2) {\n    renderer.setStyle(el.nativeElement, 'display', 'none');\n  }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[oMatPrefix]'\n})\nexport class OMatPrefix { }\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[oMatSuffix]'\n})\nexport class OMatSuffix { }\n","import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\n\nexport type OTabMode = 'ontimize' | 'material';\n\n@Directive({\n  selector: '[oTabGroup]'\n})\nexport class OTabGroupDirective {\n\n  protected static OTabModes = {\n    ontimize: 'o-tab-ontimize',\n    material: 'o-tab-material'\n  };\n\n  protected _mode: OTabMode = 'ontimize';\n  protected _defaultMode: OTabMode = 'ontimize';\n\n  @Input('oTabGroup')\n  set mode(mode: OTabMode) {\n    this._mode = mode;\n    this.applyMode();\n  }\n\n  get mode(): OTabMode {\n    return this._mode;\n  }\n\n  constructor(protected renderer: Renderer2, protected el: ElementRef) { }\n\n  protected applyMode(mode?: OTabMode): void {\n    this.renderer.removeClass(this.el.nativeElement, OTabGroupDirective.OTabModes.material);\n    this.renderer.removeClass(this.el.nativeElement, OTabGroupDirective.OTabModes.ontimize);\n    this.renderer.addClass(this.el.nativeElement, OTabGroupDirective.OTabModes[this.mode || this._defaultMode]);\n  }\n\n}\n","import { OListItemDirective } from '../components/list/list-item/o-list-item.directive';\nimport { InputRegulateDirective } from '../directives/input-regulate.directive';\nimport { OKeyboardListenerDirective } from '../directives/keyboard-listener.directive';\nimport { OLockerDirective } from '../directives/locker.directive';\nimport { OFileDragAndDropDirective } from '../directives/o-file-drag-and-drop.directive';\nimport { OHiddenDirective } from '../directives/o-hidden.directive';\nimport { OMatErrorDirective } from '../directives/o-mat-error.directive';\nimport { OMatPrefix } from '../directives/o-mat-prefix.directive';\nimport { OMatSuffix } from '../directives/o-mat-suffix.directive';\nimport { OTabGroupDirective } from '../directives/o-tab-group.directive';\n\nexport const ONTIMIZE_DIRECTIVES = [\n  // Ontimize directives...\n  OKeyboardListenerDirective,\n  OListItemDirective,\n  OTabGroupDirective,\n  OLockerDirective,\n  OHiddenDirective,\n  OMatErrorDirective,\n  OFileDragAndDropDirective,\n  OMatPrefix,\n  OMatSuffix,\n  InputRegulateDirective\n];\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'columnsfilter'\n})\n\nexport class ColumnsFilterPipe implements PipeTransform {\n\n  filterValue: string;\n  filterColumns: Array<string>;\n\n  transform(value: Array<any>, args: any): any {\n    if (!args || args.length <= 1) {\n      return value;\n    }\n\n    this.filterValue = args['filtervalue'] ? args['filtervalue'] : '';\n    this.filterColumns = args['filtercolumns'];\n\n    if (!this.filterColumns || !this.filterValue || this.filterValue.length === 0) {\n      return value;\n    }\n\n    if (value === undefined || value === null) {\n      return value;\n    }\n\n    const that = this;\n    return value.filter((item) => {\n      for (let i = 0; i < that.filterColumns.length; i++) {\n        const colName = that.filterColumns[i];\n        if (this._isBlank(colName)) {\n          continue;\n        }\n        let origValue = item[colName];\n        if (origValue) {\n          origValue = origValue.toString();\n          if (this._isBlank(origValue)) {\n            continue;\n          }\n\n          if (origValue.toUpperCase().indexOf(that.filterValue.toUpperCase()) > -1) {\n            return item;\n          }\n        }\n      }\n    });\n  }\n\n  _isBlank(value: string): boolean {\n    if (value === undefined || value === null\n      || value.length === 0) {\n      return true;\n    }\n    return false;\n  }\n\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { IRealPipeArgument } from '../pipes';\nimport { Util } from '../util/util';\nimport { OTranslateService } from './translate/o-translate.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NumberService {\n\n  public static DEFAULT_DECIMAL_DIGITS = 2;\n\n  protected minDecimalDigits: number;\n  protected maxDecimalDigits: number;\n  protected locale: string;\n\n  protected translateService: OTranslateService;\n\n  constructor(protected injector: Injector) {\n\n    this.translateService = this.injector.get(OTranslateService);\n    // TODO: initialize from config\n    this.minDecimalDigits = NumberService.DEFAULT_DECIMAL_DIGITS;\n    this.maxDecimalDigits = NumberService.DEFAULT_DECIMAL_DIGITS;\n\n    this.locale = this.translateService.getCurrentLang()\n    this.translateService.onLanguageChanged.subscribe(() =>\n      this.locale = this.translateService.getCurrentLang()\n    );\n  }\n\n  getIntegerValue(value: any, args: any) {\n    const grouping = args ? args.grouping : undefined;\n    if (!Util.isDefined(value)) {\n      return value;\n    }\n    const thousandSeparator = args ? args.thousandSeparator : undefined;\n    const locale = args ? args.locale : undefined;\n    // Ensure value is an integer\n    const intValue: any = parseInt(value, 10);\n    if (isNaN(intValue)) {\n      return void 0;\n    }\n    // Format value\n    let formattedIntValue;\n    if (Util.isDefined(locale) || !Util.isDefined(thousandSeparator)) {\n      formattedIntValue = new Intl.NumberFormat(Util.isDefined(locale) ? locale : this.locale).format(intValue);\n    } else {\n      formattedIntValue = String(intValue).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n    }\n    return formattedIntValue;\n  }\n\n  getRealValue(value: any, args: IRealPipeArgument) {\n    if (!Util.isDefined(value)) {\n      return value;\n    }\n\n    const locale = args ? args.locale : undefined;\n    const thousandSeparator = args ? args.thousandSeparator : undefined;\n    const decimalSeparator = args ? args.decimalSeparator : undefined;\n    const grouping = args ? args.grouping : false;\n\n    const minDecimalDigits = args ? args.minDecimalDigits : this.minDecimalDigits;\n    const maxDecimalDigits = args ? args.maxDecimalDigits : this.maxDecimalDigits;\n\n    let formattedRealValue = value;\n    const useIntlNumberFormat: boolean = Util.isDefined(locale) || (!Util.isDefined(thousandSeparator) || !Util.isDefined(decimalSeparator));\n    if (useIntlNumberFormat) {\n      formattedRealValue = args.truncate ? this.truncate(value, maxDecimalDigits) : null;\n      if (!Util.isDefined(formattedRealValue)) {\n        let formatterArgs: any = {\n          minimumFractionDigits: minDecimalDigits,\n          maximumFractionDigits: maxDecimalDigits,\n          useGrouping: grouping\n        };\n        formattedRealValue = new Intl.NumberFormat(Util.isDefined(locale) ? locale : this.locale, formatterArgs).format(value);\n      }\n    } else {\n      formattedRealValue = this.parseRealValue(value, maxDecimalDigits, thousandSeparator, decimalSeparator, grouping);\n    }\n    return formattedRealValue;\n  }\n\n  getPercentValue(value: any, args: any) {\n    const valueBase = args ? args.valueBase : undefined;\n    let parsedValue = value;\n    switch (valueBase) {\n      case 100:\n        break;\n      case 1:\n      default:\n        parsedValue = parsedValue * 100;\n        break;\n    }\n    const formattedPercentValue = this.getRealValue(parsedValue, args) + ' %';\n    return formattedPercentValue;\n  }\n\n  private truncate(value: number, maxDecimals: number): string {\n    const stringValue = String(value);\n    const splittedValue = stringValue.split('.');\n    const decimalsLength = Util.isDefined(splittedValue[1]) ? splittedValue[1].length : null;\n    if (decimalsLength > maxDecimals) {\n      return stringValue.slice(0, splittedValue[0].length + 1 + maxDecimals);\n    }\n    return null;\n  }\n\n  private parseRealValue(value: any, maxDecimalDigits: number, thousandSeparator: string, decimalSeparator: string, grouping: boolean): string {\n    let result = value;\n    const realValue = parseFloat(value);\n    if (!isNaN(realValue)) {\n      result = String(realValue);\n      let tmpStr = realValue.toFixed(maxDecimalDigits);\n      tmpStr = tmpStr.replace('.', decimalSeparator);\n      if (grouping) {\n        const parts = tmpStr.split(decimalSeparator);\n        if (parts.length > 0) {\n          parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n          result = parts.join(decimalSeparator);\n        }\n      } else {\n        result = tmpStr;\n      }\n    }\n    return result;\n  }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { Util } from '../util/util';\nimport { NumberService } from './number.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CurrencyService {\n\n  public static DEFAULT_CURRENCY_SYMBOL = '$';\n  public static DEFAULT_CURRENCY_SYMBOL_POSITION = 'left';\n\n  protected _numberService: NumberService;\n\n  protected _symbol: string;\n  protected _symbolPosition: string;\n\n  constructor(protected injector: Injector) {\n    this._numberService = this.injector.get(NumberService);\n    // TODO: initialize from config\n    this._symbol = CurrencyService.DEFAULT_CURRENCY_SYMBOL;\n    this._symbolPosition = CurrencyService.DEFAULT_CURRENCY_SYMBOL_POSITION;\n  }\n\n  get symbol(): string {\n    return this._symbol;\n  }\n\n  set symbol(value: string) {\n    this._symbol = value;\n  }\n\n  get symbolPosition(): string {\n    return this._symbolPosition;\n  }\n\n  set symbolPosition(value: string) {\n    this._symbolPosition = value;\n  }\n\n  getCurrencyValue(value: any, args: any) {\n    let symbol = args ? args.currencySimbol : undefined;\n    let symbolPosition = args ? args.currencySymbolPosition : undefined;\n\n    if (!Util.isDefined(symbol)) {\n      symbol = this._symbol;\n    }\n    if (!Util.isDefined(symbolPosition)) {\n      symbolPosition = this._symbolPosition;\n    }\n    let currencyValue = this._numberService.getRealValue(value, args);\n    switch (symbolPosition) {\n      case 'left':\n        currencyValue = symbol + ' ' + currencyValue;\n        break;\n      case 'right':\n        currencyValue = currencyValue + ' ' + symbol;\n        break;\n    }\n    return currencyValue;\n  }\n\n}\n","import { Injector, Pipe, PipeTransform } from '@angular/core';\nimport { NumberService } from '../services/number.service';\n\nexport interface IIntegerPipeArgument {\n  grouping?: boolean;\n  thousandSeparator?: string;\n  locale?: string;\n}\n\n@Pipe({\n  name: 'oInteger',\n  pure: false\n})\n\nexport class OIntegerPipe implements PipeTransform {\n\n  protected numberService: NumberService;\n\n  constructor(protected injector: Injector) {\n    this.numberService = this.injector.get(NumberService);\n  }\n\n  transform(text: string, args: IIntegerPipeArgument): string {\n    return this.numberService.getIntegerValue(text, args);\n  }\n}\n","import { Injector, Pipe, PipeTransform } from '@angular/core';\n\nimport { OIntegerPipe } from './o-integer.pipe';\n\nexport interface IRealPipeArgument {\n  grouping?: boolean;\n  thousandSeparator?: string;\n  locale?: string;\n  decimalSeparator?: string;\n  minDecimalDigits?: number;\n  maxDecimalDigits?: number;\n  truncate?: boolean;\n}\n\n@Pipe({\n  name: 'oReal',\n  pure: false\n})\nexport class ORealPipe extends OIntegerPipe implements PipeTransform {\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  transform(text: string, args: IRealPipeArgument): string {\n    return this.numberService.getRealValue(text, args);\n  }\n\n}\n","import { Injector, Pipe, PipeTransform } from '@angular/core';\nimport { CurrencyService } from '../services/currency.service';\nimport { ORealPipe } from './o-real.pipe';\n\nexport interface ICurrencyPipeArgument {\n  currencySimbol?: string;\n  currencySymbolPosition?: string;\n  grouping?: boolean;\n  thousandSeparator?: string;\n  decimalSeparator?: string;\n  minDecimalDigits?: number;\n  maxDecimalDigits?: number;\n}\n\n@Pipe({\n  name: 'oCurrency',\n  pure: false\n})\nexport class OCurrencyPipe extends ORealPipe implements PipeTransform {\n\n  protected currencyService: CurrencyService;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.currencyService = this.injector.get(CurrencyService);\n  }\n\n  transform(text: string, args: ICurrencyPipeArgument): string {\n    return this.currencyService.getCurrencyValue(text, args);\n  }\n}\n","import { Injector, Pipe, PipeTransform, Type } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';\n\n@Pipe({\n  name: 'oSafe'\n})\nexport class OSafePipe implements PipeTransform {\n  protected sanitizer: DomSanitizer;\n  constructor(protected injector: Injector) {\n    this.sanitizer = this.injector.get<DomSanitizer>(DomSanitizer);\n  }\n\n  public transform(value: any, type: string): SafeHtml | SafeUrl | SafeResourceUrl {\n    switch (type) {\n      case 'html': return this.sanitizer.bypassSecurityTrustHtml(value);\n      case 'url': return this.sanitizer.bypassSecurityTrustUrl(value);\n      case 'resourceUrl': return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n      default: throw new Error(`Invalid safe type specified: ${type}`);\n    }\n  }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { OSafePipe } from '../pipes/o-safe.pipe';\nimport { Util } from '../util/util';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class IconService {\n  public static DEFAULT_ICON_POSITION = 'left';\n\n  protected _iconPosition: string;\n  protected oSafePipe: OSafePipe;\n\n  constructor(protected injector: Injector) {\n    this._iconPosition = IconService.DEFAULT_ICON_POSITION;\n    this.oSafePipe = new OSafePipe(this.injector)\n  }\n\n  get iconPosition(): string {\n    return this._iconPosition;\n  }\n\n  set iconPosition(value: string) {\n    this._iconPosition = value;\n  }\n\n  getIconValue(value: any, args: any): SafeHtml {\n    let iconPosition = args ? args.iconPosition : undefined;\n    if (!Util.isDefined(iconPosition)) {\n      iconPosition = this._iconPosition;\n    }\n    let iconValue = value;\n    let icon = \"<mat-icon class='mat-24 mat-icon notranslate material-icons mat-icon-no-color' role='img' aria-hidden='true'>\" + args.icon + \"</mat-icon>\";\n    switch (iconPosition) {\n      case 'left':\n        iconValue = icon + iconValue;\n        break;\n      case 'right':\n        iconValue = iconValue + icon;\n        break;\n    }\n    return this.oSafePipe.transform(iconValue, 'html');\n  }\n\n}\n","import { Injector, Pipe, PipeTransform } from '@angular/core';\n\nimport { IconService } from '../services/icon.service';\n\nexport interface IIconPipeArgument {\n  iconPosition?: string;\n  icon: string;\n}\n\n@Pipe({\n  name: 'oIcon',\n  pure: false\n})\nexport class OIconPipe implements PipeTransform {\n\n  protected iconService: IconService;\n  constructor(protected injector: Injector) {\n    this.iconService = this.injector.get(IconService);\n  }\n\n  transform(text: any, args: IIconPipeArgument): any {\n    return this.iconService.getIconValue(text, args);\n  }\n}\n","import { Injector, Pipe, PipeTransform } from '@angular/core';\n\nimport { MomentService } from '../services/moment.service';\n\nexport interface IMomentPipeArgument {\n  format?: string;\n}\n\n@Pipe({\n  name: 'oMoment'\n})\n\nexport class OMomentPipe implements PipeTransform {\n\n  protected momentService: MomentService;\n\n  constructor(protected injector: Injector) {\n    this.momentService = this.injector.get(MomentService);\n  }\n\n  transform(value: any, args: IMomentPipeArgument) {\n    const format = args.format;\n    return this.momentService.parseDate(value, format);\n  }\n}\n","import { Injector, Pipe, PipeTransform } from '@angular/core';\nimport { ORealPipe } from './o-real.pipe';\n\nexport type OPercentageValueBaseType = 1 | 100;\n\nexport interface IPercentPipeArgument {\n  grouping?: boolean;\n  thousandSeparator?: string;\n  locale?: string;\n  decimalSeparator?: string;\n  minDecimalDigits?: number;\n  maxDecimalDigits?: number;\n  valueBase?: OPercentageValueBaseType;\n}\n\n@Pipe({\n  name: 'oPercent',\n  pure: false\n})\nexport class OPercentPipe extends ORealPipe implements PipeTransform {\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  transform(text: string, args: IPercentPipeArgument): string {\n    if (args && args.valueBase) {\n      args.valueBase = this.parseValueBase(args.valueBase);\n    }\n    return this.numberService.getPercentValue(text, args);\n  }\n\n  protected parseValueBase(value: OPercentageValueBaseType): OPercentageValueBaseType {\n    const parsed = parseInt(value as any, 10);\n    if (parsed === 1 || parsed === 100) {\n      return parsed;\n    }\n    return 1;\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'orderBy', pure: false })\n\nexport class OrderByPipe implements PipeTransform {\n\n  static _orderByComparator(a: any, b: any): number {\n\n    if ((isNaN(parseFloat(a)) || !isFinite(a)) || (isNaN(parseFloat(b)) || !isFinite(b))) {\n      // Isn't a number so lowercase the string to properly compare\n      if (a.toLowerCase() < b.toLowerCase()) { return -1; }\n      if (a.toLowerCase() > b.toLowerCase()) { return 1; }\n    } else {\n      // Parse strings as numbers to compare properly\n      if (parseFloat(a) < parseFloat(b)) { return -1; }\n      if (parseFloat(a) > parseFloat(b)) { return 1; }\n    }\n\n    return 0; // equal each other\n  }\n\n  transform(input: any, [config = '+']): any {\n\n    if (!Array.isArray(input)) { return input; }\n\n    if (!Array.isArray(config) || (Array.isArray(config) && config.length === 1)) {\n      const propertyToCheck: string = !Array.isArray(config) ? config : config[0];\n      const desc = propertyToCheck.substr(0, 1) === '-';\n\n      // Basic array\n      if (!propertyToCheck || propertyToCheck === '-' || propertyToCheck === '+') {\n        return !desc ? input.sort() : input.sort().reverse();\n      } else {\n        const property: string = propertyToCheck.substr(0, 1) === '+' || propertyToCheck.substr(0, 1) === '-'\n          ? propertyToCheck.substr(1)\n          : propertyToCheck;\n\n        return input.sort((a: any, b: any) => {\n          return !desc\n            ? OrderByPipe._orderByComparator(a[property], b[property])\n            : -OrderByPipe._orderByComparator(a[property], b[property]);\n        });\n      }\n    } else {\n      // Loop over property of the array in order and sort\n      return input.sort((a: any, b: any) => {\n        for (let i: number = 0; i < config.length; i++) {\n          const desc = config[i].substr(0, 1) === '-';\n          const property = config[i].substr(0, 1) === '+' || config[i].substr(0, 1) === '-'\n            ? config[i].substr(1)\n            : config[i];\n\n          let comparison = !desc\n            ? OrderByPipe._orderByComparator(a[property], b[property])\n            : -OrderByPipe._orderByComparator(a[property], b[property]);\n\n          // Don't return 0 yet in case of needing to sort by next property\n          if (comparison = 0) { return comparison; }\n        }\n\n        return 0; // equal each other\n      });\n    }\n  }\n}\n\n","import { Component, Injector, ViewEncapsulation } from '@angular/core';\nimport { NavigationExtras, Router } from '@angular/router';\n\nimport { NavigationService, ONavigationItem } from '../../../services/navigation.service';\nimport { Codes } from '../../../util/codes';\n\n@Component({\n  selector: 'o-error-403',\n  templateUrl: './o-error-403.component.html',\n  styleUrls: ['./o-error-403.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-error-403]': 'true'\n  }\n})\nexport class Error403Component {\n\n  protected router: Router;\n  protected navigationService: NavigationService;\n  protected lastPageData: ONavigationItem;\n\n  constructor(protected injector: Injector) {\n    this.router = this.injector.get(Router);\n    this.navigationService = this.injector.get(NavigationService);\n    this.lastPageData = this.navigationService.getLastItem();\n  }\n\n  onNavigateBackClick() {\n    const extras: NavigationExtras = {};\n    let route: string = '';\n    if (this.lastPageData) {\n      extras[Codes.QUERY_PARAMS] = this.lastPageData.queryParams;\n      route = this.lastPageData.url;\n    }\n    this.router.navigate([route], extras);\n  }\n}\n\n","<div fxFlex fxFlexFill fxLayout=\"column\" fxLayoutAlign=\"center center\">\n  {{ 'MESSAGES.ERROR_403_TEXT' | oTranslate }}\n  <button color=\"accent\" type=\"button\" mat-raised-button (click)=\"onNavigateBackClick()\">\n    {{ 'MESSAGES.ERROR_403_TEXT_BUTTON' | oTranslate }}\n  </button>\n</div>","import { SelectionModel } from '@angular/cdk/collections';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Injector,\n  OnInit,\n  Type,\n  ViewChild\n} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatListOption, MatSelectionList } from '@angular/material/list';\n\nimport { DialogService } from '../../../../services/dialog.service';\nimport { OTableFiltersStatus } from '../../../../types/table/o-table-filter-status.type';\n\n@Component({\n  selector: 'o-load-filter-dialog',\n  templateUrl: './o-load-filter-dialog.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OLoadFilterDialogComponent implements OnInit {\n\n  @ViewChild(MatSelectionList, { static: true }) filterList: MatSelectionList;\n\n  filters: OTableFiltersStatus[] = [];\n\n  onDelete: EventEmitter<string> = new EventEmitter();\n\n  protected dialogService: DialogService;\n  protected cd: ChangeDetectorRef;\n\n  constructor(\n    public dialogRef: MatDialogRef<OLoadFilterDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) data: OTableFiltersStatus[],\n    protected injector: Injector\n  ) {\n    this.loadFilters(data);\n    this.dialogService = this.injector.get<DialogService>(DialogService as Type<DialogService>);\n    try {\n      this.cd = this.injector.get<ChangeDetectorRef>(ChangeDetectorRef as Type<ChangeDetectorRef>);\n    } catch (e) {\n      // no parent form\n    }\n  }\n\n  ngOnInit(): void {\n    this.filterList.selectedOptions = new SelectionModel<MatListOption>(false);\n  }\n\n  loadFilters(filters: OTableFiltersStatus[]): void {\n    this.filters = filters;\n  }\n\n  getSelectedFilterName(): string {\n    const selected: MatListOption[] = this.filterList.selectedOptions.selected;\n    return selected.length ? selected[0].value : void 0;\n  }\n\n  removeFilter(filterName: string): void {\n    this.dialogService.confirm('CONFIRM', 'TABLE.DIALOG.CONFIRM_REMOVE_FILTER').then(result => {\n      if (result) {\n        this.onDelete.emit(filterName);\n        this.cd.detectChanges();\n      }\n    });\n  }\n\n}\n","<span mat-dialog-title>{{ 'TABLE.BUTTONS.FILTER_LOAD' | oTranslate }}</span>\n<mat-dialog-content fxLayout=\"column\">\n  <div mat-subheader>{{ 'TABLE.DIALOG.LOAD_FILTER' | oTranslate }}</div>\n  <mat-selection-list #filterList class=\"o-table-load-filter-dialog-list\">\n    <mat-list-option *ngFor=\"let filter of filters \" [value]=\"filter.name\" checkboxPosition=\"before\">\n      <span matListItemTitle class=\"o-table-load-filter-dialog-list-title\">{{ filter.name }}</span>\n      <span matListItemLine>{{ filter.description }}</span>\n    </mat-list-option>\n    <mat-list-item *ngIf=\"filters.length === 0\">\n      <span class=\"empty-filter-list\">{{ 'TABLE.DIALOG.EMPTY_FILTER_LIST' | oTranslate }}</span>\n    </mat-list-item>\n  </mat-selection-list>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n  <button type=\"button\" mat-stroked-button [disabled]=\"filterList.selectedOptions.selected.length!==1\"\n    (click)=\"removeFilter(filterList.selectedOptions.selected[0].value)\" class=\"o-button-danger\">{{ 'DELETE' | oTranslate }}</button>\n  <span fxFlex></span>\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"true\" [disabled]=\"filterList.selectedOptions.selected.length!==1\"\n    class=\"o-button-primary\">\n    {{'TABLE.BUTTONS.APPLY' | oTranslate }}\n  </button>\n</mat-dialog-actions>\n","import { Injector, QueryList, ViewChildren, Directive } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nimport { OMatErrorDirective } from '../../../../directives/o-mat-error.directive';\nimport { OMatErrorOptions } from '../../../../types/o-mat-error.type';\nimport { Codes } from '../../../../util/codes';\nimport { ErrorsUtils } from '../../../../util/errors';\nimport { Util } from '../../../../util/util';\n\n@Directive()\nexport class OTableBaseDialogClass {\n\n  protected errorOptions: OMatErrorOptions;\n  @ViewChildren(OMatErrorDirective)\n  protected oMatErrorChildren: QueryList<OMatErrorDirective>;\n  protected formControl: AbstractControl;\n\n  constructor(protected injector: Injector) {\n    this.errorOptions = ErrorsUtils.getErrorOptions(this.injector);\n  }\n\n  protected setFormControl(formControl: AbstractControl) {\n    this.formControl = formControl;\n  }\n\n  get tooltipClass(): string {\n    let result: string;\n    const liteError = this.errorOptions.type === Codes.O_MAT_ERROR_LITE;\n    if (liteError && Util.isDefined(this.formControl) && this.formControlHasErrors()) {\n      result = `o-tooltip o-mat-error`;\n    }\n    return result;\n  }\n\n  get tooltipText(): string {\n    let result: string;\n    const liteError = this.errorOptions.type === Codes.O_MAT_ERROR_LITE;\n    if (liteError && this.formControlHasErrors() && this.oMatErrorChildren && this.oMatErrorChildren.length > 0) {\n      result = this.oMatErrorChildren\n        .filter((oMatError: OMatErrorDirective) => Util.isDefined(oMatError.text))\n        .map((oMatError: OMatErrorDirective) => oMatError.text)\n        .join('\\n');\n    }\n    return result;\n  }\n\n  protected formControlHasErrors(): boolean {\n    return Util.isDefined(this.formControl) && this.formControl.touched && Util.isDefined(this.formControl.errors);\n  }\n\n  public hasError(fControl: AbstractControl, error: string): boolean {\n    return fControl && fControl.touched && fControl.hasError(error);\n  }\n}\n","import { ChangeDetectionStrategy, Component, Inject, Injector } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { OTableBaseDialogClass } from '../../../../components/table/extensions/dialog/o-table-base-dialog.class';\nimport { OFilterDefinition } from '../../../../types/o-filter-definition.type';\n\n@Component({\n  selector: 'o-store-filter-dialog',\n  templateUrl: './o-store-filter-dialog.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OStoreFilterDialogComponent extends OTableBaseDialogClass {\n\n  filterNames: Array<string> = [];\n  formGroup: UntypedFormGroup = new UntypedFormGroup({\n    name: new UntypedFormControl('', [\n      Validators.required,\n      this.filterNameValidator.bind(this)\n    ]),\n    description: new UntypedFormControl('')\n  });\n\n  constructor(\n    public dialogRef: MatDialogRef<OStoreFilterDialogComponent>,\n    protected injector: Injector,\n    @Inject(MAT_DIALOG_DATA) data: Array<string>\n  ) {\n    super(injector);\n    this.setFormControl(this.formGroup.get('name'));\n    this.loadFilterNames(data);\n  }\n\n  loadFilterNames(filterNames): void {\n    this.filterNames = filterNames;\n  }\n\n  getFilterAttributes(): OFilterDefinition {\n    return this.formGroup.value;\n  }\n\n  protected filterNameValidator(control: UntypedFormControl) {\n    const ctrlValue: string = control.value;\n    if (this.filterNames.indexOf(ctrlValue) !== -1) {\n      return { filterNameAlreadyExists: true };\n    }\n    return {};\n  }\n\n}\n","<span mat-dialog-title>{{ 'TABLE.BUTTONS.SAVE_FILTER' | oTranslate }}</span>\n\n<mat-dialog-content>\n  <div mat-subheader>{{ 'TABLE.DIALOG.SAVE_FILTER' | oTranslate }}</div>\n  <form #form [formGroup]=\"formGroup\" fxLayout=\"column\">\n    <mat-form-field>\n      <input matInput [matTooltip]=\"tooltipText\" [matTooltipClass]=\"tooltipClass\" placeholder=\"{{ 'TABLE.DIALOG.FILTER_NAME' | oTranslate }}\"\n        formControlName=\"name\" required>\n      <mat-error *oMatError=\"hasError(formGroup.controls['name'], 'filterNameAlreadyExists')\">\n        {{ 'TABLE.DIALOG.FILTER_NAME_ALREADY_EXISTS' | oTranslate }}\n      </mat-error>\n      <mat-error *oMatError=\"hasError(formGroup.controls['name'], 'required')\">\n        {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n      </mat-error>\n    </mat-form-field>\n    <mat-form-field class=\"example-full-width\">\n      <textarea matInput placeholder=\"{{ 'TABLE.DIALOG.FILTER_DESCRIPTION' | oTranslate }}\" formControlName=\"description\" rows=\"4\"\n        cols=\"50\"></textarea>\n    </mat-form-field>\n  </form>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"true\" [disabled]=\"!formGroup.valid\" class=\"o-button-primary\">\n    {{'SAVE' | oTranslate }}\n  </button>\n</mat-dialog-actions>\n","import { Component, forwardRef, Inject, Injector, OnInit, Optional } from '@angular/core';\n\nimport { OValidatorComponent } from './o-validator.component';\n\nexport const DEFAULT_INPUTS_O_ERROR = [\n  'name',\n  'text'\n];\n\n@Component({\n  selector: 'o-error',\n  template: ' ',\n  inputs: DEFAULT_INPUTS_O_ERROR\n})\nexport class OErrorComponent implements OnInit {\n\n  name: string;\n  text: string;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OValidatorComponent)) protected oValidator: OValidatorComponent,\n    protected injector: Injector\n  ) {\n  }\n\n  ngOnInit() {\n    this.registerValidatorError();\n  }\n\n  registerValidatorError() {\n    if (this.oValidator) {\n      this.oValidator.registerError(this);\n    }\n  }\n\n  getName(): string {\n    return this.name;\n  }\n\n  getText(): string {\n    return this.text;\n  }\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { Observable, Observer } from 'rxjs';\nimport { OSafePipe } from '../pipes/o-safe.pipe';\n\n@Injectable()\nexport class OntimizeMatIconRegistry {\n\n  public static ONTIMIZE_ICON_SET_PATH = 'assets/svg/ontimize-icon-set.svg';\n  public static ONTIMIZE_NAMESPACE = 'ontimize';\n  protected oSafePipe: OSafePipe;\n  constructor(\n    protected matIconRegistry: MatIconRegistry,\n    protected injector: Injector\n  ) {\n    this.oSafePipe = new OSafePipe(injector);\n  }\n\n  initialize() {\n    this.matIconRegistry.addSvgIconSetInNamespace(OntimizeMatIconRegistry.ONTIMIZE_NAMESPACE,\n      this.oSafePipe.transform(OntimizeMatIconRegistry.ONTIMIZE_ICON_SET_PATH, 'resourceUrl'));\n  }\n\n  addOntimizeSvgIcon(iconName: string, url: string): MatIconRegistry {\n    this.matIconRegistry.addSvgIconInNamespace(OntimizeMatIconRegistry.ONTIMIZE_NAMESPACE, iconName,\n      this.oSafePipe.transform(url, 'resourceUrl'));\n    return this.matIconRegistry;\n  }\n\n  getSVGElement(iconName: string): Observable<SVGElement> {\n    return this.matIconRegistry.getNamedSvgIcon(iconName, OntimizeMatIconRegistry.ONTIMIZE_NAMESPACE);\n  }\n\n  existsIcon(iconName: string): Observable<boolean> {\n    const self = this;\n    return new Observable<boolean>((observer: Observer<boolean>) => {\n      self.getSVGElement(iconName).subscribe((value: SVGElement) => {\n        observer.next(true);\n      }, error => {\n        observer.next(false);\n      }, () => observer.complete());\n    });\n  }\n}\n","import { MatDateFormats } from '@angular/material/core';\n\nexport class OntimizeMatDateFormats {\n\n  protected DEFAULT_DATE_FORMATS: MatDateFormats = {\n    parse: { dateInput: 'L' },\n    display: { dateInput: 'L', monthYearLabel: 'Y', dateA11yLabel: 'LL', monthYearA11yLabel: 'MMMM Y' }\n  };\n\n  public factory(): any {\n    return this.DEFAULT_DATE_FORMATS;\n  }\n}\n\nexport function dateFormatFactory() {\n  return new OntimizeMatDateFormats().factory();\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MAT_DATE_FORMATS, MatRippleModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { MatMomentDateModule } from '@angular/material-moment-adapter';\n\nimport { OntimizeMatIconRegistry } from '../../services/ontimize-icon-registry.service';\nimport { dateFormatFactory } from './date/mat-date-formats.factory';\n\nconst MATERIAL_MODULES = [\n  MatAutocompleteModule,\n  MatButtonModule,\n  MatButtonToggleModule,\n  MatCardModule,\n  MatChipsModule,\n  MatCheckboxModule,\n  MatDatepickerModule,\n  MatDialogModule,\n  MatExpansionModule,\n  MatGridListModule,\n  MatIconModule,\n  MatInputModule,\n  MatFormFieldModule,\n  MatListModule,\n  MatMenuModule,\n  MatProgressBarModule,\n  MatProgressSpinnerModule,\n  MatRadioModule,\n  MatRippleModule,\n  MatSelectModule,\n  MatSidenavModule,\n  MatSliderModule,\n  MatSlideToggleModule,\n  MatSnackBarModule,\n  MatTabsModule,\n  MatToolbarModule,\n  MatTooltipModule,\n  MatMomentDateModule,\n  MatTableModule,\n  MatPaginatorModule,\n  MatSortModule,\n  OverlayModule,\n  ScrollingModule,\n  MatBadgeModule\n  // OverlayModule,\n  // PortalModule,\n  // RtlModule,\n  // StyleModule,\n  // A11yModule,\n  // PlatformModule,\n  // MatCommonModule,\n  // ObserveContentModule\n];\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  exports: MATERIAL_MODULES,\n  providers: [\n    //   {\n    //   provide: DateAdapter,\n    //   useClass: OntimizeMomentDateAdapter,\n    //   deps: [MAT_DATE_LOCALE]\n    // },\n    {\n      provide: MAT_DATE_FORMATS,\n      useFactory: dateFormatFactory\n    }, {\n      provide: OntimizeMatIconRegistry,\n      useClass: OntimizeMatIconRegistry\n    }]\n})\nexport class OCustomMaterialModule { }\n","import { IsEmptyValuePipe } from './../pipes/is-empty-value.pipe';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { ONTIMIZE_DIRECTIVES } from '../config/o-directives';\nimport { ColumnsFilterPipe } from '../pipes/columns-filter.pipe';\nimport { OCurrencyPipe } from '../pipes/o-currency.pipe';\nimport { OIconPipe } from '../pipes/o-icon.pipe';\nimport { OIntegerPipe } from '../pipes/o-integer.pipe';\nimport { OMomentPipe } from '../pipes/o-moment.pipe';\nimport { OPercentPipe } from '../pipes/o-percentage.pipe';\nimport { ORealPipe } from '../pipes/o-real.pipe';\nimport { OSafePipe } from '../pipes/o-safe.pipe';\nimport { OTranslateModule } from '../pipes/o-translate.pipe';\nimport { OrderByPipe } from '../pipes/order-by.pipe';\nimport { ODialogComponent } from './components/dialog/o-dialog.component';\nimport { Error403Component } from './components/error403/o-error-403.component';\nimport { OLoadFilterDialogComponent } from './components/filter/load-filter/o-load-filter-dialog.component';\nimport { OStoreFilterDialogComponent } from './components/filter/store-filter/o-store-filter-dialog.component';\nimport { OSnackBarComponent } from './components/snackbar/o-snackbar.component';\nimport { OErrorComponent } from './components/validation/o-error.component';\nimport { OValidatorComponent } from './components/validation/o-validator.component';\nimport { OCustomMaterialModule } from './material/custom.material.module';\nimport { ODialogInternalComponent } from './components/dialog/o-dialog-internal.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    OTranslateModule,\n    FlexLayoutModule,\n    OCustomMaterialModule,\n    FormsModule,\n    ReactiveFormsModule\n  ],\n  declarations: [\n    ColumnsFilterPipe,\n    OrderByPipe,\n    OIntegerPipe,\n    ORealPipe,\n    OMomentPipe,\n    OCurrencyPipe,\n    OPercentPipe,\n    OIconPipe,\n    OSafePipe,\n    IsEmptyValuePipe,\n    ONTIMIZE_DIRECTIVES,\n    Error403Component,\n    ODialogComponent,\n    ODialogInternalComponent,\n    OErrorComponent,\n    OValidatorComponent,\n    OSnackBarComponent,\n    OLoadFilterDialogComponent,\n    OStoreFilterDialogComponent\n  ],\n  exports: [\n    FlexLayoutModule,\n    FormsModule,\n    ReactiveFormsModule,\n    OTranslateModule,\n    ColumnsFilterPipe,\n    OrderByPipe,\n    OIntegerPipe,\n    ORealPipe,\n    OMomentPipe,\n    OCurrencyPipe,\n    OPercentPipe,\n    OIconPipe,\n    OSafePipe,\n    IsEmptyValuePipe,\n    ONTIMIZE_DIRECTIVES,\n    OCustomMaterialModule,\n    Error403Component,\n    OErrorComponent,\n    OValidatorComponent,\n    OSnackBarComponent,\n    OLoadFilterDialogComponent,\n    OStoreFilterDialogComponent\n  ]\n})\nexport class OSharedModule {\n}\n","import { Injectable } from \"@angular/core\";\nimport { PermissionsService } from \"../../services/permissions/permissions.service\";\nimport { MenuRootItem } from '../../types/menu-root-item.type';\n\n@Injectable()\nexport abstract class OBarMenuBase {\n  abstract getPermissionsService(): PermissionsService;\n  abstract collapseAll();\n  abstract ngOnInit(): void;\n  abstract setDOMTitle(): void;\n  abstract get menuTitle(): string;\n  abstract set menuTitle(val: string);\n  abstract get tooltip(): string;\n  abstract set tooltip(val: string);\n  abstract get id(): string;\n  abstract set id(val: string);\n  abstract get menuItems(): MenuRootItem[];\n}\n","import { ElementRef, HostListener, Injector, OnDestroy, OnInit, Directive } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { OTranslateService } from '../../services/translate/o-translate.service';\nimport { OPermissions } from '../../types/o-permissions.type';\nimport { PermissionsUtils } from '../../util/permissions';\nimport { Util } from '../../util/util';\nimport { OBarMenuBase } from './o-bar-menu-base.class';\n\nexport const DEFAULT_INPUTS_O_BASE_MENU_ITEM = [\n  // title [string]: menu item title. Default: no value.\n  'title',\n\n  // tooltip [string]: menu group tooltip. Default: 'title' value.\n  'tooltip',\n\n  // icon [string]: material icon. Default: no value.\n  'icon',\n\n  'attr'\n];\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_BASE_MENU_ITEM\n})\nexport class OBaseMenuItemClass implements OnInit, OnDestroy {\n\n  protected translateService: OTranslateService;\n  protected onLanguageChangeSubscription: Subscription;\n\n  protected permissions: OPermissions;\n  protected mutationObserver: MutationObserver;\n\n  title: string;\n  tooltip: string;\n  icon: string;\n  restricted: boolean;\n  disabled: boolean;\n  protected _isHovered: boolean = false;\n  attr: string;\n\n  @HostListener('mouseover') onMouseover = () => this.isHovered = true;\n  @HostListener('mouseout') onMouseout = () => this.isHovered = false;\n\n  constructor(\n    protected menu: OBarMenuBase,\n    protected elRef: ElementRef,\n    protected injector: Injector) {\n\n    this.translateService = this.injector.get(OTranslateService);\n  }\n\n  ngOnInit() {\n    if (!this.tooltip) {\n      this.tooltip = this.title;\n    }\n    if (this.translateService) {\n      this.onLanguageChangeSubscription = this.translateService.onLanguageChanged.subscribe(() => {\n        this.setDOMTitle();\n      });\n      this.setDOMTitle();\n    }\n    this.parsePermissions();\n  }\n\n  ngOnDestroy(): void {\n    if (this.onLanguageChangeSubscription) {\n      this.onLanguageChangeSubscription.unsubscribe();\n    }\n    if (this.mutationObserver) {\n      this.mutationObserver.disconnect();\n    }\n  }\n\n  setDOMTitle() {\n    const tooltip = this.translateService.get(this.tooltip);\n    this.elRef.nativeElement.setAttribute('title', tooltip);\n  }\n\n  protected parsePermissions() {\n    // if oattr in form, it can have permissions\n    this.permissions = this.menu.getPermissionsService().getMenuPermissions(this.attr);\n    if (!Util.isDefined(this.permissions)) {\n      return;\n    }\n    this.restricted = this.permissions.visible === false;\n    this.disabled = this.permissions.enabled === false;\n\n    if (this.disabled) {\n      this.mutationObserver = PermissionsUtils.registerDisabledChangesInDom(this.elRef.nativeElement, {\n        checkStringValue: true\n      });\n    }\n  }\n\n  get isHovered(): boolean {\n    return this._isHovered;\n  }\n\n  set isHovered(val: boolean) {\n    if (!this.disabled) {\n      this._isHovered = val;\n    }\n  }\n}\n","import { Component, ElementRef, forwardRef, Inject, Injector, ViewEncapsulation } from '@angular/core';\n\nimport { OBaseMenuItemClass } from '../o-base-menu-item.class';\nimport { OBarMenuBase } from '../o-bar-menu-base.class';\n\nexport const DEFAULT_INPUTS_O_LOCALE_BAR_MENU_ITEM = [\n  // locale [string]: language. For example: es\n  'locale'\n];\n\n@Component({\n  selector: 'o-locale-bar-menu-item',\n  templateUrl: './o-locale-bar-menu-item.component.html',\n  styleUrls: ['./o-locale-bar-menu-item.component.scss'],\n  inputs: DEFAULT_INPUTS_O_LOCALE_BAR_MENU_ITEM,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-locale-bar-menu-item]': 'true'\n  }\n})\nexport class OLocaleBarMenuItemComponent extends OBaseMenuItemClass {\n\n  locale: string;\n\n  constructor(\n    @Inject(forwardRef(() => OBarMenuBase)) protected menu: OBarMenuBase,\n    protected elRef: ElementRef,\n    protected injector: Injector\n  ) {\n    super(menu, elRef, injector);\n  }\n\n  configureI18n() {\n    if (this.isConfiguredLang()) {\n      return;\n    }\n    if (this.translateService) {\n      this.translateService.use(this.locale);\n    }\n    if (this.menu) {\n      this.menu.collapseAll();\n    }\n  }\n\n  isConfiguredLang() {\n    if (this.translateService) {\n      return (this.translateService.getCurrentLang() === this.locale);\n    }\n    return false;\n  }\n}\n","<div class=\"fake-li mat-primary \" [class.fake-li-hover]=\"isHovered\" [class.is-selected]=\"isConfiguredLang()\">\n  <a fxLayout=\"row\" fxLayoutAlign=\"space-between center\" (click)=\"configureI18n()\" class=\"mat-list-item\">\n    <mat-icon *ngIf=\"icon !== undefined\" class=\"o-bar-menu-item-icon mat-24\">{{ icon }}</mat-icon>\n    <div fxFlex matLine class=\"o-bar-menu-item-title\">{{ title | oTranslate }}</div>\n    <mat-icon *ngIf=\"isConfiguredLang()\" class=\"o-bar-menu-item-icon configured-lang mat-24\" svgIcon=\"ontimize:check_circle\"></mat-icon>\n  </a>\n</div>","import { Component, ElementRef, forwardRef, Inject, Injector, ViewEncapsulation } from '@angular/core';\n\nimport { Util } from '../../../util/util';\nimport { OBaseMenuItemClass } from '../o-base-menu-item.class';\nimport { OBarMenuBase } from '../o-bar-menu-base.class';\n\n\n@Component({\n  selector: 'o-bar-menu-group',\n  templateUrl: './o-bar-menu-group.component.html',\n  styleUrls: ['./o-bar-menu-group.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-bar-menu-group]': 'true',\n    '[attr.disabled]': 'disabled'\n  }\n})\nexport class OBarMenuGroupComponent extends OBaseMenuItemClass {\n\n  id: string;\n\n  constructor(\n    @Inject(forwardRef(() => OBarMenuBase)) protected menu: OBarMenuBase,\n    protected elRef: ElementRef,\n    protected injector: Injector\n  ) {\n    super(menu, elRef, injector);\n    this.id = 'm_' + String((new Date()).getTime() + Util.randomNumber().toString());\n  }\n\n}\n","<div class=\"fake-li\" [class.fake-li-hover]=\"isHovered\">\n  <label [attr.for]=\"id\" class=\"toggle mat-list-item\">\n    <mat-icon class=\"o-bar-menu-group-icon mat-24\">{{ icon }}</mat-icon>\n    {{ title | oTranslate }}\n    <mat-icon class=\"o-bar-menu-group-icon-arrow\" *ngIf=\"!checkbox.checked\">chevron_right</mat-icon>\n    <mat-icon class=\"o-bar-menu-group-icon-arrow\" *ngIf=\"checkbox.checked\">expand_more</mat-icon>\n  </label>\n  <a class=\"o-bar-menu-group-title\">\n    <mat-icon class=\"o-bar-menu-group-icon mat-24\">{{ icon }}</mat-icon> {{ title | oTranslate }}\n    <mat-icon class=\"o-bar-menu-group-icon-arrow\">chevron_right</mat-icon>\n  </a>\n  <input [attr.id]=\"id\" type=\"checkbox\" #checkbox />\n  <div *ngIf=\"!disabled\" class=\"fake-ul mat-primary mat-elevation-z4\">\n    <ng-content></ng-content>\n  </div>\n</div>","import { Component, ElementRef, forwardRef, Inject, Injector, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Util } from '../../../util/util';\nimport { OBaseMenuItemClass } from '../o-base-menu-item.class';\nimport { OBarMenuBase } from '../o-bar-menu-base.class';\n\nexport const DEFAULT_INPUTS_O_BAR_MENU_ITEM = [\n  // route [string]: name of the state to navigate. Default: no value.\n  'route',\n\n  // action [function]: function to execute. Default: no value.\n  'action'\n];\n\n@Component({\n  selector: 'o-bar-menu-item',\n  templateUrl: './o-bar-menu-item.component.html',\n  styleUrls: ['./o-bar-menu-item.component.scss'],\n  inputs: DEFAULT_INPUTS_O_BAR_MENU_ITEM,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-bar-menu-item]': 'true',\n    '[attr.disabled]': 'disabled'\n  }\n})\nexport class OBarMenuItemComponent extends OBaseMenuItemClass implements OnInit {\n\n  protected router: Router;\n  route: string;\n  action: () => void;\n\n  constructor(\n    @Inject(forwardRef(() => OBarMenuBase)) protected menu: OBarMenuBase,\n    protected elRef: ElementRef,\n    protected injector: Injector\n  ) {\n    super(menu, elRef, injector);\n    this.router = this.injector.get(Router);\n  }\n\n  ngOnInit() {\n    // if (typeof (this.route) === 'string') {\n    //   // TODO, permisos por route?\n    // } else {\n    //   this.restricted = false;\n    // }\n    super.ngOnInit();\n  }\n\n  collapseMenu(evt: Event) {\n    if (this.menu) {\n      this.menu.collapseAll();\n    }\n  }\n\n  onClick() {\n    if (this.disabled) {\n      return;\n    }\n    if (Util.isDefined(this.route)) {\n      this.router.navigate([this.route]);\n    } else if (Util.isDefined(this.action)) {\n      this.action();\n    }\n  }\n}\n","<div class=\"fake-li mat-primary\" *ngIf=\"!restricted\" (click)=\"collapseMenu($event)\" [class.fake-li-hover]=\"isHovered\">\n  <a *ngIf=\"action || route\" class=\"mat-list-item\" (click)=\"onClick()\">\n    <mat-icon class=\"o-bar-menu-item-icon mat-24\">{{ icon }}</mat-icon>\n    <div class=\"o-bar-menu-item-title\">{{ title | oTranslate }}</div>\n  </a>\n  <div *ngIf=\"!route && !action\" class=\"o-bar-menu-item-text mat-list-item\">\n    <mat-icon class=\"o-bar-menu-item-icon mat-24\">{{ icon }}</mat-icon>\n    <div class=\"o-bar-menu-item-title\">{{ title | oTranslate }}</div>\n  </div>\n</div>","import { Injectable, Injector } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\n\nimport { AppConfig } from '../config/app-config';\nimport {\n  MenuCommonItem,\n  MenuGroup,\n  MenuItem,\n  MenuItemAction,\n  MenuItemLocale,\n  MenuItemLogout,\n  MenuItemRoute,\n  MenuItemUserInfo\n} from '../interfaces/app-menu.interface';\nimport { MenuRootItem } from '../types/menu-root-item.type';\nimport { Codes } from '../util/codes';\nimport { Util } from '../util/util';\nimport { PermissionsService } from './permissions/permissions.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AppMenuService {\n\n  protected router: Router;\n  protected _config: AppConfig;\n  protected MENU_ROOTS: MenuRootItem[];\n  protected ALL_MENU_ITEMS: MenuRootItem[];\n  protected activeItem: MenuItemRoute;\n  protected permissionsService: PermissionsService;\n\n  public onClick: Subject<void> = new Subject<void>;\n  public onPermissionMenuChanged: Subject<void> = new Subject();\n\n  constructor(protected injector: Injector) {\n    this._config = this.injector.get(AppConfig);\n    this.router = this.injector.get(Router);\n    this.router.events.subscribe((event) => {\n      if (event instanceof NavigationEnd) {\n        this.setActiveItem();\n      }\n    });\n\n    this.setMenuItemsByMenuConfiguration();\n\n    this.permissionsService = this.injector.get(PermissionsService);\n    this.permissionsService.onChangePermissions.subscribe(x => {\n      this.mergeMenuItemsWithPermissions();\n      this.onPermissionMenuChanged.next()\n    });\n\n  }\n\n  setMenuItemsByMenuConfiguration() {\n    /*\n      spread operator (...) in array multi-level not works\n      JSON.parse and JSON.stringify are the specific methods used for multi-level deep copying\n    */\n    const defaultMenuConfiguration = Util.cloneArray(this._config.getMenuConfiguration());\n    this.MENU_ROOTS = defaultMenuConfiguration;\n    this.ALL_MENU_ITEMS = [];\n    for (let i = 0, len = this.MENU_ROOTS.length; i < len; i++) {\n      const item: MenuRootItem = this.MENU_ROOTS[i];\n      this.ALL_MENU_ITEMS = this.ALL_MENU_ITEMS.concat(this.getMenuItems(item));\n    }\n  }\n\n  mergeMenuItemsWithPermissions() {\n\n    this.setMenuItemsByMenuConfiguration();\n    const permissionsMenu = this.permissionsService.getAllMenuPermissions();\n\n    if (Util.isDefined(permissionsMenu)) {\n      this.MENU_ROOTS = [...this.MENU_ROOTS.map(menu => {\n        const indexPermission = permissionsMenu.findIndex(permission => permission.attr === menu.id);\n        if (indexPermission > -1) {\n          menu.visible = permissionsMenu[indexPermission].visible;\n        }\n        return menu;\n      })];\n\n      this.ALL_MENU_ITEMS = [...this.ALL_MENU_ITEMS.map(menu => {\n        const indexPermission = permissionsMenu.findIndex(permission => permission.attr === menu.id);\n        if (indexPermission > -1) {\n          menu.visible = permissionsMenu[indexPermission].visible;\n        }\n        return menu;\n      })];\n    }\n  }\n\n  getMenuRoots(): MenuRootItem[] {\n    return this.MENU_ROOTS;\n  }\n\n  getMenuRootById(id: string): MenuRootItem {\n    return this.MENU_ROOTS.find(c => c.id === id);\n  }\n\n  getAllMenuItems(): MenuRootItem[] {\n    return this.ALL_MENU_ITEMS;\n  }\n\n  getMenuItemById(id: string): MenuItem | MenuGroup {\n    return this.ALL_MENU_ITEMS.find(i => i.id === id);\n  }\n\n  getMenuItemType(item: MenuRootItem): string {\n    let type: string;\n    switch (true) {\n      case ((item as MenuItemLogout).route === Codes.LOGIN_ROUTE):\n        type = 'logout';\n        break;\n      case ((item as MenuItemAction).action !== undefined):\n        type = 'action';\n        break;\n      case ((item as MenuItemLocale).locale !== undefined):\n        type = 'locale';\n        break;\n      case ((item as MenuItemUserInfo).user !== undefined):\n        type = 'user-info';\n        break;\n      case ((item as MenuGroup).items !== undefined):\n        type = 'group';\n        break;\n      default:\n        type = 'default';\n        break;\n    }\n    return type;\n  }\n\n  isMenuGroup(item: MenuRootItem): boolean {\n    return this.getMenuItemType(item) === 'group';\n  }\n\n  isMenuGroupRoute(item: MenuRootItem): boolean {\n    return this.getMenuItemType(item) === 'group' && item.hasOwnProperty('route');\n  }\n\n  isItemActive(item: MenuItemRoute): boolean {\n    return this.activeItem && this.activeItem.route === item.route;\n  }\n\n  isRouteItem(item: MenuItemRoute): boolean {\n    return Util.isDefined(item.route);\n  }\n\n  isVisible(item: MenuCommonItem): boolean {\n    return !Util.isDefined(item.visible) || (Util.isDefined(item.visible) && item.visible);\n  }\n\n  private getMenuItems(item: MenuRootItem): MenuRootItem[] {\n    const menuGroup = item as MenuGroup;\n    const items = menuGroup.items;\n    if (items !== undefined) {\n      if (this.isMenuGroupRoute(menuGroup)) {\n        return [item].concat(items)\n      }\n      return items;\n    }\n    return [item];\n  }\n\n  private setActiveItem(): void {\n    let activeItem: MenuItemRoute;\n    const routeItems: MenuItemRoute[] = this.ALL_MENU_ITEMS.filter(item => this.isRouteItem(item)) as MenuItemRoute[];\n    const pathMatchFullItems = routeItems.filter(item => item.pathMatch === 'full');\n    if (pathMatchFullItems.length > 0) {\n      activeItem = pathMatchFullItems.find(item => item.route === this.router.url);\n    }\n    if (!activeItem) {\n      activeItem = routeItems.find(item => this.router.url.startsWith(item.route));\n    }\n    this.activeItem = activeItem;\n  }\n\n}\n","import { ChangeDetectionStrategy, Component, Injector } from '@angular/core';\n\nimport { AppMenuService } from '../../../services/app-menu.service';\nimport { MenuRootItem } from '../../../types/menu-root-item.type';\n\nexport const DEFAULT_INPUTS_O_BAR_MENU_NESTED = [\n  'items'\n];\n\n@Component({\n  selector: 'o-bar-menu-nested',\n  templateUrl: './o-bar-menu-nested.component.html',\n  inputs: DEFAULT_INPUTS_O_BAR_MENU_NESTED,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OBarMenuNestedComponent {\n\n  public appMenuService: AppMenuService;\n  public items: MenuRootItem[];\n\n  constructor(\n    protected injector: Injector\n  ) {\n    this.appMenuService = this.injector.get(AppMenuService);\n  }\n\n}\n","<ng-container *ngFor=\"let item of items\">\n  <ng-container [ngSwitch]=\"appMenuService.getMenuItemType(item)\" *ngIf=\"appMenuService.isVisible(item)\">\n\n    <o-bar-menu-group *ngSwitchCase=\"'group'\" [title]=\"item.name\" [attr]=\"item.id\" [tooltip]=\"item.tooltip\" [icon]=\"item.icon\" [ngClass]=\"item.class\">\n      <o-bar-menu-nested [items]=\"item.items\"> </o-bar-menu-nested>\n    </o-bar-menu-group>\n\n    <o-locale-bar-menu-item *ngSwitchCase=\"'locale'\" [title]=\"item.name\" [attr]=\"item.id\" [tooltip]=\"item.tooltip\" [icon]=\"item.icon\"\n      [locale]=\"item.locale\" [ngClass]=\"item.class\">\n    </o-locale-bar-menu-item>\n\n    <o-bar-menu-item *ngSwitchDefault [title]=\"item.name\" [attr]=\"item.id\" [tooltip]=\"item.tooltip\" [icon]=\"item.icon\" [route]=\"item.route\"\n      [ngClass]=\"item.class\"></o-bar-menu-item>\n\n  </ng-container>\n</ng-container>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'o-bar-menu-separator',\n  templateUrl: './o-bar-menu-separator.component.html',\n  styleUrls: ['./o-bar-menu-separator.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-bar-menu-separator]': 'true'\n  }\n})\nexport class OBarMenuSeparatorComponent {\n}\n","<div class=\"fake-li mat-primary separator\"></div>","import { Component, ElementRef, Injector, OnInit, ViewEncapsulation, forwardRef } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\nimport { AppMenuService } from '../../services/app-menu.service';\nimport { PermissionsService } from '../../services/permissions/permissions.service';\nimport { OTranslateService } from '../../services/translate/o-translate.service';\nimport { MenuRootItem } from '../../types/menu-root-item.type';\nimport { Util } from '../../util/util';\nimport { OBarMenuBase } from './o-bar-menu-base.class';\n\nexport const DEFAULT_INPUTS_O_BAR_MENU = [\n  // title [string]: menu title. Default: no value.\n  'menuTitle: title',\n  // tooltip [string]: menu tooltip. Default: 'title' value.\n  'tooltip',\n];\n\n@Component({\n  selector: 'o-bar-menu',\n  templateUrl: './o-bar-menu.component.html',\n  styleUrls: ['./o-bar-menu.component.scss'],\n  inputs: DEFAULT_INPUTS_O_BAR_MENU,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-bar-menu]': 'true'\n  },\n  providers: [{ provide: OBarMenuBase, useExisting: forwardRef(() => OBarMenuComponent) }],\n})\nexport class OBarMenuComponent implements OnInit {\n\n  protected permissionsService: PermissionsService;\n  protected translateService: OTranslateService;\n  private appMenuService: AppMenuService;\n  private menuRoots: MenuRootItem[];\n\n  protected _menuTitle: string;\n  protected _tooltip: string;\n  protected _id: string;\n  protected subscription: Subscription = new Subscription();\n\n  constructor(\n    protected elRef: ElementRef,\n    protected injector: Injector) {\n    this.id = 'm_' + String((new Date()).getTime() + Util.randomNumber().toString());\n    this.permissionsService = this.injector.get(PermissionsService);\n    this.translateService = this.injector.get(OTranslateService);\n    this.appMenuService = this.injector.get(AppMenuService);\n    this.subscription.add(this.appMenuService.onPermissionMenuChanged.subscribe(() => this.refreshMenuRoots()));\n    this.menuRoots = this.appMenuService.getMenuRoots();\n  }\n\n\n  public ngOnInit() {\n    if (!this.tooltip) {\n      this.tooltip = this.menuTitle;\n    }\n    if (this.translateService) {\n      this.translateService.onLanguageChanged.subscribe(() => {\n        this.setDOMTitle();\n      });\n      this.setDOMTitle();\n    }\n  }\n\n  setDOMTitle() {\n    const tooltip = this.translateService.get(this.tooltip);\n    this.elRef.nativeElement.setAttribute('title', tooltip);\n  }\n\n  collapseAll() {\n    const inputs = this.elRef.nativeElement.querySelectorAll('input');\n    if (inputs) {\n      inputs.forEach(element => {\n        element.checked = false;\n      });\n    }\n    const fakeLis = this.elRef.nativeElement.querySelectorAll('.fake-li-hover');\n    if (fakeLis) {\n      fakeLis.forEach(element => {\n        element.classList.remove('fake-li-hover');\n      });\n    }\n  }\n\n  getPermissionsService(): PermissionsService {\n    return this.permissionsService;\n  }\n\n  get menuTitle(): string {\n    return this._menuTitle;\n  }\n\n  set menuTitle(val: string) {\n    this._menuTitle = val;\n  }\n\n  get tooltip(): string {\n    return this._tooltip;\n  }\n\n  set tooltip(val: string) {\n    this._tooltip = val;\n  }\n\n  get id(): string {\n    return this._id;\n  }\n\n  set id(val: string) {\n    this._id = val;\n  }\n\n  get menuItems(): MenuRootItem[] {\n    return this.menuRoots;\n  }\n\n  refreshMenuRoots(): void {\n    this.menuRoots = [...this.appMenuService.getMenuRoots()];\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n\n  }\n}\n\n","<mat-toolbar color=\"primary\">\n  <nav>\n    <mat-icon class=\"mat-24 menu-icon toggle\" (click)=\"input.checked = !input.checked\" svgIcon=\"ontimize:menu\"></mat-icon>\n    <label [attr.for]=\"id\" class=\"toggle title-label\">{{ menuTitle | oTranslate }}</label>\n    <input #input [attr.id]=\"id\" type=\"checkbox\" />\n    <div class=\"fake-ul mat-primary menu\">\n      <ng-container>\n        <o-bar-menu-nested [items]=\"menuItems\"></o-bar-menu-nested>\n      </ng-container>\n      <ng-content></ng-content>\n    </div>\n  </nav>\n</mat-toolbar>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OLocaleBarMenuItemComponent } from './locale-menu-item/o-locale-bar-menu-item.component';\nimport { OBarMenuGroupComponent } from './menu-group/o-bar-menu-group.component';\nimport { OBarMenuItemComponent } from './menu-item/o-bar-menu-item.component';\nimport { OBarMenuNestedComponent } from './menu-nested/o-bar-menu-nested.component';\nimport { OBarMenuSeparatorComponent } from './menu-separator/o-bar-menu-separator.component';\nimport { OBarMenuComponent } from './o-bar-menu.component';\n\n@NgModule({\n  declarations: [\n    OBarMenuComponent,\n    OBarMenuItemComponent,\n    OBarMenuGroupComponent,\n    OLocaleBarMenuItemComponent,\n    OBarMenuSeparatorComponent,\n    OBarMenuNestedComponent\n  ],\n  imports: [\n    CommonModule,\n    OSharedModule,\n    RouterModule\n  ],\n  exports: [\n    OBarMenuComponent,\n    OBarMenuItemComponent,\n    OBarMenuGroupComponent,\n    OLocaleBarMenuItemComponent,\n    OBarMenuSeparatorComponent,\n    OBarMenuNestedComponent\n  ]\n})\nexport class OBarMenuModule {\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OBreadcrumbComponent } from './o-breadcrumb.component';\n\n@NgModule({\n  imports: [CommonModule, OSharedModule, RouterModule],\n  exports: [OBreadcrumbComponent],\n  declarations: [OBreadcrumbComponent]\n})\nexport class OBreadcrumbModule { }\n","import { Component, EventEmitter, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatButtonToggle, MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { Util } from '../../util/util';\n\nexport const DEFAULT_INPUTS_O_BUTTON_TOGGLE = [\n  'oattr: attr',\n  'label',\n  // icon [string]: Name of google icon (see https://design.google.com/icons/)\n  'icon',\n  'iconPosition: icon-position',\n  'checked',\n  'enabled',\n  'value',\n  'name'\n];\n\nexport const DEFAULT_OUTPUTS_O_BUTTON_TOGGLE = [\n  'onChange'\n];\n\n@Component({\n  selector: 'o-button-toggle',\n  templateUrl: './o-button-toggle.component.html',\n  styleUrls: ['./o-button-toggle.component.scss'],\n  inputs: DEFAULT_INPUTS_O_BUTTON_TOGGLE,\n  outputs: DEFAULT_OUTPUTS_O_BUTTON_TOGGLE,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-button-toggle]': 'true'\n  }\n})\nexport class OButtonToggleComponent {\n\n  public DEFAULT_INPUTS_O_BUTTON_TOGGLE = DEFAULT_INPUTS_O_BUTTON_TOGGLE;\n  public DEFAULT_OUTPUTS_O_BUTTON_TOGGLE = DEFAULT_OUTPUTS_O_BUTTON_TOGGLE;\n\n  /* Inputs */\n  public oattr: string;\n  public label: string;\n  public icon: string;\n  public iconPosition: 'before' | 'after' = 'before';\n\n  public name: string;\n  /* End inputs */\n\n  /* Outputs */\n  public onChange: EventEmitter<MatButtonToggleChange> = new EventEmitter();\n  /* End outputs */\n\n  @ViewChild('bt', { static: true }) public _innerButtonToggle: MatButtonToggle;\n\n  public _checked: boolean = false;;\n  public _enabled: boolean = true;\n  public _value: any;\n\n\n  get checked(): boolean {\n    return this._innerButtonToggle.checked;\n  }\n\n  set checked(val: boolean) {\n    this._checked = Util.parseBoolean(String(val));\n  }\n\n  get enabled(): boolean {\n    return !this._innerButtonToggle.disabled;\n  }\n\n  set enabled(val: boolean) {\n    this._enabled = Util.parseBoolean(String(val));\n  }\n\n  get value(): any {\n    return this._innerButtonToggle.value;\n  }\n\n  set value(val: any) {\n    this._value = val;\n  }\n}\n","<mat-button-toggle #bt [id]=\"oattr\" [name]=\"name\" [checked]=\"_checked\" [disabled]=\"!_enabled\" [value]=\"_value\" (change)=\"onChange.emit($event)\">\n  <mat-icon *ngIf=\"icon && iconPosition==='before'\">{{ icon }}</mat-icon>\n  {{ label | oTranslate }}\n  <mat-icon *ngIf=\"icon && iconPosition==='after'\">{{ icon }}</mat-icon>\n</mat-button-toggle>\n","import {\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  forwardRef,\n  OnInit,\n  QueryList,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation\n} from '@angular/core';\nimport { MatButtonToggleChange, MatButtonToggleGroup } from '@angular/material/button-toggle';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { Util } from '../../../util/util';\nimport { OButtonToggleComponent } from '../o-button-toggle.component';\n\nexport const DEFAULT_INPUTS_O_BUTTON_TOGGLE_GROUP = [\n  'oattr: attr',\n  'name',\n  'enabled',\n  'layout',\n  'multiple',\n  'value'\n];\n\nexport const DEFAULT_OUTPUTS_O_BUTTON_TOGGLE_GROUP = [\n  'onChange'\n];\n\n@Component({\n  selector: 'o-button-toggle-group',\n  templateUrl: './o-button-toggle-group.component.html',\n  inputs: DEFAULT_INPUTS_O_BUTTON_TOGGLE_GROUP,\n  outputs: DEFAULT_OUTPUTS_O_BUTTON_TOGGLE_GROUP,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-button-toggle-group]': 'true'\n  }\n})\nexport class OButtonToggleGroupComponent implements AfterViewInit, OnInit {\n\n  public DEFAULT_INPUTS_O_BUTTON_TOGGLE_GROUP = DEFAULT_INPUTS_O_BUTTON_TOGGLE_GROUP;\n  public DEFAULT_OUTPUTS_O_BUTTON_TOGGLE_GROUP = DEFAULT_OUTPUTS_O_BUTTON_TOGGLE_GROUP;\n\n  /* Inputs */\n  protected oattr: string;\n  public name: string;\n  get enabled(): boolean {\n    if (this._innerButtonToggleGroup instanceof MatButtonToggleGroup) {\n      return !this._innerButtonToggleGroup.disabled;\n    }\n    return true;\n  }\n  set enabled(val: boolean) {\n    if (this._innerButtonToggleGroup instanceof MatButtonToggleGroup) {\n      val = Util.parseBoolean(String(val));\n      this._innerButtonToggleGroup.disabled = !val;\n    }\n  }\n  protected _enabled: boolean = true;\n  public layout: 'row' | 'column' = 'row';\n  @BooleanInputConverter()\n  public multiple: boolean = false;\n  public value: any;\n  /* End inputs */\n\n  /* Outputs */\n  public onChange: EventEmitter<MatButtonToggleChange> = new EventEmitter();\n  /* End outputs */\n\n  @ViewChild(MatButtonToggleGroup)\n  protected _innerButtonToggleGroup: MatButtonToggleGroup;\n  @ViewChild('childContainer', { read: ViewContainerRef })\n  protected _viewContainerRef: ViewContainerRef;\n  @ContentChildren(forwardRef(() => OButtonToggleComponent))\n  protected _children: QueryList<OButtonToggleComponent>;\n\n  ngOnInit(): void {\n    if (!Util.isDefined(this.name)) {\n      this.name = this.oattr;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.buildChildren();\n    this._children.changes.subscribe(() => this.buildChildren());\n  }\n\n  protected buildChildren(): void {\n    this._viewContainerRef.clear();\n    const childList = this._children.map((child) => {\n      const componentRef = this._viewContainerRef.createComponent(OButtonToggleComponent);\n      componentRef.instance.oattr = child.oattr;\n      componentRef.instance.label = child.label;\n      componentRef.instance.icon = child.icon;\n      componentRef.instance.iconPosition = child.iconPosition;\n      componentRef.instance.checked = child.checked;\n      componentRef.instance.enabled = child.enabled;\n      componentRef.instance.value = child.value;\n      componentRef.instance.name = this.name;\n      componentRef.instance.onChange = child.onChange;\n      componentRef.changeDetectorRef.detectChanges();\n      return componentRef.instance;\n    });\n    this._innerButtonToggleGroup._buttonToggles.reset(childList.map(c => c._innerButtonToggle));\n    this._children.reset(childList);\n  }\n\n  getValue(): any {\n    return this._innerButtonToggleGroup ? this._innerButtonToggleGroup.value : void 0;\n  }\n\n  setValue(val: any): void {\n    this._innerButtonToggleGroup.value = val;\n  }\n\n}\n","<mat-button-toggle-group [disabled]=\"!enabled\" [name]=\"name\" [value]=\"value\" [vertical]=\"layout==='column'\" [multiple]=\"multiple\"\n  (change)=\"onChange.emit($event)\">\n  <ng-container #childContainer></ng-container>\n</mat-button-toggle-group>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OButtonToggleGroupComponent } from './o-button-toggle-group/o-button-toggle-group.component';\nimport { OButtonToggleComponent } from './o-button-toggle.component';\n\n@NgModule({\n  declarations: [\n    OButtonToggleComponent,\n    OButtonToggleGroupComponent\n  ],\n  imports: [\n    CommonModule,\n    OSharedModule\n  ],\n  exports: [\n    OButtonToggleComponent,\n    OButtonToggleGroupComponent\n  ]\n})\nexport class OButtonToggleModule { }\n","import { Injector } from '@angular/core';\n\nimport { APP_CONFIG, AppConfig } from '../config/app-config';\nimport { Config } from '../types/config.type';\n\nexport class AppConfigFactory {\n  config: Config;\n  constructor(protected injector: Injector) {\n    this.config = this.injector.get(APP_CONFIG);\n  }\n\n  public factory(): any {\n    return new AppConfig(this.config);\n  }\n}\n\nexport function appConfigFactory(injector: Injector) {\n  return new AppConfigFactory(injector).factory();\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport interface UserInfo {\n  username?: string;\n  avatar?: string;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OUserInfoService {\n  protected storedInfo: UserInfo;\n  private subject = new Subject<any>();\n\n  constructor(protected injector: Injector) {\n  }\n\n  setUserInfo(info: UserInfo) {\n    this.storedInfo = info;\n    this.subject.next(info);\n  }\n\n  getUserInfo(): UserInfo {\n    return this.storedInfo;\n  }\n\n  getUserInfoObservable(): Observable<any> {\n    return this.subject.asObservable();\n  }\n\n}\n","import { Injectable, Injector, Type } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\n\nimport { OUserInfoService } from '../services/o-user-info.service';\nimport { Codes } from '../util/codes';\nimport { AuthService } from './auth.service';\nimport { PermissionsService } from './permissions/permissions.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AuthGuardService implements CanActivate {\n\n  protected router: Router;\n  protected authService: AuthService;\n  protected oUserInfoService: OUserInfoService;\n  protected permissionsService: PermissionsService;\n\n  constructor(protected injector: Injector) {\n    this.router = this.injector.get<Router>(Router as Type<Router>);\n    this.authService = this.injector.get<AuthService>(AuthService as Type<AuthService>);\n    this.oUserInfoService = this.injector.get<OUserInfoService>(OUserInfoService as Type<OUserInfoService>);\n    this.permissionsService = this.injector.get<PermissionsService>(PermissionsService as Type<PermissionsService>);\n  }\n\n  canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> | boolean {\n    const isLoggedIn = this.authService.isLoggedIn();\n    let result: Promise<boolean> | boolean = isLoggedIn;\n    if (!isLoggedIn) {\n      this.permissionsService.restart();\n      this.router.navigate([Codes.LOGIN_ROUTE]);\n    }\n    if (isLoggedIn) {\n      this.setUserInformation();\n      if (!this.permissionsService.hasPermissions()) {\n        result = this.permissionsService.getUserPermissionsAsPromise();\n      }\n    }\n    return result;\n  }\n\n  setUserInformation() {\n    const sessionInfo = this.authService.getSessionInfo();\n    // TODO query user information\n    this.oUserInfoService.setUserInfo({\n      username: sessionInfo.user,\n      avatar: './assets/images/user_profile.png'\n    });\n  }\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OModulesInfoService {\n\n  private subject = new ReplaySubject<string>();\n  constructor(\n    protected injector: Injector,\n    protected router: Router,\n  ) {\n    this.router = this.injector.get(Router);\n\n  }\n\n  getModuleChangeObservable(): Observable<string> {\n\n    this.router.events\n      .pipe(filter(e => e instanceof NavigationEnd),\n        map(() => {\n          let route: ActivatedRoute = this.router.routerState.root;\n          let routeTitle = '';\n          while (route!.firstChild) {\n            route = route.firstChild;\n          }\n          if (route.snapshot.data['oAppHeaderTitle']) {\n            routeTitle = route!.snapshot.data['oAppHeaderTitle'];\n          }\n          return routeTitle;\n        }))\n      .subscribe((title: string) => {\n        if (title) {\n          this.subject.next(title);\n        }\n        else {\n          this.subject.next(\"\")\n        }\n      })\n\n    return this.subject.asObservable();\n  }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';\n\nimport { PermissionsGuardService } from './permissions/permissions-can-activate.guard';\nimport { PermissionsService } from './permissions/permissions.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ShareCanActivateChildService {\n\n  protected router: Router;\n  protected permissionsService: PermissionsService;\n  protected permissionsGuard: PermissionsGuardService;\n\n  constructor(protected injector: Injector) {\n    this.router = this.injector.get(Router);\n    this.permissionsService = this.injector.get(PermissionsService);\n  }\n\n  setPermissionsGuard(guard: PermissionsGuardService) {\n    this.permissionsGuard = guard;\n  }\n\n  canActivateChildUsingPermissions(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n    if (this.permissionsGuard) {\n      return this.permissionsGuard.canActivateChild(childRoute, state);\n    }\n    return true;\n  }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\n\nimport { Util } from '../../util/util';\nimport { ShareCanActivateChildService } from '../share-can-activate-child.service';\nimport { SnackBarService } from '../snackbar.service';\nimport { PermissionsService } from './permissions.service';\n\n@Injectable()\nexport class PermissionsGuardService implements CanActivateChild {\n\n  protected router: Router;\n  protected permissionsService: PermissionsService;\n  protected snackBarService: SnackBarService;\n  protected shareCanActivateChildService: ShareCanActivateChildService;\n\n  constructor(protected injector: Injector) {\n    this.router = this.injector.get(Router);\n    this.permissionsService = this.injector.get(PermissionsService);\n    this.snackBarService = this.injector.get(SnackBarService);\n    this.shareCanActivateChildService = this.injector.get(ShareCanActivateChildService);\n    this.shareCanActivateChildService.setPermissionsGuard(this);\n  }\n\n  canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n    let restricted: boolean = false;\n    const oPermission = childRoute.data ? childRoute.data['oPermission'] : undefined;\n    const permissionId: string = (oPermission || {})['permissionId'];\n    if (Util.isDefined(permissionId)) {\n      restricted = this.permissionsService.isPermissionIdRouteRestricted(permissionId);\n      if (restricted) {\n        let msg = 'MESSAGES.NAVIGATION_NOT_ALLOWED_PERMISSION';\n        const route: string = oPermission['restrictedPermissionsRedirect'];\n        if (Util.isDefined(route)) {\n          msg = 'MESSAGES.NAVIGATION_REDIRECTED_PERMISSION';\n          this.router.navigate([route]);\n        }\n        this.snackBarService.open(msg);\n      }\n    }\n    return !restricted;\n  }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { Injector, NgModule } from '@angular/core';\n\nimport { permissionsServiceFactory } from '../factories';\nimport { OntimizePermissionsService } from './ontimize-permissions.service';\nimport { PermissionsGuardService } from './permissions-can-activate.guard';\nimport { PermissionsService } from './permissions.service';\n\nexport function getPermissionsServiceProvider(injector: Injector) {\n  return new PermissionsService(injector);\n}\n\n@NgModule({\n  imports: [CommonModule],\n  providers: [\n    { provide: PermissionsGuardService, useClass: PermissionsGuardService },\n    { provide: OntimizePermissionsService, useFactory: permissionsServiceFactory, deps: [Injector] }\n  ]\n})\nexport class OPermissionsModule { }\n","import { DefaultComponentStateClass } from './o-component-state.class';\n\nexport class OFormLayoutManagerComponentStateClass extends DefaultComponentStateClass {\n  // tabgroup\n  selectedIndex: number;\n  tabsData: any[];\n\n  //splitpane\n  queryParams: any;\n  url: any;\n}\n","import { Injectable } from '@angular/core';\n\n\nimport { AbstractComponentStateService } from './o-component-state.service';\nimport { OFormLayoutManagerComponentStateClass } from './o-form-layout-manager-component-state.class';\nimport { OFormLayoutManagerBase } from '../../layouts/form-layout/o-form-layout-manager-base.class';\n\n@Injectable()\nexport class OFormLayoutManagerComponentStateService extends AbstractComponentStateService<OFormLayoutManagerComponentStateClass, OFormLayoutManagerBase> {\n\n  initialize(component: OFormLayoutManagerBase) {\n    this.state = new OFormLayoutManagerComponentStateClass();\n    super.initialize(component);\n  }\n\n  initializeState(state: OFormLayoutManagerComponentStateClass) {\n    super.initializeState(state);\n  }\n\n}\n","import { DefaultServiceComponentStateClass } from './o-component-state.class';\n\nexport class OGridComponentStateClass extends DefaultServiceComponentStateClass {\n  protected 'sort-column': string;\n  currentPage: number;\n  'quickFilterActiveColumns': string;\n\n  get sortColumn(): string {\n    return this['sort-column'];\n  }\n\n  set sortColumn(value: string) {\n    this['sort-column'] = value;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { OGridComponent } from '../../components/grid/o-grid.component';\nimport { Codes } from '../../util/codes';\nimport { Util } from '../../util/util';\nimport { AbstractComponentStateService } from './o-component-state.service';\nimport { OGridComponentStateClass } from './o-grid-component-state.class';\n\n@Injectable()\nexport class OGridComponentStateService extends AbstractComponentStateService<OGridComponentStateClass, OGridComponent> {\n\n  initialize(component: OGridComponent) {\n    this.state = new OGridComponentStateClass();\n    super.initialize(component);\n  }\n\n  initializeState(state: OGridComponentStateClass) {\n    super.initializeState(state);\n  }\n\n  getDataToStore(): any {\n    const dataToStore = Object.assign({}, this.state);\n    dataToStore['query-rows'] = this.component.queryRows;\n    dataToStore['currentPage'] = this.component.currentPage;\n\n    if (this.component.storePaginationState) {\n      dataToStore['queryRecordOffset'] = Math.max(\n        (this.state.queryRecordOffset - this.component.dataArray.length),\n        (this.state.queryRecordOffset - this.component.queryRows)\n      );\n    } else {\n      delete dataToStore['queryRecordOffset'];\n    }\n\n    if (Util.isDefined(this.component.sortColumnOrder)) {\n      dataToStore['sort-column'] = this.component.sortColumnOrder.columnName + Codes.COLUMNS_ALIAS_SEPARATOR +\n        (this.component.sortColumnOrder.ascendent ? Codes.ASC_SORT : Codes.DESC_SORT);\n    }\n    dataToStore['filter-case-sensitive'] = this.component.isFilterCaseSensitive();\n\n    if (this.component.quickFilter && Util.isDefined(this.component.quickFilterComponent)) {\n      dataToStore['quickFilterActiveColumns'] = this.component.quickFilterComponent.getActiveColumns().join(Codes.ARRAY_INPUT_SEPARATOR);\n    }\n    return dataToStore;\n  }\n\n}\n\n\n","import { DefaultServiceComponentStateClass } from './o-component-state.class';\n\nexport class OListComponentStateClass extends DefaultServiceComponentStateClass {\n  protected 'sort-columns': string;\n  'quickFilterActiveColumns': string;\n  selection: any[];\n\n  get sortColumns(): string {\n    return this['sort-columns'];\n  }\n\n  set sortColumns(value: string) {\n    this['sort-columns'] = value;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { OListComponent } from '../../components/list/o-list.component';\nimport { Codes } from '../../util/codes';\nimport { Util } from '../../util/util';\nimport { AbstractComponentStateService } from './o-component-state.service';\nimport { OListComponentStateClass } from './o-list-component-state.class';\n\n\n@Injectable()\nexport class OListComponentStateService extends AbstractComponentStateService<OListComponentStateClass, OListComponent> {\n\n  initialize(component: OListComponent) {\n    this.state = new OListComponentStateClass();\n    super.initialize(component);\n  }\n\n  initializeState(state: OListComponentStateClass) {\n    super.initializeState(state);\n  }\n\n  getDataToStore(): any {\n    let dataToStore = Object.assign({}, this.state);\n    dataToStore['query-rows'] = this.component.queryRows;\n    if (!this.component.storePaginationState) {\n      delete dataToStore['queryRecordOffset'];\n    }\n    if (this.component.quickFilter && Util.isDefined(this.component.quickFilterComponent)) {\n      dataToStore['quickFilterActiveColumns'] = this.component.quickFilterComponent.getActiveColumns().join(Codes.ARRAY_INPUT_SEPARATOR);\n    }\n    dataToStore['filter-case-sensitive'] = this.component.isFilterCaseSensitive();\n    dataToStore.selection = this.state.selection;\n    return dataToStore;\n  }\n\n  refreshSelection() {\n    this.state.selection = this.getSelectionState();\n  }\n\n  protected getSelectionState(): any[] {\n    const selection = [];\n    if (this.component) {\n      // storing selected items keys values\n      const keys = this.component.getKeys();\n      this.component.getSelectedItems().forEach(item => {\n        const data = {};\n        keys.forEach(key => {\n          data[key] = item[key];\n        });\n        selection.push(data);\n      });\n    }\n    return selection;\n  }\n}\n\n\n","import type { OColumn } from '../../components/table/column/o-column.class';\nimport {\n  OFilterColumn\n} from '../../components/table/extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component';\nimport { OColumnDisplay } from '../../types/table/o-column-display.type';\nimport { OColumnSearchable } from '../../types/table/o-column-searchable.type';\nimport { OColumnValueFilter } from '../../types/table/o-column-value-filter.type';\nimport { DefaultServiceComponentStateClass } from './o-component-state.class';\nimport { OTableConfiguration } from '../../types/table/o-table-configuration.type';\nimport { OTableFiltersStatus, OTableStoredFilter } from '../../types/table/o-table-filter-status.type';\nimport { OFilterBuilderValues } from '../../types/o-filter-builder-values.type';\nimport { Util } from '../../util/util';\nimport { OGroupedColumnTypes } from '../../types';\n\nexport class OTableComponentStateClass extends DefaultServiceComponentStateClass {\n  // sort\n  protected 'sort-columns': string;\n  // columns-display\n  protected 'oColumns-display': OColumnDisplay[];\n  protected 'select-column-visible': boolean;\n  // quick-filter\n  protected 'filter': string;\n  protected 'oColumns': OColumnSearchable[];\n  // columns-filter\n  protected 'column-value-filters': OColumnValueFilter[];\n  // page\n  'currentPage': number;\n  // selection\n  'selection': any[];\n  // initial-configuration\n  protected 'initial-configuration': OTableComponentStateClass;\n  // filter-column-active\n  protected 'filter-column-active': boolean;\n  // filter-columns\n  protected 'filter-columns': OFilterColumn[];\n  protected 'filter-column-active-by-default': boolean;\n  // grouped-columns\n  protected 'grouped-columns': string[];\n  // stored filters and configurations\n  protected 'user-stored-filters': OTableFiltersStatus[];\n  protected 'user-stored-configurations': OTableConfiguration[];\n  // stored filters builder values\n  protected 'filter-builder-values': OFilterBuilderValues[];\n\n  protected 'grouped-column-types': OGroupedColumnTypes[] = [];\n\n  public get filterBuilderValues(): OFilterBuilderValues[] {\n    return this['filter-builder-values'];\n  }\n  public set filterBuilderValues(value: OFilterBuilderValues[]) {\n    this['filter-builder-values'] = value;\n  }\n\n  get selectColumnVisible(): boolean {\n    return this['select-column-visible'];\n  }\n\n  set selectColumnVisible(value: boolean) {\n    this['select-column-visible'] = value;\n  }\n\n  get quickFilterValue(): string {\n    return this['filter'];\n  }\n\n  set quickFilterValue(value: string) {\n    this['filter'] = value;\n  }\n\n  get columnsDisplay(): OColumnDisplay[] {\n    return this['oColumns-display'];\n  }\n\n  set columnsDisplay(value: OColumnDisplay[]) {\n    this['oColumns-display'] = value;\n  }\n\n  getColumnDisplay(oCol: OColumn): OColumnDisplay {\n    return (this.columnsDisplay || []).find(col => col.attr === oCol.attr);\n  }\n\n  get initialConfiguration(): OTableComponentStateClass {\n    return this['initial-configuration'];\n  }\n\n  set initialConfiguration(value: OTableComponentStateClass) {\n    this['initial-configuration'] = value;\n  }\n\n  get sortColumns(): string {\n    return this['sort-columns'];\n  }\n\n  set sortColumns(value: string) {\n    this['sort-columns'] = value;\n  }\n  get groupedColumnTypes(): OGroupedColumnTypes[] {\n    return this['grouped-column-types'];\n  }\n  set groupedColumnTypes(value: OGroupedColumnTypes[]) {\n    this['grouped-column-types'] = value;\n  }\n  get filterColumns(): OFilterColumn[] {\n    return this['filter-columns'];\n  }\n\n  set filterColumns(value: OFilterColumn[]) {\n    this['filter-columns'] = value;\n  }\n\n  get filterColumnActiveByDefault(): boolean {\n    return this['filter-column-active-by-default'];\n  }\n\n  get groupedColumns(): string[] {\n    return this['grouped-columns'];\n  }\n\n  set groupedColumns(value: string[]) {\n    this['grouped-columns'] = value;\n  }\n\n  get columnValueFilters(): OColumnValueFilter[] {\n    return this['column-value-filters'] || [];\n  }\n\n  set columnValueFilters(value: OColumnValueFilter[]) {\n    this['column-value-filters'] = value;\n  }\n\n  get storedFilters(): OTableFiltersStatus[] {\n    return this['user-stored-filters'] || [];\n  }\n\n  addStoredFilter(filter: OTableFiltersStatus) {\n    if (!Util.isDefined(this['user-stored-filters'])) {\n      this['user-stored-filters'] = [];\n    }\n    this.storedFilters.push(filter);\n  }\n\n  deleteStoredFilter(filterName: string) {\n    const index = this.storedFilters.findIndex((item: OTableFiltersStatus) => item.name === filterName);\n    if (index >= 0) {\n      this.storedFilters.splice(index, 1);\n    }\n  }\n\n  getStoredFilter(filterName: string): OTableStoredFilter {\n    let result: OTableStoredFilter;\n    const filter = this.storedFilters.find((item: OTableFiltersStatus) => item.name === filterName);\n    if (filter) {\n      result = filter['stored-filter'];\n    }\n    return result;\n  }\n\n  applyFilter(filterName: string) {\n    const filter = this.getStoredFilter(filterName);\n    if (filter) {\n      this.columnValueFilters = filter['column-value-filters'];\n      this.quickFilterValue = filter['filter'];\n      this.filterCaseSensitive = filter['filter-case-sensitive'];\n      this.filterBuilderValues = filter['filter-builder-values'];\n      this.oColumns = filter['oColumns'];\n    }\n  }\n\n  get storedConfigurations(): OTableConfiguration[] {\n    return this['user-stored-configurations'] || [];\n  }\n\n  addStoredConfiguration(configuration: OTableConfiguration) {\n    if (!Util.isDefined(this['user-stored-configurations'])) {\n      this['user-stored-configurations'] = [];\n    }\n    this.storedConfigurations.push(configuration);\n  }\n\n  deleteStoredConfiguration(configurationName: string) {\n    const index = this.storedConfigurations.findIndex((item: OTableConfiguration) => item.name === configurationName);\n    if (index >= 0) {\n      this.storedConfigurations.splice(index, 1);\n    }\n  }\n\n  getStoredConfiguration(configurationName: string): OTableConfiguration {\n    return this.storedConfigurations.find((item: OTableConfiguration) => item.name === configurationName);\n  }\n\n  applyConfiguration(configurationName: string) {\n    const configuration = this.getStoredConfiguration(configurationName);\n    if (configuration) {\n      const properties = configuration['stored-properties'] || [];\n      const conf: OTableComponentStateClass = configuration['stored-configuration'];\n      this.copyPropertiesFromConfiguration(properties, conf);\n    }\n  }\n\n  reset(pageable: boolean) {\n    const result = {\n      'user-stored-filters': this.storedFilters,\n      'user-stored-configurations': this.storedConfigurations\n    };\n    if (pageable) {\n      result['totalQueryRecordsNumber'] = this.totalQueryRecordsNumber;\n    }\n    result['currentPage'] = 0;\n\n    Object.assign(this, {});\n    Object.assign(this, result);\n  }\n\n  protected copyPropertiesFromConfiguration(properties: string[], configuration: OTableComponentStateClass) {\n    properties.forEach(property => {\n      switch (property) {\n        case 'sort-columns':\n          this.sortColumns = configuration['sort-columns'];\n          break;\n        case 'oColumns-display':\n          this.columnsDisplay = configuration['oColumns-display'];\n          this.selectColumnVisible = configuration['select-column-visible'];\n          break;\n        case 'quick-filter':\n        case 'columns-filter':\n          this.columnValueFilters = configuration['column-value-filters'];\n          break;\n        case 'grouped-columns':\n          this.groupedColumns = configuration['grouped-columns'];\n          break;\n        case 'page':\n          this.currentPage = configuration['currentPage'];\n          this.totalQueryRecordsNumber = configuration['totalQueryRecordsNumber'];\n          this.queryRecordOffset = configuration['queryRecordOffset'];\n          this.queryRows = configuration['query-rows'];\n          break;\n        case 'filter-builder':\n          this.filterBuilderValues = configuration['filter-builder'];\n          break;\n      }\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport type { OColumn } from '../../components/table/column/o-column.class';\nimport { OTableComponent } from '../../components/table/o-table.component';\nimport { OFilterDefinition } from '../../types/o-filter-definition.type';\nimport { OColumnDisplay } from '../../types/table/o-column-display.type';\nimport { OColumnSearchable } from '../../types/table/o-column-searchable.type';\nimport { OTableConfiguration } from '../../types/table/o-table-configuration.type';\nimport { OTableFiltersStatus, OTableStoredFilter } from '../../types/table/o-table-filter-status.type';\nimport { Codes } from '../../util/codes';\nimport { Util } from '../../util/util';\nimport { AbstractComponentStateService } from './o-component-state.service';\nimport { OTableComponentStateClass } from './o-table-component-state.class';\n\n@Injectable()\nexport class OTableComponentStateService extends AbstractComponentStateService<OTableComponentStateClass, OTableComponent> {\n\n  initialize(component: OTableComponent) {\n    this.state = new OTableComponentStateClass();\n    super.initialize(component);\n  }\n\n  initializeState(state: OTableComponentStateClass) {\n    super.initializeState(state);\n    const initialConfigurationRawObj = state.initialConfiguration || {};\n    state.initialConfiguration = new OTableComponentStateClass();\n    state.initialConfiguration.setData(initialConfigurationRawObj);\n  }\n\n  refreshSelection() {\n    this.state.selection = this.getSelectionState();\n  }\n\n  getDataToStore(): any {\n    const dataToStore: any = {};\n    const propertiesKeys = [\n      'sort-columns',\n      'oColumns-display',\n      'columns-filter',\n      'quick-filter',\n      'page',\n      'selection',\n      'initial-configuration',\n      'filter-columns',\n      'filter-column-active',\n      'grouped-columns',\n      'grouped-column-types',\n      'user-stored-filters',\n      'user-stored-configurations'\n    ];\n    Object.assign(dataToStore, this.getTablePropertiesToStore(propertiesKeys));\n    return dataToStore;\n  }\n\n  storeFilter(filter: OFilterDefinition) {\n    let newFilter: OTableFiltersStatus = { name: filter.name, description: filter.description };\n    const storedFilter = {}\n    Object.assign(storedFilter, this.getColumnFiltersState());\n    Object.assign(storedFilter, this.getColumnsQuickFilterState());\n    Object.assign(storedFilter, this.getFilterBuilderState());\n    newFilter['stored-filter'] = storedFilter as OTableStoredFilter;\n    this.state.addStoredFilter(newFilter);\n  }\n\n  storeConfiguration(configurationAgs: OTableConfiguration, tableProperties: any[]) {\n    const newConfiguration: OTableConfiguration = {};\n    this.component.storePaginationState = true;\n    const storedConfiguration = this.getTablePropertiesToStore(tableProperties);\n    this.component.storePaginationState = false;\n\n    newConfiguration['stored-configuration'] = storedConfiguration;\n    Object.assign(newConfiguration, configurationAgs);\n    newConfiguration['stored-properties'] = tableProperties;\n\n    this.state.addStoredConfiguration(newConfiguration);\n  }\n\n  protected getTablePropertiesToStore(properties: string[]): any {\n    const result = {};\n    properties.forEach(prop => {\n      Object.assign(result, this.getTablePropertyToStore(prop));\n    });\n    return result;\n  }\n\n  protected getTablePropertyToStore(property: string): any {\n    let result: any = {};\n    switch (property) {\n      case 'sort-columns':\n        result = this.getSortState();\n        break;\n      case 'oColumns-display':\n        result = this.getColumnsDisplayState();\n        break;\n      case 'quick-filter':\n        result = this.getColumnsQuickFilterState();\n        break;\n      case 'columns-filter':\n        result = this.getColumnFiltersState();\n        break;\n      case 'page':\n        result = this.getPageState();\n        break;\n      case 'selection':\n        result['selection'] = this.getSelectionState();\n        break;\n      case 'initial-configuration':\n        result = this.getInitialConfigurationState();\n        break;\n      case 'filter-column-active':\n        result['filter-column-active'] = this.component.isColumnFiltersActive;\n        break;\n      case 'filter-columns':\n        result['filter-columns'] = this.component.filterColumns;\n        break;\n      case 'grouped-columns':\n        result['grouped-columns'] = this.component.groupedColumnsArray;\n        break;\n      case 'grouped-column-types':\n        result['grouped-column-types'] = this.component.groupedColumnTypes;\n        break;\n      case 'user-stored-filters':\n        result['user-stored-filters'] = this.state.storedFilters;\n        break;\n      case 'user-stored-configurations':\n        result['user-stored-configurations'] = this.state.storedConfigurations;\n        break;\n      case 'filter-builder':\n        if (this.component.filterBuilder) {\n          result['filter-builder'] = this.component.filterBuilder.getFilterValues();\n        }\n        break;\n    }\n    return result;\n  }\n\n  protected getColumnsDisplayState() {\n    const oColumnsData = [];\n    this.component.oTableOptions.columns.forEach((oCol: OColumn) => {\n      oColumnsData.push({\n        attr: oCol.attr,\n        visible: oCol.visible,\n        width: oCol.getWidthToStore()\n      });\n    });\n    return {\n      'oColumns-display': oColumnsData,\n      'select-column-visible': this.component.oTableOptions.selectColumn.visible\n    };\n  }\n\n  protected getColumnsQuickFilterState() {\n    const tableOptions = this.component.oTableOptions;\n    const oColumnsData: OColumnSearchable[] = [];\n    tableOptions.columns.forEach((oCol: OColumn) => {\n      oColumnsData.push({\n        attr: oCol.attr,\n        searchable: oCol.searchable,\n        searching: oCol.searching\n      });\n    });\n    return {\n      'oColumns': oColumnsData,\n      'filter-case-sensitive': tableOptions.filterCaseSensitive,\n      'filter': this.component.oTableQuickFilterComponent ? this.component.oTableQuickFilterComponent.value : ''\n    };\n  }\n\n  protected getFilterBuilderState(): any {\n    const result = {};\n    if (this.component.filterBuilder) {\n      let filterBuilder = this.component.filterBuilder.getFilterValues();\n      if (!Util.isObjectEmpty(filterBuilder)) {\n        result['filter-builder-values'] = filterBuilder;\n      }\n    }\n    return result;\n  }\n\n\n  protected getColumnFiltersState() {\n    const result = {};\n    if (this.component.dataSource) {\n      const columnValueFilters = this.component.dataSource.getColumnValueFilters();\n      if (columnValueFilters.length > 0) {\n        result['column-value-filters'] = columnValueFilters;\n      }\n    }\n    return result;\n  }\n\n  protected getPageState(): any {\n    const result: any = {};\n\n    if (this.component.matpaginator) {\n      result['query-rows'] = this.component.matpaginator.pageSize;\n    } else if (this.component.state.queryRows) {\n      result['query-rows'] = this.component.state.queryRows;\n    } else {\n      result['query-rows'] = this.component.originalQueryRows;\n    };\n\n    if (this.component.currentPage > 0 && this.component.storePaginationState) {\n      result.currentPage = this.component.currentPage;\n    }\n    if (this.component.pageable && this.component.storePaginationState) {\n      result.totalQueryRecordsNumber = this.component.state.totalQueryRecordsNumber;\n      result.queryRecordOffset = Math.max(\n        (this.component.state.queryRecordOffset - this.component.dataSource.renderedData.length),\n        (this.component.state.queryRecordOffset - this.component.queryRows)\n      );\n    }\n    return result;\n  }\n\n  protected getSelectionState(): any {\n    const selection = [];\n    if (this.component && this.component.keepSelectedItems) {\n      // storing selected items keys values\n      const tableKeys = this.component.getKeys();\n      this.component.getSelectedItems().forEach(item => {\n        const data = {};\n        tableKeys.forEach(key => {\n          data[key] = item[key];\n        });\n        selection.push(data);\n      });\n    }\n    return selection;\n  }\n\n  protected getInitialConfigurationState(): any {\n    const oColumnsData: OColumnDisplay[] = [];\n    Util.parseArray(this.component.visibleColumns, true).forEach((columnAttr: string) => {\n      let oCol = this.component.getOColumn(columnAttr);\n      oColumnsData.push({\n        attr: oCol.attr,\n        visible: true,\n        width: oCol.definition ? oCol.definition.originalWidth : undefined\n      });\n    });\n    return {\n      'initial-configuration': {\n        'oColumns-display': oColumnsData,\n        'sort-columns': this.component.sortColumns,\n        'select-column-visible': this.component.oTableOptions.selectColumn.visible,\n        'filter-case-sensitive': this.component.filterCaseSensitive,\n        'query-rows': this.component.originalQueryRows,\n        'filter-column-active-by-default': this.component.filterColumnActiveByDefault,\n        'filter-columns': this.component.originalFilterColumns,\n        'grouped-columns': this.component.originalGroupedColumnsArray\n      }\n    };\n  }\n\n  protected getSortState() {\n    const sortColumns = [];\n    this.component.sort?.getSortColumns().forEach(sortData => {\n      sortColumns.push(sortData.id + Codes.COLUMNS_ALIAS_SEPARATOR + sortData.direction);\n    });\n    return {\n      'sort-columns': sortColumns.join(Codes.ARRAY_INPUT_SEPARATOR)\n    };\n  }\n}\n\n\n","import { HttpClient } from '@angular/common/http';\nimport { Injector } from '@angular/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { catchError, map, share } from 'rxjs/operators';\n\nimport { AppConfig } from '../../config/app-config';\nimport { Codes } from '../../util/codes';\nimport { OTranslateService } from './o-translate.service';\n\nexport class OTranslateHttpLoader extends TranslateHttpLoader {\n\n  static BUNDLE_KEY = 'key';\n  static BUNDLE_VALUE = 'value';\n\n  protected appConfig: AppConfig;\n  protected httpClient: HttpClient;\n\n  constructor(\n    httpClient: HttpClient,\n    prefix: string = OTranslateService.ASSETS_PATH,\n    suffix: string = OTranslateService.ASSETS_EXTENSION,\n    protected injector: Injector\n  ) {\n    super(httpClient, prefix, suffix);\n    this.appConfig = this.injector.get(AppConfig);\n    this.httpClient = httpClient;\n  }\n\n  getAssetsPath(): string {\n    return this.prefix;\n  }\n\n  getAssetsExtension(): string {\n    return this.suffix;\n  }\n\n  getLocalTranslation(lang: string): Observable<any> {\n    let innerObserver: any;\n    const dataObservable = new Observable(observer => innerObserver = observer).pipe(share());\n    super.getTranslation(lang)\n      .subscribe((res) => {\n        innerObserver.next(res);\n        innerObserver.complete();\n      }, error => {\n        innerObserver.next(undefined);\n      },\n        () => innerObserver.complete());\n    return dataObservable;\n  }\n\n  getTranslation(lang: string): any {\n    const translationOrigins: any[] = [];\n\n    translationOrigins.push(this.getLocalTranslation(lang));\n\n    if (this.appConfig.useRemoteBundle()) {\n      translationOrigins.push(this.getRemoteBundle(lang));\n    }\n\n    let innerObserver: any;\n    const dataObservable = new Observable(observer => innerObserver = observer).pipe(share());\n\n    combineLatest(translationOrigins).subscribe((res: any[]) => {\n      const staticBundle = res[0] || {};\n      const remoteBundle = res[1] || {};\n      const allBundles = Object.assign(staticBundle, remoteBundle);\n      innerObserver.next(allBundles);\n    });\n    return dataObservable;\n  }\n\n  getRemoteBundle(lang: string): Observable<any> {\n    const bundleEndpoint = this.appConfig.getBundleEndpoint();\n    if (!bundleEndpoint) {\n      return of([]);\n    }\n    const url = bundleEndpoint + '?lang=' + lang;\n\n    return this.httpClient.get(url).pipe(\n      map((resp: any) => {\n        if (resp.code === Codes.ONTIMIZE_SUCCESSFUL_CODE) {\n          return this.parseBundleResponse(resp.data);\n        }\n        return resp;\n      }),\n      catchError(err => {\n        console.log('Remote Bundle service is not available', err);\n        return of([]);\n      })\n    );\n  }\n\n  protected parseBundleResponse(data: any[]): any {\n    const result = {};\n    if (data) {\n      data.forEach((item) => {\n        result[item[OTranslateHttpLoader.BUNDLE_KEY]] = item[OTranslateHttpLoader.BUNDLE_VALUE];\n      });\n    }\n    return result;\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateDefaultParser } from '@ngx-translate/core';\n\nimport { Util } from '../../util/util';\n\n@Injectable()\nexport class OTranslateParser extends TranslateDefaultParser {\n  public templateMatcher: RegExp = /{\\s?([0-9][^{}\\s]*)\\s?}/g;\n\n  public interpolate(expr: string, params?: any): string {\n    if (typeof expr !== 'string' || !params) {\n      return expr;\n    }\n    return expr.replace(this.templateMatcher, (substring: string, index: string) => {\n      const argValue = Util.isDefined(params[index]) ? params[index] : '';\n      return !isNaN(parseInt(index, 10)) ? argValue : substring;\n    });\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, Injector } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { AppConfig } from '../config/app-config';\nimport { LocalStorageService } from './local-storage.service';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AppearanceService {\n  readonly darkThemeClass = 'o-dark';\n\n  private isDarkModeSubject = new BehaviorSubject<boolean>(false);\n  isDarkMode$: Observable<boolean> = this.isDarkModeSubject.asObservable();\n  protected _appConfig: AppConfig;\n  protected _document: Document;\n  protected localStorageService: LocalStorageService;\n  constructor(protected injector: Injector) {\n    this.localStorageService = this.injector.get(LocalStorageService);\n    this._document = inject(DOCUMENT);\n    const config = this.localStorageService.getStoredData();\n\n    this.isDarkMode$.subscribe(x => this.updateThemeClass(x));\n\n    if (config && config[\"theme\"] && typeof config[\"theme\"].isDark === 'boolean') {\n      const isDark = config[\"theme\"].isDark;\n      this.isDarkModeSubject.next(isDark);\n    }\n\n  }\n\n  setDarkMode(isDarkMode: boolean) {\n    const config = this.localStorageService.getStoredData();\n    if (config) {\n      config[\"theme\"] = config[\"theme\"] || {};\n      config[\"theme\"].isDark = isDarkMode;\n    }\n    this.localStorageService.setLocalStorage(config);\n    this.isDarkModeSubject.next(isDarkMode);\n  }\n\n  isDarkMode(): boolean {\n    return this.isDarkModeSubject.value;\n  }\n\n  updateThemeClass(isDark?: boolean) {\n    if (isDark) {\n      this._document.body.classList.add(this.darkThemeClass);\n    } else {\n      this._document.body.classList.remove(this.darkThemeClass);\n    }\n  }\n}\n","export class CurrencyUtil {\n\n  static languageToCurrencyCode = {\n    'es': 'EUR', // Spanish\n    'en': 'USD', // English\n    'pt': 'BRL', // Portuguese\n    'fr': 'EUR', // French\n    'de': 'EUR', // German\n    'it': 'EUR', // Italian\n    'ja': 'JPY', // Japanese\n    'zh': 'CNY', // Chinese\n    'ru': 'RUB', // Russian\n    'ar': 'AED', // Arabic\n    'cr': 'CRC', // Costa Rican Colón\n    'ng': 'NGN', // Nigerian Naira\n    'ph': 'PHP', // Philippine Peso\n    'pl': 'PLN', // Polish Zloty\n    'py': 'PYG', // Paraguayan Guarani\n    'th': 'THB', // Thai Baht\n    'ua': 'UAH', // Ukrainian Hryvnia\n    'vn': 'VND', // Vietnamese Dong\n  };\n\n  static currencyCodeToSymbol = {\n    EUR: '€',     // Euro\n    USD: '$',     // US Dollar\n    BRL: 'R$',    // Brazilian Real\n    JPY: '¥',     // Japanese Yen\n    CNY: '¥',     // Chinese Yuan\n    RUB: '₽',     // Russian Ruble\n    AED: 'د.إ',   // UAE Dirham\n    CRC: '₡',     // Costa Rican Colón\n    NGN: '₦',     // Nigerian Naira\n    PHP: '₱',     // Philippine Peso\n    PLN: 'zł',    // Polish Zloty\n    PYG: '₲',     // Paraguayan Guarani\n    THB: '฿',     // Thai Baht\n    UAH: '₴',     // Ukrainian Hryvnia\n    VND: '₫',     // Vietnamese Dong\n  };\n\n  static getCurrencyCode(language: string): string {\n    const code = this.languageToCurrencyCode[language];\n    if (code) {\n      return code;\n    } else {\n      return 'EUR';\n    }\n  }\n  static getCurrencyCodeFromSymbol(symbol: string): string | undefined {\n    const currencyCode = Object.keys(this.currencyCodeToSymbol).find(\n      code => this.currencyCodeToSymbol[code] === symbol\n    );\n\n    return currencyCode;\n  }\n}","import { Component, EventEmitter, Injector, OnInit, Type, ViewEncapsulation } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { Codes } from '../../util/codes';\n\nimport { ActivatedRoute } from '@angular/router';\nimport { PermissionsService } from '../../services';\nimport { OPermissions } from '../../types';\nimport { Util } from '../../util';\n\nexport const DEFAULT_INPUTS_O_BUTTON = [\n  'oattr: attr',\n  'olabel: label',\n  // type [BASIC|RAISED|STROKED|FLAT|ICON|FAB|MINI-FAB]: The type of button. Default: STROKED.\n  'otype: type',\n  // icon [string]: Name of google icon (see https://design.google.com/icons/)\n  'icon',\n  'svgIcon : svg-icon',\n  'iconPosition: icon-position',\n  'image',\n  // enabled [yes|no|true|false]: Whether the button is enabled. Default: yes\n  'enabled',\n  // color: Theme color palette for the component.\n  'color'\n];\nexport const DEFAULT_OUTPUTS_O_BUTTON = [\n  'onClick',\n  'click'\n];\n@Component({\n  selector: 'o-button',\n  inputs: DEFAULT_INPUTS_O_BUTTON,\n  outputs: DEFAULT_OUTPUTS_O_BUTTON,\n  templateUrl: './o-button.component.html',\n  styleUrls: ['./o-button.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-button]': 'true',\n    '[class.o-button-icon-position-top]': 'iconPosition===\"top\"',\n    '[class.o-button-icon-position-bottom]': 'iconPosition===\"bottom\"'\n\n  }\n})\nexport class OButtonComponent implements OnInit {\n\n  protected static DEFAULT_TYPE = 'STROKED';\n\n  protected oattr: string;\n  public olabel: string;\n  protected otype: string;\n  public icon: string;\n  public svgIcon: string;\n  public iconPosition: string = Codes.ICON_POSITION_LEFT; // left (default)\n  public image: string;\n  @BooleanInputConverter() enabled: boolean = true;\n  public color: ThemePalette;\n  public visible: boolean = true;\n\n  /* Outputs */\n  public onClick: EventEmitter<Event> = new EventEmitter<Event>();\n  public click: EventEmitter<Event> = new EventEmitter<Event>();\n  protected permissionsService: PermissionsService;\n  protected permissions: OPermissions;\n\n  constructor(protected injector: Injector, protected actRoute: ActivatedRoute) {\n    this.otype = OButtonComponent.DEFAULT_TYPE;\n    this.permissionsService = this.injector.get<PermissionsService>(PermissionsService as Type<PermissionsService>);\n  }\n\n  ngOnInit(): void {\n    if (this.otype) {\n      this.otype = this.otype.toUpperCase();\n    }\n    this.permissions = this.permissionsService.getOButtonPermissions(this.oattr, this.actRoute);\n    if (Util.isDefined(this.permissions)) {\n      this.enabled = this.permissions.enabled;\n      this.visible = this.permissions.visible;\n    }\n  }\n\n  onButtonClick(event: MouseEvent): void {\n    event.stopPropagation();\n    if (this.enabled) {\n      this.click.emit(event);\n      this.onClick.emit(event);\n    }\n  }\n\n  get needsIconButtonClass(): boolean {\n    return (this.icon !== undefined || this.svgIcon !== undefined) && (this.olabel === undefined || this.olabel === '');\n  }\n\n  isFab(): boolean {\n    return this.otype === 'FAB';\n  }\n\n  isRaised(): boolean {\n    return this.otype === 'RAISED';\n  }\n\n  isFlat(): boolean {\n    return this.otype === 'FLAT';\n  }\n\n  isStroked(): boolean {\n    return (this.otype === 'STROKED' || !this.otype);\n  }\n\n  isBasic(): boolean {\n    return this.otype === 'BASIC';\n  }\n\n  isMiniFab(): boolean {\n    return this.otype === 'FAB-MINI';\n  }\n\n  isIconButton(): boolean {\n    return this.otype === 'ICON';\n  }\n  isVisible(): boolean {\n    return this.visible;\n  }\n}\n","<button type=\"button\" (click)=\"onButtonClick($event)\" *ngIf=\"isBasic() && isVisible()\" mat-button [class.mat-icon-button]=\"needsIconButtonClass\"\n  [disabled]=\"!enabled\" [color]=\"color\">\n  <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n</button>\n\n<button type=\"button\" (click)=\"onButtonClick($event)\" *ngIf=\"isRaised() && isVisible()\" mat-raised-button class=\"mat-raised-button\"\n  [class.mat-icon-button]=\"needsIconButtonClass\" [disabled]=\"!enabled\" [color]=\"color\">\n  <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n</button>\n\n<button type=\"button\" (click)=\"onButtonClick($event)\" *ngIf=\"isStroked() && isVisible()\" mat-stroked-button\n  [class.mat-icon-button]=\"needsIconButtonClass\" [disabled]=\"!enabled\" [color]=\"color\">\n  <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n</button>\n\n<button type=\"button\" (click)=\"onButtonClick($event)\" *ngIf=\"isFlat() && isVisible()\" mat-flat-button [class.mat-icon-button]=\"needsIconButtonClass\"\n  [disabled]=\"!enabled\" [color]=\"color\">\n  <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n</button>\n\n<button type=\"button\" (click)=\"onButtonClick($event)\" *ngIf=\"isIconButton() && isVisible()\" mat-icon-button\n  [class.mat-icon-button]=\"needsIconButtonClass\" [disabled]=\"!enabled\" [color]=\"color\">\n  <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n</button>\n\n<button type=\"button\" (click)=\"onButtonClick($event)\" *ngIf=\"isFab() && isVisible()\" mat-fab [disabled]=\"!enabled\" [color]=\"color\">\n  <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n</button>\n\n<button type=\"button\" (click)=\"onButtonClick($event)\" *ngIf=\"isMiniFab() && isVisible()\" mat-mini-fab [disabled]=\"!enabled\" [color]=\"color\">\n  <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n</button>\n\n\n<ng-template #iconTemplate>\n  <img src=\"{{ image }}\" class=\"o-button-image\" *ngIf=\"image!=undefined\" alt=\"button image\" />\n  <mat-icon class=\"material-icons o-button-icon\" *ngIf=\"icon!==undefined\" style=\"vertical-align:middle\">{{ icon }}\n  </mat-icon>\n  <mat-icon class=\"material-icons o-button-icon\" *ngIf=\"svgIcon!==undefined\" style=\"vertical-align:middle\" [svgIcon]=\"svgIcon\"></mat-icon>\n</ng-template>\n\n<ng-template #buttonTemplate>\n\n  <ng-container *ngIf=\"iconPosition==='left' || iconPosition==='top' \">\n    <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n  </ng-container>\n\n  <br *ngIf=\"iconPosition==='top'\" />\n\n  {{ olabel | oTranslate }}\n\n  <br *ngIf=\"iconPosition==='bottom'\" />\n\n  <ng-container *ngIf=\"iconPosition==='right' || iconPosition==='bottom'\">\n    <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n  </ng-container>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OButtonComponent } from './o-button.component';\n\n@NgModule({\n  declarations: [OButtonComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OButtonComponent]\n})\nexport class OButtonModule { }\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  Injector,\n  OnDestroy,\n  QueryList,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { OTranslateService } from '../../services/translate/o-translate.service';\n\nexport const DEFAULT_INPUTS_O_MENU_CARD = [\n  'title',\n  'image',\n  'icon',\n  'tooltip',\n  'buttonText : button-text',\n  'disabledButton : disabled-button',\n  'mainContainerLayout : main-container-layout',\n  'secondaryContainerLayout : secondary-container-layout',\n  'route',\n  'detailComponent : detail-component',\n  'detailComponentInputs : detail-component-inputs',\n  'action'\n];\n\nexport const DEFAULT_OUTPUTS_O_MENU_CARD = [];\n\n@Component({\n  selector: 'o-card-menu-item',\n  templateUrl: './o-card-menu-item.component.html',\n  styleUrls: ['./o-card-menu-item.component.scss'],\n  inputs: DEFAULT_INPUTS_O_MENU_CARD,\n  outputs: DEFAULT_OUTPUTS_O_MENU_CARD,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-card-menu-item]': 'true',\n    '[class.mat-elevation-z1]': 'true',\n    '[class.compact]': '!showSecondaryContainer'\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OCardMenuItemComponent implements AfterViewInit, OnDestroy {\n\n  title: string;\n  image: string;\n  icon: string;\n  tooltip: string;\n  buttonText: string;\n  @BooleanInputConverter()\n  disabledButton: boolean = false;\n  mainContainerLayout = 'column';\n  secondaryContainerLayout = 'column';\n  route: string;\n  action: () => void;\n  detailComponent: any;\n  detailComponentInputs: object;\n\n  protected _detailComponentContainer: ViewContainerRef;\n\n  @ViewChild('menuCardContent', { read: ViewContainerRef })\n  set detailComponentContainer(content: ViewContainerRef) {\n    this._detailComponentContainer = content;\n  }\n\n  get detailComponentContainer(): ViewContainerRef {\n    return this._detailComponentContainer;\n  }\n\n  protected translateService: OTranslateService;\n  protected translateServiceSubscription: Subscription;\n\n  @ContentChildren('.secondary-container')\n  secondaryContent: QueryList<any>;\n\n  protected _showSecondaryContainer: boolean = true;\n\n  constructor(\n    protected injector: Injector,\n    protected router: Router,\n    protected actRoute: ActivatedRoute,\n    protected cd: ChangeDetectorRef,\n    protected elRef: ElementRef\n  ) {\n    this.translateService = this.injector.get(OTranslateService);\n    this.translateServiceSubscription = this.translateService.onLanguageChanged.subscribe(() => {\n      this.cd.detectChanges();\n    });\n  }\n\n  ngAfterViewInit() {\n    if (this.detailComponentContainer && this.detailComponent) {\n      const ref = this.detailComponentContainer.createComponent(this.detailComponent);\n      if (this.detailComponentInputs && ref.instance) {\n        const keys = Object.keys(this.detailComponentInputs);\n        for (let i = 0, len = keys.length; i < len; i++) {\n          ref.instance[keys[i]] = this.detailComponentInputs[keys[i]];\n        }\n      }\n    }\n    this.showSecondaryContainer = (this.detailComponentContainer && this.detailComponent) || this.secondaryContent.length > 0;\n    this.cd.detectChanges();\n  }\n\n  ngOnDestroy() {\n    if (this.translateServiceSubscription) {\n      this.translateServiceSubscription.unsubscribe();\n    }\n  }\n\n  useImage(): boolean {\n    return this.image !== undefined;\n  }\n\n  useIcon(): boolean {\n    return this.icon !== undefined && this.image === undefined;\n  }\n\n  onButtonClick() {\n    if (this.route) {\n      this.router.navigate([this.route], {\n        relativeTo: this.actRoute\n      });\n    } else if (this.action) {\n      this.action();\n    }\n  }\n\n  onClick() {\n    if (this.buttonText === undefined) {\n      this.onButtonClick();\n    }\n  }\n\n  get showSecondaryContainer(): boolean {\n    return this._showSecondaryContainer;\n  }\n\n  set showSecondaryContainer(val: boolean) {\n    this._showSecondaryContainer = val;\n    if (val) {\n      this.elRef.nativeElement.classList.remove('compact');\n    } else {\n      this.elRef.nativeElement.classList.add('compact');\n    }\n  }\n\n}\n","<div class=\"o-card-menu-item-content\" (click)=\"onClick()\" fxLayout=\"column\" fxFill fxLayoutAlign=\"space-between center\">\n\n  <div *ngIf=\"showSecondaryContainer\" class=\"o-card-menu-item-secondary\" fxFlex=\"50\" [fxLayout]=\"secondaryContainerLayout\"\n    fxLayoutAlign=\"space-around center\">\n    <ng-content select=\".secondary-container\"></ng-content>\n    <ng-container #menuCardContent *ngIf=\"detailComponent\">\n    </ng-container>\n  </div>\n\n  <div class=\"o-card-menu-item-main\" fxFlex=\"{{ showSecondaryContainer ? '45' : '80' }}\" [fxLayout]=\"mainContainerLayout\"\n    fxLayoutAlign=\"space-between center\">\n    <div *ngIf=\"useImage() || useIcon()\" fxFlex=\"80\" fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"o-card-menu-item-image-container\">\n      <img *ngIf=\"useImage()\" [src]=\"image\" alt=\"card image\"/>\n      <mat-icon *ngIf=\"useIcon()\" class=\"o-card-menu-item-icon\" fxLayoutAlign=\"center center\">{{ icon }}</mat-icon>\n    </div>\n\n    <div class=\"o-card-menu-item-title\" fxFlex=\"20\" fxLayout=\"column\" fxLayoutAlign=\"center center\" *ngIf=\"title !== undefined\">{{\n      title | oTranslate }}</div>\n\n    <mat-icon class=\"o-card-menu-item-info\" matTooltip=\"{{ tooltip | oTranslate }}\" *ngIf=\"tooltip\" svgIcon=\"ontimize:info_outline\"></mat-icon>\n\n    <ng-content select=\".main-container\"></ng-content>\n\n    <button type=\"button\" *ngIf=\"buttonText !== undefined\" [disabled]=\"disabledButton\" (click)=\"onButtonClick()\" mat-button>\n      {{ buttonText | oTranslate }}</button>\n  </div>\n\n\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OCardMenuItemComponent } from './o-card-menu-item.component';\n\n@NgModule({\n  declarations: [OCardMenuItemComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OCardMenuItemComponent]\n})\nexport class OCardMenuItemModule { }\n","import { AfterContentChecked, AfterViewInit, ElementRef, Inject, Injector, OnDestroy, Optional, ViewChild, Directive } from '@angular/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\nimport { Util } from '../../util/util';\n\nexport const DEFAULT_INPUTS_O_CONTAINER = [\n  'oattr: attr',\n  'title',\n  'layoutAlign: layout-align',\n  'elevation',\n  'icon',\n  'appearance',\n  'layoutGap: layout-gap'\n];\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_CONTAINER\n})\nexport class OContainerComponent implements AfterViewInit, OnDestroy, AfterContentChecked {\n\n  public static APPEARANCE_OUTLINE = 'outline';\n\n  public oattr: string;\n\n  public title: string;\n  protected _elevation: number = 0;\n  protected defaultLayoutAlign: string = 'start start';\n  protected _layoutAlign: string;\n  public icon: string;\n  protected _appearance: string;\n  protected _layoutGap: string;\n  private _outlineGapCalculationNeededImmediately = false;\n\n  protected titleObserver = new MutationObserver(() => this.updateOutlineGap());\n\n  protected _titleEl: ElementRef;\n  @ViewChild('containerTitle') set containerTitle(elem: ElementRef) {\n    this._titleEl = elem;\n    if (this._titleEl) {\n      this.registerObserver();\n      this.updateOutlineGap(); // This must be triggered when title container is re-registered\n    } else {\n      this.unRegisterObserver();\n    }\n  }\n  @ViewChild('container', { static: true }) protected _containerRef: ElementRef;\n\n  constructor(\n    protected elRef: ElementRef,\n    protected injector: Injector,\n    @Optional() @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS) protected matFormDefaultOption\n  ) { }\n\n  ngAfterViewInit(): void {\n    if (this.elRef) {\n      this.elRef.nativeElement.removeAttribute('title');\n    }\n    this.registerObserver();\n  }\n\n  ngAfterContentChecked() {\n    if (this._outlineGapCalculationNeededImmediately) {\n      this.updateOutlineGap();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.unRegisterObserver();\n  }\n\n  public getAttribute() {\n    if (this.oattr) {\n      return this.oattr;\n    } else if (this.elRef && this.elRef.nativeElement.attributes.attr) {\n      return this.elRef.nativeElement.attributes.attr.value;\n    }\n  }\n\n  get appearance() {\n    return this._appearance;\n  }\n\n  set appearance(value: string) {\n    this._appearance = value;\n    setTimeout(() => { this.updateOutlineGap(); }, 0);\n  }\n\n  get elevation() {\n    return this._elevation;\n  }\n\n  set elevation(elevation: number) {\n    this._elevation = elevation;\n    this.propagateElevationToDOM();\n  }\n\n  get layoutAlign() {\n    return this._layoutAlign;\n  }\n\n  set layoutAlign(align: string) {\n    if (!align || align.length === 0) {\n      align = this.defaultLayoutAlign;\n    }\n    this._layoutAlign = align;\n  }\n\n  get layoutGap() {\n    return this._layoutGap;\n  }\n\n  set layoutGap(layoutGap: string) {\n    this._layoutGap = layoutGap;\n  }\n\n  public hasHeader(): boolean {\n    return !!this.title || !!this.icon;\n  }\n\n  isAppearanceOutlineSetted(): boolean {\n    let isAppearanceSetted = false;\n    if (Util.isDefined(this.appearance)) {\n      isAppearanceSetted = this.appearance === OContainerComponent.APPEARANCE_OUTLINE;\n    }\n    return isAppearanceSetted;\n  }\n\n  public hasHeaderOrAppearanceOutlineSetted(): boolean {\n    return this.isAppearanceOutlineSetted() || this.hasHeader();\n  }\n\n  public hasHeaderAndAppearanceOutline(): boolean {\n    return this.isAppearanceOutline() && this.hasHeader();\n  }\n\n  public isAppearanceOutline(): boolean {\n    let isAppearanceOutline = (this.matFormDefaultOption && this.matFormDefaultOption.appearance === OContainerComponent.APPEARANCE_OUTLINE);\n    if (Util.isDefined(this.appearance)) {\n      isAppearanceOutline = this.appearance === OContainerComponent.APPEARANCE_OUTLINE;\n    }\n    return isAppearanceOutline;\n  }\n\n  public hasTitleInAppearanceOutline(): boolean {\n    return this.isAppearanceOutline() && this.hasHeader();\n  }\n\n  protected propagateElevationToDOM(): void {\n    this.cleanElevationCSSclasses();\n    if (this.elevation > 0 && this.elevation <= 12) {\n      this.elRef.nativeElement.classList.add('mat-elevation-z' + this.elevation);\n    }\n  }\n\n  protected cleanElevationCSSclasses(): void {\n    const classList = Array.from(this.elRef.nativeElement.classList || []);\n    if (classList && classList.length) {\n      classList.forEach((item: string) => {\n        if (item.startsWith('mat-elevation')) {\n          this.elRef.nativeElement.classList.remove(item);\n        }\n      });\n    }\n  }\n\n  protected updateOutlineGap(): void {\n    if (this.isAppearanceOutline()) {\n      const titleEl = this._titleEl ? this._titleEl.nativeElement : null;\n\n      if (!this._containerRef) {\n        return;\n      }\n      if (document.documentElement && !document.documentElement.contains(this.elRef.nativeElement)) {\n        this._outlineGapCalculationNeededImmediately = true;\n        return;\n      }\n\n      const container = this._containerRef.nativeElement;\n      const containerRect = container.getBoundingClientRect();\n      if (containerRect.width === 0 && containerRect.height === 0) {\n        return;\n      }\n\n      const containerStart = containerRect.left;\n      const labelStart = titleEl.getBoundingClientRect().left;\n      const labelWidth = this.hasHeader() ? titleEl.offsetWidth : 0;\n      const startWidth = labelStart - containerStart;\n\n      const startEls = container.querySelectorAll('.o-container-outline-start');\n      const gapEls = container.querySelectorAll('.o-container-outline-gap');\n      gapEls[0].style.width = `${labelWidth}px`;\n      startEls[0].style.width = `${startWidth}px`;\n      this._outlineGapCalculationNeededImmediately = false;\n    }\n  }\n\n  protected registerObserver(): void {\n    if (this._titleEl) {\n      this.titleObserver.observe(this._titleEl.nativeElement, {\n        childList: true,\n        characterData: true,\n        subtree: true\n      });\n    }\n  }\n\n  protected unRegisterObserver(): void {\n    if (this.titleObserver) {\n      this.titleObserver.disconnect();\n    }\n  }\n\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, Inject, Injector, OnDestroy, Optional, ViewChild } from '@angular/core';\nimport { MatExpansionPanel } from '@angular/material/expansion';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { OContainerComponent } from './o-container-component.class';\n\nexport const DEFAULT_INPUTS_O_CONTAINER_COLLAPSIBLE = [\n  'expanded',\n  'description',\n  'collapsedHeight: collapsed-height',\n  'expandedHeight: expanded-height'\n];\nexport const DEFAULT_OUTPUTS_O_CONTAINER_COLLAPSIBLE = [\n  //onClosed: Event emitted every time the component collapsible is closed.\n  'onClosed',\n  //onOpened: Event emitted every time the component collapsible is opened.\n  'onOpened',\n  //onAfterCollapse: An event emitted after the body's collapse animation happens.\n  'onAfterCollapse',\n  //onAfterExpand: An event emitted after the body's expansion animation happens.\n  'onAfterExpand'\n]\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_CONTAINER_COLLAPSIBLE,\n  outputs: DEFAULT_OUTPUTS_O_CONTAINER_COLLAPSIBLE\n})\nexport class OContainerCollapsibleComponent extends OContainerComponent implements AfterViewInit, OnDestroy {\n\n  @BooleanInputConverter()\n  public expanded: boolean = true;\n  public collapsedHeight = '37px';\n  public expandedHeight = '37px';\n  public description: string;\n\n  onClosed = new EventEmitter<void>();\n  onOpened = new EventEmitter<void>();\n  onAfterCollapse = new EventEmitter<void>();\n  onAfterExpand = new EventEmitter<void>();\n\n  @ViewChild('expPanel') expPanel: MatExpansionPanel; // Used in subcomponents\n  @ViewChild('containerContent', { static: true }) protected containerContent: ElementRef;\n  @ViewChild('oContainerOutline') protected oContainerOutline: ElementRef;\n\n\n  protected expPanelSubscriptions: Subscription = new Subscription();\n\n  constructor(\n    protected elRef: ElementRef,\n    protected injector: Injector,\n    @Optional() @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS) protected matFormDefaultOption\n  ) {\n    super(elRef, injector, matFormDefaultOption);\n  }\n\n  ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    this.updateOutlineGap();\n    this.subscribeEventsExpPanel();\n  }\n\n  subscribeEventsExpPanel() {\n    this.expPanelSubscriptions.add(this.expPanel.afterCollapse.subscribe(() => this.onAfterCollapse.emit()));\n    this.expPanelSubscriptions.add(this.expPanel.afterExpand.subscribe(() => this.onAfterExpand.emit()));\n    this.expPanelSubscriptions.add(this.expPanel.closed.subscribe(() => this.onClosed.emit()));\n    this.expPanelSubscriptions.add(this.expPanel.opened.subscribe(() => this.onOpened.emit()));\n  }\n\n  protected updateOutlineGap(): void {\n    if (this.isAppearanceOutline()) {\n      const exPanelHeader = this._titleEl ? (this._titleEl as any)._element.nativeElement : null;\n\n      if (!this.oContainerOutline) {\n        return;\n      }\n      const containerOutline = this.oContainerOutline.nativeElement;\n      const containerOutlineRect = containerOutline.getBoundingClientRect();\n      if (containerOutlineRect.width === 0 && containerOutlineRect.height === 0) {\n        return;\n      }\n\n      const titleEl = exPanelHeader.querySelector('.o-container-title.mat-expansion-panel-header-title');\n      const descrEl = exPanelHeader.querySelector('.mat-expansion-panel-header-description');\n\n      const containerStart = containerOutlineRect.left;\n      const descrStart = descrEl.getBoundingClientRect().left;\n\n      let titleWidth = 0;\n      if (this.hasHeader()) {\n        titleWidth += this.icon ? titleEl.querySelector('mat-icon').offsetWidth : 0; // icon\n        titleWidth += this.title ? titleEl.querySelector('span').offsetWidth : 0; // title\n        titleWidth = titleWidth === 0 ? 0 : titleWidth + 4;\n      }\n\n      const labelStart = titleEl.getBoundingClientRect().left;\n      const startWidth = labelStart - containerStart - 2;\n      const empty1Width = descrStart - containerStart - titleWidth - 24;\n      const descrWidth = this.description ? descrEl.querySelector('span').offsetWidth + 8 : 0;\n\n      const startEls = containerOutline.querySelectorAll('.o-container-outline-start');\n      const gapTitleEls = containerOutline.querySelectorAll('.o-container-outline-gap-title');\n      const gapEmpty1Els = containerOutline.querySelectorAll('.o-container-outline-gap-empty1');\n      const gapDescrEls = containerOutline.querySelectorAll('.o-container-outline-gap-description');\n\n      startEls[0].style.width = `${startWidth}px`;\n      gapTitleEls[0].style.width = `${titleWidth}px`;\n      gapEmpty1Els[0].style.width = `${empty1Width}px`;\n      gapDescrEls[0].style.width = `${descrWidth}px`;\n    }\n  }\n\n  protected registerObserver(): void {\n    if (this._titleEl) {\n      this.titleObserver.observe((this._titleEl as any)._element.nativeElement, {\n        childList: true,\n        characterData: true,\n        subtree: true\n      });\n    }\n  }\n\n  updateInnerHeight(height: number): void {\n    if (this.containerContent) {\n      this.containerContent.nativeElement.style.height = height;\n    }\n    if (this.oContainerOutline) {\n      this.oContainerOutline.nativeElement.style.height = height;\n    }\n  }\n  ngOnDestroy(): void {\n    this.expPanelSubscriptions.unsubscribe();\n  }\n\n}\n","import { Component, ElementRef, Inject, Injector, Optional, ViewEncapsulation } from '@angular/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\nimport {\n  OContainerCollapsibleComponent\n} from '../o-container-collapsible-component.class';\n\n\n@Component({\n  selector: 'o-column-collapsible',\n  templateUrl: './o-column-collapsible.component.html',\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-column-collapsible]': 'true',\n    '[class.o-appearance-outline]': 'isAppearanceOutline()',\n    '[class.o-appearance-outline-title]': 'hasTitleInAppearanceOutline()'\n  }\n})\nexport class OColumnCollapsibleComponent extends OContainerCollapsibleComponent {\n\n  constructor(\n    protected elRef: ElementRef,\n    protected injector: Injector,\n    @Optional() @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS) protected matFormDefaultOption\n  ) {\n    super(elRef, injector, matFormDefaultOption);\n  }\n\n}\n","<mat-expansion-panel #expPanel [expanded]=\"expanded\" class=\"o-container\" (opened)=\"updateInnerHeight(null)\" (closed)=\"updateInnerHeight(0)\">\n  <mat-expansion-panel-header #containerTitle [expandedHeight]=\"expandedHeight\" [collapsedHeight]=\"collapsedHeight\">\n    <mat-panel-title fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"o-container-title\">\n      <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n      <span *ngIf=\"title\">{{ title | oTranslate }}</span>\n    </mat-panel-title>\n    <mat-panel-description fxLayout=\"row\" fxLayoutAlign=\"start center\">\n      <span>{{ description | oTranslate }}</span>\n    </mat-panel-description>\n  </mat-expansion-panel-header>\n  <div #containerContent id=\"innerCol\" fxLayout=\"column\" fxLayoutAlign=\"{{ layoutAlign }}\" fxLayoutGap=\"{{ layoutGap }}\"\n    class=\"o-container-scroll o-scroll\" fxFlex=\"grow\">\n    <ng-content></ng-content>\n  </div>\n</mat-expansion-panel>\n<div #oContainerOutline *ngIf=\"isAppearanceOutline()\" [class.o-container-outline-expanded]=\"expPanel.expanded\" class=\"o-container-outline\">\n  <div class=\"o-container-outline-start\"></div>\n  <div class=\"o-container-outline-gap-title\"></div>\n  <div class=\"o-container-outline-gap-empty1\"></div>\n  <div class=\"o-container-outline-gap-description\"></div>\n  <div class=\"o-container-outline-gap-empty2\"></div>\n  <div class=\"o-container-outline-gap-icon\"></div>\n  <div class=\"o-container-outline-end\"></div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OColumnCollapsibleComponent } from './o-column-collapsible.component';\n\n@NgModule({\n  declarations: [OColumnCollapsibleComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OColumnCollapsibleComponent]\n})\nexport class OColumnCollapsibleModule { }\n","import { Component, ElementRef, Inject, Injector, Optional, ViewEncapsulation } from '@angular/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\nimport { OContainerComponent } from '../o-container-component.class';\n\n\n@Component({\n  selector: 'o-column',\n  templateUrl: './o-column.component.html',\n  styleUrls: ['./o-column.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-column]': 'true',\n    '[class.o-appearance-outline]': 'isAppearanceOutline()',\n    '[class.o-appearance-outline-title]': 'hasTitleInAppearanceOutline()'\n  }\n})\nexport class OColumnComponent extends OContainerComponent {\n\n  constructor(\n    protected elRef: ElementRef,\n    protected injector: Injector,\n    @Optional() @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS) protected matFormDefaultOption\n  ) {\n    super(elRef, injector, matFormDefaultOption);\n  }\n\n}\n","<div #container fxLayout=\"column\" class=\"o-container\" fxFill>\n  <div #containerTitle *ngIf=\"hasHeaderOrAppearanceOutlineSetted()\" fxLayoutAlign=\"start center\" class=\"o-container-title\" layout-padding>\n    <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n    <span *ngIf=\"title\">{{ title | oTranslate }}</span>\n  </div>\n  <div [class.o-container-gap]=\"hasHeaderOrAppearanceOutlineSetted() || (elevation > 0 && elevation <= 12)\" class=\"o-container-scroll o-scroll\">\n    <div class=\"o-container-outline\" *ngIf=\"hasHeaderAndAppearanceOutline() || isAppearanceOutlineSetted()\">\n      <div class=\"o-container-outline-start\"></div>\n      <div class=\"o-container-outline-gap\"></div>\n      <div class=\"o-container-outline-end\"></div>\n    </div>\n    <div fxLayout=\"column\" fxLayoutAlign=\"{{ layoutAlign }}\" fxLayoutGap=\"{{ layoutGap }}\" fxFlex=\"grow\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OColumnComponent } from './o-column.component';\n\n@NgModule({\n  declarations: [OColumnComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OColumnComponent]\n})\nexport class OColumnModule { }\n","import { Component, ElementRef, Inject, Injector, Optional, ViewEncapsulation } from '@angular/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\nimport {\n  DEFAULT_INPUTS_O_CONTAINER_COLLAPSIBLE,\n  DEFAULT_OUTPUTS_O_CONTAINER_COLLAPSIBLE,\n  OContainerCollapsibleComponent\n} from '../o-container-collapsible-component.class';\n\n\n@Component({\n  selector: 'o-row-collapsible',\n  templateUrl: './o-row-collapsible.component.html',\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-row-collapsible]': 'true',\n    '[class.o-appearance-outline]': 'isAppearanceOutline()',\n    '[class.o-appearance-outline-title]': 'hasTitleInAppearanceOutline()'\n  }\n})\nexport class ORowCollapsibleComponent extends OContainerCollapsibleComponent {\n\n  constructor(\n    protected elRef: ElementRef,\n    protected injector: Injector,\n    @Optional() @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS) protected matFormDefaultOption\n  ) {\n    super(elRef, injector, matFormDefaultOption);\n  }\n\n}\n","<mat-expansion-panel #expPanel [expanded]=\"expanded\" class=\"o-container\" (opened)=\"updateInnerHeight(null)\" (closed)=\"updateInnerHeight(0)\">\n  <mat-expansion-panel-header #containerTitle [expandedHeight]=\"expandedHeight\" [collapsedHeight]=\"collapsedHeight\">\n    <mat-panel-title fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"o-container-title\">\n      <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n      <span *ngIf=\"title\">{{ title | oTranslate }}</span>\n    </mat-panel-title>\n    <mat-panel-description fxLayout=\"row\" fxLayoutAlign=\"start center\">\n      <span>{{ description | oTranslate }}</span>\n    </mat-panel-description>\n  </mat-expansion-panel-header>\n  <div #containerContent id=\"innerRow\" fxLayout=\"row\" fxLayoutAlign=\"{{ layoutAlign }}\" fxLayoutGap=\"{{ layoutGap }}\"\n    class=\"o-container-scroll o-scroll\" fxFlex=\"grow\">\n    <ng-content></ng-content>\n  </div>\n</mat-expansion-panel>\n<div #oContainerOutline *ngIf=\"isAppearanceOutline()\" [class.o-container-outline-expanded]=\"expPanel.expanded\" class=\"o-container-outline\">\n  <div class=\"o-container-outline-start\"></div>\n  <div class=\"o-container-outline-gap-title\"></div>\n  <div class=\"o-container-outline-gap-empty1\"></div>\n  <div class=\"o-container-outline-gap-description\"></div>\n  <div class=\"o-container-outline-gap-empty2\"></div>\n  <div class=\"o-container-outline-gap-icon\"></div>\n  <div class=\"o-container-outline-end\"></div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { ORowCollapsibleComponent } from './o-row-collapsible.component';\n\n@NgModule({\n  declarations: [ORowCollapsibleComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [ORowCollapsibleComponent]\n})\nexport class ORowCollapsibleModule { }\n","import { Component, ElementRef, Inject, Injector, Optional, ViewEncapsulation } from '@angular/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\nimport { OContainerComponent } from '../o-container-component.class';\n\n\n@Component({\n  selector: 'o-row',\n  templateUrl: './o-row.component.html',\n  styleUrls: ['./o-row.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-row]': 'true',\n    '[class.o-appearance-outline]': 'isAppearanceOutline()',\n    '[class.o-appearance-outline-title]': 'hasTitleInAppearanceOutline()'\n  }\n})\nexport class ORowComponent extends OContainerComponent {\n\n  constructor(\n    protected elRef: ElementRef,\n    protected injector: Injector,\n    @Optional() @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS) protected matFormDefaultOption\n  ) {\n    super(elRef, injector, matFormDefaultOption);\n  }\n\n}\n","<div #container fxLayout=\"column\" class=\"o-container\" fxFill>\n  <div #containerTitle *ngIf=\"hasHeaderOrAppearanceOutlineSetted()\" fxLayoutAlign=\"start center\" class=\"o-container-title\" layout-padding>\n    <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n    <span *ngIf=\"title\">{{ title | oTranslate }}</span>\n  </div>\n  <div [class.o-container-gap]=\"hasHeaderOrAppearanceOutlineSetted() || (elevation > 0 && elevation <= 12)\" class=\"o-container-scroll o-scroll\">\n    <div class=\"o-container-outline\" *ngIf=\"hasHeaderAndAppearanceOutline() || isAppearanceOutlineSetted()\">\n      <div class=\"o-container-outline-start\"></div>\n      <div class=\"o-container-outline-gap\"></div>\n      <div class=\"o-container-outline-end\"></div>\n    </div>\n    <div fxLayout=\"row\" fxLayoutAlign=\"{{ layoutAlign }}\" fxLayoutGap=\"{{ layoutGap }}\" fxFlex=\"grow\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { ORowComponent } from './o-row.component';\n\n@NgModule({\n  declarations: [ORowComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [ORowComponent]\n})\nexport class ORowModule { }\n","import { Directive, HostListener, Injector } from '@angular/core';\n\nimport { Util } from '../../util/util';\nimport { OContextMenuComponent } from './o-context-menu.component';\n\nexport const DEFAULT_CONTEXT_MENU_DIRECTIVE_INPUTS = [\n  'oContextMenu',\n  'oContextMenuData'\n];\n\n@Directive({\n  selector: '[oContextMenu]',\n  inputs: DEFAULT_CONTEXT_MENU_DIRECTIVE_INPUTS\n})\nexport class OContextMenuDirective {\n\n  public oContextMenu: OContextMenuComponent;\n  public oContextMenuData: any;\n\n  constructor(protected injector: Injector) {\n  }\n\n  @HostListener('contextmenu', ['$event'])\n  public onRightClick(event: MouseEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n    if (Util.isDefined(this.oContextMenu)) {\n      this.oContextMenu.oContextMenuService.showContextMenu.next({\n        contextMenu: this.oContextMenu,\n        event: event,\n        data: this.oContextMenuData\n      });\n    }\n  }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OContextMenuGroupComponent } from './context-menu-group/o-context-menu-group.component';\nimport { OContextMenuItemComponent } from './context-menu-item/o-context-menu-item.component';\nimport { OContextMenuSeparatorComponent } from './context-menu-separator/o-context-menu-separator.component';\nimport { OContextMenuContentComponent } from './context-menu/o-context-menu-content.component';\nimport { OWrapperContentMenuComponent } from './context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component';\nimport { OContextMenuComponent } from './o-context-menu.component';\nimport { OContextMenuDirective } from './o-context-menu.directive';\n\n@NgModule({\n    imports: [CommonModule, OSharedModule],\n    exports: [CommonModule, OContextMenuDirective, OContextMenuComponent, OContextMenuItemComponent, OContextMenuGroupComponent, OContextMenuSeparatorComponent],\n    declarations: [\n        OContextMenuDirective,\n        OContextMenuContentComponent,\n        OContextMenuComponent,\n        OContextMenuItemComponent,\n        OContextMenuGroupComponent,\n        OWrapperContentMenuComponent,\n        OContextMenuSeparatorComponent\n    ]\n})\nexport class OContextMenuModule { }\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\nimport { MatSelectChange } from \"@angular/material/select\";\nimport { OGroupedColumnTypes } from \"../../../../types/o-grouped-column-types.type\";\nexport const DEFAULT_DUAL_LIST_SELECTOR_DATE_ITEM = [\n  'item',\n  'groupedDateColumns: grouped-date-columns',\n];\n@Component({\n  selector: 'o-dual-list-selector-date-item',\n  templateUrl: './o-dual-list-selector-date-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_DUAL_LIST_SELECTOR_DATE_ITEM\n})\nexport class ODualListSelectorDateItemComponent {\n  public dateTypes = [\n    { value: 'MONTH', viewValue: 'DUAL_LIST_SELECTOR.GROUP_BY_MONTH' },\n    { value: 'YEAR_MONTH', viewValue: 'DUAL_LIST_SELECTOR.GROUP_BY_YEAR_MONTH' },\n    { value: 'YEAR', viewValue: 'DUAL_LIST_SELECTOR.GROUP_BY_YEAR' },\n    { value: 'YEAR_MONTH_DAY', viewValue: 'DUAL_LIST_SELECTOR.GROUP_BY_YEAR_MONTH_DAY' }\n  ];\n  public item: string = \"\";\n  public groupedDateColumns: OGroupedColumnTypes[];\n\n\n  onSelectionChange(event: MatSelectChange, itemSelected: any) {\n    let value = event.value;\n    let attr = itemSelected;\n    let index = this.groupedDateColumns.findIndex(column => column.attr == attr);\n    if (index != -1) {\n      this.groupedDateColumns.splice(index, 1);\n    }\n    this.groupedDateColumns.push({ \"attr\": attr, \"type\": value })\n  }\n\n  getSelectValue(): string {\n    let index = this.groupedDateColumns.findIndex(column => column.attr == this.item);\n    return index != -1 ? this.groupedDateColumns[index].type : 'YEAR_MONTH_DAY'\n  }\n\n  getViewValue(): string {\n    let value = this.getSelectValue();\n    const indexFindValue = this.dateTypes.findIndex(type => type.value == value);\n    return indexFindValue > -1 ? this.dateTypes[indexFindValue].viewValue : 'DUAL_LIST_SELECTOR.GROUP_BY_YEAR_MONTH_DAY';\n  }\n\n}","<mat-select [value]=\"getSelectValue()\" (selectionChange)=\"onSelectionChange($event,item)\" required>\n  <mat-select-trigger>\n    {{item | oTranslate}} ({{getViewValue() | oTranslate}})\n  </mat-select-trigger>\n  <mat-option *ngFor=\"let type of dateTypes\" [value]=\"type.value\">\n    {{type.viewValue | oTranslate}}\n  </mat-option>\n</mat-select>\n","import { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { MatSelectionList } from '@angular/material/list';\nimport { OGroupedColumnTypes } from '../../types';\nimport { Util } from '../../util/util';\nimport { Codes } from '../../util/codes';\n\nexport const DEFAULT_DUAL_LIST_SELECTOR = [\n  //key: The unique identifier field of each object in the data source and data destination arrays\n  'key',\n  //display - The field of each object for displaying the object each the lists,\n  'display',\n  //data-source: The source array of objects or strings for the list.\n  'dataSource:data-source',\n  //data-destination : The destination array of objects or strings selected from the source\n  'dataDestination: data-destination',\n  'titleListDataSource: title-list-data-source',\n  'titleListDataDestination: title-list-data-destination',\n  'groupedColumnTypes:grouped-column-types',\n  'description'\n];\n\n@Component({\n  selector: 'o-dual-list-selector',\n  templateUrl: './o-dual-list-selector.component.html',\n  styleUrls: ['./o-dual-list-selector.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_DUAL_LIST_SELECTOR,\n  host: {\n    '[class.o-dual-list-selector]': 'true'\n  }\n})\nexport class ODualListSelectorComponent {\n\n  public dataSource: Array<any> = [];\n  public dataDestination: Array<any> = [];\n  public titleListDataSource: string = '';\n  public titleListDataDestination: string = '';\n  public description = '';\n  public key = '';\n  public display = '';\n  public groupedColumnTypes: OGroupedColumnTypes[] = [];\n\n  drop(event: CdkDragDrop<string[]>) {\n\n    if (event.previousContainer === event.container) {\n      moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n    } else {\n      transferArrayItem(event.previousContainer.data,\n        event.container.data,\n        event.previousIndex,\n        event.currentIndex);\n    }\n  }\n\n  addToGroupedColumns(columnsToGrouped: MatSelectionList) {\n    const self = this;\n    columnsToGrouped.selectedOptions.selected.forEach(x => {\n      //added in dataDestination\n      self.dataDestination.push(x.value);\n      //remove item in dataSource\n      self.dataSource = this.dataSource.filter(groupedColumn => groupedColumn[this.key] != x.value[this.key]);\n    });\n\n  }\n\n  removeGroupedColumns(groupedColumns: MatSelectionList) {\n    const self = this;\n    groupedColumns.selectedOptions.selected.forEach(x => {\n\n      self.dataSource.push(x.value);\n      self.dataDestination = this.dataDestination.filter(groupedColumn => groupedColumn[this.key] != x.value[this.key]);\n    });\n  }\n\n  onRemoveGroupColumn(column: any) {\n    this.dataDestination = this.dataDestination.filter((oCol: any) => oCol[this.key] !== column[this.key]);\n    this.dataSource.push(column);\n  }\n\n  isAllSelected(list: MatSelectionList): boolean {\n    const numSelected = list.selectedOptions.selected.length;\n    const numRows = list.options ? list.options.length : 0;\n    return numRows !== 0 && numSelected === numRows;\n\n  }\n\n  masterToggle(list: MatSelectionList) {\n    list.selectedOptions.selected.length === list.options.length ?\n      list.selectedOptions.clear() :\n      list.selectAll();\n\n  }\n\n  hasValue(list: MatSelectionList) {\n    return list.selectedOptions.selected.length > 0\n  }\n  isDisabledSortAsc(list: MatSelectionList) {\n    let sortAsc = true;\n    if (list.selectedOptions.selected.length !== 0) {\n      const index = list.options.toArray().findIndex(x => x.value[this.key] === list.selectedOptions.selected[0].value[this.key]);\n\n      if (index > 0) {\n        sortAsc = false;\n      }\n\n    }\n    return sortAsc;\n  }\n\n  isDisabledSortDesc(list: MatSelectionList) {\n    let sortDesc = true;\n    if (list.selectedOptions.selected.length !== 0) {\n      const index = list.options.toArray().findIndex(x => x.value[this.key] === list.selectedOptions.selected[0].value[this.key]);\n\n      if (index >= 0 && (index + 1) !== list.options.toArray().length) {\n        sortDesc = false;\n      }\n\n    }\n    return sortDesc;\n  }\n\n  sortAscSelectedItems(list: MatSelectionList) {\n    const self = this;\n    const itemsSelected = list.selectedOptions.selected;\n    itemsSelected.forEach(item => {\n      const index = list.options.toArray().findIndex(x => x.value[this.key] === item.value[this.key]);\n      moveItemInArray(this.dataDestination, index, index - 1);\n    });\n  }\n\n  /**\n   * Sorts desc selected items\n   * @param list\n   */\n  sortDescSelectedItems(list: MatSelectionList) {\n    const self = this;\n    const itemsSelected = list.selectedOptions.selected;\n    itemsSelected.forEach(item => {\n      const index = list.options.toArray().findIndex(x => x.value[this.key] === item.value[this.key]);\n      moveItemInArray(self.dataDestination, index, index + 1);\n    });\n  }\n\n  getCheckboxLabel(list: MatSelectionList) {\n    let label = '';\n    if (Util.isDefined(list.options)) {\n      label = '(' + list.selectedOptions.selected.length + '/' + list.options.length + ')';\n    }\n    return label;\n  }\n\n  /**\n   * Gets selected items\n   * @returns selected items\n   */\n  getSelectedItems(): Array<any> {\n    return this.dataDestination;\n  }\n\n  /**\n   * Sets selected items\n   * @param items\n   */\n  setSelectedItems(items: Array<any>) {\n    this.dataDestination = items;\n  }\n\n  getGroupedColumnTypes(): OGroupedColumnTypes[] {\n    return this.groupedColumnTypes;\n  }\n  get groupedDateColumns(): OGroupedColumnTypes[] {\n    return this.groupedColumnTypes.filter(groupedColumn => Codes.TYPES_DATE_GROUPS.findIndex(type => type === groupedColumn.type) > -1)\n  }\n}\n","<div mat-subheader>{{description | oTranslate }} </div>\n\n<div class=\"o-dual-list-selector-wrapper-selector-list\">\n\n  <div class=\"o-dual-list-selector-list\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" fxFlex=\"50%\">\n    <div fxLayout=\"row\" fxFlex class=\"o-dual-list-selector-source-wrapper\">\n      <mat-selection-list fxFlex cdkDropList id=\"item-source-list\" #itemsList [cdkDropListData]=\"dataSource\"\n        [cdkDropListConnectedTo]=\"['item-destination-list']\" (cdkDropListDropped)=\"drop($event)\" cdkDropListSortingDisabled>\n\n        <mat-list-item>\n          <mat-checkbox (change)=\"$event ? masterToggle(itemsList) : null\" [checked]=\"isAllSelected(itemsList)\"\n            [indeterminate]=\"hasValue(itemsList)  && !isAllSelected(itemsList)\" fxFlex>\n            <span fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n              <span>{{ titleListDataSource | oTranslate }}</span>\n              <span>{{ getCheckboxLabel(itemsList) }} </span>\n            </span>\n          </mat-checkbox>\n        </mat-list-item>\n\n        <mat-list-option checkboxPosition=\"before\" *ngFor=\"let item of dataSource\" [value]=\"item\" cdkDrag class=\"o-drag-list-item-box\">\n          <span matListItemLine>{{ (item[display]) | oTranslate }} </span>\n        </mat-list-option>\n      </mat-selection-list>\n\n      <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"50px\" fxLayoutGap=\"24px\">\n        <button mat-mini-fab (click)=\"addToGroupedColumns(itemsList)\" [disabled]=\"itemsList.selectedOptions.selected.length===0\">\n          <mat-icon>chevron_right</mat-icon>\n        </button>\n        <button mat-mini-fab (click)=\"removeGroupedColumns(selectedItemsList)\" [disabled]=\"selectedItemsList.selectedOptions.selected.length===0\">\n          <mat-icon>chevron_left</mat-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"o-dual-list-selector-list\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" fxFlex=\"50%\">\n    <div fxLayout=\"row\" fxFlex class=\"o-dual-list-selector-destination-wrapper\">\n      <mat-selection-list fxFlex cdkDropList id=\"item-destination-list\" #selectedItemsList [cdkDropListData]=\"dataDestination\"\n        [cdkDropListConnectedTo]=\"['item-source-list']\" (cdkDropListDropped)=\"drop($event)\">\n        <mat-list-item>\n          <mat-checkbox (change)=\"$event ? masterToggle(selectedItemsList) : null\" [checked]=\"isAllSelected(selectedItemsList)\"\n            [indeterminate]=\"hasValue(selectedItemsList) && !isAllSelected(selectedItemsList)\" fxFlex>\n            <span fxLayoutAlign=\"space-between center\">\n              <span>{{ titleListDataDestination | oTranslate}}</span>\n              <span>{{ getCheckboxLabel(selectedItemsList) }}</span>\n            </span>\n          </mat-checkbox>\n        </mat-list-item>\n\n        <mat-list-option checkboxPosition=\"before\" *ngFor=\"let itemSelected of dataDestination\" [value]=\"itemSelected\" cdkDrag\n          class=\"o-drag-list-item-box\">\n\n          <ng-container *ngIf=\"itemSelected.type === 'date'; else defaultRenderer\">\n            <o-dual-list-selector-date-item [item]=itemSelected.attr [grouped-date-columns]=\"groupedColumnTypes\" ></o-dual-list-selector-date-item>\n          </ng-container>\n\n          <ng-template #defaultRenderer>\n            <span matListItemLine>{{ itemSelected[display] | oTranslate }} </span>\n          </ng-template>\n\n        </mat-list-option>\n\n        <div class=\"mat-caption drop-empty-message\" *ngIf=\"dataDestination.length===0\">\n          {{ 'DUAL_LIST_SELECTOR.DROP_EMPTY_MESSAGE' | oTranslate }}\n        </div>\n      </mat-selection-list>\n\n\n      <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"50px\" fxLayoutGap=\"24px\">\n        <button mat-mini-fab [disabled]=\"isDisabledSortAsc(selectedItemsList)\" (click)=\"sortAscSelectedItems(selectedItemsList)\">\n          <mat-icon>expand_less</mat-icon>\n        </button>\n        <button mat-mini-fab [disabled]=\"isDisabledSortDesc(selectedItemsList)\" (click)=\"sortDescSelectedItems(selectedItemsList)\">\n          <mat-icon>expand_more</mat-icon>\n        </button>\n      </div>\n    </div>\n\n  </div>\n</div>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { ODualListSelectorDateItemComponent } from './dual-list-selector-item/date/o-dual-list-selector-date-item.component';\nimport { ODualListSelectorComponent } from './o-dual-list-selector.component';\n\n@NgModule({\n  imports: [CommonModule, OSharedModule, DragDropModule],\n  declarations: [ODualListSelectorComponent, ODualListSelectorDateItemComponent],\n  exports: [ODualListSelectorComponent, ODualListSelectorDateItemComponent]\n})\nexport class ODualListSelectorModule { }\n","import { AfterViewInit, Component } from '@angular/core';\n\nimport { IServiceDataComponent } from '../../interfaces/service-data-component.interface';\n\nexport const DEFAULT_INPUT_O_EXPANDABLE_CONTAINER = [\n  // targets [`OServiceComponent` instance]: Components whose query will be launched when expanding the row.\n  'targets',\n  'data'\n];\n@Component({\n  selector: 'o-expandable-container',\n  templateUrl: './o-expandable-container.component.html',\n  inputs: DEFAULT_INPUT_O_EXPANDABLE_CONTAINER\n})\nexport class OExpandableContainerComponent implements AfterViewInit {\n\n  public targets: IServiceDataComponent[];\n  public data: any;\n  constructor() { }\n\n  ngAfterViewInit(): void {\n    this.targets.forEach(x => {\n      x.queryData();\n    });\n  }\n\n}\n","<ng-content></ng-content>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OExpandableContainerComponent } from './o-expandable-container.component';\n\n@NgModule({\n  imports: [CommonModule, OSharedModule],\n  exports: [OExpandableContainerComponent],\n  declarations: [\n    OExpandableContainerComponent\n  ],\n\n})\nexport class OExpandableContainerModule { }\n","import { OFilterBuilderStatus, OFilterBuilderValues } from '../../types/o-filter-builder-values.type';\nimport { Util } from '../../util/util';\nimport { DefaultComponentStateClass } from './o-component-state.class';\n\nexport class OFilterBuilderComponentStateClass extends DefaultComponentStateClass {\n\n  // stored filters builder values\n  filterBuilderValues: OFilterBuilderValues[];\n\n  get storedFilterBuilders(): OFilterBuilderStatus[] {\n    return this['stored-filter-builders'] || [];\n  }\n\n  set storedFilterBuilders(value: OFilterBuilderStatus[]) {\n    this['stored-filter-builders'] = value;\n  }\n\n  addStoredFilter(filter: OFilterBuilderStatus) {\n    if (!Util.isDefined(this['stored-filter-builders'])) {\n      this['stored-filter-builders'] = [];\n    }\n    this.storedFilterBuilders.push(filter);\n  }\n\n  deleteStoredFilter(filterName: string) {\n    const index = this.storedFilterBuilders.findIndex((item: OFilterBuilderStatus) => item.name === filterName);\n    if (index >= 0) {\n      this.storedFilterBuilders.splice(index, 1);\n    }\n  }\n  applyFilter(filterName: string) {\n    const filter = this.getStoredFilter(filterName);\n    if (filter) {\n      this.filterBuilderValues = filter;\n    }\n  }\n\n  getStoredFilter(filterName: string): OFilterBuilderValues[] {\n    let result = [];\n    const filter = this.storedFilterBuilders.find((item: OFilterBuilderStatus) => item.name === filterName);\n    if (Util.isDefined(filter)) {\n      result = filter['filter-builder-values'];\n    }\n    return result;\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { OFilterBuilderStatus } from '../../types';\nimport { AbstractComponentStateService } from './o-component-state.service';\nimport { OFilterBuilderComponentStateClass } from './o-filter-builder-component-state.class';\nimport { OFilterBuilderBase } from '../../components/filter-builder/o-filter-builder-base.class';\n\n@Injectable()\nexport class OFilterBuilderComponentStateService extends AbstractComponentStateService<OFilterBuilderComponentStateClass, OFilterBuilderBase> {\n\n  initialize(component: OFilterBuilderBase) {\n    this.state = new OFilterBuilderComponentStateClass();\n    super.initialize(component);\n  }\n\n  initializeState(state: OFilterBuilderComponentStateClass) {\n    super.initializeState(state);\n  }\n\n  storeFilter(filter: OFilterBuilderStatus) {\n    let newFilter: OFilterBuilderStatus = { name: filter.name, description: filter.description };\n    const storedFilter = [...this.component.getFilterValues()];\n    newFilter['filter-builder-values'] = storedFilter;\n    this.state.addStoredFilter(newFilter);\n  }\n\n}\n\n","import type { OFilterBuilderValues } from \"../../types/o-filter-builder-values.type\";\n\nexport abstract class OFilterBuilderBase {\n  abstract getFilterValues(): OFilterBuilderValues[]\n  abstract getDataToStore(): any;\n  abstract getComponentKey(): string;\n}","import { AfterViewInit, Component, EventEmitter, forwardRef, Inject, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { OFormComponent } from '../../components/form/o-form.component';\nimport { BooleanInputConverter, NumberInputConverter } from '../../decorators/input-converter';\nimport { IFilterBuilderCmpTarget } from '../../interfaces/filter-builder-component-target.interface';\nimport { IFormDataComponent } from '../../interfaces/form-data-component.interface';\nimport { IServiceDataComponent } from '../../interfaces/service-data-component.interface';\nimport { LocalStorageService } from '../../services/local-storage.service';\nimport { OFilterBuilderComponentStateClass } from '../../services/state/o-filter-builder-component-state.class';\nimport { OFilterBuilderComponentStateService } from '../../services/state/o-filter-builder-component-state.service';\nimport { OFilterDefinition } from '../../types';\nimport { BasicExpression } from '../../types/basic-expression.type';\nimport { Expression } from '../../types/expression.type';\nimport { OFilterBuilderValues } from '../../types/o-filter-builder-values.type';\nimport { CHANGE_EVENTS, Codes } from '../../util/codes';\nimport { FilterExpressionUtils } from '../../util/filter-expression.utils';\nimport { Util } from '../../util/util';\nimport { OFilterBuilderBase } from './o-filter-builder-base.class';\n\nexport const DEFAULT_INPUTS_O_FILTER_BUILDER = [\n  // filters: [string] List of pairs of form component attributes and target component colums (targetColumn1:componentAttr1;targetColumn2:componentAttr2;...). Separated by ';'.\n  'filters',\n\n  // target [`OServiceComponent` instance]: Component whose data will be filtered.\n  'targetCmp: target',\n\n  // expression-builder [funtion]: Funtion called for creating the expression.\n  'expressionBuilder: expression-builder',\n\n  // query-on-change [yes|no|true|false]: Indicates whether or not to trigger the target component refresh when a filter component `onChange` event is fired. Default: no.\n  'queryOnChange: query-on-change',\n\n  // query-on-change-delay [number]: Delay time in milliseconds `query-on-change` method is triggered. Default: 0.\n  'queryOnChangeDelay: query-on-change-delay',\n\n  //query-on-change-event: [change| onValueChange] Type of event that emit when query-on-change=`yes`\n  'queryOnChangeEventType: query-on-change-event-type',\n\n  // attr [string]: filter builder identifier. It is mandatory if data are provided through the data attribute. Default: target (if set).\n  'oattr: attr',\n]\n\nexport const DEFAULT_OUTPUTS_O_FILTER_BUILDER = [\n  // Event triggered when the filter action is executed.\n  'onFilter',\n\n  // Event triggered when the clear action is excuted.\n  'onClear'\n];\n\n@Component({\n  selector: 'o-filter-builder',\n  templateUrl: './o-filter-builder.component.html',\n  inputs: DEFAULT_INPUTS_O_FILTER_BUILDER,\n  outputs: DEFAULT_OUTPUTS_O_FILTER_BUILDER,\n  providers: [\n    { provide: OFilterBuilderBase, useExisting: forwardRef(() => OFilterBuilderComponent) }\n  ]\n})\n\n/**\n * The OFilterBuilderComponent.\n */\n\nexport class OFilterBuilderComponent implements AfterViewInit, OnDestroy, OnInit {\n\n  public onFilter: EventEmitter<any> = new EventEmitter<any>();\n  public onClear: EventEmitter<any> = new EventEmitter<any>();\n\n  public filters: string;\n  public targetCmp: IServiceDataComponent;\n  public expressionBuilder: (values: Array<{ attr, value }>) => Expression;\n  @BooleanInputConverter()\n  public queryOnChange: boolean = false;\n  @NumberInputConverter()\n  public queryOnChangeDelay: number = 0;\n  public queryOnChangeEventType: CHANGE_EVENTS = Codes.DEFAULT_CHANGE_EVENT;\n\n  protected filterComponents: Array<IFilterBuilderCmpTarget> = [];\n\n  protected subscriptions: Subscription = new Subscription();\n  public oattr: string;\n  protected componentStateService: OFilterBuilderComponentStateService;\n  protected localStorageService: LocalStorageService;\n  protected router: Router;\n  protected actRoute: ActivatedRoute;\n  constructor(\n    protected injector: Injector,\n    @Inject(forwardRef(() => OFormComponent)) public form: OFormComponent\n  ) {\n    this.localStorageService = this.injector.get(LocalStorageService);\n    this.componentStateService = this.injector.get<OFilterBuilderComponentStateService>(OFilterBuilderComponentStateService);\n    this.router = this.injector.get<Router>(Router);\n    this.actRoute = this.injector.get<ActivatedRoute>(ActivatedRoute);\n  }\n\n  ngOnInit(): void {\n    this.initialize();\n  }\n\n  ngAfterViewInit(): void {\n    this.initializeListeners();\n  }\n\n  ngOnDestroy(): void {\n    if (this.subscriptions) {\n      this.subscriptions.unsubscribe();\n    }\n  }\n\n  initialize(): void {\n    this.componentStateService.initialize(this);\n    // Parse filters\n    if (this.filters) {\n      const filterArray: Array<string> = Util.parseArray(this.filters);\n      filterArray.forEach(filter => {\n        const filterElms = filter.split(Codes.COLUMNS_ALIAS_SEPARATOR);\n        this.filterComponents.push({\n          targetAttr: filterElms[0],\n          formComponentAttr: filterElms[1] ? filterElms[1] : filterElms[0]\n        });\n      });\n    }\n\n    if (Util.isDefined(this.targetCmp)) {\n      this.targetCmp.setFilterBuilder(this);\n    }\n  }\n\n  initializeListeners(): void {\n    if (this.queryOnChange) {\n      this.filterComponents.forEach((filterComponent: IFilterBuilderCmpTarget) => {\n        const formComponent: IFormDataComponent = this.form.getComponents()[filterComponent.formComponentAttr];\n        if (formComponent) {\n          this.subscriptions.add(\n            this.getEventFromFormComponent(formComponent)\n              .pipe(debounceTime(this.queryOnChangeDelay))\n              .subscribe(() => this.triggerReload()));\n        }\n      });\n    }\n  }\n\n  private getEventFromFormComponent(formComponent: any): Observable<any> {\n    return this.queryOnChangeEventType === Codes.DEFAULT_CHANGE_EVENT ?\n      formComponent.onValueChange :\n      formComponent.getFormControl().valueChanges;\n  }\n\n  /**\n   * Returns an `Expression` object with the filter.\n   * @returns the `Expression` object with the filter.\n   */\n  getExpression(): Expression {\n    // Prepare form filter values [... { attr, value }]\n    const formComponents = this.form.getComponents();\n    const params: Array<{ attr, value }> = [];\n    this.filterComponents.forEach((filterComponent: IFilterBuilderCmpTarget) => {\n      const formComponent: IFormDataComponent = formComponents[filterComponent.formComponentAttr];\n      if (formComponent) {\n        const value = formComponent.getValue();\n        params.push({\n          attr: filterComponent.targetAttr,\n          value: value\n        });\n      }\n    });\n\n    // Trigger the function provided by the user\n    if (this.expressionBuilder) {\n      return this.expressionBuilder(params);\n    }\n\n    // Generate desfault expression\n    const expressions: Array<Expression> = [];\n    params.forEach(elem => {\n      if (Util.isDefined(elem.value)) {\n        expressions.push(FilterExpressionUtils.buildExpressionEquals(elem.attr, elem.value));\n      }\n    });\n\n    return expressions.length ? expressions.reduce((fe1, fe2) => FilterExpressionUtils.buildComplexExpression(fe1, fe2, FilterExpressionUtils.OP_OR)) : undefined;\n  }\n\n  /**\n   * Returns an `BasicExpression` object with the filter.\n   * @returns the `BasicExpression` object with the filter.\n   */\n  getBasicExpression(): BasicExpression {\n    return FilterExpressionUtils.buildBasicExpression(this.getExpression());\n  }\n\n  /**\n   * Returns the filter builder target component.\n   * @returns the target component.\n   */\n  getTargetComponent(): IServiceDataComponent {\n    return this.targetCmp;\n  }\n\n  /**\n   * Trigger the `reloadData` method from the target component.\n   */\n  triggerReload(): void {\n    if (!this.targetCmp) {\n      return;\n    }\n    if (this.targetCmp.pageable) {\n      this.targetCmp.reloadPaginatedDataFromStart();\n    } else {\n      this.targetCmp.reloadData();\n    }\n    this.onFilter.emit();\n  }\n\n  /**\n   * Clear the form components used for the filter.\n   */\n  clearFilter(): void {\n    const formComponents = this.form.getComponents();\n    this.getFilterAttrs().forEach((attr: string) => {\n      formComponents[attr].clearValue();\n    });\n    this.onClear.emit();\n  }\n\n  /**\n   * Gets filter values\n   * @returns filter values\n   */\n  getFilterValues(): OFilterBuilderValues[] {\n    const result: OFilterBuilderValues[] = [];\n\n    this.filterComponents.\n      forEach((filterComponent: IFilterBuilderCmpTarget) => {\n        if (Util.isDefined(this.form.getComponents()[filterComponent.formComponentAttr])) {\n          result.push({ attr: filterComponent.formComponentAttr, value: this.form.getComponents()[filterComponent.formComponentAttr].getValue() });\n        }\n      });\n    return result;\n\n  }\n\n  /**\n   * Sets filter values\n   * @param filterBuilderValues\n   */\n  setFilterValues(filterBuilderValues: OFilterBuilderValues[]) {\n    filterBuilderValues.forEach((filterBuilderValue: OFilterBuilderValues) => {\n      if (this.form.getComponents()[filterBuilderValue.attr]) {\n        this.form.getComponents()[filterBuilderValue.attr].setValue(filterBuilderValue.value)\n      } else {\n        console.warn('The filter with attr ' + filterBuilderValue.attr + ' cannot be set ' + filterBuilderValue.value + ' because it does not exist .');\n      }\n    })\n  }\n\n  /**\n   * Returns an array with the attributes of the filterable components\n   */\n  protected getFilterAttrs(): Array<string> {\n    return this.filterComponents.map((elem: IFilterBuilderCmpTarget) => elem.formComponentAttr);\n  }\n  /**\n   * Gets state\n   */\n  get state(): OFilterBuilderComponentStateClass {\n    return this.componentStateService.state;\n  }\n\n\n  getDataToStore() {\n    return this.componentStateService.state;\n  }\n\n  getComponentKey(): string {\n    if (!Util.isDefined(this.oattr)) {\n      console.error('Your o-filter-builder component must have an \\'attr\\'. Otherwise, your filter builder state will not set in localstorage.');\n      return 'OFilterBuilderComponent_';\n    }\n\n    return 'OFilterBuilderComponent_' + this.oattr;\n  }\n\n  /**\n   * Stores filter in state\n   * @param arg\n   */\n  storeFilterInState(arg: OFilterDefinition) {\n    this.componentStateService.storeFilter(arg);\n    this.updateStateStorage();\n  }\n  /**\n   * Method update store localstorage, call of the ILocalStorage\n   */\n  protected updateStateStorage(): void {\n    if (this.localStorageService) {\n      this.localStorageService.updateComponentStorage(this, this.getRouteKey());\n    }\n  }\n\n  public getRouteKey(): string {\n    let route = this.router.url;\n    this.actRoute.params.subscribe(params => {\n      Object.keys(params).forEach(key => {\n        route = route.replace(params[key], key);\n      });\n    });\n    return route;\n  }\n}\n","","import { Directive, Optional } from '@angular/core';\n\nimport { Util } from '../../util/util';\nimport { OFilterBuilderComponent } from './o-filter-builder.component';\n\n@Directive({\n  selector: '[oFilterBuilderClear]',\n  inputs: [\n    '_filterBuilder: oFilterBuilderClear'\n  ],\n  host: {\n    '(click)': 'onClick($event)'\n  },\n  exportAs: 'oFilterBuilderClear'\n})\nexport class OFilterBuilderClearDirective {\n\n  protected _filterBuilder: OFilterBuilderComponent;\n\n  constructor(\n    @Optional() filterBuilder: OFilterBuilderComponent\n  ) {\n    if (Util.isDefined(filterBuilder)) {\n      this._filterBuilder = filterBuilder;\n    }\n  }\n\n  onClick(e?: Event): void {\n    if (this._filterBuilder) {\n      this._filterBuilder.clearFilter();\n    }\n  }\n\n}\n","import { Directive, Optional } from '@angular/core';\n\nimport { Util } from '../../util/util';\nimport { OFilterBuilderComponent } from './o-filter-builder.component';\n\n@Directive({\n  selector: '[oFilterBuilderQuery]',\n  inputs: [\n    '_filterBuilder: oFilterBuilderQuery'\n  ],\n  host: {\n    '(click)': 'onClick($event)'\n  },\n  exportAs: 'oFilterBuilderQuery'\n})\nexport class OFilterBuilderQueryDirective {\n\n  protected _filterBuilder: OFilterBuilderComponent;\n\n  constructor(\n    @Optional() filterBuilder: OFilterBuilderComponent\n  ) {\n    if (Util.isDefined(filterBuilder)) {\n      this._filterBuilder = filterBuilder;\n    }\n  }\n\n  onClick(e?: Event): void {\n    if (this._filterBuilder) {\n      this._filterBuilder.triggerReload();\n    }\n  }\n\n}\n","import { Component, Injector, ViewEncapsulation } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { DialogService } from '../../../services/dialog.service';\nimport { OLoadFilterDialogComponent } from '../../../shared/components/filter/load-filter/o-load-filter-dialog.component';\nimport { OStoreFilterDialogComponent } from '../../../shared/components/filter/store-filter/o-store-filter-dialog.component';\nimport { OFilterBuilderComponent } from '../o-filter-builder.component';\n\nexport const DEFAULT_INPUTS_O_FILTER_BUILDER_MENU = [\n  '_filterBuilder: oFilterBuilder',\n  // icon [string]: Name of google icon (see https://design.google.com/icons/)\n  'icon',\n  // Name of svg icon\n  'svgIcon : svg-icon',\n  // show-clear-filter-option [yes|no|true|false]: show clear filter option in the filter builder menu\n  'showClearFilterOption: show-clear-filter-option',\n  // show-filter-option [yes|no|true|false]: show filter option in the filter builder menu\n  'showFilterOption: show-filter-option'\n];\n\n@Component({\n  selector: 'o-filter-builder-menu',\n  templateUrl: './filter-builder-menu.component.html',\n  inputs: DEFAULT_INPUTS_O_FILTER_BUILDER_MENU,\n  encapsulation: ViewEncapsulation.None\n})\nexport class OFilterBuilderMenuComponent {\n  protected dialog: MatDialog;\n  protected dialogService: DialogService;\n  protected _filterBuilder: OFilterBuilderComponent;\n  @BooleanInputConverter()\n  showFilterOption: boolean = true;\n  @BooleanInputConverter()\n  showClearFilterOption: boolean = true;\n  public icon: string;\n  public svgIcon: string;\n  public defaultSvgIcon = 'ontimize:more_vert';\n\n  constructor(\n    protected injector: Injector,\n  ) {\n    this.dialog = this.injector.get(MatDialog);\n    this.dialogService = this.injector.get(DialogService);\n  }\n\n  public onStoreFilterClicked(): void {\n    const dialogRef = this.dialog.open(OStoreFilterDialogComponent, {\n      data: this._filterBuilder.state.storedFilterBuilders.map(filter => filter.name),\n      width: 'calc((75em - 100%) * 1000)',\n      maxWidth: '65vw',\n      minWidth: '30vw',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog']\n    });\n\n    dialogRef.afterClosed().subscribe(result => {\n      if (result) {\n        this._filterBuilder.storeFilterInState(dialogRef.componentInstance.getFilterAttributes());\n      }\n    });\n  }\n\n  public onLoadFilterClicked(): void {\n    const dialogRef = this.dialog.open(OLoadFilterDialogComponent, {\n      data: this._filterBuilder.state.storedFilterBuilders,\n      width: 'calc((75em - 100%) * 1000)',\n      maxWidth: '65vw',\n      minWidth: '30vw',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog']\n    });\n\n    dialogRef.componentInstance.onDelete.subscribe(filterName => this._filterBuilder.state.deleteStoredFilter(filterName));\n    dialogRef.afterClosed().subscribe(result => {\n      if (result) {\n        const selectedFilterName: string = dialogRef.componentInstance.getSelectedFilterName();\n        if (selectedFilterName) {\n          this._filterBuilder.state.applyFilter(selectedFilterName);\n          this._filterBuilder.setFilterValues(this._filterBuilder.state.filterBuilderValues)\n          this._filterBuilder.triggerReload();\n        }\n      }\n    });\n  }\n\n  onClearFilterClicked(): void {\n    this.dialogService.confirm('CONFIRM', 'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER').then(result => {\n      if (result) {\n        this._filterBuilder.clearFilter();\n        this._filterBuilder.triggerReload();\n      }\n    });\n  }\n\n  onFilterClicked() {\n    if (this._filterBuilder) {\n      this._filterBuilder.triggerReload();\n    }\n  }\n}\n","<button mat-icon-button [attr.aria-label]=\"'FILTERBUILDERMENU.BUTTONS.ARIALBUTTON' | oTranslate\" [matMenuTriggerFor]=\"filterMenu\">\n  <ng-container *ngIf=\"svgIcon !== undefined; else buttonIconTemplate\">\n    <mat-icon [svgIcon]=\"svgIcon\"></mat-icon>\n  </ng-container>\n  <ng-template #buttonIconTemplate>\n    <ng-container *ngIf=\"icon !== undefined; else defaultButtonTemplate\">\n      <mat-icon>{{icon}}</mat-icon>\n    </ng-container>\n  </ng-template>\n  <ng-template #defaultButtonTemplate>\n    <mat-icon [svgIcon]=\"defaultSvgIcon\"></mat-icon>\n  </ng-template>\n</button>\n<mat-menu #filterMenu=\"matMenu\" class=\"o-mat-menu\">\n  <button type=\"button\" mat-menu-item (click)=\"onFilterClicked()\" *ngIf=\"showFilterOption\">\n    {{ 'FILTERBUILDERMENU.BUTTONS.FILTER' | oTranslate }}\n  </button>\n  <button type=\"button\" mat-menu-item (click)=\"onStoreFilterClicked()\">\n    {{ 'FILTERBUILDERMENU.BUTTONS.SAVE_FILTER' | oTranslate }}\n  </button>\n  <button type=\"button\" mat-menu-item (click)=\"onLoadFilterClicked()\">\n    {{ 'FILTERBUILDERMENU.BUTTONS.LOAD_FILTER' | oTranslate}}\n  </button>\n  <button type=\"button\" mat-menu-item (click)=\"onClearFilterClicked()\" *ngIf=\"showClearFilterOption\">\n    {{ 'FILTERBUILDERMENU.BUTTONS.CLEAR_FILTER' | oTranslate}}\n  </button>\n</mat-menu>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OFilterBuilderClearDirective } from './o-filter-builder-clear.directive';\nimport { OFilterBuilderQueryDirective } from './o-filter-builder-query.directive';\nimport { OFilterBuilderComponent } from './o-filter-builder.component';\nimport { OFilterBuilderComponentStateService } from '../../services/state/o-filter-builder-component-state.service';\nimport { OFilterBuilderMenuComponent } from './filter-builder-menu/filter-builder-menu.component';\n\n@NgModule({\n  imports: [\n    OSharedModule,\n    CommonModule\n  ],\n  declarations: [\n    OFilterBuilderComponent,\n    OFilterBuilderClearDirective,\n    OFilterBuilderQueryDirective,\n    OFilterBuilderMenuComponent\n  ],\n  exports: [\n    OFilterBuilderComponent,\n    OFilterBuilderClearDirective,\n    OFilterBuilderQueryDirective,\n    OFilterBuilderMenuComponent\n  ],\n  providers: [\n    OFilterBuilderComponentStateService\n  ]\n})\nexport class OFilterBuilderModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OFormContainerComponent } from './o-form-container.component';\n\n@NgModule({\n    declarations: [OFormContainerComponent],\n    imports: [OSharedModule, CommonModule],\n    exports: [OFormContainerComponent]\n})\nexport class OFormContainerModule {\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OFormNavigationComponent } from '../navigation/o-form-navigation.component';\nimport { OFormToolbarComponent } from './o-form-toolbar.component';\n\n@NgModule({\n  declarations: [OFormNavigationComponent, OFormToolbarComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OFormNavigationComponent, OFormToolbarComponent]\n})\nexport class OFormToolbarModule { }\n","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { CanDeactivateFormGuard } from './guards/o-form-can-deactivate.guard';\nimport { OFormComponent } from './o-form.component';\nimport { OFormToolbarModule } from './toolbar/o-form-toolbar.module';\n\n@NgModule({\n  declarations: [OFormComponent],\n  imports: [CommonModule, OFormToolbarModule, OSharedModule],\n  exports: [OFormComponent, OFormToolbarModule],\n  providers: [{ provide: CanDeactivateFormGuard, useClass: CanDeactivateFormGuard }],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class OFormModule { }\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Injector, OnInit, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { O_INPUTS_OPTIONS } from '../../../config/app-config';\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { SnackBarService } from '../../../services/snackbar.service';\nimport { OTranslateService } from '../../../services/translate/o-translate.service';\nimport { Expression } from '../../../types/expression.type';\nimport { FormValueOptions } from '../../../types/form-value-options.type';\nimport { OInputsOptions } from '../../../types/o-inputs-options.type';\nimport { FilterExpressionUtils } from '../../../util/filter-expression.utils';\nimport { Util } from '../../../util/util';\n\nexport const DEFAULT_INPUTS_O_SEARCH_INPUT = [\n  'placeholder',\n  'label',\n  'width',\n  'floatLabel: float-label',\n  'appearance',\n  'columns',\n  'filterCaseSensitive: filter-case-sensitive',\n  'showCaseSensitiveCheckbox: show-case-sensitive-checkbox',\n  'showMenu: show-menu'\n];\n\nexport const DEFAULT_OUTPUTS_O_SEARCH_INPUT = [\n  'onSearch'\n];\n\ndeclare type ColumnObject = {\n  column: string;\n  checked: boolean;\n};\n\n@Component({\n  selector: 'o-search-input',\n  templateUrl: './o-search-input.component.html',\n  styleUrls: ['./o-search-input.component.scss'],\n  inputs: DEFAULT_INPUTS_O_SEARCH_INPUT,\n  outputs: DEFAULT_OUTPUTS_O_SEARCH_INPUT,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-search-input]': 'true'\n  }\n})\nexport class OSearchInputComponent implements OnInit, AfterViewInit {\n\n  public onSearch: EventEmitter<any> = new EventEmitter<any>();\n  public label: string;\n  public colArray: ColumnObject[] = [];\n  public _placeholder: string = 'SEARCH';\n\n  get placeholder(): string {\n    return this.translateService.get(this._placeholder);\n  }\n\n  set placeholder(value: string) {\n    if (Util.isDefined(value)) {\n      this._placeholder = value;\n    }\n  }\n\n  get labelVisible(): boolean {\n    return Util.isDefined(this.label);\n  }\n\n  public width: string;\n  public columns: string;\n  @BooleanInputConverter()\n  public showCaseSensitiveCheckbox: boolean = false;\n  @BooleanInputConverter()\n  public showMenu: boolean = true;\n  @BooleanInputConverter()\n  protected _filterCaseSensitive: boolean = false;\n  protected _floatLabel: FloatLabelType;\n  protected _appearance: MatFormFieldAppearance;\n\n  protected formGroup: UntypedFormGroup;\n  protected term: UntypedFormControl;\n  protected translateService: OTranslateService;\n  protected oInputsOptions: OInputsOptions;\n  protected snackBarService: SnackBarService;\n\n  constructor(\n    protected injector: Injector,\n    protected elRef: ElementRef\n  ) {\n    this.translateService = this.injector.get(OTranslateService);\n    this.snackBarService = this.injector.get(SnackBarService);\n    this.formGroup = new UntypedFormGroup({});\n  }\n\n  public ngOnInit(): void {\n    this.term = new UntypedFormControl();\n    this.formGroup.addControl('term', this.term);\n\n    this.term.valueChanges.pipe(debounceTime(400))\n      .pipe(distinctUntilChanged()).subscribe(term => {\n        if (this.checkActiveColumns()) {\n          this.onSearch.emit(term);\n        }\n      });\n\n    const colArray = Util.parseArray(this.columns, true);\n    colArray.forEach((col: string) => {\n      this.colArray.push({\n        column: col,\n        checked: true\n      });\n    });\n  }\n\n  public ngAfterViewInit(): void {\n    try {\n      this.oInputsOptions = this.injector.get(O_INPUTS_OPTIONS);\n    } catch (e) {\n      this.oInputsOptions = {};\n    }\n    Util.parseOInputsOptions(this.elRef, this.oInputsOptions);\n  }\n\n  get floatLabel(): FloatLabelType {\n    return this._floatLabel;\n  }\n\n  set floatLabel(value: FloatLabelType) {\n    const values = ['always', 'auto'];\n    if (values.indexOf(value) === -1) {\n      value = 'always';\n    }\n    this._floatLabel = value;\n  }\n\n  get appearance(): MatFormFieldAppearance {\n    return this._appearance;\n  }\n\n  set appearance(value: MatFormFieldAppearance) {\n    const values = ['fill', 'outline'];\n    if (values.indexOf(value) === -1) {\n      value = undefined;\n    }\n    this._appearance = value;\n  }\n\n  get filterCaseSensitive(): boolean {\n    return this._filterCaseSensitive;\n  }\n\n  set filterCaseSensitive(value: boolean) {\n    this._filterCaseSensitive = value;\n  }\n\n  public getFormGroup(): UntypedFormGroup {\n    return this.formGroup;\n  }\n\n  public getValue(): string {\n    return this.term.value;\n  }\n\n  public setValue(val: string, options?: FormValueOptions): void {\n    this.term.setValue(val, options);\n  }\n\n  public getFormControl(): UntypedFormControl {\n    return this.term;\n  }\n\n  get hasCustomWidth(): boolean {\n    return this.width !== undefined;\n  }\n\n  get showFilterMenu(): boolean {\n    return this.showMenu && this.colArray.length > 0;\n  }\n\n  public isChecked(column: ColumnObject): boolean {\n    return column.checked;\n  }\n\n  public onCheckboxChange(column: ColumnObject, event: MatCheckboxChange): void {\n    column.checked = event.checked;\n    // triggerOnSearch if we want to trigger search on each change\n  }\n\n  public onSelectAllChange(event: MatCheckboxChange): void {\n    this.colArray.forEach((col: ColumnObject) => {\n      col.checked = event.checked;\n    });\n    // triggerOnSearch if we want to trigger search on each change\n  }\n\n  public areAllColumnsChecked(): boolean {\n    let result: boolean = true;\n    this.colArray.forEach((col: ColumnObject) => {\n      result = result && col.checked;\n    });\n    return result;\n  }\n\n  public getCountColumnsChecked(): number {\n    let count = 0;\n    this.colArray.forEach((col: ColumnObject) => {\n      if (col.checked) {\n        count++;\n      }\n    });\n    return count;\n  }\n  public onFilterCaseSensitiveChange(event: MatCheckboxChange): void {\n    this.filterCaseSensitive = event.checked;\n    // triggerOnSearch if we want to trigger search on each change\n  }\n\n  public getActiveColumns(): string[] {\n    return this.colArray.filter(col => col.checked).map(col => col.column);\n  }\n\n  public setActiveColumns(arg: string[]): void {\n    this.colArray.forEach((c: ColumnObject) => {\n      c.checked = arg.indexOf(c.column) !== -1;\n    });\n  }\n\n  protected checkActiveColumns(): boolean {\n    if (this.getActiveColumns().length === 0) {\n      this.snackBarService.open('MESSAGES.AVOID_QUERY_WITHOUT_QUICKFILTER_COLUMNS');\n      return false;\n    }\n    return true;\n  }\n\n  protected triggerOnSearch(): void {\n    const term = this.term.value;\n    if (this.checkActiveColumns() && Util.isDefined(term) && term.length > 0) {\n      this.onSearch.emit(term);\n    }\n  }\n\n  public onMenuClosed(): void {\n    this.triggerOnSearch();\n  }\n\n  get filterExpression(): Expression {\n    const termValue = this.getValue();\n    if (Util.isDefined(termValue) && termValue.length > 0) {\n      const filterCols = this.getActiveColumns();\n      if (filterCols.length > 0) {\n        return FilterExpressionUtils.buildArrayExpressionLike(filterCols, termValue);\n      }\n    }\n    return undefined;\n  }\n}\n","<form [formGroup]=\"getFormGroup()\">\n  <div class=\"quickFilter\" fxLayout=\"row\">\n    <mat-form-field [appearance]=\"appearance\">\n      <mat-icon *ngIf=\"!showFilterMenu\" svgIcon=\"ontimize:search\" matPrefix></mat-icon>\n      <input #term matInput id=\"term\" type=\"search\" formControlName=\"term\" [placeholder]=\"placeholder\">\n      <mat-label *ngIf=\"labelVisible\">{{ label | oTranslate }}</mat-label>\n      <div *ngIf=\"showFilterMenu\" fxLayout=\"row\" matPrefix>\n        <mat-icon svgIcon=\"ontimize:search\" [matBadge]=\"areAllColumnsChecked()?'':getCountColumnsChecked()\" matBadgeSize=\"small\"></mat-icon>\n        <button type=\"button\" mat-icon-button [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (click)=\"$event.stopPropagation()\">\n          <mat-icon class=\"search-icon\">expand_more</mat-icon>\n        </button>\n      </div>\n\n\n      <mat-menu #menu=\"matMenu\" class=\"o-search-input-menu\">\n        <div fxLayout=\"column\" class=\"checkbox-container\">\n\n          <ng-container *ngIf=\"colArray.length > 1\">\n            <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"areAllColumnsChecked()\" (change)=\"onSelectAllChange($event)\">\n              {{ 'SELECT_ALL' | oTranslate }}</mat-checkbox>\n            <mat-divider></mat-divider>\n          </ng-container>\n\n          <ng-container *ngFor=\"let item of colArray\">\n            <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"isChecked(item)\" (change)=\"onCheckboxChange(item, $event)\">\n              {{ item.column | oTranslate }}\n            </mat-checkbox>\n          </ng-container>\n\n          <ng-container *ngIf=\"showCaseSensitiveCheckbox\">\n            <mat-divider></mat-divider>\n            <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"filterCaseSensitive\" (change)=\"onFilterCaseSensitiveChange($event)\">\n              {{ 'TABLE.FILTER.CASE_SENSITIVE' | oTranslate }}\n            </mat-checkbox>\n          </ng-container>\n        </div>\n      </mat-menu>\n    </mat-form-field>\n  </div>\n</form>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OSearchInputComponent } from './o-search-input.component';\n\n@NgModule({\n  declarations: [OSearchInputComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OSearchInputComponent]\n})\nexport class OSearchInputModule { }\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\n\n\nexport const DEFAULT_INPUTS_O_DATA_TOOLBAR = [\n  // show-title [yes|no|true|false]: show the table title. Default: no.\n  'showTitle: show-title',\n  //title: This title value will appear in the toolbar\n  'title',\n\n];\n\n@Component({\n  selector: 'o-data-toolbar',\n  templateUrl: './o-data-toolbar.component.html',\n  styleUrls: ['./o-data-toolbar.component.scss'],\n  inputs: DEFAULT_INPUTS_O_DATA_TOOLBAR,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host:\n    { class: 'o-data-toolbar' }\n\n})\nexport class ODataToolbarComponent {\n  @BooleanInputConverter()\n  showTitle: boolean = false;\n\n  public title: string;\n\n}\n","<ng-content select=\"[o-data-toolbar-projection-start]\"></ng-content>\n<ng-content select=\"[o-data-toolbar-custom-projection-start]\"></ng-content>\n<div fxFlex>\n  <span fxLayoutAlign=\"center center\" *ngIf=\"showTitle\" class=\"title\">{{ title | oTranslate }}</span>\n</div>\n<ng-content select=\"[o-data-toolbar-custom-projection-end]\"></ng-content>\n<ng-content select=\"[o-data-toolbar-projection-end]\"></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { OSharedModule } from '../../shared/shared.module';\nimport { ODataToolbarComponent } from './o-data-toolbar.component';\n\n@NgModule({\n  declarations: [\n    ODataToolbarComponent\n  ],\n  imports: [CommonModule, OSharedModule, RouterModule],\n  exports: [\n    ODataToolbarComponent\n  ]\n})\nexport class ODataToolbarModule { }\n","import { Component, ElementRef, EventEmitter, TemplateRef, ViewChild } from '@angular/core';\n\nimport { NumberInputConverter } from '../../../decorators/input-converter';\nimport { IGridItem } from '../../../interfaces/o-grid-item.interface';\nimport { ObservableWrapper } from '../../../util/async';\n\nexport const DEFAULT_INPUTS_O_GRID_ITEM = [\n  'colspan',\n  'rowspan'\n];\n\n@Component({\n  selector: 'o-grid-item',\n  templateUrl: './o-grid-item.component.html',\n  inputs: DEFAULT_INPUTS_O_GRID_ITEM,\n  host: {\n    '[class.o-grid-item]': 'true',\n    '(click)': 'onItemClicked($event)',\n    '(dblclick)': 'onItemDoubleClicked($event)'\n  },\n\n})\nexport class OGridItemComponent implements IGridItem {\n\n  modelData: object;\n  mdClick: EventEmitter<any> = new EventEmitter();\n  mdDoubleClick: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild(TemplateRef) public template: TemplateRef<any>;\n  @NumberInputConverter()\n  colspan: number = 1;\n  @NumberInputConverter()\n  rowspan: number = 1;\n\n  constructor(public _el: ElementRef) { }\n\n  onItemClicked(e?: Event) {\n    ObservableWrapper.callEmit(this.mdClick, this);\n  }\n\n  onItemDoubleClicked(e?: Event) {\n    ObservableWrapper.callEmit(this.mdDoubleClick, this);\n  }\n\n  public onClick(onNext: (item: OGridItemComponent) => void): object {\n    return ObservableWrapper.subscribe(this.mdClick, onNext);\n  }\n\n  public onDoubleClick(onNext: (item: OGridItemComponent) => void): object {\n    return ObservableWrapper.subscribe(this.mdDoubleClick, onNext);\n  }\n\n  setItemData(data: object): void {\n    if (!this.modelData) {\n      this.modelData = data;\n    }\n  }\n\n  getItemData(): object {\n    return this.modelData;\n  }\n\n}\n","<ng-template #templateref>\n  <ng-content></ng-content>\n</ng-template>","import { Directive, ElementRef, EventEmitter, HostListener, Renderer2 } from '@angular/core';\n\nimport { ObservableWrapper } from '../../../util/async';\nimport { Codes } from '../../../util/codes';\nimport { Util } from '../../../util/util';\nimport type { OGridComponent } from '../o-grid.component';\n\n@Directive({\n  selector: 'mat-grid-tile[o-grid-item]',\n  host: {\n    '(click)': 'onItemClicked($event)',\n    '(dblclick)': 'onItemDoubleClicked($event)'\n  }\n})\nexport class OGridItemDirective {\n\n  mdClick: EventEmitter<any> = new EventEmitter();\n  mdDoubleClick: EventEmitter<any> = new EventEmitter();\n  modelData: object;\n\n  protected grid: OGridComponent;\n\n  @HostListener('mouseenter')\n  onMouseEnter(): void {\n    if (Util.isDefined(this.grid) && this.grid.detailMode !== Codes.DETAIL_MODE_NONE) {\n      this.renderer.setStyle(this._el.nativeElement, 'cursor', 'pointer');\n    }\n  }\n\n  constructor(\n    public _el: ElementRef,\n    private renderer: Renderer2\n  ) { }\n\n  public onClick(onNext: (item: OGridItemDirective) => void): object {\n    return ObservableWrapper.subscribe(this.mdClick, onNext);\n  }\n\n  public onDoubleClick(onNext: (item: OGridItemDirective) => void): object {\n    return ObservableWrapper.subscribe(this.mdDoubleClick, onNext);\n  }\n\n  onItemClicked(e?: Event): void {\n    ObservableWrapper.callEmit(this.mdClick, this);\n  }\n\n  onItemDoubleClicked(e?: Event): void {\n    ObservableWrapper.callEmit(this.mdDoubleClick, this);\n  }\n\n  setItemData(data: object): void {\n    if (!this.modelData) {\n      this.modelData = data;\n    }\n  }\n\n  getItemData(): object {\n    return this.modelData;\n  }\n\n  setGridComponent(grid: OGridComponent): void {\n    this.grid = grid;\n  }\n\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport type OGlobalConfig = {\n  storeState: boolean;\n};\n\nexport const O_GLOBAL_CONFIG = new InjectionToken<OGlobalConfig>('o-global-config');\n","import { Injectable, Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { OFormLayoutManagerService } from '../../../services/o-form-layout-manager.service';\nimport { ShareCanActivateChildService } from '../../../services/share-can-activate-child.service';\nimport { Util } from '../../../util/util';\nimport { OFormLayoutManagerComponent } from '../o-form-layout-manager.component';\n\n@Injectable()\nexport class CanActivateFormLayoutChildGuard implements CanActivateChild {\n\n  protected oFormLayoutService: OFormLayoutManagerService;\n  protected shareCanActivateChildService: ShareCanActivateChildService;\n\n  constructor(protected injector: Injector) {\n    this.shareCanActivateChildService = this.injector.get(ShareCanActivateChildService);\n    try {\n      this.oFormLayoutService = this.injector.get(OFormLayoutManagerService);\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\n    const formLayoutManager: OFormLayoutManagerComponent = this.oFormLayoutService.activeFormLayoutManager;\n    this.oFormLayoutService.activeFormLayoutManager = undefined;\n    if (formLayoutManager) {\n      const oPermission = childRoute.data ? childRoute.data['oPermission'] : undefined;\n      const permissionId: string = (oPermission || {})['permissionId'];\n      if (Util.isDefined(permissionId)) {\n        const restricted = !this.shareCanActivateChildService.canActivateChildUsingPermissions(childRoute, state);\n        if (restricted) {\n          return false;\n        }\n      }\n      formLayoutManager.canAddDetailComponent().subscribe(res => {\n        if (res) {\n          const context = this.oFormLayoutService.context;\n          formLayoutManager.addDetailComponent(childRoute, state.url.substring(0, state.url.indexOf('?')), context);\n        }\n      });\n      return false;\n    }\n    return true;\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Injector,\n  NgZone,\n  OnDestroy,\n  QueryList,\n  ViewChild,\n  ViewChildren,\n  ViewContainerRef,\n  ViewEncapsulation\n} from '@angular/core';\nimport { MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BehaviorSubject, concatMap, delay, from, of, Subject, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { ILayoutManagerComponent } from '../../../interfaces/layout-manager-component.interface';\nimport { OFormLayoutManagerMode } from '../../../interfaces/o-form-layout-manager-mode.interface';\nimport { DialogService } from '../../../services/dialog.service';\nimport { OFormLayoutManagerService } from '../../../services/o-form-layout-manager.service';\nimport { OFormLayoutManagerComponentStateClass } from '../../../services/state/o-form-layout-manager-component-state.class';\nimport { FormLayoutCloseDetailOptions, FormLayoutDetailComponentData } from '../../../types/form-layout-detail-component-data.type';\nimport { Codes } from '../../../util/codes';\nimport { Util } from '../../../util/util';\nimport { OFormLayoutManagerContentDirective } from '../directives/o-form-layout-manager-content.directive';\nimport { OFormLayoutManagerBase } from '../o-form-layout-manager-base.class';\n\nexport const DEFAULT_INPUTS_O_FORM_LAYOUT_TABGROUP = [\n  'title',\n  'options',\n  'stretchTabs: stretch-tabs'\n];\n\nexport const DEFAULT_OUTPUTS_O_FORM_LAYOUT_TABGROUP = [\n  'onMainTabSelected',\n  'onSelectedTabChange',\n  'onCloseTab'\n];\n\n@Component({\n  selector: 'o-form-layout-tabgroup',\n  inputs: DEFAULT_INPUTS_O_FORM_LAYOUT_TABGROUP,\n  outputs: DEFAULT_OUTPUTS_O_FORM_LAYOUT_TABGROUP,\n  templateUrl: './o-form-layout-tabgroup.component.html',\n  styleUrls: ['./o-form-layout-tabgroup.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-form-layout-tabgroup]': 'true'\n  }\n})\nexport class OFormLayoutTabGroupComponent implements OFormLayoutManagerMode, AfterViewInit, OnDestroy {\n\n  public data: FormLayoutDetailComponentData[] = [];\n  public title: string;\n  public options: any;\n  public showLoading = new BehaviorSubject<boolean>(false);\n  @BooleanInputConverter()\n  public stretchTabs: boolean = false;\n  @ViewChild('tabGroup') tabGroup: MatTabGroup;\n  @ViewChildren(OFormLayoutManagerContentDirective) tabsDirectives: QueryList<OFormLayoutManagerContentDirective>;\n\n  protected subscriptions: Subscription = new Subscription();\n  protected router: Router;\n  protected dialogService: DialogService;\n\n  public onMainTabSelected: EventEmitter<any> = new EventEmitter<any>();\n  public onSelectedTabChange: EventEmitter<any> = new EventEmitter<any>();\n  public onCloseTab: EventEmitter<any> = new EventEmitter<any>();\n\n  protected previousSelectedIndex: number;\n\n  public updateTabComponentsState = new Subject<any>();\n  public tabsModificationsCache: any[] = [];\n  actRoute: ActivatedRoute;\n\n  constructor(\n    protected injector: Injector,\n    protected location: ViewContainerRef,\n    protected elementRef: ElementRef,\n    @Inject(forwardRef(() => OFormLayoutManagerBase)) public formLayoutManager: OFormLayoutManagerBase\n  ) {\n    this.dialogService = injector.get(DialogService);\n    this.router = this.injector.get(Router);\n    this.actRoute = this.injector.get(ActivatedRoute);\n  }\n\n  get state(): OFormLayoutManagerComponentStateClass {\n    return this.formLayoutManager.state;\n  }\n\n  ngAfterViewInit() {\n    this.initializeComponentState();\n\n    this.subscriptions.add(this.tabsDirectives.changes.subscribe(changes => {\n      if (this.tabsDirectives.length) {\n        const tabItem = this.tabsDirectives.last;\n        const tabData = this.data[tabItem.index];\n        if (tabData && !tabData.rendered) {\n          this.createTabComponent(tabData, tabItem);\n        }\n      }\n    }));\n  }\n\n  ngOnDestroy() {\n    if (this.subscriptions) {\n      this.subscriptions.unsubscribe();\n    }\n  }\n\n  public get mainTabTitle(): string {\n    return (this.options.title || this.title || 'LAYOUT_MANANGER.MAIN_TAB_LABEL');\n  }\n\n  public get disableAnimation() {\n    return this.options && this.options.disableAnimation;\n  }\n\n  public get headerPosition() {\n    let headerPosition;\n    if (this.options && this.options.headerPosition) {\n      headerPosition = this.options.headerPosition;\n    }\n    return headerPosition;\n  }\n\n  public get color() {\n    let color;\n    if (this.options && this.options.color) {\n      color = this.options.color;\n    }\n    return color;\n  }\n\n  public get backgroundColor() {\n    let backgroundColor;\n    if (this.options && this.options.backgroundColor) {\n      backgroundColor = this.options.backgroundColor;\n    }\n    return backgroundColor;\n  }\n\n  public get templateMatTabLabel() {\n    let templateMatTabLabel;\n    if (this.options && this.options.templateMatTabLabel) {\n      templateMatTabLabel = this.options.templateMatTabLabel;\n    }\n    return templateMatTabLabel;\n  }\n\n  public get icon() {\n    let icon;\n    if (this.options && this.options.icon) {\n      icon = this.options.icon;\n    }\n    return icon;\n  }\n\n  public get isIconPositionLeft() {\n    return this.options && this.options.iconPosition === 'left';\n  }\n\n  get maxTabs(): number {\n    let maxTabs;\n    if (this.options && this.options.maxTabs) {\n      maxTabs = this.options.maxTabs;\n    }\n    return maxTabs;\n  }\n\n  addTab(compData: FormLayoutDetailComponentData) {\n    let addNewComp = true;\n    if (compData.insertionMode) {\n      const alreadyExistingInsertionTab = Util.isDefined(this.data.find(item => item.insertionMode));\n      addNewComp = !alreadyExistingInsertionTab;\n    }\n    const newCompParams = compData.params;\n    if (addNewComp) {\n      this.data.forEach(comp => {\n        const currParams = comp.params || {};\n        let someDiffParams = true;\n        if (Object.keys(currParams).length > 0) {\n          someDiffParams = Object.keys(currParams).some(key => currParams[key] != newCompParams[key]);\n        }\n        addNewComp = addNewComp && someDiffParams;\n      });\n    }\n\n    if (addNewComp) {\n      this.data.push(compData);\n    } else {\n      this.reloadTab(compData);\n    }\n  }\n\n  reloadTab(compData: FormLayoutDetailComponentData) {\n    let compIndex = -1;\n    const compParams = compData.params;\n    this.data.forEach((comp, i) => {\n      const currParams = comp.params || {};\n      const sameParams = Util.isEquivalent(currParams, compParams);\n      if (sameParams) {\n        compIndex = i;\n      }\n    });\n\n    if (compIndex >= 0) {\n      this.tabGroup.selectedIndex = (compIndex + 1);\n    }\n  }\n\n  onTabSelectChange(arg: MatTabChangeEvent) {\n    if (this.formLayoutManager && this.tabGroup.selectedIndex === 0) {\n      this.formLayoutManager.updateIfNeeded();\n      this.onMainTabSelected.emit();\n    }\n    const isLoading = this.showLoading.getValue();\n    if (isLoading && Util.isDefined(this.state) && Util.isDefined(this.state.tabsData) &&\n      arg.index === this.state.tabsData.length - 1) {\n      // this is only triggered once when all tabs are loaded\n      this.tabGroup.selectedIndex = this.state.selectedIndex;\n      this.showLoading.next(false);\n    }\n    if (!isLoading) {\n      this.onSelectedTabChange.emit({\n        data: this.data[this.tabGroup.selectedIndex - 1],\n        index: this.tabGroup.selectedIndex,\n        previousIndex: this.previousSelectedIndex\n      });\n    }\n    this.previousSelectedIndex = this.tabGroup.selectedIndex;\n\n  }\n\n  closeTab(index: number, options?: FormLayoutCloseDetailOptions) {\n    if (!this.formLayoutManager) {\n      return;\n    }\n    const tabData = this.data[index];\n    const onCloseTabAccepted: EventEmitter<any> = new EventEmitter<any>();\n\n    this.subscriptions.add(onCloseTabAccepted.asObservable().subscribe(res => {\n      if (res) {\n        this.data.splice(index, 1);\n        this.onCloseTab.emit({\n          data: tabData,\n          index: index + 1\n        });\n      }\n    }));\n\n    if (Util.isDefined(tabData) && this.formLayoutManager.hasToConfirmExit(tabData, options)) {\n      this.dialogService.confirm('CONFIRM', 'MESSAGES.FORM_CHANGES_WILL_BE_LOST').then(res => {\n        onCloseTabAccepted.emit(res);\n      });\n    } else {\n      onCloseTabAccepted.emit(true);\n    }\n  }\n\n  createTabComponent(tabData: FormLayoutDetailComponentData, content: OFormLayoutManagerContentDirective) {\n    const component = tabData.component;\n    const viewContainerRef: ViewContainerRef = content.viewContainerRef;\n    viewContainerRef.clear();\n    viewContainerRef.createComponent(component);\n    tabData.rendered = true;\n  }\n\n  getFormCacheData(): FormLayoutDetailComponentData {\n    return this.data.length > 0 ? this.data[this.data.length - 1] : undefined;\n  }\n\n  getRouteOfActiveItem(): any[] {\n    const route = [];\n    if (this.data.length && this.tabGroup.selectedIndex > 0) {\n      const urlSegments = this.data[this.tabGroup.selectedIndex - 1].urlSegments || [];\n      urlSegments.forEach((segment) => {\n        route.push(segment.path);\n      });\n      return route;\n    }\n    return route;\n  }\n\n  setModifiedState(formAttr: string, modified: boolean, confirmExit: boolean) {\n    if (this.tabGroup.selectedIndex > 0) {\n      const selectedData = this.data[this.tabGroup.selectedIndex - 1];\n      if (Util.isDefined(selectedData)) {\n        selectedData.innerFormsInfo[formAttr] = {\n          modified: modified,\n          confirmOnExit: confirmExit\n        };\n      }\n    }\n  }\n\n  updateNavigation(data: any, keysValues: any, insertionMode?: boolean) {\n    let index;\n    if (insertionMode) {\n      index = this.data.findIndex((item: any) => item.insertionMode !== false);\n    } else {\n      index = this.data.findIndex((item: any) => Object.keys(keysValues).every(key => keysValues[key] == item.params[key]));\n    }\n    if (index >= 0) {\n      const oFormLayoutManagerService = this.injector.get(OFormLayoutManagerService);\n      /** In case of the tree, the label shown in the dialog or in the tab is the label of the node that\n       *  is stored in oFormLayoutManagerService.context */\n      const context = oFormLayoutManagerService.context;\n      let label = context?.label || this.formLayoutManager.getLabelFromData(data);\n      this.tabGroup.selectedIndex = (index + 1);\n      label = label.length ? label : this.formLayoutManager.getLabelFromUrlParams(this.data[index].params);\n      this.data[index].label = label;\n      this.data[index].insertionMode = insertionMode;\n      if (Object.keys(data).length > 0) {\n        this.data[index].formDataByLabelColumns = this.formLayoutManager.getFormDataFromLabelColumns(data);\n      }\n    }\n  }\n\n  updateActiveData(data: any) {\n    const index = this.tabGroup.selectedIndex - 1;\n    if (Util.isDefined(this.data[index])) {\n      this.data[index] = Object.assign(this.data[index], data);\n    }\n  }\n\n  getDataToStore(): any {\n    // Issue #884 avoid storing insertionMode tabs\n    const tabsData = this.data\n      .filter((data: FormLayoutDetailComponentData) => !data.insertionMode)\n      .map((data: FormLayoutDetailComponentData) => ({\n        params: data.params,\n        queryParams: data.queryParams,\n        urlSegments: data.urlSegments,\n        url: data.url,\n        label: data.label,\n        insertionMode: data.insertionMode\n      }));\n    return {\n      tabsData: tabsData,\n      selectedIndex: this.tabGroup.selectedIndex\n    };\n  }\n\n  initializeComponentState() {\n    if (!Util.isDefined(this.state) || !Util.isDefined(this.state.tabsData)) {\n      return;\n    }\n\n    // Issue #884 ensuring that a insertion mode tab that might be previously stored wont be created\n    this.state.tabsData = this.state.tabsData.filter(tabData => !tabData.insertionMode)\n\n    if (this.state.tabsData.length >= 1 && (this.state.tabsData[0].url || '').length > 0) {\n      this.showLoading.next(true);\n\n      const zone = this.injector.get(NgZone);\n      from(this.state.tabsData).pipe(\n        concatMap(tab => of(tab).pipe(delay(100)))\n      ).subscribe((tab) => {\n        const extras = {}\n        extras['relativeTo'] = this.actRoute;\n        extras[Codes.QUERY_PARAMS] = tab.queryParams;\n        extras[Codes.QUERY_PARAMS][Codes.INSERTION_MODE] = tab.insertionMode;\n\n        if (this.formLayoutManager) {\n          this.formLayoutManager.setAsActiveFormLayoutManager();\n        }\n        zone.run(() =>\n          this.router.navigate([tab.url], extras)\n            .then(() => this.showLoading.next(false))\n            .catch(() => this.showLoading.next(true))\n        )\n      });\n    }\n  }\n\n  getParams(): any {\n    return Util.isDefined(this.data[0]) ? this.data[0].params : undefined;\n  }\n\n  isMainComponent(comp: ILayoutManagerComponent): boolean {\n    const firstTab = this.elementRef.nativeElement.getElementsByTagName('mat-tab-body')[0];\n    return firstTab && comp.elementRef && firstTab.contains(comp.elementRef.nativeElement);\n  }\n\n  openDetail(detail: FormLayoutDetailComponentData) {\n    this.addTab(detail);\n  }\n\n  closeDetail(options?: FormLayoutCloseDetailOptions) {\n    this.closeTab(this.tabGroup.selectedIndex - 1, options);\n  }\n\n  canAddDetailComponent(): boolean {\n    // The max tabs number includes the main tab\n    const maxReached = (this.data.length + 1) >= this.maxTabs;\n    if (maxReached) {\n      this.dialogService.info('INFO', 'LAYOUT_MANANGER.MAX_TABS_NUMBER_REACHED')\n    }\n    return !maxReached;\n  }\n\n  isTabDataModified(tabData: FormLayoutDetailComponentData): boolean {\n    return Object.keys(tabData.innerFormsInfo).some(formAttr => tabData.innerFormsInfo[formAttr].modified);\n  }\n\n  closeDetails(detailsKeysData: any[] = [], options?: FormLayoutCloseDetailOptions) {\n    detailsKeysData.forEach((detailData) => {\n      const index = this.data.findIndex((item) => Util.isEquivalent(detailData, item.params || {}));\n      if (index !== -1) {\n        this.closeTab(index, options);\n      }\n    });\n  }\n\n  getIdOfActiveItem(): string {\n    return this.data[this.data.length - 1] ? this.data[this.data.length - 1].id : this.data.length.toString();\n  }\n}\n","<mat-tab-group #tabGroup oTabGroup=\"ontimize\" fxFill (selectedTabChange)=\"onTabSelectChange($event)\" [color]=\"color\"\n  [backgroundColor]=\"backgroundColor\" [headerPosition]=\"headerPosition\" [@.disabled]=\"disableAnimation\" [mat-stretch-tabs]=\"stretchTabs\">\n  <mat-tab label=\"{{ mainTabTitle | oTranslate }}\">\n    <ng-content></ng-content>\n  </mat-tab>\n  <mat-tab *ngFor=\"let tabData of data; let i = index\">\n    <ng-template mat-tab-label>\n      <span class=\"tab-label\" [class.modified]=\"isTabDataModified(tabData)\">\n        <ng-container *ngIf=\"icon && isIconPositionLeft\">\n          <mat-icon>{{ icon }}</mat-icon>\n        </ng-container>\n        <ng-container *ngIf=\"templateMatTabLabel && tabData.formDataByLabelColumns && !tabData.insertionMode \">\n          <ng-container *ngTemplateOutlet=\"templateMatTabLabel;context:{$implicit:tabData.formDataByLabelColumns}\">\n          </ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"!templateMatTabLabel || tabData.insertionMode\">\n          {{ tabData.label }}\n        </ng-container>\n        <ng-container *ngIf=\"icon && !isIconPositionLeft\">\n          <mat-icon>{{ icon }}</mat-icon>\n        </ng-container>\n        <span class=\"gradient-layer\"></span>\n      </span>\n      <mat-icon (click)=\"closeTab(i)\" svgIcon=\"ontimize:close\"></mat-icon>\n    </ng-template>\n    <ng-template o-form-layout-manager-content [index]=\"i\"></ng-template>\n  </mat-tab>\n</mat-tab-group>\n<div *ngIf=\"showLoading | async\" class=\"spinner-container\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n  <mat-progress-spinner mode=\"indeterminate\" strokeWidth=\"3\"></mat-progress-spinner>\n</div>\n","import { AfterViewInit, Component, ElementRef, forwardRef, Inject, Injector, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ResizeEvent } from 'angular-resizable-element';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ILayoutManagerComponent } from '../../../interfaces/layout-manager-component.interface';\nimport { OFormLayoutManagerMode } from '../../../interfaces/o-form-layout-manager-mode.interface';\nimport { DialogService } from '../../../services/dialog.service';\nimport { OFormLayoutManagerComponentStateClass } from '../../../services/state/o-form-layout-manager-component-state.class';\nimport { Codes } from '../../../util/codes';\nimport { Util } from '../../../util/util';\nimport { OFormLayoutManagerContentDirective } from '../directives/o-form-layout-manager-content.directive';\nimport { OFormLayoutManagerBase } from '../o-form-layout-manager-base.class';\n\nimport type { FormLayoutDetailComponentData } from '../../../types/form-layout-detail-component-data.type';\nexport const DEFAULT_INPUTS_O_FORM_LAYOUT_SPLIT_PANE = [\n  'options'\n];\n\nexport const DEFAULT_OUTPUTS_O_FORM_LAYOUT_SPLIT_PANE = [\n];\n\n@Component({\n  selector: 'o-form-layout-split-pane',\n  templateUrl: './o-form-layout-split-pane.component.html',\n  styleUrls: ['./o-form-layout-split-pane.component.scss'],\n  inputs: DEFAULT_INPUTS_O_FORM_LAYOUT_SPLIT_PANE,\n  outputs: DEFAULT_OUTPUTS_O_FORM_LAYOUT_SPLIT_PANE,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-form-layout-split-pane]': 'true'\n  }\n})\nexport class OFormLayoutSplitPaneComponent implements AfterViewInit, OFormLayoutManagerMode {\n\n  data: FormLayoutDetailComponentData;\n  public showLoading = new BehaviorSubject<boolean>(false);\n\n  protected router: Router;\n\n  @ViewChild(OFormLayoutManagerContentDirective)\n  contentDirective: OFormLayoutManagerContentDirective;\n\n  @ViewChild('mainWrapper', { read: ElementRef })\n  protected mainWrapper: ElementRef;\n\n  @ViewChild('detailWrapper', { read: ElementRef })\n  protected detailWrapper: ElementRef;\n\n  protected _options: any;\n\n  public set options(value: any) {\n    if (Util.isDefined(value) && Object.keys(value).length !== 0) {\n      this._options = value;\n    }\n  }\n\n  protected dialogService: DialogService;\n\n  constructor(\n    protected injector: Injector,\n    protected elementRef: ElementRef,\n    public renderer: Renderer2,\n    @Inject(forwardRef(() => OFormLayoutManagerBase)) public formLayoutManager: OFormLayoutManagerBase\n  ) {\n    this.router = this.injector.get(Router);\n    this.dialogService = injector.get(DialogService);\n  }\n\n  get state(): OFormLayoutManagerComponentStateClass {\n    return this.formLayoutManager.state;\n  }\n\n  ngAfterViewInit() {\n    if (this.mainWrapper && this.mainWrapper.nativeElement) {\n      this.setOption(this.mainWrapper.nativeElement, 'mainWidth', 'width');\n      this.setOption(this.mainWrapper.nativeElement, 'mainMaxWidth', 'max-width');\n      this.setOption(this.mainWrapper.nativeElement, 'mainMinWidth', 'min-width');\n    }\n    if (this.detailWrapper && this.detailWrapper.nativeElement) {\n      this.setOption(this.detailWrapper.nativeElement, 'detailWidth', 'width');\n      this.setOption(this.detailWrapper.nativeElement, 'detailMaxWidth', 'max-width');\n      this.setOption(this.detailWrapper.nativeElement, 'detailMinWidth', 'min-width');\n    }\n    this.initializeComponentState();\n  }\n\n  protected setOption(el: any, optionName: string, propertyName: string) {\n    if (Util.isDefined(this._options[optionName])) {\n      this.renderer.setStyle(el, propertyName, this._options[optionName]);\n    }\n  }\n\n  getFormCacheData(): FormLayoutDetailComponentData {\n    return this.data;\n  }\n\n  setModifiedState(formAttr: string, modified: boolean, confirmExit: boolean) {\n    this.data.innerFormsInfo[formAttr] = {\n      modified: modified,\n      confirmOnExit: confirmExit\n    };\n  }\n\n  setDetailComponent(compData: FormLayoutDetailComponentData) {\n    this.data = compData;\n    this.createComponent();\n    this.data.rendererSubject.next(true);\n  }\n\n  onResizeEnd(property: string, event: ResizeEvent, el: any): void {\n    this.renderer.addClass(el, 'resized');\n    this.renderer.setStyle(el, property, `${event.rectangle[property]}px`);\n  }\n\n  protected createComponent() {\n    if (!this.data) {\n      this.contentDirective.viewContainerRef.clear();\n      return;\n    }\n    const component = this.data.component;\n    if (this.contentDirective && component) {\n      const viewContainerRef = this.contentDirective.viewContainerRef;\n      viewContainerRef.clear();\n      viewContainerRef.createComponent(component);\n    }\n  }\n\n  getDataToStore(): any {\n    return this.data;\n  }\n\n  getParams(): any {\n    return Util.isDefined(this.data) ? this.data.params : undefined;\n  }\n\n  initializeComponentState() {\n    if (!Util.isDefined(this.state) || !Util.isDefined(this.state.url)) {\n      return;\n    }\n\n    this.showLoading.next(true);\n    const extras = {};\n    extras[Codes.QUERY_PARAMS] = this.state.queryParams;\n\n    if (this.formLayoutManager) {\n      this.formLayoutManager.setAsActiveFormLayoutManager();\n    }\n\n    this.router.navigate([this.state.url], extras).then(() => {\n      this.showLoading.next(false);\n    });\n\n  }\n\n  updateActiveData(data: any) {\n    if (Util.isDefined(this.data)) {\n      this.data = Object.assign(this.data, data);\n    }\n  }\n\n  getRouteOfActiveItem(): any[] {\n    const route = [];\n    if (Util.isDefined(this.data)) {\n      const urlSegments = this.data.urlSegments || [];\n      urlSegments.forEach((segment) => {\n        route.push(segment.path);\n      });\n      return route;\n    }\n    return route;\n  }\n\n  isMainComponent(comp: ILayoutManagerComponent): boolean {\n    return this.mainWrapper && this.mainWrapper.nativeElement\n      && comp.elementRef && this.mainWrapper.nativeElement.contains(comp.elementRef.nativeElement);\n  }\n\n  openDetail(detail: FormLayoutDetailComponentData) {\n    this.setDetailComponent(detail);\n  }\n\n  closeDetail() {\n    this.setDetailComponent(null);\n  }\n\n  updateNavigation(data: any, keysValues: any, insertionMode?: boolean) {\n    // Nothing to do\n  }\n\n  canAddDetailComponent(): boolean | Observable<boolean> {\n    if (!Util.isDefined(this.data) || !this.formLayoutManager.hasToConfirmExit(this.data)) {\n      return true;\n    }\n\n    return new Observable(observer => {\n      this.dialogService.confirm('CONFIRM', 'MESSAGES.FORM_CHANGES_WILL_BE_LOST').then(res => {\n        observer.next(res);\n        observer.complete()\n      });\n    });\n  }\n\n  getIdOfActiveItem(): string {\n    return 'split-pane';\n  }\n}\n","\n  <div fxLayout=\"row\" class=\"o-split-pane-row-wrapper\">\n    <div #mainWrapper fxFlex fxLayout=\"row\" class=\"o-split-pane-main-content\">\n      <ng-content></ng-content>\n    </div>\n\n    <div #detailWrapper class=\"o-split-pane-content-wrapper mwlResizable\" mwlResizable [enableGhostResize]=\"true\"\n      (resizeEnd)=\"onResizeEnd('width', $event, detailWrapper)\">\n\n      <div class=\"o-split-pane-resize-handle\" mwlResizeHandle [resizeEdges]=\"{ left: true }\">\n        <div class=\"o-split-pane-resize-border\">\n          <div></div>\n        </div>\n      </div>\n\n      <div class=\"o-split-pane-secondary-content\" fxLayout=\"column\" fxLayoutAlign=\"center stretch\" fxFlex>\n        <ng-template o-form-layout-manager-content></ng-template>\n      </div>\n    </div>\n  </div>\n  <div *ngIf=\"showLoading | async\" class=\"spinner-container\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n    <mat-progress-spinner mode=\"indeterminate\" strokeWidth=\"3\"></mat-progress-spinner>\n  </div>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Injector,\n  OnDestroy,\n  OnInit,\n  Optional,\n  SkipSelf,\n  Type,\n  ViewChild\n} from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { ActivatedRoute, ActivatedRouteSnapshot, Route, Router } from '@angular/router';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { ILayoutManagerComponent } from '../../interfaces/layout-manager-component.interface';\nimport { ILocalStorageComponent } from '../../interfaces/local-storage-component.interface';\nimport { OFormLayoutManagerMode } from '../../interfaces/o-form-layout-manager-mode.interface';\nimport { ComponentStateServiceProvider, O_COMPONENT_STATE_SERVICE } from '../../services/factories';\nimport { LocalStorageService } from '../../services/local-storage.service';\nimport { NavigationService } from '../../services/navigation.service';\nimport { OFormLayoutManagerService } from '../../services/o-form-layout-manager.service';\nimport { AbstractComponentStateService } from '../../services/state/o-component-state.service';\nimport { OFormLayoutManagerComponentStateClass } from '../../services/state/o-form-layout-manager-component-state.class';\nimport { OFormLayoutManagerComponentStateService } from '../../services/state/o-form-layout-manager-component-state.service';\nimport { OTranslateService } from '../../services/translate/o-translate.service';\nimport { FormLayoutCloseDetailOptions, FormLayoutDetailComponentData } from '../../types/form-layout-detail-component-data.type';\nimport { O_GLOBAL_CONFIG } from '../../types/o-global-config.type';\nimport { Codes } from '../../util/codes';\nimport { Util } from '../../util/util';\nimport { OFormLayoutDialogComponent } from './dialog/o-form-layout-dialog.component';\nimport { CanActivateFormLayoutChildGuard } from './guards/o-form-layout-can-activate-child.guard';\nimport { OFormLayoutManagerBase } from './o-form-layout-manager-base.class';\nimport { OFormLayoutManagerContext } from '../../types/form-layout-manager-context.type';\nimport { IOFormLayoutManager } from '../../interfaces/form-layout-manager.interface';\n\nexport const DEFAULT_INPUTS_O_FORM_LAYOUT_MANAGER = [\n  'oattr: attr',\n  'mode',\n  'storeState: store-state',\n\n  // Common for dialog and tab mode\n  // deprecated, only mantained for legacy reasons\n  'title',\n  'labelColumns: label-columns',\n  'separator',\n\n  // attr of the child form from which the data for building the tab title will be obtained (only in tab mode)\n  // deprecated, only mantained for legacy reasons\n  'titleDataOrigin: title-data-origin',\n\n  // Only dialog options configurable as an input of the o-form-layout-manager (use the o-form-layout-dialog-options directive)\n  // deprecated, only mantained for legacy reasons\n  'dialogWidth: dialog-width',\n  'dialogMinWidth: dialog-min-width',\n  'dialogMaxWidth: dialog-max-width',\n  'dialogHeight: dialog-height',\n  'dialogMinHeight: dialog-min-height',\n  'dialogMaxHeight dialog-max-height',\n  'dialogClass: dialog-class',\n  'dialogTitleSeparator: dialog-title-separator'\n];\n\nexport const DEFAULT_OUTPUTS_O_FORM_LAYOUT_MANAGER = [\n  'onMainTabSelected',\n  'onSelectedTabChange',\n  'onCloseTab'\n];\n\n@Component({\n  selector: 'o-form-layout-manager',\n  inputs: DEFAULT_INPUTS_O_FORM_LAYOUT_MANAGER,\n  outputs: DEFAULT_OUTPUTS_O_FORM_LAYOUT_MANAGER,\n  templateUrl: './o-form-layout-manager.component.html',\n  styleUrls: ['./o-form-layout-manager.component.scss'],\n  providers: [\n    ComponentStateServiceProvider,\n    { provide: O_COMPONENT_STATE_SERVICE, useClass: OFormLayoutManagerComponentStateService },\n    { provide: OFormLayoutManagerBase, useExisting: OFormLayoutManagerComponent }\n  ],\n  host: {\n    '[class.o-form-layout-manager]': 'true'\n  }\n})\nexport class OFormLayoutManagerComponent implements AfterViewInit, OnInit, OnDestroy, ILocalStorageComponent,IOFormLayoutManager {\n\n  // declaring this property to have acces to static members in the template\n  OFormLayoutManagerComponent = OFormLayoutManagerComponent;\n\n\n  public static DIALOG_MODE = 'dialog';\n  public static TAB_MODE = 'tab';\n  public static SPLIT_PANE_MODE = 'split-pane';\n\n  public oattr: string;\n  public _mode: string = OFormLayoutManagerComponent.DIALOG_MODE;\n  public stretchTabs = false;\n\n  public get mode(): string {\n    return this._mode;\n  }\n\n  public set mode(value: string) {\n    const availableModeValues = [OFormLayoutManagerComponent.DIALOG_MODE, OFormLayoutManagerComponent.TAB_MODE, OFormLayoutManagerComponent.SPLIT_PANE_MODE];\n    this._mode = (value || '').toLowerCase();\n    if (availableModeValues.indexOf(this._mode) === -1) {\n      this._mode = OFormLayoutManagerComponent.DIALOG_MODE;\n    }\n  }\n\n  protected _separator: string = ' ';\n\n  /**\n  * @deprecated user should use the options input\n  */\n  set separator(value: string) {\n    this._separator = value;\n  }\n\n  get separator(): string {\n    return this._separator;\n  }\n\n  /**\n   * @deprecated user should use the options input\n   */\n  public title: string;\n\n  @BooleanInputConverter()\n  public storeState: boolean = true;\n\n  /**\n  * @deprecated user should use the options input\n  */\n  public titleDataOrigin: string;\n\n  /**\n   * @deprecated The next inputs are deprecated and user should use the OFormLayoutDialogOptionsDirective inputs\n   */\n  public dialogWidth: string;\n  public dialogMinWidth: string;\n  public dialogMaxWidth: string;\n  public dialogHeight: string;\n  public dialogMinHeight: string;\n  public dialogMaxHeight: string;\n  public dialogClass: string = '';\n  public dialogTitleSeparator = ':';\n\n  @ViewChild('tabGroup')\n  public oTabGroup: OFormLayoutManagerMode;\n  public dialogRef: MatDialogRef<OFormLayoutDialogComponent>;\n  @ViewChild('splitPane')\n  public oSplitPane: OFormLayoutManagerMode;\n\n  public onMainTabSelected: EventEmitter<any> = new EventEmitter<any>();\n  public onSelectedTabChange: EventEmitter<any> = new EventEmitter<any>();\n  public onCloseTab: EventEmitter<any> = new EventEmitter<any>();\n\n  protected _labelColumns: string;\n\n  get labelColumns(): string {\n    return this._labelColumns;\n  }\n\n  /**\n  * @deprecated user should use the options input\n  */\n  set labelColumns(value: string) {\n    this._labelColumns = value;\n    this._labelColsArray = Util.parseArray(value);\n  }\n\n  protected _labelColsArray: string[] = [];\n\n  get labelColsArray(): string[] {\n    return this._labelColsArray;\n  }\n\n  set labelColsArray(value: string[]) {\n    this._labelColsArray = value;\n  }\n\n  protected translateService: OTranslateService;\n  protected oFormLayoutManagerService: OFormLayoutManagerService;\n  protected localStorageService: LocalStorageService;\n\n  protected _tabGroupOptions: any = {};\n\n  get tabGroupOptions(): any {\n    return this._tabGroupOptions;\n  }\n\n  addTabGroupOptions(value: any) {\n    Object.assign(this._tabGroupOptions, value);\n    if (value.hasOwnProperty('labelColumns')) {\n      this.labelColsArray = Util.parseArray(value['labelColumns']);\n    }\n    if (value.hasOwnProperty('separator')) {\n      this.separator = value['separator'];\n    }\n    if (value.hasOwnProperty('stretchTabs')) {\n      this.stretchTabs = value['stretchTabs'];\n    }\n  }\n\n  protected _dialogOptions: any = {};\n\n  get dialogOptions(): any {\n    return this._dialogOptions;\n  }\n\n  addDialogOptions(value: any) {\n    Object.assign(this._dialogOptions, value);\n    if (value.hasOwnProperty('labelColumns')) {\n      this.labelColsArray = Util.parseArray(value['labelColumns']);\n    }\n    if (value.hasOwnProperty('separator')) {\n      this.separator = value['separator'];\n    }\n    if (value.hasOwnProperty('dialogTitleSeparator')) {\n      this.dialogTitleSeparator = value['dialogTitleSeparator'];\n    }\n  }\n\n  protected _splitPaneOptions: any = {};\n\n  get splitPaneOptions(): any {\n    return this._splitPaneOptions;\n  }\n\n  addSplitPaneOptions(value: any) {\n    Object.assign(this._splitPaneOptions, value);\n  }\n\n  protected addingGuard: boolean = false;\n\n  public navigationService: NavigationService;\n\n  public _markForUpdate: boolean = false;\n  public onTriggerUpdate: EventEmitter<any> = new EventEmitter<any>();\n\n  protected subscription: Subscription = new Subscription();\n\n  protected componentStateService: OFormLayoutManagerComponentStateService;\n\n  constructor(\n    protected injector: Injector,\n    protected router: Router,\n    protected actRoute: ActivatedRoute,\n    protected dialog: MatDialog,\n    protected elRef: ElementRef,\n    @SkipSelf() @Optional()\n    public parentFormLayoutManager: OFormLayoutManagerBase\n  ) {\n    this.oFormLayoutManagerService = this.injector.get(OFormLayoutManagerService);\n    this.localStorageService = this.injector.get(LocalStorageService);\n    this.translateService = this.injector.get(OTranslateService);\n    this.navigationService = this.injector.get(NavigationService);\n    this.componentStateService = this.injector.get<OFormLayoutManagerComponentStateService>(AbstractComponentStateService as Type<OFormLayoutManagerComponentStateService>);\n    if (this.storeState) {\n      this.subscription.add(this.localStorageService.onRouteChange.subscribe(res => {\n        this.updateStateStorage();\n      }));\n    }\n    this.getInjectionTokenConfig();\n\n  }\n\n  private getInjectionTokenConfig() {\n    try {\n      const oGlobalConfig = this.injector.get(O_GLOBAL_CONFIG);\n      if (Util.isDefined(oGlobalConfig.storeState)) {\n        this.storeState = oGlobalConfig.storeState;\n        if (!this.storeState) {\n          this.subscription.unsubscribe();\n        }\n      };\n\n    } catch (error) {\n      // Do nothing because is optional\n    }\n  }\n\n  get state(): OFormLayoutManagerComponentStateClass {\n    return this.componentStateService.state;\n  }\n\n  public ngOnInit(): void {\n    this.addActivateChildGuard();\n    if (!Util.isDefined(this.oattr)) {\n      this.oattr = (this.title || '') + this.mode;\n      console.warn('o-form-layout-manager must have an unique attr');\n    }\n    this.oFormLayoutManagerService.registerFormLayoutManager(this);\n    if (this.storeState) {\n      this.componentStateService.initialize(this);\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    setTimeout(() => {\n      if (this.elRef) {\n        this.elRef.nativeElement.removeAttribute('title');\n      }\n    });\n  }\n\n  public ngOnDestroy(): void {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n    this.oFormLayoutManagerService.removeFormLayoutManager(this);\n    this.destroyActivateChildGuard();\n  }\n\n  public getAttribute(): string {\n    return this.oattr;\n  }\n\n  public getComponentKey(): string {\n    return 'OFormLayoutManagerComponent_' + this.oattr;\n  }\n\n  public getRouteKey(): string {\n    let route = this.router.url;\n    this.actRoute.params.subscribe(params => {\n      Object.keys(params).forEach(key => {\n        route = route.replace(params[key], key);\n      });\n    });\n    return route;\n  }\n\n  public getDataToStore(): any {\n    const compRef = this.getLayoutModeComponent();\n    return Util.isDefined(compRef) ? compRef.getDataToStore() : {};\n  }\n\n  @HostListener('window:beforeunload', [])\n  public beforeunloadHandler(): void {\n    this.updateStateStorage();\n  }\n\n  public getLabelFromUrlParams(urlParams: object): string {\n    let label = '';\n    const keys = Object.keys(urlParams);\n    keys.forEach((param, i) => {\n      label += urlParams[param] + ((i < keys.length - 1) ? this.separator : '');\n    });\n    return label;\n  }\n\n  public getFormDataFromLabelColumns(data: any) {\n    const formData = {};\n    Object.keys(data).forEach(x => {\n      if (this.labelColsArray.indexOf(x) > -1) {\n        formData[x] = data[x];\n      }\n    });\n    return formData;\n  }\n\n  public addActivateChildGuard(): void {\n    const routeConfig = this.getParentActRouteRoute();\n    if (Util.isDefined(routeConfig)) {\n      const canActivateChildArray = (routeConfig.canActivateChild || []);\n      let previouslyAdded = false;\n      for (let i = 0, len = canActivateChildArray.length; i < len; i++) {\n        const guardChild = this.injector.get(CanActivateFormLayoutChildGuard);\n        previouslyAdded = (canActivateChildArray[i] === guardChild.constructor);\n        if (previouslyAdded) {\n          break;\n        }\n      }\n      if (!previouslyAdded) {\n        this.addingGuard = true;\n        canActivateChildArray.push(CanActivateFormLayoutChildGuard);\n        routeConfig.canActivateChild = canActivateChildArray;\n      }\n    }\n  }\n\n  public destroyActivateChildGuard(): void {\n    if (!this.addingGuard) {\n      return;\n    }\n    this.oFormLayoutManagerService.activeFormLayoutManager = undefined;\n    this.oFormLayoutManagerService.context = void 0;\n    const routeConfig = this.getParentActRouteRoute();\n    if (Util.isDefined(routeConfig)) {\n      for (let i = (routeConfig.canActivateChild || []).length - 1; i >= 0; i--) {\n        const guardChild = this.injector.get(CanActivateFormLayoutChildGuard);\n        if (routeConfig.canActivateChild[i] === guardChild.constructor) {\n          routeConfig.canActivateChild.splice(i, 1);\n          break;\n        }\n      }\n    }\n  }\n\n  public isDialogMode(): boolean {\n    return this.mode === OFormLayoutManagerComponent.DIALOG_MODE;\n  }\n\n  public isTabMode(): boolean {\n    return this.mode === OFormLayoutManagerComponent.TAB_MODE;\n  }\n\n  public isSplitPaneMode(): boolean {\n    return this.mode === OFormLayoutManagerComponent.SPLIT_PANE_MODE;\n  }\n\n  public addDetailComponent(childRoute: ActivatedRouteSnapshot, url: string, context?: OFormLayoutManagerContext): void {\n    childRoute = Util.getLastActivateRoute(childRoute);\n    const newDetailComp: FormLayoutDetailComponentData = {\n      params: childRoute.params,\n      queryParams: childRoute.queryParams,\n      urlSegments: childRoute.url,\n      component: childRoute.routeConfig.component,\n      url: url,\n      id: Util.randomNumber().toString(),\n      label: context?.label || '',\n      innerFormsInfo: {},\n      rendered: false,\n      insertionMode: childRoute.queryParams[Codes.INSERTION_MODE] === 'true',\n      rendererSubject: new BehaviorSubject(false)\n    };\n    /** listening for the components to be rendered to determine that the form-layout-manager is finished navigating. */\n    newDetailComp.rendererSubject.subscribe((renderer:boolean) => {\n      if (renderer) {\n        this.navigationService.isNavigating = !renderer;\n      }\n    });\n\n    if (this.isDialogMode()) {\n      this.openFormLayoutDialog(newDetailComp);\n    } else {\n      const compRef = this.getLayoutModeComponent();\n      if (Util.isDefined(compRef)) {\n        compRef.openDetail(newDetailComp);\n      }\n    }\n  }\n\n  public closeDetail(options?: FormLayoutCloseDetailOptions): void {\n    const compRef = this.getLayoutModeComponent();\n    if (Util.isDefined(compRef)) {\n      compRef.closeDetail(options);\n    }\n  }\n\n  public closeDetails(detailsData: any[] = [], options?: FormLayoutCloseDetailOptions): void {\n    if (this.isTabMode() && Util.isDefined(this.oTabGroup)) {\n      this.oTabGroup.closeDetails(detailsData, options);\n    }\n  }\n\n  public openFormLayoutDialog(detailComp: FormLayoutDetailComponentData): void {\n    const cssclass = ['o-form-layout-dialog-overlay'];\n    if (this.dialogClass) {\n      cssclass.push(this.dialogClass);\n    }\n\n    const dialogOptions = (this.dialogOptions || {});\n\n    const dialogConfig: MatDialogConfig = {\n      data: {\n        data: detailComp,\n        layoutManagerComponent: this,\n        title: (this.title || dialogOptions.title),\n        dialogTitleSeparator: this.dialogTitleSeparator\n      },\n      width: dialogOptions.width || this.dialogWidth,\n      minWidth: dialogOptions.minWidth || this.dialogMinWidth,\n      maxWidth: dialogOptions.maxWidth || this.dialogMaxWidth,\n      height: dialogOptions.height || this.dialogHeight,\n      minHeight: dialogOptions.minHeight || this.dialogMinHeight,\n      maxHeight: dialogOptions.maxHeight || this.dialogMaxHeight,\n      disableClose: dialogOptions.disableClose || true,\n      panelClass: dialogOptions.class || cssclass\n    };\n\n    if (this.dialogOptions) {\n      dialogConfig.closeOnNavigation = this.dialogOptions.closeOnNavigation;\n      dialogConfig.backdropClass = this.dialogOptions.backdropClass;\n      dialogConfig.position = this.dialogOptions.position;\n      dialogConfig.disableClose = this.dialogOptions.disableClose;\n    }\n\n    this.dialogRef = this.dialog.open(OFormLayoutDialogComponent, dialogConfig);\n    this.dialogRef.afterClosed().subscribe(() => {\n      if (this.markForUpdate) {\n        this.updateIfNeeded();\n      } else {\n        this.reloadMainComponents();\n      }\n    });\n    this.dialogRef.afterOpened().subscribe(() => {\n      detailComp.rendered = true;\n      detailComp.rendererSubject.next(true);\n    });\n  }\n\n  public getFormCacheData(): FormLayoutDetailComponentData {\n    const compRef = this.getLayoutModeComponent();\n    return Util.isDefined(compRef) ? compRef.getFormCacheData() : undefined;\n  }\n\n  public setModifiedState(formAttr: string, modified: boolean, confirmExit: boolean): void {\n    const compRef = this.getLayoutModeComponent();\n    if (Util.isDefined(compRef)) {\n      compRef.setModifiedState(formAttr, modified, confirmExit);\n    }\n  }\n\n  public getLabelFromData(data: any): string {\n    let label = '';\n    const isDataDefined = Util.isDefined(data);\n    if (isDataDefined && data.hasOwnProperty('new_tab_title')) {\n      label = this.translateService.get(data.new_tab_title);\n    } else if (isDataDefined && this.labelColsArray.length !== 0) {\n      this.labelColsArray.forEach((col, idx) => {\n        if (data[col] !== undefined) {\n          label += data[col] + ((idx < this.labelColsArray.length - 1) ? this.separator : '');\n        }\n      });\n    }\n    return label;\n  }\n\n  public updateNavigation(data: any, keysValues: any, insertionMode: boolean): void {\n    const compRef = this.getLayoutModeComponent();\n    if (Util.isDefined(compRef)) {\n      compRef.updateNavigation(data, keysValues, insertionMode);\n    }\n  }\n\n  public updateActiveData(data: any) {\n    const compRef = this.getLayoutModeComponent();\n    if (Util.isDefined(compRef)) {\n      compRef.updateActiveData(data);\n    }\n  }\n\n  public getRouteOfActiveItem(): any[] {\n    const compRef = this.getLayoutModeComponent();\n    return Util.isDefined(compRef) ? compRef.getRouteOfActiveItem() : [];\n  }\n\n  public isMainComponent(comp: ILayoutManagerComponent): boolean {\n    if (this.isDialogMode()) {\n      return !comp.oFormLayoutDialog;\n    }\n\n    const compRef = this.getLayoutModeComponent();\n    return (Util.isDefined(compRef)\n      && (compRef.isMainComponent(comp)\n        || (Util.isDefined(comp.parentComponent)) && compRef.isMainComponent(comp.parentComponent)));\n  }\n\n  public getRouteForComponent(comp: ILayoutManagerComponent): any[] {\n    const result = [];\n    if (this.parentFormLayoutManager) {\n      const parentRoute = this.parentFormLayoutManager.getRouteForComponent(comp);\n      if (parentRoute && parentRoute.length > 0) {\n        result.push(...parentRoute);\n      }\n    }\n    if (!this.isMainComponent(comp)) {\n      const activeRoute = this.getRouteOfActiveItem();\n\n      if (activeRoute && activeRoute.length > 0) {\n        result.push(...activeRoute);\n      }\n\n    }\n\n    return result;\n  }\n\n  public setAsActiveFormLayoutManager(): void {\n    this.oFormLayoutManagerService.activeFormLayoutManager = this;\n  }\n\n  public reloadMainComponents(): void {\n    this.onTriggerUpdate.emit();\n  }\n\n  public allowToUpdateNavigation(formAttr: string): boolean {\n    return (this.isTabMode() && Util.isDefined(this.oTabGroup) && Util.isDefined(this.titleDataOrigin)) ?\n      this.titleDataOrigin === formAttr :\n      true;\n  }\n\n  public updateStateStorage(): void {\n    if (!this.localStorageService || !this.storeState) {\n      return;\n    }\n    const isTabMode = this.isTabMode() && Util.isDefined(this.oTabGroup);\n    const isSplitPaneMode = this.isSplitPaneMode() && Util.isDefined(this.oSplitPane);\n    if (isTabMode || isSplitPaneMode) {\n      this.localStorageService.updateComponentStorage(this, this.getRouteKey());\n    }\n  }\n\n  private getParentActRouteRoute(): Route {\n    let actRoute = this.actRoute;\n    while (actRoute.parent !== undefined && actRoute.parent !== null) {\n      if (actRoute.routeConfig.children || actRoute.routeConfig.loadChildren) {\n        break;\n      }\n      actRoute = actRoute.parent;\n    }\n    return actRoute.routeConfig;\n  }\n\n  public updateIfNeeded() {\n    if (this.markForUpdate) {\n      this.markForUpdate = false;\n      this.onTriggerUpdate.emit();\n    }\n  }\n\n  public getParams(): any {\n    const compRef = this.getLayoutModeComponent();\n    return Util.isDefined(compRef) ? compRef.getParams() : undefined;\n  }\n\n  set markForUpdate(arg: boolean) {\n    this._markForUpdate = arg;\n    if (this.isSplitPaneMode()) {\n      this.updateIfNeeded();\n    }\n  }\n\n  get markForUpdate(): boolean {\n    return this._markForUpdate;\n  }\n\n  get ignoreCanDeactivate(): boolean {\n    return !this.isSplitPaneMode();\n  }\n\n  protected getLayoutModeComponent(): OFormLayoutManagerMode {\n    let compRef;\n    if (this.isTabMode() && Util.isDefined(this.oTabGroup)) {\n      compRef = this.oTabGroup;\n    } else if (this.isDialogMode() && Util.isDefined(this.dialogRef)) {\n      compRef = this.dialogRef.componentInstance;\n    } else if (this.isSplitPaneMode() && Util.isDefined(this.oSplitPane)) {\n      compRef = this.oSplitPane;\n    }\n    return compRef;\n  }\n\n  allowNavigation(): boolean {\n    return !this.isTabMode();\n  }\n\n  public canAddDetailComponent(): Observable<boolean> {\n    const compRef = this.getLayoutModeComponent();\n    return Util.wrapIntoObservable(Util.isDefined(compRef) ? compRef.canAddDetailComponent() : true);\n  }\n\n  public hasToConfirmExit(data: FormLayoutDetailComponentData, options?: FormLayoutCloseDetailOptions): boolean {\n    if (Util.isDefined(options) && options.exitWithoutConfirmation) {\n      return false;\n    }\n    const formsAttr = Object.keys(data.innerFormsInfo);\n    let result: boolean = false;\n    if (formsAttr.length > 0) {\n      formsAttr.forEach(formAttr => {\n        if (!result) {\n          const formData = data.innerFormsInfo[formAttr];\n          result = formData.confirmOnExit && formData.modified;\n        }\n      });\n    }\n    return result;\n  }\n\n  public getIdOfActiveItem(): string {\n    const compRef = this.getLayoutModeComponent();\n    return Util.isDefined(compRef) ? `${this.oattr}-${compRef.getIdOfActiveItem()}-` : '';\n  }\n}\n","<ng-container [ngSwitch]=\"mode\">\n  <ng-container *ngSwitchCase=\"OFormLayoutManagerComponent.TAB_MODE\">\n    <o-form-layout-tabgroup #tabGroup [title]=\"title\" (onMainTabSelected)=\"onMainTabSelected.emit($event)\"\n      (onSelectedTabChange)=\"onSelectedTabChange.emit($event)\" (onCloseTab)=\"onCloseTab.emit($event)\"\n      [options]=\"tabGroupOptions\" [stretch-tabs]=\"stretchTabs\">\n      <ng-content *ngTemplateOutlet=\"contentBlock\"></ng-content>\n    </o-form-layout-tabgroup>\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"OFormLayoutManagerComponent.SPLIT_PANE_MODE\">\n    <o-form-layout-split-pane #splitPane [options]=\"splitPaneOptions\">\n      <ng-content *ngTemplateOutlet=\"contentBlock\"></ng-content>\n    </o-form-layout-split-pane>\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"OFormLayoutManagerComponent.DIALOG_MODE\">\n    <ng-content *ngTemplateOutlet=\"contentBlock\"></ng-content>\n  </ng-container>\n</ng-container>\n\n\n<ng-template #contentBlock>\n  <ng-content></ng-content>\n</ng-template>","import { ChangeDetectorRef, Directive, HostListener, Injector, isDevMode, OnChanges, SimpleChange, Type } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../decorators/input-converter';\nimport { PaginationContext } from '../interfaces';\nimport { ILocalStorageComponent } from '../interfaces/local-storage-component.interface';\nimport { ServiceResponse } from '../interfaces/service-response.interface';\nimport { DialogService } from '../services/dialog.service';\nimport { LocalStorageService } from '../services/local-storage.service';\nimport { OErrorDialogManager } from '../services/o-error-dialog-manager.service';\nimport { OntimizeService } from '../services/ontimize/ontimize.service';\nimport { AbstractServiceComponentStateClass } from '../services/state/o-component-state.class';\nimport { AbstractComponentStateService, DefaultServiceComponentStateService } from '../services/state/o-component-state.service';\nimport { OConfigureServiceArgs } from '../types/configure-service-args.type';\nimport { OQueryDataArgs } from '../types/query-data-args.type';\nimport { Codes } from '../util/codes';\nimport { ServiceUtils } from '../util/service.utils';\nimport { Util } from '../util/util';\nimport { OExpandableContainerComponent } from './expandable-container/o-expandable-container.component';\nimport { OFormComponent } from './form/o-form.component';\n\nexport const DEFAULT_INPUTS_O_SERVICE_BASE_COMPONENT = [\n  // attr [string]: list identifier. It is mandatory if data are provided through the data attribute. Default: entity (if set).\n  'oattr: attr',\n\n  // service [string]: JEE service path. Default: no value.\n  'service',\n\n  'serviceType : service-type',\n\n  // entity [string]: entity of the service. Default: no value.\n  'entity',\n\n  // query-on-init [no|yes]: query on init. Default: yes.\n  'queryOnInit: query-on-init',\n\n  // query-on-init [no|yes]: query on bind. Default: yes.\n  'queryOnBind: query-on-bind',\n\n  'queryOnEvent: query-on-event',\n\n  'pageable',\n\n  // columns [string]: columns of the entity, separated by ';'. Default: no value.\n  'columns',\n\n  // keys [string]: entity keys, separated by ';'. Default: no value.\n  'keys',\n\n  // parent-keys [string]: parent keys to filter, separated by ';'. Default: no value.\n  'parentKeys: parent-keys',\n\n  // static-data [Array<any>] : way to populate with static data. Default: no value.\n  'staticData: static-data',\n\n  // query-method [string]: name of the service method to perform queries. Default: query.\n  'queryMethod: query-method',\n\n  // paginated-query-method [string]: name of the service method to perform paginated queries. Default: advancedQuery.\n  'paginatedQueryMethod : paginated-query-method',\n\n  // query-rows [number]: number of rows per page. Default: 10.\n  'oQueryRows: query-rows',\n\n  // insert-method [string]: name of the service method to perform inserts. Default: insert.\n  'insertMethod: insert-method',\n\n  // update-method [string]: name of the service method to perform updates. Default: update.\n  'updateMethod: update-method',\n\n  // delete-method [string]: name of the service method to perform deletions. Default: delete.\n  'deleteMethod: delete-method',\n\n  'storeState: store-state',\n\n  // query-with-null-parent-keys [string][yes|no|true|false]: Indicates whether or not to trigger query method when parent-keys filter is null. Default: false\n  'queryWithNullParentKeys: query-with-null-parent-keys',\n\n  // [function]: function to execute on query error. Default: no value.\n  'queryFallbackFunction: query-fallback-function'\n  // ,\n\n  // 'insertFallbackFunction: insert-fallback-function',\n\n  // 'updateFallbackFunction: update-fallback-function',\n\n  // 'deleteFallbackFunction: delete-fallback-function'\n];\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_SERVICE_BASE_COMPONENT\n})\nexport abstract class AbstractOServiceBaseComponent<T extends AbstractComponentStateService<AbstractServiceComponentStateClass>> implements ILocalStorageComponent, OnChanges {\n\n  protected localStorageService: LocalStorageService;\n  componentStateService: T;\n  protected dialogService: DialogService;\n  protected oErrorDialogManager: OErrorDialogManager;\n  parentComponent: AbstractOServiceBaseComponent<T>;\n\n  /* inputs variables */\n  oattr: string;\n  service: string;\n  serviceType: string;\n  entity: string;\n  @BooleanInputConverter()\n  queryOnInit: boolean = true;\n  @BooleanInputConverter()\n  queryOnBind: boolean = true;\n  queryOnEvent: any;\n  @BooleanInputConverter()\n  pageable: boolean = false;\n  columns: string;\n  keys: string;\n  parentKeys: string;\n  staticData: Array<any>;\n  queryMethod: string = Codes.QUERY_METHOD;\n  paginatedQueryMethod: string = Codes.PAGINATED_QUERY_METHOD;\n\n  originalQueryRows: number = Codes.DEFAULT_QUERY_ROWS;\n  protected _queryRows = this.originalQueryRows;\n\n  set oQueryRows(value: number) {\n    if (Util.isDefined(value)) {\n      value = typeof value !== 'number' ? parseInt(value, 10) : value;\n      this.originalQueryRows = value;\n      this._queryRows = value;\n    }\n  }\n\n  get queryRows(): number {\n    return this._queryRows;\n  }\n\n  set queryRows(value: number) {\n    if (Util.isDefined(value)) {\n      this._queryRows = value;\n    }\n  }\n  insertMethod: string = Codes.INSERT_METHOD;\n  updateMethod: string = Codes.UPDATE_METHOD;\n  deleteMethod: string = Codes.DELETE_METHOD;\n  @BooleanInputConverter()\n  storeState: boolean = true;\n  @BooleanInputConverter()\n  queryWithNullParentKeys: boolean = false;\n  queryFallbackFunction: (err: any) => void;\n  // insertFallbackFunction: (err: any) => void;\n  // updateFallbackFunction: (err: any) => void;\n  // deleteFallbackFunction: (err: any) => void;\n  /* end of inputs variables */\n\n  /* parsed inputs variables */\n  protected colArray: Array<string> = [];\n  protected keysArray: Array<string> = [];\n  protected _pKeysEquiv = {};\n  dataArray: Array<any> = [];\n  protected oattrFromEntity: boolean = false;\n  /* end of parsed inputs variables */\n\n  protected onRouteChangeStorageSubscription: any;\n  protected onFormDataSubscribe: any;\n\n  protected querySubscription: Subscription;\n  protected dataService: any;\n\n  protected loadingSubject = new BehaviorSubject<boolean>(false);\n  public loading: Observable<boolean> = this.loadingSubject.asObservable();\n\n  protected form: OFormComponent;\n  public expandableContainer: OExpandableContainerComponent;\n  protected alreadyStored: boolean = false;\n\n  protected queryOnEventSubscription: Subscription;\n  public cd: ChangeDetectorRef; // borrar\n  protected queryArguments: any[];\n\n  protected router: Router;\n  protected actRoute: ActivatedRoute;\n\n  protected sqlTypes = undefined;\n\n  public abortQuery: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n  constructor(\n    protected injector: Injector\n  ) {\n    this.dialogService = this.injector.get<DialogService>(DialogService as Type<DialogService>);\n    this.oErrorDialogManager = this.injector.get<OErrorDialogManager>(OErrorDialogManager as Type<OErrorDialogManager>);\n    this.localStorageService = this.injector.get<LocalStorageService>(LocalStorageService as Type<LocalStorageService>);\n    this.componentStateService = this.injector.get<T>(AbstractComponentStateService as Type<T>);\n    this.router = this.injector.get<Router>(Router as Type<Router>);\n    this.actRoute = this.injector.get<ActivatedRoute>(ActivatedRoute as Type<ActivatedRoute>);\n    try {\n      this.cd = this.injector.get<ChangeDetectorRef>(ChangeDetectorRef as Type<ChangeDetectorRef>);\n      this.form = this.injector.get<OFormComponent>(OFormComponent as Type<OFormComponent>);\n    } catch (e) {\n      // no parent form\n    }\n    try {\n      this.expandableContainer = this.injector.get<OExpandableContainerComponent>(OExpandableContainerComponent as Type<OExpandableContainerComponent>);\n    } catch (e) {\n      // No parent OExpandableContainerComponent\n    }\n  }\n\n  get state(): AbstractServiceComponentStateClass {\n    return this.componentStateService.state;\n  }\n\n  initialize(): void {\n    if (!Util.isDefined(this.oattr) && Util.isDefined(this.entity)) {\n      this.oattr = this.entity.replace('.', '_');\n      this.oattrFromEntity = true;\n    }\n    this.keysArray = Util.parseArray(this.keys);\n    this.checkColumns();\n    const pkArray = Util.parseArray(this.parentKeys);\n    this._pKeysEquiv = Util.parseParentKeysEquivalences(pkArray, Codes.COLUMNS_ALIAS_SEPARATOR);\n\n    this.componentStateService.initialize(this);\n\n    if (this.staticData) {\n      this.queryOnBind = false;\n      this.queryOnInit = false;\n      this.setDataArray(this.staticData);\n    } else {\n      this.configureService();\n    }\n\n    if (this.form && Util.isDefined(this.dataService)) {\n      this.setFormComponent(this.form);\n    }\n\n    if (Util.isDefined(this.queryOnEvent) && Util.isDefined(this.queryOnEvent.subscribe)) {\n      const self = this;\n      this.queryOnEventSubscription = this.queryOnEvent.subscribe((value) => {\n        if (Util.isDefined(value) || this.queryWithNullParentKeys) {\n          self.queryData();\n        }\n      });\n    }\n\n    if (typeof this.queryFallbackFunction !== 'function') {\n      this.queryFallbackFunction = undefined;\n    }\n  }\n\n  checkColumns() {\n    this.colArray = Util.parseArray(this.columns, true);\n    if (isDevMode()) {\n      this.keysArray.forEach(key => {\n        if (this.columns.indexOf(key) === -1) {\n          console.warn(`In the component '${this.oattr}', the key '${key}' is not included in the columns definition and some functionalities may not work correctly`);\n        }\n      })\n    }\n  }\n\n  afterViewInit() {\n    this.registerLocalStorageServiceRouteChange();\n\n    this.abortQuery.subscribe(value => {\n      if (value) {\n        if (this.querySubscription) {\n          this.querySubscription.unsubscribe();\n        }\n        this.setData([]);\n      }\n    });\n  }\n\n  destroy() {\n    if (this.onFormDataSubscribe) {\n      this.onFormDataSubscribe.unsubscribe();\n    }\n    if (this.querySubscription) {\n      this.querySubscription.unsubscribe();\n    }\n    if (this.onRouteChangeStorageSubscription) {\n      this.onRouteChangeStorageSubscription.unsubscribe();\n    }\n    if (this.queryOnEventSubscription) {\n      this.queryOnEventSubscription.unsubscribe();\n    }\n  }\n\n  protected canSetStaticData(staticData: any): boolean {\n    return Util.isDefined(staticData)\n  }\n\n  ngOnChanges(changes: { [propName: string]: SimpleChange }) {\n    if (this.canSetStaticData(changes.staticData?.currentValue)) {\n      this.setData(changes.staticData.currentValue);\n    }\n  }\n\n  @HostListener('window:beforeunload', [])\n  beforeunloadHandler() {\n    this.updateStateStorage();\n  }\n\n  getAttribute(): string {\n    return this.oattr;\n  }\n\n  getComponentKey(): string {\n    return this.getAttribute();\n  }\n\n  getDataToStore(): any {\n    return this.state;\n  }\n\n  getRouteKey(): string {\n    let route = this.router.url;\n    this.actRoute.params.subscribe(params => {\n      Object.keys(params).forEach(key => {\n        route = route.replace(params[key], key);\n      });\n    });\n    return route;\n  }\n\n  getKeys(): string[] {\n    return this.keysArray;\n  }\n\n  configureService() {\n    const configureServiceArgs: OConfigureServiceArgs = { injector: this.injector, baseService: OntimizeService, entity: this.entity, service: this.service, serviceType: this.serviceType }\n    this.dataService = Util.configureService(configureServiceArgs);\n    this.updatePaginationContext({ pageNumber: 0, pageSize: this.queryRows, offset: 0, totalSize: 0 });\n  }\n\n  getDataArray() {\n    return this.dataArray;\n  }\n\n  setDataArray(data: any): void {\n    /* The o-table has own implementation of this method */\n    if (Util.isArray(data)) {\n      this.dataArray = data;\n    } else if (Util.isObject(data)) {\n      this.dataArray = [data];\n    } else {\n      console.warn('Component has received not supported service data. Supported data are Array or Object');\n      this.dataArray = [];\n    }\n\n    if (this.dataArray instanceof Array && this.dataArray.length === 0) {\n      this.dataService?.reinitializePaginationContext(this.queryRows);\n    }\n\n  }\n\n  public setFormComponent(form: OFormComponent): void {\n    if (!Util.isDefined(this.form)) {\n      this.form = form;\n    }\n\n    if (this.queryOnBind) {\n      this.onFormDataSubscribe = this.form.onDataLoaded.subscribe(() => this.pageable ? this.reloadPaginatedDataFromStart() : this.reloadData());\n    }\n  }\n\n  public getParentKeysFromContext(parentKeys: object, context: any) {\n    let result = {};\n    const checkRouteParamsRecursive = this.router.paramsInheritanceStrategy !== 'always';\n    if (context instanceof OExpandableContainerComponent) {\n      result = ServiceUtils.getParentKeysFromExpandableContainer(parentKeys, context, this.actRoute, checkRouteParamsRecursive);\n    } else {\n      result = ServiceUtils.getParentKeysFromForm(parentKeys, context, this.actRoute, checkRouteParamsRecursive);\n    }\n    return result;\n\n  }\n\n  public clearData() {\n    this.state.queryRecordOffset = 0;\n    this.state.totalQueryRecordsNumber = 0;\n    this.setData([], []);\n  }\n\n  public queryData(filter?: any, ovrrArgs?: OQueryDataArgs): void {\n    const queryMethodName = this.pageable ? this.paginatedQueryMethod : this.queryMethod;\n    if (!this.dataService || !(queryMethodName in this.dataService) || !this.entity) {\n      return;\n    }\n    const filterParentKeys = this.getParentKeysValues();\n    if (!ServiceUtils.filterContainsAllParentKeys(filterParentKeys, this._pKeysEquiv) && !this.queryWithNullParentKeys) {\n      this.setData([], []);\n    } else {\n      if (this.querySubscription) {\n        this.querySubscription.unsubscribe();\n      }\n      this.loadingSubject.next(true);\n\n      // ensuring false value\n      this.abortQuery.next(false);\n\n      this.queryArguments = this.getQueryArguments(filter, ovrrArgs);\n\n      if (this.abortQuery.value) {\n        this.clearData();\n        /**  this.cd.detectChanges() is used to update loadingSubject value (this.loadingSubject.next(true); in line 377)\n         *  before using the next line and so update the oTableExpandedFooter directive and display the message\n         * that there are no results when the query is aborted*/\n        this.cd.detectChanges();\n        this.loadingSubject.next(false);\n        return;\n      }\n      this.querySubscription = (this.dataService[queryMethodName].apply(this.dataService, this.queryArguments) as Observable<ServiceResponse>)\n        .subscribe((res: ServiceResponse) => {\n          let data;\n          this.sqlTypes = undefined;\n          if (Util.isArray(res)) {\n            data = res;\n            this.sqlTypes = {};\n          } else if (res.isSuccessful()) {\n            const arrData = (res.data !== undefined) ? res.data : [];\n            data = Util.isArray(arrData) ? arrData : [];\n            this.sqlTypes = res.sqlTypes;\n            this.updatePaginationInfo(res);\n          }\n\n          this.setData(data, this.sqlTypes, (ovrrArgs && ovrrArgs.replace));\n          this.loadingSubject.next(false);\n        }, err => {\n          this.setData([], []);\n          this.loadingSubject.next(false);\n          if (Util.isDefined(this.queryFallbackFunction)) {\n            this.queryFallbackFunction(err);\n          } else {\n            this.oErrorDialogManager.openErrorDialog(err);\n            console.error(err);\n          }\n        });\n    }\n  }\n\n  public reloadData(): void {\n    this.queryData();\n  }\n\n  /**\n   * Reloads the component data and restarts the pagination.\n   */\n  reloadPaginatedDataFromStart(): void {\n    this.reloadData();\n  }\n\n  /**\n   * Extracting the given record keys\n   * @param item record object\n   * @returns object containing item object properties contained in keysArray\n   */\n  extractKeysFromRecord(item: any): object {\n    const result = {};\n    if (Util.isObject(item)) {\n      this.keysArray.forEach(key => {\n        if (Util.isDefined(item[key])) {\n          result[key] = item[key];\n        }\n      });\n    }\n    return result;\n  }\n\n  getAttributesValuesToQuery(): Array<string> {\n    const result = this.colArray;\n    this.keysArray.forEach(key => {\n      if (result.indexOf(key) === -1) {\n        result.push(key);\n      }\n    });\n    return result;\n  }\n\n  getQueryArguments(filter: object, ovrrArgs?: OQueryDataArgs): Array<any> {\n    const compFilter = this.getComponentFilter(filter);\n    const queryCols = this.getAttributesValuesToQuery();\n    const sqlTypes = (ovrrArgs && ovrrArgs.hasOwnProperty('sqltypes')) ? ovrrArgs.sqltypes : this.form ? this.form.getAttributesSQLTypes() : {};\n\n    let queryArguments = [compFilter, queryCols, this.entity, sqlTypes];\n    if (this.pageable) {\n      const queryOffset = (ovrrArgs && ovrrArgs.hasOwnProperty('offset')) ? ovrrArgs.offset : this.state.queryRecordOffset;\n      const queryRowsN = (ovrrArgs && ovrrArgs.hasOwnProperty('length')) ? ovrrArgs.length : this.queryRows;\n      queryArguments = queryArguments.concat([queryOffset, queryRowsN, undefined]);\n    }\n    return queryArguments;\n  }\n\n  updatePaginationInfo(queryRes: ServiceResponse) {\n    if (this.pageable) {\n      const resultEndIndex = queryRes.startRecordIndex + (queryRes.data ? queryRes.data.length : 0);\n      if (queryRes.startRecordIndex !== undefined) {\n        this.state.queryRecordOffset = resultEndIndex;\n      }\n      if (queryRes.totalQueryRecordsNumber !== undefined) {\n        this.state.totalQueryRecordsNumber = queryRes.totalQueryRecordsNumber;\n      }\n      /* pageNumber = 0 is reinitialized when it generates a search  */\n      const pageNumber = this.state.queryRecordOffset == 0 ? 0: this.dataService?.getPaginationContext().pageNumber;\n      this.updatePaginationContext({ pageNumber: pageNumber, offset: this.state.queryRecordOffset, totalSize: this.state.totalQueryRecordsNumber,  });\n    } else {\n      this.updatePaginationContext({ totalSize: queryRes.data.length });\n    }\n\n  }\n\n  private updatePaginationContext(paginationContext: PaginationContext) {\n    if (!this.pageable) {\n      delete paginationContext.offset;\n    }\n\n    this.dataService?.setPaginationContext(paginationContext);\n  }\n\n  getTotalRecordsNumber(): number {\n    return Util.isDefined(this.state.totalQueryRecordsNumber) ? this.state.totalQueryRecordsNumber : undefined;\n  }\n\n  getContextComponent() {\n    return this.expandableContainer || this.form;\n  }\n\n  getComponentFilter(existingFilter: any = {}): any {\n    const filterParentKeys = this.getParentKeysFromContext(this._pKeysEquiv, this.getContextComponent());\n    existingFilter = Object.assign(existingFilter || {}, filterParentKeys);\n    return existingFilter;\n  }\n\n  getSqlTypes() {\n    return Util.isDefined(this.sqlTypes) ? this.sqlTypes : {};\n  }\n\n  getParentKeysValues() {\n    const context = this.getContextComponent();\n    return this.getParentKeysFromContext(this._pKeysEquiv, context);\n  }\n\n  protected updateStateStorage(): void {\n    if (this.localStorageService && this.storeState && !this.alreadyStored) {\n      this.alreadyStored = true;\n      this.localStorageService.updateComponentStorage(this, this.getRouteKey());\n    }\n  }\n\n  protected setData(data: any, sqlTypes?: any, replace?: boolean): void {\n\n  }\n\n  protected registerLocalStorageServiceRouteChange() {\n    if (this.storeState) {\n      this.onRouteChangeStorageSubscription = this.localStorageService.onRouteChange.subscribe(res => {\n        this.updateStateStorage();\n      });\n    }\n  }\n\n}\n\n@Directive()\nexport class DefaultOServiceBaseComponent extends AbstractOServiceBaseComponent<DefaultServiceComponentStateService> {\n\n}\n\n/* This class is being defined to mantain the backwards compatibility with previous versions, use DefaultOServiceBaseComponent*/\n@Directive()\nexport class OServiceBaseComponent extends AbstractOServiceBaseComponent<DefaultServiceComponentStateService> {\n\n}\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { Directive, ElementRef, EventEmitter, forwardRef, Injector, NgZone, ViewChild } from '@angular/core';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { ActivatedRoute } from '@angular/router';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { OFilterBuilderComponent } from '../components/filter-builder/o-filter-builder.component';\nimport { OSearchInputComponent } from '../components/input/search-input/o-search-input.component';\nimport { BooleanConverter, BooleanInputConverter } from '../decorators/input-converter';\nimport { IServiceDataComponent } from '../interfaces/service-data-component.interface';\nimport { OFormLayoutDialogComponent } from '../layouts/form-layout/dialog/o-form-layout-dialog.component';\nimport { OFormLayoutManagerComponent } from '../layouts/form-layout/o-form-layout-manager.component';\nimport { OFormLayoutTabGroupComponent } from '../layouts/form-layout/tabgroup/o-form-layout-tabgroup.component';\nimport { NavigationService } from '../services/navigation.service';\nimport { PermissionsService } from '../services/permissions/permissions.service';\nimport { AbstractServiceComponentStateClass } from '../services/state/o-component-state.class';\nimport { AbstractComponentStateService, DefaultServiceComponentStateService } from '../services/state/o-component-state.service';\nimport { OTranslateService } from '../services/translate/o-translate.service';\nimport { OPermissions } from '../types';\nimport { Expression } from '../types/expression.type';\nimport { O_GLOBAL_CONFIG } from '../types/o-global-config.type';\nimport { OListInitializationOptions } from '../types/o-list-initialization-options.type';\nimport { OQueryDataArgs } from '../types/query-data-args.type';\nimport { OTableInitializationOptions } from '../types/table/o-table-initialization-options.type';\nimport { PermissionsUtils } from '../util';\nimport { ObservableWrapper } from '../util/async';\nimport { Codes } from '../util/codes';\nimport { FilterExpressionUtils } from '../util/filter-expression.utils';\nimport { Util } from '../util/util';\nimport { OFormComponent } from './form/o-form.component';\nimport { AbstractOServiceBaseComponent, DEFAULT_INPUTS_O_SERVICE_BASE_COMPONENT } from './o-service-base-component.class';\nimport { OFormLayoutManagerBase } from '../layouts/form-layout/o-form-layout-manager-base.class';\nimport { OFormLayoutManagerContext } from '../types/form-layout-manager-context.type';\nimport { OFormLayoutManagerService } from '../services/o-form-layout-manager.service';\n\ninterface ItemClick {\n  getItemData(): any\n}\n\nexport const DEFAULT_INPUTS_O_SERVICE_COMPONENT = [\n  ...DEFAULT_INPUTS_O_SERVICE_BASE_COMPONENT,\n\n  '_title: title',\n\n  // visible [no|yes]: visibility. Default: yes.\n  'ovisible: visible',\n\n  // enabled [no|yes]: editability. Default: yes.\n  'oenabled: enabled',\n\n  // controls [string][yes|no|true|false]:\n  'controls',\n\n  // detail-mode [none|click|doubleclick]: way to open the detail form of a row. Default: 'click'.\n  'detailMode: detail-mode',\n\n  // detail-form-route [string]: route of detail form. Default: 'detail'.\n  'detailFormRoute: detail-form-route',\n\n  // recursive-detail [no|yes]: do not append detail keys when navigate (overwrite current). Default: no.\n  'recursiveDetail: recursive-detail',\n\n  // detail-button-in-row [no|yes]: adding a button in row for opening detail form. Default: yes.\n  'detailButtonInRow: detail-button-in-row',\n\n  // detail-button-in-row-icon [string]: material icon. Default: mode_edit.\n  'detailButtonInRowIcon: detail-button-in-row-icon',\n\n  // edit-form-route [string]: route of edit form. Default: 'edit'.\n  'editFormRoute: edit-form-route',\n\n  // recursive-edit [no|yes]: do not append detail keys when navigate (overwrite current). Default: no.\n  'recursiveEdit: recursive-edit',\n\n  // edit-button-in-row [no|yes]: adding a button in row for opening edition form. Default: no.\n  'editButtonInRow: edit-button-in-row',\n\n  // edit-button-in-row-icon [string]: material icon. Default: search.\n  'editButtonInRowIcon: edit-button-in-row-icon',\n\n  // insert-button [no|yes]: show insert button. Default: yes.\n  'insertButton: insert-button',\n\n  // row-height [small | medium | large]\n  'rowHeight : row-height',\n\n  // insert-form-route [string]: route of insert form. Default:\n  'insertFormRoute: insert-form-route',\n\n  // recursive-insert [no|yes]: do not append insert keys when navigate (overwrite current). Default: no.\n  'recursiveInsert: recursive-insert',\n\n  // filter [yes|no|true|false]: whether filter is case sensitive. Default: no.\n  'filterCaseSensitive: filter-case-sensitive',\n\n  // quick-filter [no|yes]: show quick filter. Default: yes.\n  'quickFilter: quick-filter',\n\n  // quick-filter-placeholder: quick filter placeholder\n  'quickFilterPlaceholder: quick-filter-placeholder',\n\n  // pagination-controls [yes|no|true|false]: show pagination controls. Default: yes.\n  'paginationControls: pagination-controls',\n\n  // page-size-options [string]: Page size options separated by ';'.\n  'pageSizeOptions: page-size-options',\n\n  //quickFilterAppearance[legacy|standard|fill|outline] Indicates which of the mat-form-field different appearance variants will be used. Default: outline\n  'quickFilterAppearance:quick-filter-appearance',\n\n  'disablePageSizeCalculation: disable-page-size-calculation'\n];\n\nexport const DEFAULT_OUTPUTS_O_SERVICE_COMPONENT = [\n  'onClick',\n  'onDoubleClick',\n  'onDataLoaded',\n  'onPaginatedDataLoaded',\n  'onSearch'\n]\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_SERVICE_COMPONENT,\n  outputs: DEFAULT_OUTPUTS_O_SERVICE_COMPONENT\n})\nexport abstract class AbstractOServiceComponent<T extends AbstractComponentStateService<AbstractServiceComponentStateClass>>\n  extends AbstractOServiceBaseComponent<T>\n  implements IServiceDataComponent {\n  @ViewChild(MatPaginator) matpaginator: MatPaginator;\n\n  protected permissionsService: PermissionsService;\n  protected translateService: OTranslateService;\n  protected navigationService: NavigationService;\n\n  /* inputs variables */\n  set title(val: string) {\n    this._title = val;\n  }\n  get title(): string {\n    if (Util.isDefined(this._title)) {\n      return this.translateService.get(this._title);\n    }\n    return this._title;\n  }\n  protected _title: string;\n  @BooleanInputConverter()\n  protected ovisible: boolean = true;\n  @BooleanInputConverter()\n  protected oenabled: boolean = true;\n  @BooleanInputConverter()\n  protected controls: boolean = true;\n  public detailMode: string = Codes.DETAIL_MODE_CLICK;\n  protected detailFormRoute: string;\n  @BooleanInputConverter()\n  protected recursiveDetail: boolean = false;\n  @BooleanInputConverter()\n  detailButtonInRow: boolean = false;\n  detailButtonInRowIcon: string = Codes.DETAIL_ICON;\n  protected editFormRoute: string;\n  @BooleanInputConverter()\n  protected recursiveEdit: boolean = false;\n  @BooleanInputConverter()\n  editButtonInRow: boolean = false;\n  editButtonInRowIcon: string = Codes.EDIT_ICON;\n  @BooleanInputConverter()\n  insertButton: boolean;\n  @BooleanInputConverter()\n  paginationControls: boolean = true;\n  @BooleanInputConverter()\n  disablePageSizeCalculation: boolean = false;\n\n  get pageSizeOptions(): number[] {\n    return this._pageSizeOptions;\n  }\n\n  set pageSizeOptions(val: number[]) {\n    if (!(val instanceof Array)) {\n      val = Util.parseArray(String(val)).map(a => parseInt(a, 10));\n    }\n    this._pageSizeOptions = val;\n  }\n\n  protected _rowHeight = Codes.DEFAULT_ROW_HEIGHT;\n  protected rowHeightSubject: BehaviorSubject<string> = new BehaviorSubject(this._rowHeight);\n  public rowHeightObservable: Observable<string> = this.rowHeightSubject.asObservable();\n\n  protected checkViewPortSubject: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  public checkViewPortObservable: Observable<boolean> = this.checkViewPortSubject.asObservable();\n\n  set rowHeight(value) {\n    this._rowHeight = value ? value.toLowerCase() : value;\n    if (!Codes.isValidRowHeight(this._rowHeight)) {\n      this._rowHeight = Codes.DEFAULT_ROW_HEIGHT;\n    }\n    this.rowHeightSubject.next(this._rowHeight);\n  }\n  get rowHeight(): string {\n    return this._rowHeight;\n  }\n  protected insertFormRoute: string;\n  @BooleanInputConverter()\n  protected recursiveInsert: boolean = false;\n\n  protected _filterCaseSensitive: boolean = false;\n  set filterCaseSensitive(value: boolean) {\n    this._filterCaseSensitive = BooleanConverter(value);\n  }\n  get filterCaseSensitive(): boolean {\n    return this._filterCaseSensitive;\n  }\n\n  protected _quickFilter: boolean = true;\n  get quickFilter(): boolean {\n    return this._quickFilter;\n  }\n  set quickFilter(val: boolean) {\n    val = Util.parseBoolean(String(val));\n    this._quickFilter = val;\n    if (val) {\n      setTimeout(() => this.registerQuickFilter(this.searchInputComponent), 0);\n    }\n  }\n\n  public quickFilterPlaceholder: string = '';\n  /* end of inputs variables */\n\n  /* outputs variables */\n  public onClick: EventEmitter<any> = new EventEmitter();\n  public onDoubleClick: EventEmitter<any> = new EventEmitter();\n  public onDataLoaded: EventEmitter<any> = new EventEmitter();\n  public onPaginatedDataLoaded: EventEmitter<any> = new EventEmitter();\n  public onSearch: EventEmitter<any> = new EventEmitter();\n  /* end of outputs variables */\n\n  public filterBuilder: OFilterBuilderComponent;\n  protected _selection: SelectionModel<any>;\n\n  get selection() {\n    if (!Util.isDefined(this._selection)) {\n      this._selection = new SelectionModel<any>(true, [], true, this.compareRow());\n    }\n    return this._selection;\n  }\n\n  protected onTriggerUpdateSubscription: any;\n  protected formLayoutManager: OFormLayoutManagerBase;\n  protected formLayoutManagerTabIndex: number;\n  public oFormLayoutDialog: OFormLayoutDialogComponent;\n\n  protected tabsSubscriptions: any;\n\n  public quickFilterComponent: OSearchInputComponent;\n\n  @ViewChild((forwardRef(() => OSearchInputComponent)))\n  public searchInputComponent: OSearchInputComponent;\n\n  protected quickFilterColArray: string[];\n\n  protected dataResponseArray: any[] = [];\n  protected quickFilterSubscription: Subscription;\n  _pageSizeOptions = Codes.PAGE_SIZE_OPTIONS;\n\n  protected clickTimer;\n  protected clickDelay = 200;\n  protected clickPrevent = false;\n  protected _quickFilterAppearance: MatFormFieldAppearance = 'outline';\n\n  private mutationObservers: MutationObserver[] = [];\n  public enabledInsertButton: boolean = true;\n  public enabledRefreshButton: boolean = true;\n\n  constructor(\n    injector: Injector,\n    protected elRef: ElementRef,\n    protected form: OFormComponent\n  ) {\n    super(injector);\n    this.permissionsService = this.injector.get(PermissionsService);\n    this.translateService = this.injector.get(OTranslateService);\n    this.navigationService = this.injector.get(NavigationService);\n    try {\n      this.formLayoutManager = this.injector.get(OFormLayoutManagerComponent);\n    } catch (e) {\n      // no parent form layout manager\n    }\n    try {\n      this.oFormLayoutDialog = this.injector.get(OFormLayoutDialogComponent);\n      this.formLayoutManager = this.oFormLayoutDialog.formLayoutManager;\n    } catch (e) {\n      // no parent form layout manager\n    }\n    this.getGlobalInjectionTokenConfig();\n  }\n\n  private getGlobalInjectionTokenConfig() {\n\n    try {\n      const oGlobalConfig = this.injector.get(O_GLOBAL_CONFIG);\n      if (Util.isDefined(oGlobalConfig.storeState)) {\n        this.storeState = oGlobalConfig.storeState;\n      };\n\n    } catch (error) {\n      // Do nothing because is optional\n    }\n  }\n\n  public initialize(): void {\n    super.initialize();\n    if (this.detailButtonInRow || this.editButtonInRow) {\n      this.detailMode = Codes.DETAIL_MODE_NONE;\n    }\n  }\n\n  public afterViewInit(): void {\n    this.registerFormLayoutManagerState();\n    super.afterViewInit();\n    if (this.elRef) {\n      this.elRef.nativeElement.removeAttribute('title');\n    }\n    if (this.formLayoutManager && this.formLayoutManager.isMainComponent(this)) {\n      this.onTriggerUpdateSubscription = this.formLayoutManager.onTriggerUpdate.subscribe(() => {\n        this.reloadData();\n      });\n    }\n  }\n\n  public destroy(): void {\n    super.destroy();\n    if (this.onTriggerUpdateSubscription) {\n      this.onTriggerUpdateSubscription.unsubscribe();\n    }\n    if (this.tabsSubscriptions) {\n      this.tabsSubscriptions.unsubscribe();\n    }\n    if (this.quickFilterSubscription) {\n      this.quickFilterSubscription.unsubscribe();\n    }\n  }\n\n  public isVisible(): boolean {\n    return this.ovisible;\n  }\n\n  public hasControls(): boolean {\n    return this.controls;\n  }\n\n  public hasTitle(): boolean {\n    return this.title !== undefined;\n  }\n\n  public getSelectedItems(): any[] {\n    return this.selection.selected;\n  }\n\n  public clearSelection(): void {\n    this.selection.clear();\n  }\n\n  public setSelected(item: any): void {\n    if (Util.isDefined(item)) {\n      this.selection.toggle(item);\n    }\n  }\n\n  protected async navigateToDetail(route: any[], qParams: any, relativeTo: ActivatedRoute): Promise<void> {\n    const extras = {\n      relativeTo: relativeTo\n    };\n    if (this.formLayoutManager && this.formLayoutManager.isMainComponent(this)) {\n      qParams[Codes.IGNORE_CAN_DEACTIVATE] = this.formLayoutManager.ignoreCanDeactivate;\n      this.formLayoutManager.setAsActiveFormLayoutManager();\n    }\n    extras[Codes.QUERY_PARAMS] = qParams;\n\n    this.router.navigate(route, extras).\n      then(() => {\n        if (!this.formLayoutManager) {\n          this.navigationService.isNavigating = false;\n        }\n      })\n      .catch(() => {\n        console.error('Cannot match any routes. URL Segment: ', route);\n        this.navigationService.isNavigating = false\n      });\n  }\n\n  public insertDetail(): void {\n    if (this.oFormLayoutDialog) {\n      console.warn('Navigation is not available yet in a form layout manager with mode=\"dialog\"');\n      return;\n    }\n    const route = this.getInsertRoute();\n    this.addFormLayoutManagerRoute(route);\n    if (route.length > 0) {\n      const relativeTo = this.recursiveInsert ? this.actRoute.parent : this.actRoute;\n      const qParams = {};\n      if (this.formLayoutManager && this.formLayoutManager.isTabMode()) {\n        qParams[Codes.INSERTION_MODE] = 'true';\n      }\n      this.navigateToDetail(route, qParams, relativeTo);\n    }\n  }\n\n  public viewDetail(item: any, context?: OFormLayoutManagerContext): void {\n    const formLayoutManagerService = this.injector.get(OFormLayoutManagerService);\n    formLayoutManagerService.context = void 0;\n\n    if (this.oFormLayoutDialog) {\n      console.warn('Navigation is not available yet in a form layout manager with mode=\"dialog\"');\n      return;\n    }\n    if (this.navigationService.isNavigating) {\n      return;\n\n    }\n    const zone = this.injector.get(NgZone);\n    zone.run(async () => {\n      const route = this.getItemModeRoute(item, 'detailFormRoute');\n      this.addFormLayoutManagerRoute(route);\n      if (route.length > 0) {\n        const qParams = Codes.getIsDetailObject();\n        const relativeTo = this.recursiveDetail ? this.actRoute.parent : this.actRoute;\n\n        if (!this.formLayoutManager?.isSplitPaneMode()) {\n          formLayoutManagerService.context = context;\n        }\n        this.navigationService.isNavigating = true;\n        await this.navigateToDetail(route, qParams, relativeTo)\n      }\n    });\n\n  }\n\n  public editDetail(item: any): void {\n    if (this.oFormLayoutDialog) {\n      console.warn('Navigation is not available yet in a form layout manager with mode=\"dialog\"');\n      return;\n    }\n    const zone = this.injector.get(NgZone);\n    zone.run(async () => {\n      const route = this.getItemModeRoute(item, 'editFormRoute');\n      this.addFormLayoutManagerRoute(route);\n      if (route.length > 0) {\n        const qParams = Codes.getIsDetailObject();\n        const relativeTo = this.recursiveEdit ? this.actRoute.parent : this.actRoute;\n\n        await this.navigateToDetail(route, qParams, relativeTo)\n\n      }\n    });\n  }\n\n  protected addFormLayoutManagerRoute(routeArr: any[]): any[] {\n    if (this.formLayoutManager && routeArr.length > 0) {\n      const compRoute = this.formLayoutManager.getRouteForComponent(this);\n      if (compRoute && compRoute.length > 0) {\n        routeArr.unshift(...compRoute);\n      }\n    }\n    return routeArr;\n  }\n  protected setButtonPermissions(actionsPermissions): void {\n    if (Util.isDefined(actionsPermissions)) {\n      this.setPermission('insert', 'insertButton', 'enabledInsertButton', actionsPermissions);\n      this.setPermission('refresh', 'refreshButton', 'enabledRefreshButton', actionsPermissions);\n      this.setPermission('delete', 'deleteButton', 'enabledDeleteButton', actionsPermissions);\n    }\n  }\n  protected setPermission(attr: string, visibleProp: string, enabledProp: string, actionsPermissions): void {\n    const perm = this.getPermissionByAttr(attr, actionsPermissions);\n    if (Util.isDefined(perm)) {\n      this[visibleProp] = perm.visible;\n      this[enabledProp] = perm.enabled;\n    }\n  }\n\n  protected manageCustomPermissions(actionsPermissions, selector): void {\n    const customPermissions = actionsPermissions.filter(perm => !['insert', 'refresh', 'delete'].includes(perm.attr));\n    customPermissions.forEach(permission => {\n      this.managePermission(this.elRef, permission, this.mutationObservers, selector);\n    });\n  }\n  protected getActionsPermissions(permissions: any): OPermissions[] {\n    return Util.isDefined(permissions) ? (permissions.actions || []) : [];\n  }\n\n  protected getPermissionByAttr(attr: string, actionsPermissions: OPermissions[]): OPermissions {\n    return actionsPermissions.find((perm: OPermissions) => perm.attr === attr);\n  }\n\n  protected managePermission(elementRef: any, permission: OPermissions, mutationObservers: any[], selector: string, attr?: string): void {\n    let elementByAction;\n    const attrAction = Util.isDefined(attr) ? attr : permission.attr;\n    const allElements = elementRef.nativeElement.querySelectorAll(selector);\n\n    allElements.forEach(element => {\n      if (element.getAttribute('attr') === attrAction) {\n        elementByAction = element;\n      }\n    });\n\n    if (Util.isDefined(elementByAction)) {\n      if (!permission.visible) {\n        elementByAction.remove();\n      } else if (!permission.enabled) {\n        elementByAction.disabled = true;\n        const mutationObserver = PermissionsUtils.registerDisabledChangesInDom(elementByAction);\n        mutationObservers.push(mutationObserver);\n      }\n    }\n  }\n\n  protected getEncodedParentKeys(): string {\n    let encoded: string;\n    if (Object.keys(this._pKeysEquiv).length > 0) {\n      const pKeys = this.getParentKeysValues();\n      if (Object.keys(pKeys).length > 0) {\n        encoded = Util.encodeParentKeys(pKeys);\n      }\n    }\n    return encoded;\n  }\n\n  public getInsertRoute(): any[] {\n    const route = [];\n    if (Util.isDefined(this.detailFormRoute)) {\n      route.push(this.detailFormRoute);\n    }\n    const insertRoute = Util.isDefined(this.insertFormRoute) ? this.insertFormRoute : Codes.DEFAULT_INSERT_ROUTE;\n    route.push(insertRoute);\n    // adding parent-keys info...\n    const encodedParentKeys = this.getEncodedParentKeys();\n    if (Util.isDefined(encodedParentKeys)) {\n      const routeObj = {};\n      routeObj[Codes.PARENT_KEYS_KEY] = encodedParentKeys;\n      route.push(routeObj);\n    }\n    if (route.length > 0) {\n      this.storeNavigationFormRoutes('insertFormRoute');\n    }\n    return route;\n  }\n\n  public getItemModeRoute(item: any, modeRoute: string): any[] {\n    const result = this.getRouteOfSelectedRow(item);\n    if (result.length > 0) {\n      if (Util.isDefined(this.detailFormRoute)) {\n        result.unshift(this.detailFormRoute);\n      }\n      if (modeRoute === 'editFormRoute') {\n        result.push(this.editFormRoute || Codes.DEFAULT_EDIT_ROUTE);\n      }\n    }\n    if (result.length > 0 && !this.oFormLayoutDialog) {\n      this.storeNavigationFormRoutes(modeRoute, this.getQueryConfiguration());\n    }\n    return result;\n  }\n\n  protected getQueryConfiguration(): any {\n    let result = {\n      keysValues: this.getKeysValues()\n    };\n    if (this.pageable) {\n      result = Object.assign({\n        serviceType: this.serviceType,\n        queryArguments: this.queryArguments,\n        entity: this.entity,\n        service: this.service,\n        queryMethod: this.pageable ? this.paginatedQueryMethod : this.queryMethod,\n        totalRecordsNumber: this.getTotalRecordsNumber(),\n        queryRows: this.queryRows,\n        queryRecordOffset: Math.max(this.currentPage * this.queryRows, this.state.queryRecordOffset - this.queryRows)\n      }, result);\n    }\n    return result;\n  }\n\n  public getRouteOfSelectedRow(item: any): any[] {\n    const route = [];\n    if (Util.isObject(item)) {\n      this.keysArray.forEach(key => {\n        if (Util.isDefined(item[key])) {\n          route.push(item[key]);\n        }\n      });\n    }\n    return route;\n  }\n\n  protected deleteLocalItems(): void {\n    const selectedItems = this.getSelectedItems();\n    for (let i = 0; i < selectedItems.length; ++i) {\n      const selectedItem = selectedItems[i];\n      const selectedItemKv = {};\n      for (let k = 0; k < this.keysArray.length; ++k) {\n        const key = this.keysArray[k];\n        selectedItemKv[key] = selectedItem[key];\n      }\n      for (let j = this.dataArray.length - 1; j >= 0; --j) {\n        const item = this.dataArray[j];\n        const itemKv = {};\n        for (let k = 0; k < this.keysArray.length; ++k) {\n          const key = this.keysArray[k];\n          itemKv[key] = item[key];\n        }\n        let found = false;\n        for (const k in selectedItemKv) {\n          if (selectedItemKv.hasOwnProperty(k)) {\n            found = itemKv.hasOwnProperty(k) && (selectedItemKv[k] === itemKv[k]);\n          }\n        }\n        if (found) {\n          this.dataArray.splice(j, 1);\n          break;\n        }\n      }\n    }\n    this.clearSelection();\n  }\n\n  public reinitialize(options: OListInitializationOptions | OTableInitializationOptions): void {\n    if (options && Object.keys(options).length) {\n      const clonedOpts = Object.assign({}, options);\n      if (clonedOpts.hasOwnProperty('entity')) {\n        this.entity = clonedOpts.entity;\n        if (this.oattrFromEntity) {\n          this.oattr = undefined;\n        }\n        delete clonedOpts.entity;\n      }\n      for (const prop in clonedOpts) {\n        if (clonedOpts.hasOwnProperty(prop)) {\n          this[prop] = clonedOpts[prop];\n        }\n      }\n      this.destroy();\n      this.initialize();\n    }\n  }\n\n  /**\n   * Sets the `o-filter-builder` component that this component will use to filter its data.\n   * @param filterBuilder the `o-filter-builder` component.\n   */\n  public setFilterBuilder(filterBuilder: OFilterBuilderComponent): void {\n    this.filterBuilder = filterBuilder;\n  }\n\n  public getComponentFilter(existingFilter: any = {}): any {\n    const filter = super.getComponentFilter(existingFilter);\n\n    const quickFilterExpr = this.getQuickFilterExpression();\n    const filterBuilderExpr = this.getFilterBuilderExpression();\n    let complexExpr = quickFilterExpr || filterBuilderExpr;\n    if (quickFilterExpr && filterBuilderExpr) {\n      complexExpr = FilterExpressionUtils.buildComplexExpression(quickFilterExpr, filterBuilderExpr, FilterExpressionUtils.OP_AND);\n    }\n\n    if (complexExpr && !Util.isDefined(filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY])) {\n      filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY] = complexExpr;\n    } else if (complexExpr) {\n      filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY] =\n        FilterExpressionUtils.buildComplexExpression(filter[FilterExpressionUtils.BASIC_EXPRESSION_KEY], complexExpr, FilterExpressionUtils.OP_AND);\n    }\n\n    return filter;\n  }\n\n  protected getQuickFilterExpression(): Expression {\n    if (this.pageable && Util.isDefined(this.quickFilterComponent)) {\n      return this.quickFilterComponent.filterExpression;\n    }\n    return undefined;\n  }\n\n  protected getFilterBuilderExpression(): Expression {\n    // Add filter from o-filter-builder component\n    if (Util.isDefined(this.filterBuilder)) {\n      return this.filterBuilder.getExpression();\n    }\n    return undefined;\n  }\n\n  protected storeNavigationFormRoutes(activeMode: string, queryConf?: any): void {\n    const mainFormLayoutComp = this.formLayoutManager ? Util.isDefined(this.formLayoutManager.isMainComponent(this)) : undefined;\n    this.navigationService.storeFormRoutes({\n      mainFormLayoutManagerComponent: mainFormLayoutComp,\n      isMainNavigationComponent: true,\n      detailFormRoute: this.detailFormRoute,\n      editFormRoute: this.editFormRoute,\n      insertFormRoute: Util.isDefined(this.insertFormRoute) ? this.insertFormRoute : Codes.DEFAULT_INSERT_ROUTE\n    }, activeMode, queryConf);\n  }\n\n  protected saveDataNavigationInLocalStorage(): void {\n    // Save data of the list in navigation-data in the localstorage\n  }\n\n  protected getKeysValues(): any[] {\n    const data = this.dataArray;\n    const self = this;\n    return data.map((row) => {\n      const obj = {};\n      self.keysArray.forEach((key) => {\n        if (row[key] !== undefined) {\n          obj[key] = row[key];\n        }\n      });\n      return obj;\n    });\n  }\n\n  getRouteKey(): string {\n    let route = '';\n    if (this.formLayoutManager && !this.formLayoutManager.isMainComponent(this)) {\n      route = this.router.url;\n      const params = this.formLayoutManager.getParams();\n      if (params) {\n        route += '/' + (Object.keys(params).join('/'));\n      }\n    } else {\n      route = super.getRouteKey();\n    }\n    return route;\n  }\n\n  get elementRef(): ElementRef {\n    return this.elRef;\n  }\n\n  public showCaseSensitiveCheckbox(): boolean {\n    return !this.pageable;\n  }\n\n  public registerQuickFilter(arg: any): void {\n    const quickFilter = (arg as OSearchInputComponent);\n    if (Util.isDefined(this.quickFilterComponent)) {\n      // avoiding to register a quickfiltercomponent if it already exists one\n      return;\n    }\n    this.quickFilterComponent = quickFilter;\n    if (Util.isDefined(this.quickFilterComponent)) {\n      this.quickFilterSubscription = this.quickFilterComponent.onSearch.subscribe(val => {\n        this.onSearch.emit(val);\n        this.filterData(val);\n      });\n      if (Util.isDefined(this.state)) {\n        if ((this.state.quickFilterValue || '').length > 0) {\n          this.quickFilterComponent.setValue(this.state.quickFilterValue, {\n            emitEvent: true\n          });\n        }\n      }\n    }\n  }\n\n  public isFilterCaseSensitive(): boolean {\n    const useQuickFilterValue = Util.isDefined(this.quickFilterComponent) && this.showCaseSensitiveCheckbox();\n    if (useQuickFilterValue) {\n      return this.quickFilterComponent.filterCaseSensitive;\n    }\n    return this.filterCaseSensitive;\n  }\n\n  public configureFilterValue(value: string): string {\n    let returnVal = value;\n    if (value && value.length > 0) {\n      if (!value.startsWith('*')) {\n        returnVal = '*' + returnVal;\n      }\n      if (!value.endsWith('*')) {\n        returnVal = returnVal + '*';\n      }\n    }\n    return returnVal;\n  }\n\n  public getQuickFilterValue(): string {\n    const result = '';\n    if (Util.isDefined(this.quickFilterComponent)) {\n      return this.quickFilterComponent.getValue() || '';\n    }\n    return result;\n  }\n\n  public getQuickFilterColumns(): string[] {\n    let result = this.quickFilterColArray;\n    if (Util.isDefined(this.quickFilterComponent)) {\n      result = this.quickFilterComponent.getActiveColumns();\n    }\n    return result;\n  }\n\n  /**\n   * Filters data locally\n   * @param value the filtering value\n   */\n  public filterData(value?: string, loadMore?: boolean): void {\n    value = Util.isDefined(value) ? value : Util.isDefined(this.quickFilterComponent) ? this.quickFilterComponent.getValue() : void 0;\n    if (Util.isDefined(this.state) && Util.isDefined(value)) {\n      this.state.quickFilterValue = value;\n    }\n    if (this.pageable) {\n      const queryArgs: OQueryDataArgs = {\n        offset: 0,\n        length: this.queryRows,\n        replace: true\n      };\n      this.queryData(void 0, queryArgs);\n      return;\n    }\n    if (this.dataResponseArray && this.dataResponseArray.length > 0) {\n      let filteredData = this.dataResponseArray.slice(0);\n      filteredData = this.getQuickFilterDataFromArray(value, filteredData);\n      filteredData = this.getSortedDataFromArray(filteredData);\n      filteredData = this.getPaginationDataFromArray(filteredData);\n      this.setDataArray(filteredData);\n    } else {\n      this.setDataArray(this.dataResponseArray);\n    }\n  }\n\n  protected getQuickFilterDataFromArray(quickfilter: string, dataArray: any[]): any[] {\n    let result = dataArray;\n    if (quickfilter && quickfilter.length > 0) {\n      const caseSensitive = this.isFilterCaseSensitive();\n      const quickFilterColumns = this.getQuickFilterColumns();\n      const regExpStr = new RegExp(Util.escapeSpecialCharacter(Util.normalizeString(quickfilter, !caseSensitive)));\n      result = dataArray.filter(item => {\n        return quickFilterColumns.some(col => regExpStr.test(Util.normalizeString(item[col] + '', !caseSensitive)));\n      });\n    }\n    return result;\n  }\n\n  protected getSortedDataFromArray(dataArray: any[]): any[] {\n    return dataArray;\n  }\n\n  protected setData(data: any, sqlTypes?: any, replace?: boolean): void {\n    if (!Util.isArray(data)) {\n      this.setDataArray([]);\n    } else {\n      this.dataResponseArray = this.parseResponseArray(data, replace);\n      if (this.pageable) {\n        this.setDataArray(this.dataResponseArray);\n      } else {\n        this.filterData();\n      }\n    }\n    if (this.pageable) {\n      ObservableWrapper.callEmit(this.onPaginatedDataLoaded, data);\n    }\n    ObservableWrapper.callEmit(this.onDataLoaded, this.dataResponseArray);\n  }\n\n  protected parseResponseArray(data: any[], replace?: boolean) {\n    return data;\n  }\n\n  protected registerFormLayoutManagerState() {\n    if (this.storeState && this.formLayoutManager && this.formLayoutManager.isTabMode() && this.formLayoutManager.oTabGroup) {\n      if (!Util.isDefined(this.formLayoutManagerTabIndex)) {\n        this.formLayoutManagerTabIndex = this.formLayoutManager.oTabGroup.data.length;\n      }\n      const updateComponentStateSubject = (this.formLayoutManager.oTabGroup as OFormLayoutTabGroupComponent).updateTabComponentsState;\n\n      this.tabsSubscriptions = this.formLayoutManager.onSelectedTabChange.subscribe((arg) => {\n        if (this.formLayoutManagerTabIndex === arg.previousIndex) {\n          this.updateStateStorage();\n          // setting alreadyStored to false to force triggering a new storage update after this\n          this.alreadyStored = false;\n          if (arg.index !== 0) {\n            updateComponentStateSubject.next(arg);\n          }\n        }\n        if (((arg.previousIndex === void 0) || arg.previousIndex === 0) && this.formLayoutManager.navigationService.isNavigating) {\n          /* in the form-layout mode=tab, the only way to ensure that the component has been rendered is\n           when navigationService.isNavigating and comes previousIndex=0  */\n          arg.data.rendererSubject.next(true);\n        }\n        this.checkViewPortSubject.next(true);\n      });\n\n      this.tabsSubscriptions.add(updateComponentStateSubject.subscribe((arg) => {\n        if (this.formLayoutManagerTabIndex === arg.index) {\n          this.componentStateService.initialize(this);\n          this.applyDefaultConfiguration();\n        }\n      }));\n\n      this.tabsSubscriptions.add(this.formLayoutManager.onCloseTab.subscribe((arg) => {\n        if (this.formLayoutManagerTabIndex === arg.index) {\n          this.updateStateStorage();\n        }\n      }));\n    }\n  }\n\n  applyDefaultConfiguration() {\n\n  }\n\n  public onChangePage(e: PageEvent): void {\n    this.dataService?.setPaginationContext({ pageNumber: e.pageIndex, pageSize: e.pageSize });\n\n    if (!this.pageable) {\n      this.currentPage = e.pageIndex;\n      this.queryRows = e.pageSize;\n      this.filterData();\n      return;\n    }\n    const goingBack = e.pageIndex < this.currentPage;\n    this.currentPage = e.pageIndex;\n    const pageSize = e.pageSize;\n\n    const oldQueryRows = this.queryRows;\n    const changingPageSize = (oldQueryRows !== pageSize);\n    this.queryRows = pageSize;\n\n    let newStartRecord;\n    let queryLength;\n\n    if (goingBack || changingPageSize) {\n      newStartRecord = (this.currentPage * this.queryRows);\n      queryLength = this.queryRows;\n    } else {\n      newStartRecord = Math.max(this.state.queryRecordOffset, (this.currentPage * this.queryRows));\n      const newEndRecord = Math.min(newStartRecord + this.queryRows, this.state.totalQueryRecordsNumber);\n      queryLength = this.disablePageSizeCalculation ? this.queryRows : Math.min(this.queryRows, newEndRecord - newStartRecord);\n    }\n\n    const queryArgs: OQueryDataArgs = {\n      offset: newStartRecord,\n      length: queryLength,\n      replace: true\n    };\n\n    this.queryData(void 0, queryArgs);\n  }\n\n  set currentPage(val: number) {\n    this._currentPage = val;\n  }\n\n  get currentPage(): number {\n    return this._currentPage;\n  }\n\n  protected _currentPage: number = 0;\n\n\n  get totalRecords(): number {\n    if (this.pageable) {\n      return this.getTotalRecordsNumber();\n    }\n    return this.dataResponseArray.length;\n  }\n\n  protected getPaginationDataFromArray(dataArray: any[]): any[] {\n    let result = dataArray;\n    if (this.paginationControls) {\n      result = result.splice(this.currentPage * this.queryRows, this.queryRows);\n    }\n    return result;\n  }\n\n  handleItemClick(item: ItemClick): void {\n    this.clickTimer = setTimeout(() => {\n      if (!this.clickPrevent) {\n        this.itemClickDone(item);\n      }\n      this.clickPrevent = false;\n    }, this.clickDelay);\n  }\n\n  protected itemClickDone(item: ItemClick): void {\n    if (!this.oenabled) {\n      return;\n    }\n    const data = item.getItemData();\n    if (this.detailMode === Codes.DETAIL_MODE_CLICK) {\n      this.saveDataNavigationInLocalStorage();\n      this.viewDetail(data);\n    }\n    this.onClick.emit(data);\n  }\n\n  handleItemDblClick(item: ItemClick): void {\n    clearTimeout(this.clickTimer);\n    this.clickPrevent = true;\n    this.itemDblClickDone(item);\n  }\n\n  protected itemDblClickDone(item: ItemClick): void {\n    if (!this.oenabled) {\n      return;\n    }\n    const data = item.getItemData();\n    if (Codes.isDoubleClickMode(this.detailMode)) {\n      this.saveDataNavigationInLocalStorage();\n      this.viewDetail(data);\n    }\n    this.onDoubleClick.emit(data);\n  }\n\n  get quickFilterAppearance(): MatFormFieldAppearance {\n    return this._quickFilterAppearance;\n  }\n\n  set quickFilterAppearance(value: MatFormFieldAppearance) {\n    const values = ['fill', 'outline'];\n    if (values.indexOf(value) === -1) {\n      console.warn('The quick-filter-appearance attribute is undefined so the outline value will be used');\n      value = 'outline';\n    }\n    this._quickFilterAppearance = value;\n  }\n\n  protected getSqlTypesOfKeys() {\n    const sqlTypes = this.getSqlTypes();\n    const sqlTypesArg = {};\n    if (Util.isDefined(sqlTypes)) {\n      this.keysArray.forEach(key => {\n        sqlTypesArg[key] = sqlTypes[key];\n      });\n    }\n    return sqlTypesArg;\n\n  }\n\n  compareRow(): ((o1: any, o2: any) => boolean) | undefined {\n    return (o1: any, o2: any) => this.keysArray.every(key => o1[key] === o2[key]);\n  }\n}\n\n/*This class is definied to mantain bacwards compatibility */\n@Directive()\nexport class OServiceComponent extends AbstractOServiceComponent<DefaultServiceComponentStateService> {\n\n}\n","import { Directive, EventEmitter, Output } from '@angular/core';\nimport { MatSort, MatSortable } from '@angular/material/sort';\n\nimport { SQLOrder } from '../../../../types/sql-order.type';\nimport { Codes } from '../../../../util/codes';\nimport { Util } from '../../../../util/util';\n\nexport type OMatSortGroupedData = {\n  key: any;\n  values: any[];\n};\n\n@Directive({\n  selector: '[oMatSort]',\n  exportAs: 'oMatSort',\n  inputs: ['disabled: oMatSortDisabled', 'oMatSortColumns']\n})\nexport class OMatSort extends MatSort {\n\n  activeArray: Array<MatSortable> = [];\n  directionById: any = {};\n\n  protected multipleSort: boolean;\n  protected activeSortColumn: string;\n  protected activeSortDirection: string;\n\n  @Output('matSortChange')\n  readonly oSortChange: EventEmitter<any> = new EventEmitter<any>();\n\n  set oMatSortColumns(value: SQLOrder[]) {\n    this.restart();\n    this.setTableInfo(value);\n  }\n\n  setMultipleSort(val: boolean) {\n    this.multipleSort = val;\n  }\n\n  getSortColumns(): any[] {\n    const activeData = [];\n    this.activeArray.forEach((s: MatSortable) => {\n      activeData.push({\n        id: s.id,\n        direction: this.directionById[s.id]\n      });\n    });\n    return activeData;\n  }\n\n  setSortColumns(sortColArray: SQLOrder[]) {\n    this.restart();\n    this.setTableInfo(sortColArray);\n  }\n\n  private restart() {\n    this.activeArray = [];\n    this.directionById = {};\n  }\n\n  protected setTableInfo(sortColArray: Array<SQLOrder>) {\n\n    sortColArray.forEach((colData: SQLOrder) => {\n      const sortDirection: any = colData.ascendent ? Codes.ASC_SORT : Codes.DESC_SORT;\n      this.activeArray.push({\n        id: colData.columnName,\n        start: sortDirection,\n        disableClear: false\n      });\n      this.directionById[colData.columnName] = sortDirection;\n    });\n  }\n\n  addSortColumn(sortable: MatSortable): void {\n    if (this.isActive(sortable)) {\n      // workaround for having a propper work in getNextSortDirection;\n      this.direction = this.directionById[sortable.id];\n      this.directionById[sortable.id] = this.getNextSortDirection(sortable);\n      this.direction = '';\n      if (this.directionById[sortable.id] === '') {\n        this.deleteSortColumn(sortable.id);\n      }\n    } else {\n      if (!this.multipleSort) {\n        this.activeArray = [];\n        this.directionById = {};\n      }\n      this.activeArray.push(sortable);\n      this.directionById[sortable.id] = sortable.start ? sortable.start : this.start;\n    }\n    const activeData = this.getSortColumns();\n    this._stateChanges.next();\n    this.oSortChange.emit(activeData);\n  }\n\n  protected deleteSortColumn(id: string) {\n    delete this.directionById[id];\n    const index = this.activeArray.findIndex(element => element.id === id);\n    if (index > -1) {\n      this.activeArray.splice(index, 1);\n    }\n  }\n\n  isActive(sortable: MatSortable): boolean {\n    return Util.isDefined(this.activeArray.find((s: MatSortable) => sortable.id === s.id));\n  }\n\n  hasDirection(id: any): boolean {\n    let direction;\n    if (Util.isDefined(this.directionById[id])) {\n      direction = this.directionById[id];\n    }\n    return (direction === 'asc' || direction === 'desc');\n  }\n\n  getSortedDataBySQLOrder(data: any[], sqlOrderArray: SQLOrder[]): any[] {\n    this.setSortColumns(sqlOrderArray);\n    return this.getSortedData(data);\n  }\n\n  getSortedData(data: any[]): any[] {\n    const sortColumns = this.getSortColumns();\n    if (sortColumns.length === 0 || data.length === 0) {\n      return data;\n    }\n    this.sortables.forEach((value, key) => {\n      this.deregister(value);\n    });\n    return this.sortByColumns(data, sortColumns);\n  }\n\n  protected sortByColumns(data: any[], sortColumns: any[]) {\n    const sortFunctionBind = this.sortFunction.bind(this);\n    for (let i = 0, len = sortColumns.length; i < len; i++) {\n      const sortC = sortColumns[i];\n      this.activeSortColumn = sortC.id;\n      this.activeSortDirection = sortC.direction;\n      if (i === 0) {\n        data = data.sort(sortFunctionBind);\n      } else {\n        const groupedData: OMatSortGroupedData[] = this.getDataGrouped(data, sortColumns, i);\n        if (groupedData.length >= data.length) {\n          break;\n        }\n        data = this.sortGroupedData(groupedData);\n      }\n    }\n    return data;\n  }\n\n  protected getDataGrouped(data: any, sortColumns: any[], index: number): OMatSortGroupedData[] {\n    const propArr = [];\n    sortColumns.forEach((item, i) => {\n      if (i < index) {\n        propArr.push(item.id);\n      }\n    });\n    if (propArr.length === 0) {\n      return data;\n    }\n    const result: OMatSortGroupedData[] = [];\n    data.forEach(item => {\n      let value = '';\n      propArr.forEach(prop => {\n        value += item[prop];\n      });\n\n      const filtered = result.filter(resItem => resItem.key === value);\n      if (filtered.length === 0) {\n        result.push({\n          key: value,\n          values: [item]\n        });\n      } else if (filtered.length === 1) {\n        filtered[0].values.push(item);\n      }\n    });\n    return result;\n  }\n\n  protected sortGroupedData(groupedData: OMatSortGroupedData[]): any[] {\n    const self = this;\n    return groupedData.reduce((obj: any, item: any) => {\n      const arr = item.values;\n      const sorted = arr.length <= 1 ? arr : arr.sort(self.sortFunction.bind(self));\n      obj.push(...sorted);\n      return obj;\n    }, []);\n  }\n\n  sortFunction(a: any, b: any): number {\n    let propertyA: number | string = '';\n    let propertyB: number | string = '';\n    [propertyA, propertyB] = [a[this.activeSortColumn], b[this.activeSortColumn]];\n    return Util.sortFunction(propertyA, propertyB, this.activeSortDirection);\n  }\n\n}\n","import { Directive, Injector, OnDestroy } from \"@angular/core\";\nimport { Subscription } from \"rxjs\";\nimport { AppearanceService } from \"../services/appearance.service\";\n\n@Directive({})\nexport class OSkeletonComponent implements OnDestroy {\n  isDarkMode: boolean;\n  subscription: Subscription;\n  appearanceService: AppearanceService;\n\n  constructor(protected injector: Injector) {\n    this.appearanceService = this.injector.get<AppearanceService>(AppearanceService);\n    this.isDarkMode = this.appearanceService.isDarkMode();\n    this.subscription = this.appearanceService.isDarkMode$.subscribe(x => this.isDarkMode = x);\n  }\n\n  ngOnDestroy(): void {\n    this.subscription?.unsubscribe();\n  }\n}","import { Component, ElementRef, ViewEncapsulation, Injector } from '@angular/core';\nimport { OSkeletonComponent } from '../../o-skeleton.component';\n\n@Component({\n  selector: 'o-grid-skeleton',\n  templateUrl: './o-grid-skeleton.component.html',\n  styleUrls: ['./o-grid-skeleton.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-grid-skeleton]': 'true'\n  }\n\n})\nexport class OGridSkeletonComponent extends OSkeletonComponent {\n\n  constructor(protected elRef: ElementRef, protected injector: Injector) {\n    super(injector);\n  }\n\n  get count() {\n    const parentElement = this.elRef.nativeElement.parentElement;\n    /** 60+10+10+10*3 */\n    return Array(Math.floor(parentElement.offsetHeight / 175));\n\n  }\n}\n","<div *ngFor=\"let item of count\" fxLayout=\"column\" fxLayoutGap=\"10px\" class=\"o-grid-skeleton-item\">\n  <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n    [theme]=\"{ height: '10px', width:'5%', 'border-radius':'none' }\" class=\"o-grid-skeleton-item-first-section\"></ngx-skeleton-loader>\n  <div fxLayout=\"row\" fxLayoutGap=\"10px\" class=\"o-grid-skeleton-item-second-section\">\n    <div fxFlex=\"20%\" *ngFor=\"let i of [1,2,3,4,5]\">\n      <ngx-skeleton-loader count=\"1\" [theme]=\"{ height: '60px', 'border-radius':'none' }\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\">\n      </ngx-skeleton-loader>\n      <ngx-skeleton-loader count=\"1\" [theme]=\"{ height: '10px', width:'100%', 'border-radius':'none' }\"\n        animation=\"{{isDarkMode?'progress-dark':'progress'}}\">\n      </ngx-skeleton-loader>\n      <ngx-skeleton-loader count=\"1\" [theme]=\"{ height: '10px', width:'70%', 'border-radius':'none' }\"\n        animation=\"{{isDarkMode?'progress-dark':'progress'}}\">\n      </ngx-skeleton-loader>\n    </div>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  forwardRef,\n  Inject,\n  Injector,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  QueryList,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation\n} from '@angular/core';\nimport { MediaChange, MediaObserver } from '@angular/flex-layout';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSelectChange } from '@angular/material/select';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { IGridItem } from '../../interfaces/o-grid-item.interface';\nimport { ComponentStateServiceProvider, O_COMPONENT_STATE_SERVICE, OntimizeServiceProvider } from '../../services/factories';\nimport { OGridComponentStateClass } from '../../services/state/o-grid-component-state.class';\nimport { OGridComponentStateService } from '../../services/state/o-grid-component-state.service';\nimport { OPermissions } from '../../types';\nimport { OGridPermissions } from '../../types/o-grid-permissions.type';\nimport { OQueryDataArgs } from '../../types/query-data-args.type';\nimport { SQLOrder } from '../../types/sql-order.type';\nimport { Codes } from '../../util/codes';\nimport { ServiceUtils } from '../../util/service.utils';\nimport { Util } from '../../util/util';\nimport { OFormComponent } from '../form/o-form.component';\nimport { AbstractOServiceComponent } from '../o-service-component.class';\nimport { OMatSort } from '../table/extensions/sort/o-mat-sort';\nimport { OGridItemComponent } from './grid-item/o-grid-item.component';\nimport { OGridItemDirective } from './grid-item/o-grid-item.directive';\n\nexport const DEFAULT_INPUTS_O_GRID = [\n  // cols: Amount of columns in the grid list. Default in extra small and small screen is 1, in medium screen is 2, in large screen is 3 and extra large screen is 4.\n  'cols',\n  // show-page-size:Whether to hide the page size selection UI from the user.\n  'showPageSize: show-page-size',\n  // show-sort:whether or not the sort select is shown in the toolbar\n  'showSort: orderable',\n  // sortable[string]: columns of the filter, separated by ';'. Default: no value.\n  'sortableColumns: sortable-columns',\n  // sortColumns[string]: columns of the sortingcolumns, separated by ';'. Default: no value.\n  'sortColumn: sort-column',\n  // quick-filter-columns [string]: columns of the filter, separated by ';'. Default: no value.\n  'quickFilterColumns: quick-filter-columns',\n  //  grid-item-height[string]: Set internal representation of row height from the user-provided value.. Default: 1:1.\n  'gridItemHeight: grid-item-height',\n  // refresh-button [no|yes]: show refresh button. Default: yes.\n  'refreshButton: refresh-button',\n  // gutterSize: Size of the grid list's gutter in pixels.\n  'gutterSize:gutter-size',\n  // fix-header [yes|no|true|false]: fixed footer when the content is greather than its own height. Default: no.\n  'fixedHeader:fixed-header',\n  // show-footer:Indicates whether or not to show the footer:Default:true\n  'showFooter:show-footer',\n  // insert-button-position [ top | bottom ]: position of the insert button. Default: 'bottom'\n  'insertButtonPosition:insert-button-position',\n  // insert-button-floatable [no|yes]: Indicates whether or not to position of the insert button is floating . Default: 'yes'\n  'insertButtonFloatable:insert-button-floatable',\n  // show-buttons-text [yes|no|true|false]: show text of buttons. Default: no.\n  'showButtonsText: show-buttons-text'\n];\n\n\nconst PAGE_SIZE_OPTIONS = [8, 16, 24, 32, 64];\n\n@Component({\n  selector: 'o-grid',\n  providers: [\n    OntimizeServiceProvider,\n    ComponentStateServiceProvider,\n    { provide: O_COMPONENT_STATE_SERVICE, useClass: OGridComponentStateService },\n  ],\n  inputs: DEFAULT_INPUTS_O_GRID,\n  templateUrl: './o-grid.component.html',\n  styleUrls: ['./o-grid.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-grid]': 'true',\n    '[class.o-grid-fixed]': 'fixedHeader'\n  }\n})\nexport class OGridComponent extends AbstractOServiceComponent<OGridComponentStateService> implements AfterViewInit, OnChanges, OnDestroy, OnInit {\n\n  /* Inputs */\n  protected _queryRows = 32;\n\n  @BooleanInputConverter()\n  public fixedHeader: boolean = false;\n\n  @BooleanInputConverter()\n  public showPageSize: boolean = false;\n\n  @BooleanInputConverter()\n  public showSort: boolean = false;\n\n  @BooleanInputConverter()\n  public showFooter: boolean = true;\n\n  public gridItemHeight = '1:1';\n\n  @BooleanInputConverter()\n  public refreshButton: boolean = true;\n\n  @BooleanInputConverter()\n  insertButton: boolean = false;\n\n  @BooleanInputConverter()\n  public insertButtonFloatable: boolean = true;\n\n  @BooleanInputConverter()\n  showButtonsText: boolean = false;\n\n  public insertButtonPosition: 'top' | 'bottom' = 'bottom';\n  paginationControls = false;\n  public gutterSize = '1px';\n  protected _quickFilterAppearance: MatFormFieldAppearance = 'outline';\n  get cols(): number {\n    return this._cols || this._colsDefault;\n  }\n  set cols(value: number) {\n    this._cols = value;\n  }\n\n  get sortableColumns(): SQLOrder[] {\n    return this._sortableColumns;\n  }\n  set sortableColumns(val) {\n    let parsed = [];\n    if (!Util.isArray(val)) {\n      parsed = ServiceUtils.parseSortColumns(String(val));\n    }\n    this._sortableColumns = parsed;\n  }\n\n  public quickFilterColumns: string;\n  /* End Inputs */\n\n  @ContentChildren(forwardRef(() => OGridItemComponent))\n  public inputGridItems: QueryList<OGridItemComponent>;\n  @ViewChildren(OGridItemDirective)\n  public gridItemDirectives: QueryList<OGridItemDirective>;\n  @ViewChild(MatPaginator)\n  public matpaginator: MatPaginator;\n\n  /* Parsed Inputs */\n  protected _sortableColumns: SQLOrder[] = [];\n  public sortColumnOrder: SQLOrder;\n  /* End parsed Inputs */\n\n  protected _cols;\n  protected _colsDefault = 1;\n  _pageSizeOptions = PAGE_SIZE_OPTIONS;\n  protected sortColumn: string;\n  public storePaginationState: boolean = false;\n\n  set gridItems(value: IGridItem[]) {\n    this._gridItems = value;\n  }\n\n  get gridItems(): IGridItem[] {\n    return this._gridItems;\n  }\n\n  protected _gridItems: IGridItem[] = [];\n\n  protected subscription: Subscription = new Subscription();\n  protected media: MediaObserver;\n\n  protected oMatSort: OMatSort;\n  protected permissions: OGridPermissions;\n  protected actionsPermissions: OPermissions[];\n\n\n  constructor(\n    injector: Injector,\n    elRef: ElementRef,\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent\n  ) {\n    super(injector, elRef, form);\n    this.media = this.injector.get(MediaObserver);\n    this.oMatSort = new OMatSort();\n  }\n\n  get state(): OGridComponentStateClass {\n    return this.componentStateService.state;\n  }\n\n  public ngOnInit(): void {\n    this.initialize();\n    this.permissions = this.permissionsService.getGridPermissions(this.oattr, this.actRoute);\n    this.actionsPermissions = this.getActionsPermissions(this.permissions);\n    this.setButtonPermissions(this.actionsPermissions);\n  }\n\n\n\n  public initialize(): void {\n    super.initialize();\n\n    if (!Util.isDefined(this.quickFilterColumns)) {\n      this.quickFilterColumns = this.columns;\n    }\n    this.quickFilterColArray = Util.parseArray(this.quickFilterColumns, true);\n\n    if (Util.isDefined(this.state.sortColumn)) {\n      this.sortColumn = this.state.sortColumn;\n    }\n    this.parseSortColumn();\n\n    const existingOption = this.pageSizeOptions.find(option => option === this.queryRows);\n    if (!Util.isDefined(existingOption)) {\n      this._pageSizeOptions.push(this.queryRows);\n      this._pageSizeOptions.sort((i: number, j: number) => i - j);\n    }\n    if (Util.isDefined(this.state.currentPage)) {\n      this.currentPage = this.state.currentPage;\n    }\n    if (Util.isDefined(this.state.queryRows)) {\n      this.queryRows = this.state.queryRows;\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    super.afterViewInit();\n    this.filterCaseSensitive = Util.isDefined(this.state.filterCaseSensitive) ?\n      this.state.filterCaseSensitive :\n      this.filterCaseSensitive;\n    this.setGridItemDirectivesData();\n    this.subscribeToMediaChanges();\n    this.registerQuickFilter(this.searchInputComponent);\n    if (this.queryOnInit) {\n      this.queryData();\n    }\n    this.manageCustomPermissions(this.actionsPermissions, '[o-grid-toolbar]');\n  }\n\n  public ngAfterContentInit(): void {\n    this.gridItems = this.inputGridItems.toArray();\n    this.subscription.add(this.inputGridItems.changes.subscribe(queryChanges => {\n      this.gridItems = queryChanges._results;\n    }));\n  }\n\n  public subscribeToMediaChanges(): void {\n    this.subscription.add(this.media.asObservable().subscribe((change: MediaChange[]) => {\n      if (change && change[0]) {\n        switch (change[0].mqAlias) {\n          case 'xs':\n          case 'sm':\n            this._colsDefault = 1;\n            break;\n          case 'md':\n            this._colsDefault = 2;\n            break;\n          case 'lg':\n          case 'xl':\n            this._colsDefault = 4;\n        }\n      }\n    }));\n  }\n\n  public reloadData(): void {\n    let queryArgs: OQueryDataArgs = {};\n    if (this.pageable) {\n      this.state.queryRecordOffset = 0;\n      queryArgs = {\n        offset: this.paginationControls ? (this.currentPage * this.queryRows) : 0,\n        length: Math.max(this.queryRows, this.dataResponseArray.length),\n        replace: true\n      };\n    }\n    this.queryData(void 0, queryArgs);\n  }\n\n  public reloadPaginatedDataFromStart(): void {\n    this.currentPage = 0;\n    this.dataResponseArray = [];\n    this.reloadData();\n  }\n\n  protected getSortedDataFromArray(dataArray: any[]): any[] {\n    if (Util.isDefined(this.sortColumnOrder)) {\n      return this.oMatSort.getSortedDataBySQLOrder(dataArray, [this.sortColumnOrder]);\n    }\n    return dataArray;\n  }\n\n  public registerGridItemDirective(item: OGridItemDirective): void {\n    if (item) {\n      if (this.detailMode === Codes.DETAIL_MODE_CLICK) {\n        item.onClick(gridItem => this.onItemDetailClick(gridItem));\n      }\n      if (Codes.isDoubleClickMode(this.detailMode)) {\n        item.onDoubleClick(gridItem => this.onItemDetailDblClick(gridItem));\n      }\n    }\n  }\n\n  public onItemDetailClick(item: OGridItemDirective): void {\n    this.handleItemClick(item);\n  }\n\n  public onItemDetailDblClick(item: OGridItemDirective): void {\n    this.handleItemDblClick(item);\n  }\n\n  public ngOnDestroy(): void {\n    this.destroy();\n  }\n\n  public destroy(): void {\n    super.destroy();\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n  }\n\n  public loadMore(): void {\n    this.currentPage += 1;\n    if (this.pageable) {\n      const queryArgs: OQueryDataArgs = {\n        offset: this.state.queryRecordOffset,\n        length: this.queryRows\n      };\n      this.dataService?.setPaginationContext({ pageNumber: this.dataService?.getPaginationContext().pageNumber + 1 });\n      this.queryData(void 0, queryArgs);\n    } else {\n      this.filterData(void 0, true);\n    }\n  }\n\n\n  public getQueryArguments(filter: object, ovrrArgs?: OQueryDataArgs): any[] {\n    const queryArguments = super.getQueryArguments(filter, ovrrArgs);\n    if (this.pageable && Util.isDefined(this.sortColumn)) {\n      queryArguments[6] = this.sortColumnOrder ? [this.sortColumnOrder] : this.sortColumnOrder;\n    }\n    return queryArguments;\n  }\n\n  public parseSortColumn(): void {\n    const parsed = (ServiceUtils.parseSortColumns(this.sortColumn) || [])[0];\n    const index = this.findSortableColumnIndex(parsed);\n    if (Util.isDefined(index) && index !== -1) {\n      this.sortColumnOrder = parsed;\n    }\n  }\n\n  get currentOrderColumn(): number {\n    return this.findSortableColumnIndex(this.sortColumnOrder);\n  }\n\n  set currentOrderColumn(val: number) {\n    this.sortColumnOrder = this.sortableColumns[val];\n  }\n\n  protected findSortableColumnIndex(sortableColumn: SQLOrder): number {\n    if (!Util.isDefined(sortableColumn)) {\n      return null;\n    }\n    return this.sortableColumns\n      .findIndex(item => item.columnName === sortableColumn.columnName\n        && item.ascendent === sortableColumn.ascendent);\n  }\n\n  public getDataToStore(): any {\n    return this.componentStateService.getDataToStore();\n  }\n\n  public getSortOptionText(col: SQLOrder): string {\n    let result;\n    let colTextKey = `GRID.SORT_BY_${col.columnName.toUpperCase()}_` + (col.ascendent ? 'ASC' : 'DESC');\n    result = this.translateService.get(colTextKey);\n    if (result !== colTextKey) {\n      return result;\n    }\n    colTextKey = 'GRID.SORT_BY_' + (col.ascendent ? 'ASC' : 'DESC');\n    result = this.translateService.get(colTextKey, [(this.translateService.get(col.columnName) || '')]);\n    return result;\n  }\n\n  public add(): void {\n    super.insertDetail();\n  }\n\n  protected parseResponseArray(data: any[], replace?: boolean) {\n    let result = data;\n    if (this.pageable && !replace) {\n      result = this.paginationControls ? data : (this.dataResponseArray || []).concat(data);\n    } else if (!this.pageable) {\n      result = data;\n    }\n    return result;\n  }\n\n  protected saveDataNavigationInLocalStorage(): void {\n    super.saveDataNavigationInLocalStorage();\n    this.storePaginationState = true;\n  }\n\n  protected setGridItemDirectivesData(): void {\n    this.gridItemDirectives.changes.subscribe(() => {\n      this.gridItemDirectives.toArray().forEach((element: OGridItemDirective, index) => {\n        element.setItemData(this.dataArray[index]);\n        element.setGridComponent(this);\n        this.registerGridItemDirective(element);\n      });\n    });\n  }\n\n  public pageSizeChanged() {\n    if (this.pageable) {\n      this.reloadData();\n    } else {\n      this.filterData();\n    }\n  }\n\n  public sortColumnChanged(event: MatSelectChange) {\n    this.currentOrderColumn = event.value;\n    if (this.pageable) {\n      this.reloadData();\n    } else {\n      this.filterData();\n    }\n  }\n  public registerQuickFilter(arg: any): void {\n    super.registerQuickFilter(arg);\n    if (Util.isDefined(this.quickFilterComponent) && Util.isDefined(this.state.quickFilterActiveColumns)) {\n      const parsedArr = Util.parseArray(this.state.quickFilterActiveColumns, true);\n      this.quickFilterComponent.setActiveColumns(parsedArr);\n    }\n  }\n\n  protected getPaginationDataFromArray(dataArray: any[]): any[] {\n    let result: any[];\n    if (this.paginationControls) {\n      result = dataArray.splice(this.currentPage * this.queryRows, this.queryRows);\n    } else {\n      result = dataArray.splice(0, this.queryRows * (this.currentPage + 1));\n    }\n    return result;\n  }\n}\n","<div [style.display]=\"isVisible()? '' : 'none'\" class=\"o-grid-container\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\">\n\n  <!--TOOLBAR-->\n  <o-data-toolbar *ngIf=\"hasControls()\" class=\"o-grid-toolbar\" [title]=\"title\" [show-title]=\"hasTitle()\">\n    <ng-container o-data-toolbar-projection-start>\n      <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n        <!-- button new-->\n        <button *ngIf=\"insertButton && !insertButtonFloatable\" type=\"button\" [disabled]=\"!enabledInsertButton\"\n          class=\"o-grid-add-button o-grid-button text\" mat-stroked-button aria-label=\"Insert\" (click)=\"add()\">\n          <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n          <span>{{ 'ADD' | oTranslate }}</span>\n        </button>\n\n        <!--button refresh-->\n        <button type=\"button\" mat-stroked-button aria-label=\"Refresh\" [disabled]=\"!enabledRefreshButton\" (click)=\"reloadData()\" *ngIf=\"refreshButton\"\n          class=\"o-grid-button text\">\n          <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n          <span>{{ 'REFRESH' | oTranslate }}</span>\n        </button>\n      </ng-container>\n\n      <ng-template #showButtonsWithoutText>\n        <!-- button new-->\n        <button *ngIf=\"insertButton && !insertButtonFloatable\" [disabled]=\"!enabledInsertButton\" type=\"button\"\n          class=\"o-grid-button o-grid-add-button no-text\" mat-icon-button aria-label=\"Insert\" (click)=\"add()\">\n          <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n        </button>\n\n        <!--button refresh-->\n        <button type=\"button\" mat-icon-button aria-label=\"Refresh\" [disabled]=\"!enabledRefreshButton\" (click)=\"reloadData()\" *ngIf=\"refreshButton\"\n          class=\"o-grid-button no-text\">\n          <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n        </button>\n      </ng-template>\n\n      <!--O-GRID-PAGINATOR-->\n      <div class=\"o-grid-paginator\" *ngIf=\"showPageSize\">\n        <div class=\"o-grid-page-size-label\">{{ 'GRID.ITEMS_PER_PAGE' | oTranslate }}:</div>\n        <mat-form-field class=\"o-grid-select-page\">\n          <mat-select placeholder=\"\" #pageSizeSelect [(value)]=\"queryRows\" (selectionChange)=\"pageSizeChanged()\">\n            <mat-option *ngFor=\"let page of pageSizeOptions\" [value]=\"page\">\n              {{ page }}\n            </mat-option>\n          </mat-select>\n        </mat-form-field>\n      </div>\n\n      <!--O-GRID-SORT-->\n      <div class=\"o-grid-sort\" *ngIf=\"showSort && sortableColumns.length > 0\">\n        <mat-form-field class=\"o-grid-select-sort\">\n          <mat-icon matPrefix>sort</mat-icon>\n          <mat-select #sortSelect [value]=\"currentOrderColumn\" (selectionChange)=\"sortColumnChanged($event)\"\n            placeholder=\" {{ 'GRID.SORT_BY' | oTranslate }}\">\n            <mat-option *ngFor=\"let column of sortableColumns; let i = index\" [value]=\"i\">\n              {{ getSortOptionText(column) }}\n            </mat-option>\n          </mat-select>\n        </mat-form-field>\n      </div>\n\n    </ng-container>\n    <ng-content select=\"[o-grid-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n    </ng-content>\n    <ng-content select=\"[o-grid-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n    </ng-content>\n    <ng-content select=\"[o-grid-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n    </ng-content>\n    <ng-container o-data-toolbar-projection-end>\n      <o-search-input *ngIf=\"quickFilter\" [columns]=\"quickFilterColumns\" [filter-case-sensitive]=\"filterCaseSensitive\"\n        [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\" [placeholder]=\"quickFilterPlaceholder\" [appearance]=\"quickFilterAppearance\"\n        float-label=\"never\"></o-search-input>\n    </ng-container>\n  </o-data-toolbar>\n\n  <ng-container *ngIf=\"(loading | async)===false\">\n    <!--no results-->\n    <div class=\"o-grid-no-results fill-remaining\" *ngIf=\"gridItems.length === 0\" fxLayoutAlign=\"center start\" layout-padding>\n      {{'GRID.EMPTY' | oTranslate}}\n      <ng-container *ngIf=\"quickFilter && searchInputComponent && searchInputComponent.getValue() && searchInputComponent.getValue().length > 0\">\n        {{ 'GRID.EMPTY_USING_FILTER' | oTranslate : { values: [ searchInputComponent.getValue()] } }}\n      </ng-container>\n    </div>\n\n\n    <!--MAT-GRID-LIST-->\n    <mat-grid-list [cols]=\"cols\" [gutterSize]=\"gutterSize\" [rowHeight]=\"gridItemHeight\" class=\"o-mat-grid-list fill-remaining\"\n      *ngIf=\"gridItems.length > 0\">\n      <mat-grid-tile o-grid-item *ngFor=\"let item of gridItems\" [colspan]=\"item.colspan\" [rowspan]=\"item.rowspan\">\n        <ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n      </mat-grid-tile>\n    </mat-grid-list>\n    <button type=\"button\" aria-label=\"Insert\" *ngIf=\"insertButton && insertButtonFloatable\" [disabled]=\"!enabledInsertButton\" mat-fab (click)=\"add()\"\n      class=\"o-grid-add-floatable-button\" [class.o-grid-add-bottom-floatable-button]=\"insertButtonPosition ==='bottom'\"\n      [class.o-grid-add-top-floatable-button]=\"insertButtonPosition ==='top'\">\n      <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n    </button>\n\n    <!-- GRID FOOTER -->\n    <div *ngIf=\"!paginationControls && showFooter && (loading | async)===false\" fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"o-grid-footer\">\n      <button type=\"button\" mat-button *ngIf=\"getDataArray().length < totalRecords && getDataArray().length>0\" (click)=\"loadMore()\"\n        class=\"mat-raised-button\">\n        {{ 'GRID.BUTTON_NEXT' | oTranslate }}\n      </button>\n      <span fxFlex></span>\n      <span class=\"o-grid-totals\">{{ 'GRID.TEXT_SHOWN_ITEMS' | oTranslate :{values: [getDataArray().length, totalRecords]}\n        }}</span>\n    </div>\n\n    <mat-paginator class=\"o-mat-paginator\" #paginator *ngIf=\"paginationControls && showFooter\" [length]=\"totalRecords\" [pageSize]=\"queryRows\"\n      [pageSizeOptions]=\"pageSizeOptions\" [pageIndex]=\"currentPage\" [showFirstLastButtons]=\"true\" (page)=\"onChangePage($event)\"></mat-paginator>\n  </ng-container>\n  <div *ngIf=\"loading | async\" fxLayout=\"row\" fxLayoutAlign=\"center end\" class=\"o-loading-blocker\">\n    <div fxLayoutAlign=\"center center\" [class.o-spinner-container-controls]=\"hasControls()\" class=\"o-spinner-container\">\n      <o-grid-skeleton></o-grid-skeleton>\n    </div>\n  </div>\n\n\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OSearchInputModule } from '../input/search-input/o-search-input.module';\nimport { ODataToolbarModule } from '../o-data-toolbar/o-data-toolbar.module';\nimport { OGridItemComponent } from './grid-item/o-grid-item.component';\nimport { OGridItemDirective } from './grid-item/o-grid-item.directive';\nimport { OGridComponent } from './o-grid.component';\nimport { OGridSkeletonComponent } from './skeketon/o-grid-skeleton.component';\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\n\n@NgModule({\n    declarations: [OGridComponent, OGridItemDirective, OGridItemComponent, OGridSkeletonComponent],\n    imports: [CommonModule, OSearchInputModule, OSharedModule, RouterModule, ODataToolbarModule, NgxSkeletonLoaderModule],\n    exports: [OGridComponent, OGridItemComponent, OGridItemDirective]\n})\nexport class OGridModule { }\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { Util } from '../../../util/util';\n\n@Component({\n  selector: 'o-fullscreen-dialog',\n  templateUrl: './fullscreen-dialog.component.html',\n  styleUrls: ['./fullscreen-dialog.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-fullscreen-dialog]': 'true'\n  }\n})\nexport class OFullScreenDialogComponent {\n\n  imageSrc: any;\n\n  constructor(\n    public dialogRef: MatDialogRef<OFullScreenDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) public data: any\n  ) {\n    if (Util.isDefined(data)) {\n      this.imageSrc = data;\n    }\n  }\n\n}\n","<mat-toolbar color=\"primary\" class=\"mat-elevation-z5\">\n  <span fxFlex></span>\n  <button type=\"button\" mat-icon-button mat-dialog-close>\n    <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n  </button>\n</mat-toolbar>\n<mat-dialog-content fxLayoutAlign=\"center center\" class=\"o-fullscreen-dialog-content\">\n  <img [src]=\"imageSrc\" alt=\"dialog image\" />\n</mat-dialog-content>\n","import { Component, ElementRef, forwardRef, HostBinding, Inject, Injector, OnDestroy, OnInit, Optional, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { BooleanInputConverter, NumberInputConverter } from '../../decorators/input-converter';\nimport { OSafePipe } from '../../pipes/o-safe.pipe';\nimport { FormValueOptions } from '../../types';\nimport { Util } from '../../util/util';\nimport { OFormValue } from '../form/o-form-value';\nimport { OFormComponent } from '../form/o-form.component';\nimport { OFormControl } from '../input/o-form-control.class';\nimport { OFormDataComponent } from '../o-form-data-component.class';\nimport { OFullScreenDialogComponent } from './fullscreen/fullscreen-dialog.component';\n\n\nexport const DEFAULT_INPUTS_O_IMAGE = [\n  'emptyimage: empty-image',\n  // not-found-image [string]: Default image for 404 error.\n  'notfoundimage: not-found-image',\n  // empty-icon [string]: material icon. Default: photo.\n  'emptyicon: empty-icon',\n  // show-controls [yes|no true|false]: Shows or hides selection controls. Default: true.\n  'showControls: show-controls',\n  // height [% | px]: Set the height of the image.\n  'height',\n  // auto-fit [yes|no true|false]: Adjusts the image to the content or not. Default: true.\n  'autoFit: auto-fit',\n  'fullScreenButton: full-screen-button',\n  // accept-file-type [string]: file types allowed on the file input, separated by ';'. Default: image/*.\n  // file_extension, image/*, media_type. See https://www.w3schools.com/tags/att_input_accept.asp\n  'acceptFileType: accept-file-type',\n  // max-file-size [number]: maximum file size allowed, in bytes. Default: no value.\n  'maxFileSize: max-file-size'\n];\n\n@Component({\n  selector: 'o-image',\n  templateUrl: './o-image.component.html',\n  styleUrls: ['./o-image.component.scss'],\n  inputs: DEFAULT_INPUTS_O_IMAGE,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-image]': 'true'\n  }\n})\nexport class OImageComponent extends OFormDataComponent implements OnInit, OnDestroy {\n\n  public acceptFileType: string = 'image/*';\n  @NumberInputConverter()\n  public maxFileSize: number;\n  public emptyimage: string;\n  public notfoundimage: string;\n  public emptyicon: string;\n  public height: string;\n  @BooleanInputConverter()\n  public autoFit: boolean = true;\n  public currentFileName: string = '';\n  @BooleanInputConverter()\n  protected showControls: boolean = true;\n  set fullScreenButton(val: boolean) {\n    val = Util.parseBoolean(String(val));\n    this._fullScreenButton = val;\n  }\n  get fullScreenButton(): boolean {\n    return this._fullScreenButton;\n  }\n  protected _fullScreenButton = false;\n\n  @ViewChild('input')\n  protected fileInput: ElementRef;\n  protected _useEmptyIcon: boolean = true;\n  protected _useEmptyImage: boolean = false;\n  protected oSafe: OSafePipe;\n  protected dialog: MatDialog;\n  public stateCtrl: UntypedFormControl;\n  public src = '';\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n    this.oSafe = new OSafePipe(injector);\n    this._defaultSQLTypeKey = 'BASE64';\n    this.dialog = this.injector.get(MatDialog);\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n\n    if (this.emptyimage && this.emptyimage.length > 0) {\n      this._useEmptyIcon = false;\n      this._useEmptyImage = true;\n    }\n\n    if (this.emptyicon === undefined && !this._useEmptyImage) {\n      this.emptyicon = 'photo';\n      this._useEmptyIcon = true;\n      this._useEmptyImage = false;\n    }\n  }\n\n  public ngOnDestroy(): void {\n    super.ngOnDestroy();\n  }\n\n  public ensureOFormValue(val: any): void {\n    if (val instanceof OFormValue) {\n      if (val.value && val.value.bytes) {\n        val = val.value.bytes;\n      } else {\n        val = val.value;\n      }\n    } else if (val) {\n      if (val.bytes) {\n        val = val.bytes;\n      } else if (Util.isBase64(val) && val.substring(0, 4) === 'data') {\n        // Removing \"data:image/*;base64,\"\n        val = val.substring(val.indexOf('base64') + 7);\n      }\n    } else {\n      val = undefined;\n    }\n    this.value = new OFormValue(val);\n\n    this.src = this.getSrcValue();\n  }\n\n  public isEmpty(): boolean {\n    return !this.getValue() || this.getValue().length === 0;\n  }\n\n  public createFormControl(cfg?: { value: any, disabled: boolean }, validators?: ValidatorFn[]): OFormControl {\n    this._fControl = super.createFormControl(cfg, validators);\n    this.stateCtrl = new UntypedFormControl(void 0, this.resolveValidators());\n    this._fControl.fControlChildren = [this.stateCtrl];\n    return this._fControl;\n  }\n\n  public fileChange(input): void {\n    if (input.files[0]) {\n      const reader = new FileReader();\n      reader.addEventListener('load', event => {\n        let result = event.target['result'];\n        if (result && typeof (result) === 'string' && Util.isBase64(result)) {\n          // Removing \"data:image/*;base64,\"\n          result = result.substring(result.indexOf('base64') + 7);\n        }\n        this.setValue(result);\n        if (this._fControl) {\n          this._fControl.markAsTouched();\n        }\n        event.stopPropagation();\n      }, false);\n      if (input.files[0]) {\n        reader.readAsDataURL(input.files[0]);\n      }\n\n      this.currentFileName = input.files[0].name;\n      this.stateCtrl.setValue(this.currentFileName);\n    }\n  }\n\n  public notFoundImageUrl(event): any {\n    event.target.src = Util.isDefined(this.notfoundimage) ? this.notfoundimage : '';\n  }\n\n  private getSrcValue(): any {\n\n    if (this.value && this.value.value) {\n      if (this.value.value instanceof Object && this.value.value.bytes) {\n        let src: string = '';\n        if (this.value.value.bytes.substring(0, 4) === 'data') {\n          src = 'data:image/*;base64,' + this.value.value.bytes.substring(this.value.value.bytes.indexOf('base64') + 7);\n        } else {\n          src = 'data:image/*;base64,' + this.value.value.bytes;\n        }\n        return this.oSafe.transform(src, 'url');\n      } else if (typeof this.value.value === 'string' && Util.isBase64(this.value.value)) {\n        let src: string = '';\n        if (this.value.value.substring(0, 4) === 'data') {\n          src = 'data:image/*;base64,' + this.value.value.substring(this.value.value.indexOf('base64') + 7);\n        } else {\n          src = 'data:image/*;base64,' + this.value.value;\n        }\n        return this.oSafe.transform(src, 'url');\n      }\n      if (this.value.value) {\n        return this.value.value;\n      } else {\n        return this.emptyimage;\n      }\n    } else if (this.emptyimage) {\n      return this.emptyimage;\n    }\n  }\n\n  public onClickBlocker(evt: Event): void {\n    evt.stopPropagation();\n  }\n\n  public onClickClearValue(e: Event): void {\n    if (!this.isReadOnly && this.enabled) {\n      super.onClickClearValue(e);\n      this.fileInput.nativeElement.value = '';\n      this.stateCtrl.reset();\n      this.currentFileName = '';\n    }\n    if (this._fControl) {\n      this._fControl.markAsTouched();\n    }\n  }\n\n  public hasControls(): boolean {\n    return this.showControls;\n  }\n\n  public useEmptyIcon(): boolean {\n    return this._useEmptyIcon && this.isEmpty();\n  }\n\n  public useEmptyImage(): boolean {\n    return this._useEmptyImage && this.isEmpty();\n  }\n\n  public getFormGroup(): UntypedFormGroup {\n    let formGroup: UntypedFormGroup = super.getFormGroup();\n    if (!formGroup) {\n      formGroup = new UntypedFormGroup({});\n      formGroup.addControl(this.getAttribute(), this.getControl());\n    }\n    return formGroup;\n  }\n\n  @HostBinding('style.height')\n  get hostHeight(): string {\n    return this.height;\n  }\n\n  public openFullScreen(e?: Event): void {\n    this.dialog.open(OFullScreenDialogComponent, {\n      width: '90%',\n      height: '90%',\n      role: 'dialog',\n      disableClose: false,\n      panelClass: 'o-image-fullscreen-dialog-cdk-overlay',\n      data: this.getSrcValue()\n    });\n  }\n\n  public openFileSelector(e?: Event): void {\n    if (Util.isDefined(this.fileInput)) {\n      this.fileInput.nativeElement.click();\n    }\n  }\n\n  public internalFormControl(): string {\n    return this.getAttribute() + '_value';\n  }\n\n  public resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    if (Util.isDefined(this.maxFileSize)) {\n      validators.push(this.maxFileSizeValidator.bind(this));\n    }\n    return validators;\n  }\n\n  public setValue(val: any, options: FormValueOptions = {}, setDirty: boolean = false): void {\n    super.setValue(val, options, setDirty);\n    if (!Util.isDefined(this.getValue()) || !this.currentFileName) {\n      this.stateCtrl.reset();\n    }\n  }\n\n  protected maxFileSizeValidator(control: UntypedFormControl): ValidationErrors {\n    if (control.value && control.value.length > 0 && Util.isDefined(this.maxFileSize)) {\n      if (!Util.isDefined(this.fileInput.nativeElement.files)) {\n        return {};\n      }\n      if (this.fileInput.nativeElement.files && !Array.from<File>(this.fileInput.nativeElement.files).every(file => file.size < this.maxFileSize)) {\n        return {\n          fileSize: {\n            maxFileSize: this.maxFileSize\n          }\n        };\n      }\n    }\n    return {};\n  }\n\n  /* This method be triggered when a image is dropped on our host DOM element .*/\n  onFileDropped(pFileList: File[]) {\n    const files = Object.keys(pFileList).map(key => pFileList[key]);\n    const fileList = this.createFileListItems(files);\n\n\n    const valid = this.acceptFileType.replace(/\\s/g, '').split(',').filter(accept => new RegExp(accept.replace(/\\*/g, '.\\*').replace(/\\,/g, '|')).test(fileList[0].type)).length > 0\n\n    if (valid) {\n      this.fileInput.nativeElement.files = fileList;\n      this.fileChange(this.fileInput.nativeElement);\n    }\n  }\n\n  createFileListItems(files) {\n    const b = new ClipboardEvent(\"\").clipboardData || new DataTransfer()\n    for (let i = 0, len = files.length; i < len; i++) b.items.add(files[i])\n    return b.files\n  }\n\n  getFileName(): string {\n    return this.currentFileName;\n  }\n\n  getImageFile(): File {\n    if (this.fileInput && this.fileInput.nativeElement.files.length > 0) {\n      return this.fileInput.nativeElement.files[0];\n    } else {\n      return void (0);\n    }\n  }\n\n  hasErrorInDragAndDrop() {\n    return this.getFormControl() && this.getFormControl().touched && this.getFormControl().invalid && !this.hasControls() && this.enabled && !this.isReadOnly;\n\n  }\n\n}\n","<div fxLayout=\"column\" [formGroup]=\"getFormGroup()\" [class.o-image-auto-fit]=\"autoFit\" class=\"o-image-content\" fxFill>\n\n  <input #input type=\"file\" [disabled]=\"!enabled\" [accept]=\"acceptFileType ? acceptFileType.replace(';',',') : 'image/*'\" readonly\n    (change)=\"fileChange(input)\" class=\"o-image-form-field-hidden\" />\n\n  <mat-form-field *ngIf=\"hasControls()\" class=\"o-image-form-field\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n    [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\"\n    [subscriptSizing]=\"subscriptSizing\">\n    <input type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" readonly\n      (click)=\"input.click()\" (change)=\"onChangeEvent($event)\" class=\"o-image-form-field-input\">\n    <input matInput readonly (click)=\"input.click()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" [formControl]=\"stateCtrl\" />\n\n    <button type=\"button\" *ngIf=\"fullScreenButton\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"openFullScreen($event)\">\n      <mat-icon svgIcon=\"ontimize:fullscreen\"></mat-icon>\n    </button>\n    <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"input.click()\">\n      <mat-icon svgIcon=\"ontimize:folder_open\"></mat-icon>\n    </button>\n    <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\n    <ng-container *ngTemplateOutlet=\"errorsTemplate\"></ng-container>\n  </mat-form-field>\n\n  <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"o-image-display-container\"\n    [ngClass]=\"{'o-image-drag-and-drop': isEmpty() , 'o-image-drag-and-drop-required': hasErrorInDragAndDrop() }\" fxLayoutGap=\"15px\" oFileDragAndDrop\n    (onFileDropped)=\"onFileDropped($event)\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n    [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" [matTooltipDisabled]=\"hasControls()\">\n\n    <button mat-icon-button *ngIf=\"!isEmpty() && !hasControls() && enabled && !isReadOnly\" (click)=\"onClickClearValue($event)\"\n      class=\"o-image-button-remove\">\n      <mat-icon>close</mat-icon>\n    </button>\n\n    <img *ngIf=\"!(isEmpty())\" [src]=\"src\" alt=\"\" (click)=\"openFileSelector()\" (error)=\"notFoundImageUrl($event)\"\n      [ngClass]=\"{'o-image-cursor': !isReadOnly}\" />\n\n    <mat-icon class=\"empty-icon\" [class.mat-disabled]=\"!enabled\" aria-label=\"empty image\" *ngIf=\"useEmptyIcon()\">\n      {{ emptyicon }}\n    </mat-icon>\n\n    <img [src]=\"src\" alt=\"empty image\" *ngIf=\"useEmptyImage()\" />\n\n    <span class=\"mat-subtitle-2\" *ngIf=\"isEmpty()\">{{ 'OIMAGE.TEXT.DROP&DRAG' | oTranslate }}</span>\n\n    <button mat-button color=\"primary\" (click)=\"openFileSelector()\" *ngIf=\"!hasControls() && isEmpty()\">\n      {{ 'OIMAGE.BUTTON.BROWSEFILE' | oTranslate }}\n    </button>\n\n    <ng-container *ngIf=\"!hasControls() && enabled && !isReadOnly\">\n      <ng-container *ngTemplateOutlet=\"errorsTemplate\"> </ng-container>\n    </ng-container>\n  </div>\n  <div *ngIf=\"isReadOnly\" fxFill class=\"read-only-blocker\" (click)=\"onClickBlocker($event)\"></div>\n</div>\n\n<ng-template #errorsTemplate>\n  <mat-error *oMatError=\"hasError('required')\">\n    {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n  </mat-error>\n  <mat-error *oMatError=\"hasError('fileSize')\">\n    {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n  </mat-error>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OFullScreenDialogComponent } from './fullscreen/fullscreen-dialog.component';\nimport { OImageComponent } from './o-image.component';\n\n@NgModule({\n    declarations: [OImageComponent, OFullScreenDialogComponent],\n    imports: [CommonModule, OSharedModule],\n    exports: [OImageComponent, OFullScreenDialogComponent]\n})\nexport class OImageModule { }\n","import { Directive, ElementRef, forwardRef, Inject, Injector, Optional } from '@angular/core';\n\nimport { Util } from '../../util/util';\nimport { OFormValue } from '../form/o-form-value';\nimport { OFormComponent } from '../form/o-form.component';\nimport { OFormDataComponent } from '../o-form-data-component.class';\n\n\nexport const DEFAULT_INPUTS_O_BOOLEAN_FORM_DATA = [\n  // true-value: true value. Default: true.\n  'trueValue: true-value',\n  // false-value: false value. Default: false.\n  'falseValue: false-value',\n  // boolean-type [number|boolean|string]: cellData value type. Default: boolean\n  'booleanType: boolean-type'\n];\n\n@Directive({\n   inputs: DEFAULT_INPUTS_O_BOOLEAN_FORM_DATA\n})\nexport class OBooleanFormDataComponent extends OFormDataComponent {\n\n  public trueValue: any = true;\n  public falseValue: any = false;\n  public booleanType: 'number' | 'boolean' | 'string' = 'boolean';\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n    this._defaultSQLTypeKey = 'BOOLEAN';\n    this.defaultValue = false;\n  }\n\n  initialize() {\n    //First, the sqlType must be initialized  before calling super.initialize because it overwritte the value\n    if (!Util.isDefined(this.sqlType)) {\n      switch (this.booleanType) {\n        case 'number':\n          this.sqlType = 'INTEGER';\n          break;\n        case 'string':\n          this.sqlType = 'VARCHAR';\n          break;\n        case 'boolean':\n        default:\n          this.sqlType = 'BOOLEAN';\n      }\n    }\n    this.defaultValue = this.falseValue;\n    super.initialize();\n  }\n\n  ensureOFormValue(data: any) {\n    this.parseInputs();\n    if (data instanceof OFormValue) {\n      if (!Util.isDefined(data.value)) {\n        data.value = false;\n      }\n      this.value = new OFormValue(this.parseValueByType(data.value) === this.trueValue);\n    } else if (typeof data === 'boolean') {\n      this.value = new OFormValue(data);\n    } else {\n      this.value = new OFormValue(this.parseValueByType(data) === this.trueValue);\n    }\n  }\n\n  parseValueByType(value: any) {\n    let result: any;\n    switch (this.booleanType) {\n      case 'string':\n        result = value + '';\n        break;\n      case 'number':\n        result = parseInt(value, 10);\n        break;\n      default:\n        result = value;\n        break;\n    }\n    return result;\n  }\n\n  protected parseStringInputs() {\n    if ((this.trueValue || '').length === 0) {\n      this.trueValue = undefined;\n    }\n    if ((this.falseValue || '').length === 0) {\n      this.falseValue = undefined;\n    }\n  }\n\n  protected parseNumberInputs() {\n    this.trueValue = parseInt(this.trueValue, 10);\n    if (isNaN(this.trueValue)) {\n      this.trueValue = 1;\n    }\n    this.falseValue = parseInt(this.falseValue, 10);\n    if (isNaN(this.falseValue)) {\n      this.falseValue = 0;\n    }\n  }\n\n  protected parseInputs() {\n    switch (this.booleanType) {\n      case 'string':\n        this.parseStringInputs();\n        break;\n      case 'number':\n        this.parseNumberInputs();\n        break;\n      default:\n        this.trueValue = true;\n        this.falseValue = false;\n        break;\n    }\n  }\n\n  onClickBlocker(evt: Event) {\n    evt.stopPropagation();\n  }\n}\n","import { Component, ElementRef, forwardRef, Inject, Injector, Optional, ViewEncapsulation } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OBooleanFormDataComponent } from '../o-boolean-form-data-component.class';\nimport { OFormControl } from '../o-form-control.class';\n\nexport const DEFAULT_INPUTS_O_CHECKBOX = [\n  // color: Theme color palette for the component.\n  'color',\n  // label-position: Whether the label should appear after or before the slide-toggle. Defaults to 'after'\n  'labelPosition: label-position'\n];\n\n\n@Component({\n  selector: 'o-checkbox',\n  inputs: DEFAULT_INPUTS_O_CHECKBOX,\n  templateUrl: './o-checkbox.component.html',\n  styleUrls: ['./o-checkbox.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-checkbox]': 'true'\n  }\n})\nexport class OCheckboxComponent extends OBooleanFormDataComponent {\n\n  public color: ThemePalette;\n  public labelPosition: 'before' | 'after' = 'after';\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n  }\n\n  initialize() {\n    super.initialize();\n\n    // Override FormControl getValue in order to return the appropriate value instead of the checkbox internal boolean value\n    const checkboxCtx = this;\n    (this.getFormControl() as OFormControl).getValue = function () {\n      return this.value ? checkboxCtx.trueValue : checkboxCtx.falseValue;\n    };\n  }\n\n}\n","<div [class.custom-width]=\"hasCustomWidth\" [formGroup]=\"getFormGroup()\" class=\"relative\" [matTooltip]=\"tooltip\"\n  [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\"\n  [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\n  <mat-checkbox [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" (change)=\"onChangeEvent($event)\"\n    [labelPosition]=\"labelPosition\" [color]=\"color\">\n    {{ olabel | oTranslate }}\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n      {{ oError.text | oTranslate }}\n    </mat-error>\n  </mat-checkbox>\n  <div *ngIf=\"isReadOnly\" (click)=\"onClickBlocker($event)\" class=\"read-only-blocker\" fxFill></div>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OCheckboxComponent } from './o-checkbox.component';\n\n@NgModule({\n  declarations: [OCheckboxComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OCheckboxComponent]\n})\nexport class OCheckboxModule { }\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatOption } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\n@Component({\n  selector: 'o-combo-search',\n  templateUrl: './o-combo-search.component.html',\n  styleUrls: ['./o-combo-search.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => OComboSearchComponent),\n      multi: true\n    }\n  ],\n  host: {\n    '[class.o-combo-search]': 'true'\n  }\n})\nexport class OComboSearchComponent implements OnInit, OnDestroy {\n\n  public placeholder: string = 'SEARCH';\n\n  /** Reference to the MatSelect options */\n  public _options: QueryList<MatOption>;\n\n  /** Current search value */\n  get value(): string {\n    return this._value;\n  }\n  protected _value: string;\n\n  /** Previously selected values when using <mat-select [multiple]=\"true\"> */\n  protected previousSelectedValues: any[];\n\n  /** Reference to the search input field */\n  @ViewChild('searchSelectInput', { read: ElementRef })\n  protected searchSelectInput: ElementRef;\n\n  /** Event that emits when the current value changes */\n  protected change = new EventEmitter<string>();\n\n  /** Subject that emits when the component has been destroyed. */\n  protected _onDestroy = new Subject<void>();\n\n  constructor(\n    @Inject(MatSelect) public matSelect: MatSelect,\n    private changeDetectorRef: ChangeDetectorRef\n  ) { }\n\n  public ngOnInit(): void {\n    // when the select dropdown panel is opened or closed, focus the search field when opening and clear it when closing\n    this.matSelect.openedChange\n      .pipe(takeUntil(this._onDestroy))\n      .subscribe(opened => opened ? this.focus() : this.reset());\n\n    // set the first item active after the options changed\n    this.matSelect.openedChange\n      .pipe(take(1))\n      .pipe(takeUntil(this._onDestroy))\n      .subscribe(() => {\n        if (this.matSelect.multiple) {\n          this.previousSelectedValues = this.matSelect.value;\n        }\n        this._options = this.matSelect.options;\n        this._options.changes\n          .pipe(takeUntil(this._onDestroy))\n          .subscribe(() => {\n            const keyManager = this.matSelect._keyManager;\n            if (keyManager && this.matSelect.panelOpen) {\n              // avoid \"expression has been changed\" error\n              setTimeout(() => keyManager.setFirstItemActive(), 0);\n            }\n          });\n      });\n\n    // detect changes when the input changes\n    this.change\n      .pipe(takeUntil(this._onDestroy))\n      .subscribe(() => this.changeDetectorRef.detectChanges());\n\n    this.initMultipleHandling();\n  }\n\n  public ngOnDestroy(): void {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  public onChange: Function = (_: any) => {\n    // do nothing\n  }\n\n  public onTouched: Function = (_: any) => {\n    // do nothing\n  }\n\n  /**\n   * Handles the key down event with MatSelect.\n   * Allows e.g. selecting with enter key, navigation with arrow keys, etc.\n   * @param event\n   */\n  public handleKeydown(event: KeyboardEvent): void {\n    if (event.keyCode === 32) {\n      // do not propagate spaces to MatSelect, as this would select the currently active option\n      event.stopPropagation();\n    }\n  }\n\n  public onInputChange(value: any): void {\n    const valueChanged = value !== this._value;\n    if (valueChanged) {\n      this._value = value;\n      this.onChange(value);\n      this.change.emit(value);\n    }\n  }\n\n  public onBlur(value: string): void {\n    this.writeValue(value);\n    this.onTouched();\n  }\n\n  public writeValue(value: string): void {\n    const valueChanged = value !== this._value;\n    if (valueChanged) {\n      this._value = value;\n      this.change.emit(value);\n    }\n  }\n\n  public registerOnChange(fn: Function): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: Function): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Focuses the search input field\n   */\n  public focus(): void {\n    if (!this.searchSelectInput) {\n      return;\n    }\n    // save and restore scrollTop of panel, since it will be reset by focus()\n    // note: this is hacky\n    const panel = this.matSelect.panel.nativeElement;\n    const scrollTop = panel.scrollTop;\n\n    // focus\n    this.searchSelectInput.nativeElement.focus();\n\n    panel.scrollTop = scrollTop;\n  }\n\n  /**\n   * Resets the current search value\n   * @param focus whether to focus after resetting\n   */\n  public reset(focus?: boolean): void {\n    if (!this.searchSelectInput) {\n      return;\n    }\n    this.searchSelectInput.nativeElement.value = '';\n    this.onInputChange('');\n    if (focus) {\n      this.focus();\n    }\n  }\n\n  /**\n   * Initializes handling <mat-select [multiple]=\"true\">\n   * Note: to improve this code, mat-select should be extended to allow disabling resetting the selection while filtering.\n   */\n  protected initMultipleHandling(): void {\n    // if <mat-select [multiple]=\"true\">\n    // store previously selected values and restore them when they are deselected\n    // because the option is not available while we are currently filtering\n    this.matSelect.valueChange\n      .pipe(takeUntil(this._onDestroy))\n      .subscribe(values => {\n        if (this.matSelect.multiple) {\n          let restoreSelectedValues = false;\n          if (this._value && this._value.length\n            && this.previousSelectedValues && Array.isArray(this.previousSelectedValues)) {\n            if (!values || !Array.isArray(values)) {\n              values = [];\n            }\n            const optionValues = this.matSelect.options.map(option => option.value);\n            this.previousSelectedValues.forEach(previousValue => {\n              if (values.indexOf(previousValue) === -1 && optionValues.indexOf(previousValue) === -1) {\n                // if a value that was selected before is deselected and not found in the options, it was deselected\n                // due to the filtering, so we restore it.\n                values.push(previousValue);\n                restoreSelectedValues = true;\n              }\n            });\n          }\n\n          if (restoreSelectedValues) {\n            this.matSelect._onChange(values);\n          }\n\n          this.previousSelectedValues = values;\n        }\n      });\n  }\n\n  public resetSelectedValues() {\n    this.previousSelectedValues = [];\n  }\n\n}\n","<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","import { AfterViewInit, Component, ElementRef, forwardRef, Inject, Injector, OnDestroy, OnInit, Optional, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { OntimizeServiceProvider } from '../../../services/factories';\nimport { FormValueOptions } from '../../../types/form-value-options.type';\nimport { Codes } from '../../../util/codes';\nimport { Util } from '../../../util/util';\nimport { OFormValue } from '../../form/o-form-value';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OValueChangeEvent } from '../../o-value-change-event.class';\nimport { OFormServiceComponent } from '../o-form-service-component.class';\nimport { OComboCustomRenderer } from './combo-renderer/o-combo-renderer.class';\nimport { OComboSearchComponent } from './combo-search/o-combo-search.component';\n\n\nexport const DEFAULT_INPUTS_O_COMBO = [\n  'multiple',\n  'nullSelection: null-selection',\n  'multipleTriggerLabel: multiple-trigger-label',\n  'searchable',\n  // text to none selection in a combo\n  'nullSelectionLabel: null-selection-label'\n];\n\n@Component({\n  selector: 'o-combo',\n  providers: [\n    OntimizeServiceProvider,\n    { provide: OFormServiceComponent, useExisting: forwardRef(() => OComboComponent) }\n  ],\n  inputs: DEFAULT_INPUTS_O_COMBO,\n  templateUrl: './o-combo.component.html',\n  styleUrls: ['./o-combo.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-combo]': 'true'\n  }\n})\nexport class OComboComponent extends OFormServiceComponent implements OnInit, AfterViewInit, OnDestroy {\n\n  public value: OFormValue;\n  public searchControl: UntypedFormControl = new UntypedFormControl();\n  public renderer: OComboCustomRenderer;\n\n  /* Inputs */\n  @BooleanInputConverter()\n  public multiple: boolean;\n  @BooleanInputConverter()\n  public multipleTriggerLabel: boolean = false;\n  @BooleanInputConverter()\n  public searchable: boolean = false;\n  @BooleanInputConverter()\n  protected nullSelection: boolean = true;\n  public nullSelectionLabel: string;\n  /* End inputs*/\n\n  @ViewChild('inputModel')\n  protected inputModel: ElementRef;\n\n  @ViewChild('selectModel')\n  protected selectModel: MatSelect;\n\n  @ViewChild('comboSearch', { static: false })\n  protected comboSearch: OComboSearchComponent;\n\n  protected _filteredDataArray: any[] = [];\n\n  set filteredDataArray(data: any) {\n    if (Util.isArray(data)) {\n      this._filteredDataArray = data;\n    } else if (Util.isObject(data) && Object.keys(data).length > 0) {\n      this._filteredDataArray = [data];\n    } else {\n      console.warn('Component has received not supported service data. Supported data are Array or not empty Object');\n      this._filteredDataArray = [];\n    }\n  }\n\n  get filteredDataArray(): any {\n    return this._filteredDataArray;\n  }\n\n  protected subscription: Subscription = new Subscription();\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n    this.defaultValue = '';\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n    this.subscription.add(this.searchControl.valueChanges.subscribe(() => this.searchFilter()));\n  }\n\n  public ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    if (this.queryOnInit) {\n      this.queryData();\n    } else if (this.queryOnBind) {\n      // TODO do it better. When changing tabs it is necessary to invoke new query\n      this.syncDataIndex();\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n    this.destroy();\n  }\n\n  public initialize(): void {\n    super.initialize();\n    if (this.multiple) {\n      this.nullSelection = false;\n      this.defaultValue = [];\n    }\n  }\n\n  public ensureOFormValue(value: any): void {\n    if (value instanceof OFormValue) {\n      this.value = new OFormValue(value.value);\n    } else if (Util.isDefined(value) && !(value instanceof OFormValue)) {\n      this.value = new OFormValue(value);\n    } else if (!Util.isDefined(value) && this.nullSelection) {\n      this.value = new OFormValue(undefined);\n    } else {\n      this.value = new OFormValue(this.defaultValue);\n    }\n    // This call make the component querying its data multiple times\n    // this.syncDataIndex();\n  }\n\n  public setDataArray(data: any): void {\n    super.setDataArray(data);\n    this.filteredDataArray = data;\n  }\n\n  public getDataArray(): any[] {\n    return this.dataArray;\n  }\n\n  public getFilteredDataArray(): any[] {\n    return this._filteredDataArray;\n  }\n\n  public hasNullSelection(): boolean {\n    return this.nullSelection;\n  }\n\n  public syncDataIndex(queryIfNotFound: boolean = true): void {\n    super.syncDataIndex(queryIfNotFound);\n    if (this._currentIndex !== undefined && this.nullSelection) {\n      // first position is for null selection that it is not included into dataArray\n      this._currentIndex += 1;\n    }\n  }\n\n  public getValue(): any {\n    if (this.value instanceof OFormValue) {\n      if (this.value.value !== undefined) {\n        return this.value.value;\n      } else if (this.value.value === undefined) {\n        return this.getEmptyValue();\n      }\n    }\n    return '';\n  }\n\n  public getEmptyValue(): any {\n    if (this.multiple) {\n      return [];\n    } else {\n      if (this.nullSelection) {\n        return undefined;\n      } else {\n        return '';\n      }\n    }\n  }\n\n  public isEmpty(): boolean {\n    if (!(this.value instanceof OFormValue)) {\n      return true;\n    }\n    return this.value.value === undefined || (this.multiple && this.value.value.length === 0);\n  }\n\n  public clearValue(options?: FormValueOptions, setDirty: boolean = false): void {\n    if (this.multiple) {\n      this.setValue(this.defaultValue, options, setDirty);\n      this.value.value = [];\n      if (Util.isDefined(this.comboSearch)) {\n        this.comboSearch.resetSelectedValues();\n      }\n    } else {\n      super.clearValue(options, setDirty);\n    }\n  }\n\n  get showClearButton(): boolean {\n    return this.clearButton && !this.isReadOnly && this.enabled && !this.isEmpty();\n  }\n\n  public getMultiple(): boolean {\n    return this.multiple;\n  }\n\n  public onSelectionChange(event: MatSelectChange): void {\n    if (!this.selectModel.panelOpen) {\n      return;\n    }\n    const newValue = event.value;\n    this.setValue(newValue, {\n      changeType: OValueChangeEvent.USER_CHANGE,\n      emitEvent: false,\n      emitModelToViewChange: false\n    });\n  }\n\n  public getValueColumn(item: any): any {\n    if (item && item.hasOwnProperty(this.valueColumn)) {\n      let option = item[this.valueColumn];\n      if (option === 'undefined') {\n        option = null;\n      }\n      return option;\n    }\n    return '';\n  }\n\n  public isSelected(item: any, rowIndex: number): boolean {\n    let selected = false;\n    if (item && item.hasOwnProperty(this.valueColumn) && this.value) {\n      const val = item[this.valueColumn];\n      if (val === this.value.value) {\n        selected = true;\n        this._currentIndex = rowIndex;\n      }\n    }\n    return selected;\n  }\n\n  public setValue(val: any, options?: FormValueOptions, setDirty: boolean = false): void {\n    if (!this.dataArray) {\n      return;\n    }\n    const isDefinedVal = Util.isDefined(val);\n    if (this.multiple && !isDefinedVal) {\n      return;\n    }\n\n    if (!isDefinedVal && !this.nullSelection) {\n      console.warn('`o-combo` with attr ' + this.oattr + ' cannot be set. `null-selection` attribute is false.');\n      return;\n    }\n\n    super.setValue(val, options);\n  }\n\n  public getSelectedItems(): any[] {\n    return this.getValue();\n  }\n\n  public setSelectedItems(values: any[]): void {\n    this.setValue(values);\n  }\n\n  public getFirstSelectedValue(): void {\n    return this.selectModel.selected[0].viewValue;\n  }\n\n  protected setIsReadOnly(value: boolean): void {\n    super.setIsReadOnly(value);\n    const readOnly = Util.isDefined(this.readOnly) ? this.readOnly : value;\n    if (this.enabled) {\n      if (this._fControl && readOnly) {\n        this._fControl.disable({ emitEvent: false });\n      } else if (this._fControl) {\n        this._fControl.enable({ emitEvent: false });\n      }\n    }\n  }\n  protected parseByValueColumnType(val: any): any {\n    if (!Util.isDefined(this.multiple)) {\n      return val;\n    }\n    const valueArr: any[] = this.multiple ? val : [val];\n    if (this.valueColumnType === Codes.TYPE_INT) {\n      valueArr.forEach((item, index) => {\n        const parsed = parseInt(item, 10);\n        if (!isNaN(parsed)) {\n          valueArr[index] = parsed;\n        }\n      });\n    }\n    return this.multiple ? valueArr : valueArr[0];\n  }\n\n  protected searchFilter(): void {\n    if (this.dataArray || this.dataArray.length) {\n\n      // get the search keyword\n      let search = this.searchControl.value;\n      if (!search) {\n        this.filteredDataArray = this.dataArray.slice();\n        return;\n      } else {\n        search = search.toLowerCase();\n      }\n\n      // filter\n      if (this.renderer) {\n        this.filteredDataArray = this.dataArray.filter(item => this.renderer.getComboData(item).toLowerCase().indexOf(search) > -1);\n      } else {\n        this.filteredDataArray = this.dataArray.filter(item => this.getOptionDescriptionValue(item).toLowerCase().indexOf(search) > -1);\n      }\n    }\n  }\n\n  public registerRenderer(renderer: any) {\n    this.renderer = renderer;\n    this.renderer.initialize();\n  }\n\n}\n","<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n  [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" [oContextMenu]=\"oContextMenu\">\n\n  <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [class.read-only]=\"isReadOnly\" [class.custom-width]=\"hasCustomWidth\"\n    [hideRequiredMarker]=\"hideRequiredMarker\" fxFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <mat-select [value]=\"getValue()\" #selectModel [id]=\"getAttribute()\" fxFill [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n      [multiple]=\"getMultiple()\" [required]=\"isRequired\" [panelClass]=\"{ 'o-combo-panel': true, 'o-combo-panel-search': searchable }\"\n      (selectionChange)=\"onSelectionChange($event)\" (closed)=\"innerOnBlur($event)\">\n      <o-combo-search #comboSearch *ngIf=\"searchable\" [formControl]=\"searchControl\"></o-combo-search>\n\n      <mat-select-trigger *ngIf=\"multiple && multipleTriggerLabel\">\n        {{ selectModel.selected[0] ? getFirstSelectedValue(): '' }}\n        <span *ngIf=\"!isEmpty()\">\n          {{ 'INPUT.COMBO.MESSAGE_TRIGGER' | oTranslate: { values: [getFormControl().value.length -1] } }}\n        </span>\n      </mat-select-trigger>\n\n      <mat-select-trigger *ngIf=\"!multiple && !multipleTriggerLabel\">\n        <ng-container *ngFor=\"let item of filteredDataArray\">\n          <ng-container *ngIf=\"renderer && item[valueColumn] == getValue()\">\n            <ng-template *ngTemplateOutlet=\"renderer?.templateref; context:{ value: item }\">\n            </ng-template>\n          </ng-container>\n          <ng-container *ngIf=\"!renderer && item[valueColumn] == getValue()\">\n            {{ getOptionDescriptionValue(item) }}\n          </ng-container>\n        </ng-container>\n      </mat-select-trigger>\n\n      <div class=\"o-combo-options-container\">\n        <mat-option *ngIf=\"hasNullSelection()\" [value]=\"null\">{{translate ?\n          (nullSelectionLabel|oTranslate): nullSelectionLabel}}\n        </mat-option>\n        <mat-option *ngFor=\"let item of filteredDataArray\" [value]=\"getValueColumn(item)\">\n          <ng-container *ngIf=\"renderer\">\n            <ng-template *ngTemplateOutlet=\"renderer?.templateref; context:{ value: item }\">\n            </ng-template>\n          </ng-container>\n          <ng-container *ngIf=\"!renderer\">\n            {{ getOptionDescriptionValue(item) }}\n          </ng-container>\n        </mat-option>\n      </div>\n    </mat-select>\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\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n      {{ oError.text | oTranslate }}\n    </mat-error>\n  </mat-form-field>\n\n  <o-context-menu *ngIf=\"!this.isReadOnly && this.enabled\">\n    <o-context-menu-item attr=\"refresh\" label=\"FORM_SERVICE_COMPONENT.REFRESH\" svg-icon=\"ontimize:autorenew\" (execute)=\"refresh()\">\n    </o-context-menu-item>\n  </o-context-menu>\n</div>\n","import { Injector, OnInit, PipeTransform, TemplateRef, Directive } from '@angular/core';\n\nimport { Util } from '../../../../util/util';\nimport { OComboComponent } from '../o-combo.component';\n\nexport const DEFAULT_INPUTS_O_COMBO_RENDERER = [];\n@Directive()\nexport class OComboCustomRenderer implements OnInit {\n\n  public templateref: TemplateRef<any>;\n  public comboComponent: OComboComponent;\n\n  protected pipeArguments: any;\n  protected componentPipe: PipeTransform;\n\n  constructor(protected injector: Injector) {\n    this.comboComponent = this.injector.get(OComboComponent);\n  }\n\n  public ngOnInit() {\n    this.initialize();\n  }\n\n  public initialize(): void {\n  }\n\n  public ngAfterContentInit(): void {\n    this.registerRenderer();\n  }\n\n  public registerRenderer(): void {\n    this.comboComponent.registerRenderer(this);\n  }\n\n  /**\n   * Returns the displayed combo data\n   * @param value Internal combo data\n  */\n\n  public getComboData(record: any): string {\n    let descTxt = '';\n    if (!Util.isDefined(record)) {\n      return descTxt;\n    }\n    this.comboComponent.descriptionColArray.forEach((col, index) => {\n      if (Util.isDefined(record[col])) {\n        let value = record[col];\n        if (this.componentPipe && this.pipeArguments != null) {\n          value = this.componentPipe.transform(value, this.pipeArguments);\n        }\n        if (Util.isDefined(value)) {\n          descTxt += value;\n\n          if (index < this.comboComponent.descriptionColArray.length - 1) {\n            descTxt += this.comboComponent.separator;\n          }\n        }\n      }\n    });\n    return descTxt;\n  }\n}","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { OTranslateService } from '../../../../../services/translate/o-translate.service';\nimport { Util } from '../../../../../util/util';\nimport { OComboCustomRenderer } from '../o-combo-renderer.class';\n\nexport const DEFAULT_INPUTS_O_COMBO_RENDERER_BOOLEAN = [\n  // true-value [string]: true value. Default: no value.\n  'trueValue: true-value',\n  // false-value [string]: false value. Default: no value.\n  'falseValue: false-value',\n  // false-value [number|string]: combo value type. Default: string\n  'booleanType: boolean-type',\n\n  'renderTrueValue: render-true-value',\n  'renderFalseValue: render-false-value',\n  // [string|number]\n  'renderType: render-type'\n];\n\n@Component({\n  selector: 'o-combo-renderer-boolean',\n  templateUrl: './o-combo-renderer-boolean.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_COMBO_RENDERER_BOOLEAN\n})\nexport class OComboRendererBooleanComponent extends OComboCustomRenderer implements OnInit {\n\n  trueValue: any;\n  falseValue: any;\n  protected _renderTrueValue: any;\n  protected _renderFalseValue: any;\n\n  protected _renderType: string = 'string';\n  protected _booleanType: string = 'boolean';\n  protected translateService: OTranslateService;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true })\n  templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.translateService = this.injector.get(OTranslateService);\n  }\n\n  initialize() {\n    super.initialize();\n    this.parseInputs();\n  }\n\n  protected parseInputs() {\n    switch (this.booleanType) {\n      case 'string':\n        this.parseStringInputs();\n        break;\n      case 'number':\n        this.parseNumberInputs();\n        break;\n      default:\n        this.trueValue = true;\n        this.falseValue = false;\n        break;\n    }\n  }\n\n  protected parseStringInputs() {\n    if ((this.trueValue || '').length === 0) {\n      this.trueValue = undefined;\n    }\n    if ((this.falseValue || '').length === 0) {\n      this.falseValue = undefined;\n    }\n  }\n\n  protected parseNumberInputs() {\n    this.trueValue = parseInt(this.trueValue, 10);\n    if (isNaN(this.trueValue)) {\n      this.trueValue = 1;\n    }\n    this.falseValue = parseInt(this.falseValue, 10);\n    if (isNaN(this.falseValue)) {\n      this.falseValue = 0;\n    }\n  }\n\n  hasComboTrueValue(record: any): boolean {\n    let result: boolean;\n    if (Util.isDefined(record) && Util.isDefined(record[this.comboComponent.valueColumn])) {\n      const value = record[this.comboComponent.valueColumn];\n      result = (value === this.trueValue);\n      if (this.booleanType === 'string' && !Util.isDefined(this.trueValue)) {\n        result = Util.parseBoolean(value, false);\n      }\n    }\n    return result;\n  }\n\n  get booleanType(): string {\n    return this._booleanType;\n  }\n\n  set booleanType(arg: string) {\n    arg = (arg || '').toLowerCase();\n    if (['number', 'boolean', 'string'].indexOf(arg) === -1) {\n      arg = 'boolean';\n    }\n    this._booleanType = arg;\n  }\n\n  get renderType(): string {\n    return this._renderType;\n  }\n\n  set renderType(arg: string) {\n    arg = (arg || '').toLowerCase();\n    if (['string', 'number'].indexOf(arg) === -1) {\n      arg = 'string';\n    }\n    this._renderType = arg;\n  }\n\n  get renderTrueValue(): string {\n    return this._renderTrueValue || this.trueValue;\n  }\n\n  set renderTrueValue(arg: string) {\n    this._renderTrueValue = arg;\n  }\n\n  get renderFalseValue(): string {\n    return this._renderFalseValue || this.falseValue;\n  }\n\n  set renderFalseValue(arg: string) {\n    this._renderFalseValue = arg;\n  }\n}\n","<ng-template #templateref let-value=\"value\">\n  <ng-container *ngIf=\"hasComboTrueValue(value);else falseValue\">\n    <ng-container [ngSwitch]=\"renderType\">\n      <ng-container *ngSwitchCase=\"'number'\">{{ renderTrueValue }}</ng-container>\n      <span *ngSwitchDefault>{{ renderTrueValue | oTranslate }}</span>\n    </ng-container>\n  </ng-container>\n  <ng-template #falseValue>\n    <ng-container [ngSwitch]=\"renderType\">\n      <ng-container *ngSwitchCase=\"'number'\">{{ renderFalseValue }}</ng-container>\n      <ng-container *ngSwitchDefault>{{ renderFalseValue | oTranslate}}</ng-container>\n    </ng-container>\n  </ng-template>\n</ng-template>","import { AfterContentInit, ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { IIntegerPipeArgument, OIntegerPipe } from '../../../../../pipes/o-integer.pipe';\nimport { OComboCustomRenderer } from '../o-combo-renderer.class';\n\nexport const DEFAULT_INPUTS_O_COMBO_RENDERER_INTEGER = [\n  // grouping [no|yes]: grouping thousands. Default: yes.\n  'grouping',\n  // thousand-separator [string]: thousands separator when grouping. Default: comma (,).\n  'thousandSeparator: thousand-separator'\n];\n\n@Component({\n  selector: 'o-combo-renderer-integer',\n  templateUrl: './o-combo-renderer-integer.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_COMBO_RENDERER_INTEGER\n})\nexport class OComboRendererIntegerComponent extends OComboCustomRenderer implements AfterContentInit, OnInit {\n\n  @BooleanInputConverter()\n  protected grouping: boolean = true;\n  protected thousandSeparator: string = ',';\n  protected componentPipe: OIntegerPipe;\n  protected pipeArguments: IIntegerPipeArgument;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OIntegerPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.pipeArguments = {\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator\n    };\n  }\n\n}\n","<ng-template #templateref let-value=\"value\">\n  {{getComboData(value)}}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { NumberInputConverter } from '../../../../../decorators/input-converter';\nimport { IRealPipeArgument, ORealPipe } from '../../../../../pipes/o-real.pipe';\nimport { NumberService } from '../../../../../services/number.service';\nimport { OComboRendererIntegerComponent } from '../integer/o-combo-renderer-integer.component';\n\nexport const DEFAULT_INPUTS_O_COMBO_RENDERER_REAL = [\n  // decimal-separator [string]: decimal separator. Default: dot (.).\n  'decimalSeparator: decimal-separator',\n  'minDecimalDigits: min-decimal-digits',\n  'maxDecimalDigits: max-decimal-digits'\n];\n\n@Component({\n  selector: 'o-combo-renderer-real',\n  templateUrl: './o-combo-renderer-real.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_COMBO_RENDERER_REAL\n})\nexport class OComboRendererRealComponent extends OComboRendererIntegerComponent implements OnInit {\n\n  @NumberInputConverter()\n  minDecimalDigits: number = 2;\n  @NumberInputConverter()\n  maxDecimalDigits: number = 2;\n\n  protected decimalSeparator: string = '.';\n  protected numberService: NumberService;\n\n  protected componentPipe: ORealPipe;\n  protected pipeArguments: IRealPipeArgument;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.numberService = this.injector.get(NumberService);\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new ORealPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.pipeArguments = {\n      minDecimalDigits: this.minDecimalDigits,\n      maxDecimalDigits: this.maxDecimalDigits,\n      decimalSeparator: this.decimalSeparator,\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator\n    };\n  }\n\n}\n","<ng-template #templateref let-value=\"value\">\n  {{ getComboData(value)}}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { NumberInputConverter } from '../../../../../decorators/input-converter';\nimport { ICurrencyPipeArgument, OCurrencyPipe } from '../../../../../pipes/o-currency.pipe';\nimport { CurrencyService } from '../../../../../services/currency.service';\nimport { OComboRendererRealComponent } from '../real/o-combo-renderer-real.component';\n\nexport const DEFAULT_INPUTS_O_COMBO_RENDERER_CURRENCY = [\n\n  // currency-symbol [string]: currency symbol. Default: dollar ($).\n  'currencySymbol: currency-symbol',\n\n  // currency-symbol-position [left|right]: position of the currency symbol. Default: left.\n  'currencySymbolPosition: currency-symbol-position'\n];\n\n@Component({\n  selector: 'o-combo-renderer-currency',\n  templateUrl: './o-combo-renderer-currency.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_COMBO_RENDERER_CURRENCY\n})\nexport class OComboRendererCurrencyComponent extends OComboRendererRealComponent implements OnInit {\n\n  @NumberInputConverter()\n  minDecimalDigits: number = 2;\n  @NumberInputConverter()\n  maxDecimalDigits: number = 2;\n\n  protected currencySymbol: string;\n  protected currencySymbolPosition: string;\n  protected decimalSeparator: string = '.';\n\n  protected grouping: boolean = true;\n  protected thousandSeparator: string = ',';\n\n  protected currencyService: CurrencyService;\n\n  protected componentPipe: OCurrencyPipe;\n  protected pipeArguments: ICurrencyPipeArgument;\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.currencyService = this.injector.get(CurrencyService);\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OCurrencyPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    if (typeof this.currencySymbol === 'undefined') {\n      this.currencySymbol = this.currencyService.symbol;\n    }\n    if (typeof this.currencySymbolPosition === 'undefined') {\n      this.currencySymbolPosition = this.currencyService.symbolPosition;\n    }\n\n    this.pipeArguments = {\n      currencySimbol: this.currencySymbol,\n      currencySymbolPosition: this.currencySymbolPosition,\n      minDecimalDigits: this.minDecimalDigits,\n      maxDecimalDigits: this.maxDecimalDigits,\n      decimalSeparator: this.decimalSeparator,\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator\n    };\n\n  }\n\n}\n","<ng-template #templateref let-value=\"value\">\n  {{getComboData(value)}}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { IMomentPipeArgument, OMomentPipe } from '../../../../../pipes/o-moment.pipe';\nimport { OComboCustomRenderer } from '../o-combo-renderer.class';\n\nexport const DEFAULT_INPUTS_O_COMBO_RENDERER_DATE = [\n  // format [string]: date format. See MomentJS (http://momentjs.com/).\n  'format'\n];\n\n@Component({\n  selector: 'o-combo-renderer-date',\n  templateUrl: './o-combo-renderer-date.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_COMBO_RENDERER_DATE\n})\nexport class OComboRendererDateComponent extends OComboCustomRenderer implements OnInit {\n\n  protected componentPipe: OMomentPipe;\n  protected pipeArguments: IMomentPipeArgument;\n\n  protected format: string;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OMomentPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    // Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n    this.pipeArguments = {\n      format: this.format\n    };\n  }\n}\n","<ng-template #templateref let-value=\"value\">\n  {{getComboData(value)}}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\n\nimport { IIconPipeArgument, OIconPipe } from '../../../../../pipes/o-icon.pipe';\nimport { IconService } from '../../../../../services/icon.service';\nimport { Util } from '../../../../../util/util';\nimport { OComboCustomRenderer } from '../o-combo-renderer.class';\n\nexport const DEFAULT_INPUTS_O_COMBO_RENDERER_ICON = [\n  // icon-position [left|right]: position of the icon/image symbol. Default: left.\n  'iconPosition: icon-position',\n  // icon-column [string]: Column key to icon name. Default: icon\n  'iconColumn: icon-column'\n];\n\n@Component({\n  selector: 'o-combo-renderer-icon',\n  templateUrl: './o-combo-renderer-icon.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_COMBO_RENDERER_ICON\n})\n\nexport class OComboRendererIconComponent extends OComboCustomRenderer implements OnInit {\n\n  protected iconService: IconService;\n  protected iconColumn: string;\n  protected iconPosition: string;\n\n  protected componentPipe: OIconPipe;\n  protected pipeArguments: IIconPipeArgument;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.iconService = this.injector.get(IconService);\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OIconPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n\n    this.pipeArguments = {\n      iconPosition: this.iconPosition,\n      icon: undefined\n    };\n  }\n\n  public getComboData(record: any): string {\n    if (!Util.isDefined(record)) {\n      return '';\n    }\n    const descriptionColsValue = this.comboComponent.getOptionDescriptionValue(record);\n    return `${descriptionColsValue} ${record[this.iconColumn]}`;\n  }\n\n  public getSafeHtmlComboData(record: any): SafeHtml {\n    if (!Util.isDefined(record)) {\n      return '';\n    }\n    if (Util.isDefined(record[this.iconColumn])) {\n      this.pipeArguments.icon = record[this.iconColumn];\n    }\n    const descriptionColsValue = this.comboComponent.getOptionDescriptionValue(record);\n    return this.componentPipe.transform(descriptionColsValue, this.pipeArguments);\n  }\n}\n","<ng-template #templateref let-value=\"value\">\n  <div [innerHTML]=\"getSafeHtmlComboData(value)\"></div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { IPercentPipeArgument, OPercentageValueBaseType, OPercentPipe } from '../../../../../pipes/o-percentage.pipe';\nimport { NumberService } from '../../../../../services/number.service';\nimport { OComboRendererRealComponent } from '../real/o-combo-renderer-real.component';\n\nexport const DEFAULT_INPUTS_O_COMBO_RENDERER_PERCENTAGE = [\n  'valueBase: value-base'\n];\n\n@Component({\n  selector: 'o-combo-renderer-percentage',\n  templateUrl: './o-combo-renderer-percentage.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_COMBO_RENDERER_PERCENTAGE\n})\nexport class OComboRendererPercentageComponent extends OComboRendererRealComponent implements OnInit {\n\n  decimalSeparator: string = '.';\n  minDecimalDigits = 0;\n  maxDecimalDigits = 0;\n  valueBase: OPercentageValueBaseType = 1;\n\n  protected numberService: NumberService;\n\n  protected componentPipe: OPercentPipe;\n  protected pipeArguments: IPercentPipeArgument;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.numberService = this.injector.get(NumberService);\n\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OPercentPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.pipeArguments = {\n      minDecimalDigits: this.minDecimalDigits,\n      maxDecimalDigits: this.maxDecimalDigits,\n      decimalSeparator: this.decimalSeparator,\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator,\n      valueBase: this.valueBase\n    };\n  }\n\n}\n","<ng-template #templateref let-value=\"value\">\n  {{getComboData(value)}}\n</ng-template>\n","import {\n  OComboRendererBooleanComponent\n} from './boolean/o-combo-renderer-boolean.component';\nimport {\n  OComboRendererCurrencyComponent\n} from './currency/o-combo-renderer-currency.component';\nimport { OComboRendererDateComponent } from './date/o-combo-renderer-date.component';\nimport { OComboRendererIconComponent } from './icon/o-combo-renderer-icon.component';\nimport { OComboRendererIntegerComponent } from './integer/o-combo-renderer-integer.component';\nimport {\n  OComboRendererPercentageComponent\n} from './percentage/o-combo-renderer-percentage.component';\nimport { OComboRendererRealComponent } from './real/o-combo-renderer-real.component';\n\nexport const O_COMBO_RENDERERS = [\n  OComboRendererBooleanComponent,\n  OComboRendererIntegerComponent,\n  OComboRendererRealComponent,\n  OComboRendererCurrencyComponent,\n  OComboRendererDateComponent,\n  OComboRendererPercentageComponent,\n  OComboRendererIconComponent\n];\n\nexport const renderersMapping = {\n  integer: OComboRendererIntegerComponent,\n  real: OComboRendererRealComponent,\n  currency: OComboRendererCurrencyComponent,\n  boolean: OComboRendererBooleanComponent,\n  date: OComboRendererDateComponent,\n  percentage: OComboRendererPercentageComponent,\n  icon: OComboRendererIconComponent\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OContextMenuModule } from '../../contextmenu/o-context-menu.module';\nimport { O_COMBO_RENDERERS } from './combo-renderer/combo-renderer';\nimport { OComboSearchComponent } from './combo-search/o-combo-search.component';\nimport { OComboComponent } from './o-combo.component';\n\n@NgModule({\n    declarations: [\n        OComboComponent,\n        OComboSearchComponent,\n        ...O_COMBO_RENDERERS\n    ],\n    imports: [CommonModule, OSharedModule, OContextMenuModule],\n    exports: [\n        OComboComponent,\n        OComboSearchComponent,\n        ...O_COMBO_RENDERERS\n    ]\n})\nexport class OComboModule { }\n","import {\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  forwardRef,\n  Inject,\n  Injector,\n  OnDestroy,\n  OnInit,\n  Optional,\n  QueryList,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { NumberConverter } from '../../../decorators/input-converter';\nimport { OMatPrefix } from '../../../directives/o-mat-prefix.directive';\nimport { OMatSuffix } from '../../../directives/o-mat-suffix.directive';\nimport { Util } from '../../../util/util';\nimport { OFormValue } from '../../form';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OFormDataComponent } from '../../o-form-data-component.class';\n\nexport const DEFAULT_INPUTS_O_TEXT_INPUT = [\n  'minLength: min-length',\n  'maxLength: max-length',\n  //uppercase | lowercase | default\n  'stringCase: string-case',\n  'regulatePattern: regulate-pattern'\n];\n\n\n@Component({\n  selector: 'o-text-input',\n  templateUrl: './o-text-input.component.html',\n  styleUrls: ['./o-text-input.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TEXT_INPUT,\n  encapsulation: ViewEncapsulation.None\n})\n\nexport class OTextInputComponent extends OFormDataComponent implements OnInit, OnDestroy, AfterViewInit {\n\n  @ContentChildren(OMatPrefix) _prefixChildren: QueryList<OMatPrefix>;\n  @ContentChildren(OMatSuffix) _suffixChildren: QueryList<OMatSuffix>;\n\n\n  public stringCase: string;\n  protected _minLength: number;\n  protected _maxLength: number;\n  protected upperSubscription: Subscription;\n  public regulatePattern: string;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n  }\n\n  ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n  }\n\n  onFormControlChange(value: any) {\n    /*\n    It is overridden to manage data entry with string-case\n    1. The value is transformed if necessary\n    2. This transformed value is set to the control so that the change is seen in the view\n    3. The onFormControlChange event is emitted with the transformed value\n    */\n    value = this.transformStringCase(value);\n    this._fControl.setValue(value, { emitEvent: false });\n    super.onFormControlChange(value);\n  }\n\n  protected transformStringCase(value) {\n    const stringCaseVariant = this.stringCase || this.oInputsOptions?.stringCase;\n\n    if (Util.isDefined(value) && Util.isDefined(stringCaseVariant) && stringCaseVariant !== 'default') {\n      if (value instanceof OFormValue && typeof value.value === 'string') {\n        value.value = stringCaseVariant === 'lowercase' ? value.value.toLowerCase() : value.value.toUpperCase();\n      } else if (typeof value === 'string') {\n        value = stringCaseVariant === 'lowercase' ? value.toLowerCase() : value.toUpperCase();;\n      }\n    }\n    return value;\n  }\n\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n\n    if (this.minLength >= 0) {\n      validators.push(Validators.minLength(this.minLength));\n    }\n    if (this.maxLength >= 0) {\n      validators.push(Validators.maxLength(this.maxLength));\n    }\n\n    return validators;\n  }\n\n  set minLength(val: number) {\n    const old = this._minLength;\n    this._minLength = NumberConverter(val);\n    if (val !== old) {\n      this.updateValidators();\n    }\n  }\n\n  get minLength(): number {\n    return this._minLength;\n  }\n\n  set maxLength(val: number) {\n    const old = this._maxLength;\n    this._maxLength = NumberConverter(val);\n    if (val !== old) {\n      this.updateValidators();\n    }\n  }\n\n  get maxLength(): number {\n    return this._maxLength;\n  }\n\n  public ngOnDestroy(): void {\n    if (this.upperSubscription) {\n      this.upperSubscription.unsubscribe();\n    }\n  }\n\n\n}\n","<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n  [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n  <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n    [class.icon-field]=\"showClearButton\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n    <span matPrefix *ngIf=\"_prefixChildren.length>0\">\n      <ng-content select=\"[oMatPrefix]\"></ng-content>\n    </span>\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n\n    <input matInput *ngIf=\"!regulatePattern\" type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n      (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" (change)=\"onChangeEvent($event)\" [required]=\"isRequired\"\n      [maxlength]=\"maxLength\" [minlength]=\"minLength\" />\n    <input matInput *ngIf=\"regulatePattern\" type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n      (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" (change)=\"onChangeEvent($event)\" [required]=\"isRequired\"\n      [maxlength]=\"maxLength\" [minlength]=\"minLength\" oInputRegulate [oInputRegulatePattern]=\"regulatePattern\" />\n\n    <button type=\"button\" *ngIf=\"showClearButton\" matIconSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('minlength')\">\n      {{ 'FORM_VALIDATION.MIN_LENGTH' | oTranslate }}: {{ getErrorValue('minlength', 'requiredLength') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('maxlength')\">\n      {{ 'FORM_VALIDATION.MAX_LENGTH' | oTranslate }}: {{ getErrorValue('maxlength', 'requiredLength') }}\n    </mat-error>\n    <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n      {{ oError.text | oTranslate }}\n    </mat-error>\n    <span matSuffix *ngIf=\"_suffixChildren.length>0\">\n      <ng-content select=\"[oMatSuffix]\"></ng-content>\n    </span>\n  </mat-form-field>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OTextInputComponent } from './o-text-input.component';\n\n@NgModule({\n  declarations: [OTextInputComponent],\n  imports: [OSharedModule, CommonModule],\n  exports: [OTextInputComponent]\n})\nexport class OTextInputModule {\n}\n","import { AfterViewInit, Component, ElementRef, forwardRef, Inject, Injector, OnInit, Optional, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { BooleanInputConverter, NumberInputConverter } from '../../../decorators/input-converter';\nimport { IIntegerPipeArgument, OIntegerPipe } from '../../../pipes/o-integer.pipe';\nimport { FormValueOptions } from '../../../types/form-value-options.type';\nimport { Util } from '../../../util/util';\nimport { OFormValue } from '../../form/o-form-value';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OFormDataComponent } from '../../o-form-data-component.class';\n\nconst INPUT_TYPE_TEXT = 'text'\nconst INPUT_TYPE_NUMBER = 'number'\ntype HTMLInputType = 'text' | 'number'\n\nexport const DEFAULT_INPUTS_O_INTEGER_INPUT = [\n  'min',\n  'max',\n  'step',\n  'grouping',\n  'thousandSeparator : thousand-separator',\n  'olocale : locale'\n];\n\n\n@Component({\n  selector: 'o-integer-input',\n  templateUrl: './o-integer-input.component.html',\n  styleUrls: ['./o-integer-input.component.scss'],\n  inputs: DEFAULT_INPUTS_O_INTEGER_INPUT,\n  encapsulation: ViewEncapsulation.None\n})\nexport class OIntegerInputComponent extends OFormDataComponent implements AfterViewInit, OnInit {\n\n  inputType: HTMLInputType = INPUT_TYPE_NUMBER;\n\n  @NumberInputConverter()\n  min: number;\n  @NumberInputConverter()\n  max: number;\n  @NumberInputConverter()\n  step: number = 1;\n\n  @BooleanInputConverter()\n  protected grouping: boolean = false;\n  protected thousandSeparator: string;\n  protected olocale: string;\n\n  protected componentPipe: OIntegerPipe;\n  protected pipeArguments: IIntegerPipeArgument;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n    this._defaultSQLTypeKey = 'INTEGER';\n    this.inputType = INPUT_TYPE_TEXT;\n    this.setComponentPipe();\n  }\n\n  initialize(): void {\n    super.initialize();\n    this.initializeStep();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OIntegerPipe(this.injector);\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.pipeArguments = {\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator,\n      locale: this.olocale\n    };\n\n    if (this.step === undefined) {\n      this.step = 1;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n  }\n\n  setData(value: any) {\n    super.setData(value);\n    setTimeout(() => {\n      this.setPipeValue();\n    }, 0);\n  }\n\n  setValue(val: any, options?: FormValueOptions) {\n    super.setValue(val, options);\n    this.setPipeValue();\n  }\n\n  innerOnFocus(event: FocusEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n    if (this.isReadOnly) {\n      return;\n    }\n    super.innerOnFocus(event);\n    this.setNumberDOMValue(this.getValue());\n    if (this.selectAllOnClick) {\n      this.selectValue();\n    }\n  }\n\n  innerOnBlur(event?: any) {\n    if (event) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n    if (this.isReadOnly) {\n      return;\n    }\n    this.setPipeValue();\n    const formControl: UntypedFormControl = this.getControl();\n    if (formControl) {\n      formControl.updateValueAndValidity({ emitEvent: false });\n    }\n    super.innerOnBlur(event);\n  }\n\n  setPipeValue() {\n    if (typeof this.pipeArguments !== 'undefined' && !this.isEmpty()) {\n      const parsedValue = this.componentPipe.transform(this.getValue(), this.pipeArguments);\n      this.setTextDOMValue(parsedValue);\n    }\n  }\n\n  isEmpty(): boolean {\n    if (this.value instanceof OFormValue) {\n      if (this.value.value !== undefined) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  getInputEl() {\n    let inputElement;\n    if (this.elRef.nativeElement.tagName === 'INPUT') {\n      inputElement = this.elRef.nativeElement;\n    } else {\n      inputElement = this.elRef.nativeElement.getElementsByTagName('INPUT')[0];\n    }\n    return inputElement;\n  }\n\n  setNumberDOMValue(val: any) {\n    this.setInputTypeAndValue(INPUT_TYPE_NUMBER, val)\n  }\n\n  setTextDOMValue(val: any) {\n    this.setInputTypeAndValue(INPUT_TYPE_TEXT, val)\n  }\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    if (Util.isDefined(this.min)) {\n      validators.push(Validators.min(this.min));\n    }\n    if (Util.isDefined(this.max)) {\n      validators.push(Validators.max(this.max));\n    }\n    return validators;\n  }\n\n  protected initializeStep(): void {\n    if (this.step <= 0) {\n      this.step = 1;\n      console.warn('`step` attribute must be greater than zero');\n    }\n  }\n\n  protected setInputTypeAndValue(inputType: HTMLInputType, value: any): void {\n    const inputElement = this.getInputEl();\n    if (Util.isDefined(inputElement)) {\n      inputElement.type = inputType;\n      inputElement.value = (value !== undefined) ? value : '';\n    }\n  }\n}\n","<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n  [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n  <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n    [class.icon-field]=\"showClearButton\" fxFlexFill [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)\" (change)=\"onChangeEvent($event)\" [readonly]=\"isReadOnly\" [min]=\"min\" [max]=\"max\"\n      [step]=\"step\" [required]=\"isRequired\">\n    <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\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', 'min') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('max')\">\n      {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'max') }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OTextInputModule } from '../text-input/o-text-input.module';\nimport { OIntegerInputComponent } from './o-integer-input.component';\n\n@NgModule({\n  declarations: [OIntegerInputComponent],\n  imports: [CommonModule, OSharedModule, OTextInputModule],\n  exports: [OIntegerInputComponent]\n})\nexport class OIntegerInputModule { }\n","import { Component, ElementRef, forwardRef, Inject, Injector, OnInit, Optional, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { BooleanInputConverter, NumberInputConverter } from '../../../decorators/input-converter';\nimport { IRealPipeArgument, ORealPipe } from '../../../pipes/o-real.pipe';\nimport { NumberService } from '../../../services/number.service';\nimport { Util } from '../../../util/util';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OIntegerInputComponent } from '../integer-input/o-integer-input.component';\nimport { OFormControl } from '../o-form-control.class';\n\nexport const DEFAULT_INPUTS_O_REAL_INPUT = [\n  'minDecimalDigits: min-decimal-digits',\n  'maxDecimalDigits: max-decimal-digits',\n  'decimalSeparator : decimal-separator',\n  'strict'\n];\n\n\n@Component({\n  selector: 'o-real-input',\n  templateUrl: './o-real-input.component.html',\n  inputs: DEFAULT_INPUTS_O_REAL_INPUT,\n  encapsulation: ViewEncapsulation.None\n})\nexport class ORealInputComponent extends OIntegerInputComponent implements OnInit {\n\n  @NumberInputConverter()\n  minDecimalDigits: number = 2;\n\n  @NumberInputConverter()\n  maxDecimalDigits: number = 2;\n\n  @NumberInputConverter()\n  step: number = 0.01;\n\n  @BooleanInputConverter()\n  grouping: boolean = true;\n\n  @BooleanInputConverter()\n  strict: boolean = false;\n\n  protected decimalSeparator: string;\n  protected pipeArguments: IRealPipeArgument;\n  protected numberService: NumberService;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n    this._defaultSQLTypeKey = 'FLOAT';\n    this.numberService = this.injector.get(NumberService);\n  }\n\n  setComponentPipe(): void {\n    this.componentPipe = new ORealPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    // Override FormControl getValue in order to return the appropriate formatted value\n    (this.getFormControl() as OFormControl).getValue = function () {\n      if (!isNaN(Number(this.value))) {\n        return Number(this.value);\n      } else {\n        return this.value;\n      }\n    };\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n    this.pipeArguments.decimalSeparator = this.decimalSeparator;\n    this.pipeArguments.minDecimalDigits = this.minDecimalDigits;\n    this.pipeArguments.maxDecimalDigits = this.maxDecimalDigits;\n    this.pipeArguments.truncate = false;\n    if (!this.isEmpty()) {\n      this.ensureOFormValue(this.value);\n    }\n  }\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    if (Util.isDefined(this.maxDecimalDigits)) {\n      validators.push(this.maxDecimalDigitsValidator.bind(this));\n    }\n    return validators;\n  }\n\n  ensureOFormValue(arg: any): void {\n    super.ensureOFormValue(arg);\n    if (!this.isEmpty() && Util.isDefined(this.pipeArguments)) {\n      const formattedValue = this.numberService.getRealValue(this.value.value, this.pipeArguments);\n      if (!isNaN(Number(formattedValue))) {\n        this.value.value = formattedValue;\n      }\n    }\n  }\n\n  protected maxDecimalDigitsValidator(control: UntypedFormControl): ValidationErrors {\n    let ctrlValue: string = control.value;\n    if (typeof control.value === 'number') {\n      ctrlValue = ctrlValue.toString();\n    }\n    if (this.strict && ctrlValue && ctrlValue.length) {\n      const valArray = ctrlValue.split(this.decimalSeparator ? this.decimalSeparator : '.');\n      if (Util.isDefined(this.maxDecimalDigits) && (this.maxDecimalDigits > 0) && Util.isDefined(valArray[1]) && (valArray[1].length > this.maxDecimalDigits)) {\n        return {\n          maxDecimaldigits: {\n            requiredMaxDecimaldigits: this.maxDecimalDigits\n          }\n        };\n      }\n    }\n    return {};\n  }\n\n  protected initializeStep(): void {\n    if (this.step <= 0) {\n      this.step = 1 / Math.pow(10, this.maxDecimalDigits);\n      console.warn('`step` attribute must be greater than zero');\n    }\n  }\n\n}\n","<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n  [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\"\n  [matTooltipHideDelay]=\"tooltipHideDelay\">\n  <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\"\n    [class.custom-width]=\"hasCustomWidth\" [class.icon-field]=\"showClearButton\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <input matInput [type]=\"inputType\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\"\n      [placeholder]=\"placeHolder\" (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\"\n      (change)=\"onChangeEvent($event)\" [readonly]=\"isReadOnly\" [min]=\"min\" [max]=\"max\" [step]=\"step\"\n      [required]=\"isRequired\">\n    <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\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', 'min') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('max')\">\n      {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'max') }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OIntegerInputModule } from '../integer-input/o-integer-input.module';\nimport { ORealInputComponent } from './o-real-input.component';\n\n@NgModule({\n  declarations: [ORealInputComponent],\n  imports: [CommonModule, OSharedModule, OIntegerInputModule],\n  exports: [ORealInputComponent]\n})\nexport class ORealInputModule { }\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport {\n  ORealInputComponent\n} from '../real-input/o-real-input.component';\nimport { CurrencyUtil } from '../../../util';\n\nexport const DEFAULT_INPUTS_O_CURRENCY_INPUT = [\n  'currencySymbol: currency-symbol',\n  'currencySymbolPosition: currency-symbol-position'\n];\n\n@Component({\n  selector: 'o-currency-input',\n  templateUrl: './o-currency-input.component.html',\n  styleUrls: ['./o-currency-input.component.scss'],\n  inputs: DEFAULT_INPUTS_O_CURRENCY_INPUT,\n  encapsulation: ViewEncapsulation.None\n})\nexport class OCurrencyInputComponent extends ORealInputComponent implements OnInit {\n\n\n  static currency_icons = ['USD', 'EUR', 'GBP', 'ILS', 'INR', 'JPY', 'KRW', 'BTC'];\n\n  currency_symbols = CurrencyUtil.currencyCodeToSymbol;\n\n  currencySymbol: string = 'EUR';\n  currencySymbolPosition: string = 'right';\n\n  protected existsOntimizeIcon() {\n    return OCurrencyInputComponent.currency_icons.indexOf(this.currencySymbol) !== -1;\n  }\n\n  useIcon(position: string): boolean {\n    return this.existsOntimizeIcon() && this.currencySymbolPosition === position;\n  }\n\n  useSymbol(position: string): boolean {\n    return !this.existsOntimizeIcon() && this.currency_symbols.hasOwnProperty(this.currencySymbol) && this.currencySymbolPosition === position;\n  }\n}\n","<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', 'min') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('max')\">\n      {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'max') }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { ORealInputModule } from '../real-input/o-real-input.module';\nimport { OCurrencyInputComponent } from './o-currency-input.component';\n\n@NgModule({\n  declarations: [OCurrencyInputComponent],\n  imports: [CommonModule, OSharedModule, ORealInputModule],\n  exports: [OCurrencyInputComponent]\n})\nexport class OCurrencyInputModule { }\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\nimport { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport moment, { Moment } from 'moment';\n\n@Injectable()\nexport class OntimizeMomentDateAdapter extends MomentDateAdapter {\n\n  oFormat: string;\n\n  constructor(@Optional() @Inject(MAT_DATE_LOCALE) dateLocale: string) {\n    super(dateLocale);\n  }\n\n  format(date: any, displayFormat: string): string {\n    return super.format(date, this.oFormat || displayFormat);\n  }\n\n  parse(value: any, parseFormat: string | string[]): any | null {\n    return super.parse(value, this.oFormat || parseFormat);\n  }\n\n  deserialize(value: any): Moment | null {\n    let date;\n    if (typeof value === 'number') {\n      date = moment(value);\n    }\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      date = moment(value, this.oFormat).locale(this.locale);\n    }\n    if (date && this.isValid(date)) {\n      return date;\n    }\n    return super.deserialize(value);\n  }\n}","import { Component, ElementRef, forwardRef, Inject, Injector, OnDestroy, OnInit, Optional, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MediaChange, MediaObserver } from '@angular/flex-layout';\nimport { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerInputEvent } from '@angular/material/datepicker';\nimport moment from 'moment';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { MomentService } from '../../../services/moment.service';\nimport { OntimizeMomentDateAdapter } from '../../../shared/material/date/ontimize-moment-date-adapter';\nimport { DateCustomClassFunction } from '../../../types/date-custom-class.type';\nimport { DateFilterFunction } from '../../../types/date-filter-function.type';\nimport { FormValueOptions } from '../../../types/form-value-options.type';\nimport { ODateValueType } from '../../../types/o-date-value.type';\nimport { SQLTypes } from '../../../util/sqltypes';\nimport { Util } from '../../../util/util';\nimport { OFormValue } from '../../form/o-form-value';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OFormDataComponent } from '../../o-form-data-component.class';\nimport { OValueChangeEvent } from '../../o-value-change-event.class';\nimport { OFormControl } from '../o-form-control.class';\n\nexport const DEFAULT_INPUTS_O_DATE_INPUT = [\n  'valueType: value-type',\n  'oformat: format',\n  'olocale: locale',\n  'oStartView: start-view',\n  'oMinDate: min',\n  'oMaxDate: max',\n  'oTouchUi: touch-ui',\n  'oStartAt: start-at',\n  'filterDate: filter-date',\n  'textInputEnabled: text-input-enabled',\n  'dateClass: date-class',\n];\n\n@Component({\n  selector: 'o-date-input',\n  templateUrl: './o-date-input.component.html',\n  inputs: DEFAULT_INPUTS_O_DATE_INPUT,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { provide: DateAdapter, useClass: OntimizeMomentDateAdapter, deps: [MAT_DATE_LOCALE] }\n  ]\n})\nexport class ODateInputComponent extends OFormDataComponent implements OnDestroy, OnInit {\n\n  @BooleanInputConverter()\n  public textInputEnabled: boolean = true;\n  protected _oformat: string = 'L';\n  protected olocale: string;\n  protected updateLocaleOnChange: boolean = false;\n  protected oStartView: 'month' | 'year' = 'month';\n  set oMinDate(value: string) {\n    if (value) {\n      const momentD = this.getValueAsMoment(value)\n      if (Util.isDefined(momentD)) {\n        this.datepickerInput.min = momentD.toDate();\n        this.minDateString = momentD.format(this.oformat);\n      }\n    }\n  }\n  set oMaxDate(value: string) {\n    if (value) {\n      const momentD = this.getValueAsMoment(value)\n      if (Util.isDefined(momentD)) {\n        this.datepickerInput.max = momentD.toDate();\n        this.maxDateString = momentD.format(this.oformat);\n      }\n    }\n  }\n  @BooleanInputConverter()\n  protected oTouchUi: boolean;\n  protected oStartAt: string;\n  protected _filterDate: DateFilterFunction;\n  protected _dateClass: DateCustomClassFunction\n  protected _valueType: ODateValueType = 'timestamp';\n\n  protected _minDateString: string;\n  protected _maxDateString: string;\n\n  protected media: MediaObserver;\n  protected mediaSubscription: Subscription;\n  protected onLanguageChangeSubscription: Subscription;\n  protected dateValue: Date;\n\n  @ViewChild('picker', { static: true })\n  public datepicker: MatDatepicker<Date>;\n\n  @ViewChild(MatDatepickerInput, { static: true })\n  public datepickerInput: MatDatepickerInput<Date>;\n\n  @ViewChild('matInputRef', { read: ElementRef, static: true })\n  private matInputRef!: ElementRef;\n\n  private momentSrv: MomentService;\n  private momentDateAdapter: DateAdapter<MomentDateAdapter>;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    dateAdapter: DateAdapter<OntimizeMomentDateAdapter>,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n    this.momentDateAdapter = dateAdapter;\n    this._defaultSQLTypeKey = 'DATE';\n    this.momentSrv = this.injector.get(MomentService);\n    this.media = this.injector.get(MediaObserver);\n  }\n\n  public ngOnInit(): void {\n    this.initialize();\n\n    if (!this.olocale) {\n      this.updateLocaleOnChange = true;\n      this.olocale = this.momentSrv.getLocale();\n    }\n\n    if (this.oformat) {\n      (this.momentDateAdapter as any).oFormat = this.oformat;\n    }\n\n    this.momentDateAdapter.setLocale(this.olocale);\n\n    if (this.oStartView) {\n      this.datepicker.startView = this.oStartView;\n    }\n\n    if (this.oStartAt) {\n      this.datepicker.startAt = new Date(this.oStartAt);\n    }\n\n    if (this.updateLocaleOnChange) {\n      this.onLanguageChangeSubscription = this.translateService.onLanguageChanged.subscribe(() => {\n        this.momentDateAdapter.setLocale(this.translateService.getCurrentLang());\n        this.setValue(this.getValue());\n      });\n    }\n\n    this.subscribeToMediaChanges();\n  }\n\n  public subscribeToMediaChanges(): void {\n    this.mediaSubscription = this.media.asObservable().subscribe((change: MediaChange[]) => {\n      if (['xs', 'sm'].indexOf(change[0].mqAlias) !== -1) {\n        this.touchUi = Util.isDefined(this.oTouchUi) ? this.oTouchUi : true;\n      }\n      if (['md', 'lg', 'xl'].indexOf(change[0].mqAlias) !== -1) {\n        this.touchUi = Util.isDefined(this.oTouchUi) ? this.oTouchUi : false;\n      }\n    });\n  }\n\n  public ngOnDestroy(): void {\n    super.ngOnDestroy();\n    if (this.mediaSubscription) {\n      this.mediaSubscription.unsubscribe();\n    }\n    if (this.onLanguageChangeSubscription) {\n      this.onLanguageChangeSubscription.unsubscribe();\n    }\n  }\n\n  public getValueAsDate(): any {\n    return this.dateValue;\n  }\n\n  public getValue(): any {\n    let timestampValue = super.getValue();\n    if (timestampValue && timestampValue instanceof Date) {\n      timestampValue = timestampValue.getTime();\n    }\n    return timestampValue;\n  }\n\n  get showClearButton(): boolean {\n    return this.clearButton && !this.isReadOnly && this.enabled && this.matInputRef.nativeElement.value;\n  }\n\n  public open(): void {\n    if (!this.isReadOnly && this.enabled) {\n      this.datepicker.open();\n    }\n  }\n\n  public clearValue(options?: FormValueOptions, setDirty: boolean = false): void {\n    super.clearValue(options, setDirty);\n    this.dateValue = void 0;\n  }\n\n  public onChangeEvent(event: MatDatepickerInputEvent<any>): void {\n    const isValid = event.value && event.value.isValid && event.value.isValid();\n    let val = isValid ? event.value.valueOf() : event.value;\n    const parsedVal = Util.parseByValueType(val, this.valueType, this.oformat);\n    this.setValue(parsedVal, {\n      changeType: OValueChangeEvent.USER_CHANGE,\n      emitEvent: false,\n      emitModelToViewChange: false\n    });\n  }\n\n  public onClickInput(e: Event): void {\n    if (!this.textInputEnabled) {\n      this.open();\n    }\n  }\n\n  get filterDate(): DateFilterFunction {\n    return this._filterDate;\n  }\n\n  set filterDate(val: DateFilterFunction) {\n    this._filterDate = val;\n  }\n\n  get dateClass(): DateCustomClassFunction {\n    return this._dateClass;\n  }\n\n  set dateClass(val: DateCustomClassFunction) {\n    this._dateClass = val;\n  }\n  get oformat(): string {\n    return this._oformat;\n  }\n\n  set oformat(val: string) {\n    this._oformat = val;\n  }\n\n  get minDateString(): string {\n    return this._minDateString;\n  }\n\n  set minDateString(val: string) {\n    this._minDateString = val;\n  }\n\n  get maxDateString(): string {\n    return this._maxDateString;\n  }\n\n  set maxDateString(val: string) {\n    this._maxDateString = val;\n  }\n\n  get touchUi(): boolean {\n    return this.oTouchUi || false;\n  }\n\n  set touchUi(val: boolean) {\n    this.oTouchUi = val;\n    this.datepicker.touchUi = this.touchUi;\n  }\n\n  protected ensureODateValueType(val: any): void {\n    if (!Util.isDefined(val)) {\n      return val;\n    }\n    let result = val;\n    switch (this.valueType) {\n      case 'string':\n        if (typeof val === 'string') {\n          const m = moment(val, this.oformat);\n          if (m.isValid()) {\n            this.dateValue = new Date(m.valueOf());\n          }\n        } else {\n          result = undefined;\n        }\n        break;\n      case 'date':\n        if ((val instanceof Date)) {\n          this.dateValue = val;\n        } else {\n          result = undefined;\n        }\n        break;\n      case 'timestamp':\n        if (typeof val === 'number') {\n          this.dateValue = new Date(val);\n        } else {\n          result = undefined;\n        }\n        break;\n      case 'iso-8601':\n        if (typeof val !== 'string') {\n          const acceptTimestamp = typeof val === 'number' && this.getSQLType() === SQLTypes.TIMESTAMP;\n          if (acceptTimestamp) {\n            this.dateValue = new Date(val);\n          } else {\n            result = undefined;\n          }\n        } else {\n          const m = moment(val);\n          if (m.isValid()) {\n            this.dateValue = new Date(m.valueOf());\n          } else {\n            result = undefined;\n          }\n        }\n        break;\n      default:\n        break;\n    }\n    if (!Util.isDefined(result)) {\n      console.warn(`ODateInputComponent value (${val}) is not consistent with value-type (${this.valueType})`);\n    }\n    return result;\n  }\n\n  protected setFormValue(val: any, options?: FormValueOptions, setDirty: boolean = false): void {\n    let value = val;\n    if (val instanceof OFormValue) {\n      value = val.value;\n    }\n    this.ensureODateValueType(value);\n    super.setFormValue(value, options, setDirty);\n  }\n\n  set valueType(val: any) {\n    this._valueType = Util.convertToODateValueType(val);\n  }\n\n  get valueType(): any {\n    return this._valueType;\n  }\n\n  public createFormControl(cfg, validators): OFormControl {\n    this._fControl = super.createFormControl(cfg, validators);\n    if (!this.isEmpty() && !this.form.isInInsertMode()) {\n      this._fControl.markAsTouched();\n    }\n    return this._fControl;\n  }\n\n  protected getValueAsMoment(val: any): any {\n    if (!Util.isDefined(val)) {\n      return val;\n    }\n    let result;\n    switch (true) {\n      case this.valueType === 'string' && typeof val === 'string':\n        result = moment(val, this.oformat);\n        break;\n      case this.valueType === 'date' && val instanceof Date:\n      case this.valueType === 'timestamp' && typeof val === 'number':\n      case this.valueType === 'iso-8601' && typeof val === 'string':\n        result = moment(val)\n        break;\n      case this.valueType === 'iso-8601':\n        if (typeof val !== 'string') {\n          const acceptTimestamp = typeof val === 'number' && this.getSQLType() === SQLTypes.TIMESTAMP;\n          if (acceptTimestamp) {\n            result = moment(val)\n          }\n        }\n        break;\n      default:\n        break;\n    }\n    return Util.isDefined(result) && result.isValid() ? result : undefined\n  }\n\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\"\n  [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\"\n  [matTooltipHideDelay]=\"tooltipHideDelay\" (click)=\"onClickInput($event)\">\n  <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\"\n    [class.custom-width]=\"hasCustomWidth\" class=\"icon-field\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <input matInput #matInputRef [matDatepicker]=\"picker\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\"\n      [placeholder]=\"placeHolder\" [readonly]=\"isReadOnly || !textInputEnabled\" (focus)=\"innerOnFocus($event)\"\n      (blur)=\"innerOnBlur($event)\" [matDatepickerFilter]=\"filterDate\" (dateChange)=\"onChangeEvent($event)\"\n      [required]=\"isRequired\" [value]=\"getValueAsDate()\">\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    <mat-datepicker-toggle matSuffix [disabled]=\"isReadOnly || !enabled\" [class.read-only]=\"isReadOnly\" [for]=\"picker\">\n      <mat-icon matDatepickerToggleIcon>today</mat-icon>\n    </mat-datepicker-toggle>\n    <mat-datepicker #picker [disabled]=\"isReadOnly || !enabled\" [dateClass]=\"dateClass\"></mat-datepicker>\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('matDatepickerParse')\">\n      {{ 'FORM_VALIDATION.DATE_PARSE' | oTranslate }} {{ oformat }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('matDatepickerFilter')\">\n      {{ 'FORM_VALIDATION.DATE_FILTER' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('matDatepickerMin')\">\n      {{ 'FORM_VALIDATION.DATE_MIN' | oTranslate }} {{ minDateString }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('matDatepickerMax')\">\n      {{ 'FORM_VALIDATION.DATE_MAX' | oTranslate }} {{ maxDateString }}\n    </mat-error>\n    <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n      {{ oError.text | oTranslate }}\n    </mat-error>\n  </mat-form-field>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { ODateInputComponent } from './o-date-input.component';\n\n@NgModule({\n  declarations: [ODateInputComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [ODateInputComponent]\n})\nexport class ODateInputModule { }\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';\nimport moment from 'moment';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\n\n\nexport enum SideEnum {\n  left = 'left',\n  right = 'right'\n}\n\n@Component({\n  selector: 'o-daterange-picker',\n  styleUrls: ['./o-daterange-picker.component.scss'],\n  templateUrl: './o-daterange-picker.component.html',\n  host: {\n    '(click)': 'handleInternalClick($event)',\n  },\n  encapsulation: ViewEncapsulation.None,\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => DaterangepickerComponent),\n    multi: true\n  }]\n})\nexport class DaterangepickerComponent implements OnInit {\n  private _old: { start: any, end: any } = { start: null, end: null };\n  chosenLabel: string;\n  calendarVariables: { left: any, right: any } = { left: {}, right: {} };\n  timepickerVariables: { left: any, right: any } = { left: {}, right: {} };\n  daterangepicker: { start: UntypedFormControl, end: UntypedFormControl } = { start: new UntypedFormControl(), end: new UntypedFormControl() };\n  applyBtn: { disabled: boolean } = { disabled: false };\n  startDate = moment().startOf('day');\n  endDate = moment().endOf('day');\n  @Input()\n  dateLimit: number = null;\n  // used in template for compile time support of enum values.\n  sideEnum = SideEnum;\n\n  @Input()\n  minDate: moment.Moment = null;\n  @Input()\n  maxDate: moment.Moment = null;\n  @Input()\n  autoApply: boolean = false;\n  @Input()\n  singleDatePicker: boolean = false;\n  @Input()\n  showDropdowns: boolean = false;\n  @BooleanInputConverter()\n  showWeekNumbers: boolean = false;\n  @Input()\n  showISOWeekNumbers: boolean = false;\n  @Input()\n  linkedCalendars: boolean = false;\n  @Input()\n  autoUpdateInput: boolean = true;\n  @Input()\n  alwaysShowCalendars: boolean = false;\n  @Input()\n  maxSpan: boolean = false;\n  // timepicker variables\n  @Input()\n  timePicker: boolean = false;\n  @Input()\n  timePicker24Hour: boolean = false;\n  @Input()\n  timePickerIncrement: number = 1;\n  @Input()\n  timePickerSeconds: boolean = false;\n  // end of timepicker variables\n  @Input()\n  showClearButton: boolean = false;\n  @Input()\n  firstMonthDayClass: string = null;\n  @Input()\n  lastMonthDayClass: string = null;\n  @Input()\n  emptyWeekRowClass: string = null;\n  @Input()\n  firstDayOfNextMonthClass: string = null;\n  @Input()\n  lastDayOfPreviousMonthClass: string = null;\n\n  @Input()\n  locale: any;\n  // custom ranges\n  _ranges: any = {};\n\n  @Input() set ranges(value) {\n    this._ranges = value;\n    this.renderRanges();\n  }\n  get ranges(): any {\n    return this._ranges;\n  }\n\n  @Input()\n  showCustomRangeLabel: boolean;\n  @Input()\n  showCancel: boolean = false;\n  @Input()\n  keepCalendarOpeningWithRange: boolean = false;\n  @Input()\n  showRangeLabelOnInput: boolean = false;\n  chosenRange: string;\n  rangesArray: Array<any> = [];\n\n  // some state information\n  pickingDate: boolean = false;\n  isShown: boolean = false;\n  inline: boolean = true;\n  leftCalendar: any = {};\n  rightCalendar: any = {};\n  showCalInRanges: boolean = false;\n  adjustedDaysOfWeek = [];\n\n  options: any = {}; // should get some opt from user\n  @Input() drops: string;\n  @Input() opens: string;\n  @Output() choosedDate: EventEmitter<object>;\n  @Output() rangeClicked: EventEmitter<object>;\n  @Output() datesUpdated: EventEmitter<object>;\n  @ViewChild('pickerContainer') pickerContainer: ElementRef;\n\n  constructor(\n    private _ref: ChangeDetectorRef\n  ) {\n    this.choosedDate = new EventEmitter();\n    this.rangeClicked = new EventEmitter();\n    this.datesUpdated = new EventEmitter();\n  }\n\n  ngOnInit() {\n    this._buildLocale();\n    const daysOfWeek = [...this.locale.daysOfWeek];\n     this.adjustedDaysOfWeek = [...daysOfWeek];\n\n    // Check if rotation is needed\n    if (this.locale.firstDay !== 0) {\n      let iterator = this.locale.firstDay;\n      while (iterator > 0) {\n        this.adjustedDaysOfWeek.push(this.adjustedDaysOfWeek.shift()); // Rotate the days\n        iterator--;\n      }\n    }\n    if (this.inline) {\n      this._old.start = this.startDate.clone();\n      this._old.end = this.endDate.clone();\n    }\n\n    this.updateMonthsInView();\n    this.renderCalendar(SideEnum.left);\n    if (!this.singleDatePicker) {\n      this.renderCalendar(SideEnum.right);\n    }\n    this.renderRanges();\n  }\n\n  renderRanges() {\n    this.rangesArray = [];\n    let start;\n    let end;\n    if (typeof this.ranges === 'object') {\n      for (const range in this.ranges) {\n        if (typeof this.ranges[range][0] === 'string') {\n          start = moment(this.ranges[range][0], this.locale.format);\n        } else {\n          start = moment(this.ranges[range][0]);\n        }\n\n        if (typeof this.ranges[range][1] === 'string') {\n          end = moment(this.ranges[range][1], this.locale.format);\n        } else {\n          end = moment(this.ranges[range][1]);\n        }\n\n        // If the start or end date exceed those allowed by the minDate or maxSpan\n        // options, shorten the range to the allowable period.\n        if (this.minDate && start.isBefore(this.minDate)) {\n          start = this.minDate.clone();\n        }\n\n        let maxDate = this.maxDate;\n        if (this.maxSpan && maxDate && start.clone().add(this.maxSpan).isAfter(maxDate)) {\n          maxDate = start.clone().add(this.maxSpan);\n        }\n        if (maxDate && end.isAfter(maxDate)) {\n          end = maxDate.clone();\n        }\n\n        // If the end of the range is before the minimum or the start of the range is\n        // after the maximum, don't display this range option at all.\n        if ((this.minDate && end.isBefore(this.minDate, this.timePicker ? 'minute' : 'day'))\n          || (maxDate && start.isAfter(maxDate, this.timePicker ? 'minute' : 'day'))) {\n          continue;\n        }\n\n        //Support unicode chars in the range names.\n        let elem = document.createElement('textarea');\n        elem.innerHTML = range;\n        let rangeHtml = elem.value;\n\n        this.ranges[rangeHtml] = [start, end];\n      }\n      for (const range in this.ranges) {\n        this.rangesArray.push(range);\n      }\n      if (this.showCustomRangeLabel) {\n        this.rangesArray.push(this.locale.customRangeLabel);\n      }\n      this.showCalInRanges = (!this.rangesArray.length) || this.alwaysShowCalendars;\n      if (!this.timePicker) {\n        this.startDate = this.startDate.startOf('day');\n        this.endDate = this.endDate.endOf('day');\n      }\n      // can't be used together for now\n      if (this.timePicker && this.autoApply) {\n        this.autoApply = false;\n      }\n    }\n  }\n\n  renderTimePicker(side: SideEnum) {\n    if (side === SideEnum.right && !this.endDate) {\n      return;\n    }\n    let selected;\n    let minDate;\n    const maxDate = this.maxDate;\n    if (side === SideEnum.left) {\n      selected = this.startDate.clone();\n      minDate = this.minDate;\n    } else if (side === SideEnum.right) {\n      selected = this.endDate.clone();\n      minDate = this.startDate;\n    }\n    const start = this.timePicker24Hour ? 0 : 1;\n    const end = this.timePicker24Hour ? 23 : 12;\n    this.timepickerVariables[side] = {\n      hours: [],\n      minutes: [],\n      minutesLabel: [],\n      seconds: [],\n      secondsLabel: [],\n      disabledHours: [],\n      disabledMinutes: [],\n      disabledSeconds: [],\n      selectedHour: 0,\n      selectedMinute: 0,\n      selectedSecond: 0,\n    };\n    // generate hours\n    for (let i = start; i <= end; i++) {\n      let i_in_24 = i;\n      if (!this.timePicker24Hour) {\n        i_in_24 = selected.hour() >= 12 ? (i === 12 ? 12 : i + 12) : (i === 12 ? 0 : i);\n      }\n\n      const time = selected.clone().hour(i_in_24);\n      let disabled = false;\n      if (minDate && time.minute(59).isBefore(minDate)) {\n        disabled = true;\n      }\n      if (maxDate && time.minute(0).isAfter(maxDate)) {\n        disabled = true;\n      }\n\n      this.timepickerVariables[side].hours.push(i);\n      if (i_in_24 === selected.hour() && !disabled) {\n        this.timepickerVariables[side].selectedHour = i;\n      } else if (disabled) {\n        this.timepickerVariables[side].disabledHours.push(i);\n      }\n    }\n    // generate minutes\n    for (let i = 0; i < 60; i += this.timePickerIncrement) {\n      const padded = i < 10 ? '0' + i : i;\n      const time = selected.clone().minute(i);\n\n      let disabled = false;\n      if (minDate && time.second(59).isBefore(minDate)) {\n        disabled = true;\n      }\n      if (maxDate && time.second(0).isAfter(maxDate)) {\n        disabled = true;\n      }\n      this.timepickerVariables[side].minutes.push(i);\n      this.timepickerVariables[side].minutesLabel.push(padded);\n      if (selected.minute() === i && !disabled) {\n        this.timepickerVariables[side].selectedMinute = i;\n      } else if (disabled) {\n        this.timepickerVariables[side].disabledMinutes.push(i);\n      }\n    }\n    // generate seconds\n    if (this.timePickerSeconds) {\n      for (let i = 0; i < 60; i++) {\n        const padded = i < 10 ? '0' + i : i;\n        const time = selected.clone().second(i);\n\n        let disabled = false;\n        if (minDate && time.isBefore(minDate)) {\n          disabled = true;\n        }\n        if (maxDate && time.isAfter(maxDate)) {\n          disabled = true;\n        }\n\n        this.timepickerVariables[side].seconds.push(i);\n        this.timepickerVariables[side].secondsLabel.push(padded);\n        if (selected.second() === i && !disabled) {\n          this.timepickerVariables[side].selectedSecond = i;\n        } else if (disabled) {\n          this.timepickerVariables[side].disabledSeconds.push(i);\n        }\n      }\n    }\n    // generate AM/PM\n    if (!this.timePicker24Hour) {\n\n      if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate)) {\n        this.timepickerVariables[side].amDisabled = true;\n      }\n\n      if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate)) {\n        this.timepickerVariables[side].pmDisabled = true;\n      }\n      if (selected.hour() >= 12) {\n        this.timepickerVariables[side].ampmModel = 'PM';\n      } else {\n        this.timepickerVariables[side].ampmModel = 'AM';\n      }\n    }\n    this.timepickerVariables[side].selected = selected;\n  }\n\n  renderCalendar(side: SideEnum) { // side enum\n    const mainCalendar: any = (side === SideEnum.left) ? this.leftCalendar : this.rightCalendar;\n    const month = mainCalendar.month.month();\n    const year = mainCalendar.month.year();\n    const hour = mainCalendar.month.hour();\n    const minute = mainCalendar.month.minute();\n    const second = mainCalendar.month.second();\n    const daysInMonth = moment([year, month]).daysInMonth();\n    const firstDay = moment([year, month, 1]);\n    const lastDay = moment([year, month, daysInMonth]);\n    const lastMonth = moment(firstDay).subtract(1, 'month').month();\n    const lastYear = moment(firstDay).subtract(1, 'month').year();\n    const daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();\n    const dayOfWeek = firstDay.day();\n    // initialize a 6 rows x 7 columns array for the calendar\n    const calendar: any = [];\n    calendar.firstDay = firstDay;\n    calendar.lastDay = lastDay;\n\n    for (let i = 0; i < 6; i++) {\n      calendar[i] = [];\n    }\n\n    // populate the calendar with date objects\n    let startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\n    if (startDay > daysInLastMonth) {\n      startDay -= 7;\n    }\n\n    if (dayOfWeek === this.locale.firstDay) {\n      startDay = daysInLastMonth - 6;\n    }\n\n    let curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);\n\n    for (let i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {\n      if (i > 0 && col % 7 === 0) {\n        col = 0;\n        row++;\n      }\n      calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\n      curDate.hour(12);\n\n      if (this.minDate && calendar[row][col].format('YYYY-MM-DD') === this.minDate.format('YYYY-MM-DD') &&\n        calendar[row][col].isBefore(this.minDate) && side === 'left') {\n        calendar[row][col] = this.minDate.clone();\n      }\n\n      if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') === this.maxDate.format('YYYY-MM-DD') &&\n        calendar[row][col].isAfter(this.maxDate) && side === 'right') {\n        calendar[row][col] = this.maxDate.clone();\n      }\n    }\n\n    // make the calendar object available to hoverDate/clickDate\n    if (side === SideEnum.left) {\n      this.leftCalendar.calendar = calendar;\n    } else {\n      this.rightCalendar.calendar = calendar;\n    }\n    //\n    // Display the calendar\n    //\n    const minDate = side === 'left' ? this.minDate : this.startDate;\n    let maxDate = this.maxDate;\n    // adjust maxDate to reflect the dateLimit setting in order to\n    // grey out end dates beyond the dateLimit\n    if (this.endDate === null && this.dateLimit) {\n      const maxLimit = this.startDate.clone().add(this.dateLimit, 'day').endOf('day');\n      if (!maxDate || maxLimit.isBefore(maxDate)) {\n        maxDate = maxLimit;\n      }\n    }\n    this.calendarVariables[side] = {\n      month: month,\n      year: year,\n      hour: hour,\n      minute: minute,\n      second: second,\n      daysInMonth: daysInMonth,\n      firstDay: firstDay,\n      lastDay: lastDay,\n      lastMonth: lastMonth,\n      lastYear: lastYear,\n      daysInLastMonth: daysInLastMonth,\n      dayOfWeek: dayOfWeek,\n      // other vars\n      calRows: Array.from(Array(6).keys()),\n      calCols: Array.from(Array(7).keys()),\n      classes: {},\n      minDate: minDate,\n      maxDate: maxDate,\n      calendar: calendar\n    };\n    if (this.showDropdowns) {\n      const currentMonth = calendar[1][1].month();\n      const currentYear = calendar[1][1].year();\n      const maxYear = (maxDate && maxDate.year()) || (currentYear + 5);\n      const minYear = (minDate && minDate.year()) || (currentYear - 50);\n      const inMinYear = currentYear === minYear;\n      const inMaxYear = currentYear === maxYear;\n      const years = [];\n      for (let y = minYear; y <= maxYear; y++) {\n        years.push(y);\n      }\n      this.calendarVariables[side].dropdowns = {\n        currentMonth: currentMonth,\n        currentYear: currentYear,\n        maxYear: maxYear,\n        minYear: minYear,\n        inMinYear: inMinYear,\n        inMaxYear: inMaxYear,\n        monthArrays: Array.from(Array(12).keys()),\n        yearArrays: years\n      };\n    }\n\n    this._buildCells(calendar, side);\n  }\n  setStartDate(startDate) {\n    if (typeof startDate === 'string') {\n      this.startDate = moment(startDate, this.locale.format);\n    }\n\n    if (typeof startDate === 'object') {\n      this.startDate = moment(startDate);\n    }\n    if (!this.timePicker) {\n      this.startDate = this.startDate.startOf('day');\n    }\n\n    if (this.timePicker && this.timePickerIncrement) {\n      this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n    }\n\n\n    if (this.minDate && this.startDate.isBefore(this.minDate)) {\n      this.startDate = this.minDate.clone();\n      if (this.timePicker && this.timePickerIncrement) {\n        this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n      }\n\n    }\n\n    if (this.maxDate && this.startDate.isAfter(this.maxDate)) {\n      this.startDate = this.maxDate.clone();\n      if (this.timePicker && this.timePickerIncrement) {\n        this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n      }\n    }\n\n    if (!this.isShown) {\n      this.updateElement();\n    }\n\n    this.updateMonthsInView();\n  }\n\n  setEndDate(endDate) {\n    if (typeof endDate === 'string') {\n      this.endDate = moment(endDate, this.locale.format);\n    }\n\n    if (typeof endDate === 'object') {\n      this.endDate = moment(endDate);\n    }\n    if (!this.timePicker) {\n      this.endDate = this.endDate.add(1, 'd').startOf('day').subtract(1, 'second');\n    }\n\n    if (this.timePicker && this.timePickerIncrement) {\n      this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n    }\n\n\n    if (this.endDate.isBefore(this.startDate)) {\n      this.endDate = this.startDate.clone();\n    }\n\n    if (this.maxDate && this.endDate.isAfter(this.maxDate)) {\n      this.endDate = this.maxDate.clone();\n    }\n\n    if (this.dateLimit && this.startDate.clone().add(this.dateLimit, 'day').isBefore(this.endDate)) {\n      this.endDate = this.startDate.clone().add(this.dateLimit, 'day');\n    }\n\n\n    if (!this.isShown) {\n      // this.updateElement();\n    }\n    this.updateMonthsInView();\n  }\n  @Input()\n  isInvalidDate(date) {\n    return false;\n  }\n  @Input()\n  isCustomDate(date) {\n    return false;\n  }\n\n  updateView() {\n    if (this.timePicker) {\n      this.renderTimePicker(SideEnum.left);\n      this.renderTimePicker(SideEnum.right);\n    }\n    this.updateMonthsInView();\n    this.updateCalendars();\n  }\n\n  updateMonthsInView() {\n    if (this.endDate) {\n      // if both dates are visible already, do nothing\n      if (this.leftCalendar.month && this.rightCalendar.month &&\n        ((this.startDate && this.leftCalendar && this.startDate.format('YYYY-MM') === this.leftCalendar.month.format('YYYY-MM')) ||\n          (this.startDate && this.rightCalendar && this.startDate.format('YYYY-MM') === this.rightCalendar.month.format('YYYY-MM')))\n        &&\n        (this.endDate.format('YYYY-MM') === this.leftCalendar.month.format('YYYY-MM') ||\n          this.endDate.format('YYYY-MM') === this.rightCalendar.month.format('YYYY-MM'))\n      ) {\n        return;\n      }\n\n      //don't restart view for start month when select end date when singleDataPicker = true\n      if ((!this.singleDatePicker || (this.singleDatePicker && !this.pickingDate)) && this.startDate) {\n        this.leftCalendar.month = this.startDate.clone().date(2);\n        if (!this.linkedCalendars && (this.endDate.month() !== this.startDate.month() ||\n          this.endDate.year() !== this.startDate.year())) {\n          this.rightCalendar.month = this.endDate.clone().date(2);\n        } else {\n          this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\n        }\n      }\n\n    } else {\n      if (this.leftCalendar.month.format('YYYY-MM') !== this.startDate.format('YYYY-MM') &&\n        this.rightCalendar.month.format('YYYY-MM') !== this.startDate.format('YYYY-MM')) {\n        this.leftCalendar.month = this.startDate.clone().date(2);\n        this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\n      }\n    }\n    if (this.maxDate && this.linkedCalendars && this.rightCalendar.month > this.maxDate) {\n      this.rightCalendar.month = this.maxDate.clone().date(2);\n      this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');\n    }\n  }\n  /**\n   *  This is responsible for updating the calendars\n   */\n  updateCalendars() {\n    this.renderCalendar(SideEnum.left);\n    //Right calendar in singleDatepicker is not rendering\n    if (!this.singleDatePicker) {\n      this.renderCalendar(SideEnum.right);\n    }\n\n    if (this.endDate === null) { return; }\n    this.calculateChosenLabel();\n  }\n  updateElement() {\n    if (this.autoUpdateInput) {\n      if (this.startDate && this.endDate) {\n        // if we use ranges and should show range label on inpu\n        if (this.rangesArray.length && this.showRangeLabelOnInput === true && this.chosenRange &&\n          this.locale.customRangeLabel !== this.chosenRange) {\n          this.chosenLabel = this.chosenRange;\n        } else {\n          this.chosenLabel = this.startDate.format(this.locale.format) +\n            this.locale.separator + this.endDate.format(this.locale.format);\n        }\n      }\n    }\n\n  }\n\n  remove() {\n    this.isShown = false;\n  }\n  /**\n   * this should calculate the label\n   */\n  calculateChosenLabel() {\n    if (!this.locale || !this.locale.separator) {\n      this._buildLocale();\n    }\n    let customRange = true;\n    let i = 0;\n    if (this.rangesArray.length > 0) {\n      for (const range in this.ranges) {\n        if (this.timePicker) {\n          const format = this.timePickerSeconds ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD HH:mm';\n          //ignore times when comparing dates if time picker seconds is not enabled\n          if (this.startDate.format(format) === this.ranges[range][0].format(format) && this.endDate.format(format) === this.ranges[range][1].format(format)) {\n            customRange = false;\n            this.chosenRange = this.rangesArray[i];\n            break;\n          }\n        } else {\n          //ignore times when comparing dates if time picker is not enabled\n          if (this.startDate.format('YYYY-MM-DD') === this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') === this.ranges[range][1].format('YYYY-MM-DD')) {\n            customRange = false;\n            this.chosenRange = this.rangesArray[i];\n            break;\n          }\n        }\n\n        i++;\n      }\n      if (customRange) {\n        if (this.showCustomRangeLabel) {\n          this.chosenRange = this.locale.customRangeLabel;\n        } else {\n          this.chosenRange = null;\n        }\n        // if custom label: show calenar\n        this.showCalInRanges = true;\n      }\n    }\n\n    this.updateElement();\n  }\n\n  clickApply(e?) {\n    if (this.startDate && !this.endDate) {\n      this.endDate = this.startDate.clone();\n      this.calculateChosenLabel();\n    }\n    if (this.isInvalidDate && this.startDate && this.endDate) {\n      // get if there are invalid date between range\n      const d = this.startDate.clone();\n      while (d.isBefore(this.endDate)) {\n        if (this.isInvalidDate(d)) {\n          this.endDate = d.subtract(1, 'days');\n          this.calculateChosenLabel();\n          break;\n        }\n        d.add(1, 'days');\n      }\n    }\n    if (this.chosenLabel) {\n      this.choosedDate.emit({ chosenLabel: this.chosenLabel, startDate: this.startDate, endDate: this.endDate });\n    }\n\n    this.datesUpdated.emit({ startDate: this.startDate, endDate: this.endDate });\n    this.hide();\n  }\n\n  clickCancel(e) {\n    this.startDate = this._old.start;\n    this.endDate = this._old.end;\n    if (this.inline) {\n      this.updateView();\n    }\n    this.hide();\n  }\n  /**\n   * called when month is changed\n   * @param monthEvent get value in event.target.value\n   * @param side left or right\n   */\n  monthChanged(monthEvent: any, side: SideEnum) {\n    const year = this.calendarVariables[side].dropdowns.currentYear;\n    const month = parseInt(monthEvent.target.value, 10);\n    this.monthOrYearChanged(month, year, side);\n  }\n  /**\n   * called when year is changed\n   * @param yearEvent get value in event.target.value\n   * @param side left or right\n   */\n  yearChanged(yearEvent: any, side: SideEnum) {\n    const month = this.calendarVariables[side].dropdowns.currentMonth;\n    const year = parseInt(yearEvent.target.value, 10);\n    this.monthOrYearChanged(month, year, side);\n  }\n  /**\n   * called when time is changed\n   * @param timeEvent  an event\n   * @param side left or right\n   */\n  timeChanged(timeEvent: any, side: SideEnum) {\n\n    let hour = parseInt(this.timepickerVariables[side].selectedHour, 10);\n    const minute = parseInt(this.timepickerVariables[side].selectedMinute, 10);\n    const second = this.timePickerSeconds ? parseInt(this.timepickerVariables[side].selectedSecond, 10) : 0;\n\n    if (!this.timePicker24Hour) {\n      const ampm = this.timepickerVariables[side].ampmModel;\n      if (ampm === 'PM' && hour < 12) {\n        hour += 12;\n      }\n      if (ampm === 'AM' && hour === 12) {\n        hour = 0;\n      }\n    }\n\n    if (side === SideEnum.left) {\n      const start = this.startDate.clone();\n      start.hour(hour);\n      start.minute(minute);\n      start.second(second);\n      this.setStartDate(start);\n      if (this.endDate && this.endDate.format('YYYY-MM-DD') === start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {\n        this.setEndDate(start.clone());\n      }\n    } else if (this.endDate) {\n      const end = this.endDate.clone();\n      end.hour(hour);\n      end.minute(minute);\n      end.second(second);\n      this.setEndDate(end);\n    }\n\n    // update the calendars so all clickable dates reflect the new time component\n    this.updateCalendars();\n\n    // re-render the time pickers because changing one selection can affect what's enabled in another\n    this.renderTimePicker(SideEnum.left);\n    this.renderTimePicker(SideEnum.right);\n  }\n  /**\n   *  call when month or year changed\n   * @param month month number 0 -11\n   * @param year year eg: 1995\n   * @param side left or right\n   */\n  monthOrYearChanged(month: number, year: number, side: SideEnum) {\n    const isLeft = side === SideEnum.left;\n\n    if (!isLeft) {\n      if (year < this.startDate.year() || (year === this.startDate.year() && month < this.startDate.month())) {\n        month = this.startDate.month();\n        year = this.startDate.year();\n      }\n    }\n\n    if (this.minDate) {\n      if (year < this.minDate.year() || (year === this.minDate.year() && month < this.minDate.month())) {\n        month = this.minDate.month();\n        year = this.minDate.year();\n      }\n    }\n\n    if (this.maxDate) {\n      if (year > this.maxDate.year() || (year === this.maxDate.year() && month > this.maxDate.month())) {\n        month = this.maxDate.month();\n        year = this.maxDate.year();\n      }\n    }\n    this.calendarVariables[side].dropdowns.currentYear = year;\n    this.calendarVariables[side].dropdowns.currentMonth = month;\n    if (isLeft) {\n      this.leftCalendar.month.month(month).year(year);\n      if (this.linkedCalendars) {\n        this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\n      }\n    } else {\n      this.rightCalendar.month.month(month).year(year);\n      if (this.linkedCalendars) {\n        this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\n      }\n    }\n    this.updateCalendars();\n  }\n\n  /**\n   * Click on previous month\n   * @param side left or right calendar\n   */\n  clickPrev(side: SideEnum) {\n    if (side === SideEnum.left) {\n      this.leftCalendar.month.subtract(1, 'month');\n      if (this.linkedCalendars) {\n        this.rightCalendar.month.subtract(1, 'month');\n      }\n    } else {\n      this.rightCalendar.month.subtract(1, 'month');\n    }\n    this.updateCalendars();\n  }\n  /**\n   * Click on next month\n   * @param side left or right calendar\n   */\n  clickNext(side: SideEnum) {\n    if (side === SideEnum.left) {\n      this.leftCalendar.month.add(1, 'month');\n    } else {\n      this.rightCalendar.month.add(1, 'month');\n      if (this.linkedCalendars) {\n        this.leftCalendar.month.add(1, 'month');\n      }\n    }\n    this.updateCalendars();\n  }\n  /**\n   * When selecting a date\n   * @param e event: get value by e.target.value\n   * @param side left or right\n   * @param row row position of the current date clicked\n   * @param col col position of the current date clicked\n   */\n  clickDate(e, side: SideEnum, row: number, col: number) {\n    this.pickingDate = true;\n\n    if (e.target.tagName === 'TD') {\n      if (!e.target.classList.contains('available')) {\n        return;\n      }\n    } else if (e.target.tagName === 'SPAN') {\n      if (!e.target.parentElement.classList.contains('available')) {\n        return;\n      }\n    }\n    if (this.rangesArray.length) {\n      this.chosenRange = this.locale.customRangeLabel;\n    }\n\n    let date = side === SideEnum.left ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\n\n    if (this.endDate || date.isBefore(this.startDate, 'day')) { // picking start\n      if (this.timePicker) {\n        date = this._getDateWithTime(date, SideEnum.left);\n      }\n      this.endDate = null;\n      this.setStartDate(date.clone());\n    } else if (!this.endDate && date.isBefore(this.startDate)) {\n      // special case: clicking the same date for start/end,\n      // but the time of the end date is before the start date\n      this.setEndDate(this.startDate.clone());\n    } else { // picking end\n      if (this.timePicker) {\n        date = this._getDateWithTime(date, SideEnum.right);\n      }\n      this.setEndDate(date.clone());\n      if (this.autoApply) {\n        this.calculateChosenLabel();\n        this.clickApply();\n      }\n    }\n\n    this.updateView();\n    this.pickingDate = false\n    // This is to cancel the blur event handler if the mouse was in one of the inputs\n    e.stopPropagation();\n\n  }\n  /**\n   *  Click on the custom range\n   * @param e: Event\n   * @param label\n   */\n  clickRange(e, label) {\n    this.chosenRange = label;\n    if (label === this.locale.customRangeLabel) {\n      this.isShown = true; // show calendars\n      this.showCalInRanges = true;\n    } else {\n      const dates = this.ranges[label];\n      this.startDate = dates[0].clone();\n      this.endDate = dates[1].clone();\n      if (this.showRangeLabelOnInput && label !== this.locale.customRangeLabel) {\n        this.chosenLabel = label;\n      } else {\n        this.calculateChosenLabel();\n      }\n      this.showCalInRanges = (!this.rangesArray.length) || this.alwaysShowCalendars;\n\n      if (!this.timePicker) {\n        this.startDate.startOf('day');\n        this.endDate.endOf('day');\n      }\n\n      if (!this.alwaysShowCalendars) {\n        this.isShown = false; // hide calendars\n      }\n      this.rangeClicked.emit({ label: label, dates: dates });\n      if (!this.keepCalendarOpeningWithRange) {\n        this.clickApply();\n      } else {\n        if (this.maxDate && this.maxDate.isSame(dates[0], 'month')) {\n          this.rightCalendar.month.month(dates[0].month());\n          this.rightCalendar.month.year(dates[0].year());\n          this.leftCalendar.month.month(dates[0].month() - 1);\n          this.leftCalendar.month.year(dates[1].year());\n        } else {\n          this.leftCalendar.month.month(dates[0].month());\n          this.leftCalendar.month.year(dates[0].year());\n          // get the next year\n          const nextMonth = dates[0].clone().add(1, 'month');\n          this.rightCalendar.month.month(nextMonth.month());\n          this.rightCalendar.month.year(nextMonth.year());\n        }\n        this.updateCalendars();\n        if (this.timePicker) {\n          this.renderTimePicker(SideEnum.left);\n          this.renderTimePicker(SideEnum.right);\n        }\n      }\n    }\n  }\n\n\n\n  show(e?) {\n    if (this.isShown) { return; }\n    this._old.start = this.startDate.clone();\n    this._old.end = this.endDate.clone();\n    this.isShown = true;\n    this.updateView();\n  }\n\n  hide(e?) {\n    if (!this.isShown) {\n      return;\n    }\n    // incomplete date selection, revert to last values\n    if (!this.endDate) {\n      if (this._old.start) {\n        this.startDate = this._old.start.clone();\n      }\n      if (this._old.end) {\n        this.endDate = this._old.end.clone();\n      }\n    }\n\n    // if a new date range was selected, invoke the user callback function\n    if (!this.startDate.isSame(this._old.start) || !this.endDate.isSame(this._old.end)) {\n      // this.callback(this.startDate, this.endDate, this.chosenLabel);\n    }\n\n    // if picker is attached to a text input, update it\n    this.updateElement();\n    this.isShown = false;\n    this._ref.detectChanges();\n\n  }\n\n  /**\n   * handle click on all element in the component, usefull for outside of click\n   * @param e event\n   */\n  handleInternalClick(e) {\n    e.stopPropagation();\n  }\n  /**\n   * update the locale options\n   * @param locale\n   */\n  updateLocale(locale) {\n    for (const key in locale) {\n      if (locale.hasOwnProperty(key)) {\n        this.locale[key] = locale[key];\n      }\n    }\n  }\n  /**\n   *  clear the daterange picker\n   */\n  clear() {\n    this.startDate = moment().startOf('day');\n    this.endDate = moment().endOf('day');\n    this.choosedDate.emit({ chosenLabel: '', startDate: null, endDate: null });\n    this.datesUpdated.emit({ startDate: null, endDate: null });\n    this.hide();\n  }\n\n  /**\n   * Find out if the selected range should be disabled if it doesn't\n   * fit into minDate and maxDate limitations.\n   */\n  disableRange(range) {\n    if (range === this.locale.customRangeLabel) {\n      return false;\n    }\n    const rangeMarkers = this.ranges[range];\n    const areBothBefore = rangeMarkers.every(date => {\n      if (!this.minDate) {\n        return false;\n      }\n      return date.isBefore(this.minDate);\n    });\n\n    const areBothAfter = rangeMarkers.every(date => {\n      if (!this.maxDate) {\n        return false;\n      }\n      return date.isAfter(this.maxDate);\n    });\n    return (areBothBefore || areBothAfter);\n  }\n\n  /**\n   *\n   * @param date the date to add time\n   * @param side left or right\n   */\n  private _getDateWithTime(date, side: SideEnum): moment.Moment {\n    let hour = parseInt(this.timepickerVariables[side].selectedHour, 10);\n    if (!this.timePicker24Hour) {\n      const ampm = this.timepickerVariables[side].ampmModel;\n      if (ampm === 'PM' && hour < 12) {\n        hour += 12;\n      }\n      if (ampm === 'AM' && hour === 12) {\n        hour = 0;\n      }\n    }\n    const minute = parseInt(this.timepickerVariables[side].selectedMinute, 10);\n    const second = this.timePickerSeconds ? parseInt(this.timepickerVariables[side].selectedSecond, 10) : 0;\n    return date.clone().hour(hour).minute(minute).second(second);\n  }\n  /**\n   *  build the locale config\n   */\n  private _buildLocale() {\n    if (!this.locale.format) {\n      if (this.timePicker) {\n        this.locale.format = moment.localeData().longDateFormat('lll');\n      } else {\n        this.locale.format = moment.localeData().longDateFormat('L');\n      }\n    }\n  }\n  private _buildCells(calendar, side: SideEnum) {\n    for (let row = 0; row < 6; row++) {\n      this.calendarVariables[side].classes[row] = {};\n      const rowClasses = [];\n      if (this.emptyWeekRowClass && !this.hasCurrentMonthDays(this.calendarVariables[side].month, calendar[row])) {\n        rowClasses.push(this.emptyWeekRowClass);\n      }\n      for (let col = 0; col < 7; col++) {\n        const classes = [];\n        // highlight today's date\n        if (calendar[row][col].isSame(new Date(), 'day')) {\n          classes.push('today');\n        }\n        // highlight weekends\n        if (calendar[row][col].isoWeekday() > 5) {\n          classes.push('weekend');\n        }\n        // grey out the dates in other months displayed at beginning and end of this calendar\n        if (calendar[row][col].month() !== calendar[1][1].month()) {\n          classes.push('off');\n\n          // mark the last day of the previous month in this calendar\n          if (this.lastDayOfPreviousMonthClass && (calendar[row][col].month() < calendar[1][1].month() || calendar[1][1].month() === 0) && calendar[row][col].date() === this.calendarVariables[side].daysInLastMonth) {\n            classes.push(this.lastDayOfPreviousMonthClass);\n          }\n\n          // mark the first day of the next month in this calendar\n          if (this.firstDayOfNextMonthClass && (calendar[row][col].month() > calendar[1][1].month() || calendar[row][col].month() === 0) && calendar[row][col].date() === 1) {\n            classes.push(this.firstDayOfNextMonthClass);\n          }\n        }\n        // mark the first day of the current month with a custom class\n        if (this.firstMonthDayClass && calendar[row][col].month() === calendar[1][1].month() && calendar[row][col].date() === calendar.firstDay.date()) {\n          classes.push(this.firstMonthDayClass);\n        }\n        // mark the last day of the current month with a custom class\n        if (this.lastMonthDayClass && calendar[row][col].month() === calendar[1][1].month() && calendar[row][col].date() === calendar.lastDay.date()) {\n          classes.push(this.lastMonthDayClass);\n        }\n        // don't allow selection of dates before the minimum date\n        if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day')) {\n          classes.push('off', 'disabled');\n        }\n        // don't allow selection of dates after the maximum date\n        if (this.calendarVariables[side].maxDate && calendar[row][col].isAfter(this.calendarVariables[side].maxDate, 'day')) {\n          classes.push('off', 'disabled');\n        }\n        // don't allow selection of date if a custom function decides it's invalid\n        if (this.isInvalidDate(calendar[row][col])) {\n          classes.push('off', 'disabled');\n        }\n        // highlight the currently selected start date\n        if (this.startDate && calendar[row][col].format('YYYY-MM-DD') === this.startDate.format('YYYY-MM-DD')) {\n          classes.push('active', 'start-date');\n        }\n        // highlight the currently selected end date\n        if (this.endDate !== null && calendar[row][col].format('YYYY-MM-DD') === this.endDate.format('YYYY-MM-DD')) {\n          classes.push('active', 'end-date');\n        }\n        // highlight dates in-between the selected dates\n        if (this.endDate !== null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate) {\n          classes.push('in-range');\n        }\n        // apply custom classes for this date\n        const isCustom = this.isCustomDate(calendar[row][col]);\n        if (isCustom !== false) {\n          if (typeof isCustom === 'string') {\n            classes.push(isCustom);\n          } else {\n            Array.prototype.push.apply(classes, isCustom);\n          }\n        }\n        // store classes var\n        let cname = '';\n        let disabled = false;\n        for (let i = 0; i < classes.length; i++) {\n          cname += classes[i] + ' ';\n          if (classes[i] === 'disabled') {\n            disabled = true;\n          }\n        }\n        if (!disabled) {\n          cname += 'available';\n        }\n        this.calendarVariables[side].classes[row][col] = cname.replace(/^\\s+|\\s+$/g, '');\n      }\n      this.calendarVariables[side].classes[row].classList = rowClasses.join(' ');\n    }\n  }\n\n  /**\n   * Find out if the current calendar row has current month days\n   * (as opposed to consisting of only previous/next month days)\n   */\n  hasCurrentMonthDays(currentMonth, row) {\n    for (let day = 0; day < 7; day++) {\n      if (row[day].month() === currentMonth) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n","<div class=\"md-drppicker\" #pickerContainer [ngClass]=\"{\n    ltr: locale.direction === 'ltr',\n    rtl: this.locale.direction === 'rtl',\n    'shown': isShown || inline,\n    'hidden': !isShown && !inline,\n    'inline': inline,\n    'double':  !singleDatePicker && showCalInRanges,\n    'show-ranges': rangesArray.length\n}\" [class]=\"'drops-' + drops + '-' + opens\">\n  <div class=\"ranges\">\n    <ul>\n      <li *ngFor=\"let range of rangesArray\">\n        <button type=\"button\" (click)=\"clickRange($event, range)\" [disabled]=\"disableRange(range)\"\n          [ngClass]=\"{'active': range === chosenRange}\">{{range | oTranslate}}</button>\n      </li>\n    </ul>\n  </div>\n  <div class=\"calendar\" [ngClass]=\"{right: singleDatePicker, left: !singleDatePicker}\" *ngIf=\"showCalInRanges\">\n    <div class=\"calendar-table\">\n      <table class=\"table-condensed\" *ngIf=\"calendarVariables\" aria-describedby=\"calendar days table\">\n        <thead>\n          <tr>\n            <th scope=\"col\" *ngIf=\"showWeekNumbers || showISOWeekNumbers\"></th>\n            <ng-container\n              *ngIf=\"!calendarVariables.left.minDate || calendarVariables.left.minDate.isBefore(calendarVariables.left.calendar.firstDay) && (!this.linkedCalendars || true)\">\n              <th (click)=\"clickPrev(sideEnum.left)\" class=\"prev available\">\n              </th>\n            </ng-container>\n            <ng-container\n              *ngIf=\"!(!calendarVariables.left.minDate || calendarVariables.left.minDate.isBefore(calendarVariables.left.calendar.firstDay) && (!this.linkedCalendars || true))\">\n              <th scope=\"col\"></th>\n            </ng-container>\n            <th scope=\"col\" colspan=\"5\" class=\"month drp-animate\">\n              <ng-container *ngIf=\"showDropdowns && calendarVariables.left.dropdowns\">\n                <div class=\"dropdowns\">\n                  {{this.locale.monthNames[calendarVariables?.left?.calendar[1][1].month()]}}\n                  <select class=\"monthselect\" (change)=\"monthChanged($event, sideEnum.left)\">\n                    <option\n                      [disabled]=\"(calendarVariables.left.dropdowns.inMinYear && m < calendarVariables.left.minDate.month()) || (calendarVariables.left.dropdowns.inMaxYear && m > calendarVariables.left.maxDate.month())\"\n                      *ngFor=\"let m of calendarVariables.left.dropdowns.monthArrays\" [value]=\"m\"\n                      [selected]=\"calendarVariables.left.dropdowns.currentMonth == m\">\n                      {{locale.monthNames[m]}}\n                    </option>\n                  </select>\n                </div>\n                <div class=\"dropdowns\">\n                  {{ calendarVariables?.left?.calendar[1][1].format(\" YYYY\")}}\n                  <select class=\"yearselect\" (change)=\"yearChanged($event, sideEnum.left)\">\n                    <option *ngFor=\"let y of calendarVariables.left.dropdowns.yearArrays\"\n                      [selected]=\"y === calendarVariables.left.dropdowns.currentYear\">\n                      {{y}}\n                    </option>\n                  </select>\n                </div>\n              </ng-container>\n              <ng-container *ngIf=\"!showDropdowns || !calendarVariables.left.dropdowns\">\n                {{this.locale.monthNames[calendarVariables?.left?.calendar[1][1].month()]}} {{ calendarVariables?.left?.calendar[1][1].format(\"\n                YYYY\")}}\n              </ng-container>\n            </th>\n            <ng-container\n              *ngIf=\"(!calendarVariables.left.maxDate || calendarVariables.left.maxDate.isAfter(calendarVariables.left.calendar.lastDay)) && (!linkedCalendars || singleDatePicker )\">\n              <th scope=\"col\" class=\"next available\" (click)=\"clickNext(sideEnum.left)\">\n              </th>\n            </ng-container>\n            <ng-container\n              *ngIf=\"!((!calendarVariables.left.maxDate || calendarVariables.left.maxDate.isAfter(calendarVariables.left.calendar.lastDay)) && (!linkedCalendars || singleDatePicker ))\">\n              <th scope=\"col\"></th>\n            </ng-container>\n          </tr>\n          <tr class='week-days'>\n            <th scope=\"col\" *ngIf=\"showWeekNumbers || showISOWeekNumbers\" class=\"week\"><span>{{this.locale.weekLabel}}</span></th>\n            <th scope=\"col\" *ngFor=\"let dayofweek of adjustedDaysOfWeek\"><span>{{dayofweek}}</span></th>\n          </tr>\n        </thead>\n        <tbody class=\"drp-animate\">\n          <tr *ngFor=\"let row of calendarVariables.left.calRows\" [class]=\"calendarVariables.left.classes[row].classList\">\n            <!-- add week number -->\n            <td class=\"week\" *ngIf=\"showWeekNumbers\">\n              <span>{{calendarVariables.left.calendar[row][0].week()}}</span>\n            </td>\n            <td class=\"week\" *ngIf=\"showISOWeekNumbers\">\n              <span>{{calendarVariables.left.calendar[row][0].isoWeek()}}</span>\n            </td>\n            <!-- cal -->\n            <td *ngFor=\"let col of calendarVariables.left.calCols\" [class]=\"calendarVariables.left.classes[row][col]\"\n              (click)=\"clickDate($event, sideEnum.left, row, col)\">\n              <span>{{calendarVariables.left.calendar[row][col].date()}}</span>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n    <div class=\"calendar-time\" *ngIf=\"timePicker\">\n      <div class=\"select\">\n        <select class=\"hourselect select-item\" [disabled]=\"!endDate\" [(ngModel)]=\"timepickerVariables.left.selectedHour\"\n          (ngModelChange)=\"timeChanged($event, sideEnum.left)\">\n          <option *ngFor=\"let i of timepickerVariables.left.hours\" [value]=\"i\" [disabled]=\"timepickerVariables.left.disabledHours.indexOf(i) > -1\">\n            {{i}}</option>\n        </select>\n      </div>\n      <div class=\"select\">\n        <select class=\"select-item minuteselect\" [disabled]=\"!endDate\" [(ngModel)]=\"timepickerVariables.left.selectedMinute\"\n          (ngModelChange)=\"timeChanged($event, sideEnum.left)\">\n          <option *ngFor=\"let i of timepickerVariables.left.minutes; let index = index;\" [value]=\"i\"\n            [disabled]=\"timepickerVariables.left.disabledMinutes.indexOf(i) > -1\">{{timepickerVariables.left.minutesLabel[index]}}</option>\n        </select>\n        <span class=\"select-highlight\"></span>\n        <span class=\"select-bar\"></span>\n      </div>\n      <div class=\"select\">\n        <select class=\"select-item secondselect\" *ngIf=\"timePickerSeconds\" [disabled]=\"!endDate\" [(ngModel)]=\"timepickerVariables.left.selectedSecond\"\n          (ngModelChange)=\"timeChanged($event, sideEnum.left)\">\n          <option *ngFor=\"let i of timepickerVariables.left.seconds; let index = index;\" [value]=\"i\"\n            [disabled]=\"timepickerVariables.left.disabledSeconds.indexOf(i) > -1\">{{timepickerVariables.left.secondsLabel[index]}}</option>\n        </select>\n        <span class=\"select-highlight\"></span>\n        <span class=\"select-bar\"></span>\n      </div>\n      <div class=\"select\">\n        <select class=\"select-item ampmselect\" *ngIf=\"!timePicker24Hour\" [(ngModel)]=\"timepickerVariables.left.ampmModel\"\n          (ngModelChange)=\"timeChanged($event, sideEnum.left)\">\n          <option value=\"AM\" [disabled]=\"timepickerVariables.left.amDisabled\">AM</option>\n          <option value=\"PM\" [disabled]=\"timepickerVariables.left.pmDisabled\">PM</option>\n        </select>\n        <span class=\"select-highlight\"></span>\n        <span class=\"select-bar\"></span>\n      </div>\n    </div>\n  </div>\n  <div class=\"calendar right\" *ngIf=\"showCalInRanges && !singleDatePicker\">\n    <div class=\"calendar-table\">\n      <table class=\"table-condensed\" *ngIf=\"calendarVariables\" aria-describedby=\"calendar days table\">\n        <thead>\n          <tr>\n            <th scope=\"col\" *ngIf=\"showWeekNumbers || showISOWeekNumbers\"></th>\n            <ng-container\n              *ngIf=\"(!calendarVariables.right.minDate || calendarVariables.right.minDate.isBefore(calendarVariables.right.calendar.firstDay)) && (!this.linkedCalendars)\">\n              <th (click)=\"clickPrev(sideEnum.right)\" class=\"prev available\">\n              </th>\n            </ng-container>\n            <ng-container\n              *ngIf=\"!((!calendarVariables.right.minDate || calendarVariables.right.minDate.isBefore(calendarVariables.right.calendar.firstDay)) && (!this.linkedCalendars))\">\n              <th scope=\"col\"></th>\n            </ng-container>\n            <th scope=\"col\" colspan=\"5\" class=\"month\">\n              <ng-container *ngIf=\"showDropdowns && calendarVariables.right.dropdowns\">\n                <div class=\"dropdowns\">\n                  {{this.locale.monthNames[calendarVariables?.right?.calendar[1][1].month()]}}\n                  <select class=\"monthselect\" (change)=\"monthChanged($event, sideEnum.right)\">\n                    <option\n                      [disabled]=\"(calendarVariables.right.dropdowns.inMinYear && m < calendarVariables.right.minDate.month()) || (calendarVariables.right.dropdowns.inMaxYear && m > calendarVariables.right.maxDate.month())\"\n                      *ngFor=\"let m of calendarVariables.right.dropdowns.monthArrays\" [value]=\"m\"\n                      [selected]=\"calendarVariables.right.dropdowns.currentMonth == m\">\n                      {{locale.monthNames[m]}}\n                    </option>\n                  </select>\n                </div>\n                <div class=\"dropdowns\">\n                  {{ calendarVariables?.right?.calendar[1][1].format(\" YYYY\")}}\n                  <select class=\"yearselect\" (change)=\"yearChanged($event, sideEnum.right)\">\n                    <option *ngFor=\"let y of calendarVariables.right.dropdowns.yearArrays\"\n                      [selected]=\"y === calendarVariables.right.dropdowns.currentYear\">\n                      {{y}}\n                    </option>\n                  </select>\n                </div>\n              </ng-container>\n              <ng-container *ngIf=\"!showDropdowns || !calendarVariables.right.dropdowns\">\n                {{this.locale.monthNames[calendarVariables?.right?.calendar[1][1].month()]}} {{ calendarVariables?.right?.calendar[1][1].format(\"\n                YYYY\")}}\n              </ng-container>\n            </th>\n            <ng-container\n              *ngIf=\"!calendarVariables.right.maxDate || calendarVariables.right.maxDate.isAfter(calendarVariables.right.calendar.lastDay) && (!linkedCalendars || singleDatePicker || true)\">\n              <th scope=\"col\" class=\"next available\" (click)=\"clickNext(sideEnum.right)\">\n              </th>\n            </ng-container>\n            <ng-container\n              *ngIf=\"!(!calendarVariables.right.maxDate || calendarVariables.right.maxDate.isAfter(calendarVariables.right.calendar.lastDay) && (!linkedCalendars || singleDatePicker || true))\">\n              <th scope=\"col\"></th>\n            </ng-container>\n          </tr>\n\n          <tr>\n            <th scope=\"col\" *ngIf=\"showWeekNumbers || showISOWeekNumbers\" class=\"week\"><span>{{this.locale.weekLabel}}</span></th>\n            <th scope=\"col\" *ngFor=\"let dayofweek of locale.daysOfWeek\"><span>{{dayofweek}}</span></th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr *ngFor=\"let row of calendarVariables.right.calRows\" [class]=\"calendarVariables.right.classes[row].classList\">\n            <td class=\"week\" *ngIf=\"showWeekNumbers\">\n              <span>{{calendarVariables.right.calendar[row][0].week()}}</span>\n            </td>\n            <td class=\"week\" *ngIf=\"showISOWeekNumbers\">\n              <span>{{calendarVariables.right.calendar[row][0].isoWeek()}}</span>\n            </td>\n            <td *ngFor=\"let col of calendarVariables.right.calCols\" [class]=\"calendarVariables.right.classes[row][col]\"\n              (click)=\"clickDate($event, sideEnum.right, row, col)\">\n              <span>{{calendarVariables.right.calendar[row][col].date()}}</span>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n    <div class=\"calendar-time\" *ngIf=\"timePicker\">\n      <div class=\"select\">\n        <select class=\"select-item hourselect\" [disabled]=\"!endDate\" [(ngModel)]=\"timepickerVariables.right.selectedHour\"\n          (ngModelChange)=\"timeChanged($event, sideEnum.right)\">\n          <option *ngFor=\"let i of timepickerVariables.right.hours\" [value]=\"i\" [disabled]=\"timepickerVariables.right.disabledHours.indexOf(i) > -1\">\n            {{i}}</option>\n        </select>\n        <span class=\"select-highlight\"></span>\n        <span class=\"select-bar\"></span>\n      </div>\n      <div class=\"select\">\n        <select class=\"select-item minuteselect\" [disabled]=\"!endDate\" [(ngModel)]=\"timepickerVariables.right.selectedMinute\"\n          (ngModelChange)=\"timeChanged($event, sideEnum.right)\">\n          <option *ngFor=\"let i of timepickerVariables.right.minutes; let index = index;\" [value]=\"i\"\n            [disabled]=\"timepickerVariables.right.disabledMinutes.indexOf(i) > -1\">{{timepickerVariables.right.minutesLabel[index]}}</option>\n        </select>\n        <span class=\"select-highlight\"></span>\n        <span class=\"select-bar\"></span>\n      </div>\n      <div class=\"select\">\n        <select *ngIf=\"timePickerSeconds\" class=\"select-item secondselect\" [disabled]=\"!endDate\"\n          [(ngModel)]=\"timepickerVariables.right.selectedSecond\" (ngModelChange)=\"timeChanged($event, sideEnum.right)\">\n          <option *ngFor=\"let i of timepickerVariables.right.seconds; let index = index;\" [value]=\"i\"\n            [disabled]=\"timepickerVariables.right.disabledSeconds.indexOf(i) > -1\">{{timepickerVariables.right.secondsLabel[index]}}</option>\n        </select>\n        <span class=\"select-highlight\"></span>\n        <span class=\"select-bar\"></span>\n      </div>\n      <div class=\"select\">\n        <select *ngIf=\"!timePicker24Hour\" class=\"select-item ampmselect\" [(ngModel)]=\"timepickerVariables.right.ampmModel\"\n          (ngModelChange)=\"timeChanged($event, sideEnum.right)\">\n          <option value=\"AM\" [disabled]=\"timepickerVariables.right.amDisabled\">AM</option>\n          <option value=\"PM\" [disabled]=\"timepickerVariables.right.pmDisabled\">PM</option>\n        </select>\n        <span class=\"select-highlight\"></span>\n        <span class=\"select-bar\"></span>\n      </div>\n    </div>\n  </div>\n  <div class=\"buttons\" *ngIf=\"!autoApply && ( !rangesArray.length || (showCalInRanges && !singleDatePicker))\">\n    <div class=\"buttons_input\">\n      <button *ngIf=\"showClearButton\" class=\"mat-primary mat-stroked-button clear\" type=\"button\" (click)=\"clear()\" title=\"clear the date\">\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30\" height=\"30\" viewBox=\"0 -5 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      <button class=\"mat-primary mat-stroked-button\" *ngIf=\"showCancel\" type=\"button\" (click)=\"clickCancel($event)\">{{locale.cancelLabel}}</button>\n      <button class=\"mat-primary mat-stroked-button\" [disabled]=\"applyBtn.disabled\" type=\"button\"\n        (click)=\"clickApply($event)\">{{locale.applyLabel}}</button>\n    </div>\n  </div>\n</div>\n","import { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayConfig, OverlayRef, PositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ChangeDetectorRef, ComponentRef, Directive, ElementRef, EventEmitter, forwardRef, Input, KeyValueDiffer, KeyValueDiffers, NgZone, Output, ViewContainerRef, OnDestroy } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport moment from 'moment'\nimport { merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { DaterangepickerComponent } from './o-daterange-picker.component';\n\n@Directive({\n  selector: 'input[o-daterange-input]',\n  host: {\n    '(keyup.esc)': 'close()',\n    '(blur)': 'onBlur()'\n  },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => ODaterangepickerDirective), multi: true\n    }\n  ]\n})\nexport class ODaterangepickerDirective implements OnDestroy {\n\n  private _onChange = Function.prototype;\n  private _onTouched = Function.prototype;\n  public _validatorChange = Function.prototype;\n  private _value: any;\n\n  public localeDiffer: KeyValueDiffer<string, any>;\n\n  @Input()\n  minDate: moment.Moment = null;\n  @Input()\n  maxDate: moment.Moment = null;\n  @Input()\n  showCustomRangeLabel: boolean;\n  @Input()\n  linkedCalendars: boolean;\n  @Input()\n  dateLimit: number = null;\n  @Input()\n  singleDatePicker: boolean;\n  @Input()\n  showWeekNumbers: boolean;\n  @Input()\n  showISOWeekNumbers: boolean;\n  @Input()\n  showDropdowns: boolean;\n  @Input()\n  isInvalidDate: () => boolean;\n  @Input()\n  isCustomDate: () => boolean;\n  // @Input()\n  // showClearButton: boolean;\n\n\n  @Input()\n  opens: string;\n  @Input()\n  drops: string;\n  firstMonthDayClass: string;\n  @Input()\n  lastMonthDayClass: string;\n  @Input()\n  emptyWeekRowClass: string;\n  @Input()\n  firstDayOfNextMonthClass: string;\n  @Input()\n  lastDayOfPreviousMonthClass: string;\n  @Input()\n  keepCalendarOpeningWithRange: boolean;\n  @Input()\n  showRangeLabelOnInput: boolean;\n  @Input()\n  showCancel: boolean = false;\n  // timepicker variables\n  @Input()\n  timePicker: boolean = false;\n  @Input()\n  showRanges: boolean = false;\n  @Input()\n  timePicker24Hour: boolean = false;\n  @Input()\n  timePickerIncrement: number = 1;\n  @Input()\n  timePickerSeconds: boolean = false;\n  _locale: any;\n  _separator: string;\n\n  @Input() set separator(value) {\n    if (value !== null) {\n      this._separator = value;\n      if (this._locale) {\n        this._locale.separator = value;\n      }\n    }\n  }\n\n  @Input() set locale(value) {\n    if (value !== null) {\n      this._locale = value;\n      if (this._separator) {\n        this._locale.separator = this._separator;\n      }\n    }\n  }\n  get locale(): any {\n    return this._locale;\n  }\n\n  @Input()\n  private _endKey: string = 'endDate';\n  private _startKey: string = 'startDate';\n\n  public ranges: any = {\n    'DATERANGE.today': [moment(), moment()],\n    'DATERANGE.yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n    'DATERANGE.last_7days': [moment().subtract(6, 'days'), moment()],\n    'DATERANGE.last_30days': [moment().subtract(29, 'days'), moment()],\n    'DATERANGE.this_month': [moment().startOf('month'), moment().endOf('month')],\n    'DATERANGE.last_month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],\n    'DATERANGE.this_year': [moment().startOf('year'), moment().endOf('year')]\n  };\n\n  @Input()\n  oTouchUi: boolean = false;\n\n  @Input() set startKey(value) {\n    if (value && value !== null) {\n      this._startKey = value;\n    } else {\n      this._startKey = 'startDate';\n    }\n  }\n  get startKey(): string {\n    return this._startKey;\n  }\n  @Input() set endKey(value) {\n    if (value && value !== null) {\n      this._endKey = value;\n    } else {\n      this._endKey = 'endDate';\n    }\n  }\n  get endKey(): string {\n    return this._endKey;\n  }\n  notForChangesProperty: Array<string> = [\n    'locale',\n    'endKey',\n    'startKey'\n  ];\n\n  get value() {\n    return this._value || null;\n  }\n  set value(val) {\n    this._value = val;\n    this._onChange(val);\n    this._changeDetectorRef.markForCheck();\n  }\n  @Output() onChange: EventEmitter<object> = new EventEmitter();\n  @Output() rangeClicked: EventEmitter<object> = new EventEmitter();\n  @Output() datesUpdated: EventEmitter<object> = new EventEmitter();\n\n  private _popupComponentRef: ComponentRef<DaterangepickerComponent> | null;\n  private _calendarPortal: ComponentPortal<DaterangepickerComponent>;\n  _popupRef: OverlayRef;\n  private _dialogRef: MatDialogRef<DaterangepickerComponent> | null;\n\n  constructor(\n    private _dialog: MatDialog,\n    private _ngZone: NgZone,\n    private _overlay: Overlay,\n    public _viewContainerRef: ViewContainerRef,\n    public _changeDetectorRef: ChangeDetectorRef,\n    public _el: ElementRef,\n    private differs: KeyValueDiffers,\n    private scrollStrategy: ScrollStrategyOptions\n  ) {\n    this.drops = 'down';\n    this.opens = 'right';\n  }\n\n  initializeListeners(instance) {\n    instance.rangeClicked.asObservable().subscribe((range: any) => {\n      this.rangeClicked.emit(range);\n    });\n    instance.datesUpdated.asObservable().subscribe((range: any) => {\n      this.datesUpdated.emit(range);\n    });\n    instance.choosedDate.asObservable().subscribe((change: any) => {\n      if (change) {\n        const value = {};\n        value[this._startKey] = change.startDate;\n        value[this._endKey] = change.endDate;\n        this.value = value;\n        this.onChange.emit(value);\n        if (typeof change.chosenLabel === 'string') {\n          this._el.nativeElement.value = change.chosenLabel;\n        }\n      }\n    });\n    instance.firstMonthDayClass = this.firstMonthDayClass;\n    instance.lastMonthDayClass = this.lastMonthDayClass;\n    instance.emptyWeekRowClass = this.emptyWeekRowClass;\n    instance.firstDayOfNextMonthClass = this.firstDayOfNextMonthClass;\n    instance.lastDayOfPreviousMonthClass = this.lastDayOfPreviousMonthClass;\n    instance.drops = this.drops;\n    instance.opens = this.opens;\n    instance.minDate = this.minDate;\n    instance.maxDate = this.maxDate;\n    instance.locale = this.locale;\n    instance.showWeekNumbers = this.showWeekNumbers;\n    instance.singleDatePicker = this.singleDatePicker;\n\n    if (this.showRanges) {\n      instance.ranges = this.ranges;\n      instance.keepCalendarOpeningWithRange = true;\n      instance.alwaysShowCalendars = true;\n    }\n    this.localeDiffer = this.differs.find(this.locale).create();\n  }\n\n  // ngOnChanges(changes: SimpleChanges): void  {\n  //   for (let change in changes) {\n  //     if (changes.hasOwnProperty(change)) {\n  //       if (this.notForChangesProperty.indexOf(change) === -1) {\n  //         this.picker[change] = changes[change].currentValue;\n  //       }\n  //     }\n  //   }\n  // }\n\n  // ngDoCheck() {\n  //   if (this.localeDiffer) {\n  //     const changes = this.localeDiffer.diff(this.locale);\n  //     if (changes) {\n  //       this.picker.updateLocale(this.locale);\n  //     }\n  //   }\n  // }\n\n  onBlur() {\n    this._onTouched();\n  }\n\n  open() {\n    if (!this.oTouchUi) {\n      this.openAsPopup();\n\n    } else {\n      this.openAsDialog();\n    }\n  }\n\n  ngOnDestroy() {\n    this.close();\n\n    if (this._popupRef) {\n      this._popupRef.dispose();\n      this._popupComponentRef = null;\n    }\n  }\n\n  clear() {\n    this._popupComponentRef.instance.clear();\n  }\n\n  writeValue(value) {\n    this.setValue(value);\n  }\n  registerOnChange(fn) {\n    this._onChange = fn;\n  }\n  registerOnTouched(fn) {\n    this._onTouched = fn;\n  }\n\n  setValueInDateComponent(instance, val) {\n    if (val) {\n      if (val[this._startKey]) {\n        instance.setStartDate(val[this._startKey]);\n      }\n      if (val[this._endKey]) {\n        instance.setEndDate(val[this._endKey]);\n      }\n      instance.calculateChosenLabel();\n      if (instance.chosenLabel) {\n        this._el.nativeElement.value = instance.chosenLabel;\n      }\n    } else {\n      instance.clear();\n    }\n\n  }\n  private setValue(val: any) {\n    if (val) {\n      this.value = val;\n\n    }\n  }\n  /**\n   * Set position of the calendar\n   */\n  // setPosition() {\n  //   let style;\n  //   let containerTop;\n  //   const container = this.picker.pickerContainer.nativeElement;\n  //   const element = this._el.nativeElement;\n  //   if (this.drops && this.drops == 'up') {\n  //     containerTop = (element.offsetTop - container.clientHeight) + 'px';\n  //   } else {\n  //     containerTop = 'auto';\n  //   }\n  //   if (this.opens == 'left') {\n  //     style = {\n  //         top: containerTop,\n  //         left: (element.offsetLeft - container.clientWidth + element.clientWidth) + 'px',\n  //         right: 'auto'\n  //     };\n  //   } else if (this.opens == 'center') {\n  //       style = {\n  //         top: containerTop,\n  //         left: (element.offsetLeft  +  element.clientWidth / 2\n  //                 - container.clientWidth / 2) + 'px',\n  //         right: 'auto'\n  //       };\n  //   } else {\n  //       style = {\n  //         top: containerTop,\n  //         left: element.offsetLeft  + 'px',\n  //         right: 'auto'\n  //       }\n  //   }\n  //   if (style) {\n  //     this._renderer.setStyle(container, 'top', style.top);\n  //     this._renderer.setStyle(container, 'left', style.left);\n  //     this._renderer.setStyle(container, 'right', style.right);\n  //     this._renderer.setStyle(container, 'position', 'fixed');\n  //   }\n  // }\n  /**\n   * For click outside of the calendar's container\n   * @param event event object\n   * @param targetElement target element object\n   */\n  // @HostListener('document:click', ['$event', '$event.target'])\n  // outsideClick(event, targetElement: HTMLElement): void {\n  //     if (!targetElement) {\n  //       return;\n  //     }\n  //     if (targetElement.classList.contains('ngx-daterangepicker-action')) {\n  //       return;\n  //     }\n  //     const clickedInside = this._el.nativeElement.contains(targetElement);\n  //     if (!clickedInside) {\n  //        this.hide()\n  //     }\n  // }\n\n\n\n  /** */\n  public openAsPopup(): void {\n    if (!this._calendarPortal) {\n      this._calendarPortal = new ComponentPortal<DaterangepickerComponent>(DaterangepickerComponent,\n        this._viewContainerRef);\n    }\n\n    if (!this._popupRef) {\n      this._createPopup();\n    }\n\n\n    if (!this._popupRef.hasAttached()) {\n      this._popupComponentRef = this._popupRef.attach(this._calendarPortal);\n      this.initializeListeners(this._popupComponentRef.instance);\n      if (this.value) {\n        this.setValueInDateComponent(this._popupComponentRef.instance, this.value);\n      }\n\n      // Update the position once the calendar has rendered.\n      this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n        this._popupRef.updatePosition();\n      });\n    }\n  }\n  /** Create the popup. */\n  private _createPopup(): void {\n    const overlayConfig = new OverlayConfig({\n      positionStrategy: this._createPopupPositionStrategy(),\n      hasBackdrop: true,\n      backdropClass: 'mat-overlay-transparent-backdrop',\n      direction: 'ltr',\n      panelClass: 'o-daterangepicker-popup',\n      scrollStrategy: this.scrollStrategy.close()\n    });\n\n    this._popupRef = this._overlay.create(overlayConfig);\n    this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n    merge(\n      this._popupRef.backdropClick(),\n      this._popupRef.detachments(),\n      this._popupRef.keydownEvents().pipe(filter(event => {\n        // Closing on alt + up is only valid when there's an input associated with the datepicker.\n        return event.keyCode === ESCAPE ||\n          (this._el && event.altKey && event.keyCode === UP_ARROW);\n      }))\n    ).subscribe(() => this.close());\n  }\n\n  private _createPopupPositionStrategy(): PositionStrategy {\n    return this._overlay.position()\n      .flexibleConnectedTo(this._el)\n      // .withTransformOriginOn('.mat-datepicker-content')\n      // .withFlexibleDimensions(false)\n      .withViewportMargin(8)\n      // .withLockedPosition()\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top'\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom'\n        },\n        {\n          originX: 'end',\n          originY: 'bottom',\n          overlayX: 'end',\n          overlayY: 'top'\n        },\n        {\n          originX: 'end',\n          originY: 'top',\n          overlayX: 'end',\n          overlayY: 'bottom'\n        }\n      ]);\n  }\n\n\n  /** Open the calendar as a dialog. */\n  public openAsDialog(): void {\n    // Usually this would be handled by `open` which ensures that we can only have one overlay\n    // open at a time, however since we reset the variables in async handlers some overlays\n    // may slip through if the user opens and closes multiple times in quick succession (e.g.\n    // by holding down the enter key).\n    if (this._dialogRef) {\n      this._dialogRef.close();\n    }\n\n    this._dialogRef = this._dialog.open<DaterangepickerComponent>(DaterangepickerComponent, {\n      direction: 'ltr',\n      viewContainerRef: this._viewContainerRef,\n      panelClass: 'mat-datepicker-dialog',\n    });\n\n    this.initializeListeners(this._dialogRef.componentInstance);\n    if (this.value) {\n      this.setValueInDateComponent(this._dialogRef.componentInstance, this.value);\n    }\n    this._dialogRef.afterClosed().subscribe(() => this.close());\n    // this._dialogRef.componentInstance. = this;\n\n  }\n\n  close(): void {\n    if (this._popupRef && this._popupRef.hasAttached()) {\n      this._popupRef.detach();\n    }\n\n    if (this._dialogRef) {\n      this._dialogRef.close();\n    }\n\n    if (this._calendarPortal && this._calendarPortal.isAttached) {\n      this._calendarPortal.detach();\n    }\n  }\n}\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Component, ElementRef, forwardRef, Inject, Injector, OnDestroy, OnInit, Optional, ViewChild } from '@angular/core';\nimport { UntypedFormControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport moment from 'moment';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { MomentService } from '../../../services/moment.service';\nimport { OTranslateService } from '../../../services/translate/o-translate.service';\nimport { FormValueOptions } from '../../../types/form-value-options.type';\nimport { ODateValueType } from '../../../types/o-date-value.type';\nimport { Util } from '../../../util/util';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { DEFAULT_OUTPUTS_O_FORM_DATA_COMPONENT, OFormDataComponent } from '../../o-form-data-component.class';\nimport { OValueChangeEvent } from '../../o-value-change-event.class';\nimport { DEFAULT_INPUTS_O_DATE_INPUT } from '../date-input/o-date-input.component';\nimport { ODaterangepickerDirective } from './o-daterange-input.directive';\nimport { DaterangepickerComponent } from './o-daterange-picker.component';\n\nexport const DEFAULT_OUTPUTS_O_DATERANGE_LEGACY_INPUT = [\n  ...DEFAULT_OUTPUTS_O_FORM_DATA_COMPONENT\n];\n\nexport const DEFAULT_INPUTS_O_DATERANGE_LEGACY_INPUT = [\n  'separator',\n  'showWeekNumbers:show-week-numbers',\n  'showRanges:show-ranges',\n  'olocale:locale',\n  'startKey',\n  'endKey',\n  'valueType: value-type',\n  'mode',\n  ...DEFAULT_INPUTS_O_DATE_INPUT\n];\n/**\n * @deprecated Use `ODateRangeInputComponent` instead. This component will be removed in a future version.\n */\n@Component({\n  selector: 'o-daterange-legacy-input',\n  templateUrl: './o-daterange-input.component.html',\n  outputs: DEFAULT_OUTPUTS_O_DATERANGE_LEGACY_INPUT,\n  inputs: DEFAULT_INPUTS_O_DATERANGE_LEGACY_INPUT\n})\nexport class ODateRangeLegacyInputComponent extends OFormDataComponent implements OnDestroy, OnInit {\n\n  @ViewChild(ODaterangepickerDirective, { static: true }) pickerDirective: ODaterangepickerDirective;\n  picker!: DaterangepickerComponent;\n\n  @ViewChild('matInputRef', { read: ElementRef, static: true })\n  private matInputRef!: ElementRef;\n\n  @BooleanInputConverter()\n  public textInputEnabled: boolean = true;\n\n  @BooleanInputConverter()\n  public showWeekNumbers: boolean = false;\n\n  @BooleanInputConverter()\n  public oTouchUi: boolean = false;\n\n  @BooleanInputConverter()\n  public showRanges: boolean = false;\n\n  protected _oMinDate: moment.Moment;\n\n  public mode: 'mobile' | 'desktop' | 'auto' = 'auto';\n\n  get oMinDate() {\n    return this._oMinDate;\n  }\n  set oMinDate(value) {\n    this._oMinDate = moment(value, this.oformat);\n  }\n\n  protected _oMaxDate: moment.Moment;\n  get oMaxDate() {\n    return this._oMaxDate;\n  }\n  set oMaxDate(value) {\n    this._oMaxDate = moment(value, this.oformat);\n  }\n\n  protected _startKey: string = 'startDate';\n  get startKey() {\n    return this._startKey;\n  }\n  set startKey(value) {\n    this._startKey = value;\n  }\n\n  protected _endKey: string = 'endDate';\n  get endKey() {\n    return this._endKey;\n  }\n  set endKey(value) {\n    this._endKey = value;\n  }\n\n  protected _valueType: ODateValueType = 'timestamp';\n\n  protected _separator = ' - ';\n  get separator() {\n    return this._separator;\n  }\n\n  set separator(value) {\n    this._separator = value;\n    if (this.getFormControl()?.value) {\n      this.updateElement();\n    }\n  }\n\n  get showClearButton(): boolean {\n    return this.clearButton && !this.isReadOnly && this.enabled && this.matInputRef.nativeElement.value;\n  }\n\n  get localeOptions() {\n    return this._localeOptions;\n  }\n\n  isMobileMode(): boolean {\n    return this.mode === 'mobile' || (this.mode === 'auto' && this.breakpointObserver.isMatched(Breakpoints.Handset))\n  }\n\n  isDesktopMode(): boolean {\n    return this.mode === 'desktop' || (this.mode === 'auto' && !this.breakpointObserver.isMatched(Breakpoints.Handset))\n  }\n\n\n  public oformat: string = 'L';\n  protected _localeOptions: any;\n  protected olocale: string;\n\n  private readonly momentSrv: MomentService;\n  private readonly oTranslate: OTranslateService;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector,\n    protected breakpointObserver: BreakpointObserver\n  ) {\n    super(form, elRef, injector);\n    this.oTranslate = this.injector.get(OTranslateService);\n    this.momentSrv = this.injector.get(MomentService);\n    if (!this.olocale) {\n      this.olocale = this.momentSrv.getLocale();\n      moment.locale(this.olocale);\n    }\n    this._localeOptions = {\n      direction: 'ltr',\n      separator: ' - ',\n      weekLabel: this.oTranslate.get('DATERANGE.W'),\n      applyLabel: this.oTranslate.get('DATERANGE.APPLYLABEL'),\n      cancelLabel: this.oTranslate.get('CANCEL'),\n      customRangeLabel: 'Custom range',\n      daysOfWeek: moment.localeData().weekdaysMin(),\n      monthNames: moment.localeData().monthsShort(),\n      firstDay: moment.localeData().firstDayOfWeek(),\n      format: 'L'\n    };\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n    if (this.oformat) {\n      this._localeOptions.format = this.oformat;\n    }\n  }\n\n  public openPicker() {\n    this.pickerDirective.open();\n  }\n\n  public onChangeEvent(event: any): void {\n    let objectValue;\n    if (event instanceof Event) {\n      const value = (event.target as HTMLInputElement).value;\n      if (value !== '') {\n        objectValue = this.getDateRangeToString(value);\n      }\n    } else {\n      objectValue = event;\n    }\n\n    this.setValue(objectValue, {\n      changeType: OValueChangeEvent.USER_CHANGE,\n      emitEvent: false,\n      emitModelToViewChange: false\n    });\n\n  }\n\n  public setValue(val: any, options: FormValueOptions = {}, setDirty: boolean = false) {\n    super.setValue(val, options, setDirty);\n    this.updateElement();\n  }\n\n  public onClickClearValue(e: Event): void {\n    super.onClickClearValue(e);\n    this.pickerDirective.value = undefined;\n    this.pickerDirective.datesUpdated.emit();\n  }\n\n  datesUpdated(range) {\n    this.pickerDirective.close();\n    this.setValue(range,\n      {\n        changeType: OValueChangeEvent.USER_CHANGE,\n        emitEvent: false,\n        emitModelToViewChange: false\n      });\n  }\n\n  public setData(newValue: any): void {\n    super.setData(newValue);\n    this.pickerDirective.datesUpdated.emit(newValue);\n    this.updateElement();\n  }\n\n  updateElement() {\n    let chosenLabel: any;\n    if (Util.isDefined(this.value) && Util.isDefined(this.value.value) && !this.isObjectDataRangeNull(this.value)) {\n      if (this.value.value[this.pickerDirective.startKey] && this.value.value[this.pickerDirective.endKey]) {\n        this.value.value[this.pickerDirective.startKey] = this.ensureDateRangeValue(this.value.value[this.pickerDirective.startKey], this._valueType);\n        this.value.value[this.pickerDirective.endKey] = this.ensureDateRangeValue(this.value.value[this.pickerDirective.endKey], this._valueType);\n        chosenLabel = this.value.value[this.pickerDirective.startKey].format(this.oformat) +\n          this.separator + this.value.value[this.pickerDirective.endKey].format(this.oformat);\n      } else {\n        chosenLabel = null;\n      }\n    } else {\n      chosenLabel = null;\n      this.pickerDirective.value = undefined;\n    }\n    this.pickerDirective._el.nativeElement.value = chosenLabel;\n  }\n\n\n  getDateRangeToString(valueToString: string) {\n    const value = {};\n    const range = valueToString.split(this.separator);\n    value[this._startKey] = moment(range[0].trim(), this.oformat);\n    value[this._endKey] = moment(range[1].trim(), this.oformat);\n    return value;\n  }\n\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n\n    validators.push(this.rangeDateValidator.bind(this));\n    if (Util.isDefined(this._oMinDate)) {\n      validators.push(this.minDateValidator.bind(this));\n    }\n    if (Util.isDefined(this._oMaxDate)) {\n      validators.push(this.maxDateValidator.bind(this));\n    }\n\n    validators.push(this.parseDateValidator.bind(this));\n    return validators;\n  }\n\n  isObjectDataRangeNull(objectValue): boolean {\n    return objectValue !== null && objectValue.value !== null &&\n      !Util.isDefined(objectValue.value[this.pickerDirective.startKey]) &&\n      !Util.isDefined(objectValue.value[this.pickerDirective.endKey]);\n  }\n\n\n  protected rangeDateValidator(control: UntypedFormControl): ValidationErrors {\n\n    if ((control.value instanceof Object)\n      && !this.isObjectDataRangeNull(control) && control.value[this._endKey].isSameOrBefore(control.value[this._startKey])) {\n      return {\n        dateRange: true\n      };\n    }\n    return {};\n  }\n\n  protected minDateValidator(control: UntypedFormControl): ValidationErrors {\n    const mindate = moment(this._oMinDate);\n    if ((control.value instanceof Object)\n      && !this.isObjectDataRangeNull(control) && control.value[this._startKey].isBefore(mindate)) {\n      return {\n        dateRangeMin: {\n          dateMin: mindate.format(this.oformat)\n        }\n      };\n    }\n    return {};\n  }\n\n  protected maxDateValidator(control: UntypedFormControl): ValidationErrors {\n    const maxdate = moment(this._oMaxDate);\n    if ((control.value instanceof Object)\n      && !this.isObjectDataRangeNull(control) && control.value[this._endKey].isAfter(maxdate)) {\n      return {\n        dateRangeMax: {\n          dateMax: maxdate.format(this.oformat)\n        }\n      };\n    }\n    return {};\n  }\n  protected parseDateValidator(control: UntypedFormControl): ValidationErrors {\n    if ((control.value instanceof Object)\n      && !this.isObjectDataRangeNull(control)\n      && ((control.value[this._startKey] && !control.value[this._startKey].isValid())\n        || (control.value[this._endKey] && !control.value[this._endKey].isValid()))) {\n      return {\n        dateRangeParse: {\n          format: this.oformat + this._localeOptions.separator + this.oformat\n        }\n      };\n    }\n    return {};\n  }\n\n  ensureDateRangeValue(val: any, valueType: any): void {\n    if (!Util.isDefined(val)) {\n      return val;\n    }\n    let result = val;\n    if (!moment.isMoment(val)) {\n      switch (valueType) {\n        case 'string':\n        case 'date':\n          if ((val instanceof Date) || typeof val === 'string') {\n            const dateString = moment(val).format('YYYY-MM-DDThh:mm') + 'Z';\n            const q = moment(dateString);\n            if (q.isValid()) {\n              result = q;\n            } else {\n              result = undefined;\n            }\n          } else {\n            result = undefined;\n          }\n          break;\n        case 'timestamp':\n          if (typeof val === 'number') {\n            const dateString = moment.unix(val).format('YYYY-MM-DDThh:mm') + 'Z';\n            const t = moment(dateString);\n            if (t.isValid()) {\n              result = t;\n            } else {\n              result = undefined;\n            }\n          } else {\n            result = val;\n          }\n          break;\n        case 'iso-8601':\n          const m = moment(val);\n          if (m.isValid()) {\n            result = m;\n          } else {\n            result = undefined;\n          }\n          break;\n        default:\n          break;\n      }\n    }\n    if (!Util.isDefined(result)) {\n      console.warn(`ODateRangeInputComponent value (${val}) is not consistent with value-type (${valueType})`);\n    }\n    return result;\n  }\n\n  set valueType(val: any) {\n    this._valueType = Util.convertToODateValueType(val);\n  }\n\n  get valueType(): any {\n    return this._valueType;\n  }\n\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n  [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n\n  <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n    class=\"icon-field\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <input #matInputRef matInput type=\"text\" o-daterange-input [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [required]=\"isRequired\"\n      [placeholder]=\"placeHolder\" [readonly]=\"isReadOnly || !textInputEnabled\" showDropdowns=\"true\" showCancel=\"true\" [showRanges]=\"showRanges\"\n      (datesUpdated)=\"datesUpdated($event)\" [oTouchUi]=\"oTouchUi\" [minDate]=\"oMinDate\" [maxDate]=\"oMaxDate\" (focus)=\"innerOnFocus($event)\"\n      (blur)=\"innerOnBlur($event)\" (change)=\"onChangeEvent($event)\" [locale]=\"localeOptions\" [separator]=\"separator\" [startKey]=\"startKey\"\n      [endKey]=\"endKey\" [showWeekNumbers]=\"showWeekNumbers\" [singleDatePicker]=\"isMobileMode()\">\n    <button type=\"button\" matSuffix mat-icon-button (click)=\"openPicker()\" [disabled]=\"isReadOnly || !enabled\">\n      <mat-icon>today</mat-icon>\n    </button>\n\n    <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\" [disabled]=\"isReadOnly || !enabled\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\n\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('dateRange')\">\n      {{ 'FORM_VALIDATION.DATERANGE_INVALID' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('dateRangeParse')\">\n      {{ 'FORM_VALIDATION.DATE_PARSE' | oTranslate }} : {{ getErrorValue('dateRangeParse', 'format') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('dateRangeMin')\">\n      {{ 'FORM_VALIDATION.DATERANGE_MIN' | oTranslate }} : {{ getErrorValue('dateRangeMin', 'dateMin') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('dateRangeMax')\">\n      {{ 'FORM_VALIDATION.DATERANGE_MAX' | oTranslate }} : {{ getErrorValue('dateRangeMax', 'dateMax') }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { ODateRangeLegacyInputComponent } from './o-daterange-input.component';\nimport { ODaterangepickerDirective } from './o-daterange-input.directive';\nimport { DaterangepickerComponent } from './o-daterange-picker.component';\n\n@NgModule({\n    declarations: [DaterangepickerComponent, ODateRangeLegacyInputComponent, ODaterangepickerDirective],\n    imports: [CommonModule, OSharedModule],\n    exports: [ODateRangeLegacyInputComponent]\n})\nexport class ODateRangeLegacyInputModule { }\n","import { UntypedFormControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { Util } from '../util/util';\nimport * as lpn from 'google-libphonenumber';\n\nconst EMAIL_REGEXP = /^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/;\n\n// NIF Regular Expressions\nconst DNI_PATTERN = '^(([0-9]{8})([-]?)([a-zA-Z]{1}))$';\nconst NIE_PATTERN = '^(([x-zX-Z]{1})([-]?)([0-9]{7})([-]?)([a-zA-Z]{1}))$';\nconst DNI_CHECK = 'TRWAGMYFPDXBNJZSQVHLCKET';\nconst NUMBERS = '0123456789';\nexport const TWELVE_HOUR_FORMAT_PATTERN = '^(([0-9]|([01]?[0-9])):([0-9]|([0-5][0-9])) *([AaPp][Mm])*)$';\nexport const TWENTY_FOUR_HOUR_FORMAT_PATTERN = '^([0-9]|([01]?[0-9]|2[0-3])):[0-9]|([0-5][0-9])$';\n\nexport class OValidators {\n\n  /**\n   * Hour validator hh:mm am/pm format\n   */\n  public static twelveHourFormatValidator(control: UntypedFormControl): ValidationErrors {\n    const regExp = new RegExp(TWELVE_HOUR_FORMAT_PATTERN);\n    if (control.value && typeof control.value === 'string' && !regExp.test(control.value)) {\n      return { invalidFormatHour: true };\n    }\n    return {};\n  }\n\n  /**\n   * Hour validator HH:mm format\n   */\n  public static twentyFourHourFormatValidator(control: UntypedFormControl): ValidationErrors {\n    const regExp = new RegExp(TWENTY_FOUR_HOUR_FORMAT_PATTERN);\n    if (control.value && typeof control.value === 'string' && !regExp.test(control.value)) {\n      return { invalidFormatHour: true };\n    }\n    return {};\n  }\n\n  /**\n   * Email validator\n   */\n  public static emailValidator(control: UntypedFormControl): ValidationErrors {\n    if (control.value && control.value.length > 0 && !EMAIL_REGEXP.test(control.value)) {\n      return { invalidEmailAddress: true };\n    }\n    return {};\n  }\n\n  /**\n   * Phone validator\n   */\n  public static phoneValidator(control: UntypedFormControl, countryCode?: any): ValidationErrors {\n    if (!control || !control.value) {\n      return {};\n    }\n    const phoneNumberUtilInstance = lpn.PhoneNumberUtil.getInstance();\n    const error = { validatePhoneNumber: { valid: false } };\n\n    let number: lpn.PhoneNumber;\n    let isValidForRegion: boolean = false\n    try {\n      number = phoneNumberUtilInstance.parse(\n        control.value,\n        countryCode\n      );\n      if (number) {\n        isValidForRegion = phoneNumberUtilInstance.isValidNumberForRegion(\n          number,\n          countryCode\n        )\n      }\n    } catch (e) {\n      return error;\n    }\n    if (control.value && (!number || !isValidForRegion)) {\n      return error\n    }\n    return {};\n  }\n\n  /**\n   * NIF validator\n   */\n  public static nifValidator(control: UntypedFormControl): ValidationErrors {\n    const newValue = control.value;\n    const regExp = new RegExp(DNI_PATTERN + '|' + NIE_PATTERN);\n\n    // removing dashes\n    let valueWithoutDashes = '';\n    for (const i in newValue) {\n      if (newValue[i] !== '-') {\n        valueWithoutDashes = valueWithoutDashes + newValue[i];\n      }\n    }\n    if (valueWithoutDashes.length > 1) {\n      const firstChar = valueWithoutDashes.charAt(0);\n      if (NUMBERS.indexOf(firstChar) !== -1) {\n        const number = valueWithoutDashes.substring(0, valueWithoutDashes.length - 1);\n        const pos = parseInt(number, 10) % 23;\n        const expectedLetter = DNI_CHECK.substring(pos, pos + 1);\n        const letter = valueWithoutDashes.charAt(valueWithoutDashes.length - 1);\n        const dniLetterError = (expectedLetter !== letter.toUpperCase());\n        if (dniLetterError) {\n          return { invalidNIFLetter: true };\n        } else {\n          if (!regExp.test(valueWithoutDashes)) {\n            return { invalidNIF: true };\n          }\n        }\n      } else {\n        if (!regExp.test(valueWithoutDashes)) {\n          return { invalidNIF: true };\n        }\n      }\n    }\n    return undefined;\n  }\n\n  /**\n   * Patterns validator\n   * @param regex\n   * @param key\n   * @returns validator\n   *\n   */\n  public static patternValidator(regex: RegExp, key: string): ValidatorFn {\n    if (!Util.isDefined(regex)) {\n      console.warn('Regex param must be defined in patternValidator ')\n    }\n\n    if (!Util.isDefined(key)) {\n      console.warn('Validation key param must be defined in patternValidator ')\n    }\n\n    let validator: ValidatorFn = (control: UntypedFormControl): { [key: string]: any } => {\n      if (!Util.isDefined(regex) || !Util.isDefined(key) || !control.value) {\n        // if regex is not defined or key is not defined or control is empty return no error\n        return undefined;\n      }\n\n      // test the value of the control against the regexp supplied\n      const valid = regex.test(control.value);\n\n      let result = {};\n\n      // if true, return no error (no error), else return error passed in the second parameter\n      if (valid) {\n        result = undefined;\n      } else {\n        result[key] = !valid;\n      }\n      return result;\n    };\n    return validator;\n\n  }\n\n  /**\n * @deprecated Use `Validator.min` instead\n */\n  public static createMinValidator(min: number): ValidatorFn {\n    const validator: ValidatorFn = (control: UntypedFormControl) => {\n      let val = control.value;\n      if (typeof (control.value) !== 'number') {\n        try {\n          val = parseInt(control.value, 10);\n        } catch (e) {\n          val = control.value;\n        }\n      }\n      if (val < min) {\n        return {\n          min: {\n            requiredMin: min\n          }\n        };\n      }\n      return {};\n    }\n    return validator;\n  }\n  /**\n * @deprecated Use `Validator.max` instead\n */\n  public static createMaxValidator(max: number): ValidatorFn {\n    const validator: ValidatorFn = (control: UntypedFormControl) => {\n      let val = control.value;\n      if (typeof (control.value) !== 'number') {\n        try {\n          val = parseInt(control.value, 10);\n        } catch (e) {\n          val = control.value;\n        }\n      }\n      if (max < val) {\n        return {\n          max: {\n            requiredMax: max\n          }\n        };\n      }\n      return {};\n    }\n    return validator;\n  }\n}\n","import { Component, ElementRef, forwardRef, Inject, Injector, OnInit, Optional, ViewEncapsulation } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\n\nimport { OValidators } from '../../../validators/o-validators';\nimport { OFormComponent } from '../../form/o-form.component';\nimport {\n  OTextInputComponent\n} from '../text-input/o-text-input.component';\n\n@Component({\n  selector: 'o-email-input',\n  templateUrl: './o-email-input.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class OEmailInputComponent extends OTextInputComponent implements OnInit {\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector) {\n    super(form, elRef, injector);\n  }\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    // Inject email validator\n    validators.push(OValidators.emailValidator);\n    return validators;\n  }\n\n}\n","<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\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <input matInput type=\"email\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\" (focus)=\"innerOnFocus($event)\"\n      (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" [required]=\"isRequired\" (change)=\"onChangeEvent($event)\" [maxlength]=\"maxLength\"\n      [minlength]=\"minLength\">\n    <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\n    <mat-icon matSuffix [class.mat-disabled]=\"!enabled\" svgIcon=\"ontimize:mail_outline\"></mat-icon>\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('minlength')\">\n      {{ 'FORM_VALIDATION.MIN_LENGTH' | oTranslate }}: {{ getErrorValue('minlength', 'requiredLength') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('maxlength')\">\n      {{ 'FORM_VALIDATION.MAX_LENGTH' | oTranslate }}: {{ getErrorValue('maxlength', 'requiredLength') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('invalidEmailAddress')\">\n      {{ 'FORM_VALIDATION.EMAIL_FORMAT' | oTranslate }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OTextInputModule } from '../text-input/o-text-input.module';\nimport { OEmailInputComponent } from './o-email-input.component';\n\n@NgModule({\n  declarations: [OEmailInputComponent],\n  imports: [OSharedModule, CommonModule, OTextInputModule],\n  exports: [OEmailInputComponent]\n})\nexport class OEmailInputModule {\n}\n","import { Subscription } from 'rxjs';\n\nimport { OFileUploader } from './o-file-uploader.class';\n\nexport class OFileItem {\n\n  public index: number = void 0;\n  public isReady: boolean = false;\n  public isUploading: boolean = false;\n  public isUploaded: boolean = false;\n  public isSuccess: boolean = false;\n  public isCancel: boolean = false;\n  public isError: boolean = false;\n  public progress: number = 0;\n  public _uploadSuscription: Subscription;\n\n  protected uploader: OFileUploader;\n  protected _file: File;\n\n  constructor(file: File, uploader: OFileUploader) {\n    this._file = file;\n    this.uploader = uploader;\n  }\n\n  public upload(): void {\n    this.uploader.uploadItem(this);\n  }\n\n  public cancel(): void {\n    this.uploader.cancelItem(this);\n  }\n\n  public remove(): void {\n    this.uploader.removeFile(this);\n  }\n\n  public prepareToUpload(): void {\n    this.index = this.index || ++this.uploader.nextIndex;\n    this.isReady = true;\n  }\n\n  get file(): File {\n    return this._file;\n  }\n\n  get name(): string {\n    return this._file.name;\n  }\n\n  get size(): number {\n    return this._file.size;\n  }\n\n  get type(): string {\n    return this._file.type;\n  }\n\n  get lastModifiedDate(): any {\n    return this._file.lastModified;\n  }\n\n  public _onBeforeUpload(notify: boolean = true): void {\n    this.isReady = true;\n    this.isUploading = true;\n    this.isUploaded = false;\n    this.isSuccess = false;\n    this.isCancel = false;\n    this.isError = false;\n    this.progress = 0;\n    if (notify) {\n      this.onBeforeUpload();\n    }\n  }\n\n  public _onProgress(progress: number): void {\n    this.progress = progress;\n    this.onProgress(progress);\n  }\n\n  public _onSuccess(data: any, notify: boolean = true): void {\n    this.index = void 0;\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = true;\n    this.isSuccess = true;\n    this.isCancel = false;\n    this.isError = false;\n    this.progress = 100;\n    if (notify) {\n      this.onSuccess(data);\n    }\n  }\n\n  public _onError(error: any, notify: boolean = true): void {\n    this.index = void 0;\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = true;\n    this.isSuccess = false;\n    this.isCancel = false;\n    this.isError = true;\n    this.progress = 0;\n    if (notify) {\n      this.onError(error);\n    }\n  }\n\n  public _onCancel(notify: boolean = true): void {\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = false;\n    this.isSuccess = false;\n    this.isCancel = true;\n    this.isError = false;\n    this.progress = 0;\n    this.index = void 0;\n    if (notify) {\n      this.onCancel();\n    }\n  }\n\n  public _onComplete(notify: boolean = true): void {\n    if (notify) {\n      this.onComplete();\n    }\n  }\n\n  public onBeforeUpload(): any {\n    return {};\n  }\n\n  public onProgress(progress: number): any {\n    return { progress };\n  }\n\n  public onSuccess(data: any): any {\n    return { data };\n  }\n\n  public onError(error: any): any {\n    return { error };\n  }\n\n  public onCancel(): any {\n    return {};\n  }\n\n  public onComplete(): any {\n    return {};\n  }\n\n  get pendingUpload(): boolean {\n    return !this.isUploaded && !this.isUploading && !this.isCancel;\n   }\n\n}\n","import { Subscription } from 'rxjs';\n\nimport { IFileService } from '../../../interfaces/file-service.interface';\nimport { Codes } from '../../../util/codes';\nimport { OFileItem } from './o-file-item.class';\n\nexport class OFileUploader {\n\n  public entity: string;\n  public files: OFileItem[] = [];\n  public isUploading: boolean = false;\n  public progress: number = 0;\n  public nextIndex: number = 0;\n  public splitUpload: boolean = true;\n  public data: object;\n\n  protected _uploadSuscription: Subscription;\n\n  constructor(\n    protected service: IFileService,\n    entity: string\n  ) {\n    this.entity = entity;\n  }\n\n  public addFile(fileItem: OFileItem): void {\n    this.files.push(fileItem);\n    this.progress = this._getTotalProgress();\n  }\n\n  /**\n   * Cancels the upload of all files and remove them from the file list.\n   */\n  clear(): void {\n    this.cancel();\n    while (this.files.length) {\n      this.files[0].remove();\n    }\n    this.progress = 0;\n  }\n\n  /**\n   * Removes a file from the file list, it cancels upload if needed.\n   * @param value the file to remove\n   */\n  removeFile(value: any): void {\n    const index = this.getIndexOfItem(value);\n    const item = this.files[index];\n    if (item) {\n      if (item.isUploading) {\n        item.cancel();\n      }\n      this.files.splice(index, 1);\n      this.progress = this._getTotalProgress();\n    }\n  }\n\n  public upload(): void {\n    this.files.forEach((item: OFileItem) => {\n      if (item.pendingUpload) {\n        item.prepareToUpload();\n      }\n    });\n    if (this.splitUpload) {\n      this.files.forEach((item: OFileItem) => {\n        if (item.pendingUpload) {\n          this.uploadItem(item);\n        }\n      });\n    } else {\n      this.uploadItems(this.files);\n    }\n  }\n\n  /**\n   * Uploads a single file on a single request.\n   * @param item the file to upload\n   */\n  public uploadItem(item: OFileItem): void {\n    item.prepareToUpload();\n    if (this.isUploading || item.isUploading) {\n      return;\n    }\n    this.isUploading = true;\n    item.isUploading = true;\n\n    this._onBeforeUploadItem(item);\n\n    if (this.service === undefined) {\n      console.warn('No service configured! aborting upload');\n      return;\n    }\n    if (this._uploadSuscription) {\n      this._uploadSuscription.unsubscribe();\n    }\n\n    const self = this;\n    this._uploadSuscription = item._uploadSuscription = this.service.upload([item], this.entity, this.data).subscribe(\n      resp => {\n        if (resp.loaded && resp.total) {\n          const progress = Math.round(resp.loaded * 100 / resp.total);\n          self._onProgressItem(item, progress);\n        } else if (resp.code === Codes.ONTIMIZE_SUCCESSFUL_CODE) {\n          self._onSuccessItem(item, resp);\n        } else {\n          console.error('uploadItem error');\n          self._onErrorItem(item, 'Unknow error');\n        }\n      },\n      err => self._onErrorItem(item, err),\n      () => self._onCompleteItem(item)\n    );\n  }\n\n  /**\n   * Upload a set of files on a single request.\n   * @param items the array of files to upload\n   */\n  public uploadItems(items: OFileItem[]): void {\n    if (this.isUploading || items.some(item => item.isUploading)) {\n      return;\n    }\n    this.isUploading = true;\n\n    this._onBeforeUploadAll();\n\n    if (this.service === undefined) {\n      console.warn('No service configured! aborting upload');\n      return;\n    }\n    if (this._uploadSuscription) {\n      this._uploadSuscription.unsubscribe();\n    }\n\n    const self = this;\n    this._uploadSuscription = this.service.upload(items, this.entity, this.data).subscribe(resp => {\n      if (resp.loaded && resp.total) {\n        const progress = Math.round(resp.loaded * 100 / resp.total);\n        self._onProgressAll(progress);\n      } else if (resp.code === Codes.ONTIMIZE_SUCCESSFUL_CODE) {\n        self._onSuccessAll(resp);\n      } else {\n        console.error('uploadItems error');\n      }\n    },\n      err => self._onErrorAll(err),\n      () => self._onCompleteAll()\n    );\n  }\n\n  /**\n   * Cancels the upload of all files.\n   */\n  public cancel(): void {\n    if (this.splitUpload) {\n      this.files.forEach(item => item.cancel());\n    } else {\n      if (this._uploadSuscription) {\n        this._uploadSuscription.unsubscribe();\n      }\n      this._onCancelAll();\n      this._onCompleteAll();\n    }\n  }\n\n  /**\n   * Cancels the the file upload.\n   * @param value the file to cancel its upload\n   */\n  public cancelItem(value: OFileItem): void {\n    const index = this.getIndexOfItem(value);\n    const item = this.files[index];\n    if (item && item.isUploading && this.splitUpload) {\n      item._uploadSuscription.unsubscribe();\n    }\n    this._onCancelItem(item);\n    this._onCompleteItem(item);\n  }\n\n  public getNotUploadedItems(): OFileItem[] {\n    return this.files.filter((item: OFileItem) => !item.isUploaded);\n  }\n\n  public getIndexOfItem(value: any): number {\n    return typeof value === 'number' ? value : this.files.indexOf(value);\n  }\n\n  public onBeforeUploadItem(fileItem: OFileItem): any {\n    return { fileItem };\n  }\n\n  public onBeforeUploadAll(): any {\n    return {};\n  }\n\n  public onProgressItem(fileItem: OFileItem, progress: any): any {\n    return { fileItem, progress };\n  }\n\n  public onProgressAll(progress: any): any {\n    return { progress };\n  }\n\n  public onCancelItem(fileItem: OFileItem): any {\n    return { fileItem };\n  }\n\n  public onCancelAll(): any {\n    return {};\n  }\n\n  public onSuccessItem(fileItem: OFileItem, response: any): any {\n    return { fileItem, response };\n  }\n\n  public onSuccessAll(response: any): any {\n    return { response };\n  }\n\n  public onErrorItem(fileItem: OFileItem, error: any): any {\n    return { fileItem, error };\n  }\n\n  public onErrorAll(error: any): any {\n    return { error };\n  }\n\n  public onCompleteItem(fileItem: OFileItem): any {\n    return { fileItem };\n  }\n\n  public onCompleteAll(): any {\n    return void 0;\n  }\n\n  protected _onBeforeUploadItem(item: OFileItem): void {\n    item._onBeforeUpload();\n    this.onBeforeUploadItem(item);\n  }\n\n  protected _onBeforeUploadAll(): void {\n    this.files.forEach(item => item._onBeforeUpload(false));\n    this.onBeforeUploadAll();\n  }\n\n  protected _onProgressItem(item: OFileItem, progress: number): void {\n    const total = this._getTotalProgress(progress);\n    this.progress = total;\n    item._onProgress(progress);\n    this.onProgressItem(item, progress);\n    this.onProgressAll(total);\n  }\n\n  protected _onProgressAll(progress: number): void {\n    const total = this._getTotalProgress(progress);\n    this.progress = total;\n    this.onProgressAll(total);\n  }\n\n  protected _onSuccessItem(item: OFileItem, response: any): void {\n    item._onSuccess(response);\n    this.onSuccessItem(item, response);\n  }\n\n  protected _onSuccessAll(response: any): void {\n    this.files.forEach(item => item._onSuccess(response, false));\n    this.onSuccessAll(response);\n  }\n\n  protected _onErrorItem(item: OFileItem, error: any): void {\n    item._onError(error);\n    this.onErrorItem(item, error);\n  }\n\n  protected _onErrorAll(error: any): void {\n    this.files.forEach(item => item._onError(error, false));\n    this.onErrorAll(error);\n  }\n\n  protected _onCancelItem(item: OFileItem): void {\n    item._onCancel();\n    this.onCancelItem(item);\n  }\n\n  protected _onCancelAll(): void {\n    this.files.forEach(item => item._onCancel(false));\n    this.onCancelAll();\n  }\n\n  protected _onCompleteItem(item: OFileItem): void {\n    item._onComplete();\n    this.onCompleteItem(item);\n    const nextItem = this._getReadyItems()[0];\n    this.isUploading = false;\n    if (nextItem) {\n      nextItem.upload();\n      return;\n    }\n    this.onCompleteAll();\n    this.progress = this._getTotalProgress();\n  }\n\n  protected _onCompleteAll(): void {\n    this.files.forEach(item => item._onComplete(false));\n    this.isUploading = false;\n    this.onCompleteAll();\n    this.progress = this._getTotalProgress();\n  }\n\n  protected _getReadyItems(): OFileItem[] {\n    return this.files\n      .filter((item: OFileItem) => (item.isReady && !item.isUploading))\n      .sort((item1: OFileItem, item2: OFileItem) => item1.index - item2.index);\n  }\n\n  protected _getTotalProgress(value: number = 0): number {\n    const notUploaded = this.getNotUploadedItems().length;\n    const uploaded = notUploaded ? this.files.length - notUploaded : this.files.length;\n    const ratio = this.splitUpload ? 100 / this.files.length : 100;\n    const current = value * ratio / 100;\n    return Math.round(uploaded * ratio + current);\n  }\n\n}\n","import { Component, ElementRef, EventEmitter, forwardRef, Inject, Injector, OnInit, Optional, ViewChild } from '@angular/core';\nimport { UntypedFormControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { BooleanInputConverter, NumberInputConverter } from '../../../decorators/input-converter';\nimport { IFileService } from '../../../interfaces/file-service.interface';\nimport { fileServiceFactory } from '../../../services/factories';\nimport { OntimizeFileService } from '../../../services/ontimize/ontimize-file.service';\nimport { OConfigureServiceArgs } from '../../../types/configure-service-args.type';\nimport { FormValueOptions } from '../../../types/form-value-options.type';\nimport { Util } from '../../../util/util';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OFormDataComponent } from '../../o-form-data-component.class';\nimport { OValueChangeEvent } from '../../o-value-change-event.class';\nimport { OFileItem } from './o-file-item.class';\nimport { OFileUploader } from './o-file-uploader.class';\n\nexport const DEFAULT_INPUTS_O_FILE_INPUT = [\n\n  // accept-file-type [string]: file types allowed on the file input, separated by ';'. Default: no value.\n  // file_extension, audio/*, video/*, image/*, media_type. See https://www.w3schools.com/tags/att_input_accept.asp\n  'acceptFileType: accept-file-type',\n\n  // max-file-size [number]: maximum file size allowed, in bytes. Default: no value.\n  'maxFileSize: max-file-size',\n\n  // multiple [boolean]: multiple file selection allowed. Default: no.\n  'multiple',\n\n  // max-files [number]: maximum number of files allowed. Default: -1.\n  'maxFiles: max-files',\n\n  // show-info [boolean]: show files information. Default: no.\n  'showInfo: show-info',\n\n  // split-upload [boolean]: each file is uploaded in a request (true) or all files are uploaded in a single request (false). Default: yes.\n  'splitUpload: split-upload',\n\n  // additional-data [JSON]: used to send aditional information in the upload request.\n  'additionalData: additional-data',\n  'service',\n  'entity',\n  'serviceType : service-type',\n];\n\nexport const DEFAULT_OUTPUTS_O_FILE_INPUT = [\n  'onBeforeUpload',\n  'onBeforeUploadFile',\n  'onProgress',\n  'onProgressFile',\n  'onCancel',\n  'onCancelFile',\n  'onUpload',\n  'onUploadFile',\n  'onComplete',\n  'onCompleteFile',\n  'onError',\n  'onErrorFile'\n];\n\n@Component({\n  selector: 'o-file-input',\n  templateUrl: './o-file-input.component.html',\n  styleUrls: ['./o-file-input.component.scss'],\n  inputs: DEFAULT_INPUTS_O_FILE_INPUT,\n  outputs: DEFAULT_OUTPUTS_O_FILE_INPUT,\n  providers: [\n    { provide: OntimizeFileService, useFactory: fileServiceFactory, deps: [Injector] }\n  ]\n})\nexport class OFileInputComponent extends OFormDataComponent implements OnInit {\n\n  public arraySeparatorRegExp = new RegExp(/\\;/gi);\n  public uploader: OFileUploader;\n  public fileService: IFileService;\n  @ViewChild('inputFile')\n  public inputFile: ElementRef;\n\n  public autoBinding: boolean = false;\n  public autoRegistering: boolean = false;\n  @BooleanInputConverter()\n  public showInfo: boolean = false;\n  @BooleanInputConverter()\n  public multiple: boolean = false;\n  @BooleanInputConverter()\n  public splitUpload: boolean = true;\n  public acceptFileType: string;\n  @NumberInputConverter()\n  public maxFileSize: number;\n  @NumberInputConverter()\n  public maxFiles: number = -1;\n\n  public onBeforeUpload: EventEmitter<any> = new EventEmitter<any>();\n  public onBeforeUploadFile: EventEmitter<any> = new EventEmitter<any>();\n  public onProgress: EventEmitter<any> = new EventEmitter<any>();\n  public onProgressFile: EventEmitter<any> = new EventEmitter<any>();\n  public onCancel: EventEmitter<any> = new EventEmitter<any>();\n  public onCancelFile: EventEmitter<any> = new EventEmitter<any>();\n  public onUpload: EventEmitter<any> = new EventEmitter<any>();\n  public onUploadFile: EventEmitter<any> = new EventEmitter<any>();\n  public onComplete: EventEmitter<any> = new EventEmitter<any>();\n  public onCompleteFile: EventEmitter<any> = new EventEmitter<any>();\n  public onError: EventEmitter<any> = new EventEmitter<any>();\n  public onErrorFile: EventEmitter<any> = new EventEmitter<any>();\n\n  protected service: string;\n  protected entity: string;\n  protected serviceType: string;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector,\n  ) {\n    super(form, elRef, injector);\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.initialize();\n\n    this.uploader.onBeforeUploadAll = () => this.onBeforeUpload.emit();\n    this.uploader.onBeforeUploadItem = item => this.onBeforeUploadFile.emit(item);\n    this.uploader.onProgressAll = progress => this.onProgress.emit(progress);\n    this.uploader.onProgressItem = (item, progress) => this.onProgressFile.emit({ item: item, progress: progress });\n    this.uploader.onCancelAll = () => this.onCancel.emit();\n    this.uploader.onCancelItem = item => this.onCancelFile.emit();\n    this.uploader.onSuccessAll = response => this.onUpload.emit({ response: response });\n    this.uploader.onSuccessItem = (item, response) => this.onUploadFile.emit({ item: item, response: response });\n    this.uploader.onCompleteAll = () => this.onComplete.emit();\n    this.uploader.onCompleteItem = item => this.onCompleteFile.emit(item);\n    this.uploader.onErrorAll = error => this.onError.emit(error);\n    this.uploader.onErrorItem = (item, error) => this.onErrorFile.emit({ item: item, error: error });\n  }\n\n  public initialize(): void {\n    super.initialize();\n\n    if (!this.service) {\n      this.service = this.form.service;\n    }\n    if (!this.entity) {\n      this.entity = this.form.entity;\n    }\n\n    this.configureService();\n    this.uploader = new OFileUploader(this.fileService, this.entity);\n    this.uploader.splitUpload = this.splitUpload;\n  }\n\n  public configureService(): void {\n    const configureServiceArgs: OConfigureServiceArgs = { injector: this.injector, baseService: OntimizeFileService, entity: this.entity, service: this.service, serviceType: this.serviceType }\n    this.fileService = Util.configureService(configureServiceArgs);\n\n  }\n\n  public resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    if (this.acceptFileType) {\n      validators.push(this.filetypeValidator.bind(this));\n    }\n    if (this.maxFileSize) {\n      validators.push(this.maxFileSizeValidator.bind(this));\n    }\n    if (this.multiple && this.maxFiles !== -1) {\n      validators.push(this.maxFilesValidator.bind(this));\n    }\n    return validators;\n  }\n\n  public fileSelected(event: Event): void {\n    let value: string = '';\n    if (event) {\n      const target: any = event.target || event.srcElement;\n      if (target.files.length > 0) {\n        const files: FileList = target.files;\n        if (!this.multiple) {\n          this.uploader.clear();\n        }\n        for (let i = 0, f: File; i < files.length; i++) {\n          f = files[i];\n          const fileItem: OFileItem = new OFileItem(f, this.uploader);\n          this.uploader.addFile(fileItem);\n        }\n        value = this.uploader.files.map(file => file.name).join(', ');\n\n        window.setTimeout(() => {\n          this.setValue(value !== '' ? value : undefined, { changeType: OValueChangeEvent.USER_CHANGE });\n          if (this._fControl) {\n            this._fControl.markAsTouched();\n          }\n        }, 0);\n      }\n    }\n  }\n\n  /**\n   * Override super.clearValue();\n   */\n  public clearValue(options?: FormValueOptions, setDirty: boolean = false): void {\n    super.clearValue(options, setDirty);\n    this.uploader.clear();\n    this.inputFile.nativeElement.value = '';\n  }\n\n  public onClickUpload(e: Event): void {\n    e.stopPropagation();\n    if (this.isValid) {\n      this.upload();\n    }\n  }\n\n  public upload(): void {\n    this.uploader.upload();\n  }\n\n  get files(): OFileItem[] {\n    return this.uploader.files;\n  }\n\n  get additionalData(): any {\n    if (this.uploader) {\n      return this.uploader.data;\n    }\n    return null;\n  }\n\n  set additionalData(data: any) {\n    if (this.uploader) {\n      this.uploader.data = data;\n    }\n  }\n\n  public innerOnChange(event: any): void {\n    this.ensureOFormValue(event);\n    if (this._fControl && this._fControl.touched) {\n      this._fControl.markAsDirty();\n    }\n    this.onChange.emit(event);\n  }\n\n  protected filetypeValidator(control: UntypedFormControl): ValidationErrors {\n    if (control.value && control.value.length > 0 && this.acceptFileType) {\n      const regex: RegExp = new RegExp(this.acceptFileType.replace(';', '|'));\n      if (!this.files.every(file => file.type.match(regex) !== null || file.name.substr(file.name.lastIndexOf('.')).match(regex) !== null)) {\n        return {\n          fileType: {\n            allowedFileTypes: this.acceptFileType.replace(';', ', ')\n          }\n        };\n      }\n    }\n    return {};\n  }\n\n  protected maxFileSizeValidator(control: UntypedFormControl): ValidationErrors {\n    if (control.value && control.value.length > 0 && this.maxFileSize) {\n      if (!this.files.every(file => file.size < this.maxFileSize)) {\n        return {\n          fileSize: {\n            maxFileSize: this.maxFileSize\n          }\n        };\n      }\n    }\n    return {};\n  }\n\n  protected maxFilesValidator(control: UntypedFormControl): ValidationErrors {\n    if (control.value && control.value.length > 0 && this.multiple && this.maxFiles !== -1) {\n      if (this.maxFiles < this.files.length) {\n        return {\n          numFile: {\n            maxFiles: this.maxFiles\n          }\n        };\n      }\n    }\n    return {};\n  }\n}\n","<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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OFileInputComponent } from './o-file-input.component';\n\n@NgModule({\n  declarations: [OFileInputComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OFileInputComponent]\n})\nexport class OFileInputModule { }\n","import { AfterViewInit, Component, ElementRef, forwardRef, Inject, Injector, OnInit, Optional, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport moment from 'moment';\nimport { NgxMaterialTimepickerComponent } from 'ngx-material-timepicker';\n\nimport { BooleanInputConverter, NumberConverter } from '../../../decorators/input-converter';\nimport { FormValueOptions } from '../../../types/form-value-options.type';\nimport { Codes } from '../../../util/codes';\nimport { Util } from '../../../util/util';\nimport { OValidators } from '../../../validators/o-validators';\nimport { OFormValue } from '../../form/o-form-value';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OFormDataComponent } from '../../o-form-data-component.class';\nimport { OValueChangeEvent } from '../../o-value-change-event.class';\nimport { OFormControl } from '../o-form-control.class';\n\nexport type OHourValueType = 'string' | 'timestamp';\n\nexport const DEFAULT_INPUTS_O_HOUR_INPUT = [\n  'format',\n  'textInputEnabled: text-input-enabled',\n  'min',\n  'max',\n  'valueType: value-type'\n];\n\n@Component({\n  selector: 'o-hour-input',\n  templateUrl: './o-hour-input.component.html',\n  styleUrls: ['./o-hour-input.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  inputs: DEFAULT_INPUTS_O_HOUR_INPUT,\n  host: {\n    '[class.o-hour-input]': 'true'\n  }\n})\nexport class OHourInputComponent extends OFormDataComponent implements OnInit, AfterViewInit {\n\n  @BooleanInputConverter()\n  public textInputEnabled: boolean = true;\n  public min: string;\n  public max: string;\n  protected _format: number = Codes.TWENTY_FOUR_HOUR_FORMAT;\n  protected onKeyboardInputDone = false;\n  protected _valueType: OHourValueType = 'timestamp';\n\n  @ViewChild('picker')\n  public picker: NgxMaterialTimepickerComponent;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n    this._defaultSQLTypeKey = 'TIMESTAMP';\n  }\n\n  initialize(): void {\n    super.initialize();\n    const formControl = this.getFormControl() as OFormControl;\n    if (formControl) {\n      const self = this;\n      formControl.getValue = function () {\n        return self.getValue();\n      };\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    this.modifyPickerMethods();\n  }\n\n  public onKeyDown(e: KeyboardEvent): void {\n    if (!Codes.isHourInputAllowed(e)) {\n      e.preventDefault();\n    }\n  }\n\n  public innerOnBlur(event: any): void {\n    if (this.onKeyboardInputDone) {\n      this.updateValeOnInputChange(event);\n    }\n    super.innerOnBlur(event);\n  }\n\n  public registerOnFormControlChange(): void {\n    // This component does not need this subscription\n  }\n\n  get formatString(): string {\n    return (this.format === Codes.TWENTY_FOUR_HOUR_FORMAT ? Codes.HourFormat.TWENTY_FOUR : Codes.HourFormat.TWELVE);\n  }\n\n  public open(e?: Event): void {\n    if (Util.isDefined(e)) {\n      e.stopPropagation();\n    }\n    if (this.picker) {\n      this.picker.open();\n    }\n  }\n\n  setTime(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    // getting value from super so we can always get a string value\n    const value = super.getValue();\n    this.picker.updateTime(value);\n  }\n\n  public setTimestampValue(value: any, options?: FormValueOptions): void {\n    let parsedValue;\n    const momentV = Util.isDefined(value) ? moment(value) : value;\n    if (momentV && momentV.isValid()) {\n      parsedValue = momentV.utcOffset(0).format(this.formatString);\n    }\n    this.setValue(parsedValue, options);\n  }\n\n  public resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    if (this.format === Codes.TWENTY_FOUR_HOUR_FORMAT) {\n      validators.push(OValidators.twentyFourHourFormatValidator);\n    } else {\n      validators.push(OValidators.twelveHourFormatValidator);\n    }\n    return validators;\n  }\n\n  set format(val: number) {\n    const old = this._format;\n    let parsedVal = NumberConverter(val);\n    if (parsedVal !== Codes.TWELVE_FOUR_HOUR_FORMAT && parsedVal !== Codes.TWENTY_FOUR_HOUR_FORMAT) {\n      parsedVal = Codes.TWENTY_FOUR_HOUR_FORMAT;\n    }\n    this._format = parsedVal;\n    if (parsedVal !== old) {\n      this.updateValidators();\n    }\n  }\n\n  get format(): number {\n    return this._format;\n  }\n\n  set valueType(val: any) {\n    this._valueType = this.convertToOHourValueType(val);\n  }\n\n  get valueType(): any {\n    return this._valueType;\n  }\n\n  public convertToOHourValueType(val: any): OHourValueType {\n    const result: OHourValueType = 'string';\n    const lowerVal = (val || '').toLowerCase();\n    if (lowerVal === 'string' || lowerVal === 'timestamp') {\n      return lowerVal;\n    }\n    return result;\n  }\n\n  public onChangeEvent(arg: any): void {\n    this.onTimepickerChange(arg.target.value);\n  }\n\n  public onTimepickerChange(event: string): void {\n    let value: any = event;\n    if (Util.isDefined(value) && this.valueType === 'timestamp') {\n      const valueTimestamp = moment(value, this.formatString).valueOf();\n      if (!isNaN(valueTimestamp)) {\n        value = valueTimestamp;\n      }\n    }\n    /** emitModelToViewChange: false  because onChange event is trigger in ngModelChange */\n    this.setValue(value, {\n      changeType: OValueChangeEvent.USER_CHANGE,\n      emitEvent: false,\n      emitModelToViewChange: false\n    });\n  }\n\n  protected modifyPickerMethods(): void {\n    if (this.picker && this.picker.inputElement) {\n      this.picker.inputElement.addEventListener('change', () => {\n        this.onKeyboardInputDone = true;\n      });\n    }\n  }\n\n  protected setFormValue(val: any, options?: FormValueOptions, setDirty: boolean = false): void {\n    let stringValue = val;\n    if (Util.isDefined(val) && this.valueType === 'timestamp') {\n      // because of the ngx-material-timepicker especification, its stored value must be always a string\n      let value = val instanceof OFormValue ? val.value : val;\n      stringValue = this.getValueAsString(value);\n    }\n    this.ensureOFormValue(val);\n    if (!this._fControl) {\n      // ensuring _fControl creation\n      this._fControl = this.getControl();\n    }\n    if (this._fControl) {\n      this.updateOFormControlValue(stringValue, options, setDirty);\n    }\n    this.oldValue = this.value.value;\n  }\n\n  protected updateValeOnInputChange(blurEvent: any): void {\n    if (this.onKeyboardInputDone) {\n      // ngx-material-timepicker does not allow writing characters on input, so we add 'AM/PM' in order to make validation work properly\n      const value = this.parseHour(blurEvent.currentTarget.value);\n      this.setValue(value);\n    }\n    this.onKeyboardInputDone = false;\n  }\n\n  /**\n   * Receives an hour input introduced by the user and returns the hour formated acording current format\n   * @param value\n   */\n  protected parseHour(value: string): string {\n    const strArray = value.split(':');\n    let hour: any = strArray[0];\n\n    if (Codes.TWELVE_FOUR_HOUR_FORMAT === this.format) {\n      if (hour) {\n        hour = parseInt(hour, 10);\n        const period = hour <= 12 ? ' AM' : ' PM';\n        if (hour > 12) {\n          hour = hour - 12;\n        }\n        strArray[0] = hour;\n        value = strArray.join(':') + period;\n      }\n    } else if (Codes.TWENTY_FOUR_HOUR_FORMAT === this.format) {\n      // do nothing\n    }\n    return value;\n  }\n\n  protected emitOnValueChange(type, newValue, oldValue): void {\n    this.onChange.emit(newValue);\n    super.emitOnValueChange(type, newValue, oldValue);\n  }\n\n  protected getValueAsString(val: any): string {\n    let value;\n    if (typeof val === 'number') {\n      value = moment(val).format(this.formatString);\n    } else {\n      value = this.convertToFormatString(val);\n    }\n    return value;\n  }\n\n  protected convertToFormatString(value): string {\n    if (value === '00:00' || !Util.isDefined(value)) {\n      return value;\n    }\n    const formatStr = this.format === Codes.TWENTY_FOUR_HOUR_FORMAT ? 'HH:mm' : 'hh:mm a';\n    let result;\n    if (typeof value === 'number') {\n      result = moment(value).format(formatStr);\n    } else {\n      result = value ? moment(value, 'h:mm A').format(formatStr) : value;\n    }\n    return result;\n  }\n}\n","<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\" fxFill [hideRequiredMarker]=\"hideRequiredMarker\" class=\"icon-field\"\n    [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <input matInput [ngxTimepicker]=\"picker\" [id]=\"getAttribute()\" [placeholder]=\"placeHolder\" [formControlName]=\"getAttribute()\"\n      [readonly]=\"isReadOnly || !textInputEnabled\" (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [required]=\"isRequired\"\n      (change)=\"onChangeEvent($event)\" [min]=\"min\" [max]=\"max\" (keydown)=\"onKeyDown($event)\" [format]=\"format\" [disableClick]=\"true\">\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    <button type=\"button\" matSuffix mat-icon-button [disabled]=\"isReadOnly || !enabled\" (click)=\"open($event)\">\n      <mat-icon ngxMaterialTimepickerToggleIcon svgIcon=\"ontimize:clock\"></mat-icon>\n    </button>\n\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('invalidFormatHour')\">\n      {{ 'FORM_VALIDATION.HOUR_FORMAT' | oTranslate }} {{ formatString }}\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\n<ngx-material-timepicker #picker (timeSet)=\"onTimepickerChange($event)\" [confirmBtnTmpl]=\"confirmBtn\" [cancelBtnTmpl]=\"cancelBtn\">\n</ngx-material-timepicker>\n\n<ng-template #confirmBtn>\n  <button mat-stroked-button type=\"button\"><span>{{'OK' | oTranslate}}</span></button>\n</ng-template>\n\n<ng-template #cancelBtn>\n  <button mat-stroked-button type=\"button\"><span>{{'CANCEL' | oTranslate}}</span></button>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OHourInputComponent } from './o-hour-input.component';\n\n@NgModule({\n  declarations: [OHourInputComponent],\n  imports: [OSharedModule, CommonModule, NgxMaterialTimepickerModule],\n  exports: [OHourInputComponent]\n})\nexport class OHourInputModule { }\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { Util } from '../../../util/util';\n\ndeclare var CKEDITOR: any;\n\nconst defaults = {\n  contentsCss: [''],\n  customConfig: ''\n};\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'ck-editor',\n  template: `<textarea #ck></textarea>`,\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => CKEditorComponent),\n    multi: true\n  }],\n  exportAs: 'ckEditor'\n})\nexport class CKEditorComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  protected ckIns: any;\n  protected identifier: string;\n  protected innerValue: string = '';\n\n  public get instance() {\n    return this.ckIns;\n  }\n\n  protected _readonly: boolean = false;\n\n  @Input()\n  set readonly(value: boolean) {\n    this._readonly = value;\n    setTimeout(() => {\n      if (Util.isDefined(this.ckIns) && Util.isDefined(this.ckIns.editable())) {\n        this.ckIns.setReadOnly(this.readonly);\n      }\n    });\n  }\n\n  get readonly(): boolean {\n    return this._readonly;\n  }\n\n  @Input() public config: any = {};\n  @Input() public skin: string = 'moono-lisa';\n  @Input() public language: string = 'en';\n  @Input() public fullPage: boolean = false;\n  @Input() public inline: boolean = false;\n  @Input() public id: string;\n\n  @Output() change = new EventEmitter();\n  @Output() ready = new EventEmitter();\n  @Output() blur = new EventEmitter();\n  @Output() focus = new EventEmitter();\n\n  @ViewChild('ck') public ck: ElementRef;\n\n  constructor(\n    protected ngZone: NgZone\n  ) { }\n\n  protected static getRandomIdentifier(id: string = '') {\n    return 'editor-' + (id !== '' ? id : Math.round(Util.randomNumber() * 100000000));\n  }\n\n  ngOnDestroy() {\n    this.destroyCKEditor();\n  }\n\n  ngAfterViewInit() {\n    this.destroyCKEditor();\n    this.initCKEditor(CKEditorComponent.getRandomIdentifier(this.id));\n  }\n\n  public initCKEditor(identifier: string) {\n    if (typeof CKEDITOR === 'undefined') {\n      return console.warn('CKEditor 4.x is missing (http://ckeditor.com/)');\n    }\n\n    this.identifier = identifier;\n    this.ck.nativeElement.setAttribute('name', this.identifier);\n\n    const opt = Object.assign({}, defaults, this.config, {\n      readOnly: this.readonly,\n      skin: this.skin,\n      language: this.language,\n      fullPage: this.fullPage,\n      inline: this.inline,\n      width: '100%'\n    });\n    this.ckIns = this.inline\n      ? CKEDITOR.inline(this.ck.nativeElement, opt)\n      : CKEDITOR.replace(this.ck.nativeElement, opt);\n    this.ckIns.setData(this.innerValue);\n\n    this.ckIns.on('change', () => {\n      const val = this.ckIns.getData();\n      this.updateValue(val);\n    });\n\n    this.ckIns.on('instanceReady', (evt: any) => {\n      this.ngZone.run(() => {\n        this.ready.emit(evt);\n      });\n    });\n\n    this.ckIns.on('blur', (evt: any) => {\n      this.ngZone.run(() => {\n        this.blur.emit(evt);\n        this.propagateTouch();\n      });\n    });\n\n    this.ckIns.on('focus', (evt: any) => {\n      this.ngZone.run(() => {\n        this.focus.emit(evt);\n      });\n    });\n  }\n\n  public destroyCKEditor() {\n    if (this.ckIns) {\n      this.ckIns.removeAllListeners();\n      if (CKEDITOR.instances.hasOwnProperty(this.ckIns.name)) {\n        CKEDITOR.remove(CKEDITOR.instances[this.ckIns.name]);\n      }\n      this.ckIns.destroy();\n      this.ckIns = null;\n      const editorEl = document.querySelector('#cke_' + this.identifier);\n      if (Util.isDefined(editorEl) && Util.isDefined(editorEl.parentElement)) {\n        editorEl.parentElement.removeChild(editorEl);\n      }\n    }\n  }\n\n  protected updateValue(value: string) {\n    this.ngZone.run(() => {\n      this.innerValue = value;\n      this.propagateChange(value);\n      this.propagateTouch();\n      this.change.emit(value);\n    });\n  }\n\n  writeValue(value: any): void {\n    this.innerValue = value || '';\n    if (this.ckIns) {\n      // Fix bug that can't emit change event when set non-html tag value twice in fullpage mode.\n      this.ckIns.setData(this.innerValue);\n      const val = this.ckIns.getData();\n      this.ckIns.setData(val);\n    }\n  }\n\n  protected propagateChange(_: any) {\n    // do nothing\n  }\n\n  protected propagateTouch() {\n    // do nothing\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.propagateTouch = fn;\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CKEditorComponent } from './ck-editor.component';\n\n@NgModule({\n  exports: [\n    FormsModule,\n    CKEditorComponent\n  ],\n  declarations: [CKEditorComponent]\n})\nexport class CKEditorModule { }\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Injector, OnInit, Type, ViewChild } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { MatTab, MatTabGroup } from '@angular/material/tabs';\n\nimport { NumberConverter } from '../../../decorators/input-converter';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { CKEditorComponent } from '../../material/ckeditor/ck-editor.component';\nimport { OFormDataComponent } from '../../o-form-data-component.class';\n\nexport const DEFAULT_INPUTS_O_HTML_INPUT = [\n  'oattr: attr',\n  'data',\n  'autoBinding: automatic-binding',\n  'autoRegistering: automatic-registering',\n  'orequired: required',\n  'minLength: min-length',\n  'maxLength: max-length',\n  'readOnly: read-only',\n  'sqlType: sql-type'\n];\n\nexport const DEFAULT_OUTPUTS_O_HTML_INPUT = [\n  'onFocus',\n  'onBlur'\n];\n\n@Component({\n  selector: 'o-html-input',\n  templateUrl: './o-html-input.component.html',\n  styleUrls: ['./o-html-input.component.scss'],\n  inputs: DEFAULT_INPUTS_O_HTML_INPUT,\n  outputs: DEFAULT_OUTPUTS_O_HTML_INPUT,\n  animations: [\n    trigger('transitionMessages', [\n      state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n      transition('void => enter', [\n        style({ opacity: 0, transform: 'translateY(-100%)' }),\n        animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n      ]),\n    ])\n  ]\n})\nexport class OHTMLInputComponent extends OFormDataComponent implements OnInit, AfterViewInit {\n\n  protected _minLength: number = -1;\n  protected _maxLength: number = -1;\n\n  @ViewChild('ckEditor') ckEditor: CKEditorComponent;\n\n  protected tabGroupContainer: MatTabGroup;\n  protected tabContainer: MatTab;\n\n  /** State of the mat-hint and mat-error animations. */\n  _subscriptAnimationState: string = '';\n\n  protected _changeDetectorRef: ChangeDetectorRef;\n\n  constructor(\n    form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n    this.form = form;\n    this.elRef = elRef;\n    this._changeDetectorRef = this.injector.get<ChangeDetectorRef>(ChangeDetectorRef as Type<ChangeDetectorRef>);\n    try {\n      this.tabGroupContainer = this.injector.get<MatTabGroup>(MatTabGroup as Type<MatTabGroup>);\n      this.tabContainer = this.injector.get<MatTab>(MatTab as Type<MatTab>);\n    } catch (error) {\n      // Do nothing due to not always is contained on tab.\n    }\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n    const self = this;\n    if (this.form) {\n      this.form.beforeCloseDetail.subscribe(() => this.destroyCKEditor());\n      this.form.beforeUpdateMode.subscribe(() => this.destroyCKEditor());\n    }\n\n    if (this.tabGroupContainer) {\n      this.tabGroupContainer.selectedTabChange.subscribe((evt: any) => {\n        self.destroyCKEditor();\n        if (self.isInActiveTab()) {\n          self.ckEditor.initCKEditor(self.oattr);\n        }\n      });\n    }\n  }\n\n  ngAfterViewInit() {\n    super.ngAfterViewInit();\n    // Avoid animations on load.\n    this._subscriptAnimationState = 'enter';\n    this._changeDetectorRef.detectChanges();\n  }\n\n\n  hasError(error: string): boolean {\n    const result = super.hasError(error);\n    this._subscriptAnimationState = result ? 'enter' : 'void';\n    return result;\n  }\n\n  isInActiveTab(): boolean {\n    let result: boolean = !(this.tabGroupContainer && this.tabContainer);\n    if (!result) {\n      const self = this;\n      this.tabGroupContainer._tabs.forEach((tab, index) => {\n        if (tab === self.tabContainer) {\n          result = (self.tabGroupContainer.selectedIndex === index);\n        }\n      });\n    }\n    return result;\n  }\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    if (this.minLength >= 0) {\n      validators.push(Validators.minLength(this.minLength));\n    }\n    if (this.maxLength >= 0) {\n      validators.push(Validators.maxLength(this.maxLength));\n    }\n    return validators;\n  }\n\n  clearValue(): void {\n    super.clearValue();\n    this.ckEditor.instance.updateElement();\n    this.ckEditor.instance.setData('');\n  }\n\n  destroyCKEditor() {\n    if (this.ckEditor) {\n      this.ckEditor.destroyCKEditor();\n    }\n  }\n\n  getCKEditor(): any {\n    return this.ckEditor.instance;\n  }\n\n  set minLength(val: number) {\n    const old = this._minLength;\n    this._minLength = NumberConverter(val);\n    if (val !== old) {\n      this.updateValidators();\n    }\n  }\n\n  get minLength(): number {\n    return this._minLength;\n  }\n\n  set maxLength(val: number) {\n    const old = this._maxLength;\n    this._maxLength = NumberConverter(val);\n    if (val !== old) {\n      this.updateValidators();\n    }\n  }\n\n  get maxLength(): number {\n    return this._maxLength;\n  }\n}\n","<div [formGroup]=\"getFormGroup()\" class=\"mat-form-field mat-form-field\" fxFill>\n  <div class=\"mat-form-field-wrapper mat-form-field-wrapper\">\n    <ck-editor #ckEditor [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" \n    (change)=\"onChangeEvent($event)\"  [required]=\"isRequired\" [readonly]=\"isReadOnly\" class=\"mat-form-field-flex mat-form-field-flex\" fxFill></ck-editor>\n    <div class=\"mat-form-field-subscript-wrapper mat-form-field-subscript-wrapper\">\n      <div class=\"ng-trigger ng-trigger-transitionMessages\" [@transitionMessages]=\"_subscriptAnimationState\">\n        <mat-error *oMatError=\"hasError('required')\">\n          {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n        </mat-error>\n        <mat-error *oMatError=\"hasError('minlength')\">\n          {{ 'FORM_VALIDATION.MIN_LENGTH' | oTranslate }}: {{ getErrorValue('minlength', 'requiredLength') }}\n        </mat-error>\n        <mat-error *oMatError=\"hasError('maxlength')\">\n          {{ 'FORM_VALIDATION.MAX_LENGTH' | oTranslate }}: {{ getErrorValue('maxlength', 'requiredLength') }}\n        </mat-error>\n        <mat-error *ngFor=\"let oError of getActiveOErrors()\"> \n          {{ oError.text | oTranslate }}\n        </mat-error>\n      </div>\n    </div>\n  </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { CKEditorModule } from '../../material/ckeditor/ck-editor.module';\nimport { OHTMLInputComponent } from './o-html-input.component';\n\n@NgModule({\n  declarations: [OHTMLInputComponent],\n  imports: [CKEditorModule, CommonModule, OSharedModule],\n  exports: [OHTMLInputComponent]\n})\nexport class OHTMLInputModule { }\n","import { AfterViewInit, Component, Inject, Injector, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { Util } from '../../../util/util';\nimport { OSearchInputComponent } from '../../input/search-input/o-search-input.component';\nimport { OListPickerCustomRenderer } from './listpicker-renderer/o-list-picker-renderer.class';\n\nexport const DEFAULT_INPUTS_O_LIST_PICKER_DIALOG = [\n  'data',\n  'visibleColumns: visible-columns',\n  'filter'\n];\n\n@Component({\n  selector: 'o-list-picker-dialog',\n  templateUrl: './o-list-picker-dialog.component.html',\n  styleUrls: ['./o-list-picker-dialog.component.scss'],\n  inputs: DEFAULT_INPUTS_O_LIST_PICKER_DIALOG,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-list-picker-dialog]': 'true'\n  }\n})\nexport class OListPickerDialogComponent implements AfterViewInit {\n\n  public filter: boolean = true;\n  public visibleData: any = [];\n  public searchVal: string;\n  public itemSize: number = 30;\n  public renderer: OListPickerCustomRenderer;\n\n  @ViewChild('searchInput')\n  public searchInput: OSearchInputComponent;\n\n  protected data: any[] = [];\n  public menuColumns: string;\n  protected visibleColsArray: string[];\n\n  constructor(\n    public dialogRef: MatDialogRef<OListPickerDialogComponent>,\n    protected injector: Injector,\n    @Inject(MAT_DIALOG_DATA) data: any\n  ) {\n    if (data.data && Util.isArray(data.data)) {\n      this.data = data.data;\n      this.visibleData = this.data;\n    }\n    if (data.visibleColumns && Util.isArray(data.visibleColumns)) {\n      this.visibleColsArray = data.visibleColumns;\n    }\n\n    if (data.filter !== undefined) {\n      this.filter = data.filter;\n    }\n    if (data.menuColumns) {\n      this.menuColumns = data.menuColumns;\n    }\n    if (data.renderer) {\n      this.renderer = data.renderer;\n    }\n    this.searchVal = data.searchVal;\n  }\n\n  public ngAfterViewInit(): void {\n    if (Util.isDefined(this.searchVal) && this.searchInput !== undefined && this.searchVal.length > 0) {\n      this.searchInput.getFormControl().setValue(this.searchVal, {\n        emitEvent: false\n      });\n      //TODO improve: Added setTimeout for resolving ExpressionChangedAfterItHasBeenCheckedError error because the observables dont work\n      setTimeout(() => this.searchInput.onSearch.emit(this.searchVal));\n    }\n  }\n\n\n  public onClickListItem(e: any, value: any): void {\n    this.dialogRef.close(value);\n  }\n\n  public trackByFn(index: number, item: any): number {\n    return index;\n  }\n\n  public onFilterList(searchVal: any): void {\n    this.visibleData = this.transform(this.data, {\n      filtervalue: searchVal,\n      filtercolumns: this.visibleColsArray\n    });\n  }\n\n  public isEmptyData(): boolean {\n    return Util.isDefined(this.visibleData) ? this.visibleData.length === 0 : true;\n  }\n\n  private transform(value: any[], args: any): any {\n    if (!args || args.length <= 1) {\n      return value;\n    }\n\n    const filterValue = args['filtervalue'] ? args['filtervalue'] : '';\n    const filterColumns = args['filtercolumns'];\n\n    if (!filterColumns || !filterValue || filterValue.length === 0) {\n      return value;\n    }\n\n    if (value === undefined || value === null) {\n      return value;\n    }\n\n    return value.filter(item => {\n      for (let i = 0; i < filterColumns.length; i++) {\n        const colName = filterColumns[i];\n        if (this._isBlank(colName)) {\n          continue;\n        }\n        let origValue = item[colName];\n        if (origValue) {\n          origValue = origValue.toString();\n          if (this._isBlank(origValue)) {\n            continue;\n          }\n\n          if (origValue.toUpperCase().indexOf(filterValue.toUpperCase()) > -1) {\n            return item;\n          }\n        }\n      }\n    });\n  }\n\n  private _isBlank(value: string): boolean {\n    return !Util.isDefined(value) || value.length === 0;\n  }\n\n}\n","<div mat-dialog-title *ngIf=\"filter\">\n  <o-search-input #searchInput [columns]=\"menuColumns\" show-menu=\"no\" (onSearch)=\"onFilterList($event)\" class=\"o-list-picker-search\"\n    appearance=\"fill\"></o-search-input>\n</div>\n<div mat-dialog-content [class.o-list-picker-has-filter]=\"filter\" fxFlex>\n  <cdk-virtual-scroll-viewport [itemSize]=\"itemSize\">\n    <mat-list>\n      <mat-list-item *ngIf=\"isEmptyData()\">\n        {{ 'LIST.EMPTY' | oTranslate }}\n        <ng-container *ngIf=\"filter && searchInput && searchInput.getValue() && searchInput.getValue().length > 0\">\n          {{ 'LIST.EMPTY_USING_FILTER' | oTranslate : { values: [searchInput.getValue()] } }}\n        </ng-container>\n      </mat-list-item>\n      <ng-container *cdkVirtualFor=\"let item of visibleData; trackBy: trackByFn\">\n        <mat-list-item (click)=\"onClickListItem($event, item)\">\n          <ng-container *ngIf=\"renderer\">\n            <ng-template *ngTemplateOutlet=\"renderer?.templateref; context:{ value: item }\">\n            </ng-template>\n          </ng-container>\n          <ng-container *ngIf=\"!renderer\">\n            <span>{{ item['_parsedVisibleColumnText'] }}</span>\n          </ng-container>\n        </mat-list-item>\n        <mat-divider></mat-divider>\n      </ng-container>\n    </mat-list>\n  </cdk-virtual-scroll-viewport>\n\n</div>\n<mat-dialog-actions align=\"end\">\n  <button type=\"button\" mat-stroked-button mat-dialog-close class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n</mat-dialog-actions>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Injector,\n  OnChanges,\n  OnInit,\n  Optional,\n  SimpleChange,\n  ViewChild\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { MatInput } from '@angular/material/input';\n\nimport { BooleanInputConverter, NumberInputConverter } from '../../../decorators/input-converter';\nimport { OntimizeServiceProvider } from '../../../services/factories';\nimport { Util } from '../../../util/util';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OValueChangeEvent } from '../../o-value-change-event.class';\nimport { OFormControl } from '../o-form-control.class';\nimport { OFormServiceComponent } from '../o-form-service-component.class';\nimport { OListPickerCustomRenderer } from './listpicker-renderer/o-list-picker-renderer.class';\nimport { OListPickerDialogComponent } from './o-list-picker-dialog.component';\n\nexport const DEFAULT_INPUTS_O_LIST_PICKER = [\n  'filter',\n  'dialogWidth : dialog-width',\n  'dialogHeight : dialog-height',\n  'queryRows: query-rows',\n  'textInputEnabled: text-input-enabled',\n  'dialogDisableClose: dialog-disable-close',\n  'dialogClass: dialog-class'\n];\n\nexport const DEFAULT_OUTPUTS_O_LIST_PICKER = [\n  'onDialogAccept',\n  'onDialogCancel'\n];\n\n@Component({\n  selector: 'o-list-picker',\n  templateUrl: './o-list-picker.component.html',\n  styleUrls: ['./o-list-picker.component.scss'],\n  providers: [\n    OntimizeServiceProvider,\n    { provide: OFormServiceComponent, useExisting: forwardRef(() => OListPickerComponent) }\n  ],\n  inputs: DEFAULT_INPUTS_O_LIST_PICKER,\n  outputs: DEFAULT_OUTPUTS_O_LIST_PICKER\n})\nexport class OListPickerComponent extends OFormServiceComponent implements AfterViewInit, OnChanges, OnInit {\n\n  /* Outputs */\n  public onDialogAccept: EventEmitter<any> = new EventEmitter();\n  public onDialogCancel: EventEmitter<any> = new EventEmitter();\n  /* End outputs */\n\n  public stateCtrl: UntypedFormControl;\n\n  /* Inputs */\n  @BooleanInputConverter()\n  public textInputEnabled: boolean = true;\n  @BooleanInputConverter()\n  public dialogDisableClose: boolean = false;\n  @BooleanInputConverter()\n  protected filter: boolean = true;\n  protected dialogWidth: string;\n  protected dialogHeight: string = '55%';\n  protected dialogClass: string;\n  @NumberInputConverter()\n  protected queryRows: number;\n\n\n  public renderer: OListPickerCustomRenderer;\n\n  protected matDialog: MatDialog;\n  protected dialogRef: MatDialogRef<OListPickerDialogComponent>;\n\n  @ViewChild('inputModel') protected inputModel: MatInput;\n  @ViewChild('visibleInput') protected visibleInput: ElementRef;\n  protected visibleInputValue: any;\n\n  protected blurTimer;\n  protected blurDelay = 200;\n  protected blurPrevent = false;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector) {\n    super(form, elRef, injector);\n    this.matDialog = this.injector.get<MatDialog>(MatDialog);\n    this.stateCtrl = new UntypedFormControl();\n\n    /* overwritte clearButton to true */\n    this.clearButton = true;\n  }\n\n  public ngOnInit(): void {\n    this.initialize();\n    // Ensuring value in the stateCtrl\n    // (just in case it was created with a empty value before the fControl data initialization)\n    if (!Util.isDefined(this.stateCtrl.value)) {\n      this.setStateCtrlValue();\n    }\n  }\n\n  public ngOnChanges(changes: { [propName: string]: SimpleChange }): void {\n    super.ngOnChanges(changes);\n    if (typeof (changes.staticData) !== 'undefined') {\n      this.cacheQueried = true;\n      this.setDataArray(changes.staticData.currentValue);\n    }\n  }\n\n  public createFormControl(cfg?, validators?): OFormControl {\n    this._fControl = super.createFormControl(cfg, validators);\n    this._fControl.fControlChildren = [this.stateCtrl];\n    return this._fControl;\n  }\n\n  public ensureOFormValue(value: any): void {\n    super.ensureOFormValue(value);\n    // This call make the component querying its data multiple times, but getting description value is needed\n    this.syncDataIndex(false);\n  }\n\n  public setEnabled(value: boolean): void {\n    super.setEnabled(value);\n    if (this.stateCtrl && this.hasEnabledPermission() || this.hasVisiblePermission()) {\n      value ? this.stateCtrl.enable() : this.stateCtrl.disable();\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    if (this.queryOnInit) {\n      this.queryData();\n    } else if (this.queryOnBind) {\n      // TODO do it better. When changing tabs it is necessary to invoke new query\n      this.syncDataIndex();\n    }\n  }\n\n  public getDescriptionValue(): string {\n    if (!Util.isDefined(this.descriptionColArray) || !Util.isDefined(this._currentIndex)) {\n      return '';\n    }\n    if (Util.isDefined(this.renderer)) {\n      return this.renderer.getListPickerValue(this.dataArray[this._currentIndex]);\n    } else {\n      return this.getOptionDescriptionValue(this.dataArray[this._currentIndex]);\n    }\n  }\n\n  public onClickClear(e: Event): void {\n    e.preventDefault();\n    e.stopPropagation();\n    if (!this.isReadOnly && this.enabled) {\n      clearTimeout(this.blurTimer);\n      this.blurPrevent = true;\n      this.setValue(undefined);\n    }\n  }\n\n  public onClickInput(e: Event): void {\n    if (!this.textInputEnabled) {\n      this.onClickListpicker(e);\n    }\n  }\n\n  public onClickListpicker(e: Event): void {\n    e.preventDefault();\n    e.stopPropagation();\n    if (!this.isReadOnly && this.enabled) {\n      clearTimeout(this.blurTimer);\n      this.openDialog();\n    }\n  }\n\n  public onDialogClose(evt: any): void {\n    this.dialogRef = null;\n    this.visibleInputValue = undefined;\n    if (evt instanceof Object && typeof evt[this.valueColumn] !== 'undefined') {\n      const self = this;\n      window.setTimeout(() => {\n        self.setValue(evt[self.valueColumn], { changeType: OValueChangeEvent.USER_CHANGE });\n        if (self._fControl) {\n          self._fControl.markAsTouched();\n          self._fControl.markAsDirty();\n        }\n        self.onDialogAccept.emit();\n      }, 0);\n    } else {\n      this.onDialogCancel.emit();\n    }\n  }\n\n  public innerOnBlur(evt: any): void {\n    if (!this.isReadOnly && this.enabled) {\n      const self = this;\n      this.blurTimer = setTimeout(() => {\n        if (!self.blurPrevent) {\n          self._fControl.markAsTouched();\n          self.onBlur.emit(evt);\n          if (self.visibleInputValue !== undefined && self.visibleInputValue.length > 0) {\n            self.openDialog();\n          } else if (self.visibleInputValue !== undefined) {\n            self.setValue(undefined);\n            self.visibleInputValue = undefined;\n          } else {\n            self._fControl.markAsTouched();\n          }\n        }\n        self.blurPrevent = false;\n      }, this.blurDelay);\n    }\n  }\n\n  public onVisibleInputChange(event: any): void {\n    this.visibleInputValue = event.target.value;\n  }\n\n  public onKeydownEnter(val: any): void {\n    clearTimeout(this.blurTimer);\n    this.blurPrevent = true;\n    this.visibleInputValue = val;\n    this.openDialog();\n  }\n\n  protected openDialog(): void {\n    const cfg: MatDialogConfig = {\n      role: 'dialog',\n      disableClose: this.dialogDisableClose,\n      panelClass: ['cdk-overlay-list-picker', 'o-dialog-class', this.dialogClass],\n      data: {\n        data: this.getDialogDataArray(this.dataArray),\n        filter: this.filter,\n        searchVal: this.visibleInputValue,\n        menuColumns: this.visibleColumns, // TODO: improve this, this is passed to `o-search-input` of the dialog\n        visibleColumns: this.visibleColArray,\n        queryRows: this.queryRows,\n        renderer: this.renderer\n      }\n    };\n    if (this.dialogWidth !== undefined) {\n      cfg.width = this.dialogWidth;\n    }\n    if (this.dialogHeight !== undefined) {\n      cfg.height = this.dialogHeight;\n    }\n    this.dialogRef = this.matDialog.open(OListPickerDialogComponent, cfg);\n\n    this.dialogRef.afterClosed().subscribe(result => this.onDialogClose(result));\n  }\n\n  protected getDialogDataArray(dataArray: any[]): any[] {\n    const result: any[] = [];\n    dataArray.forEach((item, itemIndex) => {\n      const newItem = Object.assign({}, item);\n      if (!this.renderer) {\n        newItem._parsedVisibleColumnText = this.getVisibleColumnText(item);\n      }\n      newItem._parsedIndex = itemIndex;\n      result.push(newItem);\n    });\n    return result;\n  }\n\n  protected getVisibleColumnText(item: any) {\n    let element = '';\n    this.visibleColArray.forEach((visibleCol, index) => {\n      element += item[visibleCol];\n      if ((index + 1) < this.visibleColArray.length) {\n        element += this.separator;\n      }\n    });\n    return element;\n  }\n\n\n  public registerRenderer(renderer: any) {\n    this.renderer = renderer;\n    this.renderer.initialize();\n  }\n\n  protected setStateCtrlValue() {\n    let descriptionValue = this.getDescriptionValue();\n    if (typeof descriptionValue === 'string' && descriptionValue.length === 0) {\n      descriptionValue = null;\n    }\n    this.stateCtrl.setValue(descriptionValue);\n  }\n\n  syncDataIndex(queryIfNotFound?: boolean): void {\n    super.syncDataIndex(queryIfNotFound);\n    this.setStateCtrlValue();\n  }\n\n  public selectValue() {\n    const inputEl = document.getElementById('desc_' + this.oattr);\n    if (inputEl) {\n      (inputEl as HTMLInputElement).select();\n    }\n  }\n\n}\n","<div (click)=\"onClickInput($event)\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" [formGroup]=\"getFormGroup()\"\n  [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n  [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\"\n  class=\"custom-error o-list-picker-content\" [oContextMenu]=\"oContextMenu\">\n  <input #inputModel class=\"input-model\" type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\">\n\n  <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [class.custom-width]=\"hasCustomWidth\"\n    [hideRequiredMarker]=\"hideRequiredMarker\" class=\"icon-field\" #innerInputContainer fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n\n    <input #visibleInput matInput type=\"text\" [attr.id]=\"'desc_' + getAttribute()\" [id]=\"'desc_' + getAttribute()\"\n      [formControl]=\"stateCtrl\" [placeholder]=\"placeHolder\"\n      (input)=\"onVisibleInputChange($event)\" (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\"\n      [readonly]=\"isReadOnly || !textInputEnabled\" [required]=\"isRequired\"\n      (keydown.enter)=\"onKeydownEnter(visibleInput.value)\" (change)=\"onChangeEvent($event)\">\n\n    <button type=\"button\" [disabled]=\"isReadOnly || !enabled\" [class.read-only]=\"isReadOnly\" matSuffix mat-icon-button\n      (click)=\"onClickListpicker($event)\">\n      <mat-icon svgIcon=\"ontimize:search\"></mat-icon>\n    </button>\n\n    <button type=\"button\" [disabled]=\"isReadOnly || !enabled\" [class.read-only]=\"isReadOnly\" matSuffix mat-icon-button\n      (click)=\"onClickClearValue($event)\" *ngIf=\"showClearButton\">\n      <mat-icon svgIcon=\"ontimize:clear\"></mat-icon>\n    </button>\n\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n      {{ oError.text | oTranslate }}\n    </mat-error>\n  </mat-form-field>\n\n  <o-context-menu *ngIf=\"!this.isReadOnly && this.enabled\">\n    <o-context-menu-item attr=\"refresh\" label=\"FORM_SERVICE_COMPONENT.REFRESH\" svg-icon=\"ontimize:autorenew\" (execute)=\"refresh()\">\n    </o-context-menu-item>\n  </o-context-menu>\n</div>\n","import { Injector, OnInit, PipeTransform, TemplateRef, Directive } from '@angular/core';\n\nimport { Util } from '../../../../util/util';\nimport { OListPickerComponent } from '../o-list-picker.component';\n\nexport const DEFAULT_INPUTS_O_LISTPICKER_RENDERER = [];\n@Directive()\nexport class OListPickerCustomRenderer implements OnInit {\n\n  public templateref: TemplateRef<any>;\n  public listpickerComponent: OListPickerComponent;\n\n  protected pipeArguments: any;\n  protected componentPipe: PipeTransform;\n  constructor(protected injector: Injector) {\n    this.listpickerComponent = this.injector.get(OListPickerComponent);\n  }\n\n  public ngOnInit() {\n    this.initialize();\n  }\n\n  public initialize(): void {\n  }\n\n  public ngAfterContentInit(): void {\n    this.registerRenderer();\n  }\n\n  public registerRenderer(): void {\n    this.listpickerComponent.registerRenderer(this);\n  }\n\n  /**\n   * Returns the displayed value for listPicker\n   * @param value Internal listPicker value\n  */\n\n  public getListPickerValue(record: any): string {\n    let result = '';\n    if (!Util.isDefined(record)) {\n      return result;\n    }\n    this.listpickerComponent.descriptionColArray.forEach((col, index) => {\n      if (Util.isDefined(record[col])) {\n        let value = record[col];\n        if (this.componentPipe && this.pipeArguments != null) {\n          value = this.componentPipe.transform(value, this.pipeArguments);\n        }\n        if (Util.isDefined(value)) {\n          result += value;\n\n          if (index < this.listpickerComponent.descriptionColArray.length - 1) {\n            result += this.listpickerComponent.separator;\n          }\n        }\n      }\n    });\n    return result;\n  }\n}\n","import { AfterContentInit, ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { IIntegerPipeArgument, OIntegerPipe } from '../../../../../pipes/o-integer.pipe';\nimport { DEFAULT_INPUTS_O_LISTPICKER_RENDERER, OListPickerCustomRenderer } from '../o-list-picker-renderer.class';\n\nexport const DEFAULT_INPUTS_O_LISTPICKER_RENDERER_INTEGER = [\n  ...DEFAULT_INPUTS_O_LISTPICKER_RENDERER,\n  // grouping [no|yes]: grouping thousands. Default: yes.\n  'grouping',\n  // thousand-separator [string]: thousands separator when grouping. Default: comma (,).\n  'thousandSeparator: thousand-separator'\n];\n\n@Component({\n  selector: 'o-list-picker-renderer-integer',\n  templateUrl: './o-list-picker-renderer-integer.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_LISTPICKER_RENDERER_INTEGER\n})\nexport class OListPickerRendererIntegerComponent extends OListPickerCustomRenderer implements AfterContentInit, OnInit {\n\n  @BooleanInputConverter()\n  protected grouping: boolean = true;\n  protected thousandSeparator: string = ',';\n  protected componentPipe: OIntegerPipe;\n  protected pipeArguments: IIntegerPipeArgument;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OIntegerPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.pipeArguments = {\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator\n    };\n  }\n\n}\n","<ng-template #templateref let-value=\"value\">\n  {{getListPickerValue(value)}}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { NumberInputConverter } from '../../../../../decorators/input-converter';\nimport { IRealPipeArgument, ORealPipe } from '../../../../../pipes/o-real.pipe';\nimport { NumberService } from '../../../../../services/number.service';\nimport { DEFAULT_INPUTS_O_LISTPICKER_RENDERER_INTEGER, OListPickerRendererIntegerComponent } from '../integer/o-list-picker-renderer-integer.component';\n\nexport const DEFAULT_INPUTS_O_LISTPICKER_RENDERER_REAL = [\n  ...DEFAULT_INPUTS_O_LISTPICKER_RENDERER_INTEGER,\n  // decimal-separator [string]: decimal separator. Default: dot (.).\n  'decimalSeparator: decimal-separator',\n  'minDecimalDigits: min-decimal-digits',\n  'maxDecimalDigits: max-decimal-digits'\n];\n\n@Component({\n  selector: 'o-list-picker-renderer-real',\n  templateUrl: './o-list-picker-renderer-real.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_LISTPICKER_RENDERER_REAL\n})\nexport class OListPickerRendererRealComponent extends OListPickerRendererIntegerComponent implements OnInit {\n\n  @NumberInputConverter()\n  minDecimalDigits: number = 2;\n  @NumberInputConverter()\n  maxDecimalDigits: number = 2;\n\n  protected decimalSeparator: string = '.';\n\n  protected componentPipe: ORealPipe;\n  protected pipeArguments: IRealPipeArgument;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new ORealPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.pipeArguments = {\n      minDecimalDigits: this.minDecimalDigits,\n      maxDecimalDigits: this.maxDecimalDigits,\n      decimalSeparator: this.decimalSeparator,\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator\n    };\n  }\n\n}\n","<ng-template #templateref let-value=\"value\">\n  {{getListPickerValue(value)}}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { NumberInputConverter } from '../../../../../decorators/input-converter';\nimport { ICurrencyPipeArgument, OCurrencyPipe } from '../../../../../pipes/o-currency.pipe';\nimport { CurrencyService } from '../../../../../services/currency.service';\nimport { OListPickerRendererRealComponent } from '../real/o-list-picker-renderer-real.component';\n\nexport const DEFAULT_INPUTS_O_LISTPICKER_RENDERER_CURRENCY = [\n  // currency-symbol [string]: currency symbol. Default: dollar ($).\n  'currencySymbol: currency-symbol',\n\n  // currency-symbol-position [left|right]: position of the currency symbol. Default: left.\n  'currencySymbolPosition: currency-symbol-position'\n];\n\n@Component({\n  selector: 'o-list-picker-renderer-currency',\n  templateUrl: './o-list-picker-renderer-currency.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_LISTPICKER_RENDERER_CURRENCY\n})\nexport class OListPickerRendererCurrencyComponent extends OListPickerRendererRealComponent implements OnInit {\n\n  @NumberInputConverter()\n  minDecimalDigits: number = 2;\n  @NumberInputConverter()\n  maxDecimalDigits: number = 2;\n\n  protected currencySymbol: string;\n  protected currencySymbolPosition: string;\n  protected decimalSeparator: string = '.';\n\n  protected grouping: boolean = true;\n  protected thousandSeparator: string = ',';\n\n  protected currencyService: CurrencyService;\n\n  protected componentPipe: OCurrencyPipe;\n  protected pipeArguments: ICurrencyPipeArgument;\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.currencyService = this.injector.get(CurrencyService);\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OCurrencyPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    if (typeof this.currencySymbol === 'undefined') {\n      this.currencySymbol = this.currencyService.symbol;\n    }\n    if (typeof this.currencySymbolPosition === 'undefined') {\n      this.currencySymbolPosition = this.currencyService.symbolPosition;\n    }\n\n    this.pipeArguments = {\n      currencySimbol: this.currencySymbol,\n      currencySymbolPosition: this.currencySymbolPosition,\n      minDecimalDigits: this.minDecimalDigits,\n      maxDecimalDigits: this.maxDecimalDigits,\n      decimalSeparator: this.decimalSeparator,\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator\n    };\n\n  }\n\n}\n","<ng-template #templateref let-value=\"value\">\n  {{getListPickerValue(value)}}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { IMomentPipeArgument, OMomentPipe } from '../../../../../pipes/o-moment.pipe';\nimport { DEFAULT_INPUTS_O_LISTPICKER_RENDERER, OListPickerCustomRenderer } from '../o-list-picker-renderer.class';\n\nexport const DEFAULT_INPUTS_O_LISTPICKER_RENDERER_DATE = [\n  ...DEFAULT_INPUTS_O_LISTPICKER_RENDERER,\n  // format [string]: date format. See MomentJS (http://momentjs.com/).\n  'format'\n];\n\n@Component({\n  selector: 'o-list-picker-renderer-date',\n  templateUrl: './o-list-picker-renderer-date.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_LISTPICKER_RENDERER_DATE\n})\nexport class OListPickerRendererDateComponent extends OListPickerCustomRenderer implements OnInit {\n\n  protected componentPipe: OMomentPipe;\n  protected pipeArguments: IMomentPipeArgument;\n\n  protected format: string;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OMomentPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    // Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n    this.pipeArguments = {\n      format: this.format\n    };\n  }\n}\n","<ng-template #templateref let-value=\"value\">\n  {{getListPickerValue(value)}}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { IPercentPipeArgument, OPercentageValueBaseType, OPercentPipe } from '../../../../../pipes/o-percentage.pipe';\nimport { DEFAULT_INPUTS_O_LISTPICKER_RENDERER_REAL, OListPickerRendererRealComponent } from '../real/o-list-picker-renderer-real.component';\n\nexport const DEFAULT_INPUTS_O_LISTPICKER_RENDERER_PERCENTAGE = [\n  ...DEFAULT_INPUTS_O_LISTPICKER_RENDERER_REAL,\n  'valueBase: value-base'\n];\n\n@Component({\n  selector: 'o-list-picker-renderer-percentage',\n  templateUrl: './o-list-picker-renderer-percentage.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_LISTPICKER_RENDERER_PERCENTAGE\n})\nexport class OListPickerRendererPercentageComponent extends OListPickerRendererRealComponent implements OnInit {\n\n  decimalSeparator: string = '.';\n  minDecimalDigits = 0;\n  maxDecimalDigits = 0;\n  valueBase: OPercentageValueBaseType = 1;\n\n\n  protected componentPipe: OPercentPipe;\n  protected pipeArguments: IPercentPipeArgument;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OPercentPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.pipeArguments = {\n      minDecimalDigits: this.minDecimalDigits,\n      maxDecimalDigits: this.maxDecimalDigits,\n      decimalSeparator: this.decimalSeparator,\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator,\n      valueBase: this.valueBase\n    };\n  }\n\n}\n","<ng-template #templateref let-value=\"value\">\n  {{getListPickerValue(value)}}\n</ng-template>\n","import {\n  DEFAULT_INPUTS_O_LISTPICKER_RENDERER_CURRENCY,\n  OListPickerRendererCurrencyComponent\n} from './currency/o-list-picker-renderer-currency.component';\nimport {\n  DEFAULT_INPUTS_O_LISTPICKER_RENDERER_DATE,\n  OListPickerRendererDateComponent\n} from './date/o-list-picker-renderer-date.component';\nimport { OListPickerRendererIntegerComponent } from './integer/o-list-picker-renderer-integer.component';\nimport {\n  DEFAULT_INPUTS_O_LISTPICKER_RENDERER_PERCENTAGE,\n  OListPickerRendererPercentageComponent\n} from './percentage/o-list-picker-renderer-percentage.component';\nimport { OListPickerRendererRealComponent } from './real/o-list-picker-renderer-real.component';\n\nexport const O_LISTPICKER_RENDERERS = [\n  OListPickerRendererIntegerComponent,\n  OListPickerRendererRealComponent,\n  OListPickerRendererCurrencyComponent,\n  OListPickerRendererDateComponent,\n  OListPickerRendererPercentageComponent\n];\n\nexport const O_LISTPICKER_RENDERERS_INPUTS = [\n  ...DEFAULT_INPUTS_O_LISTPICKER_RENDERER_CURRENCY, // includes Integer and Real\n  ...DEFAULT_INPUTS_O_LISTPICKER_RENDERER_DATE,\n  ...DEFAULT_INPUTS_O_LISTPICKER_RENDERER_PERCENTAGE\n];\n\nexport const O_LISTPICKER_RENDERERS_OUTPUTS = [\n];\n\nexport const renderersMapping = {\n  integer: OListPickerRendererIntegerComponent,\n  real: OListPickerRendererRealComponent,\n  currency: OListPickerRendererCurrencyComponent,\n  date: OListPickerRendererDateComponent,\n  percentage: OListPickerRendererPercentageComponent\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OContextMenuModule } from '../../contextmenu/o-context-menu.module';\nimport { OSearchInputModule } from '../search-input/o-search-input.module';\nimport { O_LISTPICKER_RENDERERS } from './listpicker-renderer/listpicker-renderer';\nimport { OListPickerDialogComponent } from './o-list-picker-dialog.component';\nimport { OListPickerComponent } from './o-list-picker.component';\n\n@NgModule({\n    declarations: [OListPickerDialogComponent, OListPickerComponent, ...O_LISTPICKER_RENDERERS],\n    imports: [CommonModule, OSharedModule, OSearchInputModule, OContextMenuModule],\n    exports: [OListPickerComponent, ...O_LISTPICKER_RENDERERS]\n})\nexport class OListPickerModule { }\n","import { Component, ElementRef, forwardRef, Inject, Injector, OnInit, Optional, ViewEncapsulation } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\n\nimport { OValidators } from '../../../validators/o-validators';\nimport { OFormComponent } from '../../form/o-form.component';\nimport {\n  OTextInputComponent\n} from '../text-input/o-text-input.component';\n\n@Component({\n  selector: 'o-nif-input',\n  templateUrl: './o-nif-input.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class ONIFInputComponent extends OTextInputComponent implements OnInit {\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector) {\n    super(form, elRef, injector);\n  }\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    // Inject NIF validator\n    validators.push(OValidators.nifValidator);\n    return validators;\n  }\n\n}\n","<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\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <input matInput type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\" (focus)=\"innerOnFocus($event)\"\n      (blur)=\"innerOnBlur($event)\" (change)=\"onChangeEvent($event)\" [readonly]=\"isReadOnly\" [required]=\"isRequired\" [maxlength]=\"maxLength\"\n      [minlength]=\"minLength\">\n    <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\n    <mat-icon matSuffix [class.mat-disabled]=\"!enabled\" svgIcon=\"ontimize:perm_identity\"></mat-icon>\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('invalidNIF')\">\n      {{ 'FORM_VALIDATION.NIF_FORMAT' | oTranslate}}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('invalidNIFLetter')\">\n      {{ 'FORM_VALIDATION.DNI_LETTER' | oTranslate}}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('minlength')\">\n      {{ 'FORM_VALIDATION.MIN_LENGTH' | oTranslate }}: {{ getErrorValue('minlength', 'requiredLength') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('maxlength')\">\n      {{ 'FORM_VALIDATION.MAX_LENGTH' | oTranslate }}: {{ getErrorValue('maxlength', 'requiredLength') }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OTextInputModule } from '../text-input/o-text-input.module';\nimport { ONIFInputComponent } from './o-nif-input.component';\n\n@NgModule({\n  declarations: [ONIFInputComponent],\n  imports: [OSharedModule, CommonModule, OTextInputModule],\n  exports: [ONIFInputComponent]\n})\nexport class ONIFInputModule {\n}\n","import { Component, ElementRef, forwardRef, Inject, Injector, OnInit, Optional, ViewEncapsulation } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OTextInputComponent } from '../text-input/o-text-input.component';\n\nexport const DEFAULT_INPUTS_O_PASSWORD_INPUT = [\n  'showPasswordButton : show-password-button'\n];\n\n@Component({\n  selector: 'o-password-input',\n  templateUrl: './o-password-input.component.html',\n  inputs: DEFAULT_INPUTS_O_PASSWORD_INPUT,\n  encapsulation: ViewEncapsulation.None\n})\nexport class OPasswordInputComponent extends OTextInputComponent implements OnInit {\n  public hide: boolean = true;\n  @BooleanInputConverter()\n  public showPasswordButton: boolean = false;\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector) {\n    super(form, elRef, injector);\n  }\n\n}\n","<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\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <input matInput [type]=\"hide ? 'password' : 'text'\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n      (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" (change)=\"onChangeEvent($event)\" [readonly]=\"isReadOnly\" [required]=\"isRequired\">\n    <mat-icon *ngIf='showPasswordButton && !isReadOnly && enabled' matSuffix (click)=\"hide = !hide\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\n    <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\n    <mat-icon matSuffix [class.mat-disabled]=\"!enabled\" svgIcon=\"ontimize:vpn_key\"></mat-icon>\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('minlength')\">\n      {{ 'FORM_VALIDATION.MIN_LENGTH' | oTranslate }}: {{ getErrorValue('minlength', 'requiredLength') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('maxlength')\">\n      {{ 'FORM_VALIDATION.MAX_LENGTH' | oTranslate }}: {{ getErrorValue('maxlength', 'requiredLength') }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OTextInputModule } from '../text-input/o-text-input.module';\nimport { OPasswordInputComponent } from './o-password-input.component';\n\n@NgModule({\n  declarations: [OPasswordInputComponent],\n  imports: [OSharedModule, CommonModule, OTextInputModule],\n  exports: [OPasswordInputComponent]\n})\nexport class OPasswordInputModule {\n}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { IPercentPipeArgument, OPercentageValueBaseType, OPercentPipe } from '../../../pipes/o-percentage.pipe';\nimport { Util } from '../../../util/util';\nimport { ORealInputComponent } from '../real-input/o-real-input.component';\n\n\nexport const DEFAULT_INPUTS_O_PERCENT_INPUT = [\n  'valueBase: value-base'\n];\n\nexport const DEFAULT_OUTPUTS_O_PERCENT_INPUT = [\n];\n\n@Component({\n  selector: 'o-percent-input',\n  templateUrl: './o-percent-input.component.html',\n  inputs: DEFAULT_INPUTS_O_PERCENT_INPUT,\n  outputs: DEFAULT_OUTPUTS_O_PERCENT_INPUT,\n  encapsulation: ViewEncapsulation.None\n})\nexport class OPercentInputComponent extends ORealInputComponent implements OnInit {\n\n  @BooleanInputConverter()\n  grouping: boolean = true;\n\n  valueBase: OPercentageValueBaseType = 1;\n\n  protected componentPipe: OPercentPipe;\n  protected pipeArguments: IPercentPipeArgument;\n\n  public ngOnInit() {\n    if (!Util.isDefined(this.min)) {\n      this.min = 0;\n    }\n    if (!Util.isDefined(this.max)) {\n      this.max = 100;\n    }\n    super.ngOnInit();\n\n    this.pipeArguments.valueBase = this.valueBase;\n  }\n\n  setComponentPipe(): void {\n    this.componentPipe = new OPercentPipe(this.injector);\n  }\n}\n","<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n  [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n  <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n    class=\"icon-field\" fxFlexFill [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\" (change)=\"onChangeEvent($event)\" [min]=\"min\" [max]=\"max\"\n      [step]=\"step\" [required]=\"isRequired\">\n    <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\n    <mat-icon svgIcon=\"ontimize:PERCENT\" matSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\"></mat-icon>\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', 'min') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('max')\">\n      {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'max') }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { ORealInputModule } from '../real-input/o-real-input.module';\nimport { OPercentInputComponent } from './o-percent-input.component';\n\n@NgModule({\n  declarations: [OPercentInputComponent],\n  imports: [CommonModule, OSharedModule, ORealInputModule],\n  exports: [OPercentInputComponent]\n})\nexport class OPercentInputModule { }\n","export enum CountryISO {\n\tAfghanistan = 'af',\n\tAlbania = 'al',\n\tAlgeria = 'dz',\n\tAmericanSamoa = 'as',\n\tAndorra = 'ad',\n\tAngola = 'ao',\n\tAnguilla = 'ai',\n\tAntiguaAndBarbuda = 'ag',\n\tArgentina = 'ar',\n\tArmenia = 'am',\n\tAruba = 'aw',\n\tAustralia = 'au',\n\tAustria = 'at',\n\tAzerbaijan = 'az',\n\tBahamas = 'bs',\n\tBahrain = 'bh',\n\tBangladesh = 'bd',\n\tBarbados = 'bb',\n\tBelarus = 'by',\n\tBelgium = 'be',\n\tBelize = 'bz',\n\tBenin = 'bj',\n\tBermuda = 'bm',\n\tBhutan = 'bt',\n\tBolivia = 'bo',\n\tBosniaAndHerzegovina = 'ba',\n\tBotswana = 'bw',\n\tBrazil = 'br',\n\tBritishIndianOceanTerritory = 'io',\n\tBritishVirginIslands = 'vg',\n\tBrunei = 'bn',\n\tBulgaria = 'bg',\n\tBurkinaFaso = 'bf',\n\tBurundi = 'bi',\n\tCambodia = 'kh',\n\tCameroon = 'cm',\n\tCanada = 'ca',\n\tCapeVerde = 'cv',\n\tCaribbeanNetherlands = 'bq',\n\tCaymanIslands = 'ky',\n\tCentralAfricanRepublic = 'cf',\n\tChad = 'td',\n\tChile = 'cl',\n\tChina = 'cn',\n\tChristmasIsland = 'cx',\n\tCocos = 'cc',\n\tColombia = 'co',\n\tComoros = 'km',\n\tCongoDRCJamhuriYaKidemokrasiaYaKongo = 'cd',\n\tCongoRepublicCongoBrazzaville = 'cg',\n\tCookIslands = 'ck',\n\tCostaRica = 'cr',\n\tCôteDIvoire = 'ci',\n\tCroatia = 'hr',\n\tCuba = 'cu',\n\tCuraçao = 'cw',\n\tCyprus = 'cy',\n\tCzechRepublic = 'cz',\n\tDenmark = 'dk',\n\tDjibouti = 'dj',\n\tDominica = 'dm',\n\tDominicanRepublic = 'do',\n\tEcuador = 'ec',\n\tEgypt = 'eg',\n\tElSalvador = 'sv',\n\tEquatorialGuinea = 'gq',\n\tEritrea = 'er',\n\tEstonia = 'ee',\n\tEthiopia = 'et',\n\tFalklandIslands = 'fk',\n\tFaroeIslands = 'fo',\n\tFiji = 'fj',\n\tFinland = 'fi',\n\tFrance = 'fr',\n\tFrenchGuiana = 'gf',\n\tFrenchPolynesia = 'pf',\n\tGabon = 'ga',\n\tGambia = 'gm',\n\tGeorgia = 'ge',\n\tGermany = 'de',\n\tGhana = 'gh',\n\tGibraltar = 'gi',\n\tGreece = 'gr',\n\tGreenland = 'gl',\n\tGrenada = 'gd',\n\tGuadeloupe = 'gp',\n\tGuam = 'gu',\n\tGuatemala = 'gt',\n\tGuernsey = 'gg',\n\tGuinea = 'gn',\n\tGuineaBissau = 'gw',\n\tGuyana = 'gy',\n\tHaiti = 'ht',\n\tHonduras = 'hn',\n\tHongKong = 'hk',\n\tHungary = 'hu',\n\tIceland = 'is',\n\tIndia = 'in',\n\tIndonesia = 'id',\n\tIran = 'ir',\n\tIraq = 'iq',\n\tIreland = 'ie',\n\tIsleOfMan = 'im',\n\tIsrael = 'il',\n\tItaly = 'it',\n\tJamaica = 'jm',\n\tJapan = 'jp',\n\tJersey = 'je',\n\tJordan = 'jo',\n\tKazakhstan = 'kz',\n\tKenya = 'ke',\n\tKiribati = 'ki',\n\tKosovo = 'xk',\n\tKuwait = 'kw',\n\tKyrgyzstan = 'kg',\n\tLaos = 'la',\n\tLatvia = 'lv',\n\tLebanon = 'lb',\n\tLesotho = 'ls',\n\tLiberia = 'lr',\n\tLibya = 'ly',\n\tLiechtenstein = 'li',\n\tLithuania = 'lt',\n\tLuxembourg = 'lu',\n\tMacau = 'mo',\n\tMacedonia = 'mk',\n\tMadagascar = 'mg',\n\tMalawi = 'mw',\n\tMalaysia = 'my',\n\tMaldives = 'mv',\n\tMali = 'ml',\n\tMalta = 'mt',\n\tMarshallIslands = 'mh',\n\tMartinique = 'mq',\n\tMauritania = 'mr',\n\tMauritius = 'mu',\n\tMayotte = 'yt',\n\tMexico = 'mx',\n\tMicronesia = 'fm',\n\tMoldova = 'md',\n\tMonaco = 'mc',\n\tMongolia = 'mn',\n\tMontenegro = 'me',\n\tMontserrat = 'ms',\n\tMorocco = 'ma',\n\tMozambique = 'mz',\n\tMyanmar = 'mm',\n\tNamibia = 'na',\n\tNauru = 'nr',\n\tNepal = 'np',\n\tNetherlands = 'nl',\n\tNewCaledonia = 'nc',\n\tNewZealand = 'nz',\n\tNicaragua = 'ni',\n\tNiger = 'ne',\n\tNigeria = 'ng',\n\tNiue = 'nu',\n\tNorfolkIsland = 'nf',\n\tNorthKorea = 'kp',\n\tNorthernMarianaIslands = 'mp',\n\tNorway = 'no',\n\tOman = 'om',\n\tPakistan = 'pk',\n\tPalau = 'pw',\n\tPalestine = 'ps',\n\tPanama = 'pa',\n\tPapuaNewGuinea = 'pg',\n\tParaguay = 'py',\n\tPeru = 'pe',\n\tPhilippines = 'ph',\n\tPoland = 'pl',\n\tPortugal = 'pt',\n\tPuertoRico = 'pr',\n\tQatar = 'qa',\n\tRéunion = 're',\n\tRomania = 'ro',\n\tRussia = 'ru',\n\tRwanda = 'rw',\n\tSaintBarthélemy = 'bl',\n\tSaintHelena = 'sh',\n\tSaintKittsAndNevis = 'kn',\n\tSaintLucia = 'lc',\n\tSaintMartin = 'mf',\n\tSaintPierreAndMiquelon = 'pm',\n\tSaintVincentAndTheGrenadines = 'vc',\n\tSamoa = 'ws',\n\tSanMarino = 'sm',\n\tSãoToméAndPríncipe = 'st',\n\tSaudiArabia = 'sa',\n\tSenegal = 'sn',\n\tSerbia = 'rs',\n\tSeychelles = 'sc',\n\tSierraLeone = 'sl',\n\tSingapore = 'sg',\n\tSintMaarten = 'sx',\n\tSlovakia = 'sk',\n\tSlovenia = 'si',\n\tSolomonIslands = 'sb',\n\tSomalia = 'so',\n\tSouthAfrica = 'za',\n\tSouthKorea = 'kr',\n\tSouthSudan = 'ss',\n\tSpain = 'es',\n\tSriLanka = 'lk',\n\tSudan = 'sd',\n\tSuriname = 'sr',\n\tSvalbardAndJanMayen = 'sj',\n\tSwaziland = 'sz',\n\tSweden = 'se',\n\tSwitzerland = 'ch',\n\tSyria = 'sy',\n\tTaiwan = 'tw',\n\tTajikistan = 'tj',\n\tTanzania = 'tz',\n\tThailand = 'th',\n\tTimorLeste = 'tl',\n\tTogo = 'tg',\n\tTokelau = 'tk',\n\tTonga = 'to',\n\tTrinidadAndTobago = 'tt',\n\tTunisia = 'tn',\n\tTurkey = 'tr',\n\tTurkmenistan = 'tm',\n\tTurksAndCaicosIslands = 'tc',\n\tTuvalu = 'tv',\n\tUSVirginIslands = 'vi',\n\tUganda = 'ug',\n\tUkraine = 'ua',\n\tUnitedArabEmirates = 'ae',\n\tUnitedKingdom = 'gb',\n\tUnitedStates = 'us',\n\tUruguay = 'uy',\n\tUzbekistan = 'uz',\n\tVanuatu = 'vu',\n\tVaticanCity = 'va',\n\tVenezuela = 've',\n\tVietnam = 'vn',\n\tWallisAndFutuna = 'wf',\n\tWesternSahara = 'eh',\n\tYemen = 'ye',\n\tZambia = 'zm',\n\tZimbabwe = 'zw',\n\tÅlandIslands = 'ax',\n}\n","import { Injectable } from \"@angular/core\";\nimport { CountryISO } from '../enums/country-iso.enum';\n\n@Injectable()\nexport class CountryCode {\n\tpublic allCountries = [\n\t\t[\n\t\t\t'Afghanistan (‫افغانستان‬‎)',\n\t\t\tCountryISO.Afghanistan,\n\t\t\t'93'\n\t\t],\n\t\t[\n\t\t\t'Albania (Shqipëri)',\n\t\t\tCountryISO.Albania,\n\t\t\t'355'\n\t\t],\n\t\t[\n\t\t\t'Algeria (‫الجزائر‬‎)',\n\t\t\tCountryISO.Algeria,\n\t\t\t'213'\n\t\t],\n\t\t[\n\t\t\t'American Samoa',\n\t\t\t'as',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'684',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Andorra',\n\t\t\tCountryISO.Andorra,\n\t\t\t'376'\n\t\t],\n\t\t[\n\t\t\t'Angola',\n\t\t\tCountryISO.Angola,\n\t\t\t'244'\n\t\t],\n\t\t[\n\t\t\t'Anguilla',\n\t\t\t'ai',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'264',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Antigua and Barbuda',\n\t\t\t'ag',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'268',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Argentina',\n\t\t\tCountryISO.Argentina,\n\t\t\t'54'\n\t\t],\n\t\t[\n\t\t\t'Armenia (Հայաստան)',\n\t\t\tCountryISO.Armenia,\n\t\t\t'374'\n\t\t],\n\t\t[\n\t\t\t'Aruba',\n\t\t\tCountryISO.Aruba,\n\t\t\t'297'\n\t\t],\n\t\t[\n\t\t\t'Australia',\n\t\t\tCountryISO.Australia,\n\t\t\t'61',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Austria (Österreich)',\n\t\t\tCountryISO.Austria,\n\t\t\t'43'\n\t\t],\n\t\t[\n\t\t\t'Azerbaijan (Azərbaycan)',\n\t\t\tCountryISO.Azerbaijan,\n\t\t\t'994'\n\t\t],\n\t\t[\n\t\t\t'Bahamas',\n\t\t\t'bs',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'242',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Bahrain (‫البحرين‬‎)',\n\t\t\tCountryISO.Bahrain,\n\t\t\t'973'\n\t\t],\n\t\t[\n\t\t\t'Bangladesh (বাংলাদেশ)',\n\t\t\tCountryISO.Bangladesh,\n\t\t\t'880'\n\t\t],\n\t\t[\n\t\t\t'Barbados',\n\t\t\t'bb',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'246',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Belarus (Беларусь)',\n\t\t\tCountryISO.Belarus,\n\t\t\t'375'\n\t\t],\n\t\t[\n\t\t\t'Belgium (België)',\n\t\t\tCountryISO.Belgium,\n\t\t\t'32'\n\t\t],\n\t\t[\n\t\t\t'Belize',\n\t\t\tCountryISO.Belize,\n\t\t\t'501'\n\t\t],\n\t\t[\n\t\t\t'Benin (Bénin)',\n\t\t\tCountryISO.Benin,\n\t\t\t'229'\n\t\t],\n\t\t[\n\t\t\t'Bermuda',\n\t\t\t'bm',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'441',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Bhutan (འབྲུག)',\n\t\t\tCountryISO.Bhutan,\n\t\t\t'975'\n\t\t],\n\t\t[\n\t\t\t'Bolivia',\n\t\t\tCountryISO.Bolivia,\n\t\t\t'591'\n\t\t],\n\t\t[\n\t\t\t'Bosnia and Herzegovina (Босна и Херцеговина)',\n\t\t\tCountryISO.BosniaAndHerzegovina,\n\t\t\t'387'\n\t\t],\n\t\t[\n\t\t\t'Botswana',\n\t\t\tCountryISO.Botswana,\n\t\t\t'267'\n\t\t],\n\t\t[\n\t\t\t'Brazil (Brasil)',\n\t\t\tCountryISO.Brazil,\n\t\t\t'55'\n\t\t],\n\t\t[\n\t\t\t'British Indian Ocean Territory',\n\t\t\tCountryISO.BritishIndianOceanTerritory,\n\t\t\t'246'\n\t\t],\n\t\t[\n\t\t\t'British Virgin Islands',\n\t\t\t'vg',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'284',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Brunei',\n\t\t\tCountryISO.Brunei,\n\t\t\t'673'\n\t\t],\n\t\t[\n\t\t\t'Bulgaria (България)',\n\t\t\tCountryISO.Bulgaria,\n\t\t\t'359'\n\t\t],\n\t\t[\n\t\t\t'Burkina Faso',\n\t\t\tCountryISO.BurkinaFaso,\n\t\t\t'226'\n\t\t],\n\t\t[\n\t\t\t'Burundi (Uburundi)',\n\t\t\tCountryISO.Burundi,\n\t\t\t'257'\n\t\t],\n\t\t[\n\t\t\t'Cambodia (កម្ពុជា)',\n\t\t\tCountryISO.Cambodia,\n\t\t\t'855'\n\t\t],\n\t\t[\n\t\t\t'Cameroon (Cameroun)',\n\t\t\tCountryISO.Cameroon,\n\t\t\t'237'\n\t\t],\n\t\t[\n\t\t\t'Canada',\n\t\t\tCountryISO.Canada,\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'204', '226', '236', '249', '250', '289', '306', '343', '365', '387', '403', '416',\n\t\t\t\t'418', '431', '437', '438', '450', '506', '514', '519', '548', '579', '581', '587',\n\t\t\t\t'604', '613', '639', '647', '672', '705', '709', '742', '778', '780', '782', '807',\n\t\t\t\t'819', '825', '867', '873', '902', '905'\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Cape Verde (Kabu Verdi)',\n\t\t\tCountryISO.CapeVerde,\n\t\t\t'238'\n\t\t],\n\t\t[\n\t\t\t'Caribbean Netherlands',\n\t\t\tCountryISO.CaribbeanNetherlands,\n\t\t\t'599',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Cayman Islands',\n\t\t\t'ky',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'345',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Central African Republic (République centrafricaine)',\n\t\t\tCountryISO.CentralAfricanRepublic,\n\t\t\t'236'\n\t\t],\n\t\t[\n\t\t\t'Chad (Tchad)',\n\t\t\tCountryISO.Chad,\n\t\t\t'235'\n\t\t],\n\t\t[\n\t\t\t'Chile',\n\t\t\tCountryISO.Chile,\n\t\t\t'56'\n\t\t],\n\t\t[\n\t\t\t'China (中国)',\n\t\t\tCountryISO.China,\n\t\t\t'86'\n\t\t],\n\t\t[\n\t\t\t'Christmas Island',\n\t\t\tCountryISO.ChristmasIsland,\n\t\t\t'61',\n\t\t\t2\n\t\t],\n\t\t[\n\t\t\t'Cocos (Keeling) Islands',\n\t\t\tCountryISO.Cocos,\n\t\t\t'61',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Colombia',\n\t\t\tCountryISO.Colombia,\n\t\t\t'57'\n\t\t],\n\t\t[\n\t\t\t'Comoros (‫جزر القمر‬‎)',\n\t\t\tCountryISO.Comoros,\n\t\t\t'269'\n\t\t],\n\t\t[\n\t\t\t'Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)',\n\t\t\tCountryISO.CongoDRCJamhuriYaKidemokrasiaYaKongo,\n\t\t\t'243'\n\t\t],\n\t\t[\n\t\t\t'Congo (Republic) (Congo-Brazzaville)',\n\t\t\tCountryISO.CongoRepublicCongoBrazzaville,\n\t\t\t'242'\n\t\t],\n\t\t[\n\t\t\t'Cook Islands',\n\t\t\tCountryISO.CookIslands,\n\t\t\t'682'\n\t\t],\n\t\t[\n\t\t\t'Costa Rica',\n\t\t\tCountryISO.CostaRica,\n\t\t\t'506'\n\t\t],\n\t\t[\n\t\t\t'Côte d’Ivoire',\n\t\t\tCountryISO.CôteDIvoire,\n\t\t\t'225'\n\t\t],\n\t\t[\n\t\t\t'Croatia (Hrvatska)',\n\t\t\tCountryISO.Croatia,\n\t\t\t'385'\n\t\t],\n\t\t[\n\t\t\t'Cuba',\n\t\t\tCountryISO.Cuba,\n\t\t\t'53'\n\t\t],\n\t\t[\n\t\t\t'Curaçao',\n\t\t\tCountryISO.Curaçao,\n\t\t\t'599',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Cyprus (Κύπρος)',\n\t\t\tCountryISO.Cyprus,\n\t\t\t'357'\n\t\t],\n\t\t[\n\t\t\t'Czech Republic (Česká republika)',\n\t\t\tCountryISO.CzechRepublic,\n\t\t\t'420'\n\t\t],\n\t\t[\n\t\t\t'Denmark (Danmark)',\n\t\t\tCountryISO.Denmark,\n\t\t\t'45'\n\t\t],\n\t\t[\n\t\t\t'Djibouti',\n\t\t\tCountryISO.Djibouti,\n\t\t\t'253'\n\t\t],\n\t\t[\n\t\t\t'Dominica',\n\t\t\tCountryISO.Dominica,\n\t\t\t'1767'\n\t\t],\n\t\t[\n\t\t\t'Dominican Republic (República Dominicana)',\n\t\t\tCountryISO.DominicanRepublic,\n\t\t\t'1',\n\t\t\t2,\n\t\t\t['809', '829', '849']\n\t\t],\n\t\t[\n\t\t\t'Ecuador',\n\t\t\tCountryISO.Ecuador,\n\t\t\t'593'\n\t\t],\n\t\t[\n\t\t\t'Egypt (‫مصر‬‎)',\n\t\t\tCountryISO.Egypt,\n\t\t\t'20'\n\t\t],\n\t\t[\n\t\t\t'El Salvador',\n\t\t\tCountryISO.ElSalvador,\n\t\t\t'503'\n\t\t],\n\t\t[\n\t\t\t'Equatorial Guinea (Guinea Ecuatorial)',\n\t\t\tCountryISO.EquatorialGuinea,\n\t\t\t'240'\n\t\t],\n\t\t[\n\t\t\t'Eritrea',\n\t\t\tCountryISO.Eritrea,\n\t\t\t'291'\n\t\t],\n\t\t[\n\t\t\t'Estonia (Eesti)',\n\t\t\tCountryISO.Estonia,\n\t\t\t'372'\n\t\t],\n\t\t[\n\t\t\t'Ethiopia',\n\t\t\tCountryISO.Ethiopia,\n\t\t\t'251'\n\t\t],\n\t\t[\n\t\t\t'Falkland Islands (Islas Malvinas)',\n\t\t\tCountryISO.FalklandIslands,\n\t\t\t'500'\n\t\t],\n\t\t[\n\t\t\t'Faroe Islands (Føroyar)',\n\t\t\tCountryISO.FaroeIslands,\n\t\t\t'298'\n\t\t],\n\t\t[\n\t\t\t'Fiji',\n\t\t\tCountryISO.Fiji,\n\t\t\t'679'\n\t\t],\n\t\t[\n\t\t\t'Finland (Suomi)',\n\t\t\tCountryISO.Finland,\n\t\t\t'358',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'France',\n\t\t\tCountryISO.France,\n\t\t\t'33'\n\t\t],\n\t\t[\n\t\t\t'French Guiana (Guyane française)',\n\t\t\tCountryISO.FrenchGuiana,\n\t\t\t'594'\n\t\t],\n\t\t[\n\t\t\t'French Polynesia (Polynésie française)',\n\t\t\tCountryISO.FrenchPolynesia,\n\t\t\t'689'\n\t\t],\n\t\t[\n\t\t\t'Gabon',\n\t\t\tCountryISO.Gabon,\n\t\t\t'241'\n\t\t],\n\t\t[\n\t\t\t'Gambia',\n\t\t\tCountryISO.Gambia,\n\t\t\t'220'\n\t\t],\n\t\t[\n\t\t\t'Georgia (საქართველო)',\n\t\t\tCountryISO.Georgia,\n\t\t\t'995'\n\t\t],\n\t\t[\n\t\t\t'Germany (Deutschland)',\n\t\t\tCountryISO.Germany,\n\t\t\t'49'\n\t\t],\n\t\t[\n\t\t\t'Ghana (Gaana)',\n\t\t\tCountryISO.Ghana,\n\t\t\t'233'\n\t\t],\n\t\t[\n\t\t\t'Gibraltar',\n\t\t\tCountryISO.Gibraltar,\n\t\t\t'350'\n\t\t],\n\t\t[\n\t\t\t'Greece (Ελλάδα)',\n\t\t\tCountryISO.Greece,\n\t\t\t'30'\n\t\t],\n\t\t[\n\t\t\t'Greenland (Kalaallit Nunaat)',\n\t\t\tCountryISO.Greenland,\n\t\t\t'299'\n\t\t],\n\t\t[\n\t\t\t'Grenada',\n\t\t\tCountryISO.Grenada,\n\t\t\t'1473'\n\t\t],\n\t\t[\n\t\t\t'Guadeloupe',\n\t\t\tCountryISO.Guadeloupe,\n\t\t\t'590',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Guam',\n\t\t\t'gu',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'671',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Guatemala',\n\t\t\tCountryISO.Guatemala,\n\t\t\t'502'\n\t\t],\n\t\t[\n\t\t\t'Guernsey',\n\t\t\tCountryISO.Guernsey,\n\t\t\t'44',\n\t\t\t1,\n\t\t\t[1481]\n\t\t],\n\t\t[\n\t\t\t'Guinea (Guinée)',\n\t\t\tCountryISO.Guinea,\n\t\t\t'224'\n\t\t],\n\t\t[\n\t\t\t'Guinea-Bissau (Guiné Bissau)',\n\t\t\tCountryISO.GuineaBissau,\n\t\t\t'245'\n\t\t],\n\t\t[\n\t\t\t'Guyana',\n\t\t\tCountryISO.Guyana,\n\t\t\t'592'\n\t\t],\n\t\t[\n\t\t\t'Haiti',\n\t\t\tCountryISO.Haiti,\n\t\t\t'509'\n\t\t],\n\t\t[\n\t\t\t'Honduras',\n\t\t\tCountryISO.Honduras,\n\t\t\t'504'\n\t\t],\n\t\t[\n\t\t\t'Hong Kong (香港)',\n\t\t\tCountryISO.HongKong,\n\t\t\t'852'\n\t\t],\n\t\t[\n\t\t\t'Hungary (Magyarország)',\n\t\t\tCountryISO.Hungary,\n\t\t\t'36'\n\t\t],\n\t\t[\n\t\t\t'Iceland (Ísland)',\n\t\t\tCountryISO.Iceland,\n\t\t\t'354'\n\t\t],\n\t\t[\n\t\t\t'India (भारत)',\n\t\t\tCountryISO.India,\n\t\t\t'91'\n\t\t],\n\t\t[\n\t\t\t'Indonesia',\n\t\t\tCountryISO.Indonesia,\n\t\t\t'62'\n\t\t],\n\t\t[\n\t\t\t'Iran (‫ایران‬‎)',\n\t\t\tCountryISO.Iran,\n\t\t\t'98'\n\t\t],\n\t\t[\n\t\t\t'Iraq (‫العراق‬‎)',\n\t\t\tCountryISO.Iraq,\n\t\t\t'964'\n\t\t],\n\t\t[\n\t\t\t'Ireland',\n\t\t\tCountryISO.Ireland,\n\t\t\t'353'\n\t\t],\n\t\t[\n\t\t\t'Isle of Man',\n\t\t\tCountryISO.IsleOfMan,\n\t\t\t'44',\n\t\t\t2,\n\t\t\t[1624]\n\t\t],\n\t\t[\n\t\t\t'Israel (‫ישראל‬‎)',\n\t\t\tCountryISO.Israel,\n\t\t\t'972'\n\t\t],\n\t\t[\n\t\t\t'Italy (Italia)',\n\t\t\tCountryISO.Italy,\n\t\t\t'39',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Jamaica',\n\t\t\t'jm',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'876',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Japan (日本)',\n\t\t\tCountryISO.Japan,\n\t\t\t'81'\n\t\t],\n\t\t[\n\t\t\t'Jersey',\n\t\t\tCountryISO.Jersey,\n\t\t\t'44',\n\t\t\t3,\n\t\t\t[1534]\n\t\t],\n\t\t[\n\t\t\t'Jordan (‫الأردن‬‎)',\n\t\t\tCountryISO.Jordan,\n\t\t\t'962'\n\t\t],\n\t\t[\n\t\t\t'Kazakhstan (Казахстан)',\n\t\t\tCountryISO.Kazakhstan,\n\t\t\t'7',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Kenya',\n\t\t\tCountryISO.Kenya,\n\t\t\t'254'\n\t\t],\n\t\t[\n\t\t\t'Kiribati',\n\t\t\tCountryISO.Kiribati,\n\t\t\t'686'\n\t\t],\n\t\t[\n\t\t\t'Kosovo',\n\t\t\tCountryISO.Kosovo,\n\t\t\t'383'\n\t\t],\n\t\t[\n\t\t\t'Kuwait (‫الكويت‬‎)',\n\t\t\tCountryISO.Kuwait,\n\t\t\t'965'\n\t\t],\n\t\t[\n\t\t\t'Kyrgyzstan (Кыргызстан)',\n\t\t\tCountryISO.Kyrgyzstan,\n\t\t\t'996'\n\t\t],\n\t\t[\n\t\t\t'Laos (ລາວ)',\n\t\t\tCountryISO.Laos,\n\t\t\t'856'\n\t\t],\n\t\t[\n\t\t\t'Latvia (Latvija)',\n\t\t\tCountryISO.Latvia,\n\t\t\t'371'\n\t\t],\n\t\t[\n\t\t\t'Lebanon (‫لبنان‬‎)',\n\t\t\tCountryISO.Lebanon,\n\t\t\t'961'\n\t\t],\n\t\t[\n\t\t\t'Lesotho',\n\t\t\tCountryISO.Lesotho,\n\t\t\t'266'\n\t\t],\n\t\t[\n\t\t\t'Liberia',\n\t\t\tCountryISO.Liberia,\n\t\t\t'231'\n\t\t],\n\t\t[\n\t\t\t'Libya (‫ليبيا‬‎)',\n\t\t\tCountryISO.Libya,\n\t\t\t'218'\n\t\t],\n\t\t[\n\t\t\t'Liechtenstein',\n\t\t\tCountryISO.Liechtenstein,\n\t\t\t'423'\n\t\t],\n\t\t[\n\t\t\t'Lithuania (Lietuva)',\n\t\t\tCountryISO.Lithuania,\n\t\t\t'370'\n\t\t],\n\t\t[\n\t\t\t'Luxembourg',\n\t\t\tCountryISO.Luxembourg,\n\t\t\t'352'\n\t\t],\n\t\t[\n\t\t\t'Macau (澳門)',\n\t\t\tCountryISO.Macau,\n\t\t\t'853'\n\t\t],\n\t\t[\n\t\t\t'Macedonia (FYROM) (Македонија)',\n\t\t\tCountryISO.Macedonia,\n\t\t\t'389'\n\t\t],\n\t\t[\n\t\t\t'Madagascar (Madagasikara)',\n\t\t\tCountryISO.Madagascar,\n\t\t\t'261'\n\t\t],\n\t\t[\n\t\t\t'Malawi',\n\t\t\tCountryISO.Malawi,\n\t\t\t'265'\n\t\t],\n\t\t[\n\t\t\t'Malaysia',\n\t\t\tCountryISO.Malaysia,\n\t\t\t'60'\n\t\t],\n\t\t[\n\t\t\t'Maldives',\n\t\t\tCountryISO.Maldives,\n\t\t\t'960'\n\t\t],\n\t\t[\n\t\t\t'Mali',\n\t\t\tCountryISO.Mali,\n\t\t\t'223'\n\t\t],\n\t\t[\n\t\t\t'Malta',\n\t\t\tCountryISO.Malta,\n\t\t\t'356'\n\t\t],\n\t\t[\n\t\t\t'Marshall Islands',\n\t\t\tCountryISO.MarshallIslands,\n\t\t\t'692'\n\t\t],\n\t\t[\n\t\t\t'Martinique',\n\t\t\tCountryISO.Martinique,\n\t\t\t'596'\n\t\t],\n\t\t[\n\t\t\t'Mauritania (‫موريتانيا‬‎)',\n\t\t\tCountryISO.Mauritania,\n\t\t\t'222'\n\t\t],\n\t\t[\n\t\t\t'Mauritius (Moris)',\n\t\t\tCountryISO.Mauritius,\n\t\t\t'230'\n\t\t],\n\t\t[\n\t\t\t'Mayotte',\n\t\t\tCountryISO.Mayotte,\n\t\t\t'262',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Mexico (México)',\n\t\t\tCountryISO.Mexico,\n\t\t\t'52'\n\t\t],\n\t\t[\n\t\t\t'Micronesia',\n\t\t\tCountryISO.Micronesia,\n\t\t\t'691'\n\t\t],\n\t\t[\n\t\t\t'Moldova (Republica Moldova)',\n\t\t\tCountryISO.Moldova,\n\t\t\t'373'\n\t\t],\n\t\t[\n\t\t\t'Monaco',\n\t\t\tCountryISO.Monaco,\n\t\t\t'377'\n\t\t],\n\t\t[\n\t\t\t'Mongolia (Монгол)',\n\t\t\tCountryISO.Mongolia,\n\t\t\t'976'\n\t\t],\n\t\t[\n\t\t\t'Montenegro (Crna Gora)',\n\t\t\tCountryISO.Montenegro,\n\t\t\t'382'\n\t\t],\n\t\t[\n\t\t\t'Montserrat',\n\t\t\t'ms',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'664',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Morocco (‫المغرب‬‎)',\n\t\t\tCountryISO.Morocco,\n\t\t\t'212',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Mozambique (Moçambique)',\n\t\t\tCountryISO.Mozambique,\n\t\t\t'258'\n\t\t],\n\t\t[\n\t\t\t'Myanmar (Burma) (မြန်မာ)',\n\t\t\tCountryISO.Myanmar,\n\t\t\t'95'\n\t\t],\n\t\t[\n\t\t\t'Namibia (Namibië)',\n\t\t\tCountryISO.Namibia,\n\t\t\t'264'\n\t\t],\n\t\t[\n\t\t\t'Nauru',\n\t\t\tCountryISO.Nauru,\n\t\t\t'674'\n\t\t],\n\t\t[\n\t\t\t'Nepal (नेपाल)',\n\t\t\tCountryISO.Nepal,\n\t\t\t'977'\n\t\t],\n\t\t[\n\t\t\t'Netherlands (Nederland)',\n\t\t\tCountryISO.Netherlands,\n\t\t\t'31'\n\t\t],\n\t\t[\n\t\t\t'New Caledonia (Nouvelle-Calédonie)',\n\t\t\tCountryISO.NewCaledonia,\n\t\t\t'687'\n\t\t],\n\t\t[\n\t\t\t'New Zealand',\n\t\t\tCountryISO.NewZealand,\n\t\t\t'64'\n\t\t],\n\t\t[\n\t\t\t'Nicaragua',\n\t\t\tCountryISO.Nicaragua,\n\t\t\t'505'\n\t\t],\n\t\t[\n\t\t\t'Niger (Nijar)',\n\t\t\tCountryISO.Niger,\n\t\t\t'227'\n\t\t],\n\t\t[\n\t\t\t'Nigeria',\n\t\t\tCountryISO.Nigeria,\n\t\t\t'234'\n\t\t],\n\t\t[\n\t\t\t'Niue',\n\t\t\tCountryISO.Niue,\n\t\t\t'683'\n\t\t],\n\t\t[\n\t\t\t'Norfolk Island',\n\t\t\tCountryISO.NorfolkIsland,\n\t\t\t'672'\n\t\t],\n\t\t[\n\t\t\t'North Korea (조선 민주주의 인민 공화국)',\n\t\t\tCountryISO.NorthKorea,\n\t\t\t'850'\n\t\t],\n\t\t[\n\t\t\t'Northern Mariana Islands',\n\t\t\tCountryISO.NorthernMarianaIslands,\n\t\t\t'1670'\n\t\t],\n\t\t[\n\t\t\t'Norway (Norge)',\n\t\t\tCountryISO.Norway,\n\t\t\t'47',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Oman (‫عُمان‬‎)',\n\t\t\tCountryISO.Oman,\n\t\t\t'968'\n\t\t],\n\t\t[\n\t\t\t'Pakistan (‫پاکستان‬‎)',\n\t\t\tCountryISO.Pakistan,\n\t\t\t'92'\n\t\t],\n\t\t[\n\t\t\t'Palau',\n\t\t\tCountryISO.Palau,\n\t\t\t'680'\n\t\t],\n\t\t[\n\t\t\t'Palestine (‫فلسطين‬‎)',\n\t\t\tCountryISO.Palestine,\n\t\t\t'970'\n\t\t],\n\t\t[\n\t\t\t'Panama (Panamá)',\n\t\t\tCountryISO.Panama,\n\t\t\t'507'\n\t\t],\n\t\t[\n\t\t\t'Papua New Guinea',\n\t\t\tCountryISO.PapuaNewGuinea,\n\t\t\t'675'\n\t\t],\n\t\t[\n\t\t\t'Paraguay',\n\t\t\tCountryISO.Paraguay,\n\t\t\t'595'\n\t\t],\n\t\t[\n\t\t\t'Peru (Perú)',\n\t\t\tCountryISO.Peru,\n\t\t\t'51'\n\t\t],\n\t\t[\n\t\t\t'Philippines',\n\t\t\tCountryISO.Philippines,\n\t\t\t'63'\n\t\t],\n\t\t[\n\t\t\t'Poland (Polska)',\n\t\t\tCountryISO.Poland,\n\t\t\t'48'\n\t\t],\n\t\t[\n\t\t\t'Portugal',\n\t\t\tCountryISO.Portugal,\n\t\t\t'351'\n\t\t],\n\t\t[\n\t\t\t'Puerto Rico',\n\t\t\tCountryISO.PuertoRico,\n\t\t\t'1',\n\t\t\t3,\n\t\t\t['787', '939']\n\t\t],\n\t\t[\n\t\t\t'Qatar (‫قطر‬‎)',\n\t\t\tCountryISO.Qatar,\n\t\t\t'974'\n\t\t],\n\t\t[\n\t\t\t'Réunion (La Réunion)',\n\t\t\tCountryISO.Réunion,\n\t\t\t'262',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Romania (România)',\n\t\t\tCountryISO.Romania,\n\t\t\t'40'\n\t\t],\n\t\t[\n\t\t\t'Russia (Россия)',\n\t\t\tCountryISO.Russia,\n\t\t\t'7',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Rwanda',\n\t\t\tCountryISO.Rwanda,\n\t\t\t'250'\n\t\t],\n\t\t[\n\t\t\t'Saint Barthélemy (Saint-Barthélemy)',\n\t\t\tCountryISO.SaintBarthélemy,\n\t\t\t'590',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Saint Helena',\n\t\t\tCountryISO.SaintHelena,\n\t\t\t'290'\n\t\t],\n\t\t[\n\t\t\t'Saint Kitts and Nevis',\n\t\t\tCountryISO.SaintKittsAndNevis,\n\t\t\t'1869'\n\t\t],\n\t\t[\n\t\t\t'Saint Lucia',\n\t\t\t'lc',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'758',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Saint Martin (Saint-Martin (partie française))',\n\t\t\tCountryISO.SaintMartin,\n\t\t\t'590',\n\t\t\t2\n\t\t],\n\t\t[\n\t\t\t'Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)',\n\t\t\tCountryISO.SaintPierreAndMiquelon,\n\t\t\t'508'\n\t\t],\n\t\t[\n\t\t\t'Saint Vincent and the Grenadines',\n\t\t\t'vc',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'784',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Samoa',\n\t\t\tCountryISO.Samoa,\n\t\t\t'685'\n\t\t],\n\t\t[\n\t\t\t'San Marino',\n\t\t\tCountryISO.SanMarino,\n\t\t\t'378'\n\t\t],\n\t\t[\n\t\t\t'São Tomé and Príncipe (São Tomé e Príncipe)',\n\t\t\tCountryISO.SãoToméAndPríncipe,\n\t\t\t'239'\n\t\t],\n\t\t[\n\t\t\t'Saudi Arabia (‫المملكة العربية السعودية‬‎)',\n\t\t\tCountryISO.SaudiArabia,\n\t\t\t'966'\n\t\t],\n\t\t[\n\t\t\t'Senegal (Sénégal)',\n\t\t\tCountryISO.Senegal,\n\t\t\t'221'\n\t\t],\n\t\t[\n\t\t\t'Serbia (Србија)',\n\t\t\tCountryISO.Serbia,\n\t\t\t'381'\n\t\t],\n\t\t[\n\t\t\t'Seychelles',\n\t\t\tCountryISO.Seychelles,\n\t\t\t'248'\n\t\t],\n\t\t[\n\t\t\t'Sierra Leone',\n\t\t\tCountryISO.SierraLeone,\n\t\t\t'232'\n\t\t],\n\t\t[\n\t\t\t'Singapore',\n\t\t\tCountryISO.Singapore,\n\t\t\t'65'\n\t\t],\n\t\t[\n\t\t\t'Sint Maarten',\n\t\t\t'sx',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'721',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Slovakia (Slovensko)',\n\t\t\tCountryISO.Slovakia,\n\t\t\t'421'\n\t\t],\n\t\t[\n\t\t\t'Slovenia (Slovenija)',\n\t\t\tCountryISO.Slovenia,\n\t\t\t'386'\n\t\t],\n\t\t[\n\t\t\t'Solomon Islands',\n\t\t\tCountryISO.SolomonIslands,\n\t\t\t'677'\n\t\t],\n\t\t[\n\t\t\t'Somalia (Soomaaliya)',\n\t\t\tCountryISO.Somalia,\n\t\t\t'252'\n\t\t],\n\t\t[\n\t\t\t'South Africa',\n\t\t\tCountryISO.SouthAfrica,\n\t\t\t'27'\n\t\t],\n\t\t[\n\t\t\t'South Korea (대한민국)',\n\t\t\tCountryISO.SouthKorea,\n\t\t\t'82'\n\t\t],\n\t\t[\n\t\t\t'South Sudan (‫جنوب السودان‬‎)',\n\t\t\tCountryISO.SouthSudan,\n\t\t\t'211'\n\t\t],\n\t\t[\n\t\t\t'Spain (España)',\n\t\t\tCountryISO.Spain,\n\t\t\t'34'\n\t\t],\n\t\t[\n\t\t\t'Sri Lanka (ශ්‍රී ලංකාව)',\n\t\t\tCountryISO.SriLanka,\n\t\t\t'94'\n\t\t],\n\t\t[\n\t\t\t'Sudan (‫السودان‬‎)',\n\t\t\tCountryISO.Sudan,\n\t\t\t'249'\n\t\t],\n\t\t[\n\t\t\t'Suriname',\n\t\t\tCountryISO.Suriname,\n\t\t\t'597'\n\t\t],\n\t\t[\n\t\t\t'Svalbard and Jan Mayen',\n\t\t\tCountryISO.SvalbardAndJanMayen,\n\t\t\t'47',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Swaziland',\n\t\t\tCountryISO.Swaziland,\n\t\t\t'268'\n\t\t],\n\t\t[\n\t\t\t'Sweden (Sverige)',\n\t\t\tCountryISO.Sweden,\n\t\t\t'46'\n\t\t],\n\t\t[\n\t\t\t'Switzerland (Schweiz)',\n\t\t\tCountryISO.Switzerland,\n\t\t\t'41'\n\t\t],\n\t\t[\n\t\t\t'Syria (‫سوريا‬‎)',\n\t\t\tCountryISO.Syria,\n\t\t\t'963'\n\t\t],\n\t\t[\n\t\t\t'Taiwan (台灣)',\n\t\t\tCountryISO.Taiwan,\n\t\t\t'886'\n\t\t],\n\t\t[\n\t\t\t'Tajikistan',\n\t\t\tCountryISO.Tajikistan,\n\t\t\t'992'\n\t\t],\n\t\t[\n\t\t\t'Tanzania',\n\t\t\tCountryISO.Tanzania,\n\t\t\t'255'\n\t\t],\n\t\t[\n\t\t\t'Thailand (ไทย)',\n\t\t\tCountryISO.Thailand,\n\t\t\t'66'\n\t\t],\n\t\t[\n\t\t\t'Timor-Leste',\n\t\t\tCountryISO.TimorLeste,\n\t\t\t'670'\n\t\t],\n\t\t[\n\t\t\t'Togo',\n\t\t\tCountryISO.Togo,\n\t\t\t'228'\n\t\t],\n\t\t[\n\t\t\t'Tokelau',\n\t\t\tCountryISO.Tokelau,\n\t\t\t'690'\n\t\t],\n\t\t[\n\t\t\t'Tonga',\n\t\t\tCountryISO.Tonga,\n\t\t\t'676'\n\t\t],\n\t\t[\n\t\t\t'Trinidad and Tobago',\n\t\t\t'tt',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'868',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Tunisia (‫تونس‬‎)',\n\t\t\tCountryISO.Tunisia,\n\t\t\t'216'\n\t\t],\n\t\t[\n\t\t\t'Turkey (Türkiye)',\n\t\t\tCountryISO.Turkey,\n\t\t\t'90'\n\t\t],\n\t\t[\n\t\t\t'Turkmenistan',\n\t\t\tCountryISO.Turkmenistan,\n\t\t\t'993'\n\t\t],\n\t\t[\n\t\t\t'Turks and Caicos Islands',\n\t\t\tCountryISO.TurksAndCaicosIslands,\n\t\t\t'1649'\n\t\t],\n\t\t[\n\t\t\t'Tuvalu',\n\t\t\tCountryISO.Tuvalu,\n\t\t\t'688'\n\t\t],\n\t\t[\n\t\t\t'U.S. Virgin Islands',\n\t\t\t'vi',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'340',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Uganda',\n\t\t\tCountryISO.Uganda,\n\t\t\t'256'\n\t\t],\n\t\t[\n\t\t\t'Ukraine (Україна)',\n\t\t\tCountryISO.Ukraine,\n\t\t\t'380'\n\t\t],\n\t\t[\n\t\t\t'United Arab Emirates (‫الإمارات العربية المتحدة‬‎)',\n\t\t\tCountryISO.UnitedArabEmirates,\n\t\t\t'971'\n\t\t],\n\t\t[\n\t\t\t'United Kingdom',\n\t\t\tCountryISO.UnitedKingdom,\n\t\t\t'44',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'United States',\n\t\t\tCountryISO.UnitedStates,\n\t\t\t'1',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Uruguay',\n\t\t\tCountryISO.Uruguay,\n\t\t\t'598'\n\t\t],\n\t\t[\n\t\t\t'Uzbekistan (Oʻzbekiston)',\n\t\t\tCountryISO.Uzbekistan,\n\t\t\t'998'\n\t\t],\n\t\t[\n\t\t\t'Vanuatu',\n\t\t\tCountryISO.Vanuatu,\n\t\t\t'678'\n\t\t],\n\t\t[\n\t\t\t'Vatican City (Città del Vaticano)',\n\t\t\tCountryISO.VaticanCity,\n\t\t\t'39',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Venezuela',\n\t\t\tCountryISO.Venezuela,\n\t\t\t'58'\n\t\t],\n\t\t[\n\t\t\t'Vietnam (Việt Nam)',\n\t\t\tCountryISO.Vietnam,\n\t\t\t'84'\n\t\t],\n\t\t[\n\t\t\t'Wallis and Futuna',\n\t\t\tCountryISO.WallisAndFutuna,\n\t\t\t'681'\n\t\t],\n\t\t[\n\t\t\t'Western Sahara (‫الصحراء الغربية‬‎)',\n\t\t\tCountryISO.WesternSahara,\n\t\t\t'212',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Yemen (‫اليمن‬‎)',\n\t\t\tCountryISO.Yemen,\n\t\t\t'967'\n\t\t],\n\t\t[\n\t\t\t'Zambia',\n\t\t\tCountryISO.Zambia,\n\t\t\t'260'\n\t\t],\n\t\t[\n\t\t\t'Zimbabwe',\n\t\t\tCountryISO.Zimbabwe,\n\t\t\t'263'\n\t\t],\n\t\t[\n\t\t\t'Åland Islands',\n\t\t\tCountryISO.ÅlandIslands,\n\t\t\t'358',\n\t\t\t1\n\t\t]\n\t];\n}","export enum PhoneNumberFormat {\n\tInternational = 'INTERNATIONAL',\n\tNational = 'NATIONAL',\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Injector,\n  Input,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\nimport * as lpn from 'google-libphonenumber';\n\nimport { FormValueOptions } from '../../../types/form-value-options.type';\nimport { Codes } from '../../../util/codes';\nimport { Util } from '../../../util/util';\nimport { OValidators } from '../../../validators/o-validators';\nimport { OFormValue } from '../../form/o-form-value';\nimport { OFormComponent } from '../../form/o-form.component';\nimport {\n  DEFAULT_INPUTS_O_FORM_DATA_COMPONENT,\n  DEFAULT_OUTPUTS_O_FORM_DATA_COMPONENT,\n  OFormDataComponent\n} from '../../o-form-data-component.class';\nimport { OFormControl } from '../o-form-control.class';\nimport { CountryCode } from './data/country-code';\nimport { CountryISO } from './enums/country-iso.enum';\nimport { PhoneNumberFormat } from './enums/phone-number-format.enum';\nimport { OPhoneInputData } from './interfaces/change-data';\nimport { Country } from './model/country.model';\n\nexport const DEFAULT_INPUTS_O_PHONE_INPUT = [\n  //gap: Specify gap between fields in px\n  'gap'\n];\n\nconst PHONE_PREFIX = '+'\n\n@Component({\n  selector: 'o-phone-input',\n  templateUrl: './o-phone-input.component.html',\n  styleUrls: ['./o-phone-input.component.scss'],\n  inputs: DEFAULT_INPUTS_O_PHONE_INPUT,\n  encapsulation: ViewEncapsulation.None,\n  providers: [CountryCode],\n  host: {\n    '[class.o-phone-input]': 'true'\n  }\n})\nexport class OPhoneInputComponent extends OFormDataComponent implements OnInit, AfterViewInit {\n  @Input() countries: Array<string> = [];\n  @Output() readonly countryChange = new EventEmitter<Country>();\n  @Output() readonly onPhoneDataChange = new EventEmitter<OPhoneInputData>();\n\n  @ViewChild('countryList') countryList: ElementRef;\n  @ViewChild('matInputRef', { read: ElementRef, static: true }) private matInputRef!: ElementRef;\n  public gap = '14px';\n\n  _selectedCountry: Country = {\n    areaCodes: undefined,\n    dialCode: '',\n    htmlId: '',\n    flagClass: '',\n    iso2: '',\n    name: '',\n    placeHolder: '',\n    priority: 0,\n  };\n\n  set selectedCountry(value: Country) {\n    this._selectedCountry = value;\n    this.placeHolder = this.resolvePlaceholder();\n  }\n\n  get selectedCountry(): Country {\n    return this._selectedCountry;\n  }\n\n  allCountries: Array<Country> = [];\n\n  states = CountryISO;\n  selectedStates = this.states;\n\n  // Has to be 'any' to prevent a need to install @types/google-libphonenumber by the package user...\n  protected phoneUtil: any = lpn.PhoneNumberUtil.getInstance();\n  protected separateDialCode = true;\n  protected numberFormat: PhoneNumberFormat = PhoneNumberFormat.International;\n\n  constructor(\n    private countryCodeData: CountryCode,\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n    this.fetchCountryData();\n  }\n\n  initialize(): void {\n    this.initializeCountryData();\n    super.initialize();\n    const formControl = this.getFormControl() as OFormControl;\n    if (formControl) {\n      const self = this;\n      formControl.getValue = function () {\n        if (this.value && this.value.length > 0 && self.selectedCountry && self.selectedCountry.dialCode) {\n          return `+${self.selectedCountry.dialCode} ${this.value}`;\n        }\n        return undefined;\n      };\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    if (this.oInputsOptions.iconColor === Codes.O_INPUTS_OPTIONS_COLOR_ACCENT) {\n      const matFormFieldEL = this.elRef.nativeElement.getElementsByTagName('mat-form-field')[1];\n      if (Util.isDefined(matFormFieldEL)) {\n        matFormFieldEL.classList.add('accent');\n      }\n    }\n  }\n\n  protected addOntimizeCustomAppearanceClass(): void {\n    try {\n      if (this.elRef) {\n        const matFormFieldEl = this.elRef.nativeElement.querySelectorAll('mat-form-field');\n        matFormFieldEl.forEach(matForm => {\n          matForm.classList.add('mat-form-field-appearance-ontimize');\n        });\n      }\n    } catch (e) {\n      //\n    }\n  }\n\n  public getValue(): any {\n    const formControl = this.getFormControl() as OFormControl;\n    if (formControl) {\n      return formControl.getValue();\n    }\n    return super.getValue();\n  }\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    const createPhoneValidator = (() => {\n      return OValidators.phoneValidator(this.getFormControl(), this.getSelectedCountryIso2());\n    });\n    validators.push(createPhoneValidator);\n    return validators;\n  }\n\n  onFormControlChange(value: any): void {\n    if (!this.value) {\n      this.value = new OFormValue();\n    }\n    this.ensureOFormValue(value);\n    this.ensurePhoneValue(value);\n    this.onChange.emit(value);\n  }\n\n  protected setFormValue(val: any, options?: FormValueOptions, setDirty: boolean = false): void {\n    let { countryDialCode, number } = this.getSeparatedValues(val);\n    let country = this.getCountryByDialCode(countryDialCode);\n    const parsed = this.getParsedNumber(number, country ? country.iso2 : undefined);\n    if (!Util.isDefined(parsed)) {\n      number = undefined;\n      country = undefined;\n    }\n    this.selectedCountry = country;\n    this.ensureOFormValue(number);\n    if (this._fControl) {\n      this._fControl.setValue(this.value.value, options);\n      if (setDirty) {\n        this._fControl.markAsDirty();\n      }\n      if (this._fControl.invalid && !this.form.isInInsertMode()) {\n        this._fControl.markAsTouched();\n      }\n    }\n    this.oldValue = this.value.value;\n  }\n\n  onCountrySelect(value: MatSelectChange) {\n    const country: Country = value.value\n    this.countryChange.emit(country);\n    this.setValue(undefined);\n    this.selectedCountry = country;\n    if (this.matInputRef && this.matInputRef.nativeElement) {\n      setTimeout(() => {\n        this.matInputRef.nativeElement.focus();\n      }, 0)\n    }\n  }\n\n  public innerOnBlur(event: any): void {\n    super.innerOnBlur(event);\n    if (this._fControl) {\n      this._fControl.updateValueAndValidity({ emitEvent: false });\n    }\n  }\n\n  protected getSelectedCountryIso2(): string {\n    return this.selectedCountry ? this.selectedCountry.iso2 : undefined;\n  }\n\n  protected initializeCountryData() {\n    if (this.countries.length) {\n      this.allCountries = this.allCountries.filter((c) => this.countries.includes(c.iso2));\n    }\n  }\n\n  protected ensurePhoneValue(value: any): void {\n    const number = this.getParsedNumber(value, this.getSelectedCountryIso2());\n    if (number) {\n      const intlNo = number\n        ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.INTERNATIONAL)\n        : '';\n      if (intlNo) {\n        this.value.value = this.removeDialCode(intlNo);\n        this.emitPhoneInputData(intlNo, number);\n      }\n    }\n  }\n\n  protected getCountryByDialCode(countryDialCode: any): Country {\n    if (countryDialCode) {\n      return this.sortCountries().find((c) => c.dialCode === countryDialCode);\n    }\n    return undefined;\n  }\n  protected sortCountries(): Country[] {\n    return this.allCountries\n      .sort((a, b) => {\n        return a.priority - b.priority;\n      })\n  }\n  protected getSeparatedValues(value: any): { countryDialCode: string, number: string } {\n    let countryDialCode = ''\n    let number = (value instanceof OFormValue ? value.value : value) || undefined\n    if (Util.isDefined(number) && number.startsWith(PHONE_PREFIX)) {\n      countryDialCode = number.substr(1, number.indexOf(' ') - 1);\n      number = number.substr(countryDialCode.length + 2);\n    }\n    return { countryDialCode, number }\n  }\n\n  protected emitPhoneInputData(intlNo?: string, number?: string): void {\n    let phoneInputData: OPhoneInputData = undefined;\n    const iso2 = this.getSelectedCountryIso2();\n    if (intlNo && number && iso2) {\n      phoneInputData = {\n        number: this.value.value,\n        internationalNumber: intlNo,\n        nationalNumber: number\n          ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.NATIONAL)\n          : '',\n        e164Number: number\n          ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.E164)\n          : '',\n        countryCode: iso2.toUpperCase(),\n        dialCode: PHONE_PREFIX + this.selectedCountry.dialCode,\n      }\n    }\n    this.onPhoneDataChange.emit(phoneInputData);\n  }\n\n  /* --------------------------------- Helpers -------------------------------- */\n  /**\n   * Returns parse PhoneNumber object.\n   * @param phoneNumber string\n   * @param countryCode string\n   */\n  private getParsedNumber(\n    phoneNumber: string,\n    countryCode: string\n  ): lpn.PhoneNumber {\n    let number: lpn.PhoneNumber;\n    try {\n      number = this.phoneUtil.parse(phoneNumber, countryCode.toUpperCase());\n    } catch (e) { }\n    return number;\n  }\n\n  /**\n   * Cleans dialcode from phone number string.\n   * @param phoneNumber string\n   */\n  private removeDialCode(phoneNumber: string): string {\n    const number = this.getParsedNumber(phoneNumber, this.getSelectedCountryIso2());\n    phoneNumber = this.phoneUtil.format(\n      number,\n      lpn.PhoneNumberFormat[this.numberFormat]\n    );\n    if (phoneNumber.startsWith(PHONE_PREFIX) && this.separateDialCode) {\n      phoneNumber = phoneNumber.substring(phoneNumber.indexOf(' ') + 1);\n    }\n    return phoneNumber;\n  }\n\n  /**\n   * Sifts through all countries and returns iso code of the primary country\n   * based on the number provided.\n   * @param countryCode country code in number format\n   * @param number PhoneNumber object\n   */\n  private getCountryIsoCode(\n    countryCode: number,\n    number: lpn.PhoneNumber\n  ): string | undefined {\n    // Will use this to match area code from the first numbers\n    const rawNumber = number['values_']['2'].toString();\n    // List of all countries with countryCode (can be more than one. e.x. US, CA, DO, PR all have +1 countryCode)\n    const countries = this.allCountries.filter(\n      (c) => c.dialCode === countryCode.toString()\n    );\n    // Main country is the country, which has no areaCodes specified in country-code.ts file.\n    const mainCountry = countries.find((c) => c.areaCodes === undefined);\n    // Secondary countries are all countries, which have areaCodes specified in country-code.ts file.\n    const secondaryCountries = countries.filter((c) => c.areaCodes !== undefined);\n    let matchedCountry = mainCountry ? mainCountry.iso2 : undefined;\n\n    /*\n      Iterate over each secondary country and check if nationalNumber starts with any of areaCodes available.\n      If no matches found, fallback to the main country.\n    */\n    secondaryCountries.forEach((country) => {\n      country.areaCodes.forEach((areaCode) => {\n        if (rawNumber.startsWith(areaCode)) {\n          matchedCountry = country.iso2;\n        }\n      });\n    });\n\n    return matchedCountry;\n  }\n\n  /**\n   * Gets formatted example phone number from phoneUtil.\n   * @param countryCode string\n   */\n  protected getPhoneNumberPlaceHolder(countryCode: string): string {\n    try {\n      return this.phoneUtil.format(\n        this.phoneUtil.getExampleNumber(countryCode),\n        lpn.PhoneNumberFormat[this.numberFormat]\n      );\n    } catch (e) {\n      return e;\n    }\n  }\n\n  /**\n   * Clearing the list to avoid duplicates (https://github.com/webcat12345/ngx-intl-tel-input/issues/248)\n   */\n  protected fetchCountryData(): void {\n    this.allCountries = [];\n\n    this.countryCodeData.allCountries.forEach((c) => {\n      const country: Country = {\n        name: c[0].toString(),\n        iso2: c[1].toString(),\n        dialCode: c[2].toString(),\n        priority: +c[3] || 0,\n        areaCodes: (c[4] as string[]) || undefined,\n        htmlId: `iti-0__item-${c[1].toString()}`,\n        flagClass: `iti__${c[1].toString().toLocaleLowerCase()}`,\n        placeHolder: '',\n      };\n      if (!this.oplaceholder) {\n        country.placeHolder = this.getPhoneNumberPlaceHolder(\n          country.iso2.toUpperCase()\n        );\n      }\n      this.allCountries.push(country);\n    });\n  }\n\n  private resolvePlaceholder(): string {\n    // If the user defined its own placeholder using that input it will override any country placeholder\n    let placeholder = '';\n    if (this.selectedCountry && this.selectedCountry.placeHolder && this.selectedCountry.placeHolder.length > 0) {\n      placeholder = this.selectedCountry.placeHolder;\n      if (this.separateDialCode) {\n        placeholder = this.removeDialCode(placeholder);\n      }\n    }\n    return placeholder;\n  }\n}\n","<div [formGroup]=\"getFormGroup()\" fxLayout=\"row wrap\" [fxLayoutGap]=\"gap +' grid'\">\n  <mat-form-field class=\"mat-form-phone\" [floatLabel]=\"floatLabel\" [appearance]=\"appearance\" [class.read-only]=\"isReadOnly\" fxFlex.xs\n    [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <mat-select [value]=\"selectedCountry\" (selectionChange)=\"onCountrySelect($event)\" [disabled]=\"!enabled\">\n      <mat-option *ngFor=\"let country of allCountries\" [value]=\"country\"> {{country.name}} +{{country.dialCode}}</mat-option>\n    </mat-select>\n  </mat-form-field>\n  <mat-form-field [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\" class=\"icon-field\" [appearance]=\"appearance\"\n    [subscriptSizing]=\"subscriptSizing\" fxFlex>\n    <input #matInputRef matInput type=\"tel\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n      (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" (change)=\"onChangeEvent($event)\" [required]=\"isRequired\">\n    <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\n    <mat-icon matSuffix [class.mat-disabled]=\"!enabled\" class=\"svg-icon\" svgIcon=\"ontimize:phone_outline\"></mat-icon>\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('validatePhoneNumber')\">\n      {{ 'FORM_VALIDATION.PHONE_FORMAT' | oTranslate }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OPhoneInputComponent } from './o-phone-input.component';\n\n@NgModule({\n\tdeclarations: [OPhoneInputComponent],\n\timports: [CommonModule, OSharedModule],\n\texports: [OPhoneInputComponent],\n})\nexport class OPhoneInputModule { }\n","import { AfterViewInit, Component, ElementRef, forwardRef, Inject, Injector, OnDestroy, Optional, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatRadioChange, MatRadioGroup } from '@angular/material/radio';\n\nimport { OntimizeServiceProvider } from '../../../services/factories';\nimport { Util } from '../../../util/util';\nimport { OFormValue } from '../../form/o-form-value';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OValueChangeEvent } from '../../o-value-change-event.class';\nimport { OFormServiceComponent } from '../o-form-service-component.class';\n\nexport const DEFAULT_INPUTS_O_RADIO = [\n  'layout',\n  'labelPosition: label-position',\n  'labelGap: label-gap'\n];\n\n\n@Component({\n  selector: 'o-radio',\n  templateUrl: './o-radio.component.html',\n  styleUrls: ['./o-radio.component.scss'],\n  inputs: DEFAULT_INPUTS_O_RADIO,\n  providers: [\n    OntimizeServiceProvider\n  ],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-radio]': 'true'\n  }\n})\nexport class ORadioComponent extends OFormServiceComponent implements AfterViewInit, OnDestroy {\n\n  /* Inputs */\n  public layout: 'row' | 'column' = 'column';\n  public labelPosition: 'before' | 'after' = 'after';\n  public labelGap = '8px'\n  /* End inputs*/\n\n  value: OFormValue;\n  tabsSubscriptions: any;\n  @ViewChild(MatRadioGroup) mrg: MatRadioGroup;\n  formLayoutManagerTabIndex: number;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n  }\n\n  ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    if (this.queryOnInit) {\n      this.queryData();\n    }\n    this.updateFormLayoutManagerState();\n  }\n\n  updateFormLayoutManagerState() {\n    const formLayoutManager = this.form.getFormManager();\n\n    if (formLayoutManager && formLayoutManager.storeState && formLayoutManager.isTabMode() && formLayoutManager.oTabGroup) {\n      if (!Util.isDefined(this.formLayoutManagerTabIndex)) {\n        const tabGroupData = formLayoutManager.oTabGroup.data;\n\n        const keysValues = this.form.getFormNavigation().getCurrentKeysValues();\n        const data = tabGroupData.find(item =>\n          Object.entries(keysValues).every(\n            ([key, value]) => item.params[key] == value\n          ));\n        this.formLayoutManagerTabIndex = data?.id;\n      }\n      this.tabsSubscriptions = formLayoutManager.onSelectedTabChange.subscribe((arg) => {\n        if (arg.data.id === this.formLayoutManagerTabIndex) {\n          this.mrg.value = this.getValue();\n        }\n      });\n    }\n  }\n\n\n  onMatRadioGroupChange(e: MatRadioChange): void {\n    const newValue = e.value;\n    this.setValue(newValue, {\n      changeType: OValueChangeEvent.USER_CHANGE,\n      emitEvent: false,\n      emitModelToViewChange: false\n    });\n  }\n\n  getValueColumn(item: any) {\n    if (item && item.hasOwnProperty(this.valueColumn)) {\n      let option = item[this.valueColumn];\n      if (option === 'undefined') {\n        option = null;\n      }\n      return option;\n    }\n    return void 0;\n  }\n\n  getDescriptionValue() {\n    if (Util.isDefined(this.descriptionColArray) && this.descriptionColArray.length) {\n      const currItem = this.dataArray.find(e => e[this.valueColumn] === this.getValue());\n      if (Util.isDefined(currItem)) {\n        return this.descriptionColArray.map(col => (this.translate && this.translateService) ? this.translateService.get(currItem[col]) : currItem[col]).join(this.separator);\n      }\n    }\n    return '';\n  }\n\n  public ngOnDestroy(): void {\n    super.destroy();\n\n    if (this.tabsSubscriptions) {\n      this.tabsSubscriptions.unsubscribe();\n    }\n\n  }\n\n}\n","<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n  [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\"\n  [matTooltipHideDelay]=\"tooltipHideDelay\" class=\"relative\" [oContextMenu]=\"oContextMenu\">\n  <!-- mat-form-field and hidden input are used only for displaying component label and errors as mat-radio is not supported inside form-field -->\n  <!-- https://github.com/angular/material2/issues/7891 -->\n  <mat-form-field [appearance]=\"appearance\" [hideRequiredMarker]=\"hideRequiredMarker\"\n    [class.read-only]=\"isReadOnly\" [class.custom-width]=\"hasCustomWidth\" [class.o-radio-from-field-row]=\"layout==='row'\"\n    floatLabel=\"always\" class=\"mat-form-field--no-underline\" fxFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <input matInput [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n      [required]=\"isRequired\" style=\"display: none\" />\n    <mat-radio-group [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [name]=\"getAttribute()\"\n      [value]=\"getValue()\" [required]=\"isRequired\" [labelPosition]=\"labelPosition\"\n      (change)=\"onMatRadioGroupChange($event)\" [fxLayout]=\"layout\" [fxLayoutGap]=\"labelGap\">\n      <mat-radio-button [id]=\"'o-radio-button-'+i\" *ngFor=\"let item of dataArray;let i = index\" [value]=\"getValueColumn(item)\"\n       [disabled]=\"!enabled\">\n        {{ getOptionDescriptionValue(item) }}\n      </mat-radio-button>\n    </mat-radio-group>\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n      {{ oError.text | oTranslate }}\n    </mat-error>\n  </mat-form-field>\n  <div *ngIf=\"isReadOnly\" (click)=\"$event.stopPropagation()\" class=\"read-only-blocker\" fxFill></div>\n\n  <o-context-menu *ngIf=\"!this.isReadOnly && this.enabled\">\n    <o-context-menu-item attr=\"refresh\" label=\"FORM_SERVICE_COMPONENT.REFRESH\" svg-icon=\"ontimize:autorenew\" (execute)=\"refresh()\">\n    </o-context-menu-item>\n  </o-context-menu>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OContextMenuModule } from '../../contextmenu/o-context-menu.module';\nimport { ORadioComponent } from './o-radio.component';\n\n@NgModule({\n  declarations: [ORadioComponent],\n  imports: [CommonModule, OSharedModule, OContextMenuModule],\n  exports: [ORadioComponent]\n})\nexport class ORadioModule { }\n","import { Component, ElementRef, forwardRef, Inject, Injector, Optional, ViewEncapsulation } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\nimport { OFormValue } from '../../form/o-form-value';\nimport { OFormComponent } from '../../form/o-form.component';\nimport {\n  DEFAULT_INPUTS_O_FORM_DATA_COMPONENT,\n  DEFAULT_OUTPUTS_O_FORM_DATA_COMPONENT\n} from '../../o-form-data-component.class';\nimport { OBooleanFormDataComponent } from '../o-boolean-form-data-component.class';\n\n\nexport const DEFAULT_INPUTS_O_SLIDETOGGLE = [\n  // true-value: true value. Default: true.\n  'trueValue: true-value',\n  // false-value: false value. Default: false.\n  'falseValue: false-value',\n  // boolean-type [number|boolean|string]: cellData value type. Default: boolean\n  'booleanType: boolean-type',\n  // color: Theme color palette for the component.\n  'color',\n  // label-position: Whether the label should appear after or before the slide-toggle. Defaults to 'after'\n  'labelPosition: label-position'\n];\n\n\n@Component({\n  selector: 'o-slide-toggle',\n  inputs: DEFAULT_INPUTS_O_SLIDETOGGLE,\n  templateUrl: './o-slide-toggle.component.html',\n  styleUrls: ['./o-slide-toggle.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-slide-toggle]': 'true'\n  }\n})\nexport class OSlideToggleComponent extends OBooleanFormDataComponent {\n\n  public color: ThemePalette;\n  public labelPosition: 'before' | 'after' = 'after';\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n  }\n\n\n  isChecked(): boolean {\n    if (this.value instanceof OFormValue) {\n      return this.value.value === this.trueValue;\n    }\n    return false;\n  }\n\n}\n","<div [class.custom-width]=\"hasCustomWidth\" [formGroup]=\"getFormGroup()\" class=\"relative\" [matTooltip]=\"tooltip\"\n  [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\"\n  [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\n  <mat-slide-toggle [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [checked]=\"isChecked()\"\n    [required]=\"isRequired\" [labelPosition]=\"labelPosition\" [color]=\"color\" (change)=\"onChangeEvent($event)\">\n    <ng-container *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</ng-container>\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n      {{ oError.text | oTranslate }}\n    </mat-error>\n  </mat-slide-toggle>\n  <div *ngIf=\"isReadOnly\" (click)=\"onClickBlocker($event)\" class=\"read-only-blocker\" fxFill></div>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OSlideToggleComponent } from './o-slide-toggle.component';\n\n@NgModule({\n  declarations: [OSlideToggleComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OSlideToggleComponent]\n})\nexport class OSlideToggleModule { }\n","import { Component, ElementRef, forwardRef, Inject, Injector, Optional, ViewEncapsulation } from '@angular/core';\n\nimport { OFormComponent } from '../../../components/form/o-form.component';\nimport { BooleanInputConverter, NumberInputConverter } from '../../../decorators/input-converter';\nimport { OFormDataComponent } from '../../o-form-data-component.class';\n\nexport const DEFAULT_INPUTS_O_SLIDER_INPUT = [\n  'color',\n  'max',\n  'min',\n  'step',\n  'thumbLabel:thumb-label',\n  'oDisplayWith:display-with',\n  'showTickMarks:show-tick-marks'\n];\n\n\nexport type SliderDisplayFunction = (value: number) => string;\n\n@Component({\n  selector: 'o-slider',\n  host: {\n    class: 'o-slider'\n  },\n  templateUrl: 'o-slider.component.html',\n  styleUrls: ['./o-slider.component.scss'],\n  inputs: DEFAULT_INPUTS_O_SLIDER_INPUT,\n  encapsulation: ViewEncapsulation.None\n})\nexport class OSliderComponent extends OFormDataComponent {\n\n  public color: string;\n\n  @BooleanInputConverter()\n  public thumbLabel: boolean = false;\n\n  @BooleanInputConverter()\n  public showTickMarks: boolean = false;\n\n  @NumberInputConverter()\n  min: number;\n\n  @NumberInputConverter()\n  max: number;\n\n  @NumberInputConverter()\n  step: number = 1;\n\n  oDisplayWith: SliderDisplayFunction = (value: number) => `${value}`;;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector\n  ) {\n    super(form, elRef, injector);\n  }\n\n  onClickBlocker(evt: Event) {\n    evt.stopPropagation();\n  }\n\n\n}\n","<div [formGroup]=\"getFormGroup()\" class=\"relative\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n  [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n  <ng-container [ngSwitch]=\"true\">\n    <mat-slider *ngSwitchCase=\"thumbLabel && !showTickMarks\" discrete [color]=\"color\" [max]=\"max\" [min]=\"min\" [step]=\"step\"\n      [displayWith]=\"oDisplayWith\">\n      <input matSliderThumb (change)=\"onChangeEvent($event)\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" />\n    </mat-slider>\n    <mat-slider *ngSwitchCase=\"!thumbLabel && !showTickMarks\" [color]=\"color\" [max]=\"max\" [min]=\"min\" [step]=\"step\" [displayWith]=\"oDisplayWith\">\n      <input matSliderThumb (change)=\"onChangeEvent($event)\"  [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" />\n    </mat-slider>\n    <mat-slider *ngSwitchCase=\"thumbLabel && showTickMarks\" [color]=\"color\" [max]=\"max\" [min]=\"min\" [step]=\"step\" discrete\n      [displayWith]=\"oDisplayWith\" showTickMarks>\n      <input matSliderThumb (change)=\"onChangeEvent($event)\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" />\n    </mat-slider>\n    <mat-slider *ngSwitchCase=\"!thumbLabel && showTickMarks\" [color]=\"color\" [max]=\"max\" [min]=\"min\" [step]=\"step\" [displayWith]=\"oDisplayWith\"\n      showTickMarks>\n      <input matSliderThumb (change)=\"onChangeEvent($event)\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" />\n    </mat-slider>\n  </ng-container>\n  <div *ngIf=\"isReadOnly\" (click)=\"onClickBlocker($event)\" class=\"read-only-blocker\" fxFill></div>\n\n</div>\n\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OSliderComponent } from './o-slider.component';\n\n@NgModule({\n  declarations: [OSliderComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OSliderComponent]\n})\nexport class OSliderModule { }\n","import { Component, ElementRef, forwardRef, Inject, Injector, Optional, ViewEncapsulation } from '@angular/core';\n\nimport { NumberInputConverter } from '../../../decorators/input-converter';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OTextInputComponent } from '../text-input/o-text-input.component';\n\nexport const DEFAULT_INPUTS_O_TEXTAREA_INPUT = [\n  'columns',\n  'rows'\n];\n\n@Component({\n  selector: 'o-textarea-input',\n  templateUrl: './o-textarea-input.component.html',\n  styleUrls: ['./o-textarea-input.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TEXTAREA_INPUT,\n  encapsulation: ViewEncapsulation.None\n})\nexport class OTextareaInputComponent extends OTextInputComponent {\n\n  @NumberInputConverter()\n  public rows: number = 5;\n  @NumberInputConverter()\n  public columns: number = 3;\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector) {\n    super(form, elRef, injector);\n  }\n\n  public isResizable(): boolean {\n    let resizable = true;\n    if (!this.enabled || this.isReadOnly) {\n      resizable = false;\n    }\n    return resizable;\n  }\n\n}\n","<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n  [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n  <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n    fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <textarea matInput class=\"mat-textarea\" type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n      (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" [class.no-resize]=\"!isResizable()\" [rows]=\"rows\"\n      [cols]=\"columns\" [required]=\"isRequired\" (change)=\"onChangeEvent($event)\" [maxlength]=\"maxLength\" [minlength]=\"minLength\"></textarea>\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('minlength')\">\n      {{ 'FORM_VALIDATION.MIN_LENGTH' | oTranslate }}: {{ getErrorValue('minlength', 'requiredLength') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('maxlength')\">\n      {{ 'FORM_VALIDATION.MAX_LENGTH' | oTranslate }}: {{ getErrorValue('maxlength', 'requiredLength') }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { OTextareaInputComponent } from './o-textarea-input.component';\n\n@NgModule({\n  declarations: [OTextareaInputComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [OTextareaInputComponent]\n})\nexport class OTextareaInputModule { }\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  Inject,\n  Injector,\n  OnDestroy,\n  OnInit,\n  Optional,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport moment from 'moment';\nimport { merge, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { DateFilterFunction } from '../../../types/date-filter-function.type';\nimport { FormValueOptions } from '../../../types/form-value-options.type';\nimport { ODateValueType } from '../../../types/o-date-value.type';\nimport { Util } from '../../../util/util';\nimport { OFormValue } from '../../form/o-form-value';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { OFormDataComponent } from '../../o-form-data-component.class';\nimport { OValueChangeEvent } from '../../o-value-change-event.class';\nimport { ODateInputComponent } from '../date-input/o-date-input.component';\nimport { OHourInputComponent } from '../hour-input/o-hour-input.component';\nimport { OFormControl } from '../o-form-control.class';\n\nexport const DEFAULT_INPUTS_O_TIME_INPUT = [\n  'valueType: value-type',\n  'oformat: value-format',\n  'oDateFormat: date-format',\n  'oDateLocale: date-locale',\n  'oDateStartView: date-start-view',\n  'oDateMinDate: date-min',\n  'oDateMaxDate: date-max',\n  'oDateTouchUi: date-touch-ui',\n  'oDateStartAt: date-start-at',\n  'oDateFilterDate: date-filter-date',\n  'oDateTextInputEnabled: date-text-input-enabled',\n  'oHourFormat: hour-format',\n  'oHourMin: hour-min',\n  'oHourMax: hour-max',\n  'oHourTextInputEnabled: hour-text-input-enabled',\n  'oHourPlaceholder: hour-placeholder',\n  'oDatePlaceholder: date-placeholder'\n];\n\n@Component({\n  selector: 'o-time-input',\n  templateUrl: './o-time-input.component.html',\n  styleUrls: ['./o-time-input.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TIME_INPUT,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-time-input]': 'true'\n  }\n})\nexport class OTimeInputComponent extends OFormDataComponent implements OnInit, AfterViewInit, OnDestroy {\n\n  public oDateFormat: string = 'L';\n  public oDateLocale: any;\n  public oDateStartView: 'month' | 'year' = 'month';\n  public oDateMinDate: any;\n  public oDateMaxDate: any;\n  @BooleanInputConverter()\n  public oDateTouchUi: boolean;\n  public oDateStartAt: any;\n  public oDateFilterDate: DateFilterFunction;\n  @BooleanInputConverter()\n  public oDateTextInputEnabled: boolean = true;\n  public oHourFormat: number = 24;\n  public oHourMin: string;\n  public oHourMax: string;\n  @BooleanInputConverter()\n  public oHourTextInputEnabled: boolean = true;\n  public oHourPlaceholder = '';\n  public oDatePlaceholder = '';\n  protected oformat: string = 'L';\n  protected _valueType: ODateValueType = 'timestamp';\n\n  protected blockGroupValueChanges: boolean;\n  protected formGroup: UntypedFormGroup = new UntypedFormGroup({});\n\n  @ViewChild('dateInput', { static: true })\n  protected dateInput: ODateInputComponent;\n\n  @ViewChild('hourInput', { static: true })\n  protected hourInput: OHourInputComponent;\n\n  protected subscription: Subscription = new Subscription();\n\n  public dateAttr = 'dateInput';\n  public hourAttr = 'hourInput';\n\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector,\n    protected cd: ChangeDetectorRef) {\n    super(form, elRef, injector);\n    this._defaultSQLTypeKey = 'DATE';\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n\n    this.dateAttr += '_' + this.oattr;\n    this.hourAttr += '_' + this.oattr;\n\n    this.subscription.add(\n      merge(this.dateInput.onValueChange, this.hourInput.onValueChange).subscribe((event: OValueChangeEvent) => {\n        if (event.isUserChange()) {\n          this.updateComponentValue();\n          const newValue = this._fControl.value;\n          this.emitOnValueChange(OValueChangeEvent.USER_CHANGE, newValue, this.oldValue);\n          this.oldValue = newValue;\n        }\n      })\n    );\n  }\n\n  public ngAfterViewInit(): void {\n    this.modifyFormControls();\n    super.ngAfterViewInit();\n    this.registerFormControls();\n    this.setInnerComponentsData();\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public createFormControl(cfg, validators): OFormControl {\n    this._fControl = super.createFormControl(cfg, validators);\n    this._fControl.fControlChildren = [this.dateInput, this.hourInput];\n    return this._fControl;\n  }\n\n  public onFormControlChange(value: any): void {\n    super.onFormControlChange(value);\n    this.setInnerComponentsData();\n  }\n\n  public setValue(newValue: any, options?: FormValueOptions): void {\n    const changed = this.oldValue !== newValue;\n    super.setValue(newValue, options);\n    if (changed) {\n      this.setInnerComponentsData();\n    }\n  }\n\n  public onClickClearValue(event: Event): void {\n    event.stopPropagation();\n    event.preventDefault();\n    this.blockGroupValueChanges = true;\n    this.clearValue();\n    this.blockGroupValueChanges = false;\n  }\n\n  protected setInnerComponentsData(): void {\n    let dateValue: any;\n    let hourValue: any;\n    if (Util.isDefined(this.value) && Util.isDefined(this.value.value)) {\n      const momentD = moment(this.value.value);\n      if (momentD.isValid()) {\n        dateValue = momentD.clone().startOf('day').valueOf();\n        hourValue = momentD.clone().valueOf() - dateValue;\n      }\n    }\n    if (this.dateInput) {\n      this.dateInput.setValue(dateValue);\n    }\n    if (this.hourInput) {\n      this.hourInput.setTimestampValue(hourValue);\n    }\n    this.cd.detectChanges();\n  }\n\n  protected updateComponentValue(): void {\n    if (!this.value) {\n      this.value = new OFormValue();\n    }\n    let timeValue: number;\n    const values = this.formGroup.getRawValue();\n    const mDate = (values[this.dateAttr] ? moment(values[this.dateAttr]) : moment()).startOf('day');\n    const mHour = moment(values[this.hourAttr], this.hourInput.formatString);\n    timeValue = mDate.clone()\n      .set('hour', mHour.get('hour'))\n      .set('minute', mHour.get('minutes'))\n      .valueOf();\n    this.setFormValue(timeValue);\n  }\n\n  protected modifyFormControls(): void {\n    if (this.dateInput) {\n      this.dateInput.getFormGroup = () => {\n        return this.formGroup;\n      };\n    }\n\n    if (this.hourInput) {\n      this.hourInput.getFormGroup = () => {\n        return this.formGroup;\n      };\n    }\n\n    if (this.form) {\n      this.form.formGroup.removeControl(this.dateAttr);\n      this.form.formGroup.removeControl(this.hourAttr);\n    }\n  }\n\n  protected registerFormControls(): void {\n    if (this.dateInput && this.dateInput.getFormControl()) {\n      this.formGroup.registerControl(this.dateAttr, this.dateInput.getFormControl());\n    }\n    if (this.hourInput) {\n      if (this.hourInput.getFormControl()) {\n        this.formGroup.registerControl(this.hourAttr, this.hourInput.getFormControl());\n      }\n    }\n  }\n\n  set valueType(val: any) {\n    this._valueType = Util.convertToODateValueType(val);\n  }\n\n  get valueType(): any {\n    return this._valueType;\n  }\n\n  public ensureOFormValue(arg: any): void {\n    let value = arg;\n    if (arg instanceof OFormValue) {\n      value = arg.value;\n    }\n    value = Util.parseByValueType(value, this.valueType, this.oformat);\n    super.ensureOFormValue(value);\n  }\n}\n","<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n  [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n  <div class=\"mat-mdc-form-field\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"8px\">\n    <div class=\"mat-mdc-form-field-flex\">\n    <o-date-input #dateInput fxFlex [attr]=\"dateAttr\" [read-only]=\"readOnly\" [enabled]=\"enabled\" [required]=\"isRequired\" [label]=\"olabel\"\n      clear-button=\"no\" automatic-registering=\"no\" automatic-binding=\"no\" (onFocus)=\"innerOnFocus($event)\" (onBlur)=\"innerOnBlur($event)\"\n      [format]=\"oDateFormat\" [locale]=\"oDateLocale\" [start-view]=\"oDateStartView\" [min]=\"oDateMinDate\" [max]=\"oDateMaxDate\" [touch-ui]=\"oDateTouchUi\"\n      [start-at]=\"oDateStartAt\" [filter-date]=\"oDateFilterDate\" [text-input-enabled]=\"oDateTextInputEnabled\" [placeholder]=\"oDatePlaceholder\"\n      [label-visible]=\"labelVisible\" [hide-required-marker]=\"hideRequiredMarker\" [select-all-on-click]=\"selectAllOnClick\">\n    </o-date-input>\n\n    <span class=\"separator\">&ndash;</span>\n\n    <o-hour-input #hourInput fxFlex [attr]=\"hourAttr\" [read-only]=\"readOnly\" [enabled]=\"enabled\" [required]=\"isRequired\" clear-button=\"no\"\n      automatic-registering=\"no\" automatic-binding=\"no\" (onFocus)=\"innerOnFocus($event)\" (onBlur)=\"innerOnBlur($event)\" [format]=\"oHourFormat\"\n      [text-input-enabled]=\"oHourTextInputEnabled\" [min]=\"oHourMin\" [max]=\"oHourMax\" hide-required-marker=\"yes\" label=\"\"\n      [placeholder]=\"oHourPlaceholder\" [select-all-on-click]=\"selectAllOnClick\">\n    </o-hour-input>\n    <div class=\"mat-mdc-form-field-icon-suffix\">\n      <button type=\"button\" *ngIf=\"showClearButton\" matIconSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n        <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n      </button>\n    </div>\n    </div>\n  </div>\n\n  <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n    {{ oError.text | oTranslate }}\n  </mat-error>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { ODateInputModule } from '../date-input/o-date-input.module';\nimport { OHourInputModule } from '../hour-input/o-hour-input.module';\nimport { OTimeInputComponent } from './o-time-input.component';\n\n@NgModule({\n  declarations: [OTimeInputComponent],\n  imports: [CommonModule, ODateInputModule, OHourInputModule, OSharedModule],\n  exports: [OTimeInputComponent]\n})\nexport class OTimeInputModule { }\n","export const REG_LANGUAGE = /^([a-z]{2})[-|_]([A-Z]{2})$/;\n\nexport default class LocaleCode {\n\n  static getLanguageCode(code) {\n    const match = code.match(REG_LANGUAGE);\n    let result = code.toLowerCase();\n    if (match && match.length > 1) {\n      result = match[1].toLowerCase();\n    }\n    return result;\n  }\n\n  static getCountryCode(code) {\n    const match = code.match(REG_LANGUAGE);\n    let result = code.toLowerCase();\n    if (match && match.length > 2) {\n      result = match[2].toLowerCase();\n    } else {\n      /*Exception pt is locale id of Portuguese Brazil\n      and pt-PT is Portuguese Portugal */\n      if (result === 'pt') {\n        result = 'br';\n      }\n    }\n    return result;\n  }\n}\n","import { Component, EventEmitter, Injector, ViewEncapsulation } from '@angular/core';\n\nimport { AppConfig } from '../../config/app-config';\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { OTranslateService } from '../../services/translate/o-translate.service';\nimport LocaleCode from '../../util/locale';\n\nexport const DEFAULT_INPUTS_O_LANGUAGE_SELECTOR = [\n  'useFlagIcons: use-flag-icons'\n];\n\nexport const DEFAULT_OUTPUTS_LANGUAGE_SELECTOR = [\n  'onChange'\n];\n\n@Component({\n  selector: 'o-language-selector',\n  inputs: DEFAULT_INPUTS_O_LANGUAGE_SELECTOR,\n  outputs: DEFAULT_OUTPUTS_LANGUAGE_SELECTOR,\n  templateUrl: './o-language-selector.component.html',\n  styleUrls: ['./o-language-selector.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-language-selector]': 'true'\n  }\n})\n\nexport class OLanguageSelectorComponent {\n\n  @BooleanInputConverter()\n  useFlagIcons: boolean = false;\n\n  onChange: EventEmitter<object> = new EventEmitter<object>();\n\n  protected translateService: OTranslateService;\n  protected appConfig: AppConfig;\n  protected availableLangs: string[];\n\n  constructor(protected injector: Injector) {\n    this.translateService = this.injector.get(OTranslateService);\n    this.appConfig = this.injector.get(AppConfig);\n    this.availableLangs = this.appConfig.getConfiguration().applicationLocales;\n  }\n\n  getFlagClass(lang: string) {\n    let flagName = LocaleCode.getCountryCode(lang);\n    flagName = (flagName !== 'en') ? flagName : 'gb';\n    return 'flag-icon-' + flagName;\n  }\n\n  getAvailableLangs(): string[] {\n    return this.availableLangs;\n  }\n\n  configureI18n(lang: any) {\n    if (this.translateService && this.translateService.getCurrentLang() !== lang) {\n      this.translateService.use(lang);\n      this.onChange.emit(lang);\n    }\n  }\n\n  getCurrentLang(): string {\n    return this.translateService.getCurrentLang();\n  }\n\n  getCurrentCountry(): string {\n    return LocaleCode.getCountryCode(this.getCurrentLang());\n  }\n\n}\n","<div fxLayout fxLayoutAlign=\"center center\" fxFill>\n  <button type=\"button\" *ngIf=\"useFlagIcons\" class=\"menu-button\" mat-icon-button [matMenuTriggerFor]=\"langMenu\">\n    <span class=\"flag-icon {{ getFlagClass(getCurrentCountry()) }}\"></span>\n  </button>\n\n  <button type=\"button\" *ngIf=\"!useFlagIcons\" class=\"menu-button o-language-selector-text\" mat-button [matMenuTriggerFor]=\"langMenu\">\n    <span>{{ 'LOCALE_' + getCurrentLang() | oTranslate }}</span>\n  </button>\n</div>\n\n<mat-menu #langMenu=\"matMenu\" yPosition=\"below\" class=\"o-mat-menu\">\n  <button type=\"button\" mat-menu-item *ngFor=\"let lang of getAvailableLangs()\" (click)=\"configureI18n(lang)\">\n    <span *ngIf=\"useFlagIcons\" class=\"flag-icon {{ getFlagClass(lang) }}\"></span>\n    <span>{{ 'LOCALE_' + lang | oTranslate }}</span>\n  </button>\n</mat-menu>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OLanguageSelectorComponent } from './o-language-selector.component';\n\n@NgModule({\n  declarations: [OLanguageSelectorComponent],\n  imports: [OSharedModule, CommonModule],\n  exports: [OLanguageSelectorComponent]\n})\nexport class OLanguageSelectorModule {\n}\n","import { Component, ElementRef, Injector, ViewEncapsulation } from '@angular/core';\nimport { OSkeletonComponent } from '../../o-skeleton.component';\n\n@Component({\n  selector: 'o-list-skeleton',\n  templateUrl: './o-list-skeleton.component.html',\n  styleUrls: ['./o-list-skeleton.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-list-skeleton]': 'true'\n  }\n})\nexport class OListSkeletonComponent extends OSkeletonComponent {\n\n  constructor(protected elRef: ElementRef, protected injector: Injector) {\n    super(injector)\n  }\n\n  get count() {\n    const parentElement = this.elRef.nativeElement.parentElement;\n    return Array(Math.floor(parentElement.offsetHeight / 150));\n\n  }\n}\n","<div class=\"o-list-skeleton-item\" *ngFor=\"let i of count\">\n  <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill class=\"o-list-skeleton-item-first-section\">\n    <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" appearance=\"circle\"\n      [theme]=\"{ width: '50px', height: '50px' }\"></ngx-skeleton-loader>\n    <div fxFlex fxLayout=\"column\">\n      <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n        [theme]=\"{ height:'10px', width:'30%'  }\"></ngx-skeleton-loader>\n      <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n        [theme]=\"{ height:'10px', width:'70%' }\"></ngx-skeleton-loader>\n    </div>\n  </div>\n\n  <div fxLayout=\"column\" class=\"o-list-skeleton-item-second-section\">\n    <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n      [theme]=\"{ height:'10px', width:'90%' }\"></ngx-skeleton-loader>\n    <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n      [theme]=\"{ height:'10px', width:'90%' }\"></ngx-skeleton-loader>\n    <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\" [theme]=\"{ height:'10px',width:'70%'}\"></ngx-skeleton-loader>\n\n\n  </div>\n</div>\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Injector,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  QueryList,\n  ViewEncapsulation\n} from '@angular/core';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { merge, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { IList } from '../../interfaces/o-list.interface';\nimport { ComponentStateServiceProvider, O_COMPONENT_STATE_SERVICE, OntimizeServiceProvider } from '../../services/factories';\nimport { OListComponentStateClass } from '../../services/state/o-list-component-state.class';\nimport { OListComponentStateService } from '../../services/state/o-list-component-state.service';\nimport { OListInitializationOptions } from '../../types/o-list-initialization-options.type';\nimport { OListPermissions } from '../../types/o-list-permissions.type';\nimport { OPermissions } from '../../types/o-permissions.type';\nimport { OQueryDataArgs } from '../../types/query-data-args.type';\nimport { SQLOrder } from '../../types/sql-order.type';\nimport { ObservableWrapper } from '../../util/async';\nimport { ServiceUtils } from '../../util/service.utils';\nimport { SQLTypes } from '../../util/sqltypes';\nimport { Util } from '../../util/util';\nimport { OFormComponent } from '../form/o-form.component';\nimport { AbstractOServiceComponent } from '../o-service-component.class';\nimport { OMatSort } from '../table/extensions/sort/o-mat-sort';\nimport { ListItem } from './list-item/o-list-item';\nimport { OListItemDirective } from './list-item/o-list-item.directive';\n\nexport const DEFAULT_INPUTS_O_LIST = [\n  // quick-filter-columns [string]: columns of the filter, separated by ';'. Default: no value.\n  'quickFilterColumns: quick-filter-columns',\n\n  // refresh-button [no|yes]: show refresh button. Default: yes.\n  'refreshButton: refresh-button',\n\n  'route',\n\n  'selectable',\n\n  // delete-button [no|yes]: show delete button when user select items. Default: yes.\n  'deleteButton: delete-button',\n\n  // sort-columns [string]: initial sorting, with the format column:[ASC|DESC], separated by ';'. Default: no value.\n  'sortColumns: sort-columns',\n\n  // insert-button-position [ top | bottom ]: position of the insert button. Default: 'bottom'\n  'insertButtonPosition:insert-button-position',\n\n  // insert-button-floatable [no|yes]: Indicates whether or not to position of the insert button is floating . Default: 'yes'\n  'insertButtonFloatable:insert-button-floatable',\n\n  // show-buttons-text [yes|no|true|false]: show text of buttons. Default: no.\n  'showButtonsText: show-buttons-text',\n  // keys-sql-types [string]: entity keys types, separated by ';'. Default: no value.\n  'keysSqlTypes: keys-sql-types',\n];\n\nexport const DEFAULT_OUTPUTS_O_LIST = [\n  'onInsertButtonClick',\n  'onItemDeleted'\n];\n\n@Component({\n  selector: 'o-list',\n  providers: [\n    OntimizeServiceProvider,\n    ComponentStateServiceProvider,\n    { provide: O_COMPONENT_STATE_SERVICE, useClass: OListComponentStateService },\n  ],\n  inputs: DEFAULT_INPUTS_O_LIST,\n  outputs: DEFAULT_OUTPUTS_O_LIST,\n  templateUrl: './o-list.component.html',\n  styleUrls: ['./o-list.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-list]': 'true'\n  }\n})\nexport class OListComponent extends AbstractOServiceComponent<OListComponentStateService> implements IList, AfterContentInit, AfterViewInit, OnDestroy, OnInit, OnChanges {\n\n  @ContentChildren(OListItemDirective)\n  public listItemDirectives: QueryList<OListItemDirective>;\n\n  /* Inputs */\n  @BooleanInputConverter()\n  public refreshButton: boolean = true;\n  @BooleanInputConverter()\n  public selectable: boolean = false;\n  @BooleanInputConverter()\n  public deleteButton: boolean = true;\n  @BooleanInputConverter()\n  public insertButtonFloatable: boolean = true;\n  @BooleanInputConverter()\n  showButtonsText: boolean = false;\n\n  paginationControls: boolean = false;\n\n  public quickFilterColumns: string;\n  public route: string;\n  public sortColumns: string;\n  protected permissions: OListPermissions;\n  /* End Inputs */\n\n  public sortColArray: SQLOrder[] = [];\n\n  public onInsertButtonClick: EventEmitter<any> = new EventEmitter();\n  public onItemDeleted: EventEmitter<any> = new EventEmitter();\n\n  public enabledDeleteButton: boolean = false;\n  public insertButtonPosition: 'top' | 'bottom' = 'bottom';\n  public storePaginationState: boolean = false;\n  protected subscription: Subscription = new Subscription();\n  protected _quickFilterAppearance: MatFormFieldAppearance = 'outline';\n  protected keysSqlTypes: string;\n  keysSqlTypesArray: Array<string> = [];\n\n  protected oMatSort: OMatSort;\n  protected actionsPermissions: OPermissions[];\n\n\n  constructor(\n    injector: Injector,\n    elRef: ElementRef,\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent\n  ) {\n    super(injector, elRef, form);\n    this.oMatSort = new OMatSort();\n  }\n\n  get state(): OListComponentStateClass {\n    return this.componentStateService.state;\n  }\n\n  public ngOnInit(): void {\n    this.initialize();\n    this.permissions = this.permissionsService.getListPermissions(this.oattr, this.actRoute);\n    this.actionsPermissions = this.getActionsPermissions(this.permissions);\n    this.setButtonPermissions(this.actionsPermissions);\n  }\n\n  public ngAfterViewInit(): void {\n    super.afterViewInit();\n    this.filterCaseSensitive = Util.isDefined(this.state.filterCaseSensitive) ?\n      this.state.filterCaseSensitive :\n      this.filterCaseSensitive;\n    this.parseSortColumns();\n    this.registerQuickFilter(this.searchInputComponent);\n    if (this.queryOnInit) {\n      this.queryData();\n    }\n    this.manageCustomPermissions(this.actionsPermissions, '[o-list-toolbar]');\n  }\n\n  public ngAfterContentInit(): void {\n    this.setListItemDirectivesData();\n    this.subscription.add(this.listItemDirectives.changes.subscribe(() => this.setListItemDirectivesData()));\n\n\n  }\n\n  public ngOnDestroy(): void {\n    this.destroy();\n    this.subscription.unsubscribe();\n  }\n\n\n  public getComponentKey(): string {\n    return 'OListComponent_' + this.oattr;\n  }\n\n  public initialize(): void {\n    super.initialize();\n    this.keysSqlTypesArray = Util.parseArray(this.keysSqlTypes);\n    if (!Util.isDefined(this.quickFilterColumns)) {\n      this.quickFilterColumns = this.columns;\n    }\n    this.quickFilterColArray = Util.parseArray(this.quickFilterColumns, true);\n    this.state.queryRecordOffset = 0;\n    if (!Util.isDefined(this.state.totalQueryRecordsNumber)) {\n      this.state.totalQueryRecordsNumber = 0;\n    }\n    this.permissions = this.permissionsService.getListPermissions(this.oattr, this.actRoute);\n  }\n\n  public reinitialize(options: OListInitializationOptions): void {\n    super.reinitialize(options);\n  }\n\n  public onListItemClicked(onNext: (item: OListItemDirective) => void): object {\n    return ObservableWrapper.subscribe(this.onClick, onNext);\n  }\n\n  public onItemDetailClick(item: OListItemDirective | ListItem): void {\n    this.handleItemClick(item);\n  }\n\n  public onItemDetailDoubleClick(item: OListItemDirective | ListItem): void {\n    this.handleItemDblClick(item);\n  }\n\n  getDataToStore() {\n    return this.componentStateService.getDataToStore();\n  }\n\n  public reloadData(clearSelectedItems: boolean = true): void {\n    this.componentStateService.refreshSelection();\n    if (clearSelectedItems && this.selectable) {\n      this.clearSelection();\n    }\n    let queryArgs: OQueryDataArgs = {};\n    if (this.pageable) {\n      this.state.queryRecordOffset = 0;\n      queryArgs = {\n        length: Math.max(this.queryRows, this.dataResponseArray.length),\n        replace: true\n      };\n    }\n    this.queryData(void 0, queryArgs);\n  }\n\n  public reloadPaginatedDataFromStart(clearSelectedItems: boolean = true): void {\n    if (this.pageable) {\n      this.dataResponseArray = [];\n      this.reloadData(clearSelectedItems);\n    }\n  }\n\n  protected getSortedDataFromArray(dataArray: any[]): any[] {\n    return this.oMatSort.getSortedDataBySQLOrder(dataArray, this.sortColArray);\n  }\n\n  public isItemSelected(item: any): boolean {\n    return this.selectable && this.selection.isSelected(item);\n  }\n\n  public onScroll(e: Event): void {\n    if (this.matpaginator) return;\n    if (this.pageable) {\n      const pendingRegistries = this.dataResponseArray.length < this.state.totalQueryRecordsNumber;\n      if (!this.loadingSubject.value && pendingRegistries) {\n        const element = e.target as any;\n        if (element.offsetHeight + element.scrollTop + 5 >= element.scrollHeight) {\n          const queryArgs: OQueryDataArgs = {\n            offset: this.state.queryRecordOffset,\n            length: this.queryRows\n          };\n          this.dataService?.setPaginationContext({ pageNumber: this.dataService?.getPaginationContext().pageNumber + 1 });\n          this.queryData(void 0, queryArgs);\n        }\n      }\n    }\n  }\n\n  public remove(clearSelectedItems: boolean = false): void {\n    const selectedItems = this.getSelectedItems();\n    if (selectedItems.length === 0) {\n      return;\n    }\n    this.dialogService.confirm('CONFIRM', 'MESSAGES.CONFIRM_DELETE').then(res => {\n      if (res === true) {\n        if (this.dataService && (this.deleteMethod in this.dataService) && this.entity && (this.keysArray.length > 0)) {\n          const filters = ServiceUtils.getArrayProperties(selectedItems, this.keysArray);\n          const sqlTypesArg = this.getSqlTypesOfKeys();\n          merge(filters.map((kv => this.dataService[this.deleteMethod](kv, this.entity, sqlTypesArg)))).subscribe(obs => obs.subscribe(() => {\n            ObservableWrapper.callEmit(this.onItemDeleted, selectedItems);\n          }, error => {\n            this.dialogService.alert('ERROR', 'MESSAGES.ERROR_DELETE');\n          }, () => {\n            // Ensuring that the deleted items will not longer be part of the selectionModel\n            this.clearSelection();\n            this.reloadData();\n          }));\n        } else {\n          this.deleteLocalItems();\n        }\n      } else if (clearSelectedItems) {\n        this.clearSelection();\n      }\n    });\n  }\n\n  public add(e?: Event): void {\n    this.onInsertButtonClick.emit(e);\n    super.insertDetail();\n  }\n\n  public parseSortColumns(): void {\n    const sortColumnsParam = this.state.sortColumns || this.sortColumns;\n    this.sortColArray = ServiceUtils.parseSortColumns(sortColumnsParam);\n  }\n\n  public getQueryArguments(filter: object, ovrrArgs?: OQueryDataArgs): any[] {\n    const queryArguments = super.getQueryArguments(filter, ovrrArgs);\n    if (this.pageable) {\n      queryArguments[6] = this.sortColArray;\n    }\n    return queryArguments;\n  }\n\n  protected setListItemDirectivesData(): void {\n    this.listItemDirectives.forEach((element: OListItemDirective, index) => {\n      element.setItemData(this.dataArray[index]);\n      element.setListComponent(this);\n    });\n  }\n\n  protected saveDataNavigationInLocalStorage(): void {\n    super.saveDataNavigationInLocalStorage();\n    this.storePaginationState = true;\n  }\n\n  protected parseResponseArray(data: any[], replace?: boolean) {\n    let result = data;\n    if (this.pageable && !replace) {\n      result = (this.dataResponseArray || []).concat(data);\n    }\n    return result;\n  }\n\n  public registerQuickFilter(arg: any): void {\n    super.registerQuickFilter(arg);\n    if (Util.isDefined(this.quickFilterComponent) && Util.isDefined(this.state.quickFilterActiveColumns)) {\n      const parsedArr = Util.parseArray(this.state.quickFilterActiveColumns, true);\n      this.quickFilterComponent.setActiveColumns(parsedArr);\n    }\n  }\n\n  setDataArray(data: any): void {\n    super.setDataArray(data);\n    this.updateSelectedItems();\n    this.cd.detectChanges();\n  }\n\n  public setSelected(item: any): void {\n    super.setSelected(item);\n    this.componentStateService.refreshSelection();\n  }\n\n  public updateSelectedItems() {\n    if (!this.selectable || !Util.isDefined(this.state.selection) || this.getSelectedItems().length > 0) {\n      return;\n    }\n    this.state.selection.forEach(selectedItem => {\n      const itemKeys = Object.keys(selectedItem);\n      const foundItem = this.dataArray.find(data => itemKeys.every(key => data[key] === selectedItem[key]));\n      if (Util.isDefined(foundItem)) {\n        this.selection.select(foundItem);\n      }\n    });\n  }\n\n  public getSqlTypes() {\n    const sqlTypes = this.sqlTypes;\n    this.keysSqlTypesArray.forEach((kst, i) => sqlTypes[this.keysArray[i]] = SQLTypes.getSQLTypeValue(kst));\n    return sqlTypes;\n  }\n}\n","<div class=\"o-list-container\" [style.display]=\"isVisible()? '' : 'none'\" fxFill>\n  <div *ngIf=\"loading | async\" fxLayoutAlign=\"center center\" [class.pageable-loading]=\"pageable && state.queryRecordOffset > 0\"\n    class=\"spinner-container\">\n    <o-list-skeleton></o-list-skeleton>\n  </div>\n  <o-data-toolbar *ngIf=\"hasControls()\" [title]=\"title\" [show-title]=\"hasTitle()\" class=\"o-list-toolbar\">\n    <ng-container o-data-toolbar-projection-start>\n      <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n        <button *ngIf=\"insertButton && !insertButtonFloatable\" [disabled]=\"!enabledInsertButton\" class=\"o-list-button text\" type=\"button\" mat-stroked-button aria-label=\"Insert\" (click)=\"add($event)\">\n          <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n          <span>{{ 'ADD' | oTranslate }}</span>\n        </button>\n\n        <button type=\"button\" mat-stroked-button class=\"o-list-button text\" [disabled]=\"!enabledRefreshButton\" aria-label=\"Refresh\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n          <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n          <span>{{ 'REFRESH' | oTranslate }}</span>\n        </button>\n\n        <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button text\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n          [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n          <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n          <span>{{ 'DELETE' | oTranslate }}</span>\n        </button>\n      </ng-container>\n      <ng-template #showButtonsWithoutText>\n        <button *ngIf=\"insertButton && !insertButtonFloatable\" type=\"button\" [disabled]=\"!enabledInsertButton\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Insert\" (click)=\"add($event)\">\n          <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n        </button>\n\n        <button type=\"button\" mat-icon-button aria-label=\"Refresh\" [disabled]=\"!enabledRefreshButton\" class=\"o-list-button no-text\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n          <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n        </button>\n\n        <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n          [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n          <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n        </button>\n      </ng-template>\n    </ng-container>\n    <ng-content select=\"[o-list-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n    </ng-content>\n    <ng-content select=\"[o-list-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n    </ng-content>\n    <ng-content select=\"[o-list-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n    </ng-content>\n    <ng-container o-data-toolbar-projection-end>\n      <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n        [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" [appearance]=\"quickFilterAppearance\" float-label=\"never\">\n      </o-search-input>\n    </ng-container>\n  </o-data-toolbar>\n  <ng-container *ngIf=\"(loading | async) === false\">\n  <div fxLayout=\"column\" class=\"o-list-content\" fxFlex=\"1 1 100%\" >\n    <!--MAT-LIST-->\n    <mat-list (scroll)=\"onScroll($event)\" [class.selectable]=\"selectable\"\n      [class.o-list-item-has-buttons]=\"insertButton && (editButtonInRow || detailButtonInRow)\">\n\n      <mat-list-item *ngIf=\"!getDataArray().length\" fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"cursor: default;\">\n        <h3 matListItemTitle fxLayout=\"row\" fxLayoutAlign=\"center center\">\n          {{ 'TABLE.EMPTY' | oTranslate }}\n          <ng-container *ngIf=\"getQuickFilterValue().length > 0\">\n            {{ 'TABLE.EMPTY_USING_FILTER' | oTranslate : {values: [getQuickFilterValue()]} }}\n          </ng-container>\n        </h3>\n      </mat-list-item>\n      <ng-content></ng-content>\n    </mat-list>\n  </div>\n  <mat-paginator fxFlex=\"0 1 auto\" class=\"o-mat-paginator\" #paginator *ngIf=\"paginationControls\" [length]=\"totalRecords\" [pageSize]=\"queryRows\"\n    [pageSizeOptions]=\"pageSizeOptions\" [pageIndex]=\"currentPage\" [showFirstLastButtons]=\"true\" (page)=\"onChangePage($event)\"></mat-paginator>\n\n  <!--INSERT BUTTON -->\n  <button type=\"button\" *ngIf=\"insertButton && insertButtonFloatable\" mat-fab (click)=\"add($event)\" class=\"add-button add-button-bottom\"\n    [class.add-button-bottom]=\"insertButtonPosition ==='bottom'\" [class.add-button-top]=\"insertButtonPosition ==='top'\">\n    <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n  </button>\n</ng-container>\n</div>\n","import {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  forwardRef,\n  Inject,\n  Injector,\n  Optional,\n  QueryList,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { MatListItem, MatListItemLine, MatListItemTitle } from '@angular/material/list';\n\nimport { Util } from '../../../util/util';\nimport { OListComponent } from '../o-list.component';\nimport { ListItem } from './o-list-item';\n\n@Component({\n  selector: 'o-list-item',\n  templateUrl: './o-list-item.component.html',\n  styleUrls: ['./o-list-item.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-list-item]': 'true'\n  }\n})\nexport class OListItemComponent implements ListItem, AfterContentInit {\n\n  public modelData: any;\n  public linesNo = 1;\n\n  @ContentChildren(MatListItemLine, { descendants: true }) _lines: QueryList<MatListItemLine>;\n  @ContentChildren(MatListItemTitle, { descendants: true }) _titles: QueryList<MatListItemTitle>;\n\n\n  @ViewChild('innerListItem', { static: true })\n  public _innerListItem: MatListItem;\n\n\n  constructor(\n    public elRef: ElementRef,\n    protected _renderer: Renderer2,\n    protected _injector: Injector,\n    protected cd: ChangeDetectorRef,\n    @Optional() @Inject(forwardRef(() => OListComponent)) public _list: OListComponent\n  ) { }\n\n  public ngAfterContentInit(): void {\n    const matLinesRef = this._titles.length + this._lines.length;\n\n    const ngAfterContentInitOriginal = this._innerListItem.ngAfterViewInit;\n    // eslint-disable-next-line space-before-function-paren\n    this._innerListItem.ngAfterViewInit = function () {\n      const emptyDiv = this._element.nativeElement.querySelector('.mat-list-text:empty');\n      if (emptyDiv) {\n        emptyDiv.remove();\n      }\n      this._lines = matLinesRef;\n      ngAfterContentInitOriginal.apply(this);\n    };\n  }\n\n  public onDetailIconClicked(e?: Event): void {\n    if (Util.isDefined(e)) {\n      e.stopPropagation();\n    }\n    this._list.viewDetail(this.modelData);\n  }\n\n  public onEditIconClicked(e?: Event): void {\n    if (Util.isDefined(e)) {\n      e.stopPropagation();\n    }\n    this._list.editDetail(this.modelData);\n  }\n\n  public setItemData(data: any): void {\n    if (!Util.isDefined(this.modelData)) {\n      this.modelData = data;\n      this.cd.detectChanges();\n    }\n  }\n\n  public getItemData(): any {\n    return this.modelData;\n  }\n\n  public onCheckboxChange(): void {\n    if (this._list.selectable && Util.isDefined(this.modelData)) {\n      this._list.setSelected(this.modelData);\n    }\n  }\n\n  public onCheckboxClicked(event: Event) {\n    event.stopPropagation();\n  }\n\n  get isSelected(): boolean {\n    return this._list.isItemSelected(this.modelData);\n  }\n\n}\n","<mat-list-item #innerListItem>\n  <div class=\"o-list-row-action o-list-item-selection-check\" *ngIf=\"_list && _list.selectable\">\n    <mat-checkbox [checked]=\"isSelected\" (change)=\"onCheckboxChange()\" (click)=\"onCheckboxClicked($event)\"></mat-checkbox>\n  </div>\n  <ng-content select=\"[o-list-item-avatar], [matListAvatar], [matListIcon]\"> </ng-content>\n  <div class=\"mat-mdc-list-item\">\n    <ng-content select=\"[matLine]\"></ng-content>\n  </div>\n  <!--matListItemMeta to put content into the meta section of a list item-->\n  <div matListItemMeta>\n    <ng-content select=\"o-list-item-card-image,o-list-item-card\"></ng-content>\n  </div>\n  <ng-content select=\"o-list-item-text,o-list-item-avatar, [o-list-item]\"></ng-content>\n\n  <div fxLayout=\"row\" class=\"row-buttons-container\">\n    <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.editButtonInRow\" (click)=\"onEditIconClicked($event)\">\n      <mat-icon class=\"material-icons\">{{ _list.editButtonInRowIcon }}</mat-icon>\n    </div>\n    <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.detailButtonInRow\" (click)=\"onDetailIconClicked($event)\">\n      <mat-icon class=\"material-icons\">{{ _list.detailButtonInRowIcon }}</mat-icon>\n    </div>\n  </div>\n</mat-list-item>\n","import { Directive, ElementRef, EventEmitter, Injector, QueryList, Renderer2, ViewChildren } from '@angular/core';\nimport { MatListItemLine, MatListItemTitle } from '@angular/material/list';\n\nimport { Util } from '../../../util/util';\nimport { OListItemComponent } from '../list-item/o-list-item.component';\n\nexport const DEFAULT_INPUTS_O_TEXT_RENDERER = [\n  'title',\n  'primaryText : primary-text',\n  'secondaryText : secondary-text',\n  'icon'\n];\n\nexport const DEFAULT_OUTPUTS_O_TEXT_RENDERER = [\n  'onIconClick : icon-action'\n];\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_TEXT_RENDERER,\n  outputs: DEFAULT_OUTPUTS_O_TEXT_RENDERER\n})\nexport class OListItemTextRenderer {\n\n  /* inputs variables */\n  protected _title: string;\n  protected _primaryText: string;\n  protected _secondaryText: string;\n  protected _icon: string;\n\n  onIconClick: EventEmitter<object> = new EventEmitter<object>();\n  @ViewChildren(MatListItemTitle) titles: QueryList<MatListItemTitle>;\n  @ViewChildren(MatListItemLine) lines: QueryList<MatListItemLine>;\n  constructor(\n    public elRef: ElementRef,\n    protected _renderer: Renderer2,\n    protected _injector: Injector,\n    protected _listItem: OListItemComponent\n  ) { }\n\n  modifyMatListItemElement() {\n\n    const listItem = this.elRef.nativeElement?.parentElement?.parentElement?.parentElement;\n\n    if (listItem && listItem.nodeName === 'MAT-LIST-ITEM') {\n      let linesNo = 3;\n      if (this.title === undefined) {\n        linesNo--;\n      }\n      if (this.primaryText === undefined) {\n        linesNo--;\n      }\n      if (this.secondaryText === undefined) {\n        linesNo--;\n      }\n      this._listItem._innerListItem._lines = this.lines;\n      this._listItem._innerListItem._titles = this.titles;\n      this._listItem._innerListItem.lines = linesNo;\n      listItem.querySelector('.mat-mdc-list-item').remove();\n    }\n\n  }\n\n  onActionIconClick(e?: Event) {\n    if (Util.isDefined(e)) {\n      e.stopPropagation();\n    }\n    this.onIconClick.emit(e);\n  }\n\n  get title(): string {\n    return this._title;\n  }\n\n  set title(val: string) {\n    this._title = val;\n  }\n\n  get primaryText(): string {\n    return this._primaryText;\n  }\n\n  set primaryText(val: string) {\n    this._primaryText = val;\n  }\n\n  get secondaryText(): string {\n    return this._secondaryText;\n  }\n\n  set secondaryText(val: string) {\n    this._secondaryText = val;\n  }\n\n  get icon(): string {\n    return this._icon;\n  }\n\n  set icon(val: string) {\n    this._icon = val;\n  }\n\n}\n","import { AfterViewInit, Component, ElementRef, forwardRef, Inject, Injector, OnInit, Optional, Renderer2, ViewEncapsulation } from '@angular/core';\n\nimport { OListItemComponent } from '../../list-item/o-list-item.component';\nimport { OListItemTextRenderer } from '../o-list-item-text-renderer.class';\n\nexport const DEFAULT_INPUTS_O_LIST_ITEM_AVATAR = [\n  'avatar',\n  'emptyAvatar: empty-avatar',\n  // avatar-type [base64|url]: avatar type (extern url or base64). Default: no value.\n  'avatarType: avatar-type'\n];\n\n@Component({\n  selector: 'o-list-item-avatar',\n  templateUrl: './o-list-item-avatar.component.html',\n  styleUrls: ['./o-list-item-avatar.component.scss'],\n  inputs: DEFAULT_INPUTS_O_LIST_ITEM_AVATAR,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-custom-list-item]': 'true',\n    '[class.o-list-item-avatar]': 'true'\n  }\n})\nexport class OListItemAvatarComponent extends OListItemTextRenderer implements AfterViewInit, OnInit {\n\n  public avatarSrc: string;\n  protected avatar: string;\n  protected avatarType: string;\n  protected emptyAvatar: string;\n\n  constructor(\n    elRef: ElementRef,\n    _renderer: Renderer2,\n    _injector: Injector,\n    @Optional() @Inject(forwardRef(() => OListItemComponent)) protected _listItem: OListItemComponent\n  ) {\n    super(elRef, _renderer, _injector, _listItem);\n  }\n\n\n  ngAfterViewInit() {\n    this.modifyMatListItemElement();\n  }\n\n  ngOnInit() {\n    let avatarValue: any = this.avatar;\n    if (!this.avatar) {\n      avatarValue = this.emptyAvatar;\n    } else {\n      switch (this.avatarType) {\n        case 'base64':\n          avatarValue = ('data:image/png;base64,' + ((typeof (avatarValue.bytes) !== 'undefined') ? avatarValue.bytes : avatarValue));\n          break;\n        case 'url':\n        default:\n          avatarValue = this.avatar;\n          break;\n      }\n    }\n    this.avatarSrc = avatarValue;\n  }\n\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n  <img matListItemAvatar class=\"avatar\" [src]=\"avatarSrc | oSafe:'resourceUrl'\" [alt]=\"title\">\n  <div class=\"mat-mdc-list-item\">\n    <span matListItemTitle class=\"primary-text\"> {{ title }} </span>\n    <span *ngIf=\"primaryText !== undefined\" matListItemLine class=\"primary-text\">{{ primaryText }}</span>\n    <span *ngIf=\"secondaryText !== undefined\" matListItemLine class=\"secondary-text\">{{ secondaryText }}</span>\n  </div>\n  <mat-icon *ngIf=\"icon !== undefined\" class=\"material-icons o-list-item-icon\" (click)=\"onActionIconClick($event)\">\n    {{ icon }}\n  </mat-icon>\n</div>\n","import { Directive, ElementRef, EventEmitter, Injector, Renderer2 } from '@angular/core';\n\nimport { Util } from '../../../util/util';\nimport { OListItemComponent } from '../list-item/o-list-item.component';\n\nexport const DEFAULT_INPUTS_O_CARD_RENDERER = [\n  'title',\n  'subtitle',\n  'image',\n  'showImage: show-image',\n  'action1Text: action-1-text',\n  'action2Text: action-2-text'\n];\n\nexport const DEFAULT_OUTPUTS_O_CARD_RENDERER = [\n  'onAction1Click: action-1',\n  'onAction2Click: action-2'\n];\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_CARD_RENDERER,\n  outputs: DEFAULT_OUTPUTS_O_CARD_RENDERER\n})\nexport class OListItemCardRenderer {\n\n  /* inputs variables */\n  protected _title: string;\n  protected _subtitle: string;\n  protected _image: string;\n  protected _showImage: boolean = true;\n  protected _action1Text: string;\n  protected _action2Text: string;\n\n  onAction1Click: EventEmitter<object> = new EventEmitter<object>();\n  onAction2Click: EventEmitter<object> = new EventEmitter<object>();\n  /* end of inputs variables */\n\n  constructor(\n    public elRef: ElementRef,\n    protected _renderer: Renderer2,\n    protected _injector: Injector,\n    protected _listItem: OListItemComponent\n  ) { }\n\n  modifyMatListItemElement() {\n    const matListItem = this.elRef.nativeElement?.parentElement?.parentElement;\n    if (matListItem) {\n      matListItem.classList.add('o-card-item');\n    }\n  }\n\n  onAction1ButtonClick(e?: Event) {\n    if (Util.isDefined(e)) {\n      e.stopPropagation();\n    }\n    this.onAction1Click.emit(e);\n  }\n\n  onAction2ButtonClick(e?: Event) {\n    if (Util.isDefined(e)) {\n      e.stopPropagation();\n    }\n    this.onAction2Click.emit(e);\n  }\n\n  compareListHeight(height: string) {\n    return (height === this._listItem._list.rowHeight) || undefined;\n  }\n\n  get title(): string {\n    return this._title;\n  }\n\n  set title(val: string) {\n    this._title = val;\n  }\n\n  get subtitle(): string {\n    return this._subtitle;\n  }\n\n  set subtitle(val: string) {\n    this._subtitle = val;\n  }\n\n  get image(): string {\n    return this._image;\n  }\n\n  set image(val: string) {\n    this._image = val;\n  }\n\n  get showImage(): boolean {\n    return this._showImage;\n  }\n\n  set showImage(val: boolean) {\n    this._showImage = val;\n  }\n\n  get action1Text(): string {\n    return this._action1Text;\n  }\n\n  set action1Text(val: string) {\n    this._action1Text = val;\n  }\n\n  get action2Text(): string {\n    return this._action2Text;\n  }\n\n  set action2Text(val: string) {\n    this._action2Text = val;\n  }\n\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, forwardRef, Inject, Injector, Optional, Renderer2, ViewEncapsulation } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../decorators/input-converter';\nimport { Util } from '../../../../util/util';\nimport { OListItemComponent } from '../../list-item/o-list-item.component';\nimport { OListItemCardRenderer } from '../o-list-item-card-renderer.class';\n\nexport const DEFAULT_INPUTS_O_LIST_ITEM_CARD_IMAGE = [\n  'content',\n  'avatar',\n  'icon',\n  'collapsible',\n  'collapsed'\n];\n\nexport const DEFAULT_OUTPUTS_O_LIST_ITEM_CARD_IMAGE = [\n  'onIconClick : icon-action'\n];\n\n@Component({\n  selector: 'o-list-item-card-image',\n  templateUrl: './o-list-item-card-image.component.html',\n  styleUrls: ['./o-list-item-card-image.component.scss'],\n  inputs: DEFAULT_INPUTS_O_LIST_ITEM_CARD_IMAGE,\n  outputs: DEFAULT_OUTPUTS_O_LIST_ITEM_CARD_IMAGE,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-custom-list-item]': 'true',\n    '[class.o-list-item-card-image]': 'true'\n  }\n})\nexport class OListItemCardImageComponent extends OListItemCardRenderer implements AfterViewInit {\n\n  protected _content: string;\n  protected _avatar: string;\n  protected _icon: string;\n  @BooleanInputConverter()\n  protected _collapsible: boolean = false;\n  @BooleanInputConverter()\n  protected _collapsed: boolean = true;\n\n  onIconClick: EventEmitter<object> = new EventEmitter<object>();\n\n  constructor(\n    elRef: ElementRef,\n    _renderer: Renderer2,\n    _injector: Injector,\n    @Optional() @Inject(forwardRef(() => OListItemComponent)) _listItem: OListItemComponent\n  ) {\n    super(elRef, _renderer, _injector, _listItem);\n  }\n\n  ngAfterViewInit() {\n    this.modifyMatListItemElement();\n  }\n\n  onActionIconClick(e?: Event) {\n    if (Util.isDefined(e)) {\n      e.stopPropagation();\n    }\n    this.onIconClick.emit(e);\n  }\n\n  get content(): string {\n    return this._content;\n  }\n\n  set content(val: string) {\n    this._content = val;\n  }\n\n  get avatar(): string {\n    return this._avatar;\n  }\n\n  set avatar(val: string) {\n    this._avatar = val;\n  }\n\n  get icon(): string {\n    return this._icon;\n  }\n\n  set icon(val: string) {\n    this._icon = val;\n  }\n\n  get collapsible(): boolean {\n    return this._collapsible;\n  }\n\n  set collapsible(val: boolean) {\n    this._collapsible = val;\n  }\n\n  get collapsed(): boolean {\n    return this._collapsed;\n  }\n\n  set collapsed(val: boolean) {\n    this._collapsed = val;\n  }\n\n}\n\n","<mat-card fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"o-item-card\" [class.small]=\"compareListHeight('small')\"\n  [class.medium]=\"compareListHeight('medium')\" [class.large]=\"compareListHeight('large')\">\n\n  <mat-card-header *ngIf=\"avatar !== undefined\">\n    <img mat-card-avatar src=\"{{ avatar }}\" alt=\"avatar image\">\n    <mat-card-title *ngIf=\"title !== undefined\"> {{ title }}</mat-card-title>\n    <mat-card-subtitle *ngIf=\"subtitle !== undefined\"> {{ subtitle }}</mat-card-subtitle>\n  </mat-card-header>\n\n  <img *ngIf=\"image !== undefined\" mat-card-image src=\"{{ image }}\" [class.exists-action-button]=\"icon !== undefined\" alt=\"card image\">\n\n  <button type=\"button\" *ngIf=\"icon !== undefined && compareListHeight('small')\" mat-mini-fab (click)=\"onActionIconClick($event)\"\n    class=\"action-button\">\n    <mat-icon>{{ icon }}</mat-icon>\n  </button>\n\n  <button type=\"button\" *ngIf=\"icon !== undefined && (compareListHeight('medium') || compareListHeight('large'))\" mat-fab\n    (click)=\"onActionIconClick($event)\" class=\"action-button\">\n    <mat-icon>{{ icon }}</mat-icon>\n  </button>\n\n  <mat-card-title *ngIf=\"avatar === undefined && title !== undefined\"> {{ title }}</mat-card-title>\n  <mat-card-subtitle *ngIf=\"avatar === undefined && subtitle !== undefined\"> {{ subtitle }}</mat-card-subtitle>\n\n  <mat-card-content *ngIf=\"!collapsible\">\n    <p>\n      {{ content }}\n    </p>\n  </mat-card-content>\n\n  <mat-card-actions>\n    <button type=\"button\" mat-button *ngIf=\"action1Text !== undefined\" (click)=\"onAction1ButtonClick($event)\">{{ action1Text }}</button>\n    <button type=\"button\" mat-button *ngIf=\"action2Text !== undefined\" (click)=\"onAction2ButtonClick($event)\">{{ action2Text }}</button>\n\n    <div class=\"collapse-button-container\">\n      <button type=\"button\" mat-icon-button *ngIf=\"collapsible\" (click)=\"collapsed = !collapsed\" class=\"collapse-button\">\n        <mat-icon *ngIf=\"collapsed\" svgIcon=\"ontimize:keyboard_arrow_down\"></mat-icon>\n        <mat-icon *ngIf=\"!collapsed\" svgIcon=\"ontimize:keyboard_arrow_up\"></mat-icon>\n      </button>\n    </div>\n  </mat-card-actions>\n\n  <mat-card-content *ngIf=\"collapsible && !collapsed\">\n    <p>\n      {{ content }}\n    </p>\n  </mat-card-content>\n\n</mat-card>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  forwardRef,\n  Inject,\n  Injector,\n  Optional,\n  Renderer2,\n  ViewEncapsulation,\n} from '@angular/core';\n\nimport { OListItemComponent } from '../../list-item/o-list-item.component';\nimport {\n  OListItemCardRenderer\n} from '../o-list-item-card-renderer.class';\n\n\n@Component({\n  selector: 'o-list-item-card',\n  templateUrl: './o-list-item-card.component.html',\n  styleUrls: ['./o-list-item-card.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-custom-list-item]': 'true',\n    '[class.o-list-item-card]': 'true'\n  }\n})\nexport class OListItemCardComponent extends OListItemCardRenderer implements AfterViewInit {\n\n  constructor(\n    elRef: ElementRef,\n    _renderer: Renderer2,\n    _injector: Injector,\n    @Optional() @Inject(forwardRef(() => OListItemComponent)) _listItem: OListItemComponent\n  ) {\n    super(elRef, _renderer, _injector, _listItem);\n  }\n\n  ngAfterViewInit() {\n    this.modifyMatListItemElement();\n  }\n\n}\n\n","<mat-card fxLayout=\"column\" fxLayoutAlign=\"center center\">\n  <mat-card-title-group>\n    <img *ngIf=\"showImage\" src=\"{{ image }}\" [class.mat-mdc-card-sm-image]=\"compareListHeight('small')\"\n      [class.mat-mdc-card-md-image]=\"compareListHeight('medium')\" [class.mat-mdc-card-lg-image]=\"compareListHeight('large')\" alt=\"card title image\">\n    <mat-card-title *ngIf=\"title !== undefined\"> {{ title }}</mat-card-title>\n    <mat-card-subtitle *ngIf=\"subtitle !== undefined\"> {{ subtitle }}</mat-card-subtitle>\n  </mat-card-title-group>\n  <mat-card-actions>\n    <button type=\"button\" mat-button *ngIf=\"action1Text !== undefined\" (click)=\"onAction1ButtonClick($event)\">{{ action1Text }}</button>\n    <button type=\"button\" mat-button *ngIf=\"action2Text !== undefined\" (click)=\"onAction2ButtonClick($event)\">{{ action2Text }}</button>\n  </mat-card-actions>\n</mat-card>\n","import { AfterViewInit, Component, ElementRef, forwardRef, Inject, Injector, OnInit, Optional, Renderer2, ViewEncapsulation } from '@angular/core';\n\nimport { OListItemComponent } from '../../list-item/o-list-item.component';\nimport { OListItemTextRenderer } from '../o-list-item-text-renderer.class';\n\nexport const DEFAULT_INPUTS_O_LIST_ITEM_TEXT = [\n  'iconPosition : icon-position'\n];\n\n\n@Component({\n  selector: 'o-list-item-text',\n  templateUrl: './o-list-item-text.component.html',\n  styleUrls: ['./o-list-item-text.component.scss'],\n  inputs: DEFAULT_INPUTS_O_LIST_ITEM_TEXT,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-custom-list-item]': 'true'\n  }\n})\nexport class OListItemTextComponent extends OListItemTextRenderer implements OnInit, AfterViewInit {\n\n  public ICON_POSITION_LEFT = 'left';\n  public ICON_POSITION_RIGHT = 'right';\n\n  public _iconPosition: string;\n\n  constructor(\n    elRef: ElementRef,\n    _renderer: Renderer2,\n    _injector: Injector,\n    @Optional() @Inject(forwardRef(() => OListItemComponent)) protected _listItem: OListItemComponent\n  ) {\n    super(elRef, _renderer, _injector, _listItem);\n    this.elRef.nativeElement.classList.add('o-list-item-text');\n  }\n\n  ngOnInit(): void {\n    if (!this.iconPosition || [this.ICON_POSITION_LEFT, this.ICON_POSITION_RIGHT].indexOf(this.iconPosition.toLowerCase()) === -1) {\n      this.iconPosition = this.ICON_POSITION_RIGHT;\n    }\n  }\n\n  ngAfterViewInit() {\n    this.modifyMatListItemElement();\n  }\n\n  get iconPosition(): string {\n    return this._iconPosition;\n  }\n\n  set iconPosition(val: string) {\n    this._iconPosition = val;\n  }\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n  <mat-icon *ngIf=\"icon !== undefined && iconPosition === ICON_POSITION_LEFT\" class=\"material-icons o-list-item-icon\"\n    (click)=\"onActionIconClick($event)\">\n    {{ icon }}\n  </mat-icon>\n  <div class=\"mat-mdc-list-item\">\n    <span matListItemTitle class=\"primary-text\"> {{ title }} </span>\n    <span *ngIf=\"primaryText !== undefined\" matListItemLine class=\"primary-text\">{{ primaryText }}</span>\n    <span *ngIf=\"secondaryText !== undefined\" matListItemLine class=\"secondary-text\">{{ secondaryText }}</span>\n  </div>\n  <mat-icon *ngIf=\"icon !== undefined && iconPosition === ICON_POSITION_RIGHT\" class=\"material-icons o-list-item-icon\"\n    (click)=\"onActionIconClick($event)\">\n    {{icon }}\n  </mat-icon>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OSearchInputModule } from '../input/search-input/o-search-input.module';\nimport { ODataToolbarModule } from '../o-data-toolbar/o-data-toolbar.module';\nimport { OListItemComponent } from './list-item/o-list-item.component';\nimport { OListComponent } from './o-list.component';\nimport { OListItemAvatarComponent } from './renderers/avatar/o-list-item-avatar.component';\nimport { OListItemCardImageComponent } from './renderers/card-image/o-list-item-card-image.component';\nimport { OListItemCardComponent } from './renderers/card/o-list-item-card.component';\nimport { OListItemTextComponent } from './renderers/text/o-list-item-text.component';\nimport { OListSkeletonComponent } from './skeleton/o-list-skeleton.component';\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\n\n\n@NgModule({\n    declarations: [\n        OListComponent,\n        OListItemComponent,\n        OListItemAvatarComponent,\n        OListItemCardImageComponent,\n        OListItemCardComponent,\n        OListItemTextComponent,\n        OListSkeletonComponent\n    ],\n    imports: [CommonModule, OSearchInputModule, OSharedModule, RouterModule, ODataToolbarModule, NgxSkeletonLoaderModule],\n    exports: [\n        OListComponent,\n        OListItemComponent,\n        OListItemAvatarComponent,\n        OListItemCardImageComponent,\n        OListItemCardComponent,\n        OListItemTextComponent\n    ]\n})\nexport class OListModule { }\n","export enum ColumnValueFilterOperator { IN, LESS_EQUAL, MORE_EQUAL, BETWEEN, EQUAL }\n\nexport type OColumnValueFilter = {\n  attr: string;\n  operator: ColumnValueFilterOperator;\n  values: any;\n  availableValues: any[];\n};\n","export type TableFilterByColumnData = {\n  value: any;\n  selected: boolean;\n  rowValue: any;\n  renderedValue?: any;\n  tableIndex?: number;\n};\n\nexport enum TableFilterByColumnDialogResult {\n  ACCEPT,\n  CANCEL,\n  CLEAR\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { OTableColumnCalculated } from '../../../interfaces/o-table-column-calculated.interface';\nimport { OTableColumn } from '../../../interfaces/o-table-column.interface';\nimport { Expression } from '../../../types/expression.type';\nimport { OperatorFunction } from '../../../types/operation-function.type';\nimport { OColumnAggregate } from '../../../types/table/o-column-aggregate.type';\nimport { OColumnTooltip } from '../../../types/table/o-column-tooltip.type';\nimport { Util } from '../../../util/util';\nimport { OBaseTableCellRenderer } from './cell-renderer/o-base-table-cell-renderer.class';\nimport { Codes } from '../../../util/codes';\n\nexport class OColumn {\n  attr: string;\n  name: string;\n  title: string;\n  type: string;\n  sqlType: number;\n  className: string;\n  orderable: boolean;\n  groupable: boolean;\n  _searchable: boolean;\n  searching: boolean; // this column is used to filter in quickfilter\n  visible: boolean;\n  renderer: OBaseTableCellRenderer;\n  editor: any;\n  protected _editing: boolean = false;\n  _width: string;\n  minWidth: string;\n  maxWidth: string;\n  aggregate: OColumnAggregate;\n  calculate: string | OperatorFunction;\n  definition: OTableColumn;\n  tooltip: OColumnTooltip;\n  resizable: boolean;\n  DOMWidth: number;\n  filterExpressionFunction: (columnAttr: string, quickFilter?: string) => Expression;\n\n  private multilineSubject: BehaviorSubject<boolean> = new BehaviorSubject(this.multiline);\n  public isMultiline: Observable<boolean> = this.multilineSubject.asObservable();\n  private _multiline: boolean;\n\n  get editing(): boolean {\n    return this._editing;\n  }\n\n  set editing(val: boolean) {\n    if (this.type === 'boolean' && this.editor && this.editor.autoCommit) {\n      this._editing = false;\n    }\n    this._editing = this.editor != null && val;\n    this.editor.setEditingRowClass(this._editing)\n  }\n\n  setDefaultProperties(args: any) {\n    this.type = 'string';\n    this.className = 'o-column-' + (this.type) + ' ';\n    this.orderable = args.orderable;\n    this.resizable = args.resizable;\n    this.groupable = args.groupable;\n    this.searchable = !(this.type === 'date' && args.pageable);\n    this.searching = true;\n    // column without 'attr' should contain only renderers that do not depend on cell data, but row data (e.g. actions)\n    this.name = this.attr;\n    this.title = this.attr;\n    this.multiline = false;\n  }\n\n  setColumnProperties(column: OTableColumn & OTableColumnCalculated) {\n    this.title = Util.isDefined(column.title) ? column.title : column.attr;\n    this.definition = column;\n    this.multiline = column.multiline;\n\n    if (Util.isDefined(column.minWidth)) {\n      this.minWidth = column.minWidth;\n    }\n    if (Util.isDefined(column.maxWidth)) {\n      this.maxWidth = column.maxWidth;\n    }\n    if (Util.isDefined(column.orderable)) {\n      this.orderable = column.orderable;\n    }\n    if (Util.isDefined(column.resizable)) {\n      this.resizable = column.resizable;\n    }\n\n    if (Util.isDefined(column.searchable)) {\n      this.searchable = column.searchable;\n    }\n\n    if (Util.isDefined(column.groupable)) {\n      this.groupable = column.groupable;\n    }\n    if (Util.isDefined(column.renderer)) {\n      this.renderer = column.renderer;\n    }\n    if (Util.isDefined(column.editor)) {\n      this.editor = column.editor;\n    }\n    if (Util.isDefined(column.type)) {\n      this.type = column.type;\n      this.className = 'o-column-' + (this.type) + ' ';\n    }\n\n    if (Util.isDefined(column.type)) {\n      this.sqlType = column.getSQLType();\n    }\n\n    if (Util.isDefined(column.class)) {\n      this.className = Util.isDefined(this.className) ? (this.className + ' ' + column.class) : column.class;\n    }\n    // if (column instanceof OTableColumnCalculatedComponent) {\n    if (Util.isDefined(column.operation) || Util.isDefined(column.functionOperation)) {\n      this.calculate = column.operation ? column.operation : column.functionOperation;\n    }\n    // }\n    if (Util.isDefined(column.tooltip) && column.tooltip) {\n      this.tooltip = {\n        value: column.tooltipValue,\n        function: column.tooltipFunction\n      };\n    }\n    if (Util.isDefined(column.filterExpressionFunction)) {\n      this.filterExpressionFunction = column.filterExpressionFunction;\n    }\n  }\n\n  set searchable(val: boolean) {\n    this._searchable = val;\n    this.searching = val;\n  }\n\n  get searchable(): boolean {\n    return this._searchable;\n  }\n\n  set multiline(val: boolean) {\n    val = Util.parseBoolean(String(val));\n    this._multiline = val;\n    this.multilineSubject.next(this._multiline);\n  }\n\n  get multiline(): boolean {\n    return this._multiline;\n  }\n\n  hasTooltip(): boolean {\n    return Util.isDefined(this.tooltip);\n  }\n\n  getTooltip(rowData: any): any {\n    if (!this.hasTooltip()) {\n      return undefined;\n    }\n    let tooltip;\n    if (Util.isDefined(this.tooltip.value)) {\n      tooltip = this.tooltip.value;\n    } else if (Util.isDefined(this.tooltip.function)) {\n      try {\n        tooltip = this.tooltip.function(rowData);\n      } catch (e) {\n        console.warn('o-table-column tooltip-function didnt worked');\n      }\n    } else {\n      tooltip = Util.isDefined(this.renderer) ? this.renderer.getTooltip(rowData[this.name], rowData) : rowData[this.name];\n    }\n    return tooltip;\n  }\n\n  getMinWidth() {\n    if (Util.isDefined(this.width)) {\n      return this.width;\n    }\n    return this.minWidth;\n  }\n\n  getMinWidthValue() {\n    return Util.extractPixelsValue(this.minWidth, Codes.DEFAULT_COLUMN_MIN_WIDTH);\n  }\n\n  getMaxWidthValue() {\n    const value = Util.extractPixelsValue(this.maxWidth);\n    return value ? value : undefined;\n  }\n\n  setRenderWidth(horizontalScrolled: boolean, clientWidth: number) {\n    if (Util.isDefined(this.width)) {\n      return;\n    }\n\n    const defaultWidth = (horizontalScrolled) ? undefined : 'auto';\n    this.width = Util.isDefined(this.DOMWidth) ? (this.getDOMWidth(clientWidth) + 'px') : defaultWidth;\n  }\n\n  getDOMWidth(val: any): number {\n    let DOMWidth;\n    const pxVal = Util.extractPixelsValue(val);\n\n    if (Util.isDefined(pxVal)) {\n      DOMWidth = pxVal;\n      const minValue = this.getMinWidthValue();\n      if (Util.isDefined(minValue) && pxVal > 0 && pxVal < minValue) {\n        DOMWidth = minValue;\n      }\n\n      if (Util.isDefined(this.maxWidth)) {\n        const maxValue = Util.extractPixelsValue(this.maxWidth);\n        if (Util.isDefined(maxValue) && pxVal > maxValue) {\n          DOMWidth = maxValue;\n        }\n      }\n\n    }\n    return DOMWidth;\n  }\n\n  set width(val: string) {\n    let widthVal = val;\n    let DOMWidth = this.getDOMWidth(val);\n    const pxVal = Util.extractPixelsValue(DOMWidth);\n    if (Util.isDefined(pxVal)) {\n      this.DOMWidth = pxVal;\n      widthVal = pxVal + 'px';\n    }\n\n    this._width = widthVal;\n  }\n\n  get width(): string {\n    return this._width;\n  }\n\n\n  getWidthToStore(): any {\n    return this._width;\n  }\n\n  setWidth(val: number) {\n    this.width = val + 'px';\n    this.DOMWidth = val;\n  }\n\n  getTitleAlignClass() {\n    if (Util.isDefined(this.definition)) {\n      return this.definition.titleAlign || Codes.COLUMN_TITLE_ALIGN_CENTER;\n    }\n    // default title align\n    return Codes.COLUMN_TITLE_ALIGN_CENTER;\n  }\n\n  getFilterValue(cellValue: any, rowValue?: any): any[] {\n    if (this.renderer) {\n      return this.renderer.getFilter(cellValue, rowValue);\n    } else {\n      return [cellValue];\n    }\n  }\n\n  useCustomFilterFunction(): boolean {\n    return this.searching && this.visible && this.renderer != null && this.renderer.filterFunction != null;\n  }\n\n  useQuickfilterFunction(): boolean {\n    return this.searching && this.visible && !(this.renderer != null && this.renderer.filterFunction != null);\n  }\n\n}\n","import { Subject } from 'rxjs';\n\nimport { GroupedColumnAggregateConfiguration } from '../../../../interfaces/o-table-columns-grouping-interface';\nimport { Util } from '../../../../util/util';\nimport {\n  OTableColumnsGroupingColumnComponent\n} from '../header/table-columns-grouping/columns/o-table-columns-grouping-column.component';\n\nexport type AggregateChangeArg = {\n  columnAttr: string;\n  activeAggregate: string;\n  changeAllGroupedRows: boolean;\n  row: OTableGroupedRow;\n}\n\nexport type AggregateColumnData = {\n  component: OTableColumnsGroupingColumnComponent;\n  activeAggregate: string;\n  value: any;\n  data: any[];\n}\n\nexport class OTableGroupedRow {\n  column: string;\n  title: string;\n  groupData: any[];\n  level = 0;\n  keysAsString: string;\n  parent: OTableGroupedRow;\n  expanded = true;\n  get visible(): boolean {\n    return !this.parent || (this.parent.visible && this.parent.expanded);\n  }\n  private columnsData: { [key: string]: AggregateColumnData } = {};\n\n  aggregateFunctionChange: Subject<AggregateChangeArg> = new Subject<AggregateChangeArg>();\n\n  constructor(arg?: any) {\n    if (Util.isDefined(arg)) {\n      this.column = arg.column;\n      this.keysAsString = arg.keysAsString;\n      this.level = arg.level;\n      this.parent = arg.parent;\n    }\n  }\n\n  hasColumnData(columnAttr: string): boolean {\n    return Util.isDefined(this.columnsData[columnAttr]);\n  }\n\n  hasActiveAggregate(columnAttr: string): boolean {\n    return this.hasColumnData(columnAttr) && Util.isDefined(this.columnsData[columnAttr].activeAggregate);\n  }\n\n  getColumnGroupingComponent(columnAttr: string): OTableColumnsGroupingColumnComponent {\n    return this.hasColumnData(columnAttr) ? this.columnsData[columnAttr].component : null;\n  }\n\n  getColumnAggregateValue(columnAttr: string): any {\n    return this.columnsData[columnAttr].value;\n  }\n\n  setColumnAggregateValue(columnAttr: string, value: any) {\n    this.columnsData[columnAttr].value = value;\n  }\n\n  expandSameLevel(defaultValue: boolean): boolean {\n    if (!this.hasColumnData(this.column)) {\n      return defaultValue;\n    }\n    const groupingComponent = this.getColumnGroupingComponent(this.column);\n    if (Util.isDefined(groupingComponent)) {\n      return groupingComponent.expandGroupsSameLevel;\n    }\n    return defaultValue;\n  }\n\n  setColumnAggregateData(columnAttr: string, value: any[]) {\n    if (this.hasColumnData(columnAttr)) {\n      this.columnsData[columnAttr].data = value;\n    }\n  }\n\n  getColumnAggregateData(columnAttr: string) {\n    return this.hasColumnData(columnAttr) ? this.columnsData[columnAttr].data : [];\n  }\n\n  setColumnActiveAggregateFunction(columnAttr: string, aggregateFnName: string, emitEvent: boolean = true) {\n    if (this.hasColumnData(columnAttr)) {\n      this.columnsData[columnAttr].activeAggregate = aggregateFnName;\n    } else {\n      this.columnsData[columnAttr] = {\n        component: null,\n        activeAggregate: aggregateFnName,\n        value: null,\n        data: []\n      };\n    }\n    if (emitEvent) {\n      let changeAllGroupedRows = true;\n      const groupingComponent = this.getColumnGroupingComponent(columnAttr);\n      if (Util.isDefined(groupingComponent)) {\n        changeAllGroupedRows = groupingComponent.changeAggregateSameLevel;\n      }\n\n      this.aggregateFunctionChange.next({\n        columnAttr: columnAttr,\n        activeAggregate: aggregateFnName,\n        changeAllGroupedRows: changeAllGroupedRows,\n        row: this\n      });\n    }\n  }\n\n  getColumnActiveAggregateTitle(columnAttr: string) {\n    const conf = this.getActiveColumnAggregateConfiguration(columnAttr);\n    if (conf.title) {\n      return conf.title;\n    }\n    return `AGGREGATE_NAME.${conf.aggregateName || conf.aggregate}`;\n  }\n\n  initializeColumnAggregate(columnAttr: string, component: OTableColumnsGroupingColumnComponent) {\n    if (!this.columnsData.hasOwnProperty(columnAttr)) {\n      this.columnsData[columnAttr] = {\n        component: null,\n        activeAggregate: 'sum',\n        value: null,\n        data: []\n      };\n    }\n    if (Util.isDefined(component)) {\n      this.columnsData[columnAttr].component = component;\n      this.columnsData[columnAttr].activeAggregate = component.aggregate;\n    }\n  }\n\n  getActiveColumnAggregateConfiguration(columnAttr: string): GroupedColumnAggregateConfiguration {\n    if (!this.hasColumnData(columnAttr)) {\n      return {\n        attr: columnAttr,\n        aggregate: 'sum'\n      }\n    }\n\n    const activeAggregate = this.columnsData[columnAttr].activeAggregate;\n    const groupingColumnComponent = this.columnsData[columnAttr].component;\n    if (Util.isDefined(groupingColumnComponent) && groupingColumnComponent.aggregate === activeAggregate) {\n      return groupingColumnComponent.getAggregateConfiguration();\n    }\n\n    return {\n      attr: columnAttr,\n      aggregate: this.columnsData[columnAttr].activeAggregate\n    }\n  }\n\n}\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { ChangeDetectorRef, EventEmitter, TemplateRef } from '@angular/core';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { Observable } from 'rxjs';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\n\nimport type { SnackBarService } from './../../services/snackbar.service';\n\nimport type { QuickFilterFunction } from \"../../types/quick-filter-function.type\";\nimport type { OColumn } from \"./column/o-column.class\";\nimport type { OPermissions } from \"../../types/o-permissions.type\";\nimport type { OTableButtons } from \"../../interfaces/o-table-buttons.interface\";\nimport type { OTableQuickfilter } from \"../../interfaces/o-table-quickfilter.interface\";\nimport type { OTableMenu } from \"../../interfaces/o-table-menu.interface\";\nimport type { OColumnValueFilter } from \"../../types/table/o-column-value-filter.type\";\nimport type { OContextMenuComponent } from \"../contextmenu/o-context-menu.component\";\nimport type { Expression, OFilterDefinition, OGroupedColumnTypes, OTableMenuPermissions, SQLOrder } from \"../../types\";\nimport type { OTableComponentStateClass } from \"../../services/state/o-table-component-state.class\";\nimport type { OTableHeaderComponent } from \"./extensions/header/table-header/o-table-header.component\";\nimport type { MatPaginator } from \"@angular/material/paginator\";\nimport type { OTableColumnSelectAllDirective } from \"./extensions/header/table-column-select-all/o-table-column-select-all.directive\";\nimport type { OFilterBuilderComponent } from \"../filter-builder/o-filter-builder.component\";\n\n\nexport abstract class OTableBase {\n  abstract getMenuPermissions(): OTableMenuPermissions;\n  abstract rowHeightObservable: Observable<string>;\n  abstract initializeCheckboxColumn();\n  visibleExportDialogButtons: string;\n  service: string;\n  exportServiceType: TemplateRef<any>;\n  exportOptsTemplate: any;\n  visibleColArray: string[];\n  showNotificationOfReadOnly: boolean;\n  abstract reinitializeSortColumns(sortColumns?: SQLOrder[]);\n  abstract setGroupColumns(value: any[]);\n  abstract clearColumnFilters(triggerDatasourceUpdate?: boolean, columnsAttr?: string[]): void\n  abstract refreshColumnsWidthFromLocalStorage();\n  abstract rowHeight: string;\n  abstract groupedColumnTypes: OGroupedColumnTypes[];\n  abstract setGroupedColumnTypes(value: OGroupedColumnTypes[])\n  abstract state: OTableComponentStateClass;\n  abstract storeFilterInState(arg: OFilterDefinition);\n  abstract setFiltersConfiguration();\n  abstract reloadPaginatedDataFromStart(clearSelectedItems?: boolean);\n  abstract clearFilters(): void;\n  abstract resetColumnsWidth();\n  abstract componentStateService: any;\n  abstract applyDefaultConfiguration();\n  abstract applyConfiguration(configurationName: string);\n\n  abstract getColumnsNotIncluded(): string[]\n  abstract getComponentFilter(existingFilter?: any): any;\n  abstract entity: string;\n  abstract getSqlTypes();\n  abstract getColumnNames(columns: string[]): { [columnId: string]: string; };\n  abstract showCaseSensitiveCheckbox(): boolean;\n  abstract pageable: boolean;\n  abstract dataSource: any;\n  abstract quickFilterCallback: QuickFilterFunction;\n  abstract abortQuery: BehaviorSubject<boolean>;\n  abstract oTableOptions: any;\n  abstract registerQuickFilter(arg: any): void;\n  abstract getOColumnFromTh(th: any): OColumn;\n  abstract cd: ChangeDetectorRef;\n  abstract getClientWidthColumn(col: OColumn): number;\n  abstract horizontalScroll: boolean;\n  abstract getActionsPermissions(): OPermissions[];\n  abstract selection: SelectionModel<Element>;\n  abstract registerOTableButtons(arg: OTableButtons);\n  abstract add();\n  abstract reloadData();\n  abstract remove();\n  abstract onUpdateScrolledState: EventEmitter<any>;\n  abstract rowWidth;\n  abstract onContentChange: EventEmitter<any>;\n  abstract staticData: Array<any>;\n  abstract oTableQuickFilterComponent: OTableQuickfilter;\n  abstract quickFilter: boolean;\n  abstract groupedColumnsArray: string[];\n  abstract isColumnFilterable(column: OColumn): boolean;\n  abstract openColumnFilterDialog(column: OColumn, event: Event);\n  abstract isColumnFiltersActive: boolean;\n  abstract oTableMenu: OTableMenu;\n  abstract getOColumn(attr: string): OColumn;\n  abstract groupByColumn(column: OColumn, type?: string);\n  abstract unGroupByColumn(column: OColumn);\n  abstract unGroupByAllColumns();\n  abstract filterByColumn(columnValueFilter: OColumnValueFilter);\n  abstract refresh();\n  abstract copySelection();\n  abstract copyAll();\n  abstract showAndSelectAllCheckbox();\n  abstract doHandleClick(row: any, column: string, rowIndex: number, $event: MouseEvent);\n  abstract viewDetail(item: any): void;\n  abstract clearSelection(): void;\n  abstract isSelectionModeMultiple(): boolean;\n  abstract registerContextMenu(value: OContextMenuComponent): void;\n  abstract groupable: boolean;\n  abstract selectAllCheckbox: boolean;\n  abstract isSelectionModeNone(): boolean;\n  abstract isAllSelected(): boolean\n\n  abstract nonHidableColumns: string;\n  abstract visibleColumns: string;\n  abstract sortColArray: SQLOrder[];\n  abstract currentPage: number;\n  abstract queryRows: number;\n  abstract resizable: boolean\n  abstract registerTableHeaders(tableHeader: OTableHeaderComponent);\n  abstract showButtonsText: boolean;\n  abstract matpaginator: MatPaginator;\n  abstract isIndeterminate(): boolean;\n  abstract onFilterByColumnChange: EventEmitter<any>;\n  abstract masterToggle(event: MatCheckboxChange): void;\n  abstract tableColumnSelectAllContentChild: OTableColumnSelectAllDirective;\n\n  abstract getColumnFiltersExpression(): Expression;\n  abstract columns: string;\n  abstract getParentKeysValues();\n  abstract filterBuilder: OFilterBuilderComponent;\n  abstract readOnlyFunction: (configuration: any) => boolean;\n  abstract isComponentReadOnly(selector: string, attr: string): boolean;\n  abstract getSnackService(): SnackBarService;\n  abstract setSelectedByKeys(keyValues: Array<any>): void;\n  abstract setSelectedByMultipleKeys(keyValues: Array<Object>): void;\n  abstract setSelectedByRowIds(rowIds: Array<number>): void;\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, forwardRef, Inject, Injector, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../../decorators/input-converter';\nimport { OTranslateService } from '../../../../services/translate/o-translate.service';\nimport { ColumnValueFilterOperator, OColumnValueFilter } from '../../../../types/table/o-column-value-filter.type';\nimport { Util } from '../../../../util/util';\nimport { OContextMenuComponent } from '../../../contextmenu/o-context-menu.component';\nimport type { OColumn } from '../../column/o-column.class';\nimport { OTableGroupedRow } from '../row/o-table-row-group.class';\nimport { OTableBase } from '../../o-table-base.class';\n\nexport const DEFAULT_TABLE_CONTEXT_MENU_INPUTS = [\n  'contextMenu: context-menu',\n  'showInsert: insert',\n  'showEdit: edit',\n  'showViewDetail: view-detail',\n  'showCopy: copy',\n  'showSelectAll: select-all',\n  'showRefresh: refresh',\n  'showDelete: delete',\n  'showFilter: filter',\n  'showGroupByRow: group-by-row'\n];\n\n@Component({\n  selector: 'o-table-context-menu',\n  templateUrl: './o-table-context-menu.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_TABLE_CONTEXT_MENU_INPUTS\n})\nexport class OTableContextMenuComponent implements AfterViewInit {\n  public contextMenu: OContextMenuComponent;\n  public isVisibleInsert: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isVisibleEdit: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isVisibleDetail: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isVisibleCopy: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isVisibleSelectAll: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isVisibleRefresh: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isVisibleDelete: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isVisibleFilter: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isVisibleGroupByRow: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isEnabledGroupByColumn: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isEnabledUnGroupByColumn: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  public isEnabledUnGroupAllColumn: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n  public isDataCell: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isTableGroupedRow: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  public isGroupableCell: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n  set showInsert(value: boolean) {\n    if (typeof value !== 'boolean') {\n      value = Util.parseBoolean(value as any);\n    }\n    this.isVisibleInsert.next(value);\n  }\n\n  get showInsert(): boolean {\n    return this.isVisibleInsert.getValue();\n  }\n\n  set showEdit(value: boolean) {\n    if (typeof value !== 'boolean') {\n      value = Util.parseBoolean(value as any);\n    }\n    this.isVisibleEdit.next(value);\n  }\n\n  get showEdit(): boolean {\n    return this.isVisibleEdit.getValue();\n  }\n\n  set showViewDetail(value: boolean) {\n    if (typeof value !== 'boolean') {\n      value = Util.parseBoolean(value as any);\n    }\n    this.isVisibleDetail.next(value);\n  }\n\n  get showViewDetail(): boolean {\n    return this.isVisibleDetail.getValue();\n  }\n\n  set showCopy(value: boolean) {\n    if (typeof value !== 'boolean') {\n      value = Util.parseBoolean(value as any);\n    }\n    this.isVisibleCopy.next(value);\n  }\n\n  get showCopy(): boolean {\n    return this.isVisibleCopy.getValue();\n  }\n\n  @BooleanInputConverter()\n  set showSelectAll(value: boolean) {\n    if (typeof value !== 'boolean') {\n      value = Util.parseBoolean(value as any);\n    }\n    this.table.isSelectionModeNone() ? this.isVisibleSelectAll.next(false) : this.isVisibleSelectAll.next(value);\n  }\n\n  get showSelectAll(): boolean {\n    return this.isVisibleSelectAll.getValue();\n  }\n\n  set showRefresh(value: boolean) {\n    if (typeof value !== 'boolean') {\n      value = Util.parseBoolean(value as any);\n    }\n    this.isVisibleRefresh.next(value);\n  }\n\n  get showRefresh(): boolean {\n    return this.isVisibleRefresh.getValue();\n  }\n\n  set showDelete(value: boolean) {\n    if (typeof value !== 'boolean') {\n      value = Util.parseBoolean(value as any);\n    }\n    this.isVisibleDelete.next(value);\n  }\n\n  get showDelete(): boolean {\n    return this.isVisibleDelete.getValue();\n  }\n\n  set showFilter(value: boolean) {\n    if (typeof value !== 'boolean') {\n      value = Util.parseBoolean(value as any);\n    }\n    this.isVisibleFilter.next(value);\n  }\n\n  get showFilter(): boolean {\n    return this.isVisibleFilter.getValue();\n  }\n\n  set showGroupByRow(value: boolean) {\n    if (typeof value !== 'boolean') {\n      value = Util.parseBoolean(value as any);\n    }\n    this.isVisibleGroupByRow.next(value);\n  }\n\n  get showGroupByRow(): boolean {\n    return this.isVisibleGroupByRow.getValue();\n  }\n\n\n  @ViewChild('defaultContextMenu')\n  protected defaultContextMenu: OContextMenuComponent;\n  protected _row: any;\n  protected column: OColumn;\n  protected translateService: OTranslateService;\n  protected contextMenuSubscription: Subscription = new Subscription();\n  public isDateColumn: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  constructor(\n    protected injector: Injector,\n    @Inject(forwardRef(() => OTableBase)) public table: OTableBase\n  ) {\n    this.translateService = this.injector.get(OTranslateService);\n  }\n\n  public ngAfterViewInit(): void {\n    if (!Util.isDefined(this.showSelectAll)) {\n      this.isVisibleSelectAll.next(this.table.selectAllCheckbox);\n    }\n    if (!this.table.groupable) {\n      this.isVisibleGroupByRow.next(this.table.groupable);\n    }\n    if (this.contextMenu) {\n      this.defaultContextMenu.externalContextMenuItems = this.contextMenu.oContextMenuItems;\n    }\n    this.table.registerContextMenu(this.defaultContextMenu);\n    this.registerContextMenuListeners();\n  }\n\n  public registerContextMenuListeners() {\n    this.contextMenuSubscription.add(this.defaultContextMenu.onClose.subscribe((param: any) => {\n      if (!this.table.isSelectionModeMultiple()) {\n        this.table.clearSelection();\n      }\n    }));\n\n    this.contextMenuSubscription.add(this.defaultContextMenu.onShow.subscribe((param: any) => {\n      this.initProperties(param);\n    }));\n  }\n\n  public gotoDetails(event): void {\n    const data = event.data.rowValue;\n    this.table.viewDetail(data);\n  }\n\n  public edit(event): void {\n    this.table.doHandleClick(event.data.rowValue, event.data.cellName, event.data.rowIndex, event);\n  }\n\n  public add(): void {\n    this.table.add();\n  }\n\n  public selectAll(): void {\n    this.table.showAndSelectAllCheckbox();\n  }\n\n  public unSelectAll(): void {\n    this.table.selection.clear();\n  }\n\n  public copyAll(): void {\n    this.table.copyAll();\n  }\n\n  public copyCell(event): void {\n    const cell_data = this.defaultContextMenu.origin.innerText;\n    Util.copyToClipboard(cell_data);\n  }\n\n  public copySelection(): void {\n    this.table.copySelection();\n  }\n\n  public copyRow(event): void {\n    const data = JSON.stringify(this.table.dataSource.getRenderedData([event.data.rowValue]));\n    Util.copyToClipboard(data);\n  }\n\n  public delete(event): void {\n    this.table.remove();\n  }\n\n  public refresh(): void {\n    this.table.refresh();\n  }\n\n  public filterByValue(): void {\n    const columValueFilter: OColumnValueFilter = {\n      attr: this.column.attr,\n      operator: ColumnValueFilterOperator.IN,\n      values: [this.row[this.column.attr]],\n      availableValues: undefined\n    };\n    this.table.filterByColumn(columValueFilter);\n  }\n\n\n  public groupByColumn(dateType?: string): void {\n    this.table.groupByColumn(this.column, dateType);\n    this.isEnabledGroupByColumn.next(false);\n  }\n\n  public unGroupByColumn(): void {\n    this.table.unGroupByColumn(this.column);\n  }\n\n  public unGroupAll(): void {\n    this.table.unGroupByAllColumns();\n  }\n\n  get labelFilterByColumn(): string {\n    return (this.column && this.column.title) ? this.translateService.get('TABLE_CONTEXT_MENU.FILTER_BY') + ' ' + this.translateService.get(this.column.title) : '';\n  }\n\n  get labelGroupByColumn(): string {\n    return (this.column && this.column.title) ? this.translateService.get('TABLE_CONTEXT_MENU.GROUP_BY_COLUMN') + ' ' + this.translateService.get(this.column.title) : '';\n  }\n\n  get labelUnGroupByColumn(): string {\n    return (this.column && this.column.title) ? this.translateService.get('TABLE_CONTEXT_MENU.UNGROUP_BY_COLUMN') + ' ' + this.translateService.get(this.column.title) : '';\n  }\n\n  get row(): any {\n    return this._row;\n  }\n\n  set row(value: any) {\n    this._row = value.rowValue;\n    const isTableGroupedRow = this._row instanceof OTableGroupedRow;\n    let columnName = value.cellName;\n    if (isTableGroupedRow) {\n      columnName = columnName.substring('groupHeader-'.length);\n    }\n    this.column = this.table.getOColumn(columnName);\n    this.isColumnDate();\n    this.isDataCell.next(!isTableGroupedRow);\n    this.isTableGroupedRow.next(isTableGroupedRow);\n    this.isGroupableCell.next(isTableGroupedRow && (this._row as OTableGroupedRow).hasColumnData(this.column.attr));\n  }\n\n  get availableColumnAggregates(): string[] {\n    let result = Util.columnAggregates;\n    if (this.row instanceof OTableGroupedRow) {\n      const groupingComp = this.row.getColumnGroupingComponent(this.column.attr);\n      if (Util.isDefined(groupingComp.aggregateName)) {\n        result = result.slice();\n        if (result.includes(groupingComp.aggregate)) {\n          result.splice(result.indexOf(groupingComp.aggregate), 1, groupingComp.aggregateName);\n        } else {\n          result.push(groupingComp.aggregateName);\n        }\n      }\n    }\n    return result;\n  }\n\n  public filterByColumn(event): void {\n    if (this.table.oTableMenu) {\n      this.table.isColumnFiltersActive = true;\n      this.table.openColumnFilterDialog(this.column, event.event);\n    }\n  }\n\n  public checkVisibleFilter(): void {\n    let isVisible = false;\n    if (this.column) {\n      isVisible = this.showFilter && this.table.isColumnFilterable(this.column);\n    }\n    this.isVisibleFilter.next(isVisible);\n  }\n\n  /**\n   * Checks group by row options\n   */\n  public checkGroupByRowOptions(): void {\n    this.isEnabledUnGroupByColumn.next(false);\n    this.isEnabledUnGroupAllColumn.next(false);\n    let grouped = false;\n    if (this.column.groupable && !Util.isArrayEmpty(this.table.groupedColumnsArray) && this.foundColumnInGroupedColumns(this.column)) {\n      this.isEnabledUnGroupByColumn.next(true);\n      grouped = true;\n    }\n\n    this.isEnabledGroupByColumn.next(this.column.groupable && !grouped);\n    if (!Util.isArrayEmpty(this.table.groupedColumnsArray)) {\n      this.isEnabledUnGroupAllColumn.next(true);\n    }\n  }\n  public foundColumnInGroupedColumns(column): boolean {\n    let found: boolean = false;\n    this.table.groupedColumnsArray.forEach(groupedColumn => { if (groupedColumn == column.attr) { found = true } });\n    return found;\n  }\n\n\n  public changeAggregateFunction(arg: any, aggregateFnName: string): void {\n    if (arg.data.rowValue instanceof OTableGroupedRow) {\n      (arg.data.rowValue as OTableGroupedRow).setColumnActiveAggregateFunction(this.column.attr, aggregateFnName);\n    }\n  }\n\n  protected initProperties(param: any): void {\n    const data = param.data;\n    if (!Util.isDefined(data)) {\n      return;\n    }\n    this.row = { rowValue: data.rowValue, cellName: data.cellName };\n    this.checkVisibleFilter();\n    this.checkGroupByRowOptions();\n  }\n\n  expandRowGroupsSameLevel() {\n    this.table.dataSource.setRowGroupLevelExpansion(this._row, true);\n  }\n\n  collapseRowGroupsSameLevel() {\n    this.table.dataSource.setRowGroupLevelExpansion(this._row, false);\n\n  }\n  isColumnDate() {\n    this.isDateColumn.next(this.column.type == 'date');\n  }\n}\n","<o-context-menu #defaultContextMenu>\n\n  <ng-container *ngIf=\"isDataCell | async\">\n    <o-context-menu-item attr=\"refresh\" label=\"TABLE_CONTEXT_MENU.REFRESH\" svg-icon=\"ontimize:autorenew\" (execute)=\"refresh()\"\n      [visible]=\"isVisibleRefresh | async\"></o-context-menu-item>\n    <o-context-menu-item attr=\"detail\" icon=\"chevron_right\" label=\"TABLE_CONTEXT_MENU.VIEW_DETAIL\" (execute)=\"gotoDetails($event)\"\n      [visible]=\"isVisibleDetail | async\"></o-context-menu-item>\n    <o-context-menu-item attr=\"edit\" icon=\"edit\" label=\"TABLE_CONTEXT_MENU.EDIT\" (execute)=\"edit($event)\" [visible]=\"isVisibleEdit | async\">\n    </o-context-menu-item>\n    <o-context-menu-item attr=\"insert\" label=\"TABLE_CONTEXT_MENU.INSERT\" icon=\"add\" (execute)=\"add()\" [visible]=\"isVisibleInsert | async\">\n    </o-context-menu-item>\n    <o-context-menu-item attr=\"delete\" label=\"TABLE_CONTEXT_MENU.DELETE\" icon=\"delete\" (execute)=\"delete($event)\" [visible]=\"isVisibleDelete | async\">\n    </o-context-menu-item>\n    <!-- FILTER GROUP -->\n    <o-context-menu-group label=\"TABLE_CONTEXT_MENU.FILTER\" icon=\"filter_alt\" type=\"group\" [visible]=\"isVisibleFilter | async\">\n      <o-context-menu-item icon=\"filter_alt\" [label]=\"labelFilterByColumn\" (execute)=\"filterByColumn($event)\"></o-context-menu-item>\n      <o-context-menu-item icon=\"filter_alt\" label=\"TABLE_CONTEXT_MENU.FILTER_BY_VALUE\" (execute)=\"filterByValue()\"></o-context-menu-item>\n    </o-context-menu-group>\n    <!-- COPY GROUP -->\n    <o-context-menu-separator [visible]=\"isVisibleCopy | async\"></o-context-menu-separator>\n    <o-context-menu-group label=\"TABLE_CONTEXT_MENU.COPY\" icon=\"file_copy\" type=\"group\" [visible]=\"isVisibleCopy | async\">\n      <o-context-menu-item icon=\"file_copy\" label=\"TABLE_CONTEXT_MENU.COPY_CELL\" (execute)=\"copyCell($event)\"></o-context-menu-item>\n      <o-context-menu-item icon=\"file_copy\" label=\"TABLE_CONTEXT_MENU.COPY_ROW\" (execute)=\"copyRow($event)\"></o-context-menu-item>\n      <o-context-menu-item label=\"TABLE_CONTEXT_MENU.COPY_ALL\" icon=\"file_copy\" (execute)=\"copyAll()\"></o-context-menu-item>\n      <o-context-menu-item label=\"TABLE_CONTEXT_MENU.COPY_SELECTION\" icon=\"file_copy\" (execute)=\"copySelection()\"></o-context-menu-item>\n    </o-context-menu-group>\n    <o-context-menu-separator [visible]=\"isVisibleSelectAll | async\"></o-context-menu-separator>\n    <o-context-menu-item attr=\"select-all\" [label]=\"table.isAllSelected() ? 'TABLE_CONTEXT_MENU.DESELECT_ALL': 'TABLE_CONTEXT_MENU.SELECT_ALL'\"\n      icon=\"select_all\" (execute)=\"table.isAllSelected() ? unSelectAll() : selectAll()\" [visible]=\"isVisibleSelectAll | async\"></o-context-menu-item>\n\n    <!-- GROUP BY -->\n    <o-context-menu-separator [visible]=\"isVisibleGroupByRow | async\"></o-context-menu-separator>\n    <o-context-menu-group label=\"TABLE_CONTEXT_MENU.GROUP_BY\" icon=\"format_indent_increase\" type=\"group\" [visible]=\"isVisibleGroupByRow | async\">\n      <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_YEAR\" (execute)=\"groupByColumn('YEAR')\"\n        icon=\"format_indent_increase\" type=\"group\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n      </o-context-menu-item>\n      <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_MONTH\" (execute)=\"groupByColumn('MONTH')\"\n        icon=\"format_indent_increase\" type=\"group\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n      </o-context-menu-item>\n      <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_YEAR_MONTH\" icon=\"format_indent_increase\" type=\"group\"\n        (execute)=\"groupByColumn('YEAR_MONTH')\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n      </o-context-menu-item>\n      <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_YEAR_MONTH_DAY\" icon=\"format_indent_increase\" type=\"group\"\n        (execute)=\"groupByColumn('YEAR_MONTH_DAY')\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n      </o-context-menu-item>\n      <o-context-menu-item *ngIf=\"!(isDateColumn | async)\" icon=\"format_indent_increase\" [label]=\"labelGroupByColumn\" (execute)=\"groupByColumn()\"\n        [enabled]=\"isEnabledGroupByColumn | async\"></o-context-menu-item>\n      <o-context-menu-item *ngIf=\"isEnabledUnGroupByColumn | async\" icon=\"format_indent_decrease\" [label]=\"labelUnGroupByColumn\"\n        (execute)=\"unGroupByColumn()\" [enabled]=\"isEnabledUnGroupByColumn | async\"></o-context-menu-item>\n      <o-context-menu-item icon=\"format_line_spacing\" label=\"TABLE_CONTEXT_MENU.UNGROUP_ALLCOLUMNS\" (execute)=\"unGroupAll()\"\n        [enabled]=\"isEnabledUnGroupAllColumn | async\">\n      </o-context-menu-item>\n    </o-context-menu-group>\n  </ng-container>\n\n  <!-- GROUP BY HEADER CELL AGGREGATE FUNCTION -->\n  <ng-container *ngIf=\"isGroupableCell | async\">\n    <o-context-menu-group label=\"TABLE_CONTEXT_MENU.GROUP_BY.AGGREGATE_FUNCTION\" icon=\"format_indent_increase\" type=\"group\">\n      <o-context-menu-item *ngFor=\"let aggregateFn of availableColumnAggregates\" label=\"{{ 'AGGREGATE_NAME.' + aggregateFn }}\"\n        (execute)=\"changeAggregateFunction($event, aggregateFn)\"></o-context-menu-item>\n    </o-context-menu-group>\n  </ng-container>\n\n  <ng-container *ngIf=\"isTableGroupedRow | async\">\n    <o-context-menu-item icon=\"unfold_more\" label=\"TABLE_CONTEXT_MENU.EXPAND_ALL_GROUPS\" (execute)=\"expandRowGroupsSameLevel()\"></o-context-menu-item>\n    <o-context-menu-item icon=\"unfold_less\" label=\"TABLE_CONTEXT_MENU.COLLAPSE_ALL_GROUPS\" (execute)=\"collapseRowGroupsSameLevel()\">\n    </o-context-menu-item>\n  </ng-container>\n\n</o-context-menu>\n","import { OTableOptions } from '../../../interfaces/o-table-options.interface';\nimport { Codes } from '../../../util/codes';\nimport { OColumn } from '../column/o-column.class';\n\nexport class DefaultOTableOptions implements OTableOptions {\n\n  columns: Array<OColumn> = [];\n  filter: boolean = true;\n  filterCaseSensitive: boolean = false;\n\n  protected _visibleColumns: Array<any> = [];\n  protected _selectColumn: OColumn;\n  protected _expandableColumn: OColumn;\n\n  constructor() {\n    this.selectColumn = new OColumn();\n    this.selectColumn.name = Codes.NAME_COLUMN_SELECT;\n    this.selectColumn.title = '';\n    this.selectColumn.visible = false;\n  }\n\n  get visibleColumns(): Array<any> {\n    return this._visibleColumns;\n  }\n\n  set visibleColumns(arg: Array<any>) {\n    this._visibleColumns = arg;\n    this.columns.forEach((oCol: OColumn) => {\n      oCol.visible = this._visibleColumns.indexOf(oCol.attr) !== -1;\n    });\n  }\n\n  get columnsInsertables(): Array<string> {\n    return this._visibleColumns.map((col: string) => {\n      return col + Codes.SUFFIX_COLUMN_INSERTABLE;\n    });\n  }\n\n  get selectColumn(): OColumn {\n    return this._selectColumn;\n  }\n\n  set selectColumn(val: OColumn) {\n    this._selectColumn = val;\n    this.selectColumn.name = Codes.NAME_COLUMN_SELECT;\n    this.selectColumn.title = '';\n    this.selectColumn.visible = false;\n  }\n\n  get expandableColumn(): OColumn {\n    return this._expandableColumn;\n  }\n\n  set expandableColumn(val: OColumn) {\n    this._expandableColumn = val;\n    this._expandableColumn.name = Codes.NAME_COLUMN_EXPANDABLE;\n    this._expandableColumn.title = '';\n    this._expandableColumn.visible = true;\n    this._expandableColumn.resizable = false;\n    this._expandableColumn.searchable = false;\n  }\n\n}\n","import { DataSource, ListRange } from '@angular/cdk/collections';\nimport { EventEmitter } from '@angular/core';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { BehaviorSubject, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { OTableDataSource } from '../../../interfaces/o-table-datasource.interface';\nimport { OTableOptions } from '../../../interfaces/o-table-options.interface';\nimport { ColumnValueFilterOperator, OColumnValueFilter } from '../../../types/table/o-column-value-filter.type';\nimport { Codes } from '../../../util/codes';\nimport { Util } from '../../../util/util';\nimport type { OColumn } from '../column/o-column.class';\nimport { OTableComponent } from '../o-table.component';\nimport { OTableDao } from './o-table.dao';\nimport { OTableGroupedRow } from './row/o-table-row-group.class';\nimport { OMatSort } from './sort/o-mat-sort';\n\nexport class OnRangeChangeVirtualScroll {\n  public range: ListRange;\n\n  constructor(data: ListRange) {\n    this.range = data;\n  }\n}\n\nexport class DefaultOTableDataSource extends DataSource<any> implements OTableDataSource {\n  dataTotalsChange = new BehaviorSubject<any[]>([]);\n\n  get data(): any[] { return this.dataTotalsChange.value; }\n\n  protected _database: OTableDao;\n  protected _paginator: MatPaginator;\n  protected _tableOptions: OTableOptions;\n  protected _sort: OMatSort;\n\n  protected _virtualPageChange = new BehaviorSubject<OnRangeChangeVirtualScroll>(new OnRangeChangeVirtualScroll({ start: 0, end: 0 }));\n  protected _quickFilterChange = new BehaviorSubject('');\n  protected _columnValueFilterChange = new BehaviorSubject(null);\n  protected groupByColumnChange: Subject<void> = new Subject<void>;\n\n  protected filteredData: any[] = [];\n  protected aggregateData: any = {};\n\n  onRenderedDataChange: EventEmitter<any> = new EventEmitter<any>();\n\n\n  protected _renderedData: any[] = [];\n  resultsLength: number = 0;\n\n  get quickFilter(): string { return this._quickFilterChange.value || ''; }\n  set quickFilter(filter: string) {\n    this._quickFilterChange.next(filter);\n  }\n\n  private columnValueFilters: Array<OColumnValueFilter> = [];\n  private groupedRowState: OTableGroupedRow[] = [];\n  private activeAggregates = {};\n  private groupedRowsSubscription = new Subscription();\n  private levelsExpansionState = {};\n\n  constructor(protected table: OTableComponent) {\n    super();\n    this._database = table.daoTable;\n    if (this._database) {\n      this.resultsLength = this._database.data.length;\n    }\n    if (table.paginator) {\n      this._paginator = table.matpaginator;\n    }\n\n    if (this.table.virtualScrollViewport) {\n      this.table.virtualScrollViewport.renderedRangeStream\n        .pipe(distinctUntilChanged())\n        .subscribe(\n          (value: ListRange) => {\n            this._virtualPageChange.next(new OnRangeChangeVirtualScroll(value));\n          });\n    }\n\n    this._tableOptions = table.oTableOptions;\n    this._sort = table.sort;\n\n  }\n\n  sortFunction(a: any, b: any): number {\n    return this._sort.sortFunction(a, b);\n  }\n\n  get renderedData(): any[] {\n    return this._renderedData;\n  }\n\n  set renderedData(arg: any[]) {\n    this._renderedData = arg;\n    this.onRenderedDataChange.emit();\n  }\n\n  /**\n   * Connect function called by the table to retrieve one stream containing the data to render.\n   */\n  connect(): Observable<any[]> {\n    const displayDataChanges: any[] = [\n      this._database.dataChange\n    ];\n\n    if (!this.table.pageable) {\n\n\n      if (this._sort) {\n        displayDataChanges.push(this._sort.oSortChange);\n      }\n\n      if (this._tableOptions.filter) {\n        displayDataChanges.push(this._quickFilterChange);\n      }\n\n      if (this._paginator) {\n        displayDataChanges.push(this._paginator.page);\n      }\n    }\n\n    if (this.table.virtualScrollViewport) {\n      displayDataChanges.push(this._virtualPageChange);\n    }\n\n    displayDataChanges.push(this._columnValueFilterChange);\n\n    if (this.table.groupable) {\n      displayDataChanges.push(this.groupByColumnChange);\n    }\n\n    return merge(...displayDataChanges).pipe(\n      map((x: any) => {\n        let data = Object.assign([], this._database.data);\n\n        if (x instanceof OnRangeChangeVirtualScroll) {\n          // render subset (range) of renderedData when new OnRangeChangeVirtualScroll event is emitted\n          data = this.getVirtualScrollData(this.renderedData, x);\n        } else {\n          /*\n            it is necessary to first calculate the calculated columns and\n            then filter and sort the data\n          */\n          if (Array.isArray(data) && data.length > 0) {\n            if (this.existsAnyCalculatedColumn()) {\n              data = this.getColumnCalculatedData(data);\n            }\n\n            if (!this.table.pageable) {\n              data = this.getColumnValueFilterData(data);\n              data = this.getQuickFilterData(data);\n              data = this.getSortedData(data);\n            }\n          }\n          this.filteredData = Object.assign([], data);\n\n          if (this.table.pageable) {\n            const totalRecordsNumber = this.table.getTotalRecordsNumber();\n            this.resultsLength = totalRecordsNumber !== undefined ? totalRecordsNumber : data.length;\n          } else {\n            this.resultsLength = data.length;\n            data = this.getPaginationData(data);\n          }\n          if (this.table.groupable && !Util.isArrayEmpty(this.table.groupedColumnsArray) && data.length > 0) {\n            data = this.getGroupedData(data);\n          }\n\n          this.renderedData = data;\n\n          /*\n            when the data is very large, the application crashes so it gets a limited range of data the first time\n            because at next the CustomVirtualScrollStrategy will emit event OnRangeChangeVirtualScroll\n          */\n          if (this.table.virtualScrollViewport && !this._paginator) {\n            data = this.getVirtualScrollData(data, new OnRangeChangeVirtualScroll({ start: 0, end: Codes.LIMIT_SCROLLVIRTUAL }));\n          }\n\n          this.aggregateData = this.getAggregatesData(this.renderedData);\n        }\n\n        return data;\n      }));\n  }\n\n  getGroupedData(data: any[]) {\n    data = this.getSubGroupsOfGroupedRow(data);\n    /** data contains row group headers (OTableGroupedRow) and the data belonging to expanded grouped rows */\n    data = this.filterCollapsedRowGroup(data);\n    return data;\n  }\n\n  /**\n   * Gets subgroups of grouped row\n   * @param data\n   * @returns subgroups of grouped row\n   */\n  getSubGroupsOfGroupedRow(data: any[]): any[] {\n    return data = this.getSublevel(data, 0);\n  }\n\n  getAggregatesData(data: any[]): any {\n    const obj = {};\n\n    if (typeof this._tableOptions === 'undefined') {\n      return obj;\n    }\n\n    this._tableOptions.columns.forEach((column: OColumn) => {\n      let totalValue = '';\n      if (column.aggregate && column.visible) {\n        totalValue = this.calculateAggregate(data, column.attr, column.aggregate.operator);\n      }\n      const key = column.attr;\n      obj[key] = totalValue;\n    });\n\n    return obj;\n  }\n\n  /**\n   * Method that get value the columns calculated\n   * @param data data of the database\n   */\n  getColumnCalculatedData(data: any[]): any[] {\n    const self = this;\n    const calculatedCols = this._tableOptions.columns.filter((oCol: OColumn) => oCol.visible && oCol.calculate !== undefined);\n    return data.map((row: any) => {\n      calculatedCols.forEach((oColumn: OColumn) => {\n        let value;\n        if (typeof oColumn.calculate === 'string') {\n          value = self.transformFormula(oColumn.calculate, row);\n        } else if (typeof oColumn.calculate === 'function') {\n          value = oColumn.calculate(row);\n        }\n        row[oColumn.attr] = isNaN(value) ? 0 : value;\n      });\n      return row;\n    });\n  }\n\n  protected transformFormula(formulaArg, row): string {\n    let formula = formulaArg;\n    // 1. replace columns by values of row\n    const columnsAttr = this._tableOptions.columns.map((oCol: OColumn) => oCol.attr);\n    columnsAttr.forEach((column: string) => {\n      formula = formula.replace(column, row[column]);\n    });\n\n    let resultFormula = '';\n    // 2. Transform formula\n    try {\n      resultFormula = (new Function('return ' + formula))();\n    } catch (e) {\n      console.error('Operation defined in the calculated column is incorrect ');\n    }\n    // 3. Return result\n    return resultFormula;\n  }\n\n  getQuickFilterData(data: any[]): any[] {\n    if (Util.isDefined(this.quickFilter) && this.quickFilter.length > 0) {\n      const filterData = !this._tableOptions.filterCaseSensitive ? this.quickFilter.toLowerCase() : this.quickFilter;\n      return data.filter((item: any) => {\n        // Getting custom columns filter columns result\n        const passCustomFilter = this.fulfillsCustomFilterFunctions(filterData, item);\n        // Getting other searchable columns standard result\n        const passSearchString = this.fulfillsQuickfilter(filterData, item);\n        return passCustomFilter || passSearchString;\n      });\n    } else {\n      return data;\n    }\n  }\n\n  getPaginationData(data: any[]): any[] {\n    if (!this._paginator || isNaN(this._paginator.pageSize)) {\n      return data;\n    }\n    let startIndex = isNaN(this._paginator.pageSize) ? 0 : this._paginator.pageIndex * this._paginator.pageSize;\n    if (data.length > 0 && data.length < startIndex) {\n      startIndex = 0;\n      this._paginator.pageIndex = 0;\n    }\n    return data.splice(startIndex, this._paginator.pageSize);\n  }\n\n  getVirtualScrollData(data: any[], x: OnRangeChangeVirtualScroll): any[] {\n    return data.slice(x.range.start, x.range.end)\n  }\n\n  disconnect() {\n    this.dataTotalsChange.complete();\n    this._quickFilterChange.complete();\n    this._columnValueFilterChange.complete();\n    this.groupByColumnChange.complete();\n    this._virtualPageChange.complete();\n  }\n\n  protected fulfillsCustomFilterFunctions(filter: string, item: any) {\n    const customFilterCols = this.table.oTableOptions.columns.filter(oCol => oCol.useCustomFilterFunction());\n    return customFilterCols.some(oCol => oCol.renderer.filterFunction(item[oCol.attr], item, filter));\n  }\n\n  protected fulfillsQuickfilter(filter: string, item: any): boolean {\n    const columns = this._tableOptions.columns.filter((oCol: OColumn) => oCol.useQuickfilterFunction());\n    let searchStr = columns.map((oCol: OColumn) => oCol.getFilterValue(item[oCol.attr], item).join(' ')).join(' ');\n    if (!this._tableOptions.filterCaseSensitive) {\n      searchStr = searchStr.toLowerCase();\n    }\n    return searchStr.indexOf(filter) !== -1;\n  }\n\n  /** Returns a sorted copy of the database data. */\n  protected getSortedData(data: any[]): any[] {\n    if (!this._sort) return data;\n    const rendererData = this.getDataToSort(data);\n    const sortedData = this._sort.getSortedData(rendererData);\n\n    const tableKeys = this.table.getKeys();\n    const originalDataSorted = [];\n\n    sortedData.forEach(sortedElement => {\n      const keysValuesInSortData = tableKeys.map(element => sortedElement[element]);\n\n      let i = 0;\n      let found = false;\n      while (i < data.length && !found) {\n        const keysValuesInData = tableKeys.map(element => data[i][element]);\n        if (Util.isArrayEqual(keysValuesInSortData, keysValuesInData)) {\n          originalDataSorted.push(data[i]);\n          found = true;\n        }\n        i++;\n      }\n    });\n    this.table.updateSortingSubject(false);\n    return originalDataSorted;\n\n  }\n\n\n  /**\n   * Returns the data the table stores. No filters are applied.\n   */\n  getTableData(): any[] {\n    return this._database.data;\n  }\n\n  /** Return data of the visible columns of the table without rendering */\n  getCurrentData(): any[] {\n    return this.getData();\n  }\n\n  getCurrentAllData(): any[] {\n    return this.getAllData(false, false);\n  }\n\n  /** Return data of the visible columns of the table  rendering */\n  getCurrentRendererData(): any[] {\n    return this.getRenderedData(this.renderedData);\n  }\n\n  /** Return all data of the table rendering */\n  getAllRendererData(): any[] {\n    return this.getAllData(true, true);\n  }\n\n  /** Return sql types of the current data */\n  get sqlTypes(): any {\n    return this._database.sqlTypes;\n  }\n\n  protected getData() {\n    return this.renderedData;\n  }\n\n  public getRenderedData(data: any[]): any[] {\n    const visibleColumns = this._tableOptions.columns.filter(oCol => oCol.visible);\n    return data.map((row) => {\n      const obj = {};\n      visibleColumns.forEach((oCol: OColumn) => {\n        const useRenderer = oCol.renderer && oCol.renderer.getCellData;\n        obj[oCol.attr] = useRenderer ? oCol.renderer.getCellData(row[oCol.attr], row) : row[oCol.attr];\n      });\n      return obj;\n    });\n  }\n  public getDataToSort(data: any[]): any[] {\n    if (!this._sort) return data;\n    const sortColumns = this._tableOptions.columns.filter(oCol => oCol.visible && this._sort.activeArray.map(x => x.id).indexOf(oCol.attr) > -1);\n    const existColumnToTrasformToSort = sortColumns.filter((oCol: OColumn) => (oCol.type === 'translate' || oCol.type === 'service')).length > 0;\n    if (!existColumnToTrasformToSort) {\n      return data;\n    }\n    this.table.getKeys().forEach(key => {\n      sortColumns.push(this.table.getOColumn(key));\n    })\n\n    return data.map((row) => {\n      const obj = {};\n      sortColumns.forEach((oCol: OColumn) => {\n        const useRenderer = oCol.renderer && (oCol.type === 'translate' || oCol.type === 'service') && oCol.renderer.getCellData;\n        obj[oCol.attr] = useRenderer ? oCol.renderer.getCellData(row[oCol.attr], row) : row[oCol.attr];\n      });\n      return obj;\n    });\n  }\n\n  protected getAllData(usingRendererers?: boolean, onlyVisibleColumns?: boolean) {\n    let tableColumns = this._tableOptions.columns;\n    if (onlyVisibleColumns) {\n      tableColumns = this._tableOptions.columns.filter(oCol => oCol.visible);\n    }\n    return this.filteredData.map((row) => {\n      const obj = {};\n      tableColumns.forEach((oCol: OColumn) => {\n        const useRenderer = usingRendererers && oCol.renderer && oCol.renderer.getCellData;\n        obj[oCol.attr] = useRenderer ? oCol.renderer.getCellData(row[oCol.attr], row) : row[oCol.attr];\n      });\n      return obj;\n    });\n  }\n\n  private getRenderersData(data: any[], tableColumns: OColumn[]): any[] {\n    return data.map((row) => {\n      // render each column\n      const obj = Object.assign({}, row);\n      tableColumns.forEach((oCol: OColumn) => {\n        obj[oCol.attr] = oCol.renderer.getCellData(row[oCol.attr], row);\n      });\n      return obj;\n    });\n  }\n\n  public getColumnData(ocolumn: string) {\n    return this.renderedData.map((row) => {\n      // render each column\n      const obj = {};\n      if (ocolumn) {\n        obj[ocolumn] = row[ocolumn];\n      }\n      return obj;\n    });\n  }\n\n  initializeColumnsFilters(filters: OColumnValueFilter[]) {\n    this.columnValueFilters = [];\n    filters.forEach(filter => {\n      this.columnValueFilters.push(filter);\n    });\n    if (!this.table.pageable) {\n      this._columnValueFilterChange.next(null);\n    }\n  }\n\n  isColumnValueFilterActive(): boolean {\n    return this.columnValueFilters.length !== 0;\n  }\n\n  getColumnValueFilters(): OColumnValueFilter[] {\n    return this.columnValueFilters;\n  }\n\n  getColumnValueFilterByAttr(attr: string): OColumnValueFilter {\n    return this.columnValueFilters.find(item => item.attr === attr);\n  }\n\n  clearColumnFilters(trigger: boolean = true, columnsAttr?: string[]) {\n    if (Util.isDefined(columnsAttr)) {\n      this.columnValueFilters = this.columnValueFilters.filter(x => !columnsAttr.includes(x.attr));\n    } else {\n      this.columnValueFilters = [];\n    }\n    if (trigger) {\n      this._columnValueFilterChange.next(null);\n    }\n  }\n\n  clearColumnFilter(attr: string, trigger: boolean = true) {\n    this.columnValueFilters = this.columnValueFilters.filter(x => x.attr !== attr);\n    if (trigger) {\n      this._columnValueFilterChange.next(null);\n    }\n  }\n\n  addColumnFilter(filter: OColumnValueFilter) {\n    const existingFilterIndex = this.columnValueFilters.findIndex(item => item.attr === filter.attr);\n    if (existingFilterIndex > -1) {\n      this.columnValueFilters.splice(existingFilterIndex, 1, filter);\n    } else {\n      let validFilter = Util.isDefined(filter.values);\n      if (validFilter) {\n        switch (filter.operator) {\n          case ColumnValueFilterOperator.IN:\n            validFilter = filter.values.length > 0;\n            break;\n          case ColumnValueFilterOperator.BETWEEN:\n            validFilter = filter.values.length === 2;\n            break;\n          case ColumnValueFilterOperator.EQUAL:\n          case ColumnValueFilterOperator.LESS_EQUAL:\n          case ColumnValueFilterOperator.MORE_EQUAL:\n            validFilter = true;\n            break;\n          default:\n            validFilter = false;\n        }\n        if (validFilter) {\n          this.columnValueFilters.push(filter);\n        }\n      }\n    }\n    // If the table is paginated, filter will be applied on remote query\n    if (!this.table.pageable) {\n      this._columnValueFilterChange.next(null);\n    }\n  }\n\n  getColumnValueFilterData(data: any[]): any[] {\n    this.columnValueFilters.forEach(filter => {\n      const filterColumn = this.table.oTableOptions.columns.find(col => col.attr === filter.attr);\n      if (filterColumn) {\n        switch (filter.operator) {\n          case ColumnValueFilterOperator.IN:\n            const filterValues = (filter.values || []).reduce((previous, current) =>\n              previous.concat(filterColumn.getFilterValue(current).map(f => Util.normalizeString(f))), []);\n\n            data = data.filter((item: any) => {\n              if (filterColumn.renderer && filterColumn.renderer.filterFunction) {\n                return filterColumn.renderer.filterFunction(item[filter.attr], item);\n              } else {\n                const colValues = filterColumn.getFilterValue(item[filter.attr], item).map(f => Util.normalizeString(f));\n                return filterValues.some(value => colValues.indexOf(value) !== -1);\n              }\n            });\n            break;\n          case ColumnValueFilterOperator.EQUAL:\n            const normalizedValue = Util.normalizeString(filter.values);\n            data = data.filter(item => {\n              const colValues = filterColumn.getFilterValue(item[filter.attr], item).map(f => Util.normalizeString(f));\n              let regExp;\n              if (normalizedValue.includes('*')) {\n                regExp = new RegExp('^' + normalizedValue.split('*').join('.*') + '$');\n              }\n              return colValues.some(colValue => regExp ? regExp.test(colValue) : colValue.toString().includes(normalizedValue));\n            });\n            break;\n          case ColumnValueFilterOperator.BETWEEN:\n            data = data.filter(item => item[filter.attr] >= filter.values[0] && item[filter.attr] <= filter.values[1]);\n            break;\n          case ColumnValueFilterOperator.MORE_EQUAL:\n            data = data.filter(item => item[filter.attr] >= filter.values);\n            break;\n          case ColumnValueFilterOperator.LESS_EQUAL:\n            data = data.filter(item => item[filter.attr] <= filter.values);\n            break;\n        }\n      }\n    });\n    return data;\n  }\n\n  getAggregateData(column: OColumn) {\n    const obj = {};\n    let totalValue = '';\n\n    if (typeof this._tableOptions === 'undefined') {\n      return new Array(obj);\n    }\n    totalValue = this.aggregateData[column.attr];\n    return totalValue;\n  }\n\n  protected calculateAggregate(data: any[], columnAttr: string, operator: string | Function): any {\n    let resultAggregate;\n    if (typeof operator === 'string') {\n      switch (operator.toLowerCase()) {\n        case 'count':\n          resultAggregate = this.count(columnAttr, data);\n          break;\n        case 'min':\n          resultAggregate = this.min(columnAttr, data);\n          break;\n        case 'max':\n          resultAggregate = this.max(columnAttr, data);\n          break;\n        case 'avg':\n          resultAggregate = this.avg(columnAttr, data);\n          break;\n        default:\n          resultAggregate = this.sum(columnAttr, data);\n          break;\n      }\n    } else {\n      const columnData: any[] = this.getColumnData(columnAttr);\n      if (typeof operator === 'function') {\n        resultAggregate = operator(columnData);\n      }\n    }\n    return resultAggregate;\n  }\n\n  protected sum(column, data): number {\n    let value = 0;\n    if (data) {\n      //If the data is grouped, the values ​​of the subgroups in level 1 are summed\n      if (data[0] instanceof OTableGroupedRow) {\n        this.getDataFromFirstLevelTableGroupRow(data).forEach(x => {\n          value = x.getColumnAggregateData(column).reduce((acumulator, currentValue) => {\n            return acumulator + (isNaN(currentValue[column]) ? 0 : currentValue[column]);\n          }, value);\n        });\n      } else {\n        value = data.reduce((acumulator, currentValue) => {\n          return acumulator + (isNaN(currentValue[column]) ? 0 : currentValue[column]);\n        }, value);\n      }\n    }\n    return +(value).toFixed(2);\n  }\n\n  protected count(column, data): number {\n    let value = 0;\n    if (data) {\n      //If the data is grouped, the count is calculated by adding the counts for each subgroup in level 1\n      if (data[0] instanceof OTableGroupedRow) {\n        this.getDataFromFirstLevelTableGroupRow(data).forEach(x => {\n          value = x.getColumnAggregateData(column).reduce((acumulator) => {\n            return acumulator + 1;\n          }, value);\n        });\n      } else {\n        value = data.reduce((acumulator) => {\n          return acumulator + 1;\n        }, 0);\n      }\n    }\n    return value;\n  }\n\n  protected avg(column, data): number {\n    const totalSum = this.sum(column, data);\n    const totalCount = this.count(column, data);\n    return +((totalSum === 0 || totalCount === 0) ? 0 : (totalSum / totalCount)).toFixed(2);\n\n  }\n\n  protected min(column, data): number {\n    let tempMin = [];\n    //If the data is grouped, the minimum is calculated with the minimum of each subgroup in level 1\n    if (data[0] instanceof OTableGroupedRow) {\n      tempMin = this.getDataFromFirstLevelTableGroupRow(data).map(x => {\n        return Math.min(...x.getColumnAggregateData(column).map(x => x[column]));\n      });\n    } else {\n      tempMin = data.map(x => x[column]);\n    }\n\n    return tempMin.length > 0 ? Math.min(...tempMin) : 0;\n  }\n\n  protected max(column, data): number {\n    let tempMax = [];\n    if (data[0] instanceof OTableGroupedRow) {\n      //If the data are grouped, the maximum is calculated with the maximum of each subgroup in level 1\n      tempMax = this.getDataFromFirstLevelTableGroupRow(data).map(x => {\n        return Math.max(...x.getColumnAggregateData(column).map(x => x[column]));\n      });\n    } else {\n      tempMax = data.map(x => x[column]);\n    }\n    return tempMax.length > 0 ? Math.max(...tempMax) : 0;\n  }\n\n  private isFirstLevelTableGroupRow(tableRowGroupData: any) {\n    return tableRowGroupData instanceof OTableGroupedRow && tableRowGroupData.level === 1;\n  }\n\n  private getDataFromFirstLevelTableGroupRow(data: any) {\n    return data.filter(x => this.isFirstLevelTableGroupRow(x));\n  }\n\n  protected existsAnyCalculatedColumn(): boolean {\n    return this._tableOptions.columns.find((oCol: OColumn) => oCol.calculate !== undefined) !== undefined;\n  }\n\n  updateRenderedRowData(rowData: any) {\n    const tableKeys = this.table.getKeys();\n    const record = this.renderedData.find((data: any) => {\n      let found = true;\n      for (let i = 0, len = tableKeys.length; i < len; i++) {\n        const key = tableKeys[i];\n        if (data[key] !== rowData[key]) {\n          found = false;\n          break;\n        }\n      }\n      return found;\n    });\n    if (Util.isDefined(record)) {\n      Object.assign(record, rowData);\n    }\n  }\n\n\n  private getDataInformationByGroup(data: any[], level: number) {\n    const recordHash = {};\n    data.forEach((row, i) => {\n      const keys = {};\n      for (let i = 0; i <= level; i++) {\n        keys[this.table.groupedColumnsArray[i]] = this.table.getColumnDataByAttr(this.table.groupedColumnsArray[i], row);\n      }\n      const recordKey = JSON.stringify(keys);\n      if (recordHash.hasOwnProperty(recordKey)) {\n        recordHash[recordKey].push(i);\n      } else {\n        recordHash[recordKey] = [i];\n      }\n    });\n    return recordHash;\n  }\n\n  private recalculateColumnAggregate(columnAttr: string, row: OTableGroupedRow) {\n    const aggregateConf = row.getActiveColumnAggregateConfiguration(columnAttr);\n    const data = row.getColumnAggregateData(columnAttr);\n    const value = this.calculateAggregate(data, aggregateConf.attr, aggregateConf.aggregateFunction || aggregateConf.aggregate);\n    row.setColumnAggregateValue(columnAttr, value);\n  }\n\n  private getSublevel(data: any[], level: number, parent?: OTableGroupedRow): any[] {\n    if (level >= this.table.groupedColumnsArray.length) {\n      return data;\n    }\n    const recordHash = this.getDataInformationByGroup(data, level);\n\n    let result = [];\n    Object.keys(recordHash).forEach(recordKey => {\n\n      const row = new OTableGroupedRow({\n        column: this.table.groupedColumnsArray[level],\n        keysAsString: recordKey,\n        level: level + 1,\n        parent: parent\n      });\n\n      this.groupedRowsSubscription.add(row.aggregateFunctionChange.subscribe(arg => {\n        if (arg.changeAllGroupedRows) {\n          this.activeAggregates[arg.columnAttr] = arg.activeAggregate;\n          this.renderedData.filter(row => row instanceof OTableGroupedRow).forEach(row => {\n            row.setColumnActiveAggregateFunction(arg.columnAttr, arg.activeAggregate, false);\n            this.recalculateColumnAggregate(arg.columnAttr, row);\n          });\n        } else {\n          this.recalculateColumnAggregate(arg.columnAttr, arg.row);\n        }\n      }));\n      const affectedIndexes = recordHash[row.keysAsString];\n      const groupData = data.filter((row, index) => affectedIndexes.includes(index));\n      this.table.visibleColArray.forEach((columnAttr, i) => {\n        if (i === 0) {\n          row.title = this.getTextGroupRow(row, affectedIndexes.length);\n        }\n        const useColumnAggregate = this.table.useColumnGroupingAggregate(columnAttr);\n        if (useColumnAggregate) {\n          row.initializeColumnAggregate(columnAttr, this.table.getColumnGroupingComponent(columnAttr));\n\n          if (Util.isDefined(this.activeAggregates[columnAttr])) {\n            row.setColumnActiveAggregateFunction(columnAttr, this.activeAggregates[columnAttr], false);\n          }\n\n          if (row.hasActiveAggregate(columnAttr)) {\n            const aggregateData = groupData.map(x => { const obj = {}; obj[columnAttr] = x[columnAttr]; return obj; });\n            row.setColumnAggregateData(columnAttr, aggregateData);\n\n            const aggregateConf = row.getActiveColumnAggregateConfiguration(columnAttr);\n            const value = this.calculateAggregate(aggregateData, aggregateConf.attr, aggregateConf.aggregateFunction || aggregateConf.aggregate);\n            row.setColumnAggregateValue(columnAttr, value);\n          }\n        }\n      });\n      row.expanded = this.getExpansionState(row);\n      const subGroup = this.getSublevel(groupData, level + 1, row);\n      subGroup.unshift(row);\n      result = result.concat(subGroup);\n    });\n    return result;\n  }\n\n  /**\n   * Filters collapsed row group\n   * @param data\n   * @returns collapsed row group\n   */\n  filterCollapsedRowGroup(data: any): any[] {\n    return data.filter((row: any) => (row instanceof OTableGroupedRow) ? row.visible : this.belongsToExpandedGroupedRow(data, row));\n  }\n\n  /**\n   * Belongs to an expanded grouped row\n   * @param data\n   * @param row\n   * @returns true if to expanded grouped row\n   */\n  belongsToExpandedGroupedRow(data: any, row: any): boolean {\n    let parent: OTableGroupedRow;\n    let match = false;\n    for (let index = 0; index < data.length && !match; index++) {\n      if (data[index] instanceof OTableGroupedRow) {\n        parent = data[index];\n      } else if (Util.isEquivalent(data[index], row)) {\n        match = true;\n      }\n    }\n    return Util.isDefined(parent) ? (parent.visible && parent.expanded) : true;\n  }\n\n  updateGroupedColumns() {\n    this.groupByColumnChange.next();\n  }\n\n  /**\n   * Toggles group by column\n   * @param rowGroup\n   */\n  toggleGroupByColumn(rowGroup: OTableGroupedRow) {\n    if (rowGroup.expandSameLevel(this.table.expandGroupsSameLevel)) {\n      this.levelsExpansionState[rowGroup.level] = !rowGroup.expanded;\n    } else {\n      this.updateStateRowGrouped(rowGroup);\n    }\n    this.groupByColumnChange.next();\n  }\n\n  setRowGroupLevelExpansion(rowGroup: OTableGroupedRow, value: boolean) {\n    this.levelsExpansionState[rowGroup.level] = value;\n    this.groupByColumnChange.next();\n  }\n\n  private updateStateRowGrouped(rowGroup: OTableGroupedRow) {\n    const stateRowGrouped = this.groupedRowState.find(row => rowGroup.keysAsString === row.keysAsString && JSON.stringify(rowGroup.parent) === JSON.stringify(row.parent));\n    if (Util.isDefined(stateRowGrouped)) {\n      stateRowGrouped.expanded = !stateRowGrouped.expanded;\n    } else {\n      rowGroup.expanded = !rowGroup.expanded;\n      this.groupedRowState.push(rowGroup);\n    }\n  }\n\n  private getTextGroupRow(group: OTableGroupedRow, totalCounts: number) {\n    const field = this.table.groupedColumnsArray[group.level - 1];\n    let value = JSON.parse(group.keysAsString)[this.table.groupedColumnsArray[group.level - 1]];\n\n    const oCol = this.table.getOColumn(field);\n\n    if (!value && Util.isDefined(oCol.renderer) && (this.table as any).isInstanceOfOTableCellRendererServiceComponent(oCol.renderer)) {\n      value = ' - ';\n      if (!this.table.onDataLoadedCellRendererSubscription) {\n        this.table.onDataLoadedCellRendererSubscription = (oCol.renderer as any).onDataLoaded.subscribe(x => {\n          this.updateGroupedColumns();\n        });\n      }\n    }\n    return (this.table as any).translateService.get(oCol.title) + ': ' + value + ' (' + totalCounts + ')';\n  }\n\n  private getExpansionState(row: OTableGroupedRow): boolean {\n    let expansionState = !parent || !this.table.collapseGroupedColumns;\n    if (row.expandSameLevel(this.table.expandGroupsSameLevel)) {\n      expansionState = this.levelsExpansionState.hasOwnProperty(row.level) ? this.levelsExpansionState[row.level] : expansionState;\n    } else {\n      const rowGroup = this.groupedRowState.find(x => x.keysAsString === row.keysAsString && JSON.stringify(x.parent) === JSON.stringify(row.parent));\n      expansionState = rowGroup ? rowGroup.expanded : expansionState;\n    }\n    return expansionState;\n  }\n}\n\n\n\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { Component, EventEmitter, Inject, Injector, OnInit, ViewChild } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatListOption, MatSelectionList } from '@angular/material/list';\n\nimport { DialogService } from '../../../../../services/dialog.service';\nimport { OTableConfiguration } from '../../../../../types/table/o-table-configuration.type';\n\n@Component({\n  selector: 'o-table-apply-configuration-dialog',\n  templateUrl: './o-table-apply-configuration-dialog.component.html'\n})\nexport class OTableApplyConfigurationDialogComponent implements OnInit {\n\n  public default_configuration = 'OTableApplyConfigurationDialogComponent-default';\n  public configurations: OTableConfiguration[] = [];\n\n  public onDelete: EventEmitter<string> = new EventEmitter();\n\n  @ViewChild(MatSelectionList, { static: true })\n  protected configurationList: MatSelectionList;\n\n  protected dialogService: DialogService;\n\n  constructor(\n    public dialogRef: MatDialogRef<OTableApplyConfigurationDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) data: OTableConfiguration[],\n    protected injector: Injector\n  ) {\n    this.loadConfigurations(data);\n    this.dialogService = this.injector.get(DialogService);\n  }\n\n  public ngOnInit(): void {\n    this.configurationList.selectedOptions = new SelectionModel<MatListOption>(false);\n  }\n\n  public loadConfigurations(configurations: OTableConfiguration[]): void {\n    this.configurations = configurations;\n  }\n\n  public removeConfiguration(configurationName: string): void {\n    this.dialogService.confirm('CONFIRM', 'TABLE.DIALOG.CONFIRM_REMOVE_CONFIGURATION').then(result => {\n      if (result) {\n        this.onDelete.emit(configurationName);\n      }\n    });\n  }\n\n  public isDefaultConfigurationSelected(): boolean {\n    const selected: MatListOption[] = this.configurationList.selectedOptions.selected;\n    const selectedValue = selected.length ? selected[0].value : void 0;\n    return selectedValue === this.default_configuration;\n  }\n\n  public getSelectedConfigurationName(): string {\n    const selected: MatListOption[] = this.configurationList.selectedOptions.selected;\n    return selected.length ? selected[0].value : void 0;\n  }\n\n}\n","<span mat-dialog-title>{{ 'TABLE.BUTTONS.APPLY_CONFIGURATION' | oTranslate }}</span>\n\n<mat-dialog-content fxLayout=\"column\">\n  <div mat-subheader>{{ 'TABLE.DIALOG.APPLY_CONFIGURATION' | oTranslate }}</div>\n  <mat-selection-list #configurationList class=\"o-table-apply-configuration-dialog-list\">\n    <mat-list-option checkboxPosition=\"before\" [value]=\"default_configuration\">\n      <span matListItemTitle class=\"o-table-apply-configuration-dialog-list-title\">\n        {{ 'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT' | oTranslate }}\n      </span>\n      <span matListItemLine>{{ 'TABLE.DIALOG.APPLY_CONFIGURATION_DEFAULT_DESCRIPTION' | oTranslate }}</span>\n    </mat-list-option>\n    <mat-list-option checkboxPosition=\"before\" *ngFor=\"let configuration of configurations; let i = index\" [value]=\"configuration.name\">\n      <span matListItemTitle>{{ configuration.name }}</span>\n      <span matListItemLine>{{ configuration.description }}</span>\n    </mat-list-option>\n  </mat-selection-list>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n  <button type=\"button\" mat-stroked-button [disabled]=\"configurationList.selectedOptions.selected.length!==1 || isDefaultConfigurationSelected()\"\n    (click)=\"removeConfiguration(configurationList.selectedOptions.selected[0].value)\" class=\"o-button-danger\">\n    {{ 'DELETE' | oTranslate }}\n  </button>\n  <span fxFlex></span>\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"true\" [disabled]=\"configurationList.selectedOptions.selected.length!==1\"\n    class=\"o-button-primary\">{{ 'OK' | oTranslate }}</button>\n</mat-dialog-actions>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class OTableExportButtonService {\n\n  public export$: Subject<string> = new Subject();\n\n}\n","export class OTableExportConfiguration {\n  service: string;\n  columns: [];\n  serviceType: string;\n  visibleButtons: string;\n  options?: any;\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject, Injector, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { AppConfig } from '../../../../../config/app-config';\n\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { IExportService } from '../../../../../interfaces/export-service.interface';\nimport { OntimizeExportServiceProvider } from '../../../../../services/factories';\nimport { OntimizeExportService } from '../../../../../services/ontimize/ontimize-export.service';\nimport { SnackBarService } from '../../../../../services/snackbar.service';\nimport { OTranslateService } from '../../../../../services/translate/o-translate.service';\nimport { Codes } from '../../../../../util/codes';\nimport { Util } from '../../../../../util/util';\nimport { OTableExportButtonService } from '../../export-button/o-table-export-button.service';\nimport { OTableExportConfiguration } from '../../header/table-menu/o-table-export-configuration.class';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\n\n@Component({\n  selector: 'o-table-export-dialog',\n  templateUrl: 'o-table-export-dialog.component.html',\n  styleUrls: ['o-table-export-dialog.component.scss'],\n  providers: [\n    OntimizeExportServiceProvider\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'o-table-export-dialog'\n  },\n  encapsulation: ViewEncapsulation.None\n})\nexport class OTableExportDialogComponent implements OnInit, OnDestroy {\n\n  protected snackBarService: SnackBarService;\n  protected exportService: IExportService;\n  protected translateService: OTranslateService;\n  protected oTableExportButtonService: OTableExportButtonService;\n  protected visibleButtons: string[];\n  private subscription: Subscription = new Subscription();\n  private appConfig: AppConfig;\n  columns: string[];\n  columnsData: string[];\n  public orientations = [{ text: \"EXPORT.DIALOG.VERTICAL\", value: true }, { text: \"EXPORT.DIALOG.HORIZONTAL\", value: false }];\n  public exportTypes = [{\n    exportType: 'xlsx',\n    svgIcon: 'ontimize:EXCEL',\n    olabel: 'TABLE.BUTTONS.EXCEL',\n    className: 'excel-button'\n  }, {\n    exportType: 'html',\n    svgIcon: 'ontimize:HTML',\n    olabel: 'TABLE.BUTTONS.HTML',\n    className: 'html-button'\n  }, {\n    exportType: 'pdf',\n    svgIcon: 'ontimize:PDF',\n    olabel: 'TABLE.BUTTONS.PDF',\n    className: 'pdf-button'\n  }, {\n    exportType: 'csv',\n    svgIcon: 'ontimize:CSV',\n    olabel: 'TABLE.BUTTONS.CSV',\n    className: 'csv-button'\n  }];\n  vertical: boolean = true;\n  selectedExportFormat: string;\n  filename: string = '';\n  isExpanded: boolean = false;\n  constructor(\n    public dialogRef: MatDialogRef<OTableExportDialogComponent>,\n    protected injector: Injector,\n    @Inject(MAT_DIALOG_DATA) public config: OTableExportConfiguration\n  ) {\n    this.snackBarService = injector.get(SnackBarService);\n    this.translateService = this.injector.get(OTranslateService);\n    this.oTableExportButtonService = this.injector.get(OTableExportButtonService);\n    this.appConfig = this.injector.get(AppConfig);\n    this.selectedExportFormat = this.getDefaultSelection();\n\n    if (config && Util.isDefined(config.visibleButtons)) {\n      this.visibleButtons = Util.parseArray(config.visibleButtons.toLowerCase(), true);\n    }\n  }\n\n  ngOnInit() {\n    this.initialize();\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n  initialize(): void {\n    this.columnsData = this.config.columns;\n    this.columns = [...this.columnsData];\n    this.configureService();\n  }\n\n  configureService(): void {\n    let loadingService: any = OntimizeExportService;\n    if (this.config.serviceType) {\n      loadingService = this.config.serviceType;\n    }\n    this.exportService = this.injector.get(loadingService);\n    const serviceCfg = this.exportService.getDefaultServiceConfiguration(this.config.service);\n    this.exportService.configureService(serviceCfg);\n  }\n  updateColumnsSort() {\n    this.columns.sort((a: any, b: any) => {\n      let indexA = this.columnsData.findIndex(x => x === a);\n      let indexB = this.columnsData.findIndex(x => x === b);\n      return indexA - indexB;\n    });\n  }\n\n  dropColumns(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.columnsData, event.previousIndex, event.currentIndex);\n    this.updateColumnsSort();\n  }\n\n  columnsCompareFunction(co1: any, co2: any) {\n    return co1.id === co2.id;\n  }\n\n  export(): void {\n    this.dialogRef.close(true);\n\n    const exportFunction = this.getCustomExportButton(this.selectedExportFormat)?.exportFunction;\n\n    if (exportFunction) {\n      exportFunction(this.columns, !this.vertical, this.filename);\n      return;\n    }\n\n    const onClickEvent = this.getCustomExportButton(this.selectedExportFormat)?.onClick;\n    if (onClickEvent?.observers?.length > 0) {\n      console.warn(\n        '⚠️ [DEPRECATED] The onClick event is deprecated. Use the input export-function instead.'\n      );\n      this.getCustomExportButton(this.selectedExportFormat)?.onClick.emit();\n      return;\n    }\n\n\n    this.exportService.exportData(this.selectedExportFormat, this.columns, !this.vertical, this.filename).subscribe({\n      next: () => {\n        this.snackBarService.open('MESSAGES.SUCCESS_EXPORT_TABLE_DATA', { icon: 'check_circle' });\n      },\n      error: (err: any) => {\n        this.handleError(err);\n      }\n    }\n    );\n  }\n\n  isButtonVisible(btn: string): boolean {\n\n    const useExportConfiguration3X = this.appConfig.useExportConfiguration();\n    let isVisible = true;\n    if (this.visibleButtons) {\n      isVisible = this.visibleButtons.indexOf(btn) !== -1;\n    } else {\n      if (useExportConfiguration3X) {\n        isVisible = Codes.VISIBLE_EXPORT_BUTTONS3X.indexOf(btn) !== -1;\n      } else {\n        isVisible = Codes.VISIBLE_EXPORT_BUTTONS.indexOf(btn) !== -1\n      }\n    }\n\n    return isVisible;\n  }\n\n  getDefaultSelection() {\n    const useExportConfiguration3X = this.appConfig.useExportConfiguration();\n\n    if (useExportConfiguration3X) {\n      return Codes.VISIBLE_EXPORT_BUTTONS3X[0];\n    } else {\n      return Codes.VISIBLE_EXPORT_BUTTONS[0];\n    }\n\n  }\n\n  protected handleError(err): void {\n    if (err instanceof HttpErrorResponse) {\n      this.snackBarService.open(err.message, { icon: 'error' });\n    } else {\n      this.snackBarService.open('MESSAGES.ERROR_EXPORT_TABLE_DATA', { icon: 'error' });\n    }\n  }\n\n  onChangeMatButtonToggleGroup(event: MatButtonToggleChange) {\n    event.source.buttonToggleGroup.value = event.value;\n    this.selectedExportFormat = event.value;\n  }\n\n  getCustomExportButton(type: string) {\n    return this.config.options.find(x => x.exportType === type);\n  }\n}\n","<span mat-dialog-title>{{ 'TABLE.BUTTONS.EXPORT' | oTranslate }}</span>\n<mat-dialog-content class=\"dialog_content\">\n  <div mat-subheader>{{ 'TABLE.DIALOG.EXPORT.DESCRIPTION' | oTranslate }}</div>\n  <mat-button-toggle-group class=\"type_toggle_group\" #group=\"matButtonToggleGroup\" [(ngModel)]=\"selectedExportFormat\">\n    <ng-container *ngFor=\"let button of exportTypes\">\n      <mat-button-toggle [value]=\"button.exportType\" *ngIf=\"isButtonVisible(button.exportType)\" class=\"button.className\">\n        <ng-container *ngTemplateOutlet=\"buttonTemplate;context:{button:button}\"></ng-container>\n      </mat-button-toggle>\n    </ng-container>\n\n    <ng-container *ngFor=\"let customButton of config.options\">\n      <mat-button-toggle [value]=\"customButton.exportType\">\n        <ng-container *ngTemplateOutlet=\"buttonTemplate;context:{button:customButton}\"></ng-container>\n      </mat-button-toggle>\n    </ng-container>\n  </mat-button-toggle-group>\n  <mat-expansion-panel class=\"acordion\" [expanded]=\"isExpanded\">\n    <mat-expansion-panel-header collapsedHeight=\"32px\" expandedHeight=\"32px\">\n      <mat-panel-title>\n        {{ 'EXPORT.DIALOG.ADVANCED_OPTIONS' | oTranslate }}\n      </mat-panel-title>\n    </mat-expansion-panel-header>\n    <div class=\"inputs_container\">\n      <mat-label class=\"dialog-titles\">{{'EXPORT.DIALOG.FILE_NAME'|oTranslate}}</mat-label>\n      <mat-form-field subscriptSizing=\"dynamic\" class=\"filename_input\">\n        <input matInput [(ngModel)]=\"filename\" placeholder=\"{{ 'EXPORT.DIALOG.FILE_NAME.PLACEHOLDER' | oTranslate }}\" />\n      </mat-form-field>\n      <span class=\"dialog-titles\">{{'EXPORT.DIALOG.ORIENTATION'|oTranslate}}</span>\n      <mat-radio-group name=\"Orientation\" [(ngModel)]=\"vertical\" fxLayout=\"row\" fxLayoutGap=\"12px\" [disabled]=\"selectedExportFormat !== 'pdf'\">\n        <mat-radio-button *ngFor=\"let orientation of orientations\" name=\"Orientation\" [value]=\"orientation.value\"\n          [checked]=\"vertical === orientation.value\">\n          {{ orientation.text | oTranslate}}\n        </mat-radio-button>\n      </mat-radio-group>\n      <span class=\"dialog-titles\">{{'EXPORT.DIALOG.COLUMNS'|oTranslate}}</span>\n      <mat-selection-list dense #columnsList cdkDropList [cdkDropListData]=\"columnsData\" (cdkDropListDropped)=\"dropColumns($event)\" class=\"columns\"\n        [(ngModel)]=\"columns\" [compareWith]=\"columnsCompareFunction\">\n        <mat-list-option checkboxPosition=\"before\" *ngFor=\"let column of columnsData\" [value]=\"column\" cdkDrag>\n          <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n            <span matListItemLine fxFlex>\n              {{column | oTranslate}}\n            </span>\n            <mat-icon mat-list-icon class=\"button-edit\">drag_handle</mat-icon>\n          </div>\n        </mat-list-option>\n      </mat-selection-list>\n\n    </div>\n  </mat-expansion-panel>\n</mat-dialog-content>\n\n<mat-dialog-actions fxLayoutAlign=\"end center\">\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" mat-stroked-button class=\"export_button\" (click)=\"export()\">\n    <mat-icon>ios_share</mat-icon>\n    <span>{{ 'EXPORT.DIALOG.EXPORT_BUTTON' | oTranslate }}</span>\n  </button>\n</mat-dialog-actions>\n\n<ng-template #buttonTemplate let-button=\"button\">\n  <mat-icon class=\"material-icons o-button-icon\" *ngIf=\"button.icon!==undefined\" style=\"vertical-align:middle\">{{ button.icon }}</mat-icon>\n  <mat-icon class=\"material-icons o-button-icon\" *ngIf=\"button.svgIcon!==undefined\" style=\"vertical-align:middle\"\n    [svgIcon]=\"button.svgIcon\"></mat-icon>\n  {{ button.olabel | oTranslate }}\n</ng-template>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Inject, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatSelectionList, MatSelectionListChange } from '@angular/material/list';\nimport { MatRadioChange } from '@angular/material/radio';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { BehaviorSubject, fromEvent, Observable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { ServiceResponse } from '../../../../../interfaces/service-response.interface';\nimport { ColumnValueFilterOperator, OColumnValueFilter } from '../../../../../types/table/o-column-value-filter.type';\nimport { TableFilterByColumnData, TableFilterByColumnDialogResult } from '../../../../../types/table/o-table-filter-by-column-data.type';\nimport { Codes } from '../../../../../util/codes';\nimport { Util } from '../../../../../util/util';\nimport { OTableComponent } from '../../../o-table.component';\nimport { OFilterColumn } from '../../header/table-columns-filter/columns/o-table-columns-filter-column.component';\n\nimport type { OColumn } from '../../../column/o-column.class';\n\nconst CUSTOM_FILTERS_OPERATORS = [ColumnValueFilterOperator.LESS_EQUAL, ColumnValueFilterOperator.MORE_EQUAL, ColumnValueFilterOperator.BETWEEN, ColumnValueFilterOperator.EQUAL];\n\n@Component({\n  selector: 'o-table-filter-by-column-data-dialog',\n  templateUrl: 'o-table-filter-by-column-data-dialog.component.html',\n  styleUrls: ['o-table-filter-by-column-data-dialog.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-filter-by-column-dialog]': 'true'\n  }\n})\nexport class OTableFilterByColumnDataDialogComponent implements AfterViewInit {\n\n  public acceptAction = TableFilterByColumnDialogResult.ACCEPT;\n  public cancelAction = TableFilterByColumnDialogResult.CANCEL;\n  public clearAction = TableFilterByColumnDialogResult.CLEAR;\n\n  column: OColumn;\n  preloadValues: boolean = true;\n  mode: string;\n  startView: 'month' | 'year' | 'multi-year' | '';\n\n  public onSortFilterValuesChange: EventEmitter<OFilterColumn> = new EventEmitter();\n  private readonly isCustomFilterSubject = new BehaviorSubject<boolean>(false);\n  isCustomFilter: Observable<boolean> = this.isCustomFilterSubject.asObservable();\n\n  private readonly isDefaultFilterSubject = new BehaviorSubject<boolean>(false);\n  isDefaultFilter: Observable<boolean> = this.isDefaultFilterSubject.asObservable();\n\n  fcText = new UntypedFormControl();\n  fcFrom = new UntypedFormControl();\n  fcTo = new UntypedFormControl();\n\n  protected columnData: TableFilterByColumnData[] = [];\n  protected tableData: any[] = [];\n\n  private readonly listDataSubject = new BehaviorSubject<TableFilterByColumnData[]>([]);\n  protected _listData: Observable<TableFilterByColumnData[]> = this.listDataSubject.asObservable();\n\n  @ViewChild('filter') filter: ElementRef;\n  @ViewChild('filterValueList') filterValueList: MatSelectionList;\n  public activeSortDirection: 'asc' | 'desc' | '';\n  sourceData;\n  queryByFilterColumnSubscription: any;\n  table: OTableComponent;\n  showFilterValuesOption: boolean;\n  queryMethodName: string;\n\n  constructor(\n    public dialogRef: MatDialogRef<OTableFilterByColumnDataDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) data: { column: OColumn; table: OTableComponent }\n  ) {\n\n    if (data.column) {\n      this.column = data.column;\n    }\n    this.table = data.table;\n\n    this.initialize();\n  }\n\n  private initialize() {\n    this.showFilterValuesOption = this.table.paginationControls;\n    this.sourceData =\n      this.table.oTableColumnsFilterComponent?.getFilterValuesInData(this.column.attr) ||\n      this.table.oTableColumnsFilterComponent?.filterValuesInData ||\n      (this.table.pageable ? 'current-page' : 'all-data');\n\n    this.mode = this.table.oTableColumnsFilterComponent ? this.table.oTableColumnsFilterComponent.mode : 'default';\n    this.isDefaultFilterSubject.next(this.mode === 'default');\n    this.isCustomFilterSubject.next(this.mode === 'custom');\n\n    let previousFilter: OColumnValueFilter = this.table.dataSource.getColumnValueFilterByAttr(this.column.attr) || {\n      attr: undefined,\n      operator: undefined,\n      values: undefined,\n      availableValues: undefined\n    };\n\n    if (Util.isDefined(previousFilter.operator)) {\n      this.isCustomFilterSubject.next(CUSTOM_FILTERS_OPERATORS.indexOf(previousFilter.operator) !== -1);\n    }\n\n    this.preloadValues = this.table.oTableColumnsFilterComponent ? this.table.oTableColumnsFilterComponent.preloadValues : true;\n    this.activeSortDirection = this.table.getSortFilterColumn(this.column) || '';\n    this.startView = this.table.getStartViewFilterColumn(this.column) || 'month'\n\n    const queryMethod = this.table.oTableColumnsFilterComponent?.getQueryMethodOfFilterColumn(this.column.attr);\n    if (Util.isDefined(queryMethod)) {\n      this.queryMethodName = queryMethod;\n      this.sourceData = 'all-data';\n    }\n    this.getData(this.sourceData);\n  }\n\n\n  private parseDataAndInitializeDataList(previousFilter: OColumnValueFilter) {\n\n    this.parseListData(previousFilter);\n\n    if (Util.isDefined(previousFilter)) {\n      this.initializeCustomFilterValues(previousFilter);\n    }\n    this.initializeDataList(previousFilter);\n\n  }\n\n  ngAfterViewInit() {\n    this.initializeFilterEvent();\n  }\n\n  get listData(): Observable<TableFilterByColumnData[]> {\n    return this._listData;\n  }\n\n  set listData(arg: Observable<TableFilterByColumnData[]>) {\n    this._listData = arg;\n  }\n\n  protected initializeDataList(filter?: OColumnValueFilter): void {\n    if (this.preloadValues || (filter && filter.operator === ColumnValueFilterOperator.IN)) {\n      if (this.activeSortDirection === Codes.ASC_SORT || this.activeSortDirection === Codes.DESC_SORT) {\n        this.sortData();\n      } else {\n        this.listDataSubject.next(this.columnData.slice());\n      }\n    }\n  }\n\n  protected initializeFilterEvent() {\n    if (this.filter) {\n      fromEvent(this.filter.nativeElement, 'keyup')\n        .pipe(debounceTime(150))\n        .pipe(distinctUntilChanged())\n        .subscribe(() => {\n          let filterValue: string = this.filter.nativeElement.value;\n          filterValue = Util.normalizeString(filterValue);\n          if (filterValue.indexOf('*') !== -1) {\n            this.listDataSubject.next(this.columnData.filter(item => new RegExp('^' + Util.normalizeString(filterValue).split('*').join('.*') + '$').test(Util.normalizeString(item.renderedValue))));\n          } else {\n            this.listDataSubject.next(this.columnData.filter(item => (Util.normalizeString(item.renderedValue).indexOf(filterValue) !== -1)));\n          }\n        });\n    }\n  }\n\n  protected initializeCustomFilterValues(filter: OColumnValueFilter): void {\n    switch (true) {\n      case filter.operator === ColumnValueFilterOperator.EQUAL:\n        if (this.isTextType()) {\n          this.fcText.setValue(filter.values);\n        }\n        break;\n      case filter.operator === ColumnValueFilterOperator.BETWEEN:\n        this.fcFrom.setValue(this.isDateType() ? new Date(filter.values[0]) : filter.values[0]);\n        this.fcTo.setValue(this.isDateType() ? new Date(filter.values[1]) : filter.values[1]);\n        break;\n      case filter.operator === ColumnValueFilterOperator.MORE_EQUAL:\n        this.fcFrom.setValue(this.isDateType() ? new Date(filter.values) : filter.values);\n        break;\n      case filter.operator === ColumnValueFilterOperator.LESS_EQUAL:\n        this.fcTo.setValue(this.isDateType() ? new Date(filter.values) : filter.values);\n        break;\n      default:\n        break;\n    }\n  }\n\n  get selectedValues(): TableFilterByColumnData[] {\n    return this.filterValueList ? this.filterValueList.selectedOptions.selected.map(selected => selected.value) : [];\n  }\n\n  areAllSelected(): boolean {\n    return this.selectedValues.length === this.columnData.length;\n  }\n\n  isIndeterminate(): boolean {\n    const selectedValues = this.selectedValues;\n    return selectedValues.length > 0 && selectedValues.length !== this.columnData.length;\n  }\n\n  onSelect(event: MatSelectionListChange) {\n    event.options.forEach(option => option.value.selected = option.selected);\n  }\n\n  onSelectAllChange(event: MatCheckboxChange) {\n    if (event.checked) {\n      this.filterValueList.selectAll();\n    } else {\n      this.filterValueList.deselectAll();\n    }\n  }\n\n  protected parseListData(filter: OColumnValueFilter): void {\n    this.columnData = [];\n    if (Util.isDefined(filter?.availableValues)) {\n      this.columnData = filter.availableValues;\n    } else {\n      const colRenderedValues = this.getColumnDataUsingRenderer();\n      const colValues: any[] = this.tableData.map(elem => elem[this.column.attr]);\n\n      if (this.table.pageable && this.sourceData === 'all-data') {\n        colRenderedValues.forEach((renderedValue, i) => {\n          this.addIntoColumnData(renderedValue, colValues, i, filter);\n        });\n      } else {\n        colRenderedValues.forEach((renderedValue, i) => {\n          /*Selection distint values */\n          if (renderedValue === null || renderedValue === undefined) {\n            renderedValue = '';\n          }\n          if (!this.columnData.find(item => item.renderedValue === renderedValue)) {\n            this.addIntoColumnData(renderedValue, colValues, i, filter);\n          }\n        });\n      }\n    }\n  }\n\n  private addIntoColumnData(renderedValue: any, colValues: any[], i: number, filter: OColumnValueFilter) {\n    this.columnData.push({\n      renderedValue: renderedValue,\n      value: colValues[i],\n      rowValue: this.tableData[i],\n      selected: filter?.operator === ColumnValueFilterOperator.IN && (filter?.values || []).indexOf(colValues[i]) !== -1,\n      // storing the first index where this renderedValue is obtained. In the template of this component the column renderer will obtain the\n      // row value of this index\n      tableIndex: i\n    });\n  }\n\n  getColumnValuesFilter(): OColumnValueFilter {\n    const filter: OColumnValueFilter = {\n      attr: this.column.attr,\n      operator: undefined,\n      values: undefined,\n      availableValues: undefined\n    };\n\n    if (!this.isCustomFilterSubject.getValue()) {\n      const selectedValues = this.selectedValues;\n      if (selectedValues.length) {\n        filter.operator = ColumnValueFilterOperator.IN;\n        filter.values = selectedValues.map((item) => item.value);\n        filter.availableValues = this.columnData;\n      }\n    } else {\n      if (this.fcText.value) {\n        filter.operator = ColumnValueFilterOperator.EQUAL;\n        filter.values = this.getTypedValue(this.fcText);\n      }\n      if (this.fcFrom.value && this.fcTo.value) {\n        filter.operator = ColumnValueFilterOperator.BETWEEN;\n        const fromValue = this.getTypedValue(this.fcFrom);\n        const toValue = this.getTypedValue(this.fcTo);\n        filter.values = fromValue <= toValue ? [fromValue, toValue] : [toValue, fromValue];\n      } else {\n        if (this.fcFrom.value) {\n          filter.operator = ColumnValueFilterOperator.MORE_EQUAL;\n          filter.values = this.getTypedValue(this.fcFrom);\n        }\n        if (this.fcTo.value) {\n          filter.operator = ColumnValueFilterOperator.LESS_EQUAL;\n          filter.values = this.getTypedValue(this.fcTo);\n        }\n      }\n    }\n    return filter;\n  }\n\n  clearValues() {\n    if (this.isTextType()) {\n      this.fcText.setValue(undefined);\n    } else if (this.isDateType() || this.isNumericType()) {\n      this.fcFrom.setValue(undefined);\n      this.fcTo.setValue(undefined);\n    }\n  }\n\n  onClickSortValues() {\n    switch (this.activeSortDirection) {\n      case 'asc':\n        this.activeSortDirection = 'desc';\n        break;\n      case 'desc':\n        this.activeSortDirection = '';\n        break;\n      default:\n        this.activeSortDirection = 'asc';\n        break;\n    }\n    this.onSortFilterValuesChange.emit(this.getFilterColumn());\n    this.sortData();\n  }\n\n  protected sortData() {\n    const sortedData = Object.assign([], this.columnData);\n    if (this.activeSortDirection !== '') {\n      this.listDataSubject.next(sortedData.sort(this.sortFunction.bind(this)));\n    } else {\n      this.listDataSubject.next(sortedData);\n    }\n\n  }\n\n  protected sortFunction(a: any, b: any): number {\n    let propertyA: number | string = '';\n    let propertyB: number | string = '';\n    [propertyA, propertyB] = [a['value'], b['value']];\n\n    return Util.sortFunction(propertyA, propertyB, this.activeSortDirection);\n  }\n\n  onSlideChange(e: MatSlideToggleChange): void {\n    this.isCustomFilterSubject.next(e.checked);\n\n    if (!e.checked) {\n      // Selection mode\n      this.initializeDataList();\n      setTimeout(() => {\n        this.initializeFilterEvent();\n      }, 0);\n    }\n  }\n\n  isTextType(): boolean {\n    return !this.isNumericType() && !this.isDateType();\n  }\n\n  isNumericType(): boolean {\n    return ['integer', 'real', 'currency'].indexOf(this.column.type) !== -1;\n  }\n\n  isDateType(): boolean {\n    return 'date' === this.column.type;\n  }\n\n  getFixedDimensionClass() {\n    return this.mode === 'selection' || this.mode === 'default';\n  }\n\n  getSortByAlphaIcon() {\n    let icon = 'ontimize:sort_by_alpha';\n    if (this.activeSortDirection !== '') {\n      icon += '_' + this.activeSortDirection;\n    }\n    return icon;\n  }\n\n  protected getFilterColumn(): OFilterColumn {\n    let obj: OFilterColumn = { attr: '', sort: '', startView: '' };\n    obj.attr = this.column.attr;\n    obj.sort = this.activeSortDirection;\n    obj.startView = this.startView;\n    return obj;\n  }\n\n  public getStartedViewDatepicker(): string {\n    return this.startView;\n  }\n\n  protected getTypedValue(control: UntypedFormControl): any {\n    let value = control.value;\n    if (this.isNumericType()) {\n      value = control.value;\n    }\n    if (this.isDateType()) {\n      value = control.value.valueOf();\n    }\n    return value;\n  }\n  onChangeDataSource(event: MatRadioChange) {\n    this.table.clearColumnFilter(this.column.attr);\n    this.getData(event.value);\n  }\n\n  private getData(sourceData: string) {\n    if (sourceData === 'current-page') {\n      /*Get filter values on the current page*/\n      this.tableData = this.table.dataSource.getCurrentData();\n      this.parseDataAndInitializeDataList(null);\n\n    } else if (this.table.pageable) {\n      /*Get filter values on the all pages*/\n      this.queryByFilterColumnSubscription = this.queryByFilterColumn(this.column.attr).subscribe((res: ServiceResponse) => {\n        let data = [];\n        if (res.isSuccessful()) {\n          data = res.data;\n        }\n        this.tableData = data;\n        this.parseDataAndInitializeDataList(null);\n      });\n    } else {\n      this.tableData = this.table.getAllValues();\n      this.parseDataAndInitializeDataList(null);\n    }\n  }\n\n  queryByFilterColumn(attr: string): Observable<ServiceResponse> | Observable<any> {\n\n    const kv = this.table.getComponentFilter();\n    const av = [attr];\n    let sqlTypes = {};\n    if (Util.isDefined(kv) && !Util.isObjectEmpty(kv)) {\n      sqlTypes = this.table.getSqlTypes();\n    }\n\n    const columnQueryArgs = [kv, av, this.table.entity, sqlTypes, undefined, undefined, undefined];\n    const queryMethodName = this.queryMethodName || Codes.QUERY_METHOD;\n    const service = this.table.getService();\n    if (service && (queryMethodName in service) && this.table.entity) {\n      return service[queryMethodName](...columnQueryArgs)\n    }\n    return of({});\n  }\n\n  protected getColumnDataUsingRenderer() {\n    const useRenderer = this.column.renderer && this.column.renderer.getCellData;\n    return this.tableData.map((row) => useRenderer ? this.column.renderer.getCellData(row[this.column.attr], row) : row[this.column.attr]);\n  }\n}\n","<span mat-dialog-title>{{ 'TABLE.BUTTONS.FILTER_BY_COLUMN' | oTranslate }}: {{ column.title | oTranslate }}</span>\n<div mat-dialog-content class=\"dialog-list-container\">\n  <div fxLayout=\"column\" class=\"content-wrapper\" [class.content-wrapper-fixed-dimension]=\"getFixedDimensionClass()\">\n    <mat-slide-toggle #customFilterSlide (change)=\"onSlideChange($event)\" [checked]=\"(isCustomFilter | async)\" *ngIf=\"isDefaultFilter | async\">\n      {{ 'TABLE.FILTER_BY_COLUMN.CUSTOM_FILTER' | oTranslate }}\n    </mat-slide-toggle>\n    <div fxFlex=\"1 1 100%\" *ngIf=\"!(isCustomFilter | async);else customFilterTemplate\" fxLayout=\"column\">\n      <mat-form-field class=\"hinted\">\n        <mat-icon matPrefix svgIcon=\"ontimize:search\"></mat-icon>\n        <input matInput #filter placeholder=\"{{ 'TABLE.FILTER' | oTranslate }}\">\n        <mat-hint>{{ 'TABLE.FILTER_BY_COLUMN.HINT_STAR' | oTranslate }}</mat-hint>\n      </mat-form-field>\n      <div *ngIf=\"(listData | async).length > 0; else emptyListData\" fxLayout=\"row\" fxLayoutAlign=\"space-between start\">\n        <div fxLayout=\"row\" fxLayoutAlign=\"start start\">\n          <mat-checkbox (change)=\"onSelectAllChange($event)\" [checked]=\"areAllSelected()\" [indeterminate]=\"isIndeterminate()\" [disabled]=\"!listData\"\n            class=\"select-all-checkbox\">\n            {{ 'TABLE.FILTER_BY_COLUMN.CHECK_ALL' | oTranslate }}\n          </mat-checkbox>\n          <span *ngIf=\"!listData\" class=\"column-filter-empty-list\">\n            {{ 'TABLE.FILTER_BY_COLUMN.LIST_EMPTY_FILTER' | oTranslate }}\n          </span>\n        </div>\n        <div fxLayout=\"row\" fxLayoutAlign=\"start start\">\n          <button type=\"button\" mat-icon-button (click)=\"onClickSortValues()\">\n            <mat-icon [svgIcon]=\"getSortByAlphaIcon()\"></mat-icon>\n          </button>\n          <button type=\"button\" mat-icon-button [matMenuTriggerFor]=\"menu\" *ngIf=\"showFilterValuesOption\">\n            <mat-icon>more_vert</mat-icon>\n          </button>\n          <mat-menu #menu=\"matMenu\">\n            <div fxLayout=\"column\" class=\"filtervalues-container\">\n              <div mat-subheader>\n                {{'TABLE.FILTER_BY_COLUMN.LABEL_DATA' | oTranslate}}\n              </div>\n              <mat-divider></mat-divider>\n              <mat-radio-group aria-label=\"Data\" fxLayout=\"column\" fxLayoutGap=\"12px\" [(ngModel)]=\"sourceData\" (change)=\"onChangeDataSource($event)\">\n                <mat-radio-button value=\"current-page\">{{'TABLE.FILTER_BY_COLUMN.CURRENT_PAGE' | oTranslate}}</mat-radio-button>\n                <mat-radio-button value=\"all-data\">{{'TABLE.FILTER_BY_COLUMN.ALL_PAGE' | oTranslate}}</mat-radio-button>\n              </mat-radio-group>\n            </div>\n          </mat-menu>\n        </div>\n      </div>\n\n      <ng-template #emptyListData>\n        <span class=\"column-filter-empty-list\">\n          {{ 'TABLE.FILTER_BY_COLUMN.LIST_EMPTY' | oTranslate }}\n        </span>\n      </ng-template>\n\n      <cdk-virtual-scroll-viewport itemSize=\"25\" fxFlex>\n        <mat-selection-list *ngIf=\"preloadValues || listData\" #filterValueList class=\"select-values-list\" (selectionChange)=\"onSelect($event)\">\n\n          <ng-container *cdkVirtualFor=\"let record of (listData | async); let i = index\">\n            <mat-list-option checkboxPosition=\"before\" [selected]=\"record.selected\" [value]=\"record\">\n              <ng-container *ngIf=\"record.value | isEmptyValue; else showValue\">\n                {{ 'TABLE.FILTER_BY_COLUMN.EMPTY_VALUE' | oTranslate }}\n              </ng-container>\n              <ng-template #showValue>\n                <ng-container *ngIf=\"!column.renderer\">\n                  {{ record.value }}\n                </ng-container>\n                <ng-template *ngIf=\"column.renderer\" [ngTemplateOutlet]=\"column.renderer.templateref\"\n                  [ngTemplateOutletContext]=\"{ cellvalue: record.value, rowvalue: record.rowValue }\">\n                </ng-template>\n              </ng-template>\n            </mat-list-option>\n          </ng-container>\n        </mat-selection-list>\n      </cdk-virtual-scroll-viewport>\n\n    </div>\n  </div>\n</div>\n\n\n<mat-dialog-actions fxLayoutAlign=\"space-between center\">\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"clearAction\" class=\"o-button-info\">\n    {{ 'TABLE.BUTTONS.FILTER_CLEAR' | oTranslate }} </button>\n  <span align=\"end\">\n    <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"cancelAction\" class=\"o-button-default cancel\">\n      {{ 'CANCEL' | oTranslate }} </button>\n    <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"acceptAction\" class=\"o-button-primary\">\n      {{ 'ACCEPT' | oTranslate }} </button>\n  </span>\n</mat-dialog-actions>\n\n<!-- TEMPLATE CUSTOM FILTER-->\n<ng-template #customFilterTemplate>\n  <div *ngIf=\"isTextType()\">\n    <mat-form-field fxFlex class=\"hinted\">\n      <input matInput #filterText [formControl]=\"fcText\" placeholder=\"{{ 'TABLE.FILTER' | oTranslate }}\">\n      <mat-hint>{{ 'TABLE.FILTER_BY_COLUMN.HINT_STAR' | oTranslate }}</mat-hint>\n      <button type=\"button\" matSuffix mat-icon-button (click)=\"clearValues()\">\n        <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n      </button>\n    </mat-form-field>\n  </div>\n  <div *ngIf=\"isNumericType()\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"12px\">\n    <mat-form-field>\n      <input matInput [formControl]=\"fcFrom\" placeholder=\"{{ 'TABLE.FILTER_BY_COLUMN.FROM' | oTranslate }}\">\n    </mat-form-field>\n    <mat-form-field>\n      <input matInput [formControl]=\"fcTo\" placeholder=\"{{ 'TABLE.FILTER_BY_COLUMN.TO' | oTranslate }}\">\n    </mat-form-field>\n    <button type=\"button\" mat-icon-button (click)=\"clearValues()\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\n  </div>\n  <div *ngIf=\"isDateType()\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"12px\">\n    <mat-form-field>\n      <input matInput [matDatepicker]=\"datepickerFrom\" [max]=\"fcTo.value\" [formControl]=\"fcFrom\"\n        placeholder=\"{{ 'TABLE.FILTER_BY_COLUMN.FROM' | oTranslate }}\">\n      <mat-datepicker-toggle matSuffix [for]=\"datepickerFrom\">\n        <mat-icon matDatepickerToggleIcon>today</mat-icon>\n      </mat-datepicker-toggle>\n      <mat-datepicker #datepickerFrom [startView]=\"getStartedViewDatepicker()\"></mat-datepicker>\n    </mat-form-field>\n    <mat-form-field>\n      <input matInput [matDatepicker]=\"datepickerTo\" [min]=\"fcFrom.value\" [formControl]=\"fcTo\"\n        placeholder=\"{{ 'TABLE.FILTER_BY_COLUMN.TO' | oTranslate }}\">\n      <mat-datepicker-toggle matSuffix [for]=\"datepickerTo\">\n        <mat-icon matDatepickerToggleIcon>today</mat-icon>\n      </mat-datepicker-toggle>\n      <mat-datepicker #datepickerTo [startView]=\"getStartedViewDatepicker()\"></mat-datepicker>\n    </mat-form-field>\n    <button type=\"button\" matSuffix mat-icon-button (click)=\"clearValues()\">\n      <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n    </button>\n  </div>\n\n</ng-template>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, Injector, ViewChild } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatListOption, MatSelectionList } from '@angular/material/list';\n\nimport { OTableBaseDialogClass } from '../o-table-base-dialog.class';\n\n@Component({\n  selector: 'o-table-store-configuration-dialog',\n  templateUrl: './o-table-store-configuration-dialog.component.html',\n  styleUrls: ['./o-table-store-configuration-dialog.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OTableStoreConfigurationDialogComponent extends OTableBaseDialogClass implements AfterViewInit {\n\n  @ViewChild('propertiesList')\n  public propertiesList: MatSelectionList;\n\n  public properties: any[] = [{\n    property: 'sort-columns',\n    name: 'TABLE.DIALOG.PROPERTIES.SORT',\n    info: 'TABLE.DIALOG.PROPERTIES.SORT.INFO'\n  }, {\n    property: 'oColumns-display',\n    name: 'TABLE.DIALOG.PROPERTIES.COLUMNS_DISPLAY',\n    info: 'TABLE.DIALOG.PROPERTIES.COLUMNS_DISPLAY.INFO'\n  }, {\n    property: 'quick-filter',\n    name: 'TABLE.DIALOG.PROPERTIES.QUICK_FILTER',\n    info: 'TABLE.DIALOG.PROPERTIES.QUICK_FILTER.INFO'\n  }, {\n    property: 'columns-filter',\n    name: 'TABLE.DIALOG.PROPERTIES.COLUMNS_FILTER',\n    info: 'TABLE.DIALOG.PROPERTIES.COLUMNS_FILTER.INFO'\n  }, {\n    property: 'filter-builder',\n    name: 'TABLE.DIALOG.PROPERTIES.FILTER_BUILDER',\n    info: 'TABLE.DIALOG.PROPERTIES.FILTER_BUILDER.INFO'\n  }, {\n    property: 'page',\n    name: 'TABLE.DIALOG.PROPERTIES.PAGE',\n    info: 'TABLE.DIALOG.PROPERTIES.PAGE.INFO'\n  }];\n\n  public formGroup: UntypedFormGroup = new UntypedFormGroup({\n    name: new UntypedFormControl('', [\n      Validators.required\n    ]),\n    description: new UntypedFormControl('')\n  });\n\n  constructor(\n    public dialogRef: MatDialogRef<OTableStoreConfigurationDialogComponent>,\n    protected injector: Injector\n  ) {\n    super(injector);\n    this.setFormControl(this.formGroup.get('name'));\n  }\n\n  public ngAfterViewInit(): void {\n    this.propertiesList.selectAll();\n  }\n\n  public areAllSelected(): boolean {\n    return this.propertiesList && this.propertiesList.options && this.propertiesList.options.length === this.propertiesList.selectedOptions.selected.length;\n  }\n\n  public onSelectAllChange(event: MatCheckboxChange): void {\n    event.checked ? this.propertiesList.selectAll() : this.propertiesList.deselectAll();\n  }\n\n  public getConfigurationAttributes(): any {\n    return this.formGroup.value;\n  }\n\n  public getSelectedTableProperties(): any[] {\n    const selected: MatListOption[] = this.propertiesList.selectedOptions.selected;\n    return selected.length ? selected.map(item => item.value) : [];\n  }\n\n  public isIndeterminate(): boolean {\n    return !this.areAllSelected();\n  }\n\n}\n","<span mat-dialog-title>{{ 'TABLE.BUTTONS.SAVE_CONFIGURATION' | oTranslate }}</span>\n\n<mat-dialog-content>\n  <div mat-subheader>{{ 'TABLE.DIALOG.SAVE_CONFIGURATION' | oTranslate }}</div>\n  <form #form [formGroup]=\"formGroup\" fxLayout=\"column\">\n    <mat-form-field subscriptSizing=\"dynamic\">\n      <input matInput [matTooltip]=\"tooltipText\" [matTooltipClass]=\"tooltipClass\" placeholder=\"{{ 'TABLE.DIALOG.CONFIGURATION_NAME' | oTranslate }}\"\n        formControlName=\"name\" required />\n      <mat-error *oMatError=\"hasError(formGroup.controls['name'], 'required')\">\n        {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n      </mat-error>\n    </mat-form-field>\n    <mat-form-field class=\"example-full-width\" subscriptSizing=\"dynamic\">\n      <textarea matInput placeholder=\"{{ 'TABLE.DIALOG.CONFIGURATION_DESCRIPTION' | oTranslate }}\" formControlName=\"description\" rows=\"4\"\n        cols=\"50\"></textarea>\n    </mat-form-field>\n    <div class=\"inner-subheader\" mat-subheader>{{ 'TABLE.DIALOG.CONFIGURATION_PROPERTIES' | oTranslate }}</div>\n    <div fxLayout=\"column\">\n      <mat-checkbox (change)=\"onSelectAllChange($event)\" [checked]=\"areAllSelected()\" [indeterminate]=\"isIndeterminate()\" class=\"select-all-checkbox\">\n        {{ 'SELECT_ALL' | oTranslate }}\n      </mat-checkbox>\n\n      <mat-selection-list #propertiesList class=\"o-table-save-configuration-dialog-list o-scroll\">\n        <mat-list-option checkboxPosition=\"before\" *ngFor=\"let property of properties\" [value]=\"property.property\">\n          <span matListItemTitle fxFlex>{{ property.name | oTranslate }}</span>\n          <mat-icon matListItemIcon *ngIf=\"property.info\" matTooltip=\"{{ property.info | oTranslate }}\" class=\"o-tscd-list-tooltip\">info</mat-icon>\n        </mat-list-option>\n      </mat-selection-list>\n    </div>\n  </form>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n  <button type=\"button\" mat-stroked-button class=\"mat-primary\" [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">\n    {{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" mat-stroked-button class=\"mat-primary\" [mat-dialog-close]=\"true\"\n    [disabled]=\"!formGroup.valid || propertiesList.selectedOptions.selected.length===0\" class=\"o-button-primary\">{{ 'SAVE' | oTranslate }}</button>\n</mat-dialog-actions>\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Inject,\n  Injector,\n  Type,\n  ViewEncapsulation\n} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { DialogService } from '../../../../../services/dialog.service';\nimport { OTranslateService } from '../../../../../services/translate/o-translate.service';\nimport { Codes } from '../../../../../util/codes';\nimport { Util } from '../../../../../util/util';\nimport type { OColumn } from '../../../column/o-column.class';\nimport { OTableBase } from '../../../o-table-base.class';\n\nexport type ColumnVisibilityConfiguration = {\n  attr: string;\n  title: string;\n  visible: boolean;\n  deleteValueFilter?: boolean;\n  deleteSortColummn?: boolean;\n  deleteGrupingColumn?: boolean;\n};\n\n@Component({\n  selector: 'o-table-visible-columns-dialog',\n  templateUrl: 'o-table-visible-columns-dialog.component.html',\n  styleUrls: ['o-table-visible-columns-dialog.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-table-visible-columns-dialog]': 'true'\n  }\n})\nexport class OTableVisibleColumnsDialogComponent {\n\n  columns: ColumnVisibilityConfiguration[] = [];\n  rowHeight: string = Codes.DEFAULT_ROW_HEIGHT;\n  protected dialogService: DialogService;\n  protected cd: ChangeDetectorRef;\n  protected translateService: OTranslateService;\n  protected activeColumnValueFilters: string[] = [];\n  protected activeSortColumns: string[] = [];\n  protected activeGroupByColumns: string[] = [];\n  protected table: OTableBase;\n  constructor(\n    protected injector: Injector,\n    public dialogRef: MatDialogRef<OTableVisibleColumnsDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) data: any\n  ) {\n    this.dialogService = this.injector.get<DialogService>(DialogService as Type<DialogService>);\n    this.cd = this.injector.get<ChangeDetectorRef>(ChangeDetectorRef as Type<ChangeDetectorRef>);\n    this.translateService = this.injector.get<OTranslateService>(OTranslateService as Type<OTranslateService>);\n\n    if (Util.isDefined(data.table)) {\n      this.table = data.table;\n\n      const visibleColumns = Util.parseArray(this.table.visibleColumns, true);\n      const nonHidableColumns = Util.parseArray(this.table.nonHidableColumns, true);\n\n      this.table.oTableOptions.columns.filter(oCol => (visibleColumns.indexOf(oCol.attr) !== -1 || oCol.definition !== undefined) &&\n        nonHidableColumns.indexOf(oCol.attr) === -1\n      ).forEach((oCol: OColumn) => {\n        this.columns.push({\n          attr: oCol.attr,\n          title: oCol.title,\n          visible: oCol.visible\n        });\n      });\n\n      this.rowHeight = this.table.rowHeight;\n      this.activeColumnValueFilters = this.table.dataSource.getColumnValueFilters().map(colValueFilter => colValueFilter.attr);\n      this.activeSortColumns = this.table.sortColArray.map(col => col.columnName);\n      this.activeGroupByColumns = this.table.groupedColumnsArray;\n    }\n  }\n\n  onClickColumn(col: ColumnVisibilityConfiguration): void {\n    const activeColFilter = this.activeColumnValueFilters.includes(col.attr);\n    const activeSorting = this.activeSortColumns.includes(col.attr);\n    const activeGrouping = this.activeGroupByColumns.includes(col.attr);\n    if (col.visible && (activeColFilter || activeSorting || activeGrouping)) {\n      const warnArgs = [];\n      if (activeColFilter) {\n        warnArgs.push(this.translateService.get('TABLE.VISIBLE_COLUMNS_DIALOG.VALUE_FILTER_WARN'));\n      }\n      if (activeSorting) {\n        warnArgs.push(this.translateService.get('TABLE.VISIBLE_COLUMNS_DIALOG.SORT_WARN'));\n      }\n      if (activeGrouping) {\n        warnArgs.push(this.translateService.get('TABLE.VISIBLE_COLUMNS_DIALOG.GROUPING_WARN'));\n      }\n      const dialogText = this.translateService.get('TABLE.VISIBLE_COLUMNS_DIALOG.HIDE_COLUMN_WARNING', warnArgs);\n      this.dialogService.confirm('CONFIRM', dialogText).then(res => {\n        if (res) {\n          col.deleteValueFilter = activeColFilter;\n          col.deleteSortColummn = activeSorting;\n          col.deleteGrupingColumn = activeGrouping;\n          col.visible = !col.visible;\n          this.cd.detectChanges();\n        }\n      });\n    } else {\n      col.visible = !col.visible;\n      if (col.visible) {\n        col.deleteValueFilter = false;\n        col.deleteSortColummn = false;\n        col.deleteGrupingColumn = false;\n      }\n    }\n  }\n\n  drop(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.columns, event.previousIndex, event.currentIndex);\n  }\n\n  closeDialog() {\n    const columnSortingToRemove = this.getColumnSortingToRemove();\n    const newSortColumns = columnSortingToRemove.length > 0 ?\n      this.table.sortColArray.filter(col => !columnSortingToRemove.includes(col.columnName)) :\n      undefined;\n\n    const columnGroupingToRemove = this.getColumnGroupingToRemove();\n    const newGroupColumns = columnGroupingToRemove.length > 0 ?\n      this.table.groupedColumnsArray.filter(col => !columnGroupingToRemove.includes(col)) :\n      undefined;\n\n    this.dialogRef.close({\n      visibleColArray: this.getVisibleColumns(),\n      columnsOrder: this.getColumnsOrder(),\n      sortColumns: newSortColumns,\n      columnValueFiltersToRemove: this.getColumnValueFiltersToRemove(),\n      groupColumns: newGroupColumns\n    });\n  }\n\n  private getVisibleColumns(): string[] {\n    return this.columns.filter(col => col.visible).map(col => col.attr);\n  }\n\n  private getColumnsOrder(): string[] {\n    return this.columns.map(col => col.attr);\n  }\n\n  private getColumnValueFiltersToRemove(): string[] {\n    return this.columns.filter(col => col.deleteValueFilter).map(col => col.attr);\n  }\n\n  private getColumnSortingToRemove(): string[] {\n    return this.columns.filter(col => col.deleteSortColummn).map(col => col.attr);\n  }\n\n  private getColumnGroupingToRemove(): string[] {\n    return this.columns.filter(col => col.deleteGrupingColumn).map(col => col.attr);\n  }\n}\n","<span mat-dialog-title>{{ 'TABLE.BUTTONS.COLVIS' | oTranslate }}</span>\n\n\n<mat-dialog-content>\n  <div mat-subheader>{{'TABLE.VISIBLE_COLUMNS.DESCRIPTION' | oTranslate}}</div>\n\n  <div [ngClass]=\"rowHeight\">\n    <mat-list cdkDropList (cdkDropListDropped)=\"drop($event)\">\n      <mat-list-item *ngFor=\"let column of columns\" cdkDrag (click)=\"onClickColumn(column)\" [ngClass]=\"{'column-hidden':!column.visible}\"\n        class=\"o-drag-list-item-box\">\n        <div fxLayout=\"row\" fxFlex fxLayoutAlign=\"stretch center\">\n          <mat-icon matListItemIcon svgIcon=\"ontimize:drag_handle\"></mat-icon>\n          <span matListItemLine fxFlex>{{ (column.title || column.attr) | oTranslate }}</span>\n          <mat-icon *ngIf=\"column.visible\" svgIcon=\"ontimize:visibility\" color=\"primary\"></mat-icon>\n          <mat-icon *ngIf=\"!column.visible\" svgIcon=\"ontimize:visibility_off\"></mat-icon>\n        </div>\n        <mat-divider></mat-divider>\n      </mat-list-item>\n    </mat-list>\n  </div>\n</mat-dialog-content>\n\n<mat-dialog-actions fxLayoutAlign=\"end center\">\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"null\" class=\"o-button-default cancel\" cancel>{{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" mat-stroked-button (click)=\"closeDialog()\" class=\"o-button-primary\">{{ 'ACCEPT' | oTranslate }}</button>\n</mat-dialog-actions>\n","import { ChangeDetectionStrategy, Component, Inject, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { OGroupedColumnTypes } from '../../../../../types';\nimport { Util } from '../../../../../util/util';\nimport type { OColumn } from '../../../column/o-column.class';\nimport type { ODualListSelectorComponent } from '../../../../dual-list-selector/o-dual-list-selector.component';\n\n@Component({\n  selector: 'o-table-group-by-columns-dialog',\n  templateUrl: 'o-table-group-by-columns-dialog.component.html',\n  styleUrls: ['o-table-group-by-columns-dialog.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-table-group-by-column-dialog]': 'true'\n  }\n})\nexport class OTableGroupByColumnsDialogComponent {\n\n  public columns: Array<OColumn> = [];\n  public groupedColumns: Array<OColumn> = [];\n  public groupedColumnTypes: OGroupedColumnTypes[] = [];\n\n  @ViewChild('dualListSelector') dualListSelector: ODualListSelectorComponent;\n\n  constructor(\n    public dialogRef: MatDialogRef<OTableGroupByColumnsDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) data: any\n  ) {\n\n    if (Util.isArray(data.groupedColumns) && !Util.isArrayEmpty(data.groupedColumns)) {\n      this.groupedColumns = data.groupedColumns.map((attr: string) => {\n        const indexCol = data.columnsData.findIndex((col: OColumn) => col.attr === attr);\n        if (indexCol > -1) {\n          return data.columnsData[indexCol];\n        }\n      });\n    }\n\n    const self = this;\n    if (Util.isArray(data.columnsData)) {\n      this.columns = data.columnsData.filter((oCol: OColumn) => oCol.visible && oCol.groupable && self.groupedColumns.findIndex(x => x.attr === oCol.attr) === -1);\n\n    }\n    if (Util.isDefined(data.groupedColumnTypes)) {\n      this.groupedColumnTypes = data.groupedColumnTypes;\n    }\n  }\n\n  getGroupedColumns(): Array<string> {\n    return this.dualListSelector.getSelectedItems().map((oCol: OColumn) => oCol.attr);\n  }\n\n  getGroupedColumnTypes(): OGroupedColumnTypes[] {\n    return this.dualListSelector.getGroupedColumnTypes();\n  }\n}\n","<span mat-dialog-title>{{ 'TABLE.BUTTONS.GROUPBY' | oTranslate }}</span>\n\n<mat-dialog-content>\n  <o-dual-list-selector #dualListSelector [data-source]=\"columns\" [data-destination]=\"groupedColumns\" [grouped-column-types]=\"groupedColumnTypes\"\n    key=\"attr\" display=\"title\" title-list-data-source=\"TABLE_GROUP_BY_COLUMNS_DIALOG.ALL_COLUMNS\"\n    title-list-data-destination=\"TABLE_GROUP_BY_COLUMNS_DIALOG.GROUPED_COLUMNS\" description=\"TABLE_GROUP_BY_COLUMNS_DIALOG.DESCRIPTION\" fxFlexFill>\n  </o-dual-list-selector>\n</mat-dialog-content>\n\n<mat-dialog-actions fxLayoutAlign=\"end center\">\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n  <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"true\" class=\"o-button-primary\">{{ 'ACCEPT' | oTranslate }}</button>\n</mat-dialog-actions>\n","import { Directive, EventEmitter, Injector } from '@angular/core';\n\nimport { OTableExportButtonService } from './o-table-export-button.service';\n\nexport const DEFAULT_INPUTS_O_TABLE_EXPORT_BUTTON = [\n  'icon',\n  'svgIcon : svg-icon',\n  'olabel: label',\n  'exportType: export-type',\n  'exportFunction: export-function'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_EXPORT_BUTTON = [\n  'onClick'\n];\n\n@Directive({\n  selector: 'o-table-export-button',\n  inputs: DEFAULT_INPUTS_O_TABLE_EXPORT_BUTTON,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_EXPORT_BUTTON\n})\nexport class OTableExportButtonComponent {\n\n  public icon: string;\n  public svgIcon: string;\n  public olabel: string;\n\n  /**\n   * @deprecated This event is deprecated and will be removed in future versions.\n   * Please use `export-function` instead.\n   */\n\n  public onClick: EventEmitter<any> = new EventEmitter();\n  public exportFunction: () => void;\n  protected exportType: string;\n  protected oTableExportButtonService: OTableExportButtonService;\n\n  constructor(\n    private readonly injector: Injector\n  ) {\n    this.oTableExportButtonService = this.injector.get(OTableExportButtonService);\n  }\n\n\n}\n","import { OTablePaginator } from '../../../../../interfaces/o-table-paginator.interface';\nimport { Codes } from '../../../../../util/codes';\nimport { Util } from '../../../../../util/util';\n\nexport class OBaseTablePaginator implements OTablePaginator {\n\n  protected _pageIndex: number = 0;\n  protected _pageSize: number = 10;\n  protected _pageSizeOptions: number[] = Codes.PAGE_SIZE_OPTIONS;\n  showFirstLastButtons: boolean = true;\n\n  get pageLenght(): number {\n    return this._pageSize;\n  }\n\n  set pageLenght(value: number) {\n    this._pageSize = value;\n  }\n\n  get pageIndex(): number {\n    return this._pageIndex;\n  }\n\n  set pageIndex(value: number) {\n    this._pageIndex = value;\n  }\n\n  get pageSizeOptions(): number[] {\n    return this._pageSizeOptions;\n  }\n\n  set pageSizeOptions(value: number[]) {\n    if (typeof value === 'string') {\n      const opts = Util.parseArray(value, true);\n      value = opts.map(o => parseInt(o, 10)).filter(o => !isNaN(o));\n    }\n    this._pageSizeOptions = value;\n  }\n\n  get pageSize(): number {\n    return this._pageSize;\n  }\n\n  set pageSize(value: number) {\n    const parsedValue = parseInt(`${value}`, 10);\n    if (isNaN(parsedValue) || parsedValue < 0) {\n      this._pageSize = this._pageSizeOptions[0];\n    } else {\n      this._pageSize = parsedValue;\n    }\n    const result = this.pageSizeOptions.find(option => option === this._pageSize);\n    if (!result) {\n      this._pageSizeOptions.push(this._pageSize);\n      this._pageSizeOptions.sort((i: number, j: number) => i - j);\n    }\n  }\n\n  public isShowingAllRows(selectedLength): boolean {\n    // return this._pageSizeOptions.indexOf(selectedLength) === (this._pageSizeOptions.length - 1);\n    // temporal while not having an option for showing all records in paginated tables\n    return false;\n  }\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\n\nimport { OTranslateService } from '../../../../../services/translate/o-translate.service';\n\n@Injectable()\nexport class OTableMatPaginatorIntl extends MatPaginatorIntl {\n\n  itemsPerPageLabel;\n  nextPageLabel;\n  previousPageLabel;\n  translateService: OTranslateService;\n  protected onLanguageChangeSubscribe: any;\n\n  constructor(protected injector: Injector) {\n    super();\n    this.translateService = this.injector.get(OTranslateService);\n    this.itemsPerPageLabel = this.translateService.get('TABLE.PAGINATE.ITEMSPERPAGELABEL');\n    this.nextPageLabel = this.translateService.get('TABLE.PAGINATE.NEXT');\n    this.previousPageLabel = this.translateService.get('TABLE.PAGINATE.PREVIOUS');\n    this.firstPageLabel = this.translateService.get('TABLE.PAGINATE.FIRST');\n    this.lastPageLabel = this.translateService.get('TABLE.PAGINATE.LAST');\n    this.getRangeLabel = this.getORangeLabel;\n\n    this.onLanguageChangeSubscribe = this.translateService.onLanguageChanged.subscribe(res => {\n      this.itemsPerPageLabel = this.translateService.get('TABLE.PAGINATE.ITEMSPERPAGELABEL');\n      this.nextPageLabel = this.translateService.get('TABLE.PAGINATE.NEXT');\n      this.previousPageLabel = this.translateService.get('TABLE.PAGINATE.PREVIOUS');\n      this.firstPageLabel = this.translateService.get('TABLE.PAGINATE.FIRST');\n      this.lastPageLabel = this.translateService.get('TABLE.PAGINATE.LAST');\n      this.getRangeLabel = this.getORangeLabel;\n      this.changes.next();\n    });\n  }\n\n  getORangeLabel(page: number, pageSize: number, length: number): string {\n    if (!isNaN(pageSize) && (length === 0 || pageSize === 0)) {\n      return `0  ${this.translateService.get('TABLE.PAGINATE.RANGE_LABEL')} ${length}`;\n    }\n    length = Math.max(length, 0);\n    let startIndex = page * pageSize;\n    // If the start index exceeds the list length, do not try and fix the end index to the end.\n    let endIndex = startIndex < length ?\n      Math.min(startIndex + pageSize, length) :\n      startIndex + pageSize;\n\n    // option show all\n    if (isNaN(pageSize)) {\n      startIndex = 0;\n      endIndex = length;\n    }\n\n    return `${startIndex + 1} - ${endIndex}  ${this.translateService.get('TABLE.PAGINATE.RANGE_LABEL')} ${length}`;\n  }\n\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, Inject, Injector, OnInit } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { OTablePaginator } from '../../../../../interfaces/o-table-paginator.interface';\nimport { OTableComponent } from '../../../o-table.component';\nimport { OBaseTablePaginator } from './o-base-table-paginator.class';\n\nexport const DEFAULT_PAGINATOR_TABLE = [\n  // page-size [number]: Number of items to display on a page. By default set to 50.\n  'pageSize: page-size',\n  // pageSizeOptions [Array]: The set of provided page size options to display to the user.\n  'pageSizeOptions: page-size-options',\n  'showFirstLastButtons: show-first-last-buttons'\n];\n\n@Component({\n  selector: 'o-table-paginator',\n  template: ' ',\n  inputs: DEFAULT_PAGINATOR_TABLE,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OTablePaginatorComponent extends OBaseTablePaginator implements OTablePaginator, OnInit {\n\n  @BooleanInputConverter()\n  showFirstLastButtons: boolean = true;\n\n  constructor(\n    protected injector: Injector,\n    @Inject(forwardRef(() => OTableComponent)) protected table: OTableComponent\n  ) {\n    super();\n  }\n\n  ngOnInit() {\n    this.pageSize = this.table.queryRows;\n    this.pageIndex = this.table.currentPage;\n    this.showFirstLastButtons = this.table.showPaginatorFirstLastButtons;\n\n    this.table.registerPagination(this);\n  }\n\n  get pageIndex(): number {\n    return this._pageIndex;\n  }\n\n  set pageIndex(value: number) {\n    this._pageIndex = value;\n    if (this.table.matpaginator) {\n      this.table.matpaginator.pageIndex = this._pageIndex;\n    }\n  }\n\n  public isShowingAllRows(selectedLength: number): boolean {\n    // return this._pageSizeOptions.indexOf(selectedLength) === (this._pageSizeOptions.length - 1);\n    // temporal while not having an option for showing all records in paginated tables\n    return false;\n  }\n}\n","import { AfterViewInit, Directive, ElementRef, Injector, Input, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\n\nimport { OTranslateService } from '../../../../../services/translate/o-translate.service';\nimport { Util } from '../../../../../util/util';\nimport { OTableBase } from '../../../o-table-base.class';\n\n@Directive({\n  selector: '[oTableExpandedFooter]'\n})\nexport class OTableExpandedFooterDirective implements AfterViewInit {\n\n  private spanMessageNotResults: any;\n  private translateService: OTranslateService;\n  private tableBody: any;\n  private tdTableWithMessage: any;\n  private subscription = new Subscription();\n\n  /**\n   * Show/Hide message when the query is launched/callbacked\n   */\n  @Input('oTableExpandedFooter')\n  set display(val: boolean) {\n    this.showMessage(val);\n  }\n\n  @Input('oTableExpandedFooterColspan')\n  set colspan(value: number) {\n    this._colspan = value;\n    if (this.tdTableWithMessage) {\n      this.tdTableWithMessage.setAttribute('colspan', value);\n    }\n  }\n  get colspan(): number {\n    return this._colspan;\n  }\n  private _colspan: number;\n\n  constructor(\n    public table: OTableBase,\n    public element: ElementRef,\n    private renderer: Renderer2,\n    protected injector: Injector\n  ) {\n    this.translateService = this.injector.get(OTranslateService);\n  }\n\n  ngAfterViewInit() {\n    if (this.element.nativeElement.childNodes[2]) {\n      this.tableBody = this.element.nativeElement.childNodes[1];\n    }\n    this.registerContentChange();\n  }\n\n  registerContentChange() {\n    // Create a tr with a td and inside put the message and add to tbody\n    // <tr><td><span>{message}</span><td><tr>\n    const tr = this.renderer.createElement('tr');\n    this.tdTableWithMessage = this.renderer.createElement('td');\n    this.renderer.addClass(tr, 'o-table-no-results');\n    tr.appendChild(this.tdTableWithMessage);\n    this.renderer.appendChild(this.tableBody, tr);\n\n    /* Show/Hide message When the renderer data is changed with static data*/\n    this.subscription.add(this.table.onContentChange.pipe(\n      distinctUntilChanged((prev, curr) => prev.length === curr.length),\n      filter(() => !!this.table.staticData)\n    ).subscribe(() => this.showMessage(true)));\n\n    /*  Show/Hide message when the quickfilter is changed */\n    if (this.table.oTableQuickFilterComponent) {\n      this.subscription.add(this.table.oTableQuickFilterComponent.onChange.pipe().subscribe(() => this.showMessage(true)));\n    }\n  }\n\n  public showMessage(display: boolean): void {\n    // reset span message\n    this.removeMessageSpan();\n\n    if (display && this.table && this.table.dataSource && this.table.dataSource.renderedData.length === 0) {\n      // generate new message\n      this.createMessageSpan();\n    }\n  }\n\n\n  removeMessageSpan() {\n    if (this.spanMessageNotResults) {\n      this.renderer.removeChild(this.element.nativeElement, this.spanMessageNotResults);\n    }\n  }\n\n  destroy() {\n    this.subscription.unsubscribe();\n  }\n\n  protected buildMessage(): string {\n    let message = '';\n    message = this.translateService.get('TABLE.EMPTY');\n    if (this.tableHasQuickFilter() && this.table.oTableQuickFilterComponent.value) {\n      message += this.translateService.get('TABLE.EMPTY_USING_FILTER', [(this.table.oTableQuickFilterComponent.value)]);\n    }\n    return message;\n  }\n\n  protected tableHasQuickFilter(): boolean {\n    return this.table.quickFilter && Util.isDefined(this.table.oTableQuickFilterComponent);\n  }\n\n  protected createMessageSpan() {\n    // 1 Build message\n    const message = this.buildMessage();\n    // 2 Create message\n    this.spanMessageNotResults = this.renderer.createElement('span');\n    const messageNotResults = this.renderer.createText(message);\n    if (this.tdTableWithMessage) {\n      this.tdTableWithMessage.setAttribute('colspan', this.colspan);\n      this.renderer.appendChild(this.spanMessageNotResults, messageNotResults);\n      this.renderer.appendChild(this.tdTableWithMessage, this.spanMessageNotResults);\n    }\n  }\n\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, Inject, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { AggregateFunction } from '../../../../../types/aggregate-function.type';\nimport { OColumnAggregate } from '../../../../../types/table/o-column-aggregate.type';\nimport { OTableComponent } from '../../../o-table.component';\n\nexport const DEFAULT_TABLE_COLUMN_AGGREGATE = [\n  // attr [string]: column name.\n  'attr',\n\n  // title [string]: Title for the header total column\n  'title',\n\n  // aggregate [sum | count | avg | min |max]\n  'aggregate',\n\n  // function-aggregate [ (value: any[]) => number] Function that calculates a value on the values of the column 'attr'\n  'functionAggregate: function-aggregate'\n];\n\n@Component({\n  selector: 'o-table-column-aggregate',\n  templateUrl: './o-table-column-aggregate.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_TABLE_COLUMN_AGGREGATE\n})\nexport class OTableColumnAggregateComponent implements OnDestroy, OnInit {\n  public static DEFAULT_AGGREGATE = 'SUM';\n\n  public attr: string;\n  public aggregate: string;\n  public table: OTableComponent;\n  public title: string = '';\n  protected _aggregateFunction: AggregateFunction;\n\n  protected subscription: Subscription = new Subscription();\n\n  constructor(\n    @Inject(forwardRef(() => OTableComponent)) table: OTableComponent,\n    protected injector: Injector) {\n    this.table = table;\n  }\n\n  get functionAggregate(): AggregateFunction {\n    return this._aggregateFunction;\n  }\n\n  set functionAggregate(val: AggregateFunction) {\n    this._aggregateFunction = val;\n  }\n\n  getColumnData(attr) {\n    let columnData = [];\n    if (this.table.dataSource) {\n      columnData = this.table.dataSource.getColumnData(attr);\n    }\n    return columnData;\n  }\n\n  ngOnInit() {\n    if (!this.attr) {\n      return;\n    }\n\n    const ocolumnaggregate: OColumnAggregate = {};\n    ocolumnaggregate.attr = this.attr;\n    if (this.title) {\n      ocolumnaggregate.title = this.title;\n    }\n\n    ocolumnaggregate.operator = this.aggregate ? this.aggregate : (this.functionAggregate ? this.functionAggregate : OTableColumnAggregateComponent.DEFAULT_AGGREGATE);\n    this.table.registerColumnAggregate(ocolumnaggregate);\n\n    this.subscription.add(this.table.onReinitialize.subscribe(() => this.table.registerColumnAggregate(ocolumnaggregate)));\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n}\n"," <!--{{ functionAggregate(getColumnData(attr)) }}-->","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Inject, Injector, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { OTableButton } from '../../../../../interfaces/o-table-button.interface';\nimport { Codes } from '../../../../../util/codes';\nimport { Util } from '../../../../../util/util';\nimport { OTableBase } from '../../../o-table-base.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_BUTTON = [\n  'oattr: attr',\n  'enabled',\n  'icon',\n  'svgIcon: svg-icon',\n  'iconPosition: icon-position',\n  'olabel: label'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_BUTTON = [\n  'onClick'\n];\n\n@Component({\n  selector: 'o-table-button',\n  templateUrl: './o-table-button.component.html',\n  inputs: DEFAULT_INPUTS_O_TABLE_BUTTON,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_BUTTON,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-table-button]': 'true',\n    '[class.text]': 'table.showButtonsText',\n    '[class.no-text]': '!table.showButtonsText',\n  }\n})\nexport class OTableButtonComponent implements OTableButton, OnInit {\n\n  public onClick: EventEmitter<object> = new EventEmitter<object>();\n\n  public oattr: string;\n  @BooleanInputConverter()\n  public enabled: boolean = true;\n  public icon: string;\n  public svgIcon: string;\n  public olabel: string;\n  public iconPosition: string;\n\n  constructor(\n    protected injector: Injector,\n    public elRef: ElementRef,\n    @Inject(forwardRef(() => OTableBase)) protected _table: OTableBase\n  ) { }\n\n  public ngOnInit(): void {\n    if (!Util.isDefined(this.icon) && !Util.isDefined(this.svgIcon)) {\n      this.icon = 'priority_high';\n    }\n    this.iconPosition = Util.parseIconPosition(this.iconPosition);\n  }\n\n  public innerOnClick(event): void {\n    event.stopPropagation();\n    if (!this.isReadOnly()) {\n      this.onClick.emit();\n    } else if (this._table.showNotificationOfReadOnly) {\n        this.table.getSnackService().open('MESSAGES.OPERATION_NOT_ALLOWED_READONLY');\n\n    }\n  }\n\n  isReadOnly(): boolean {\n    return this._table.isComponentReadOnly('o-table-button', this.oattr)\n  }\n\n  public isIconPositionLeft(): boolean {\n    return this.iconPosition === Codes.ICON_POSITION_LEFT;\n  }\n\n  get table(): OTableBase {\n    return this._table;\n  }\n\n}\n","<ng-container *ngIf=\"table.showButtonsText\">\n  <button type=\"button\" [disabled]=\"!enabled\" [class.disabled]=\"!enabled\" mat-stroked-button (click)=\"innerOnClick($event)\">\n    <mat-icon *ngIf=\"isIconPositionLeft() && svgIcon !== undefined\" [svgIcon]=\"svgIcon\"></mat-icon>\n    <mat-icon *ngIf=\"isIconPositionLeft() && svgIcon === undefined\">{{ icon }}</mat-icon>\n    <span>{{ olabel | oTranslate }}</span>\n    <mat-icon *ngIf=\"!isIconPositionLeft() && svgIcon !== undefined\" [svgIcon]=\"svgIcon\"></mat-icon>\n    <mat-icon *ngIf=\"!isIconPositionLeft() && svgIcon === undefined\">{{ icon }}</mat-icon>\n  </button>\n</ng-container>\n\n<ng-container *ngIf=\"!table.showButtonsText\">\n  <button type=\"button\" [disabled]=\"!enabled\" [class.disabled]=\"!enabled\" mat-icon-button (click)=\"innerOnClick($event)\">\n    <mat-icon *ngIf=\"isIconPositionLeft() && svgIcon !== undefined\" [svgIcon]=\"svgIcon\"></mat-icon>\n    <mat-icon *ngIf=\"isIconPositionLeft() && svgIcon === undefined\">{{ icon }}</mat-icon>\n    <mat-icon *ngIf=\"!isIconPositionLeft() && svgIcon !== undefined\" [svgIcon]=\"svgIcon\"></mat-icon>\n    <mat-icon *ngIf=\"!isIconPositionLeft() && svgIcon === undefined\">{{ icon }}</mat-icon>\n  </button>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, forwardRef, Inject, Injector, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { OTableButtons } from '../../../../../interfaces/o-table-buttons.interface';\nimport { OPermissions } from '../../../../../types/o-permissions.type';\nimport { PermissionsUtils } from '../../../../../util/permissions';\nimport { OTableBase } from '../../../o-table-base.class';\nimport { OTableButtonComponent } from '../table-button/o-table-button.component';\n\nexport const DEFAULT_INPUTS_O_TABLE_BUTTONS = [\n  // insert-button [no|yes]: show insert button. Default: yes.\n  'insertButton: insert-button',\n  // refresh-button [no|yes]: show refresh button. Default: yes.\n  'refreshButton: refresh-button',\n  // delete-button [no|yes]: show delete button. Default: yes.\n  'deleteButton: delete-button'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_BUTTONS = [];\n\n@Component({\n  selector: 'o-table-buttons',\n  templateUrl: './o-table-buttons.component.html',\n  styleUrls: ['./o-table-buttons.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TABLE_BUTTONS,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_BUTTONS,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-table-buttons]': 'true',\n  }\n})\nexport class OTableButtonsComponent implements OTableButtons, OnInit, OnDestroy {\n\n  /* Inputs */\n  @BooleanInputConverter()\n  public insertButton: boolean = true;\n  @BooleanInputConverter()\n  public refreshButton: boolean = true;\n  @BooleanInputConverter()\n  public deleteButton: boolean = true;\n  /* End of inputs */\n\n  public enabledInsertButton: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n  public enabledRefreshButton: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n  public enabledDeleteButton: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  protected permissions: OPermissions[];\n  protected mutationObservers: MutationObserver[] = [];\n  protected subscription: Subscription;\n\n  constructor(\n    protected injector: Injector,\n    @Inject(forwardRef(() => OTableBase)) protected table: OTableBase\n  ) {\n    this.permissions = this.table.getActionsPermissions();\n  }\n\n  public ngOnInit(): void {\n    const insertPerm: OPermissions = this.getPermissionByAttr('insert');\n    const refreshPerm: OPermissions = this.getPermissionByAttr('refresh');\n    const deletePerm: OPermissions = this.getPermissionByAttr('delete');\n\n    if (this.insertButton && (insertPerm && insertPerm.enabled === false)) {\n      this.enabledInsertButton.next(false);\n    }\n    if (this.refreshButton && (refreshPerm && refreshPerm.enabled === false)) {\n      this.enabledRefreshButton.next(false);\n    }\n    this.subscription = this.table.selection.changed.subscribe(() =>\n      deletePerm ? this.enabledDeleteButton.next(deletePerm.enabled && !this.table.selection.isEmpty()) : this.enabledDeleteButton.next(!this.table.selection.isEmpty())\n    );\n    this.table.registerOTableButtons(this);\n  }\n\n  public ngOnDestroy(): void {\n    if (this.mutationObservers) {\n      this.mutationObservers.forEach((m: MutationObserver) => {\n        m.disconnect();\n      });\n    }\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n  }\n\n  public add(): void {\n    this.table.add();\n  }\n\n  public reloadData(): void {\n    this.table.reloadData();\n  }\n\n  public remove(): void {\n    this.table.remove();\n  }\n\n  public getPermissionByAttr(attr: string): OPermissions {\n    return this.permissions.find((perm: OPermissions) => perm.attr === attr);\n  }\n\n  public registerButtons(oTableButtons: OTableButtonComponent[]): void {\n    const fixedButtons = ['insert', 'refresh', 'delete'];\n    const userItems: OPermissions[] = this.permissions.filter((perm: OPermissions) => fixedButtons.indexOf(perm.attr) === -1);\n    const self = this;\n    userItems.forEach((perm: OPermissions) => {\n      const button = oTableButtons.find((oTableButton: OTableButtonComponent) => oTableButton.oattr === perm.attr);\n      self.setPermissionsToOTableButton(perm, button);\n    });\n  }\n\n  get showInsertOButton(): boolean {\n    if (!this.insertButton) {\n      return false;\n    }\n    const perm: OPermissions = this.getPermissionByAttr('insert');\n    return !(perm && perm.visible === false);\n  }\n\n  get showRefreshOButton(): boolean {\n    if (!this.refreshButton) {\n      return false;\n    }\n    const perm: OPermissions = this.getPermissionByAttr('refresh');\n    return !(perm && perm.visible === false);\n  }\n\n  get showDeleteOButton(): boolean {\n    if (!this.deleteButton) {\n      return false;\n    }\n    const perm: OPermissions = this.getPermissionByAttr('delete');\n    return !(perm && perm.visible === false);\n  }\n\n  protected setPermissionsToOTableButton(perm: OPermissions, button: OTableButtonComponent): void {\n    if (perm.visible === false && button) {\n      button.elRef.nativeElement.remove();\n    } else if (perm.enabled === false && button) {\n      button.enabled = false;\n      const buttonEL = button.elRef.nativeElement.querySelector('button');\n      const obs = PermissionsUtils.registerDisabledChangesInDom(buttonEL);\n      this.mutationObservers.push(obs);\n    }\n  }\n\n}\n","<div class=\"buttons\" fxLayout>\n  <o-table-button attr=\"add\" *ngIf=\"showInsertOButton\" [enabled]=\"enabledInsertButton | async\" label=\"TABLE.BUTTONS.ADD\"\n    svg-icon=\"ontimize:add\" (onClick)=\"add()\" class=\"o-table-button-add\"></o-table-button>\n  <o-table-button attr=\"refresh\" *ngIf=\"showRefreshOButton\" [enabled]=\"enabledRefreshButton | async\" label=\"TABLE.BUTTONS.REFRESH\"\n    svg-icon=\"ontimize:autorenew\" (onClick)=\"reloadData()\" class=\"o-table-button-refresh\">\n  </o-table-button>\n  <o-table-button attr=\"delete\" *ngIf=\"showDeleteOButton\" [enabled]=\"enabledDeleteButton | async\" label=\"TABLE.BUTTONS.DELETE\"\n    svg-icon=\"ontimize:delete\" (onClick)=\"remove()\" class=\"o-table-button-delete\"></o-table-button>\n  <ng-content></ng-content>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  forwardRef,\n  HostListener,\n  Inject,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewEncapsulation\n} from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { Util } from '../../../../../util/util';\nimport type { OColumn } from '../../../column/o-column.class';\nimport { OTableBase } from '../../../o-table-base.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_COLUMN_RESIZER = [\n  'column'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_COLUMN_RESIZER = [\n  // 'resizing',\n  // 'resized'\n];\n\n@Component({\n  selector: 'o-table-column-resizer',\n  inputs: DEFAULT_INPUTS_O_TABLE_COLUMN_RESIZER,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_COLUMN_RESIZER,\n  templateUrl: './o-table-column-resizer.component.html',\n  styleUrls: ['./o-table-column-resizer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-table-column-resizer]': 'true',\n    '[class.disabled]': 'isDisabled',\n  }\n})\nexport class OTableColumnResizerComponent implements OnInit, OnDestroy {\n\n  column: OColumn;\n  @BooleanInputConverter()\n  disabled: boolean = false;\n\n  // resizing = new EventEmitter<boolean>();\n  // resized = new EventEmitter<number>();\n  protected startWidth: any;\n  protected minWidth: any;\n  protected maxWidth: any;\n\n  protected startX: any;\n\n  protected headerEl: any;\n\n  protected nextOColumns: OColumn[];\n\n  protected dragListeners: Array<() => void> = [];\n  protected isResizing: boolean = false;\n  protected blockedMinCols = [];\n  protected blockedMaxCols = [];\n\n  protected columnsStartWidth = {};\n\n  constructor(\n    @Inject(forwardRef(() => OTableBase)) public table: OTableBase,\n    protected elRef: ElementRef,\n    protected ngZone: NgZone,\n    protected renderer: Renderer2\n  ) { }\n\n  ngOnInit(): void {\n    if (!this.isDisabled) {\n      this.headerEl = this.getHeaderEL();\n      if (this.headerEl) {\n        this.nextOColumns = this.getFollowingOColumns();\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.stopDragging();\n  }\n\n  onClick(event: MouseEvent) {\n    event.stopPropagation();\n    event.preventDefault();\n  }\n\n  get isDisabled(): boolean {\n    return this.column && !this.column.resizable;\n  }\n\n  @HostListener('mousedown', ['$event'])\n  @HostListener('touchstart', ['$event'])\n  onMousedown(e: MouseEvent | TouchEvent) {\n    if (!this.isDisabled) {\n      this.startResize(e);\n    }\n  }\n\n  @HostListener('document:mouseup')\n  @HostListener('document:touchend')\n  onMouseup() {\n    this.isResizing = false;\n    this.stopDragging();\n    // this.resize.emit(this.element.clientWidth);\n  }\n\n  protected stopDragging() {\n    this.isResizing = false;\n    this.columnsStartWidth = {};\n    while (this.dragListeners.length > 0) {\n      const fct = this.dragListeners.pop();\n      if (fct) {\n        fct();\n      }\n    }\n  }\n\n  startResize(startEvent: MouseEvent | TouchEvent): void {\n    startEvent.preventDefault();\n    startEvent.stopPropagation();\n    if (!Util.isDefined(this.headerEl)) {\n      return;\n    }\n    const DOMWidth = this.table.getClientWidthColumn(this.column);\n    this.startX = (startEvent instanceof MouseEvent) ? startEvent.screenX : startEvent.touches[0].screenX;\n    this.startWidth = DOMWidth;\n    this.minWidth = this.column.getMinWidthValue();\n    this.initializeWidthData();\n    this.ngZone.runOutsideAngular(() => {\n      this.dragListeners.push(this.renderer.listen('document', 'mouseup', () => this.stopDragging()));\n      this.dragListeners.push(this.renderer.listen('document', 'touchend', () => this.stopDragging()));\n    });\n\n    const moveEvent = (startEvent instanceof MouseEvent) ? 'mousemove' : 'touchmove';\n    this.ngZone.runOutsideAngular(() => {\n      this.dragListeners.push(this.renderer.listen('document', moveEvent, (e: MouseEvent | TouchEvent) => this.resizeEvent(e)));\n    });\n    this.isResizing = true;\n  }\n\n  protected resizeEvent(event: MouseEvent | TouchEvent): void {\n    if (!this.isResizing) {\n      return;\n    }\n    const movementX = (event instanceof MouseEvent) ? (event.screenX - this.startX) : (event.touches[0].screenX - this.startX);\n    if (movementX === 0) {\n      return;\n    }\n    const newColumnWidth = this.startWidth + movementX;\n\n    const lessThanMin = newColumnWidth < this.minWidth;\n    const moreThanMax = newColumnWidth > this.maxWidth;\n    if (lessThanMin || moreThanMax) {\n      return;\n    }\n    if (!this.table.horizontalScroll) {\n      this.calculateNewColumnsWidth(movementX, newColumnWidth);\n      this.updateBlockedCols();\n    } else {\n      this.column.setWidth(newColumnWidth);\n    }\n    this.table.cd.detectChanges();\n  }\n\n  protected getHeaderEL(): Node {\n    let element;\n    let currentEl: Node = this.elRef.nativeElement.parentElement;\n    while (!element && currentEl) {\n      if (currentEl.nodeName === 'TH') {\n        element = currentEl;\n      } else {\n        currentEl = currentEl.parentElement;\n      }\n    }\n    return currentEl;\n  }\n\n  protected getFollowingOColumns(): OColumn[] {\n    const result: OColumn[] = [];\n    let nextTh: any = this.headerEl.nextSibling;\n    const self = this;\n    while (nextTh) {\n      const oCol: OColumn = self.table.getOColumnFromTh(nextTh);\n      if (Util.isDefined(oCol)) {\n        result.push(oCol);\n      }\n      nextTh = nextTh.nextSibling;\n    }\n    return result;\n  }\n\n  protected updateBlockedCols() {\n    const self = this;\n    this.blockedMinCols = [];\n    this.blockedMaxCols = [];\n    const columns = [this.column, ...this.nextOColumns];\n    columns.forEach(oCol => {\n      const DOMWidth = this.table.getClientWidthColumn(oCol);\n      if (DOMWidth <= oCol.getMinWidthValue()) {\n        self.blockedMinCols.push(oCol.attr);\n      }\n      const maxW = oCol.getMaxWidthValue();\n      if (Util.isDefined(maxW) && DOMWidth >= maxW) {\n        self.blockedMaxCols.push(oCol.attr);\n      }\n    });\n  }\n\n  protected calculateNewColumnsWidth(movementX: number, newColumnWidth: number) {\n    const positive = (movementX > 0);\n    if (positive) {\n      this.calculateUsingNextColumnsRestrictions(movementX, newColumnWidth);\n    } else {\n      this.calculateUsingOwnColumnRestriction(movementX, newColumnWidth);\n    }\n  }\n\n  protected calculateUsingNextColumnsRestrictions(movementX: number, newColumnWidth: number) {\n    const availableCols = this.nextOColumns.length - this.blockedMinCols.length;\n    if (availableCols <= 0) {\n      return;\n    }\n    const widthRatio = movementX / availableCols;\n    const cols = this.nextOColumns.filter((oCol: OColumn) => this.blockedMinCols.indexOf(oCol.attr) === -1);\n    cols.forEach(oCol => {\n      let newWidth = (this.columnsStartWidth[oCol.attr] - widthRatio);\n      const minWidth = oCol.getMinWidthValue();\n      if (newWidth <= minWidth) {\n        newWidth = minWidth;\n        this.blockedMinCols.push(oCol.attr);\n      }\n      oCol.setWidth(newWidth);\n    });\n    this.column.setWidth(newColumnWidth);\n  }\n\n  protected calculateUsingOwnColumnRestriction(movementX: number, newColumnWidth: number) {\n    let widthRatio = Math.abs(movementX) / this.nextOColumns.length;\n    let widthDifference = 0;\n    if (widthRatio > 0 && this.blockedMaxCols.length < this.nextOColumns.length) {\n      const cols = this.nextOColumns.filter((oCol: OColumn) => this.blockedMaxCols.indexOf(oCol.attr) === -1);\n      cols.forEach(oCol => {\n        let newWidthValue = (this.columnsStartWidth[oCol.attr] + widthRatio);\n        const maxWidth = oCol.getMaxWidthValue();\n        if (maxWidth && newWidthValue > maxWidth) {\n          const diff = newWidthValue - maxWidth;\n          newWidthValue = maxWidth;\n          this.blockedMaxCols.push(oCol.attr);\n          const notBlocked = this.nextOColumns.length - this.blockedMaxCols.length;\n          widthRatio += notBlocked > 0 ? Math.floor(diff / notBlocked) : 0;\n        }\n        const DOMWidth = this.table.getClientWidthColumn(oCol);\n        widthDifference += newWidthValue - DOMWidth;\n        oCol.setWidth(newWidthValue);\n      });\n    }\n    const newWidth = Math.min(this.startWidth - widthDifference, newColumnWidth);\n    this.column.setWidth(newWidth);\n  }\n\n  protected initializeWidthData() {\n    let maxWidth = this.column.getMaxWidthValue();\n    let nextColMinWidthAcum = 0;\n    let nextColWidthAcum = 0;\n    this.nextOColumns.forEach((col: OColumn) => {\n      nextColMinWidthAcum += col.getMinWidthValue();\n      const DOMWidth = this.table.getClientWidthColumn(col);\n      nextColWidthAcum += DOMWidth;\n      this.columnsStartWidth[col.attr] = DOMWidth;\n    });\n    const calcMaxWidth = this.headerEl.clientWidth + (nextColWidthAcum - nextColMinWidthAcum);\n    if (Util.isDefined(maxWidth)) {\n      maxWidth = Math.min(maxWidth, calcMaxWidth);\n    } else {\n      maxWidth = calcMaxWidth;\n    }\n    this.maxWidth = maxWidth;\n  }\n\n}\n","<span class=\"resizer\" (click)=\"onClick($event)\"></span>","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n\nexport type OFilterColumn = {\n  attr: string;\n  sort: 'asc' | 'desc' | '';\n  startView: 'month' | 'year' | 'multi-year' | '';\n  queryMethod?: string;\n  filterValuesInData?: 'current-page' | 'all-data';\n};\n\nexport const DEFAULT_INPUTS_O_TABLE_COLUMN_FILTER_COLUMN = [\n  // attr [string]: column name.\n  'attr',\n  // sort [asc|desc]: initial sorting, with the format column:[ASC|DESC].\n  'sort',\n  // startView [month|year|multi-year]: Datepicker initial view in case of date column.\n  'startView:start-view',\n  'queryMethod:query-method',\n  //filter-values-in-data:  'current-page' | 'all-data': set mode to filter by. Default 'current-page'\n  'filterValuesInData: filter-values-in-data'\n];\n\n@Component({\n  selector: 'o-table-columns-filter-column',\n  template: ' ',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_COLUMN_FILTER_COLUMN\n})\n\nexport class OTableColumnsFilterColumnComponent {\n\n  public attr: string = '';\n  public sort: 'asc' | 'desc' | '' = '';\n  public startView: 'month' | 'year' | 'multi-year' | '' = 'month';\n  public queryMethod: string;\n  public filterValuesInData: 'current-page' | 'all-data';\n\n}\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, forwardRef, Inject, Injector, Input, OnInit, QueryList } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { Codes } from '../../../../../util/codes';\nimport { Util } from '../../../../../util/util';\nimport type { OColumn } from '../../../column/o-column.class';\nimport { OTableComponent } from '../../../o-table.component';\nimport { OFilterColumn, OTableColumnsFilterColumnComponent } from './columns/o-table-columns-filter-column.component';\n\nexport const DEFAULT_INPUTS_O_TABLE_COLUMN_FILTER = [\n  // columns [string]: columns that might be filtered, separated by ';'. Default: all visible columns.\n  'columns',\n  // preloadValues [true|false|yes|no]: indicates whether or not to show the list values when the filter dialog is opened. Default: true.\n  'preloadValues: preload-values',\n  // mode [default | selection |  custom]\n  'mode',\n  //filter-values-in-data: 'current-page' | 'all-data': set mode to filter by. Default 'current-page'\n  'filterValuesInData: filter-values-in-data'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_COLUMN_FILTER = [\n];\n\n@Component({\n  selector: 'o-table-columns-filter',\n  template: ' ',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_COLUMN_FILTER,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_COLUMN_FILTER\n})\n\nexport class OTableColumnsFilterComponent implements OnInit, AfterContentInit {\n\n  public static DEFAULT_COMPARISON_TYPE = 'VIEW';\n  public static MODEL_COMPARISON_TYPE = 'MODEL';\n  public static OTableColumnsFilterModes = ['default', 'selection', 'custom'];\n\n  protected _columns: string;\n  protected _mode: string = 'default';\n  @BooleanInputConverter()\n  preloadValues: boolean = true;\n  filterValuesInData: 'current-page' | 'all-data';\n\n  get mode(): string {\n    return this._mode;\n  }\n\n  @Input()\n  set mode(val: string) {\n    const m = OTableColumnsFilterComponent.OTableColumnsFilterModes.find(e => e === val);\n    if (Util.isDefined(m)) {\n      this._mode = m;\n    } else {\n      console.error('Invalid `o-table-columns-filter` mode (' + val + ')');\n    }\n  }\n\n  protected _columnsArray: Array<OFilterColumn> = [];\n  protected columnsComparisonProperty: object = {};\n\n  @ContentChildren(OTableColumnsFilterColumnComponent, { descendants: true }) filterColumns: QueryList<OTableColumnsFilterColumnComponent>;\n\n  constructor(\n    protected injector: Injector,\n    @Inject(forwardRef(() => OTableComponent)) protected table: OTableComponent\n  ) { }\n\n  ngOnInit() {\n    if (this.columnsArray.length === 0) {\n      this.columnsArray = this.table.oTableOptions.visibleColumns;\n    }\n    const self = this;\n    let columns = Util.parseArray(this._columns, true);\n\n    columns.forEach((colData, i, arr) => {\n      const colDef = colData.split(Codes.TYPE_SEPARATOR);\n      const colName = colDef[0];\n      let compType = (colDef[1] || '').toUpperCase();\n      if ([OTableColumnsFilterComponent.DEFAULT_COMPARISON_TYPE, OTableColumnsFilterComponent.MODEL_COMPARISON_TYPE].indexOf(compType) === -1) {\n        compType = OTableColumnsFilterComponent.DEFAULT_COMPARISON_TYPE;\n      }\n      arr[i] = colName;\n      self.columnsComparisonProperty[colName] = compType;\n    });\n\n    this.table.setOTableColumnsFilter(this);\n\n    this.filterValuesInData = this.filterValuesInData ?? this.getFilterValuesInDataByDefault();\n  }\n\n  private getFilterValuesInDataByDefault() {\n    return this.table.pageable ? 'current-page' : 'all-data';\n  }\n\n  ngAfterContentInit() {\n    if (Util.isDefined(this.filterColumns)) {\n      this.columnsArray = this.columnsArray.concat(this.parseFilterColumns(this.filterColumns));\n    }\n  }\n\n  isColumnFilterable(attr: string): boolean {\n    return Util.isDefined(this.columnsArray.find(x => x.attr === attr));\n  }\n\n  getSortValueOfFilterColumn(attr: string): string {\n    let sortValue = '';\n    if (Util.isDefined(this.columnsArray)) {\n      this.columnsArray.forEach(column => {\n        if (column.attr == attr) {\n          sortValue = column.sort;\n        }\n      });\n    }\n    return sortValue;\n  }\n\n  getStartViewValueOfFilterColumn(attr: string): string {\n    let startView = '';\n    if (Util.isDefined(this.columnsArray)) {\n      this.columnsArray.forEach(column => {\n        if (column.attr == attr) {\n          startView = column.startView;\n        }\n      });\n    }\n    return startView;\n  }\n\n  getQueryMethodOfFilterColumn(attr: string): string {\n    let queryMethod = '';\n    if (Util.isDefined(this.columnsArray)) {\n      this.columnsArray.forEach(column => {\n        if (column.attr == attr) {\n          queryMethod = column.queryMethod;\n        }\n      });\n    }\n    return queryMethod;\n  }\n\n  getFilterValuesInData(attr: string): string {\n    let filterValuesInData = '';\n    if (Util.isDefined(this.columnsArray)) {\n      this.columnsArray.forEach(column => {\n        if (column.attr == attr) {\n          filterValuesInData = column.filterValuesInData;\n        }\n      });\n    }\n    return filterValuesInData;\n  }\n\n  getColumnComparisonValue(column: OColumn, val: any): any {\n    if (!column || this.columnsComparisonProperty[column.attr] === OTableColumnsFilterComponent.MODEL_COMPARISON_TYPE) {\n      return val;\n    } else {\n      return column.renderer ? column.renderer.getCellData(val) : val;\n    }\n  }\n\n  set columns(arg: string) {\n    this._columns = arg;\n    this._columnsArray = this.parseColumns(this._columns);\n  }\n\n  set columnsArray(arg: OFilterColumn[]) {\n    this._columnsArray = arg;\n  }\n\n  get columnsArray(): OFilterColumn[] {\n    return this._columnsArray;\n  }\n\n  parseColumns(columns: string) {\n    return columns.split(';')\n      .map(x => {\n        let obj: OFilterColumn = { attr: '', sort: '', startView: '' };\n        obj.attr = x;\n        obj.sort = '';\n        obj.startView = '';\n        return obj;\n      });\n  }\n\n  parseFilterColumns(columns: QueryList<OTableColumnsFilterColumnComponent>) {\n    return columns\n      .map(x => {\n        let obj: OFilterColumn = { attr: '', sort: '', startView: '', queryMethod: void 0 };\n        obj.attr = x.attr;\n        obj.sort = x.sort;\n        obj.startView = x.startView;\n        obj.queryMethod = x.queryMethod;\n        obj.filterValuesInData = (x.filterValuesInData || this.filterValuesInData) ?? this.getFilterValuesInDataByDefault();\n        return obj;\n      });\n  }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Inject, Injector, OnInit } from '@angular/core';\nimport { UntypedFormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { SnackBarService } from '../../../../../services/snackbar.service';\nimport { OTranslateService } from '../../../../../services/translate/o-translate.service';\nimport { OPermissions } from '../../../../../types/o-permissions.type';\nimport { Observable, ObservableWrapper } from '../../../../../util/async';\nimport { Util } from '../../../../../util/util';\nimport { OBaseTableCellEditor } from '../../../column/cell-editor/o-base-table-cell-editor.class';\nimport type { OColumn } from '../../../column/o-column.class';\nimport { OTableComponent } from '../../../o-table.component';\n\nexport const DEFAULT_INPUTS_O_TABLE_INSERTABLE_ROW = [\n  // columns [string]: columns that can be inserted, separated by ';'. Default: all visible columns.\n  'columns',\n  'requiredColumns : required-columns',\n  // position [first |last ] default: last\n  'position',\n  'showPlaceHolder: show-placeholder',\n  'includeParentKeys: include-parent-keys'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_INSERTABLE_ROW = [\n  'onPostInsertRecord'\n];\n\n@Component({\n  selector: 'o-table-insertable-row',\n  template: ' ',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_INSERTABLE_ROW,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_INSERTABLE_ROW\n})\n\nexport class OTableInsertableRowComponent implements OnInit {\n\n  public static AVAILABLE_ROW_POSITIONS = ['first', 'last'];\n  public static DEFAULT_ROW_POSITION = 'last';\n\n  protected columns: string;\n  protected columnsArray: Array<string> = [];\n\n  protected requiredColumns: string;\n  protected requiredColumnsArray: Array<string> = [];\n\n  onPostInsertRecord: EventEmitter<any> = new EventEmitter();\n  columnEditors: any = {};\n  trWrapper: EventTarget;\n\n  protected position: string = OTableInsertableRowComponent.DEFAULT_ROW_POSITION;\n\n  @BooleanInputConverter()\n  showPlaceHolder: boolean = false;\n  @BooleanInputConverter()\n  includeParentKeys: boolean = true;\n\n  enabled = true;\n  rowData = {};\n  protected controls: any = {};\n  translateService: OTranslateService;\n  snackBarService: SnackBarService;\n\n  constructor(\n    protected injector: Injector,\n    @Inject(forwardRef(() => OTableComponent)) protected table: OTableComponent\n  ) {\n    this.translateService = this.injector.get(OTranslateService);\n    this.snackBarService = this.injector.get(SnackBarService);\n  }\n\n  ngOnInit() {\n    this.columnsArray = Util.parseArray(this.columns, true);\n    if (this.columnsArray.length === 0) {\n      this.columnsArray = this.table.oTableOptions.visibleColumns;\n    }\n    this.requiredColumnsArray = Util.parseArray(this.requiredColumns, true);\n    if (OTableInsertableRowComponent.AVAILABLE_ROW_POSITIONS.indexOf((this.position || '').toLowerCase()) === -1) {\n      this.position = OTableInsertableRowComponent.DEFAULT_ROW_POSITION;\n    }\n    this.table.setOTableInsertableRow(this);\n  }\n\n  isFirstRow(): boolean {\n    return this.position === 'first';\n  }\n\n  isColumnInsertable(column: OColumn): boolean {\n    return (this.columnsArray.indexOf(column.attr) !== -1);\n  }\n\n  isColumnRequired(column: OColumn): boolean {\n    return (this.requiredColumnsArray.indexOf(column.attr) !== -1);\n  }\n\n  initializeEditors(): void {\n    this.table.oTableOptions.columns\n      .filter((col) => this.isColumnInsertable(col)).forEach(col => {\n        const columnEditorType = col.editor ? col.editor.type : col.type;\n        if (col.definition) {\n          const editor: OBaseTableCellEditor = col.definition.buildCellEditor(columnEditorType, col.definition.container, col.definition, false);\n          this.columnEditors[col.attr] = editor;\n          let disabledCol = !this.enabled;\n          if (!disabledCol) {\n            const columnPermissions: OPermissions = this.table.getOColumnPermissions(col.attr);\n            disabledCol = columnPermissions.enabled === false;\n          }\n          editor.enabled = !disabledCol;\n          editor.showPlaceHolder = this.showPlaceHolder || editor.showPlaceHolder;\n          editor.table = this.table;\n          editor.tableColumn = col.editor ? col.editor.tableColumn : col.definition;\n          editor.orequired = this.isColumnRequired(col);\n          editor.formControl = this.getControl(col, disabledCol);\n          editor.formGroup.addControl(editor.cellEditorId, editor.formControl);\n          editor.controlArgs = { silent: true };\n          editor.rowData = this.rowData;\n          editor.startEdition(this.rowData);\n          editor.formControl.markAsUntouched();\n        }\n      })\n  }\n\n  useCellEditor(column: OColumn): boolean {\n    return this.isColumnInsertable(column) && Util.isDefined(this.columnEditors[column.attr]);\n  }\n\n  getControl(column: OColumn, disabled: boolean = false): UntypedFormControl {\n    if (!this.controls[column.attr]) {\n      const validators: ValidatorFn[] = this.resolveValidators(column);\n      const cfg = {\n        value: undefined,\n        disabled: disabled\n      };\n      this.controls[column.attr] = new UntypedFormControl(cfg, validators);\n    }\n    return this.controls[column.attr];\n  }\n\n  resolveValidators(column: OColumn): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    if (column.definition && column.definition.angularValidatorsFn) {\n      column.definition.angularValidatorsFn.forEach((fn: ValidatorFn) => {\n        validators.push(fn);\n      });\n    }\n    if (this.isColumnRequired(column)) {\n      validators.push(Validators.required);\n    }\n    return validators;\n  }\n\n  getPlaceholder(column: OColumn): string {\n    let showPlaceHolder = this.showPlaceHolder;\n    const cellEditor = this.columnEditors[column.attr];\n    if (cellEditor) {\n      showPlaceHolder = cellEditor.showPlaceHolder;\n    } else if (column.definition) {\n      showPlaceHolder = showPlaceHolder || column.definition.showPlaceHolder;\n    }\n    return showPlaceHolder ? this.translateService.get(column.title) : undefined;\n  }\n\n  handleKeyboardEvent(event: KeyboardEvent) {\n    if (event.keyCode !== 13) {\n      // not intro\n      return;\n    }\n    this.trWrapper = event.currentTarget;\n\n    event.preventDefault();\n    event.stopPropagation();\n    this.insertRecord();\n  }\n\n  insertRecord() {\n    if (!this.validateFields()) {\n      // this.table.showDialogError('TABLE.ROW_VALIDATION_ERROR');\n      return;\n    }\n    const values = this.getAttributesValuesToInsert();\n    const insertObservable: Observable<any> = this.table.insertRecord(values);\n    if (insertObservable) {\n      insertObservable.subscribe(res => {\n        this.onInsertSuccess(res);\n      }, error => {\n        this.table.showDialogError(error, 'MESSAGES.ERROR_INSERT');\n      });\n    }\n  }\n\n  protected validateFields(): boolean {\n    let valid = true;\n    // columns with no editor defined\n    Object.keys(this.controls).forEach((controlKey) => {\n      const control = this.controls[controlKey];\n      control.markAsTouched();\n      valid = valid && control.valid;\n    });\n    return valid;\n  }\n\n  protected getAttributesValuesToInsert(): object {\n    let attrValues = {};\n    if (this.includeParentKeys) {\n      attrValues = this.table.getParentKeysValues();\n    }\n    Object.keys(this.controls).forEach((controlKey) => {\n      attrValues[controlKey] = this.controls[controlKey].value;\n    });\n    return attrValues;\n  }\n\n  protected onInsertSuccess(res: any) {\n    ObservableWrapper.callEmit(this.onPostInsertRecord, res);\n    this.snackBarService.open('MESSAGES.INSERTED', { icon: 'check_circle' });\n    this.cleanFields();\n\n    if (this.table.daoTable.usingStaticData) {\n      this.table.setDataArray(res);\n    } else {\n      this.table.reloadData();\n    }\n  }\n\n  protected cleanFields() {\n    // columns with no editor defined\n    const controlKeys = Object.keys(this.controls);\n    controlKeys.forEach((controlKey) => {\n      this.controls[controlKey].setValue(void 0);\n    });\n    const firstInputEl = (this.trWrapper as any).querySelector('input');\n    if (firstInputEl) {\n      setTimeout(() => {\n        firstInputEl.focus();\n      });\n    }\n  }\n\n  columnHasError(column: OColumn, error: string): boolean {\n    const control = this.controls[column.attr];\n    return control && control.touched && control.hasError(error);\n  }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Injector, Type, ViewEncapsulation } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\n\nexport const DEFAULT_INPUTS_O_TABLE_OPTION = [\n  'oattr: attr',\n  'enabled',\n  'icon',\n  //show-checkbox-option [string][yes|no|true|false]: show checkbox option. Default :no.\n  'showCheckboxOption : show-checkbox-option',\n  'olabel: label',\n  'active'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_OPTION = [\n  'onClick'\n];\n\n@Component({\n  selector: 'o-table-option',\n  templateUrl: './o-table-option.component.html',\n  styleUrls: ['./o-table-option.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TABLE_OPTION,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_OPTION,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-table-option]': 'true',\n  }\n})\n\nexport class OTableOptionComponent {\n\n  public static O_TABLE_OPTION_ACTIVE_CLASS = 'o-table-option-active';\n\n  onClick: EventEmitter<object> = new EventEmitter<object>();\n\n  oattr: string;\n  @BooleanInputConverter()\n  enabled: boolean = true;\n  icon: string;\n  olabel: string;\n  @BooleanInputConverter()\n  showCheckboxOption: boolean = false;\n  @BooleanInputConverter()\n  active: boolean = false;\n\n  cd: ChangeDetectorRef;\n\n  constructor(\n    protected injector: Injector,\n    public elRef: ElementRef\n  ) {\n    try {\n      this.cd = this.injector.get<ChangeDetectorRef>(ChangeDetectorRef as Type<ChangeDetectorRef>);\n    } catch (e) {\n    }\n  }\n\n  innerOnClick() {\n    this.onClick.emit();\n    this.setActive(!this.active);\n  }\n\n  get activeCheckboxOption() {\n    return this.showCheckboxOption && this.active;\n  }\n\n  setActive(val: boolean) {\n    this.active = val;\n    this.cd.detectChanges();\n  }\n\n}\n","<ng-container *ngIf=\"showCheckboxOption; then checkboxTemplate; else buttonTemplate\"></ng-container>\n\n<ng-template #checkboxTemplate>\n  <span mat-menu-item>\n    <mat-checkbox [disabled]=\"!enabled\" [ngModel]=\"activeCheckboxOption\" (change)=\"innerOnClick()\" disableRipple=\"true\"> \n      {{ olabel | oTranslate }}\n      <mat-icon *ngIf=\"icon\"> {{ icon }}</mat-icon>\n    </mat-checkbox>\n  </span>\n</ng-template>\n\n<ng-template #buttonTemplate>\n  <button [disabled]=\"!enabled\" type=\"button\" (click)=\"innerOnClick()\" mat-menu-item fxLayout=\"row\"\n    fxLayoutAlign=\"start center\">\n    {{ olabel | oTranslate }}\n    <mat-icon *ngIf=\"icon\"> {{ icon }}</mat-icon>\n  </button>\n</ng-template>","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Injector,\n  OnDestroy,\n  OnInit,\n  Optional,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatMenu } from '@angular/material/menu';\nimport { Observable } from 'rxjs';\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { IChartOnDemandService } from '../../../../../interfaces/chart-on-demand.interface';\nimport type { OTableMenu } from '../../../../../interfaces/o-table-menu.interface';\nimport { IReportService } from '../../../../../interfaces/report-on-demand-service.interface';\nimport { DialogService } from '../../../../../services/dialog.service';\nimport { O_CHART_ON_DEMAND_SERVICE, O_REPORT_SERVICE } from '../../../../../services/factories';\nimport { OntimizeExportDataProviderService } from '../../../../../services/ontimize-export-data-provider.service';\nimport { SnackBarService } from '../../../../../services/snackbar.service';\nimport { OTranslateService } from '../../../../../services/translate/o-translate.service';\nimport { OLoadFilterDialogComponent } from '../../../../../shared/components/filter/load-filter/o-load-filter-dialog.component';\nimport { OStoreFilterDialogComponent } from '../../../../../shared/components/filter/store-filter/o-store-filter-dialog.component';\nimport type { OPermissions } from '../../../../../types/o-permissions.type';\nimport type { OTableMenuPermissions } from '../../../../../types/table/o-table-menu-permissions.type';\nimport { PermissionsUtils } from '../../../../../util/permissions';\nimport { Util } from '../../../../../util/util';\nimport type { OColumn } from '../../../column/o-column.class';\nimport { OTableBase } from '../../../o-table-base.class';\nimport { OTableApplyConfigurationDialogComponent } from '../../dialog/apply-configuration/o-table-apply-configuration-dialog.component';\nimport { OTableExportDialogComponent } from '../../dialog/export/o-table-export-dialog.component';\nimport { OTableStoreConfigurationDialogComponent } from '../../dialog/store-configuration/o-table-store-configuration-dialog.component';\nimport { OTableVisibleColumnsDialogComponent } from '../../dialog/visible-columns/o-table-visible-columns-dialog.component';\nimport { OTableOptionComponent } from '../table-option/o-table-option.component';\nimport { OTableGroupByColumnsDialogComponent } from '../../dialog/group-by-columns/o-table-group-by-columns-dialog.component';\n\n\nexport const DEFAULT_INPUTS_O_TABLE_MENU = [\n  // select-all-checkbox [yes|no|true|false]: show selection check boxes. Default: no.\n  'selectAllCheckbox: select-all-checkbox',\n\n  // export-button [no|yes]: show export button. Default: yes.\n  'exportButton: export-button',\n\n  // columns-visibility-button [no|yes]: show columns visibility button. Default: yes.\n  'columnsVisibilityButton: columns-visibility-button',\n\n  // show-configuration-option [yes|no|true|false]: show configuration button in header. Default: yes.\n  'showConfigurationOption: show-configuration-option',\n\n  // show-filter-option [yes|no|true|false]: show filter menu option in the header menu\n  'showFilterOption: show-filter-option',\n\n  // show-group-by-option [yes|no|true|false]: show group by menu option in the header menu\n  'showGroupByOption: show-group-by-option',\n\n  // show-reset-width-option [yes|no|true|false]: show reset width menu option in the header menu\n  'showResetWidthOption: show-reset-width-option',\n\n  // show-report-on-demand-option [yes|no|true|false]: show report on demand option in the header menu\n  'showReportOnDemandOption: show-report-on-demand-option',\n\n  // show-charts-on-demand-option [yes|no|true|false]: show charts on demand option in the header menu\n  'showChartsOnDemandOption: show-charts-on-demand-option'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_MENU = [];\n\n@Component({\n  selector: 'o-table-menu',\n  templateUrl: './o-table-menu.component.html',\n  styleUrls: ['./o-table-menu.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TABLE_MENU,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_MENU,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-table-menu]': 'true'\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OTableMenuComponent implements OTableMenu, OnInit, AfterViewInit, OnDestroy {\n\n  /* Inputs */\n  @BooleanInputConverter()\n  selectAllCheckbox: boolean = false;\n  @BooleanInputConverter()\n  exportButton: boolean = true;\n  @BooleanInputConverter()\n  showConfigurationOption: boolean = true;\n  @BooleanInputConverter()\n  showFilterOption: boolean = true;\n  @BooleanInputConverter()\n  columnsVisibilityButton: boolean = true;\n  @BooleanInputConverter()\n  showGroupByOption: boolean = true;\n  @BooleanInputConverter()\n  showResetWidthOption: boolean = true;\n  @BooleanInputConverter()\n  showReportOnDemandOption: boolean = true;\n  @BooleanInputConverter()\n  showChartsOnDemandOption: boolean = true;\n\n\n  public onVisibleFilterOptionChange: EventEmitter<any> = new EventEmitter();\n  /* End of inputs */\n\n  protected dialogService: DialogService;\n  protected translateService: OTranslateService;\n  protected snackBarService: SnackBarService;\n\n  @ViewChild('menu', { static: true })\n  matMenu: MatMenu;\n  @ViewChild('selectAllCheckboxOption')\n  selectAllCheckboxOption: OTableOptionComponent;\n  @ViewChild('exportButtonOption')\n  exportButtonOption: OTableOptionComponent;\n  @ViewChild('columnsVisibilityButtonOption')\n  columnsVisibilityButtonOption: OTableOptionComponent;\n  @ViewChild('filterMenuButton', { read: ElementRef })\n  filterMenuButton: ElementRef;\n  @ViewChild('configurationMenuButton', { read: ElementRef })\n  configurationMenuButton: ElementRef;\n\n  @ViewChild('filterMenu')\n  filterMenu: MatMenu;\n  @ViewChild('configurationMenu')\n  configurationMenu: MatMenu;\n  @ViewChild('columnFilterOption')\n  columnFilterOption: OTableOptionComponent;\n  @ViewChild('chartMenu', { static: true })\n  chartMenu: MatMenu;\n\n  protected permissions: OTableMenuPermissions;\n  protected mutationObservers: MutationObserver[] = [];\n  protected exportDataProvider: OntimizeExportDataProviderService;\n\n\n  constructor(\n    protected injector: Injector,\n    protected dialog: MatDialog,\n    protected cd: ChangeDetectorRef,\n    @Inject(forwardRef(() => OTableBase)) protected table: OTableBase,\n\n    @Optional() @Inject(O_CHART_ON_DEMAND_SERVICE) public chartOnDemandService: IChartOnDemandService,\n\n    @Optional() @Inject(O_REPORT_SERVICE) public reportService: IReportService\n\n  ) {\n    this.dialogService = this.injector.get(DialogService);\n    this.translateService = this.injector.get(OTranslateService);\n    this.snackBarService = this.injector.get(SnackBarService);\n    this.exportDataProvider = this.injector.get(OntimizeExportDataProviderService)\n  }\n\n  ngOnInit() {\n    this.permissions = this.table.getMenuPermissions();\n  }\n\n  get isColumnFilterOptionActive() {\n    return this.table && this.table.isColumnFiltersActive;\n  }\n\n  ngAfterViewInit() {\n\n    if (!this.permissions.items || this.permissions.items.length === 0) {\n      return;\n    }\n    if (this.selectAllCheckboxOption && !this.enabledSelectAllCheckbox) {\n      this.disableOTableOptionComponent(this.selectAllCheckboxOption);\n    }\n    if (this.exportButtonOption && !this.enabledExportButton) {\n      this.disableOTableOptionComponent(this.exportButtonOption);\n    }\n    if (this.columnsVisibilityButtonOption && !this.enabledColumnsVisibilityButton) {\n      this.disableOTableOptionComponent(this.columnsVisibilityButtonOption);\n    }\n    if (this.filterMenuButton && !this.enabledFilterMenu) {\n      this.disableButton(this.filterMenuButton);\n    }\n    if (this.configurationMenuButton && !this.enabledConfigurationMenu) {\n      this.disableButton(this.configurationMenuButton);\n    }\n\n    this.cd.detectChanges();\n  }\n\n  protected disableOTableOptionComponent(comp: OTableOptionComponent) {\n    comp.enabled = false;\n    const buttonEL = comp.elRef.nativeElement.querySelector('button');\n    const obs = PermissionsUtils.registerDisabledChangesInDom(buttonEL);\n    this.mutationObservers.push(obs);\n  }\n\n  protected disableButton(buttonEL: ElementRef) {\n    buttonEL.nativeElement.disabled = true;\n    const obs = PermissionsUtils.registerDisabledChangesInDom(buttonEL.nativeElement);\n    this.mutationObservers.push(obs);\n  }\n\n  ngOnDestroy() {\n    if (this.mutationObservers) {\n      this.mutationObservers.forEach((m: MutationObserver) => {\n        m.disconnect();\n      });\n    }\n  }\n\n  registerOptions(oTableOptions: OTableOptionComponent[]) {\n    const items: OPermissions[] = this.permissions.items || [];\n    const fixedOptions = ['select-all-checkbox', 'export', 'show-hide-columns', 'filter', 'configuration'];\n    const userItems: OPermissions[] = items.filter((perm: OPermissions) => fixedOptions.indexOf(perm.attr) === -1);\n    const self = this;\n    userItems.forEach((perm: OPermissions) => {\n      const option = oTableOptions.find((oTableOption: OTableOptionComponent) => oTableOption.oattr === perm.attr);\n      self.setPermissionsToOTableOption(perm, option);\n    });\n  }\n\n  protected setPermissionsToOTableOption(perm: OPermissions, option: OTableOptionComponent) {\n    if (perm.visible === false && option) {\n      option.elRef.nativeElement.remove();\n    } else if (perm.enabled === false && option) {\n      option.enabled = false;\n      const buttonEL = option.elRef.nativeElement.querySelector('button');\n      const obs = PermissionsUtils.registerDisabledChangesInDom(buttonEL);\n      this.mutationObservers.push(obs);\n    }\n  }\n\n  getPermissionByAttr(attr: string) {\n    const items: OPermissions[] = this.permissions.items || [];\n    return items.find((perm: OPermissions) => perm.attr === attr);\n  }\n\n  get isSelectAllOptionActive(): boolean {\n    return this.table.oTableOptions.selectColumn.visible;\n  }\n\n  get showSelectAllCheckbox(): boolean {\n    if (!this.selectAllCheckbox) {\n      return false;\n    }\n    const perm: OPermissions = this.getPermissionByAttr('select-all-checkbox');\n    return this.selectAllCheckbox && !(perm && perm.visible === false);\n  }\n\n  get rowHeightObservable(): Observable<string> {\n    return this.table.rowHeightObservable;\n  }\n  get enabledSelectAllCheckbox(): boolean {\n    const perm: OPermissions = this.getPermissionByAttr('select-all-checkbox');\n    return !(perm && perm.enabled === false);\n  }\n\n  get showExportButton(): boolean {\n    if (!this.exportButton) {\n      return false;\n    }\n    const perm: OPermissions = this.getPermissionByAttr('export');\n    return !(perm && perm.visible === false);\n  }\n\n  get enabledExportButton(): boolean {\n    const perm: OPermissions = this.getPermissionByAttr('export');\n    return !(perm && perm.enabled === false);\n  }\n\n  get showColumnsVisibilityButton(): boolean {\n    if (!this.columnsVisibilityButton) {\n      return false;\n    }\n    const perm: OPermissions = this.getPermissionByAttr('show-hide-columns');\n    return !(perm && perm.visible === false);\n  }\n\n  get showReportOnDemandButton(): boolean {\n    if (!this.showReportOnDemandOption) {\n      return false;\n    }\n    const perm: OPermissions = this.getPermissionByAttr('show-report-on-demand');\n    return !(perm && perm.visible === false);\n  }\n\n  get enabledColumnsVisibilityButton(): boolean {\n    const perm: OPermissions = this.getPermissionByAttr('show-hide-columns');\n    return !(perm && perm.enabled === false);\n  }\n\n  get showFilterMenu(): boolean {\n    const perm: OPermissions = this.getPermissionByAttr('filter');\n    return this.showFilterOption && !(perm && perm.visible === false);\n  }\n\n  get enabledFilterMenu(): boolean {\n    const perm: OPermissions = this.getPermissionByAttr('filter');\n    return !(perm && perm.enabled === false);\n  }\n\n  get showConfigurationMenu(): boolean {\n    const perm: OPermissions = this.getPermissionByAttr('configuration');\n    return this.showConfigurationOption && !(perm && perm.visible === false);\n  }\n\n  get enabledConfigurationMenu(): boolean {\n    const perm: OPermissions = this.getPermissionByAttr('configuration');\n    return !(perm && perm.enabled === false);\n  }\n\n  get showGroupByButton(): boolean {\n    return this.showGroupByOption;\n  }\n\n  get showChartsOnDemandButton(): boolean {\n    if (!this.showChartsOnDemandOption) {\n      return false;\n    }\n    const perm: OPermissions = this.getPermissionByAttr('show-chart-on-demand');\n    return !(perm && perm.visible === false);\n\n  }\n  get showFirstDivider(): boolean {\n    return (this.showAnyOptionFirstSection && this.showAnyOptionSecondSection) ||\n      (this.showAnyOptionFirstSection && !this.showAnyOptionSecondSection && this.showAnyOptionThirdSection);\n  }\n\n  get showSecondDivider(): boolean {\n    return this.showAnyOptionSecondSection && this.showAnyOptionThirdSection;\n  }\n\n  get showAnyOptionThirdSection():boolean {\n    return this.showGroupByButton || this.showFilterMenu || this.showConfigurationMenu;\n  }\n  get showAnyOptionFirstSection(): boolean {\n    return this.showSelectAllCheckbox || this.showColumnsVisibilityButton || this.showResetWidthOption;\n  }\n  get showAnyOptionSecondSection(): boolean {\n    return this.showExportButton || this.showReportOnDemandButton || this.showChartsOnDemandButton;\n  }\n\n\n  onShowsSelects() {\n    const tableOptions = this.table.oTableOptions;\n    tableOptions.selectColumn.visible = !tableOptions.selectColumn.visible;\n    this.table.initializeCheckboxColumn();\n  }\n\n  onExportButtonClicked() {\n    this.exportDataProvider.initializeProvider(this.table);\n\n    this.dialog.open(OTableExportDialogComponent, {\n      data: {\n        visibleButtons: this.table.visibleExportDialogButtons,\n        columns:this.parseColumnsVisible(),\n        service: this.table.service,\n        serviceType: this.table.exportServiceType,\n        options: this.table.exportOptsTemplate\n      },\n      maxWidth: '65vw',\n      minWidth: '25vw',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog']\n    });\n  }\n  protected parseColumnsVisible() {\n    const columnsArray = Util.parseArray(this.table.columns);\n    return this.table.oTableOptions.columns.filter(oCol => oCol.type !== \"image\" && oCol.type !== \"action\" && oCol.visible && columnsArray.findIndex(column => column === oCol.attr) > -1).map(\n      (x: OColumn) => {\n        return x.attr;\n      }\n    )\n  }\n  onChangeColumnsVisibilityClicked() {\n    const dialogRef = this.dialog.open(OTableVisibleColumnsDialogComponent, {\n      data: {\n        table: this.table\n      },\n      maxWidth: '35vw',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog']\n    });\n\n    dialogRef.afterClosed().subscribe(result => {\n      if (Util.isDefined(result)) {\n        this.table.visibleColArray = result.visibleColArray;\n        const columnsOrder = result.columnsOrder;\n        this.table.oTableOptions.columns.sort((a: OColumn, b: OColumn) => columnsOrder.indexOf(a.attr) - columnsOrder.indexOf(b.attr));\n\n        if (Util.isDefined(result.sortColumns)) {\n          this.table.reinitializeSortColumns(result.sortColumns);\n        }\n\n        if (Util.isDefined(result.groupColumns)) {\n          this.table.setGroupColumns(result.groupColumns);\n        }\n\n        if (result.columnValueFiltersToRemove.length > 0) {\n          this.table.clearColumnFilters(false, result.columnValueFiltersToRemove);\n        }\n\n        this.table.cd.detectChanges();\n        this.table.refreshColumnsWidthFromLocalStorage();\n      }\n    });\n  }\n\n  onGroupByClicked() {\n    const dialogRef = this.dialog.open(OTableGroupByColumnsDialogComponent, {\n      data: {\n        groupedColumns: this.table.groupedColumnsArray,\n        columnsData: this.table.oTableOptions.columns,\n        rowHeight: this.table.rowHeight,\n        groupedColumnTypes: this.table.groupedColumnTypes\n      },\n      height: '75vh',\n      width: '50vw',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog', 'o-table-group-by-column-dialog']\n    });\n\n    dialogRef.afterClosed().subscribe(result => {\n      if (result) {\n        this.table.setGroupedColumnTypes(dialogRef.componentInstance.getGroupedColumnTypes());\n        this.table.setGroupColumns(dialogRef.componentInstance.getGroupedColumns());\n      }\n    });\n  }\n\n  onFilterByColumnClicked() {\n    if (this.table.isColumnFiltersActive && this.table.dataSource.isColumnValueFilterActive()) {\n      this.dialogService.confirm('CONFIRM', 'MESSAGES.CONFIRM_DISCARD_FILTER_BY_COLUMN').then(res => {\n        if (res) {\n          this.table.clearColumnFilters();\n        }\n        this.table.isColumnFiltersActive = !res;\n      });\n    } else {\n      this.table.isColumnFiltersActive = !this.table.isColumnFiltersActive;\n    }\n  }\n\n  public onStoreFilterClicked(): void {\n    const dialogRef = this.dialog.open(OStoreFilterDialogComponent, {\n      data: this.table.state.storedFilters.map(filter => filter.name),\n      width: 'calc((75em - 100%) * 1000)',\n      maxWidth: '65vw',\n      minWidth: '30vw',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog']\n    });\n\n    dialogRef.afterClosed().subscribe(result => {\n      if (result) {\n        this.table.storeFilterInState(dialogRef.componentInstance.getFilterAttributes());\n      }\n    });\n  }\n\n  public onLoadFilterClicked(): void {\n    const dialogRef = this.dialog.open(OLoadFilterDialogComponent, {\n      data: this.table.state.storedFilters,\n      width: 'calc((75em - 100%) * 1000)',\n      maxWidth: '65vw',\n      minWidth: '30vw',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog']\n    });\n\n    dialogRef.componentInstance.onDelete.subscribe(filterName => this.table.state.deleteStoredFilter(filterName));\n    dialogRef.afterClosed().subscribe(result => {\n      if (result) {\n        const selectedFilterName: string = dialogRef.componentInstance.getSelectedFilterName();\n        if (selectedFilterName) {\n          this.table.state.applyFilter(selectedFilterName);\n          this.table.setFiltersConfiguration();\n          this.table.reloadPaginatedDataFromStart(false);\n        }\n      }\n    });\n  }\n\n  onClearFilterClicked(): void {\n    this.dialogService.confirm('CONFIRM', 'TABLE.DIALOG.CONFIRM_CLEAR_FILTER').then(result => {\n      if (result) {\n        this.table.clearFilters();\n        this.table.reloadPaginatedDataFromStart(false);\n      }\n    });\n  }\n\n\n  onChartsOnDemandClicked(): void {\n    if (this.chartOnDemandService) {\n      this.chartOnDemandService.openChartOnDemand(this.table);\n    } else {\n      console.warn(\"You must have ontimize-web-ngx-charts installed in your app to use charts on demand.\")\n    }\n  }\n  onResetWidthClicked() {\n    this.dialogService.confirm('CONFIRM', 'TABLE.DIALOG.CONFIRM_RESET_WIDTH').then(result => {\n      if (result) {\n        this.table.resetColumnsWidth();\n      }\n    });\n  }\n\n  onReportOnDemandClicked(): void {\n    if (this.reportService) {\n      this.reportService.openReportOnDemand(this.table);\n    } else {\n      console.warn(\"You must have ontimize-web-ngx-report-on-demand installed in your app to use report on demand.\")\n    }\n  }\n\n  public onStoreConfigurationClicked(): void {\n    const dialogRef = this.dialog.open(OTableStoreConfigurationDialogComponent, {\n      width: 'calc((75em - 100%) * 1000)',\n      maxWidth: '65vw',\n      minWidth: '30vw',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog']\n    });\n    dialogRef.afterClosed().subscribe(result => {\n      if (result) {\n        const configurationData = dialogRef.componentInstance.getConfigurationAttributes();\n        const tableProperties = dialogRef.componentInstance.getSelectedTableProperties();\n        this.table.componentStateService.storeConfiguration(configurationData, tableProperties);\n      }\n    });\n  }\n\n  public onApplyConfigurationClicked(): void {\n    const dialogRef = this.dialog.open(OTableApplyConfigurationDialogComponent, {\n      data: this.table.state.storedConfigurations,\n      width: 'calc((75em - 100%) * 1000)',\n      maxWidth: '65vw',\n      minWidth: '30vw',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog']\n    });\n    dialogRef.componentInstance.onDelete.subscribe(configurationName => this.table.state.deleteStoredConfiguration(configurationName));\n    dialogRef.afterClosed().subscribe(result => {\n      if (result && dialogRef.componentInstance.isDefaultConfigurationSelected()) {\n        this.table.state.reset(this.table.pageable);\n        this.table.applyDefaultConfiguration();\n      } else if (result) {\n        const selectedConfigurationName: string = dialogRef.componentInstance.getSelectedConfigurationName();\n        if (selectedConfigurationName) {\n          this.table.state.applyConfiguration(selectedConfigurationName);\n          this.table.applyConfiguration(selectedConfigurationName);\n        }\n      }\n    });\n  }\n\n}\n","<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","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Injector,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatMenu } from '@angular/material/menu';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { O_INPUTS_OPTIONS } from '../../../../../config/app-config';\nimport type { OTableOptions } from '../../../../../interfaces/o-table-options.interface';\nimport type { OTableQuickfilter } from '../../../../../interfaces/o-table-quickfilter.interface';\nimport type { Expression } from '../../../../../types/expression.type';\nimport type { OInputsOptions } from '../../../../../types/o-inputs-options.type';\nimport { FilterExpressionUtils } from '../../../../../util/filter-expression.utils';\nimport { Util } from '../../../../../util/util';\nimport type { OColumn } from '../../../column/o-column.class';\nimport { OTableBase } from '../../../o-table-base.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_QUICKFILTER = [\n  'placeholder'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_QUICKFILTER = [\n  'onChange'\n];\n\n@Component({\n  selector: 'o-table-quickfilter',\n  templateUrl: './o-table-quickfilter.component.html',\n  styleUrls: ['./o-table-quickfilter.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TABLE_QUICKFILTER,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_QUICKFILTER,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-table-quickfilter]': 'true',\n  }\n})\nexport class OTableQuickfilterComponent implements OTableQuickfilter, OnInit, AfterViewInit, OnDestroy {\n\n  protected _placeholder: string = undefined;\n\n  get placeholder(): string {\n    return this._placeholder;\n  }\n\n  set placeholder(value: string) {\n    if (Util.isDefined(value)) {\n      this._placeholder = value;\n    }\n  }\n\n  @ViewChild('filter')\n  public filter: ElementRef;\n\n  @ViewChild('menu', { static: true })\n  public matMenu: MatMenu;\n\n  public value: string;\n  public onChange: EventEmitter<string> = new EventEmitter<string>();\n\n  public formControl;\n\n  protected oInputsOptions: OInputsOptions;\n  protected quickFilterObservable: Subscription;\n  constructor(\n    protected injector: Injector,\n    protected elRef: ElementRef,\n    @Inject(forwardRef(() => OTableBase)) protected table: OTableBase\n  ) {\n    this.formControl = new UntypedFormControl();\n  }\n\n  public ngOnInit(): void {\n    this.table.registerQuickFilter(this);\n    // workaround because 'x-position=\"before\"' was not working in the template\n    this.matMenu.xPosition = 'before';\n  }\n\n  public ngAfterViewInit(): void {\n    this.initializeEventFilter();\n\n    try {\n      this.oInputsOptions = this.injector.get(O_INPUTS_OPTIONS);\n    } catch (e) {\n      this.oInputsOptions = {};\n    }\n    Util.parseOInputsOptions(this.elRef, this.oInputsOptions);\n  }\n\n  public ngOnDestroy(): void {\n    if (this.quickFilterObservable) {\n      this.quickFilterObservable.unsubscribe();\n    }\n  }\n\n  get oTableOptions(): OTableOptions {\n    return this.table.oTableOptions;\n  }\n\n  get quickFilterColumns(): OColumn[] {\n    return this.table.oTableOptions.columns.filter(oCol => {\n      // CHECK: Why columns with renderers are not filtered?\n      // return oCol.searchable && oCol.visible && !Util.isDefined(oCol.renderer);\n      return oCol.searchable && oCol.visible;\n    });\n  }\n\n  get filterExpression(): Expression {\n    let result: Expression = this.getUserFilter();\n    if (!Util.isDefined(result) && Util.isDefined(this.value) && this.value.length > 0) {\n      const expressions: Expression[] = [];\n\n      const searchingCols = this.oTableOptions.columns.filter(oCol => oCol.searching && oCol.visible && oCol.searchable && this.isFilterableColumn(oCol));\n      expressions.push(...this.getColumnsWithoutRendererExpressions(searchingCols));\n\n      const renderersExpr = this.getColumnsRendererExpressions(searchingCols);\n\n      const notNullExpressions = renderersExpr.filter(expr => Util.isDefined(expr));\n      if (expressions.length === 0 && notNullExpressions.length === 0) {\n        // All filters in the renderer are empty and there are no other filters configured,\n        // so we already know that the table should not have any information but\n        // it would make a query with empty filters and retrieve information not consistent with the configured quickfilter value,\n        // so we force to stop the query and set an empty array on the table\n        this.table.abortQuery.next(true);\n      }\n      expressions.push(...notNullExpressions);\n\n      if (expressions.length > 0) {\n        result = expressions.reduce((a, b) => FilterExpressionUtils.buildComplexExpression(a, b, FilterExpressionUtils.OP_OR));\n      }\n    }\n    return result;\n  }\n\n  public getUserFilter(): Expression {\n    let result: Expression;\n    if (this.table.quickFilterCallback instanceof Function) {\n      const userFilter = this.table.quickFilterCallback(this.value);\n      if (Util.isDefined(userFilter) && FilterExpressionUtils.instanceofExpression(userFilter)) {\n        result = (userFilter as Expression);\n      } else if (Util.isDefined(userFilter)) {\n        result = FilterExpressionUtils.buildExpressionFromObject(userFilter);\n      }\n    }\n    return result;\n  }\n\n  public initializeEventFilter(): void {\n    if (this.filter && !this.quickFilterObservable) {\n      this.quickFilterObservable = fromEvent(this.filter.nativeElement, 'keyup')\n        .pipe(debounceTime(150))\n        .pipe(distinctUntilChanged())\n        .subscribe(() => {\n          const filterVal = this.filter.nativeElement.value;\n          if (!this.table.dataSource || this.value === filterVal) {\n            return;\n          }\n          this.setValue(filterVal);\n          this.onChange.emit(this.value);\n        });\n\n      // if exists filter value in storage then filter result table\n      const filterValue = this.value || this.filter.nativeElement.value;\n      this.formControl.setValue(filterValue);\n    }\n  }\n\n  public setValue(value: any, trigger: boolean = true): void {\n    this.value = value;\n    this.formControl.setValue(this.value);\n    if (trigger && this.table && !this.table.pageable && this.table.dataSource) {\n      this.table.dataSource.quickFilter = this.value;\n    }\n  }\n\n  public onMenuClosed(): void {\n    this.setValue(this.value);\n    this.onChange.emit(this.value);\n  }\n\n  public isChecked(column: OColumn): boolean {\n    return column.searching;\n  }\n\n  public onCheckboxChange(column: OColumn, event: MatCheckboxChange): void {\n    column.searching = event.checked;\n  }\n\n  public showCaseSensitiveCheckbox(): boolean {\n    return this.table.showCaseSensitiveCheckbox();\n  }\n\n  public areAllColumnsChecked(): boolean {\n    return this.quickFilterColumns.every((col: OColumn) => col.searching);\n  }\n\n  public getCountColumnsChecked(): number {\n    let count = 0;\n    this.quickFilterColumns.forEach((col: OColumn) => {\n      if (col.searching) {\n        count++;\n      }\n    });\n    return count;\n  }\n\n  public onSelectAllChange(event: MatCheckboxChange): void {\n    this.quickFilterColumns.forEach((col: OColumn) => col.searching = event.checked);\n  }\n\n  protected isFilterableColumn(column: OColumn): boolean {\n    return !column.renderer || (\n      column.type === 'string' ||\n      column.type === 'translate' ||\n      column.type === 'integer' ||\n      column.type === 'real' ||\n      column.type === 'percentage' ||\n      column.type === 'currency' ||\n      column.type === 'service' ||\n      column.type === 'date'\n    );\n  }\n\n  protected getColumnsWithoutRendererExpressions(columns: OColumn[]): Expression[] {\n    return columns\n      .filter(oCol => !Util.isDefined(oCol.renderer))\n      .map(oCol => {\n        if (Util.isDefined(oCol.filterExpressionFunction)) {\n          return oCol.filterExpressionFunction(oCol.attr, this.value);\n        } else {\n          // Default behaviour\n          return FilterExpressionUtils.buildExpressionLike(oCol.attr, this.value);\n        }\n      });\n  }\n\n  protected getColumnsRendererExpressions(columns: OColumn[]) {\n    return columns\n      .filter(oCol => Util.isDefined(oCol.renderer) && !Util.isDefined(oCol.filterExpressionFunction))\n      .map(oCol => {\n        if (Util.isDefined(oCol.renderer.getFilterExpression)) {\n          return oCol.renderer.getFilterExpression(this.value);\n        }\n        // Default behaviour\n        return FilterExpressionUtils.buildExpressionLike(oCol.attr, this.value);\n      });\n  }\n\n}\n","<div class=\"quickFilter\" fxLayout=\"row\">\n\n  <mat-form-field appearance=\"outline\">\n    <input matInput #filter [formControl]=\"formControl\" (click)=\"$event.stopPropagation()\" placeholder=\"{{ placeholder | oTranslate }}\">\n    <div matPrefix>\n      <mat-icon svgIcon=\"ontimize:search\" [matBadge]=\"areAllColumnsChecked()?'':getCountColumnsChecked()\" matBadgeSize=\"small\"></mat-icon>\n      <button type=\"button\" mat-icon-button [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (click)=\"$event.stopPropagation()\">\n        <mat-icon class=\"search-icon\">expand_more</mat-icon>\n      </button>\n    </div>\n\n    <mat-menu #menu=\"matMenu\" class=\"o-table-quickfilter-menu\">\n      <div fxLayout=\"column\" class=\"checkbox-container\">\n\n        <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"areAllColumnsChecked()\" (change)=\"onSelectAllChange($event)\">\n          {{ 'SELECT_ALL' | oTranslate}}\n        </mat-checkbox>\n        <mat-divider></mat-divider>\n\n        <ng-container *ngFor=\"let column of quickFilterColumns\">\n          <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"isChecked(column)\" (change)=\"onCheckboxChange(column, $event)\">\n            {{ column.title | oTranslate }}\n          </mat-checkbox>\n        </ng-container>\n\n        <ng-container *ngIf=\"showCaseSensitiveCheckbox()\">\n          <mat-divider></mat-divider>\n          <mat-checkbox (click)=\"$event.stopPropagation()\" [checked]=\"oTableOptions.filterCaseSensitive\"\n            (change)=\"oTableOptions.filterCaseSensitive = $event.checked\">\n            {{ 'TABLE.FILTER.CASE_SENSITIVE' | oTranslate}}\n          </mat-checkbox>\n        </ng-container>\n      </div>\n    </mat-menu>\n  </mat-form-field>\n</div>\n","\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Optional, ViewEncapsulation } from '@angular/core';\nimport { ArrowViewStateTransition, matSortAnimations, MatSortHeader, MatSortHeaderIntl } from '@angular/material/sort';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { OMatSort } from './o-mat-sort';\n\n@Component({\n  selector: '[o-mat-sort-header]',\n  exportAs: 'oMatSortHeader',\n  templateUrl: './sort-header.html',\n  styleUrls: ['./sort-header.scss'],\n  host: {\n    '(click)': '_handleClick()',\n    '(mouseenter)': '_setIndicatorHintVisible(true)',\n    '(longpress)': '_setIndicatorHintVisible(true)',\n    '(mouseleave)': '_setIndicatorHintVisible(false)',\n    '[attr.aria-sort]': '_getAriaSortAttribute()',\n    '[class.mat-sort-header-disabled]': '_isDisabled()',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['disabled'],\n  animations: [\n    matSortAnimations.indicator,\n    matSortAnimations.leftPointer,\n    matSortAnimations.rightPointer,\n    matSortAnimations.arrowOpacity,\n    matSortAnimations.arrowPosition,\n    matSortAnimations.allowChildren,\n  ]\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class OMatSortHeader extends MatSortHeader {\n\n  constructor(public _intl: MatSortHeaderIntl,\n    changeDetectorRef: ChangeDetectorRef,\n    @Optional() public _sort: OMatSort,\n    @Inject('MAT_SORT_HEADER_COLUMN_DEF') @Optional()\n    public _cdkColumnDef: CdkColumnDef,\n    _focusMonitor: FocusMonitor,\n    _elementRef: ElementRef<HTMLElement>){\n\n    super(_intl, changeDetectorRef, _sort, _cdkColumnDef, _focusMonitor, _elementRef);\n  }\n\n  _handleClick() {\n    if (this._isDisabled()) { return; }\n\n    this._sort.addSortColumn(this);\n\n    // Do not show the animation if the header was already shown in the right position.\n    if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n      this._disableViewStateAnimation = true;\n    }\n\n    // If the arrow is now sorted, animate the arrow into place. Otherwise, animate it away into\n    // the direction it is facing.\n    const viewState: ArrowViewStateTransition = this._isSorted() ?\n      { fromState: this._arrowDirection, toState: 'active' } :\n      { fromState: 'active', toState: this._arrowDirection };\n    this._setAnimationTransitionState(viewState);\n\n    this._showIndicatorHint = false;\n  }\n\n  _isSorted() {\n    return this._sort.isActive(this) && this._sort.hasDirection(this.id);\n  }\n\n  _updateArrowDirection() {\n    this._arrowDirection = this._isSorted() ?\n      this._sort.directionById[this.id] :\n      (this.start || this._sort.start);\n  }\n\n  refresh() {\n    if (this._sort.isActive(this)) {\n      this._setAnimationTransitionState({\n        fromState: this._sort.directionById[this.id],\n        toState: 'active'\n      });\n      this._showIndicatorHint = false;\n    } else {\n      this._viewState.toState = 'active';\n      this._intl.changes.next();\n    }\n  }\n\n  getSortIndicatorNumbered(): string {\n    let result = '';\n    // if there is only one sorted column the number is not displayed\n    if (this._sort.activeArray.length < 2) { return result; }\n    const index = this._sort.activeArray.findIndex(x => x.id === this.id);\n    if (index > -1) {\n      result += index + 1;\n    }\n    return result;\n  }\n\n  getSortIndicatorNumberedClass() {\n    return 'o-table-header-indicator-numbered o-mat-sort-indicator-numbered-' + this._arrowDirection;\n  }\n}\n","<div class=\"mat-sort-header-container mat-focus-indicator\" [class.mat-sort-header-sorted]=\"_isSorted()\"\n  [class.mat-sort-header-position-before]=\"arrowPosition === 'before'\" [attr.tabindex]=\"_isDisabled() ? null : 0\"\n  [attr.role]=\"_isDisabled() ? null : 'button'\">\n\n  <div class=\"mat-sort-header-content\">\n    <ng-content></ng-content>\n  </div>\n\n  <!-- Disable animations while a current animation is running -->\n  <div class=\"mat-sort-header-arrow\" *ngIf=\"_renderArrow()\" [@arrowOpacity]=\"_getArrowViewState()\" [@arrowPosition]=\"_getArrowViewState()\"\n    [@allowChildren]=\"_getArrowDirectionState()\" (@arrowPosition.start)=\"_disableViewStateAnimation = true\"\n    (@arrowPosition.done)=\"_disableViewStateAnimation = false\">\n    <div class=\"mat-sort-header-stem\"></div>\n    <div class=\"mat-sort-header-indicator\" [@indicator]=\"_getArrowDirectionState()\">\n      <div class=\"mat-sort-header-pointer-left\" [@leftPointer]=\"_getArrowDirectionState()\"></div>\n      <div class=\"mat-sort-header-pointer-right\" [@rightPointer]=\"_getArrowDirectionState()\"></div>\n      <div class=\"mat-sort-header-pointer-middle\"></div>\n    </div>\n    <span [ngClass]=\"getSortIndicatorNumberedClass()\"> {{ getSortIndicatorNumbered() }} </span>\n  </div>\n</div>\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, forwardRef, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { AnimationDurations } from '@angular/material/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { OColumnValueFilter } from '../../../../../types/table/o-column-value-filter.type';\nimport { Util } from '../../../../../util/util';\nimport type { OColumn } from '../../../column';\nimport { OTableBase } from '../../../o-table-base.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_COLUMN_FILTER_ICON = [\n  'column'\n]\nexport declare type STATEVIEW = 'HINT' | 'ACTIVE' | 'INACTIVE'\n@Component({\n  selector: 'o-table-header-column-filter-icon',\n  inputs: DEFAULT_INPUTS_O_TABLE_COLUMN_FILTER_ICON,\n  templateUrl: './o-table-header-column-filter-icon.component.html',\n  styleUrls: ['./o-table-header-column-filter-icon.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-table-column-filter-icon]': 'true'\n  },\n  animations: [\n    trigger('iconState', [\n      state('ACTIVE, HINT', style({ opacity: 1 })),\n      state('INACTIVE', style({ opacity: 0 })),\n      transition('* <=> HINT', animate(AnimationDurations.ENTERING))\n    ]),\n\n  ]\n})\nexport class OTableHeaderColumnFilterIconComponent implements OnInit, OnDestroy {\n\n  public column: OColumn;\n  public isColumnFilterActive: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  public filterIconHintVisible: BehaviorSubject<boolean> = new BehaviorSubject(false)\n  public indicatorNumber: BehaviorSubject<string> = new BehaviorSubject('');\n  private subscription = new Subscription();\n  public filterIconStateView: BehaviorSubject<STATEVIEW> = new BehaviorSubject<STATEVIEW>('INACTIVE');\n\n\n  constructor(\n    @Inject(forwardRef(() => OTableBase)) public table: OTableBase\n  ) {\n    this.subscription.add(this.table.onFilterByColumnChange.subscribe(() => {\n      this.updateStateColumnFilter();\n    }));\n\n    this.subscription.add(this.filterIconHintVisible.subscribe((value) => {\n\n      this.setFilterIconHintVisible(value);\n    }));\n  }\n\n  ngOnInit(): void {\n    this.updateStateColumnFilter();\n  }\n\n  public updateStateColumnFilter() {\n    this.indicatorNumber.next(this.getFilterIndicatorNumbered());\n\n    this.isColumnFilterActive.next(Util.isDefined(this.getColumnValueFilterByAttr()));\n    this.filterIconStateView.next(this.isColumnFilterActive.getValue() ? 'ACTIVE' : 'INACTIVE');\n  }\n\n  protected getColumnValueFilterByAttr(): OColumnValueFilter {\n    const columnValueFilters = this.table.dataSource.getColumnValueFilters();\n    return columnValueFilters.find(item => item.attr === this.column.attr);\n  }\n\n  public openColumnFilterDialog(event) {\n    this.table.openColumnFilterDialog(this.column, event);\n  }\n\n  public getFilterIndicatorNumbered(): string {\n    let result = '';\n\n    const columnValueFilters = this.table.dataSource.getColumnValueFilters();\n    if (columnValueFilters.length < 2) {\n      return result;\n    }\n\n    const index = columnValueFilters.findIndex(x => x.attr === this.column.attr);\n    if (index > -1) {\n      result += index + 1;\n    }\n\n    return result;\n  }\n\n  /**\n   * Sets the \"hint\" state such that the icon will be semi-transparently displayed as a hint to the\n   * user showing what the active filter by column will become. If set to false, the icon will fade away.\n   */\n  setFilterIconHintVisible(visible: boolean) {\n    // No-op if the sort header is ACTIVE - should not make the hint visible.\n    if (this.filterIconStateView.getValue() === 'ACTIVE') { return; }\n    this.filterIconStateView.next(visible ? 'HINT' : 'INACTIVE');\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n}\n","<mat-icon class=\"column-filter-icon\" [ngClass]=\"{'column-filter-icon-active':isColumnFilterActive | async}\"\n  (click)=\"openColumnFilterDialog($event)\" [@iconState]=\"filterIconStateView | async\">\n  filter_alt\n</mat-icon>\n<span class=\"o-table-header-indicator-numbered\">\n  {{ indicatorNumber | async }}\n</span>","import { ChangeDetectionStrategy, Component, forwardRef, Inject, ViewChild, ViewEncapsulation } from \"@angular/core\";\nimport type { OColumn } from \"../../../column/o-column.class\";\nimport { OTableBase } from \"../../../o-table-base.class\";\nimport { OMatSortHeader } from \"../../sort/o-mat-sort-header\";\nimport type { OTableHeaderColumnFilterIconComponent } from \"../table-header-column-filter-icon/o-table-header-column-filter-icon.component\";\n\nexport const DEFAULT_INPUTS_O_TABLE_HEADER = [\n  'column'\n]\n@Component({\n  selector: 'o-table-header',\n  inputs: DEFAULT_INPUTS_O_TABLE_HEADER,\n  templateUrl: './o-table-header.component.html',\n  styleUrls: ['./o-table-header.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-table-header]': 'true',\n    '(mouseenter)': 'setFilterIconHintVisible(true)',\n    '(mouseleave)': 'setFilterIconHintVisible(false)'\n  }\n})\nexport class OTableHeaderComponent {\n\n  public column: OColumn;\n  public resizable: boolean;\n  protected _columnFilterIcon: OTableHeaderColumnFilterIconComponent;\n\n  @ViewChild('columnFilterIcon') set columnFilterIcon(value: OTableHeaderColumnFilterIconComponent) {\n    this._columnFilterIcon = value;\n  }\n\n  @ViewChild(OMatSortHeader) matSortHeader: OMatSortHeader;\n\n  constructor(\n    @Inject(forwardRef(() => OTableBase)) protected table: OTableBase\n  ) {\n    this.resizable = this.table.resizable;\n  }\n\n\n  isModeColumnFilterable(column: OColumn): boolean {\n    return this.table.isColumnFiltersActive && this.table.isColumnFilterable(column);\n  }\n\n  setFilterIconHintVisible(visible: boolean) {\n    if (this._columnFilterIcon) {\n      this._columnFilterIcon.filterIconHintVisible.next(visible);\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.table.registerTableHeaders(this);\n  }\n\n}\n","<o-table-header-column-filter-icon #columnFilterIcon *ngIf=\"isModeColumnFilterable(column)\" [column]=\"column\">\n</o-table-header-column-filter-icon>\n\n<ng-container *ngIf=\"column.orderable\">\n  <span o-mat-sort-header>{{ column.title | oTranslate }}</span>\n</ng-container>\n<ng-container *ngIf=\"!column.orderable\">\n  <span class=\"header-title-container\" fxFlex>{{ column.title | oTranslate }}</span>\n</ng-container>\n\n<o-table-column-resizer *ngIf=\"resizable\" [column]=\"column\"></o-table-column-resizer>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../../../decorators/input-converter';\nimport { GroupedColumnAggregateConfiguration } from '../../../../../../interfaces/o-table-columns-grouping-interface';\nimport { AggregateFunction } from '../../../../../../types/aggregate-function.type';\nimport { Util } from '../../../../../../util/util';\n\nexport const DEFAULT_INPUTS_O_TABLE_COLUMN_GROUPING_COLUMN = [\n  // attr [string]: column name.\n  'attr',\n  // title [string]: Title for the header aggregate column\n  'title',\n  // aggregate-name [string]: Name of the aggregate option\n  'aggregateName: aggregate-name',\n  // aggregate [sum | count | avg | min |max]\n  'aggregate',\n  // function-aggregate [ (value: any[]) => number] Function that calculates a value on the values of the column 'attr'\n  'aggregateFunction: aggregate-function',\n  // expand-groups-same-level[boolean]: Indicates if click in row expands/collapses all rows on same level. By default: true\n  'expandGroupsSameLevel: expand-groups-same-level',\n  // aggregate [boolean]\n  'changeAggregateSameLevel: change-aggregate-same-level',\n];\n\n@Component({\n  selector: 'o-table-columns-grouping-column',\n  template: ' ',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_COLUMN_GROUPING_COLUMN\n})\n\nexport class OTableColumnsGroupingColumnComponent {\n  public attr: string;\n  public title: string;\n  public aggregateName: string;\n  private _aggregate: string;\n  public aggregateFunction: AggregateFunction;\n  @BooleanInputConverter()\n  expandGroupsSameLevel: boolean = true;\n  @BooleanInputConverter()\n  changeAggregateSameLevel: boolean = true;\n\n  set aggregate(value: string) {\n    this._aggregate = value;\n  }\n\n  get aggregate(): string {\n    if (Util.isDefined(this.aggregateFunction) && Util.isDefined(this.aggregateName)) {\n      return this.aggregateName;\n    }\n    return this._aggregate;\n  }\n\n  getAggregateConfiguration(): GroupedColumnAggregateConfiguration {\n    return {\n      attr: this.attr,\n      title: this.title,\n      aggregateName: this.aggregateName,\n      aggregate: this.aggregate,\n      aggregateFunction: this.aggregateFunction\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  forwardRef,\n  Inject,\n  Injector,\n  OnInit,\n  QueryList\n} from '@angular/core';\n\nimport { OTableColumnsGrouping } from '../../../../../interfaces/o-table-columns-grouping-interface';\nimport { Util } from '../../../../../util/util';\nimport { OTableComponent } from '../../../o-table.component';\nimport { OTableColumnsGroupingColumnComponent } from './columns/o-table-columns-grouping-column.component';\n\nexport const DEFAULT_INPUTS_O_TABLE_COLUMN_GROUPING = [\n  // columns [string]: columns that might be filtered, separated by ';'. Default: all visible columns.\n  'columns',\n  'excludedAggregateColumns: excluded-aggregate-columns'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_COLUMN_GROUPING = [\n];\n\n@Component({\n  selector: 'o-table-columns-grouping',\n  template: ' ',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_COLUMN_GROUPING,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_COLUMN_GROUPING\n})\n\nexport class OTableColumnsGroupingComponent implements OTableColumnsGrouping, OnInit {\n\n  protected _columnsArray: string[] = [];\n  protected _excludedAggregateColumnsArray: string[] = [];\n\n  @ContentChildren(OTableColumnsGroupingColumnComponent, { descendants: true })\n  groupingColumns: QueryList<OTableColumnsGroupingColumnComponent>;\n\n  constructor(\n    protected injector: Injector,\n    @Inject(forwardRef(() => OTableComponent)) protected table: OTableComponent\n  ) { }\n\n\n  set columns(arg: string) {\n    this._columnsArray = Util.parseArray(arg, true);\n  }\n\n  get columnsArray(): string[] {\n    return this._columnsArray;\n  }\n\n  set excludedAggregateColumns(arg: string) {\n    this._excludedAggregateColumnsArray = Util.parseArray(arg, true);\n  }\n\n  ngOnInit() {\n    if (this._columnsArray.length === 0) {\n      this._columnsArray = this.table.groupedColumnsArray;\n    }\n    this.table.setOTableColumnsGrouping(this);\n  }\n\n  useColumnAggregate(columnAttr: string, hasDefaultAggregate: boolean): boolean {\n    if (this._excludedAggregateColumnsArray.includes(columnAttr)) {\n      return false;\n    }\n    const columnConf = this.getColumnGrouping(columnAttr);\n    return hasDefaultAggregate || Util.isDefined(columnConf);\n  }\n\n  getColumnGrouping(columnAttr) {\n    return this.groupingColumns.find(col => col.attr === columnAttr);\n  }\n\n}\n","import { Directive } from '@angular/core';\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\n\nexport const DEFAULT_INPUTS_O_TABLE_COLUMN_SELECTALL = [\n  'width',\n  // only in pixels\n  'minWidth: min-width',\n\n  // only in pixels\n  'maxWidth: max-width',\n  'title',\n  'resizable'\n]\n@Directive({\n  selector: 'o-table-column-select-all',\n  inputs: DEFAULT_INPUTS_O_TABLE_COLUMN_SELECTALL\n})\nexport class OTableColumnSelectAllDirective {\n\n  public title: string;\n  public minWidth: string;\n  public maxWidth: string;\n  public width: string = '18px';\n  @BooleanInputConverter()\n  public resizable:boolean = false;\n\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, Inject, ViewEncapsulation } from \"@angular/core\";\nimport { DEFAULT_INPUTS_O_TABLE_HEADER, OTableHeaderComponent } from \"../table-header/o-table-header.component\";\nimport { BehaviorSubject, merge, Subscription } from \"rxjs\";\nimport type { OColumn } from \"../../../column/o-column.class\";\nimport { OTableBase } from \"../../../o-table-base.class\";\n\n@Component({\n  selector: 'o-table-header-select-all',\n  inputs: DEFAULT_INPUTS_O_TABLE_HEADER,\n  templateUrl: './o-table-header-select-all.component.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-table-header-select-all]': 'true'\n  }\n})\nexport class OTableHeaderSelectAllComponent extends OTableHeaderComponent {\n\n  public column: OColumn;\n  public resizable: boolean;\n  public isAllSelected = new BehaviorSubject<boolean>(false);\n  public isIndeterminate = new BehaviorSubject<boolean>(false);\n  public selectionChangeSubscription: Subscription;\n\n  constructor(\n    @Inject(forwardRef(() => OTableBase)) public table: OTableBase\n  ) {\n    super(table);\n  }\n\n  public ngAfterViewInit(): void {\n    const dataChanges: any[] = [\n      this.table.selection.changed\n    ];\n\n    if (this.table.matpaginator) {\n      dataChanges.push(this.table.matpaginator.page);\n    }\n\n    this.selectionChangeSubscription = merge(...dataChanges).subscribe(x => {\n      this.isAllSelected.next(this.table.isAllSelected());\n      this.isIndeterminate.next(this.table.isIndeterminate());\n    })\n\n  }\n  ngOnDestroy(): void {\n    //Called once, before the instance is destroyed.\n    //Add 'implements OnDestroy' to the class.\n    if (this.selectionChangeSubscription) {\n      this.selectionChangeSubscription.unsubscribe();\n    }\n  }\n\n}","<mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"table.masterToggle($event)\" [checked]=\"isAllSelected | async\" [indeterminate]=\"isIndeterminate | async\">\n  <ng-container *ngIf=\"table.tableColumnSelectAllContentChild?.title\">\n    {{table.tableColumnSelectAllContentChild?.title | oTranslate}}\n  </ng-container>\n</mat-checkbox>\n\n<o-table-column-resizer *ngIf=\"resizable && table.tableColumnSelectAllContentChild?.title\" [column]=\"column\"></o-table-column-resizer>\n","import { BehaviorSubject, merge, Observable, of } from 'rxjs';\n\nimport { OQueryDataArgs } from '../../../types/query-data-args.type';\n\n\nexport class OTableDao {\n\n  usingStaticData: boolean = false;\n\n  protected loadingTimer;\n  protected _isLoadingResults: boolean = false;\n\n  /** Stream that emits whenever the data has been modified. */\n  dataChange = new BehaviorSubject<any[]>([]);\n  sqlTypesChange = new BehaviorSubject<object>({});\n  get data(): any[] { return this.dataChange.value; }\n  get sqlTypes(): object { return this.sqlTypesChange.value; }\n\n  constructor(\n    private dataService: any,\n    private entity: string,\n    private methods: any\n  ) { }\n\n  /**\n   * Call the service query and emit data has ben modified\n   */\n  getQuery(queryArgs: OQueryDataArgs): Observable<any> {\n    this.isLoadingResults = true;\n    return this.dataService[this.methods.query].apply(this.dataService, queryArgs);\n  }\n\n  removeQuery(filters: any, sqlTypes?: object): Observable<any> {\n    return merge(...filters.map((kv => this.dataService[this.methods.delete](kv, this.entity, sqlTypes))));\n  }\n\n  insertQuery(av: object, sqlTypes?: object): Observable<any> {\n    if (this.usingStaticData) {\n      this.data.push(av);\n      return of(this.data);\n    } else {\n      return this.dataService[this.methods.insert](av, this.entity, sqlTypes);\n    }\n  }\n\n  updateQuery(kv: object, av: object, sqlTypes?: object): Observable<any> {\n    if (this.usingStaticData) {\n      // Only to simulate the service response, the model change is done in the editor\n      return of([]);\n    } else {\n      return this.dataService[this.methods.update](kv, av, this.entity, sqlTypes);\n    }\n  }\n\n  /**\n   * Set data array and emit data has ben modified\n   * @param data\n   */\n  setDataArray(data: Array<any>) {\n    this.dataChange.next(data);\n    this.isLoadingResults = false;\n    return of(data);\n  }\n\n  setAsynchronousColumn(value: Array<any>, rowData: any) {\n    // Object.assign(this.data[rowIndex], value);\n    let index = null;\n    for (let i = 0; i < this.data.length; i++) {\n      if (this.data[i] === rowData) {\n        index = i;\n        break;\n      }\n    }\n    if (index !== null) {\n      Object.assign(this.data[index], value);\n    }\n  }\n\n  get isLoadingResults(): boolean {\n    return this._isLoadingResults;\n  }\n\n  set isLoadingResults(val: boolean) {\n    if (val) {\n      this.cleanTimer();\n      this.loadingTimer = setTimeout(() => {\n        this._isLoadingResults = val;\n      }, 500);\n    } else {\n      this.cleanTimer();\n      this._isLoadingResults = val;\n    }\n  }\n\n  protected cleanTimer() {\n    if (this.loadingTimer) {\n      clearTimeout(this.loadingTimer);\n    }\n  }\n\n}\n","import { AfterViewInit, Directive, ElementRef, forwardRef, Inject, OnDestroy, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { OTableBase } from '../../o-table-base.class';\n\n\n@Directive({\n  selector: '[oTableRow]'\n})\nexport class OTableRowDirective implements AfterViewInit, OnDestroy {\n  protected resizeSubscription: Subscription;\n\n  constructor(\n    @Inject(forwardRef(() => OTableBase)) public table: OTableBase,\n    protected elementRef: ElementRef,\n    protected renderer: Renderer2\n  ) {\n  }\n\n  ngAfterViewInit() {\n    this.registerResize();\n  }\n\n  ngOnDestroy(): void {\n    if (this.resizeSubscription) {\n      this.resizeSubscription.unsubscribe();\n    }\n  }\n\n  registerResize() {\n    if (this.table.horizontalScroll) {\n      const self = this;\n      this.table.onUpdateScrolledState.subscribe(scrolled => {\n        setTimeout(() => {\n          if (scrolled) {\n            self.calculateRowWidth();\n          } else {\n            self.setRowWidth(undefined);\n          }\n        }, 0);\n      });\n    }\n  }\n\n  calculateRowWidth() {\n    if (!this.table.horizontalScroll) {\n      return;\n    }\n    if (this.alreadyScrolled) {\n      this.setRowWidth(this.table.rowWidth);\n    }\n    let totalWidth: number = 0;\n    try {\n      this.elementRef.nativeElement.childNodes.forEach(element => {\n        if (element && element.tagName && element.tagName.toLowerCase() === 'mat-cell') {\n          totalWidth += element.clientWidth;\n        }\n      });\n    } catch (error) {\n      //\n    }\n    if (!isNaN(totalWidth) && totalWidth > 0) {\n      totalWidth += 48;\n      this.setRowWidth(totalWidth);\n    }\n  }\n\n  setRowWidth(value: number) {\n    const widthValue = value !== undefined ? value + 'px' : 'auto';\n    this.renderer.setStyle(this.elementRef.nativeElement, 'width', widthValue);\n    this.table.rowWidth = value;\n  }\n\n  get alreadyScrolled(): boolean {\n    return this.table.rowWidth !== undefined;\n  }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MAT_SORT_HEADER_INTL_PROVIDER } from '@angular/material/sort';\n\nimport { OMatSort } from './o-mat-sort';\nimport { OMatSortHeader } from './o-mat-sort-header';\n\n@NgModule({\n  imports: [CommonModule],\n  exports: [OMatSort, OMatSortHeader],\n  declarations: [OMatSort, OMatSortHeader],\n  providers: [MAT_SORT_HEADER_INTL_PROVIDER]\n})\nexport class OMatSortModule { }\n","import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Output, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\n\nexport const DEFAULT_OUTPUTS_O_TABLE_ROW_EXPANDABLE = [\n  'onExpanded',\n  'onCollapsed'\n];\n\nexport const DEFAULT_INPUTS_O_TABLE_ROW_EXPANDABLE = [\n  // icon-expand : Icon name to expand. Default: add\n  'iconExpand:icon-expand',\n  // icon-collapse : Icon name to expand. Default:remove\n  'iconCollapse:icon-collapse',\n  // Indicates whether or not to show a expandable column. Default:true\n  'expandableColumnVisible:expandable-column-visible',\n  //[boolean]: multiple row expanded .Default: no.\n  'multiple'\n];\n\n/** Change event object emitted by OTableRowExpanded. */\nexport class OTableRowExpandedChange {\n  /** The data for row expandable. */\n  data: any;\n  /** row index for row expandable */\n  rowIndex: number;\n}\n\n\n@Component({\n  selector: 'o-table-row-expandable',\n  template: ' ',\n  outputs: DEFAULT_OUTPUTS_O_TABLE_ROW_EXPANDABLE,\n  inputs: DEFAULT_INPUTS_O_TABLE_ROW_EXPANDABLE,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OTableRowExpandableComponent {\n\n  @ContentChild(TemplateRef) templateRef: TemplateRef<any>;\n  @Output() onExpanded = new EventEmitter<OTableRowExpandedChange>();\n  @Output() onCollapsed = new EventEmitter<OTableRowExpandedChange>();\n  private _iconCollapse: string = 'remove';\n  private _iconExpand: string = 'add';\n\n  @BooleanInputConverter()\n  public expandableColumnVisible: boolean = true;\n\n  @BooleanInputConverter()\n  public multiple: boolean = false;\n\n  set iconCollapse(value: string) {\n    this._iconCollapse = value;\n  }\n\n  get iconCollapse() {\n    return this._iconCollapse;\n  }\n\n  set iconExpand(value: string) {\n    this._iconExpand = value;\n  }\n\n  get iconExpand() {\n    return this._iconExpand;\n  }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { OTableComponent } from '../o-table.component';\nimport { DefaultOTableDataSource } from './default-o-table.datasource';\n\n@Injectable()\nexport class OTableDataSourceService {\n\n  constructor() { }\n\n  getInstance(table: OTableComponent) {\n    return new DefaultOTableDataSource(table);\n  }\n}\n","import { CdkVirtualScrollViewport, VirtualScrollStrategy } from \"@angular/cdk/scrolling\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\nimport { distinctUntilChanged } from \"rxjs/operators\";\n\n@Injectable()\nexport class OTableVirtualScrollStrategy implements VirtualScrollStrategy {\n  private viewport: CdkVirtualScrollViewport;\n\n  private rowHeight!: number;\n  private headerHeight!: number;\n  private footerHeight!: number;\n  private readonly indexChange = new Subject<number>();\n  public scrolledIndexChange: Observable<number> = this.indexChange.pipe(distinctUntilChanged());\n  public readonly stickyChange = new Subject<number>();\n  private bufferMultiplier: number = 1;\n\n  get dataLength(): number {\n    return this._dataLength;\n  }\n\n  set dataLength(value: number) {\n    this._dataLength = value;\n    this.onDataLengthChanged();\n  }\n\n  private _dataLength = 0;\n\n  public attach(viewport: CdkVirtualScrollViewport): void {\n    this.viewport = viewport;\n    this.onDataLengthChanged();\n    this.updateContent();\n  }\n\n  public detach(): void {\n    //no-op\n  }\n\n  public destroy(): void {\n    this.indexChange.complete();\n    this.stickyChange.complete();\n  }\n\n  public onContentRendered(): void {\n    // no-op\n  }\n\n  public onRenderedOffsetChanged(): void {\n    // no-op\n  }\n\n  public scrollToIndex(index: number, behavior?: ScrollBehavior): void {\n    // no-op\n  }\n\n  public onContentScrolled(): void {\n    this.updateContent();\n  }\n\n  public setConfig(rowHeight: number, headerHeight: number, footerHeight: number) {\n\n    if (\n      this.rowHeight === rowHeight\n      && this.headerHeight === headerHeight\n      && this.footerHeight === footerHeight\n    ) {\n      return;\n    }\n    this.rowHeight = rowHeight;\n    this.headerHeight = headerHeight;\n    this.footerHeight = footerHeight;\n    //if change heights, then update content size\n    this.onDataLengthChanged();\n  }\n\n  public onDataLengthChanged(): void {\n    if (this.viewport) {\n      this.viewport.setTotalContentSize(this.dataLength * this.rowHeight + this.headerHeight + this.footerHeight);\n      this.viewport.scrollToOffset(0);//set scroll up\n      this.updateContent();\n    }\n  }\n\n  private updateContent() {\n    if (!this.viewport || !this.rowHeight || this.dataLength === 0) {\n      return;\n    }\n    const scrollOffset = this.viewport.measureScrollOffset();\n    const itemsDisplayed = Math.ceil(this.viewport.getViewportSize() / this.rowHeight);\n    const renderedOffset = this.viewport.getOffsetToRenderedContentStart();\n    const start = renderedOffset / this.rowHeight;\n    const bufferItems = Math.ceil(itemsDisplayed * this.bufferMultiplier);\n    const bufferOffset = renderedOffset + bufferItems * this.rowHeight;\n\n    const relativeScrollOffset = scrollOffset - bufferOffset;// How far the scroll offset is from the lower buffer, which is usually where items start being displayed\n    const rowsScrolled = relativeScrollOffset / this.rowHeight;\n\n    const displayed = scrollOffset / this.rowHeight;\n    this.indexChange.next(displayed);\n\n    const rowsToMove = Math.sign(rowsScrolled) * Math.floor(Math.abs(rowsScrolled));\n\n    const adjustedRenderedOffset = Math.max(0, renderedOffset + rowsToMove * this.rowHeight);\n    this.viewport.setRenderedContentOffset(adjustedRenderedOffset);\n\n    const adjustedStart = Math.max(0, start + rowsToMove);\n    const adjustedEnd = adjustedStart + itemsDisplayed + bufferItems;\n    this.viewport.setRenderedRange({ start: adjustedStart, end: adjustedEnd });\n    this.stickyChange.next(adjustedRenderedOffset);\n  }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'oTableRowClass' })\nexport class OTableRowClassPipe implements PipeTransform {\n\n  transform(rowData: any, rowIndex: number, rowClassFn?: (row: any, index: number) => string | string[]): string | string[] {\n    return rowClassFn ? rowClassFn(rowData, rowIndex) : '';\n  }\n\n}\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Injector, OnInit, ViewEncapsulation } from '@angular/core';\nimport { OSkeletonComponent } from '../../../o-skeleton.component';\nimport { Observable, of } from 'rxjs';\nimport { Util } from '../../../../util/util';\n\n\n@Component({\n  selector: 'o-table-skeleton',\n  templateUrl: './o-table-skeleton.component.html',\n  styleUrls: ['./o-table-skeleton.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-table-skeleton]': 'true'\n  }\n\n})\nexport class OTableSkeletonComponent extends OSkeletonComponent implements OnInit, AfterViewInit {\n  rows$: Observable<number[]>;\n  private readonly cd: ChangeDetectorRef;\n  constructor(protected elRef: ElementRef, protected injector: Injector) {\n    super(injector);\n    this.cd = injector.get(ChangeDetectorRef);\n  }\n\n  ngOnInit(): void {\n    this.rows$ = of([1]);\n  }\n\n  ngAfterViewInit(): void {\n    this.cd.detectChanges();// sure detect changes\n    this.rows$ = of(this.getRows());\n  }\n\n  getRows() {\n\n    const parentElement = this.elRef.nativeElement.parentElement;\n\n    /* available parentHeight = parentElement height  - (header table header height + margin bottom)*/\n    const header = parentElement.querySelector('div.o-table-skeleton-header');\n    const item = parentElement.querySelector('div.o-table-skeleton-item');\n\n    let totalHeightHeader: number;\n    let totalHeightItem: number;\n    if (header) {\n      // Obtén las dimensiones y estilos computados del elemento\n      const headerComputedStyle = getComputedStyle(header);\n      const height = header.offsetHeight; // Altura incluyendo padding\n      const marginTop = parseFloat(headerComputedStyle.marginTop); // Margen superior\n      const marginBottom = parseFloat(headerComputedStyle.marginBottom); // Margen inferior\n\n      // Calcula la altura total\n      totalHeightHeader = height + marginBottom + marginTop;\n    }\n    if (item) {\n      // Obtén las dimensiones y estilos computados del elemento\n      const itemComputedStyle = getComputedStyle(item);\n      const height = item.offsetHeight; // Altura incluyendo padding\n      const marginBottom = parseFloat(itemComputedStyle.marginBottom); // Margen inferior\n\n      // Calcula la altura total\n      totalHeightItem = height + marginBottom;\n    }\n\n    const parentHeight = parentElement?.offsetHeight - totalHeightHeader;\n    if (!Util.isDefined(parentHeight) || parentHeight < 0) {\n      return [];\n    }\n\n    return Array.from(new Array(Math.floor(parentHeight / totalHeightItem)), (x, i) => i + 1);\n\n  }\n\n\n}\n","<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" *ngFor=\"let row of rows$ | async; \">\n  <div fxFlex=\"20%\">\n    <ngx-skeleton-loader fxFlex count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n      [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n  </div>\n  <div fxFlex=\"20%\">\n    <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n      [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n  </div>\n  <div fxFlex=\"20\">\n    <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n      [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n  </div>\n  <div fxFlex=\"20%\">\n    <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n      [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n  </div>\n  <div fxFlex=\"20%\">\n    <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n      [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n  </div>\n</div>\n","import { InjectionToken } from \"@angular/core\";\nimport { OTableGlobalConfig } from \"../../../types/table/o-table-global-config.type\";\n\nexport const O_TABLE_GLOBAL_CONFIG = new InjectionToken<OTableGlobalConfig>('o-table-config');","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { SelectionChange, SelectionModel } from '@angular/cdk/collections';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport { CdkVirtualScrollViewport, VIRTUAL_SCROLL_STRATEGY } from '@angular/cdk/scrolling';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ApplicationRef,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Inject,\n  Injector,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  QueryList,\n  SimpleChange,\n  ViewChild,\n  ViewChildren,\n  ViewContainerRef,\n  ViewEncapsulation,\n  ViewRef\n} from '@angular/core';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatMenu } from '@angular/material/menu';\nimport { PageEvent } from '@angular/material/paginator';\nimport { MatTab, MatTabGroup } from '@angular/material/tabs';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport moment from 'moment';\nimport { BehaviorSubject, combineLatest, Observable, of, Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map } from 'rxjs/operators';\n\nimport { BooleanConverter, BooleanInputConverter } from '../../decorators/input-converter';\nimport { ComponentStateServiceProvider, O_COMPONENT_STATE_SERVICE, OntimizeServiceProvider } from '../../services/factories';\nimport { SnackBarService } from '../../services/snackbar.service';\nimport { OTableComponentStateClass } from '../../services/state/o-table-component-state.class';\nimport { OTableComponentStateService } from '../../services/state/o-table-component-state.service';\nimport { OColumnDisplay, OFilterDefinition, OGroupedColumnTypes, OTableGlobalConfig } from '../../types';\nimport { Expression } from '../../types/expression.type';\nimport { OPermissions } from '../../types/o-permissions.type';\nimport { OQueryDataArgs } from '../../types/query-data-args.type';\nimport { QuickFilterFunction } from '../../types/quick-filter-function.type';\nimport { SQLOrder } from '../../types/sql-order.type';\nimport { OColumnAggregate } from '../../types/table/o-column-aggregate.type';\nimport { ColumnValueFilterOperator, OColumnValueFilter } from '../../types/table/o-column-value-filter.type';\nimport { TableFilterByColumnDialogResult } from '../../types/table/o-table-filter-by-column-data.type';\nimport { OTableInitializationOptions } from '../../types/table/o-table-initialization-options.type';\nimport { OTableMenuPermissions } from '../../types/table/o-table-menu-permissions.type';\nimport { OTablePermissions } from '../../types/table/o-table-permissions.type';\nimport { ObservableWrapper } from '../../util/async';\nimport { Codes } from '../../util/codes';\nimport { FilterExpressionUtils } from '../../util/filter-expression.utils';\nimport { PermissionsUtils } from '../../util/permissions';\nimport { ServiceUtils } from '../../util/service.utils';\nimport { SQLTypes } from '../../util/sqltypes';\nimport { Util } from '../../util/util';\nimport { OContextMenuComponent } from '../contextmenu/o-context-menu.component';\nimport { OFormComponent } from '../form/o-form.component';\nimport { AbstractOServiceComponent } from '../o-service-component.class';\nimport { OTableColumnCalculatedComponent } from './column/calculated/o-table-column-calculated.component';\nimport { OBaseTableCellRenderer } from './column/cell-renderer/o-base-table-cell-renderer.class';\nimport { OColumn } from './column/o-column.class';\nimport { OTableColumnComponent } from './column/o-table-column.component';\nimport { OTableExportButtonComponent } from './extensions';\nimport { OTableContextMenuComponent } from './extensions/contextmenu/o-table-context-menu.component';\nimport { DefaultOTableOptions } from './extensions/default-o-table-options.class';\nimport { OTableFilterByColumnDataDialogComponent } from './extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component';\nimport { OBaseTablePaginator } from './extensions/footer/paginator/o-base-table-paginator.class';\nimport { OTableButtonComponent } from './extensions/header/table-button/o-table-button.component';\nimport { OTableColumnSelectAllDirective } from './extensions/header/table-column-select-all/o-table-column-select-all.directive';\nimport { OFilterColumn } from './extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component';\nimport { OTableColumnsFilterComponent } from './extensions/header/table-columns-filter/o-table-columns-filter.component';\nimport { OTableColumnsGroupingColumnComponent } from './extensions/header/table-columns-grouping/columns/o-table-columns-grouping-column.component';\nimport { OTableHeaderComponent } from './extensions/header/table-header/o-table-header.component';\nimport { OTableInsertableRowComponent } from './extensions/header/table-insertable-row/o-table-insertable-row.component';\nimport { OTableOptionComponent } from './extensions/header/table-option/o-table-option.component';\nimport { OTableDataSourceService } from './extensions/o-table-datasource.service';\nimport { OTableVirtualScrollStrategy } from './extensions/o-table-strategy.service';\nimport { OTableDao } from './extensions/o-table.dao';\nimport { OTableGroupedRow } from './extensions/row/o-table-row-group.class';\nimport { OTableRowExpandableComponent, OTableRowExpandedChange } from './extensions/row/table-row-expandable/o-table-row-expandable.component';\nimport { OMatSort } from './extensions/sort/o-mat-sort';\nimport { OTableBase } from './o-table-base.class';\nimport { O_TABLE_GLOBAL_CONFIG } from './utils/o-table.tokens';\n\nimport type { IOContextMenuContext } from '../../interfaces/o-context-menu.interface';\nimport type { OTableButton } from '../../interfaces/o-table-button.interface';\nimport type { OTableButtons } from '../../interfaces/o-table-buttons.interface';\nimport type { OTableColumnsGrouping } from '../../interfaces/o-table-columns-grouping-interface';\nimport type { OTableDataSource } from '../../interfaces/o-table-datasource.interface';\nimport type { OTableMenu } from '../../interfaces/o-table-menu.interface';\nimport type { OTableOptions } from '../../interfaces/o-table-options.interface';\nimport type { OTablePaginator } from '../../interfaces/o-table-paginator.interface';\nimport type { OTableQuickfilter } from '../../interfaces/o-table-quickfilter.interface';\nimport type { ServiceResponse } from '../../interfaces/service-response.interface';\nexport const DEFAULT_INPUTS_O_TABLE = [\n  // visible-columns [string]: visible columns, separated by ';'. Default: no value.\n  'visibleColumns: visible-columns',\n\n  // visible-columns-by-default [string]: columns that are visible by default, separated by ';'. Default: no value.\n  'defaultVisibleColumns: default-visible-columns',\n\n  // editable-columns [string]: columns that can be edited directly over the table, separated by ';'. Default: no value.\n  // 'editableColumns: editable-columns',\n\n  // sort-columns [string]: initial sorting, with the format column:[ASC|DESC], separated by ';'. Default: no value.\n  'sortColumns: sort-columns',\n\n  'quickFilterCallback: quick-filter-function',\n\n  // delete-button [no|yes]: show delete button. Default: yes.\n  'deleteButton: delete-button',\n\n  // refresh-button [no|yes]: show refresh button. Default: yes.\n  'refreshButton: refresh-button',\n\n  // columns-visibility-button [no|yes]: show columns visibility button. Default: yes.\n  'columnsVisibilityButton: columns-visibility-button',\n\n  // // columns-resize-button [no|yes]: show columns resize button. Default: yes.\n  // 'columnsResizeButton: columns-resize-button',\n\n  // // columns-group-button [no|yes]: show columns group button. Default: yes.\n  // 'columnsGroupButton: columns-group-button',\n\n  // export-button [no|yes]: show export button. Default: yes.\n  'exportButton: export-button',\n\n  // show-configuration-option [yes|no|true|false]: show configuration button in header. Default: yes.\n  'showConfigurationOption: show-configuration-option',\n\n  // show-buttons-text [yes|no|true|false]: show text of header buttons. Default: yes.\n  'showButtonsText: show-buttons-text',\n\n  // select-all-checkbox [yes|no|true|false]:  show in the menu the option of selection check boxes . Default: no.\n  'selectAllCheckbox: select-all-checkbox',\n\n  // pagination-controls [yes|no|true|false]: show pagination controls. Default: yes.\n  'paginationControls: pagination-controls',\n\n  // fix-header [yes|no|true|false]: fixed header and footer when the content is greather than its own height. Default: yes.\n  'fixedHeader: fixed-header',\n\n  // show-title [yes|no|true|false]: show the table title. Default: no.\n  'showTitle: show-title',\n\n  // edition-mode [none | inline | click | dblclick]: edition mode. Default none\n  'editionMode: edition-mode',\n\n  // selection-mode [none | simple | multiple ]: selection mode. Default multiple\n  'selectionMode: selection-mode',\n\n  'horizontalScroll: horizontal-scroll',\n\n  'showPaginatorFirstLastButtons: show-paginator-first-last-buttons',\n\n  'autoAlignTitles: auto-align-titles',\n\n  'multipleSort: multiple-sort',\n  // select-all-checkbox-visible [yes|no|true|false]: show selection check boxes.Default: no.\n  'selectAllCheckboxVisible: select-all-checkbox-visible',\n\n  'orderable',\n\n  'resizable',\n\n  'keepSelectedItems: keep-selected-items',\n\n  // export-mode ['visible'|'local'|'all']: sets the mode to export data. Default: 'visible'\n  'exportMode: export-mode',\n\n  // exportServiceType [ string ]: The service used by the table for exporting it's data, it must implement 'IExportService' interface. Default: 'OntimizeExportService'\n  'exportServiceType: export-service-type',\n\n  // auto-adjust [true|false]: Auto adjust column width to fit its content. Default: true\n  'autoAdjust: auto-adjust',\n\n  // show-filter-option [yes|no|true|false]: show filter menu option in the header menu. Default: yes.\n  'showFilterOption: show-filter-option',\n\n  // visible-export-dialog-buttons [string]: visible buttons in export dialog, separated by ';'. Default/no configured: show all. Empty value: hide all.\n  'visibleExportDialogButtons: visible-export-dialog-buttons',\n\n  // row-class [function, (rowData: any, rowIndex: number) => string | string[]]: adds the class or classes returned by the provided function to the table rows.\n  'rowClass: row-class',\n\n  // filter-column-active-by-default [yes|no|true|false]: show icon filter by default in the table. Default:yes\n  'filterColumnActiveByDefault:filter-column-active-by-default',\n\n  // grouped-columns [string]: grouped columns separated by ';'. Default: no value.\n  'groupedColumns: grouped-columns',\n\n  // groupable[boolean]: Indicates whether or not the column can be groupable. By default: true\n  'groupable',\n\n  // expand-groups-same-level[boolean]: Indicates if click in row expands/collapses all rows on same level. By default: true\n  'expandGroupsSameLevel: expand-groups-same-level',\n\n  // collapse-grouped-columns [yes|no|true|false]: Whether collapse the grouped columns by default\n  'collapseGroupedColumns: collapse-grouped-columns',\n\n  // virtual-scroll [yes|no|true|false]: Whether enabled or not the virtual scroll\n  'virtualScroll: virtual-scroll',\n\n  //context-menu [yes|no|true|false]: Indicates whether or not to include the table context menu\n  'contextMenu: context-menu',\n\n  // show-expandable-icon-function [function]: Expandable function to check if expandable has data to show or not icon\n  'showExpandableIconFunction: show-expandable-icon-function',\n\n  // show-report-on-demand-option [yes|no|true|false]: show report on demand option in the table menu. Default: yes.\n  'showReportOnDemandOption: show-report-on-demand-option',\n\n  // show-charts-on-demand-option [yes|no|true|false]: show charts on demand option in the header menu\n  'showChartsOnDemandOption: show-charts-on-demand-option',\n\n  // show-reset-width-option [yes|no|true|false]: show reset width menu option in the header menu\n  'showResetWidthOption: show-reset-width-option',\n\n  'disableSelectionFunction: disable-selection-function',\n\n  'nonHidableColumns: non-hidable-columns',\n  'readOnly: read-only',\n  'readOnlyConfiguration: read-only-configuration',\n  'showNotificationOfReadOnly: show-notification-of-read-only'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE = [\n  'onRowSelected',\n  'onRowDeselected',\n  'onRowDeleted'\n];\n\nconst stickyHeaderSelector = '.mat-mdc-header-row .mat-mdc-table-sticky';\nconst stickyFooterSelector = '.mat-mdc-footer-row .mat-mdc-table-sticky';\nconst rowSelector = '.mat-mdc-row';\nconst headerSelector = '.mat-mdc-header-row';\nconst footerSelector = '.mat-mdc-header-row';\n\ntype DisableSelectionFunction = (item: any) => boolean;\n\n@Component({\n  selector: 'o-table',\n  templateUrl: './o-table.component.html',\n  styleUrls: ['./o-table.component.scss'],\n  providers: [\n    OntimizeServiceProvider,\n    ComponentStateServiceProvider,\n    OTableDataSourceService,\n    { provide: O_COMPONENT_STATE_SERVICE, useClass: OTableComponentStateService },\n    { provide: VIRTUAL_SCROLL_STRATEGY, useClass: OTableVirtualScrollStrategy },\n    { provide: OTableBase, useExisting: forwardRef(() => OTableComponent) }\n  ],\n  animations: [\n    trigger('detailExpand', [\n      state('collapsed', style({ height: '0px', minHeight: '0' })),\n      state('expanded', style({ height: '*' })),\n      transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n    ])\n  ],\n  inputs: DEFAULT_INPUTS_O_TABLE,\n  outputs: DEFAULT_OUTPUTS_O_TABLE,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-table]': 'true',\n    '[class.ontimize-table]': 'true',\n    '[class.o-table-fixed]': 'fixedHeader',\n    '[class.o-table-disabled]': '!enabled',\n    '(document:click)': 'handleDOMClick($event)'\n  }\n})\nexport class OTableComponent extends AbstractOServiceComponent<OTableComponentStateService> implements OnInit, OnDestroy, AfterViewInit, AfterContentInit {\n  public static DEFAULT_BASE_SIZE_SPINNER = 100;\n  public static FIRST_LAST_CELL_PADDING = 24;\n  public static EXPANDED_ROW_CONTAINER_CLASS = 'expanded-row-container-';\n  public static AVAILABLE_GROUPING_COLUMNS_RENDERERS = ['currency', 'integer', 'real'];\n\n  public DETAIL_MODE_NONE = Codes.DETAIL_MODE_NONE;\n  public EDIT_MODE_NONE = Codes.EDITION_MODE_NONE;\n\n  protected snackBarService: SnackBarService;\n\n  public paginator: OTablePaginator;\n\n  sort: OMatSort;\n  clickSubject = new Subject<{ row: any, column: any, cellRef: any, rowIndex: number, event: MouseEvent }>();\n  dblclickSubject = new Subject<{ row: any, column: any, cellRef: any, rowIndex: number, event: MouseEvent }>();\n  protected clickSubjectSubscription: Subscription;\n  protected dbClickSubjectSubscription: Subscription;\n\n  @ViewChild(OMatSort)\n  set oMatSort(_sort: OMatSort) {\n    if (Util.isDefined(_sort) &&\n      (!Util.isDefined(this.sort) || (Util.isDefined(this.sort) && Util.stringify(this.sort) !== Util.stringify(_sort)))) {\n      this.sort = _sort;\n      this.setDatasource();\n    }\n  };\n\n  public virtualScrollViewport: CdkVirtualScrollViewport;\n\n  public oTableGlobalConfig: OTableGlobalConfig;\n  @ViewChild('virtualScrollViewPort') set cdkVirtualScrollViewport(value: CdkVirtualScrollViewport) {\n    if (value != this.virtualScrollViewport) {\n      this.virtualScrollViewport = value;\n      this.updateHeaderAndFooterStickyPositions();\n      if (this.checkViewportSizeSubscription) {\n        this.checkViewportSizeSubscription.unsubscribe();\n      }\n\n      if (this.virtualScrollViewport) {\n        this.checkViewportSizeSubscription = this.checkViewPortSubject.subscribe(x => {\n          if (x) {\n            this.checkViewportSize();\n          }\n        });\n      }\n    }\n  }\n\n  // only for insideTabBugWorkaround\n  protected tableHeaders: Array<OTableHeaderComponent> = [];\n\n  @ViewChild('spinnerContainer', { read: ElementRef })\n  spinnerContainer: ElementRef;\n\n  @ContentChild(OTableRowExpandableComponent)\n  tableRowExpandable: OTableRowExpandableComponent;\n\n  _filterColumns: Array<OFilterColumn>;\n  portalHost: Array<DomPortalOutlet> = [];\n  onDataLoadedCellRendererSubscription: Subscription;\n\n\n\n  public tableContextMenu: OContextMenuComponent;\n\n  @BooleanInputConverter()\n  selectAllCheckbox: boolean = false;\n  @BooleanInputConverter()\n  exportButton: boolean = true;\n  @BooleanInputConverter()\n  showConfigurationOption: boolean = true;\n  @BooleanInputConverter()\n  columnsVisibilityButton: boolean = true;\n  @BooleanInputConverter()\n  showFilterOption: boolean = true;\n  @BooleanInputConverter()\n  showReportOnDemandOption: boolean = true;\n  @BooleanInputConverter()\n  showChartsOnDemandOption: boolean = true;\n  @BooleanInputConverter()\n  showButtonsText: boolean = true;\n  @BooleanInputConverter()\n  filterColumnActiveByDefault: boolean = true;\n  @BooleanInputConverter()\n  showResetWidthOption: boolean = true;\n  @BooleanInputConverter()\n  readOnly: boolean = false;\n  @BooleanInputConverter()\n  showNotificationOfReadOnly: boolean = false;\n\n  // Expandable input callback function\n  showExpandableIconFunction: (row: any, rowIndex: number) => boolean | Promise<boolean> | Observable<boolean>;\n\n  readOnlyFunction: (configuration: any) => boolean;\n  readOnlyConfiguration: any;\n\n  isComponentReadOnly(selector: string, attr: string) {\n    return this.readOnlyConfiguration?.[selector]?.[attr];\n  }\n  protected _oTableOptions: OTableOptions;\n\n  get oTableOptions(): OTableOptions {\n    return this._oTableOptions;\n  }\n\n  set oTableOptions(value: OTableOptions) {\n    this._oTableOptions = value;\n  }\n\n  set quickFilter(value: boolean) {\n    value = Util.parseBoolean(String(value));\n    this._quickFilter = value;\n    this._oTableOptions.filter = value;\n  }\n\n  get quickFilter(): boolean {\n    return this._quickFilter;\n  }\n\n  set filterCaseSensitive(value: boolean) {\n    this._filterCaseSensitive = BooleanConverter(value);\n    if (this._oTableOptions) {\n      this._oTableOptions.filterCaseSensitive = this._filterCaseSensitive;\n    }\n  }\n\n  get filterCaseSensitive(): boolean {\n    return this._filterCaseSensitive;\n  }\n\n  @BooleanInputConverter()\n  insertButton: boolean = true;\n  @BooleanInputConverter()\n  refreshButton: boolean = true;\n  @BooleanInputConverter()\n  deleteButton: boolean = true;\n  @BooleanInputConverter()\n  fixedHeader: boolean = true;\n  @BooleanInputConverter()\n  showTitle: boolean = false;\n  editionMode: string = Codes.EDITION_MODE_NONE;\n  selectionMode: string = Codes.SELECTION_MODE_MULTIPLE;\n\n  protected _horizontalScroll = false;\n  @BooleanInputConverter()\n  set horizontalScroll(value: boolean) {\n    this._horizontalScroll = BooleanConverter(value);\n    this.refreshColumnsWidthFromOriginalDefinition();\n  }\n\n  get horizontalScroll(): boolean {\n    return this._horizontalScroll;\n  }\n\n  @BooleanInputConverter()\n  showPaginatorFirstLastButtons: boolean = true;\n  @BooleanInputConverter()\n  autoAlignTitles: boolean = true;\n  @BooleanInputConverter()\n  multipleSort: boolean = true;\n  @BooleanInputConverter()\n  orderable: boolean = true;\n  @BooleanInputConverter()\n  resizable: boolean = true;\n  @BooleanInputConverter()\n  autoAdjust: boolean = true;\n  @BooleanInputConverter()\n  groupable: boolean = true;\n  @BooleanInputConverter()\n  expandGroupsSameLevel: boolean = true;\n  @BooleanInputConverter()\n  collapseGroupedColumns: boolean = false;\n  @BooleanInputConverter()\n  virtualScroll: boolean = true;\n  @BooleanInputConverter()\n  contextMenu: boolean = true;\n  // Maintaining this getter to allow component extensions (avoiding a breaking change)\n  get enabled(): boolean {\n    return this.oenabled;\n  }\n  protected _selectAllCheckboxVisible: boolean;\n  set selectAllCheckboxVisible(value: boolean) {\n    this._selectAllCheckboxVisible = BooleanConverter(value);\n    if (this.state) {\n      this._selectAllCheckboxVisible = BooleanConverter(this.state.selectColumnVisible);\n    }\n    this._oTableOptions.selectColumn.visible = this._selectAllCheckboxVisible;\n    this.initializeCheckboxColumn();\n  }\n\n  get selectAllCheckboxVisible(): boolean {\n    return this._selectAllCheckboxVisible;\n  }\n\n  @BooleanInputConverter()\n  keepSelectedItems: boolean = true;\n\n  public exportMode: string = Codes.EXPORT_MODE_VISIBLE;\n  public exportServiceType: string;\n  public visibleExportDialogButtons: string;\n  public daoTable: OTableDao | null;\n  public dataSource: OTableDataSource | null;\n  public visibleColumns: string;\n  public searcheableColumns: string[] = [];\n  public defaultVisibleColumns: string;\n  public groupedColumns: string;\n  public nonHidableColumns: string;\n\n  public sortColumns: string;\n  public groupedColumnTypes: OGroupedColumnTypes[] = [];\n  public rowClass: (rowData: any, rowIndex: number) => string | string[];\n\n  /*parsed inputs variables */\n  protected _visibleColArray: string[] = [];\n\n  get visibleColArray(): any[] {\n    return this._visibleColArray;\n  }\n\n  set visibleColArray(arg: any[]) {\n    const permissionsBlocked = this.permissions && this.permissions.columns ? this.permissions.columns.filter(col => col.visible === false).map(col => col.attr) : [];\n    const permissionsChecked = arg.filter(value => permissionsBlocked.indexOf(value) === -1);\n    this._visibleColArray = permissionsChecked;\n    if (this._oTableOptions) {\n      const containsSelectionCol = this._oTableOptions.visibleColumns.indexOf(Codes.NAME_COLUMN_SELECT) !== -1;\n      const containsExpandableCol = this._oTableOptions.visibleColumns.indexOf(Codes.NAME_COLUMN_EXPANDABLE) !== -1;\n      if (containsSelectionCol) {\n        this._visibleColArray.unshift(Codes.NAME_COLUMN_SELECT);\n      }\n      if (containsSelectionCol && containsExpandableCol) {\n        this._visibleColArray = [this._visibleColArray[0]].concat(Codes.NAME_COLUMN_EXPANDABLE, this._visibleColArray.splice(1));\n\n      } else {\n        if (containsExpandableCol) {\n          this._visibleColArray.unshift(Codes.NAME_COLUMN_EXPANDABLE);\n        }\n      }\n      this._oTableOptions.visibleColumns = this._visibleColArray;\n      this.groupingHeadersRows = this._oTableOptions.visibleColumns.map(visibleCol => 'groupHeader-' + visibleCol);\n    }\n  }\n\n  sortColArray: SQLOrder[] = [];\n  /*end of parsed inputs variables */\n\n  protected tabGroupContainer: MatTabGroup;\n  protected tabContainer: MatTab;\n  tabGroupChangeSubscription: Subscription;\n\n  protected pendingQuery: boolean = false;\n  protected pendingQueryFilter = undefined;\n\n  protected setStaticData: boolean = false;\n  protected avoidQueryColumns: Array<any> = [];\n  protected asyncLoadColumns: Array<any> = [];\n  protected asyncLoadSubscriptions: object = {};\n\n  protected querySubscription: Subscription;\n  protected contextMenuSubscription: Subscription;\n  protected virtualScrollSubscription: Subscription;\n  protected checkViewportSizeSubscription: Subscription;\n  protected finishQuerySubscription: boolean = false;\n\n  public onRowSelected: EventEmitter<any> = new EventEmitter();\n  public onRowDeselected: EventEmitter<any> = new EventEmitter();\n  public onRowDeleted: EventEmitter<any> = new EventEmitter();\n  public onReinitialize: EventEmitter<any> = new EventEmitter();\n  public onContentChange: EventEmitter<any> = new EventEmitter();\n  public onFilterByColumnChange: EventEmitter<any> = new EventEmitter();\n\n  protected selectionChangeSubscription: Subscription;\n\n  public oTableFilterByColumnDataDialogComponent: OTableFilterByColumnDataDialogComponent;\n  public oTableColumnsFilterComponent: OTableColumnsFilterComponent;\n\n  private readonly showTotalsSubject = new BehaviorSubject<boolean>(false);\n  public showTotals: Observable<boolean> = this.showTotalsSubject.asObservable();\n  private readonly loadingSortingSubject = new BehaviorSubject<boolean>(false);\n  protected loadingSorting: Observable<boolean> = this.loadingSortingSubject.asObservable();\n  private readonly loadingScrollSubject = new BehaviorSubject<boolean>(false);\n  public loadingScroll: Observable<boolean> = this.loadingScrollSubject.asObservable();\n\n  public showLoading: Observable<boolean> = combineLatest([\n    this.loading.pipe(debounceTime(200)), // avoid displaying loading spinner for a very short time\n    this.loadingSorting,\n    this.loadingScroll\n  ]).pipe(\n    distinctUntilChanged((prev, curr) => prev[0] === curr[0] && prev[1] === curr[1] && prev[2] === curr[2]), // avoid emitting same value multiple times\n    map((res: boolean[]) => res.some(r => r))\n  );\n\n  public oTableInsertableRowComponent: OTableInsertableRowComponent;\n  public showFirstInsertableRow: boolean = false;\n  public showLastInsertableRow: boolean = false;\n  public expandableItem: SelectionModel<any>;\n\n  protected clickTimer;\n  protected clickDelay = 200;\n  protected clickPrevent = false;\n  public editingCell: any;\n  protected editingRow: any;\n\n  set currentPage(val: number) {\n    this._currentPage = val;\n    if (this.paginator) {\n      this.paginator.pageIndex = val;\n      if (this.matpaginator) {\n        this.matpaginator.pageIndex = val;\n      }\n    }\n  }\n\n  get currentPage(): number {\n    return this._currentPage;\n  }\n\n  public oTableQuickFilterComponent: OTableQuickfilter;\n  protected sortSubscription: Subscription;\n  protected onRenderedDataChange: Subscription;\n  protected previousRendererData;\n\n  quickFilterCallback: QuickFilterFunction;\n  disableSelectionFunction: DisableSelectionFunction;\n\n  @ViewChild('tableBody')\n  protected tableBodyEl: ElementRef;\n  @ViewChild('tableHeader', { read: ElementRef })\n  tableHeaderEl: ElementRef;\n  @ViewChild('tableToolbar', { read: ElementRef })\n  tableToolbarEl: ElementRef;\n\n  horizontalScrolled: boolean;\n  public onUpdateScrolledState: EventEmitter<any> = new EventEmitter();\n  public rowWidth;\n\n  storePaginationState: boolean = false;\n\n  /* In the case the table havent paginationControl and pageable, the table has pagination virtual*/\n  pageScrollVirtual = 1;\n\n  public static DEFAULT_ROW_HEIGHT = 36;\n  protected permissions: OTablePermissions;\n  matMenu: MatMenu;\n\n  @ViewChild('tableMenu')\n  oTableMenu: OTableMenu;\n\n  @ContentChildren(OTableOptionComponent)\n  tableOptions: QueryList<OTableOptionComponent>;\n\n  oTableButtons: OTableButtons;\n\n  @ContentChildren(OTableButtonComponent)\n  tableButtons: QueryList<OTableButton>;\n\n  @ContentChild('o-table-quickfilter', { static: true })\n  quickfilterContentChild: OTableQuickfilter;\n\n\n  @ContentChildren(OTableExportButtonComponent)\n  exportOptsTemplate: QueryList<OTableExportButtonComponent>\n\n  @ContentChild(OTableColumnSelectAllDirective)\n  tableColumnSelectAllContentChild: OTableColumnSelectAllDirective;\n\n\n\n  public groupedColumnsArray: string[] = [];\n  @HostListener('window:resize', [])\n  updateScrolledState(): void {\n    if (this.horizontalScroll) {\n      setTimeout(() => {\n        const bodyWidth = this.tableBodyEl.nativeElement.clientWidth;\n        const scrollWidth = this.tableBodyEl.nativeElement.scrollWidth;\n        const previousState = this.horizontalScrolled;\n        this.horizontalScrolled = scrollWidth > bodyWidth;\n        if (previousState !== this.horizontalScrolled) {\n          this.onUpdateScrolledState.emit(this.horizontalScrolled);\n        }\n      }, 0);\n    }\n    this.checkViewportSize();\n  }\n\n  protected _isColumnFiltersActive: boolean = false;\n\n  get isColumnFiltersActive(): boolean {\n    return this._isColumnFiltersActive;\n  }\n\n  set isColumnFiltersActive(val: boolean) {\n    this._isColumnFiltersActive = val;\n  }\n\n  groupingHeadersRows: string[] = [];\n\n  public oTableColumnsGroupingComponent: OTableColumnsGrouping;\n\n  @ContentChild(OTableContextMenuComponent, { static: true })\n  contextMenuContentChild: OTableContextMenuComponent;\n\n  protected triggerSelectionEvents: boolean = true;\n\n  @ViewChildren(MatTooltip)\n  tooltip: QueryList<MatTooltip>;\n\n  constructor(\n    public injector: Injector,\n    elRef: ElementRef,\n    protected dialog: MatDialog,\n    private readonly _viewContainerRef: ViewContainerRef,\n    private readonly appRef: ApplicationRef,\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    @Optional() @Inject(VIRTUAL_SCROLL_STRATEGY) public readonly scrollStrategy: OTableVirtualScrollStrategy\n  ) {\n    super(injector, elRef, form);\n\n    this._oTableOptions = new DefaultOTableOptions();\n\n    try {\n      this.tabGroupContainer = this.injector.get(MatTabGroup);\n      this.tabContainer = this.injector.get(MatTab);\n    } catch (error) {\n      // Do nothing due to not always is contained on tab.\n    }\n\n    this.snackBarService = this.injector.get(SnackBarService);\n    this.getInjectionTokenConfig();\n  }\n\n  private getInjectionTokenConfig() {\n    try {\n      const oTableGlobalConfig = this.injector.get(O_TABLE_GLOBAL_CONFIG);\n      if (Util.isDefined(oTableGlobalConfig.autoAdjust)) {\n        this.autoAdjust = oTableGlobalConfig.autoAdjust;\n      };\n      if (Util.isDefined(oTableGlobalConfig.autoAlignTitles)) {\n        this.autoAlignTitles = oTableGlobalConfig.autoAlignTitles;\n      }\n      if (Util.isDefined(oTableGlobalConfig.filterColumnActiveByDefault)) {\n        this.filterColumnActiveByDefault = oTableGlobalConfig.filterColumnActiveByDefault;\n      }\n      if (Util.isDefined(oTableGlobalConfig.editionMode) && Codes.isValidEditionMode(oTableGlobalConfig.editionMode)) {\n        this.editionMode = oTableGlobalConfig.editionMode;\n      }\n      if (Util.isDefined(oTableGlobalConfig.detailMode && Codes.isValidDetailMode(oTableGlobalConfig.detailMode))) {\n        this.detailMode = oTableGlobalConfig.detailMode;\n      }\n\n      if (Util.isDefined(oTableGlobalConfig.rowHeight) && Codes.isValidRowHeight(oTableGlobalConfig.rowHeight)) {\n        this.rowHeight = oTableGlobalConfig.rowHeight;\n      };\n\n      if (Util.isDefined(oTableGlobalConfig.showChartsOnDemandOption)) {\n        this.showChartsOnDemandOption = oTableGlobalConfig.showChartsOnDemandOption;\n      };\n      if (Util.isDefined(oTableGlobalConfig.showReportOnDemandOption)) {\n        this.showReportOnDemandOption = oTableGlobalConfig.showReportOnDemandOption;\n      };\n    } catch (error) {\n      // Do nothing because is optional\n    }\n\n  }\n\n  get state(): OTableComponentStateClass {\n    return this.componentStateService.state;\n  }\n\n  ngOnInit() {\n    this.initialize();\n    if (this.oTableButtons && this.tableButtons && this.tableButtons.length > 0) {\n      this.oTableButtons.registerButtons(this.tableButtons.toArray());\n    }\n  }\n\n  ngAfterViewInit() {\n    super.afterViewInit();\n    this.initTableAfterViewInit();\n    if (this.oTableMenu) {\n      this.matMenu = this.oTableMenu.matMenu;\n      this.oTableMenu.registerOptions(this.tableOptions.toArray());\n    }\n\n    if (this.tableRowExpandable) {\n      this.expandableItem = new SelectionModel<any>(this.tableRowExpandable.multiple, []);\n      this.createExpandableColumn();\n    }\n  }\n\n  ngAfterContentInit() {\n    if (this.tableColumnSelectAllContentChild) {\n      //\n      this.setCustomDefinitionInSelectColumn(this.tableColumnSelectAllContentChild)\n    }\n  }\n\n  setCustomDefinitionInSelectColumn(definition: OTableColumnSelectAllDirective) {\n    if (definition.title) {\n      this._oTableOptions.selectColumn.title = definition.title;\n    }\n    if (definition.width) {\n      this._oTableOptions.selectColumn.width = definition.width;\n    }\n    if (definition.minWidth) {\n      this._oTableOptions.selectColumn.minWidth = definition.minWidth;\n    }\n    if (definition.maxWidth) {\n      this._oTableOptions.selectColumn.maxWidth = definition.maxWidth;\n    }\n    if (definition.resizable) {\n      this._oTableOptions.selectColumn.resizable = definition.resizable;\n    }\n  }\n\n  ngAfterViewChecked() {\n    this.cd.detectChanges();\n  }\n\n  ngOnChanges(changes: { [propName: string]: SimpleChange }): void {\n    super.ngOnChanges(changes);\n    if (Util.isDefined(changes.autoAdjust) && changes.autoAdjust.currentValue !== changes.autoAdjust.previousValue) {\n      this.autoAdjust = changes.autoAdjust.currentValue;\n    }\n  }\n\n  updateHeaderAndFooterStickyPositions() {\n    if (this.virtualScrollSubscription) {\n      this.virtualScrollSubscription.unsubscribe();\n    }\n\n    if (this.virtualScrollViewport) {\n      const zone = this.injector.get(NgZone);\n      this.virtualScrollSubscription = this.scrollStrategy.stickyChange.pipe(\n        distinctUntilChanged(),\n        filter(() => this.fixedHeader || this.hasInsertableRow())\n      ).subscribe(x => {\n        zone.run(() => {\n          this.elRef.nativeElement.querySelectorAll(stickyHeaderSelector).forEach((el: HTMLElement) => {\n            el.style.top = - x + 'px';\n          });\n          this.elRef.nativeElement.querySelectorAll(stickyFooterSelector).forEach((el: HTMLElement) => {\n            el.style.bottom = x + 'px';\n          });\n        });\n      });\n    }\n  }\n\n  protected createExpandableColumn() {\n    this._oTableOptions.expandableColumn = new OColumn();\n    this._oTableOptions.expandableColumn.visible = this.tableRowExpandable && this.tableRowExpandable.expandableColumnVisible;\n    this.updateStateExpandedColumn();\n  }\n\n  ngOnDestroy() {\n\n    //detach all porta host created\n    if (this.portalHost) {\n      this.portalHost.forEach(x => x.detach());\n    }\n    this.destroy();\n  }\n\n  getSuffixColumnInsertable() {\n    return Codes.SUFFIX_COLUMN_INSERTABLE;\n  }\n\n  getActionsPermissions(): OPermissions[] {\n    return this.permissions ? (this.permissions.actions || []) : [];\n  }\n\n  getMenuPermissions(): OTableMenuPermissions {\n    const result: OTableMenuPermissions = this.permissions ? this.permissions.menu : undefined;\n    return result ? result : {\n      visible: true,\n      enabled: true,\n      items: []\n    };\n  }\n\n  getOColumnPermissions(attr: string): OPermissions {\n    const columns = this.permissions ? (this.permissions.columns || []) : [];\n    return columns.find(comp => comp.attr === attr) || { attr: attr, enabled: true, visible: true };\n  }\n\n  protected getActionPermissions(attr: string): OPermissions {\n    const actionsPerm = this.permissions ? (this.permissions.actions || []) : [];\n    const permissions: OPermissions = actionsPerm.find(p => p.attr === attr);\n    return permissions || {\n      attr: attr,\n      visible: true,\n      enabled: true\n    };\n  }\n\n  protected checkEnabledActionPermission(attr: string) {\n    const actionsPerm = this.permissions ? (this.permissions.actions || []) : [];\n    const permissions: OPermissions = actionsPerm.find(p => p.attr === attr);\n    const enabledPermision = PermissionsUtils.checkEnabledPermission(permissions);\n    if (!enabledPermision) {\n      this.snackBarService.open('MESSAGES.OPERATION_NOT_ALLOWED_PERMISSION');\n    }\n    return enabledPermision;\n  }\n\n  /**\n   * Method what initialize vars and configuration\n   */\n  initialize(): any {\n    super.initialize();\n\n    this._oTableOptions = new DefaultOTableOptions();\n    if (this.tabGroupContainer && this.tabContainer) {\n      this.registerTabListener();\n    }\n\n    this.registerClickListener();\n    this.registerDblClickListener();\n    // Initialize params of the table\n    this.initializeParams();\n\n    this.initializeDao();\n\n    this.permissions = this.permissionsService.getTablePermissions(this.oattr, this.actRoute);\n  }\n\n  protected registerClickListener() {\n    if (this.clickSubjectSubscription) {\n      this.clickSubjectSubscription.unsubscribe();\n    }\n    this.clickSubjectSubscription = this.clickSubject\n      .pipe(debounceTime(this.clickDelay)) // Espera el tiempo configurado antes de ejecutar\n      .subscribe(({ row, column, cellRef, rowIndex, event }) => {\n        if (this.oenabled && !this.readOnly && column.editor\n          && (this.detailMode !== Codes.DETAIL_MODE_CLICK)\n          && (this.editionMode === Codes.EDITION_MODE_CLICK)) {\n          this.activateColumnEdition(column, row, cellRef);\n        } else {\n          this.doHandleClick(row, column.attr, rowIndex, event);\n        }\n      });\n  }\n\n  protected registerDblClickListener() {\n    if (this.dbClickSubjectSubscription) {\n      this.dbClickSubjectSubscription.unsubscribe();\n    }\n\n    this.dbClickSubjectSubscription = this.dblclickSubject\n      .pipe(debounceTime(this.clickDelay)) // Espera el tiempo configurado antes de ejecutar\n      .subscribe(({ row, column, cellRef, rowIndex, event }) => {\n        if (this.readOnly) {\n          if (this.showNotificationOfReadOnly) {\n            this.snackBarService.open('MESSAGES.OPERATION_NOT_ALLOWED_READONLY');\n          }\n          return;\n        }\n        if (this.oenabled && column.editor\n          && (!Codes.isDoubleClickMode(this.detailMode))\n          && (Codes.isDoubleClickMode(this.editionMode))) {\n          this.activateColumnEdition(column, row, cellRef);\n        } else {\n          this.onDoubleClick.emit({ row: row, rowIndex: rowIndex, mouseEvent: event, columnName: column.attr, cell: row[column.attr] });\n          if (this.oenabled && Codes.isDoubleClickMode(this.detailMode)) {\n            this.saveDataNavigationInLocalStorage();\n            this.viewDetail(row);\n          }\n        }\n      })\n  }\n\n  protected initializeDao() {\n    // Configure dao methods\n    const queryMethodName = this.pageable ? this.paginatedQueryMethod : this.queryMethod;\n    const methods = {\n      query: queryMethodName,\n      update: this.updateMethod,\n      delete: this.deleteMethod,\n      insert: this.insertMethod\n    };\n\n    if (this.staticData) {\n      this.queryOnBind = false;\n      this.queryOnInit = false;\n      this.daoTable = new OTableDao(undefined, this.entity, methods);\n      this.setDataArray(this.staticData);\n    } else {\n      this.configureService();\n      this.daoTable = new OTableDao(this.dataService, this.entity, methods);\n    }\n  }\n\n  /**\n   * Allow reinitialize table adding options\n   * @param options\n   */\n  reinitialize(options: OTableInitializationOptions): void {\n    if (options) {\n      const clonedOpts = Object.assign({}, options);\n      if (clonedOpts.hasOwnProperty('entity')) {\n        this.entity = clonedOpts.entity;\n      }\n      if (clonedOpts.hasOwnProperty('service')) {\n        this.service = clonedOpts.service;\n      }\n      if (clonedOpts.hasOwnProperty('columns')) {\n        this.columns = clonedOpts.columns;\n      }\n      if (clonedOpts.hasOwnProperty('visibleColumns')) {\n        this.visibleColumns = clonedOpts.visibleColumns;\n      }\n      if (clonedOpts.hasOwnProperty('defaultVisibleColumns')) {\n        this.defaultVisibleColumns = clonedOpts.defaultVisibleColumns;\n      }\n      if (clonedOpts.hasOwnProperty('keys')) {\n        this.keys = clonedOpts.keys;\n      }\n      if (clonedOpts.hasOwnProperty('sortColumns')) {\n        this.sortColumns = clonedOpts.sortColumns;\n      }\n      if (clonedOpts.hasOwnProperty('parentKeys')) {\n        this.parentKeys = clonedOpts.parentKeys;\n      }\n\n      if (clonedOpts.hasOwnProperty('filterColumns')) {\n        if (!this.oTableColumnsFilterComponent) {\n          this.oTableColumnsFilterComponent = new OTableColumnsFilterComponent(this.injector, this);\n          this.oTableMenu.onVisibleFilterOptionChange.next(this.filterColumnActiveByDefault);\n          this.oTableColumnsFilterComponent.columns = clonedOpts.filterColumns;\n        }\n        else {\n          this.oTableColumnsFilterComponent.columns = this.searcheableColumns.join(\";\");\n        }\n      }\n    }\n\n    this.destroy();\n    this.initialize();\n    this.state.reset(this.pageable);\n    this.initTableAfterViewInit();\n    this.onReinitialize.emit(null);\n  }\n\n  protected initTableAfterViewInit() {\n    this.parseVisibleColumns();\n    this.parseSearcheableColumns();\n    this.setDatasource();\n    this.parseGroupedColumns();\n    this.parseGroupedColumnTypes();\n    this.parseSortColumns();\n    this.setFiltersConfiguration();\n    this.addDefaultRowButtons();\n    if (Util.isDefined(this.oTableColumnsGroupingComponent)) {\n      this.setGroupColumns(this.oTableColumnsGroupingComponent.columnsArray);\n    }\n    if (this.queryOnInit) {\n      this.queryData();\n    }\n  }\n  parseSearcheableColumns() {\n    this.searcheableColumns = this.visibleColArray.filter(col => {\n      const oCol = this.getOColumn(col);\n      return oCol && oCol.searchable;\n    })\n\n  }\n  destroy() {\n    super.destroy();\n    if (this.tabGroupChangeSubscription) {\n      this.tabGroupChangeSubscription.unsubscribe();\n    }\n    if (this.selectionChangeSubscription) {\n      this.selectionChangeSubscription.unsubscribe();\n    }\n    if (this.sortSubscription) {\n      this.sortSubscription.unsubscribe();\n    }\n    if (this.onRenderedDataChange) {\n      this.onRenderedDataChange.unsubscribe();\n    }\n    if (this.contextMenuSubscription) {\n      this.contextMenuSubscription.unsubscribe();\n    }\n\n    if (this.virtualScrollSubscription) {\n      this.virtualScrollSubscription.unsubscribe();\n    }\n\n    if (this.checkViewportSizeSubscription) {\n      this.checkViewportSizeSubscription.unsubscribe();\n    }\n\n    if (this.scrollStrategy) {\n      this.scrollStrategy.destroy();\n    }\n\n    if (this.clickSubjectSubscription) {\n      this.clickSubjectSubscription.unsubscribe();\n    }\n\n    if (this.dbClickSubjectSubscription) {\n      this.dbClickSubjectSubscription.unsubscribe();\n    }\n\n    Object.keys(this.asyncLoadSubscriptions).forEach(idx => {\n      if (this.asyncLoadSubscriptions[idx]) {\n        this.asyncLoadSubscriptions[idx].unsubscribe();\n      }\n    });\n  }\n\n  /**\n   * Method update store localstorage, call of the ILocalStorage\n   */\n  getDataToStore() {\n    return this.componentStateService.getDataToStore();\n  }\n\n  registerQuickFilter(arg: any) {\n    const quickFilter = (arg as OTableQuickfilter);\n    // forcing quickFilterComponent to be undefined, table uses oTableQuickFilterComponent\n    this.quickFilterComponent = undefined;\n    this.oTableQuickFilterComponent = quickFilter;\n    if (Util.isDefined(this.oTableQuickFilterComponent)) {\n      this.oTableQuickFilterComponent.setValue(this.state.quickFilterValue, false);\n      this.quickFilterSubscription = this.oTableQuickFilterComponent.onChange.subscribe(val => {\n        this.onSearch.emit(val);\n      });\n    }\n  }\n\n  registerPagination(value: OTablePaginator) {\n    this.paginationControls = true;\n    this.paginator = value;\n  }\n\n  registerContextMenu(value: OContextMenuComponent): void {\n    this.tableContextMenu = value;\n    this.contextMenuSubscription = this.tableContextMenu.onShow.subscribe((params: IOContextMenuContext) => {\n      params.class = 'o-table-context-menu ' + this.rowHeight;\n      if (params.data && !this.isRowSelected(params.data.rowValue)) {\n        this.clearSelection();\n        this.selectedRow(params.data.rowValue);\n      }\n    });\n  }\n\n  registerDefaultColumn(column: string) {\n    if (Util.isDefined(this.getOColumn(column))) {\n      // a default column definition trying to replace an already existing definition\n      return;\n    }\n    const colDef: OColumn = this.createOColumn(column, this);\n    this.pushOColumnDefinition(colDef);\n  }\n\n  /**\n   * Store all columns and properties in var columnsArray\n   * @param column\n   */\n  registerColumn(column: OTableColumnComponent | OTableColumnCalculatedComponent | any) {\n    const columnAttr = (typeof column === 'string') ? column : column.attr;\n    const columnPermissions: OPermissions = this.getOColumnPermissions(columnAttr);\n    if (!columnPermissions.visible) {\n      return;\n    }\n\n    if (typeof column === 'string') {\n      this.registerDefaultColumn(column);\n      return;\n    }\n\n    const columnDef = this.getOColumn(column.attr);\n    if (Util.isDefined(columnDef) && Util.isDefined(columnDef.definition)) {\n      // a o-table-column definition trying to replace an already existing o-table-column definition\n      return;\n    }\n\n    const colDef: OColumn = this.createOColumn(column.attr, this, column);\n    let columnWidth = this.getColumnWidthFromState(colDef);\n    if (Util.isDefined(columnWidth)) {\n      colDef.width = columnWidth;\n    }\n    if (column && (column.asyncLoad || column.type === 'action')) {\n      this.avoidQueryColumns.push(column.attr);\n      if (column.asyncLoad) {\n        this.asyncLoadColumns.push(column.attr);\n      }\n    }\n    this.pushOColumnDefinition(colDef);\n  }\n\n  protected pushOColumnDefinition(colDef: OColumn) {\n    colDef.visible = (this._visibleColArray.indexOf(colDef.attr) !== -1);\n    // Find column definition by name\n    const alreadyExisting = this.getOColumn(colDef.attr);\n    if (alreadyExisting !== undefined) {\n      const replacingIndex = this._oTableOptions.columns.indexOf(alreadyExisting);\n      this._oTableOptions.columns[replacingIndex] = colDef;\n    } else {\n      this._oTableOptions.columns.push(colDef);\n    }\n    this.ensureColumnsOrder();\n    this.refreshEditionModeWarn();\n  }\n\n  protected refreshEditionModeWarn() {\n    if (this.editionMode !== Codes.EDITION_MODE_NONE) {\n      return;\n    }\n    const editableColumns = this._oTableOptions.columns.filter(col => {\n      return Util.isDefined(col.editor);\n    });\n    setTimeout(() => {\n      if (editableColumns.length > 0 && !this.hasInsertableRow()) {\n        console.warn('Using a column with a editor but there is no edition-mode defined');\n      }\n    }, 100);\n  }\n\n  registerColumnAggregate(column: OColumnAggregate) {\n    this.showTotalsSubject.next(true);\n    const alreadyExisting = this.getOColumn(column.attr);\n    if (alreadyExisting !== undefined) {\n      const replacingIndex = this._oTableOptions.columns.indexOf(alreadyExisting);\n      this._oTableOptions.columns[replacingIndex].aggregate = column;\n    }\n  }\n\n  registerTableHeaders(tableHeader: OTableHeaderComponent) {\n    if (this.tableHeaders.findIndex(header => header.column.attr === tableHeader.column.attr) === -1) {\n      this.tableHeaders.push(tableHeader);\n    }\n  }\n\n  parseVisibleColumns(defaultConfiguration: boolean = false) {\n    if (this.state.columnsDisplay) {\n      // filtering columns that might be in state storage but not in the actual table definition\n      let stateCols: OColumnDisplay[] = [];\n      this.state.columnsDisplay.forEach((oCol, index) => {\n        const isVisibleColInColumns = this._oTableOptions.columns.find(col => col.attr === oCol.attr) !== undefined;\n\n        if (isVisibleColInColumns) {\n          stateCols.push(oCol);\n        } else {\n          console.warn('Unable to load the column ' + oCol.attr + ' from the localstorage');\n        }\n      });\n      if (defaultConfiguration) {\n        stateCols = this.state.initialConfiguration.columnsDisplay;\n      } else {\n        stateCols = this.checkChangesVisibleColummnsInInitialConfiguration(stateCols);\n      }\n\n      this._oTableOptions.columns.sort((a: OColumn, b: OColumn) => {\n        const indexA = stateCols.findIndex(col => col.attr === a.attr);\n        const indexB = stateCols.findIndex(col => col.attr === b.attr);\n        return indexA - indexB;\n      });\n      this.visibleColArray = stateCols.filter(item => item.visible).map(item => item.attr);\n    } else {\n      this.visibleColArray = Util.parseArray(this.defaultVisibleColumns ? this.defaultVisibleColumns : this.visibleColumns, true);\n      this._oTableOptions.columns.sort((a: OColumn, b: OColumn) => this.visibleColArray.indexOf(a.attr) - this.visibleColArray.indexOf(b.attr));\n    }\n  }\n\n  checkChangesVisibleColummnsInInitialConfiguration(stateCols: OColumnDisplay[]): OColumnDisplay[] {\n    if (this.state.initialConfiguration.columnsDisplay) {\n      const originalVisibleColArray =\n        this.state.initialConfiguration.columnsDisplay.filter(x => x.visible).map(x => x.attr);\n\n      const visibleColArray = Util.parseArray(this.visibleColumns, true);\n\n      // Find values in visible-columns that they arent in original-visible-columns in localstorage\n      // in this case you have to add this column to this.visibleColArray\n      const colToAddInVisibleCol = Util.differenceArrays(visibleColArray, originalVisibleColArray);\n      colToAddInVisibleCol.forEach((colAdd) => {\n        let indexCol = stateCols.findIndex(col => col.attr === colAdd);\n        if (indexCol > -1) {\n          stateCols[indexCol].visible = true;\n        }\n        stateCols.sort((a: OColumn, b: OColumn) => visibleColArray.indexOf(a.attr) - visibleColArray.indexOf(b.attr));\n      });\n\n\n      // Find values in original-visible-columns in localstorage that they arent in this.visibleColArray\n      // in this case you have to delete this column to this.visibleColArray\n      const colToDeleteInVisibleCol = Util.differenceArrays(originalVisibleColArray, visibleColArray);\n      if (colToDeleteInVisibleCol.length > 0) {\n        stateCols = stateCols.filter(col => colToDeleteInVisibleCol.indexOf(col.attr) === -1);\n      }\n\n      //If the columns in originalVisibleColArray has changed the sorting\n      const changeSortVisibleColumns = JSON.stringify(visibleColArray) !== JSON.stringify(originalVisibleColArray);\n      if (changeSortVisibleColumns && visibleColArray.length === originalVisibleColArray.length) {\n        visibleColArray.forEach((col, toIndex) => {\n          const fromIndexToChange = stateCols.findIndex(stateCol => stateCol.attr === col);\n          moveItemInArray(stateCols, fromIndexToChange, toIndex);\n        });\n\n      }\n    }\n    return stateCols;\n  }\n\n  parseSortColumns() {\n    const sortColumnsParam = this.state.sortColumns || this.sortColumns;\n    this.sortColArray = ServiceUtils.parseSortColumns(sortColumnsParam);\n\n    // checking the original sort columns with the sort columns in initial configuration in local storage\n    if (this.state.sortColumns && this.state.initialConfiguration.sortColumns) {\n\n      const initialConfigSortColumnsArray = ServiceUtils.parseSortColumns(this.state.initialConfiguration.sortColumns);\n      const originalSortColumnsArray = ServiceUtils.parseSortColumns(this.sortColumns);\n      // Find values in visible-columns that they arent in original-visible-columns in localstorage\n      // in this case you have to add this column to this.visibleColArray\n      const colToAddInVisibleCol = Util.differenceArrays(originalSortColumnsArray, initialConfigSortColumnsArray);\n      if (colToAddInVisibleCol.length > 0) {\n        colToAddInVisibleCol.forEach(colAdd => {\n          this.sortColArray.push(colAdd);\n        });\n      }\n\n      const colToDelInVisibleCol = Util.differenceArrays(initialConfigSortColumnsArray, originalSortColumnsArray);\n      if (colToDelInVisibleCol.length > 0) {\n        colToDelInVisibleCol.forEach((colDel) => {\n          this.sortColArray.forEach((col, i) => {\n            if (col.columnName === colDel.columnName) {\n              this.sortColArray.splice(i, 1);\n            }\n          });\n        });\n      }\n    }\n\n    // ensuring column existence and checking its orderable state\n    for (let i = this.sortColArray.length - 1; i >= 0; i--) {\n      const colName = this.sortColArray[i].columnName;\n      const oCol = this.getOColumn(colName);\n      if (!Util.isDefined(oCol) || !oCol.orderable) {\n        this.sortColArray.splice(i, 1);\n      }\n    }\n\n  }\n\n  protected ensureColumnsOrder() {\n\n    let columnsOrder = [];\n    if (this.state.columnsDisplay) {\n      columnsOrder = this.state.columnsDisplay.map(item => item.attr);\n    } else {\n      columnsOrder = this.colArray.filter(attr => this.visibleColArray.indexOf(attr) === -1);\n      columnsOrder.push(...this.visibleColArray);\n    }\n\n    this._oTableOptions.columns.sort((a: OColumn, b: OColumn) => {\n      if (columnsOrder.indexOf(a.attr) === -1) {\n        // if it is not in local storage because it is new, keep order\n        return 0;\n      } else {\n        return columnsOrder.indexOf(a.attr) - columnsOrder.indexOf(b.attr);\n      }\n    });\n\n\n  }\n\n  initializeParams(): void {\n    // If visible-columns is not present then visible-columns is all columns\n    if (!this.visibleColumns) {\n      this.visibleColumns = this.columns;\n    }\n    if (this.colArray.length) {\n      this.colArray.forEach((x: string) => this.registerColumn(x));\n      this.ensureColumnsOrder();\n    }\n    // Initialize quickFilter\n    this._oTableOptions.filter = this.quickFilter;\n\n    if (this.state.currentPage) {\n      this.currentPage = this.state.currentPage;\n    }\n\n    // Initialize paginator\n    if (!this.paginator && this.paginationControls) {\n      this.paginator = new OBaseTablePaginator();\n      this.paginator.pageSize = this.queryRows;\n      this.paginator.pageIndex = this.currentPage;\n      this.paginator.showFirstLastButtons = this.showPaginatorFirstLastButtons;\n    }\n\n    if (!Util.isDefined(this.selectAllCheckboxVisible)) {\n      this._oTableOptions.selectColumn.visible = !!this.state.selectColumnVisible;\n    } else {\n      // checking the original selectAllCheckboxVisible with select-column-visible in initial configuration in local storage\n      if (Util.isDefined(this.state.initialConfiguration.selectColumnVisible)\n        && this.selectAllCheckboxVisible === this.state.initialConfiguration.selectColumnVisible) {\n        this._oTableOptions.selectColumn.visible = !!this.state.selectColumnVisible;\n      } else {\n        this._oTableOptions.selectColumn.visible = this.selectAllCheckboxVisible;\n      }\n    }\n\n    //Initialize show filter by column icon\n    this.isColumnFiltersActive = this.filterColumnActiveByDefault;\n\n    this.initializeCheckboxColumn();\n\n    if (this.storeState) {\n      // if query-rows in initial configuration is equals to original query-rows input\n      // query_rows will be the value in local storage\n      if (Util.isDefined(this.state.queryRows) && Util.isDefined(this.state.initialConfiguration.queryRows)\n        && this.state.initialConfiguration.queryRows === this.originalQueryRows) {\n        this.queryRows = this.state.queryRows;\n      }\n    }\n  }\n\n  get selection() {\n    if (!Util.isDefined(this._selection)) {\n      this._selection = new SelectionModel<any>(this.isSelectionModeMultiple(), [], true, this.compareRow());\n    }\n    return this._selection;\n  }\n\n  updateStateExpandedColumn() {\n    if (!this.tableRowExpandable || !this.tableRowExpandable.expandableColumnVisible) { return; }\n    if (this._oTableOptions.visibleColumns[0] === Codes.NAME_COLUMN_SELECT && this._oTableOptions.visibleColumns[1] !== Codes.NAME_COLUMN_EXPANDABLE) {\n      this._oTableOptions.visibleColumns = [this._oTableOptions.visibleColumns[0]].concat(Codes.NAME_COLUMN_EXPANDABLE, this._oTableOptions.visibleColumns.splice(1));\n    } else if (this._oTableOptions.visibleColumns[0] !== Codes.NAME_COLUMN_EXPANDABLE) {\n      this._oTableOptions.visibleColumns.unshift(Codes.NAME_COLUMN_EXPANDABLE);\n    }\n  }\n\n  registerTabListener() {\n    // When table is contained into tab component, it is necessary to init table component when attached to DOM.\n    this.tabGroupChangeSubscription = this.tabGroupContainer.selectedTabChange.subscribe((evt) => {\n      let interval;\n      const timerCallback = (tab: MatTab) => {\n        if (tab && tab.content.isAttached) {\n          clearInterval(interval);\n          if (tab === this.tabContainer) {\n            this.insideTabBugWorkaround();\n            if (this.pendingQuery) {\n              this.queryData(this.pendingQueryFilter);\n            }\n            this.checkViewportSize();\n          }\n        }\n      };\n      interval = setInterval(() => { timerCallback(evt.tab); }, 100);\n    });\n  }\n\n  protected insideTabBugWorkaround() {\n    this.refreshSortHeaders();\n  }\n\n  registerSortListener() {\n    if (Util.isDefined(this.sort)) {\n      this.sortSubscription?.unsubscribe();\n      this.sortSubscription = this.sort.oSortChange.subscribe(this.onSortChange.bind(this));\n      this.sort.setMultipleSort(this.multipleSort);\n    }\n  }\n\n  public updateSortingSubject(value: boolean) {\n    /* the loadingSortingSubject not refresh in the template\n    because change detection not working with virtual scrolling */\n    const ngZone = this.injector.get(NgZone);\n    if (ngZone) {\n      ngZone.run(() => this.loadingSortingSubject.next(value)\n      );\n    } else {\n      this.loadingSortingSubject.next(value);\n      if (this.cd && !(this.cd as ViewRef).destroyed) {\n        this.cd.detectChanges();\n      }\n    }\n  }\n\n  protected onSortChange(sortArray: any[]) {\n    this.sortColArray = [];\n    sortArray.forEach((sort) => {\n      if (sort.direction !== '') {\n        this.sortColArray.push({\n          columnName: sort.id,\n          ascendent: sort.direction === Codes.ASC_SORT\n        });\n      }\n    });\n    if (this.pageable) {\n      this.reloadData();\n    } else {\n      this.updateSortingSubject(true);\n    }\n  }\n\n  setDatasource() {\n    //Deleted previous instance and subscribers\n    delete this.dataSource;\n    if (this.onRenderedDataChange) this.onRenderedDataChange.unsubscribe();\n\n    const dataSourceService = this.injector.get(OTableDataSourceService);\n    this.dataSource = dataSourceService.getInstance(this);\n    this.registerDataSourceListeners();\n    this.registerSortListener();\n  }\n\n  protected registerDataSourceListeners() {\n    this.onRenderedDataChange = this.dataSource.onRenderedDataChange.subscribe(() => {\n      this.stopEdition();\n      this.checkSelectedItemData();\n      if (!this.pageable) {\n        setTimeout(() => {\n          this.updateSortingSubject(false);\n          if (this.cd && !(this.cd as ViewRef).destroyed) {\n            this.cd.detectChanges();\n          }\n        }, 500);\n      }\n    });\n  }\n\n  public getExpandedRowContainerClass(rowIndex: number): string {\n    return OTableComponent.EXPANDED_ROW_CONTAINER_CLASS + rowIndex;\n  }\n\n  public getExpandableItems(): any[] {\n    return this.expandableItem.selected;\n  }\n\n  /**\n   * Allow to expand or collapse the expandable row.\n   * @param item\n   * @param event\n   */\n  public toggleRowExpandable(item: any, event?: Event): void {\n    if (event) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n\n    this.expandableItem.toggle(item);\n    const rowIndex = this.getValue().findIndex((row) => this.keysArray.every(key => row[key] === item[key]));\n\n    if (this.portalHost[rowIndex]) {\n      this.portalHost[rowIndex].detach();\n    }\n    const isCollapsed = this.getStateExpand(item) === 'collapsed';\n    const eventTableRowExpandableChange = this.emitTableRowExpandableChangeEvent(item, rowIndex);\n    if (isCollapsed) {\n      this.tableRowExpandable.onCollapsed.emit(eventTableRowExpandableChange);\n    } else {\n      this.portalHost[rowIndex] = new DomPortalOutlet(\n        this.elRef.nativeElement.querySelector('.' + this.getExpandedRowContainerClass(rowIndex)),\n        null,\n        this.appRef,\n        this.injector\n      );\n\n      const templatePortal = new TemplatePortal(this.tableRowExpandable.templateRef, this._viewContainerRef, { $implicit: item });\n      this.portalHost[rowIndex].attachTemplatePortal(templatePortal);\n      this.tableRowExpandable.onExpanded.emit(eventTableRowExpandableChange);\n    }\n  }\n  /**\n   * Toggles row expandable by row index\n   * @param rowIndex\n   * @param [event]\n   */\n  public toggleRowExpandableByRowIndex(rowIndex: number, event?: Event) {\n    const item = this.getValue()[rowIndex];\n    this.toggleRowExpandable(item, event);\n  }\n\n\n\n  private emitTableRowExpandableChangeEvent(data, rowIndex) {\n    const event = new OTableRowExpandedChange();\n    event.rowIndex = rowIndex;\n    event.data = data;\n\n    return event;\n  }\n\n  public isExpanded(data: any): boolean {\n    return this.expandableItem.isSelected(data);\n  }\n\n  public getStateExpand(row) {\n    return this.isExpanded(row) ? 'expanded' : 'collapsed';\n  }\n\n  public isColumnExpandable(): boolean {\n    return (Util.isDefined(this.tableRowExpandable) && Util.isDefined(this._oTableOptions.expandableColumn)) ? this._oTableOptions.expandableColumn.visible : false;\n  }\n\n  get hasExpandedRow(): boolean {\n    return Util.isDefined(this.tableRowExpandable);\n  }\n\n  public hasInsertableRow(): boolean {\n    return Util.isDefined(this.oTableInsertableRowComponent);\n  }\n\n  public getNumVisibleColumns(): number {\n    return this.oTableOptions.visibleColumns.length;\n  }\n\n  /**\n   * This method manages the call to the service\n   * @param filter\n   * @param ovrrArgs\n   */\n  queryData(filter?: any, ovrrArgs?: OQueryDataArgs) {\n    // If tab exists and is not active then wait for queryData\n    if (this.isInsideInactiveTab()) {\n      this.pendingQuery = true;\n      this.pendingQueryFilter = filter;\n      return;\n    }\n    this.pendingQuery = false;\n    this.pendingQueryFilter = undefined;\n\n    this.queryCellRenderers().subscribe(() => {\n      super.queryData(filter, ovrrArgs);\n    });\n  }\n\n  protected isInsideInactiveTab(): boolean {\n    let result: boolean = false;\n    if (this.tabContainer && this.tabGroupContainer) {\n      result = !(this.tabContainer.isActive || (this.tabGroupContainer.selectedIndex === this.tabContainer.position));\n    }\n    return result;\n  }\n\n  getComponentFilter(existingFilter: any = {}): any {\n    let filter = existingFilter;\n    if (this.pageable) {\n      if (Object.keys(filter).length > 0) {\n        const parentItemExpr = FilterExpressionUtils.buildExpressionFromObject(filter);\n        filter = {};\n        filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] = parentItemExpr;\n      }\n      const beColFilter = this.getColumnFiltersExpression();\n      // Add column filters basic expression to current filter\n      if (beColFilter && !Util.isDefined(filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY])) {\n        filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] = beColFilter;\n      } else if (beColFilter) {\n        filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] =\n          FilterExpressionUtils.buildComplexExpression(filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY], beColFilter, FilterExpressionUtils.OP_AND);\n      }\n    }\n\n    return super.getComponentFilter(filter);\n  }\n\n  protected getQuickFilterExpression(): Expression {\n    if (Util.isDefined(this.oTableQuickFilterComponent) && this.pageable) {\n      return this.oTableQuickFilterComponent.filterExpression;\n    }\n    return undefined;\n  }\n\n  getColumnFiltersExpression(): Expression {\n    // Apply column filters\n    const columnFilters: OColumnValueFilter[] = this.dataSource.getColumnValueFilters();\n    const beColumnFilters: Array<Expression> = [];\n    columnFilters.forEach(colFilter => {\n      // Prepare basic expressions\n      switch (colFilter.operator) {\n        case ColumnValueFilterOperator.IN:\n          if (Util.isArray(colFilter.values)) {\n            const besIn: Array<Expression> = colFilter.values.map(value => FilterExpressionUtils.buildExpressionEquals(colFilter.attr, value));\n            let beIn: Expression = besIn.pop();\n            besIn.forEach(be => {\n              beIn = FilterExpressionUtils.buildComplexExpression(beIn, be, FilterExpressionUtils.OP_OR);\n            });\n            beColumnFilters.push(beIn);\n          }\n          break;\n        case ColumnValueFilterOperator.BETWEEN:\n          if (Util.isArray(colFilter.values) && colFilter.values.length === 2) {\n            const beFrom = FilterExpressionUtils.buildExpressionMoreEqual(colFilter.attr, colFilter.values[0]);\n            const beTo = FilterExpressionUtils.buildExpressionLessEqual(colFilter.attr, colFilter.values[1]);\n            beColumnFilters.push(FilterExpressionUtils.buildComplexExpression(beFrom, beTo, FilterExpressionUtils.OP_AND));\n          }\n          break;\n        case ColumnValueFilterOperator.EQUAL:\n          beColumnFilters.push(FilterExpressionUtils.buildExpressionLike(colFilter.attr, colFilter.values));\n          break;\n        case ColumnValueFilterOperator.LESS_EQUAL:\n          beColumnFilters.push(FilterExpressionUtils.buildExpressionLessEqual(colFilter.attr, colFilter.values));\n          break;\n        case ColumnValueFilterOperator.MORE_EQUAL:\n          beColumnFilters.push(FilterExpressionUtils.buildExpressionMoreEqual(colFilter.attr, colFilter.values));\n          break;\n      }\n\n    });\n    // Build complete column filters basic expression\n    let beColFilter: Expression = beColumnFilters.pop();\n    beColumnFilters.forEach(be => {\n      beColFilter = FilterExpressionUtils.buildComplexExpression(beColFilter, be, FilterExpressionUtils.OP_AND);\n    });\n    return beColFilter;\n  }\n\n  updatePaginationInfo(queryRes: any) {\n    super.updatePaginationInfo(queryRes);\n  }\n\n  initViewPort(data: any[]) {\n\n    if (this.virtualScrollViewport && data) {\n      const headerElRef = this.elRef.nativeElement.querySelector(headerSelector);\n      const footerElRef = this.elRef.nativeElement.querySelector(footerSelector);\n      const rowElRef = this.elRef.nativeElement.querySelector(rowSelector);\n\n      const headerHeight = headerElRef ? headerElRef.offsetHeight : 0;\n      const footerHeight = footerElRef ? footerElRef.offsetHeight : 0;\n      const rowHeight = rowElRef ? rowElRef.offsetHeight : OTableComponent.DEFAULT_ROW_HEIGHT;\n\n      // set config viewport\n      this.scrollStrategy.setConfig(rowHeight, headerHeight, footerHeight);\n      if (this.previousRendererData !== this.dataSource.renderedData) {\n        this.scrollStrategy.dataLength = data.length;\n      }\n    }\n  }\n\n  protected setData(data: any, sqlTypes: any) {\n    /* This code is not put in the super method because it is not called from the class itself */\n    if (data instanceof Array && data.length === 0) {\n      this.dataService?.reinitializePaginationContext(this.queryRows);\n    }\n\n    this.daoTable.sqlTypesChange.next(sqlTypes);\n    this.daoTable.setDataArray(data);\n    if (this.pageable) {\n      ObservableWrapper.callEmit(this.onPaginatedDataLoaded, data);\n    }\n    ObservableWrapper.callEmit(this.onDataLoaded, this.daoTable.data);\n  }\n\n  protected canSetStaticData(staticData): boolean {\n    return super.canSetStaticData(staticData) && Util.isDefined(this.daoTable);\n  }\n\n  showDialogError(error: string, errorOptional?: string) {\n    if (Util.isDefined(error) && !Util.isObject(error)) {\n      this.dialogService.alert('ERROR', error);\n    } else {\n      this.dialogService.alert('ERROR', errorOptional);\n    }\n  }\n\n  projectContentChanged() {\n    this.loadingScrollSubject.next(false);\n\n    this.initViewPort(this.dataSource.renderedData);\n\n    if (this.previousRendererData !== this.dataSource.renderedData) {\n      this.previousRendererData = this.dataSource.renderedData;\n      ObservableWrapper.callEmit(this.onContentChange, this.dataSource.renderedData);\n    }\n\n    if (this.state.selection && this.dataSource.renderedData.length > 0 && this.getSelectedItems().length === 0) {\n      this.checkSelectedItemData();\n    }\n  }\n\n  getAttributesValuesToQuery(): Array<string> {\n    const columns = super.getAttributesValuesToQuery();\n    if (this.avoidQueryColumns.length > 0) {\n      for (let i = columns.length - 1; i >= 0; i--) {\n        const col = columns[i];\n        if (this.avoidQueryColumns.indexOf(col) !== -1) {\n          columns.splice(i, 1);\n        }\n      }\n    }\n    return columns;\n  }\n\n  getQueryArguments(filter: object, ovrrArgs?: OQueryDataArgs): Array<any> {\n    const queryArguments = super.getQueryArguments(filter, ovrrArgs);\n    Object.assign(queryArguments[3], this.getSqlTypesForFilter(queryArguments[1]));\n    Object.assign(queryArguments[3], ovrrArgs ? ovrrArgs.sqltypes || {} : {});\n    if (this.pageable) {\n      queryArguments[5] = this.paginator.isShowingAllRows(queryArguments[5]) ? this.state.totalQueryRecordsNumber : queryArguments[5];\n      queryArguments[6] = this.sortColArray;\n    }\n    return queryArguments;\n  }\n\n  getSqlTypesForFilter(filter): object {\n    const allSqlTypes = this.getSqlTypes();\n    const sqlTypes = {};\n    Object.keys(allSqlTypes).forEach(key => {\n      if (filter.indexOf(key) !== -1 && allSqlTypes[key] !== SQLTypes.OTHER) {\n        sqlTypes[key] = allSqlTypes[key];\n      }\n    });\n    return sqlTypes;\n  }\n\n  onExportButtonClicked() {\n    if (this.oTableMenu) {\n      this.oTableMenu.onExportButtonClicked();\n    }\n  }\n\n  onChangeColumnsVisibilityClicked() {\n    if (this.oTableMenu) {\n      this.oTableMenu.onChangeColumnsVisibilityClicked();\n    }\n  }\n\n  onMatTableContentChanged() {\n    //\n  }\n\n  /**\n   * Triggers navigation to new item insertion\n   */\n  add() {\n    if (this.readOnly) {\n      if (this.showNotificationOfReadOnly) {\n        this.snackBarService.open('MESSAGES.OPERATION_NOT_ALLOWED_READONLY');\n      }\n      return;\n    }\n    if (!this.checkEnabledActionPermission(PermissionsUtils.ACTION_INSERT)) {\n      return;\n    }\n    super.insertDetail();\n  }\n\n  /**\n   * Removes selected rows\n   * @param [clearSelectedItems]\n   */\n  remove(clearSelectedItems: boolean = false) {\n    if (this.readOnly) {\n      if (this.showNotificationOfReadOnly) {\n        this.snackBarService.open('MESSAGES.OPERATION_NOT_ALLOWED_READONLY');\n      }\n      return;\n    }\n    if (!this.checkEnabledActionPermission(PermissionsUtils.ACTION_DELETE)) {\n      return;\n    }\n    const selectedItems = this.getSelectedItems();\n    if (selectedItems.length === 0) {\n      return;\n    }\n\n    this.dialogService.confirm('CONFIRM', 'MESSAGES.CONFIRM_DELETE').then(res => {\n      if (res === true) {\n        if (this.dataService && (this.deleteMethod in this.dataService) && this.entity && (this.keysArray.length > 0)) {\n          const filters = ServiceUtils.getArrayProperties(selectedItems, this.keysArray);\n          const sqlTypesArg = this.getSqlTypesOfKeys();\n          this.daoTable.removeQuery(filters, sqlTypesArg).subscribe(\n            {\n              next: (v) => {\n                ObservableWrapper.callEmit(this.onRowDeleted, selectedItems);\n              },\n              error: (e) => {\n                this.showDialogError(e, 'MESSAGES.ERROR_DELETE');\n              },\n              complete: () => {\n                // Ensuring that the deleted items will not longer be part of the selectionModel\n                selectedItems.forEach(item => {\n                  this.selection.deselect(item);\n                });\n                if (this.formLayoutManager) {\n                  this.formLayoutManager.closeDetails(filters, { exitWithoutConfirmation: true });\n                }\n                this.reloadData();\n              }\n            });\n\n        } else {\n          this.deleteLocalItems();\n        }\n      } else if (clearSelectedItems) {\n        this.clearSelection();\n      }\n    });\n\n  }\n\n  /**\n   * Refreshs table component\n   */\n  refresh() {\n    this.reloadData();\n  }\n\n  /**\n   * Shows and select all checkbox\n   */\n  showAndSelectAllCheckbox() {\n    if (this.isSelectionModeMultiple()) {\n      if (this.selectAllCheckbox) {\n        this._oTableOptions.selectColumn.visible = true;\n      }\n      this.initializeCheckboxColumn();\n      this.selectAll();\n    }\n  }\n\n  reloadPaginatedDataFromStart(clearSelectedItems: boolean = true) {\n    if (this.pageable) {\n      // Initialize page index\n      this.currentPage = 0;\n      this.reloadData(clearSelectedItems);\n    }\n  }\n\n  /**\n   * Reloads data\n   */\n  reloadData(clearSelectedItems: boolean = true) {\n    if (!this.checkEnabledActionPermission(PermissionsUtils.ACTION_REFRESH)) {\n      return;\n    }\n    this.componentStateService.refreshSelection();\n    if (clearSelectedItems) {\n      this.clearSelection();\n    }\n    this.finishQuerySubscription = false;\n    this.pendingQuery = true;\n    let queryArgs: OQueryDataArgs;\n    if (this.pageable) {\n      queryArgs = {\n        offset: this.currentPage * this.queryRows,\n        length: this.queryRows\n      };\n    }\n    this.stopEdition(false);\n    this.queryData(void 0, queryArgs);\n  }\n\n  handleClick(row: any, column: OColumn, rowIndex: number, cellRef: ElementRef, event: MouseEvent) {\n    this.clickSubject.next({ row, column, cellRef, rowIndex, event });\n  }\n\n  doHandleClick(row: any, column: string, rowIndex: number, $event: MouseEvent) {\n    if (this.readOnly && this.showNotificationOfReadOnly) {\n      this.snackBarService.open('MESSAGES.OPERATION_NOT_ALLOWED_READONLY');\n    }\n\n    if (!this.oenabled || this.readOnly) {\n      return;\n    }\n    if ((this.detailMode === Codes.DETAIL_MODE_CLICK)) {\n      this.onClick.emit({ row: row, rowIndex: rowIndex, mouseEvent: $event, columnName: column, cell: row[column] });\n      this.saveDataNavigationInLocalStorage();\n      this.clearSelection();\n      this.selectedRow(row);\n      this.viewDetail(row);\n      return;\n    }\n    if (this.isSelectionModeMultiple() && ($event.ctrlKey || $event.metaKey)) {\n      // TODO: test $event.metaKey on MAC\n      this.selectedRow(row);\n      this.onClick.emit({ row: row, rowIndex: rowIndex, mouseEvent: $event, columnName: column, cell: row[column] });\n    } else if (this.isSelectionModeMultiple() && $event.shiftKey) {\n      this.handleMultipleSelection(row);\n    } else if (!this.isSelectionModeNone()) {\n      const selectedItems = this.getSelectedItems();\n      if (this.isRowSelected(row) && selectedItems.length === 1 && this.editionEnabled) {\n        return;\n      } else {\n        this.clearSelectionAndEditing();\n      }\n      this.selectedRow(row);\n      this.onClick.emit({ row: row, rowIndex: rowIndex, mouseEvent: $event, columnName: column, cell: row[column] });\n    }\n  }\n\n  handleMultipleSelection(item: any) {\n    if (this.selection.selected.length > 0) {\n      const first = this.dataSource.renderedData.indexOf(this.selection.selected[0]);\n      const last = this.dataSource.renderedData.indexOf(item);\n      const indexFrom = Math.min(first, last);\n      const indexTo = Math.max(first, last);\n      this.clearSelection();\n      this.dataSource.renderedData.slice(indexFrom, indexTo + 1).forEach(e => this.selectedRow(e));\n      ObservableWrapper.callEmit(this.onClick, this.selection.selected);\n    }\n  }\n\n  protected saveDataNavigationInLocalStorage() {\n    super.saveDataNavigationInLocalStorage();\n    this.storePaginationState = true;\n  }\n\n  handleDoubleClick(row: any, column: OColumn, rowIndex: number, cellRef: ElementRef, event: MouseEvent) {\n    this.dblclickSubject.next({ row, column, cellRef, rowIndex, event });\n  }\n\n  get editionEnabled(): boolean {\n    return this._oTableOptions.columns.some(item => item.editing);\n  }\n\n  handleDOMClick(event) {\n    if (this._oTableOptions.selectColumn.visible) {\n      return;\n    }\n\n    if (this.editionEnabled) {\n      return;\n    }\n\n    const overlayContainer = document.body.getElementsByClassName('cdk-overlay-container')[0];\n    if (overlayContainer && overlayContainer.contains(event.target)) {\n      return;\n    }\n\n    const tableContainer = this.elRef.nativeElement.querySelector('.o-table-container');\n    const tableContent = this.elRef.nativeElement.querySelector('.o-table-container table.mat-table');\n    if (tableContainer && tableContent && tableContainer.contains(event.target) && !tableContent.contains(event.target)) {\n      this.clearSelection();\n    }\n  }\n\n  protected activateColumnEdition(column: OColumn, row: any, cellRef: any) {\n    if (cellRef && column.editing && this.editingCell === cellRef) {\n      return;\n    }\n    const columnPermissions: OPermissions = this.getOColumnPermissions(column.attr);\n    if (columnPermissions.enabled === false) {\n      console.warn(`${column.attr} edition not allowed due to permissions`);\n      return;\n    }\n\n    this.clearSelectionAndEditing();\n    this.selectedRow(row);\n    this.editingCell = cellRef;\n    const rowData = {};\n    this.keysArray.forEach((key) => {\n      rowData[key] = row[key];\n    });\n    rowData[column.attr] = row[column.attr];\n    this.editingRow = row;\n    column.editing = true;\n    column.editor.startEdition(rowData);\n  }\n\n  updateCellData(column: OColumn, data: any, saveChanges: boolean) {\n    if (!this.checkEnabledActionPermission(PermissionsUtils.ACTION_UPDATE)) {\n      const res = new Observable(innerObserver => {\n        innerObserver.error();\n      });\n      return res;\n    }\n    column.editing = false;\n    if (saveChanges && this.editingRow !== undefined) {\n      Object.assign(this.editingRow, data);\n    }\n    this.stopEdition();\n    if (saveChanges && column.editor.updateRecordOnEdit) {\n      const toUpdate = {};\n      toUpdate[column.attr] = data[column.attr];\n      const kv = this.extractKeysFromRecord(data);\n      return this.updateRecord(kv, toUpdate);\n    }\n    return undefined;\n  }\n\n  protected getKeysValues(): any[] {\n    const data = this.getAllValues();\n    return data.map((row) => {\n      const obj = {};\n      this.keysArray.forEach((key) => {\n        if (row[key] !== undefined) {\n          obj[key] = row[key];\n        }\n      });\n\n      return obj;\n    });\n  }\n\n  onShowsSelects() {\n    if (this.oTableMenu) {\n      this.oTableMenu.onShowsSelects();\n    }\n  }\n\n  initializeCheckboxColumn() {\n    // Initializing row selection listener\n    if (!this.selectionChangeSubscription && this._oTableOptions.selectColumn.visible) {\n      this.selectionChangeSubscription = this.selection.changed.subscribe((selectionData: SelectionChange<any>) => {\n        if (this.triggerSelectionEvents && selectionData) {\n          if (selectionData.added.length > 0) {\n            ObservableWrapper.callEmit(this.onRowSelected, selectionData.added);\n          }\n          if (selectionData.removed.length > 0) {\n            ObservableWrapper.callEmit(this.onRowDeselected, selectionData.removed);\n          }\n        }\n      });\n    }\n    this.updateSelectionColumnState();\n  }\n\n  protected updateSelectionColumnState() {\n    if (!this._oTableOptions.selectColumn.visible) {\n      this.clearSelection();\n    }\n    if (this._oTableOptions.visibleColumns && this._oTableOptions.selectColumn.visible\n      && this._oTableOptions.visibleColumns[0] !== Codes.NAME_COLUMN_SELECT) {\n      this._oTableOptions.visibleColumns.unshift(Codes.NAME_COLUMN_SELECT);\n    } else if (this._oTableOptions.visibleColumns && !this._oTableOptions.selectColumn.visible\n      && this._oTableOptions.visibleColumns[0] === Codes.NAME_COLUMN_SELECT) {\n      this._oTableOptions.visibleColumns.shift();\n    }\n    this.updateStateExpandedColumn();\n  }\n\n  public getNumRowSelectedInCurrentData(): number {\n    return this.dataSource ? this.dataSource.renderedData.filter(x => !this.isDisableCheckbox(x) && this.isRowSelected(x)).length : 0;\n  }\n\n  public isAllSelected(): boolean {\n    const numSelected = this.getNumRowSelectedInCurrentData();\n    const numRows = this.dataSource ? this.dataSource.renderedData.length : 0;\n    return numSelected > 0 && numSelected === numRows;\n  }\n\n  public isIndeterminate(): boolean {\n    const numSelected = this.getNumRowSelectedInCurrentData();\n    const numRows = this.dataSource ? this.dataSource.renderedData.length : 0;\n    return numSelected > 0 && numRows > 0 && numSelected !== numRows;\n  }\n\n  public masterToggle(event: MatCheckboxChange): void {\n    event.checked ? this.selectAll() : this.clearSelection();\n  }\n\n  public selectAll(): void {\n    this.dataSource.renderedData.forEach(row => this.setSelected(row));\n  }\n\n  public selectionCheckboxToggle(event: MatCheckboxChange, row: any): void {\n    if (this.isSelectionModeSingle()) {\n      this.clearSelection();\n    }\n    event.checked ? this.selectedRow(row) : this.selection.deselect(row);\n    this.state.selection = this.selection.selected;\n  }\n\n  public selectedRow(row: any): void {\n    this.setSelected(row);\n    this.cd.detectChanges();\n  }\n\n  public clearSelection(): void {\n    if (Util.isDefined(this.selection)) {\n      this.selection.clear();\n    }\n    if (Util.isDefined(this.state)) {\n      this.state.selection = [];\n    }\n  }\n\n  public setSelected(item: any): void {\n    if (this.isDisableCheckbox(item)) {\n      return;\n    }\n    if (this.isRowSelected(item)) {\n      /**The selected item is cleared if the item changes value*/\n      this.selection.clear(item);\n    }\n    if (Util.isDefined(item)) {\n      this.selection.select(item);\n    }\n  }\n\n  setSelectedByKeys(keyValues: Array<any>) {\n    const rowsToSelect = this.getDataArray().filter(row => {\n      return keyValues.findIndex(keyValue => row[this.keys] === keyValue) > -1;\n    });\n    this.selection.select(...rowsToSelect);\n  }\n\n  setSelectedByMultipleKeys(keyValues: Array<Object>) {\n    const rowsToSelect = this.getDataArray().filter(row => {\n      return keyValues.findIndex(keyValue =>\n        Object.keys(keyValue).every(key => keyValue[key] === row[key])\n      ) > -1;\n    });\n    rowsToSelect.every(rowToSelect => this.selection.select(rowToSelect));\n  }\n\n  setSelectedByRowIds(rowIds: Array<number>) {\n    rowIds.forEach(rowId => this.selectedRow(this.getDataArray()[rowId]));\n  }\n\n  get showDeleteButton(): boolean {\n    return this.deleteButton;\n  }\n\n  getTrackByFunction(): (index: number, item: any) => string {\n    const self = this;\n\n    return (index: number, item: any) => {\n\n      let itemId: string = '';\n\n      if (this.isGroup(index, item)) {\n        itemId += item.column;\n      } else {\n        const keysLenght = self.keysArray.length;\n        self.keysArray.forEach((key: string, idx: number) => {\n          const suffix = idx < (keysLenght - 1) ? ';' : '';\n          itemId += item[key] + suffix;\n        });\n      }\n\n      const hasAsyncAndVisibleCols = this.asyncLoadColumns.some(c => this._oTableOptions.visibleColumns.includes(c));\n      if (self.asyncLoadColumns.length && hasAsyncAndVisibleCols && !self.finishQuerySubscription) {\n        self.queryRowAsyncData(index, item);\n        if (self.paginator && index === (self.paginator.pageSize - 1)) {\n          self.finishQuerySubscription = true;\n        }\n        return itemId;\n      } else {\n        return itemId;\n      }\n    };\n  }\n\n  queryRowAsyncData(rowIndex: number, rowData: any) {\n    const kv = ServiceUtils.getObjectProperties(rowData, this.keysArray);\n    // Repeating checking of visible column\n    const av = this.asyncLoadColumns.filter(c => this._oTableOptions.visibleColumns.indexOf(c) !== -1);\n    if (av.length === 0) {\n      // Skipping query if there are not visible asyncron columns\n      return;\n    }\n    const columnQueryArgs = [kv, av, this.entity, undefined, undefined, undefined, undefined];\n    const queryMethodName = this.pageable ? this.paginatedQueryMethod : this.queryMethod;\n    if (this.dataService && (queryMethodName in this.dataService) && this.entity) {\n      if (this.asyncLoadSubscriptions[rowIndex]) {\n        this.asyncLoadSubscriptions[rowIndex].unsubscribe();\n      }\n      this.asyncLoadSubscriptions[rowIndex] = this.dataService[queryMethodName]\n        .apply(this.dataService, columnQueryArgs)\n        .subscribe((res: ServiceResponse) => {\n          if (res.isSuccessful()) {\n            let data;\n            if (Util.isArray(res.data) && res.data.length === 1) {\n              data = res.data[0];\n            } else if (Util.isObject(res.data)) {\n              data = res.data;\n            }\n            this.daoTable.setAsynchronousColumn(data, rowData);\n            this.cd.detectChanges();\n          }\n        });\n    }\n  }\n\n\n  /**\n   * Returns the current page table data.\n   * @returns\n   */\n  getValue() {\n    return this.dataSource.getCurrentData();\n  }\n\n\n  /**\n   * Gets all values\n   * @returns\n   */\n  getAllValues() {\n    return this.dataSource.getCurrentAllData();\n  }\n\n\n  /**\n   * Gets all rendered values\n   * @returns\n   */\n  getAllRenderedValues() {\n    return this.dataSource.getAllRendererData();\n  }\n\n\n  /**\n   * Returns the current page table renderer data.\n   * @returns\n   */\n  getRenderedValue() {\n    return this.dataSource.getCurrentRendererData();\n  }\n\n\n  /**\n   * Gets sql types from data source and table columns\n   * @returns\n   */\n  getSqlTypes() {\n    const allSqlTypes = Util.isDefined(this.dataSource.sqlTypes) ? this.dataSource.sqlTypes : {};\n    this._oTableOptions.columns.forEach((col: OColumn) => {\n      if (col.sqlType) {\n        allSqlTypes[col.attr] = col.sqlType;\n      }\n    });\n    return allSqlTypes;\n  }\n\n  setOTableColumnsFilter(tableColumnsFilter: OTableColumnsFilterComponent) {\n    this.oTableColumnsFilterComponent = tableColumnsFilter;\n  }\n\n  get filterColumns(): OFilterColumn[] {\n    if (this.state.initialConfiguration.filterColumns === this.originalFilterColumns\n      && this.state.filterColumns) {\n      return this.state.filterColumns;\n    }\n    return this.originalFilterColumns;\n  }\n\n  get originalFilterColumns(): Array<OFilterColumn> {\n    let sortColumnsFilter = [];\n    if (this.oTableColumnsFilterComponent) {\n      sortColumnsFilter = this.oTableColumnsFilterComponent.columnsArray;\n    }\n    return sortColumnsFilter;\n  }\n\n  get originalGroupedColumnsArray(): Array<string> {\n    return Util.parseArray(this.groupedColumns, true);\n  }\n\n  getStoredColumnsFilters() {\n    return this.state.storedFilters;\n  }\n\n  getStoredGroupedColumns() {\n    return this.state.storedConfigurations;\n  }\n\n  onFilterByColumnClicked() {\n    if (this.oTableMenu) {\n      this.oTableMenu.onFilterByColumnClicked();\n    }\n  }\n\n  onStoreFilterClicked() {\n    if (this.oTableMenu) {\n      this.oTableMenu.onStoreFilterClicked();\n    }\n  }\n\n  onLoadFilterClicked() {\n    if (this.oTableMenu) {\n      this.oTableMenu.onLoadFilterClicked();\n    }\n  }\n\n  onClearFilterClicked() {\n    if (this.oTableMenu) {\n      this.oTableMenu.onClearFilterClicked();\n    }\n  }\n\n  /**\n   * Clear all filters(column filter, quickfilter and filter builder) and reload data\n   * @param [triggerDatasourceUpdate]\n   */\n  clearFilters(triggerDatasourceUpdate: boolean = true): void {\n\n    this.dataSource.clearColumnFilters(triggerDatasourceUpdate);\n    if (this.oTableMenu && this.oTableMenu.columnFilterOption) {\n      this.oTableMenu.columnFilterOption.setActive(this.isColumnFiltersActive);\n    }\n    this.onFilterByColumnChange.emit();\n    if (this.oTableQuickFilterComponent) {\n      this.oTableQuickFilterComponent.setValue(void 0);\n    }\n\n    if (this.filterBuilder) {\n      this.filterBuilder.clearFilter();\n      this.filterBuilder.triggerReload();\n    }\n\n  }\n\n  clearColumnFilter(attr: string, triggerDatasourceUpdate: boolean = true): void {\n    this.dataSource.clearColumnFilter(attr, triggerDatasourceUpdate);\n    this.onFilterByColumnChange.emit();\n    this.reloadPaginatedDataFromStart(false);\n  }\n\n  filterByColumn(columnValueFilter: OColumnValueFilter) {\n    this.dataSource.addColumnFilter(columnValueFilter);\n    this.onFilterByColumnChange.emit();\n    if (this.pageable) {\n      this.reloadPaginatedDataFromStart(false);\n    }\n  }\n\n  clearColumnFilters(triggerDatasourceUpdate: boolean = true, columnsAttr?: string[]): void {\n    this.dataSource.clearColumnFilters(triggerDatasourceUpdate, columnsAttr);\n    this.onFilterByColumnChange.emit();\n    this.reloadPaginatedDataFromStart(false);\n  }\n\n  isColumnFilterable(column: OColumn): boolean {\n    return Util.isDefined(this.oTableColumnsFilterComponent) ? this.oTableColumnsFilterComponent.isColumnFilterable(column.attr) : this.isSearcheableColumn(column);\n  }\n\n  isSearcheableColumn(column: OColumn): boolean {\n    return this.searcheableColumns.includes(column.attr);\n  }\n  isColumnFilterActive(column: OColumn): boolean {\n    return this.isColumnFiltersActive && Util.isDefined(this.dataSource.getColumnValueFilterByAttr(column.attr));\n  }\n\n  openColumnFilterDialog(column: OColumn, event: Event) {\n    event.stopPropagation();\n    event.preventDefault();\n    const dialogRef = this.dialog.open(OTableFilterByColumnDataDialogComponent, {\n      data: {\n        column: column,\n        table: this\n      },\n      minWidth: '380px',\n      disableClose: true,\n      panelClass: ['o-dialog-class', 'o-table-dialog']\n    });\n\n    dialogRef.afterClosed().subscribe(result => {\n      switch (result) {\n        case TableFilterByColumnDialogResult.ACCEPT:\n          const columnValueFilter = dialogRef.componentInstance.getColumnValuesFilter();\n          this.filterByColumn(columnValueFilter);\n          break;\n        case TableFilterByColumnDialogResult.CLEAR:\n          const col = dialogRef.componentInstance.column;\n          this.clearColumnFilter(col.attr);\n          break;\n      }\n    });\n    dialogRef.componentInstance.onSortFilterValuesChange.subscribe(sortedFilterableColumn => {\n      // guardar en localstorage el cambio\n      this.storeFilterColumns(sortedFilterableColumn);\n    });\n  }\n\n  storeFilterColumns(sortColumnFilter: OFilterColumn) {\n    if (this.state.filterColumns) {\n      // if exists in state then updated sort value\n      const filterColumn = this.filterColumns.find(x => x.attr === sortColumnFilter.attr);\n      if (Util.isDefined(filterColumn)) {\n        filterColumn.sort = sortColumnFilter.sort;\n      } else {\n        // else exists in state then added filter column\n        this.filterColumns.push(sortColumnFilter);\n      }\n    }\n    this.state.filterColumns = this.filterColumns;\n  }\n\n  getStartViewFilterColumn(column: OColumn): 'month' | 'year' | 'multi-year' | '' {\n    let startView;\n    // at first, get state in localstorage\n    if (this.state.filterColumns) {\n      this.state.filterColumns.forEach((element: OFilterColumn) => {\n        if (element.attr === column.attr) {\n          startView = element.startView;\n        }\n      });\n    }\n\n    if (!Util.isDefined(startView) && this.oTableColumnsFilterComponent) {\n      startView = this.oTableColumnsFilterComponent.getStartViewValueOfFilterColumn(column.attr);\n    }\n\n    return startView;\n  }\n\n  getSortFilterColumn(column: OColumn): 'asc' | 'desc' | '' {\n    let sortColumn;\n    // at first, get state in localstorage\n    if (this.state.filterColumns) {\n      const filterCol = this.state.filterColumns.find((element: OFilterColumn) => element.attr === column.attr);\n      if (filterCol) {\n        sortColumn = filterCol.sort;\n      }\n    }\n\n    // if not value in localstorage, get sort value in o-table-column-filter-column component\n    if (!Util.isDefined(sortColumn) && this.oTableColumnsFilterComponent) {\n      sortColumn = this.oTableColumnsFilterComponent.getSortValueOfFilterColumn(column.attr);\n    }\n\n    // if either value in o-table-column-filter-column or localstorage, get sort value in sortColArray\n    if (!Util.isDefined(sortColumn) && this.sortColArray.find(x => x.columnName === column.attr)) {\n      sortColumn = this.isColumnSortActive(column) ? 'asc' : 'desc';\n    }\n\n    return sortColumn;\n  }\n\n  get disableTableMenuButton(): boolean {\n    return !!(this.permissions && this.permissions.menu && this.permissions.menu.enabled === false);\n  }\n\n  get showTableMenuButton(): boolean {\n    const permissionHidden = !!(this.permissions && this.permissions.menu && this.permissions.menu.visible === false);\n    if (permissionHidden) {\n      return false;\n    }\n    const staticOpt = this.selectAllCheckbox || this.exportButton || this.showConfigurationOption || this.columnsVisibilityButton || (this.showFilterOption && this.oTableColumnsFilterComponent !== undefined);\n    return staticOpt || this.tableOptions.length > 0;\n  }\n\n  setOTableInsertableRow(tableInsertableRow: OTableInsertableRowComponent) {\n    const insertPerm: OPermissions = this.getActionPermissions(PermissionsUtils.ACTION_INSERT);\n    if (insertPerm.visible) {\n      tableInsertableRow.enabled = insertPerm.enabled;\n      this.oTableInsertableRowComponent = tableInsertableRow;\n      this.showFirstInsertableRow = this.oTableInsertableRowComponent.isFirstRow();\n      this.showLastInsertableRow = !this.showFirstInsertableRow;\n      this.oTableInsertableRowComponent.initializeEditors();\n    }\n  }\n\n  clearSelectionAndEditing(clearSelection: boolean = true) {\n    if (clearSelection) {\n      this.clearSelection();\n    }\n    this._oTableOptions.columns\n      .filter(oColumn => oColumn.editing)\n      .forEach(oColumn => {\n        oColumn.editing = false;\n      });\n  }\n\n  protected checkSelectedItemData() {\n    this.triggerSelectionEvents = false;\n    if (Util.isDefined(this.state.selection) && this.state.selection.length > 0) {\n      this.state.selection.forEach(selectedItem => {\n        const selectedItemKeys = Object.keys(selectedItem);\n        // finding selected item data in the table rendered data\n        const foundItem = this.dataSource.renderedData.find(data =>\n          selectedItemKeys.every(key => data[key] === selectedItem[key])\n        );\n        if (foundItem) {\n          this.setSelected(foundItem);\n        }\n      });\n    }\n    this.triggerSelectionEvents = true;\n  }\n\n  useDetailButton(column: OColumn): boolean {\n    return column.type === 'editButtonInRow' || column.type === 'detailButtonInRow';\n  }\n\n  onDetailButtonClick(column: OColumn, row: any, event: any) {\n    event.preventDefault();\n    event.stopPropagation();\n    switch (column.type) {\n      case 'editButtonInRow':\n        this.editDetail(row);\n        break;\n      case 'detailButtonInRow':\n        this.viewDetail(row);\n        break;\n    }\n  }\n\n  getDetailButtonIcon(column: OColumn) {\n    let result = '';\n    switch (column.type) {\n      case 'editButtonInRow':\n        result = this.editButtonInRowIcon;\n        break;\n      case 'detailButtonInRow':\n        result = this.detailButtonInRowIcon;\n        break;\n    }\n    return result;\n  }\n\n  usePlainRender(column: OColumn, row: any): boolean {\n    return !this.useDetailButton(column) && !column.renderer && (!column.editor || (!column.editing || !this.isRowSelected(row)));\n  }\n\n  useCellRenderer(column: OColumn, row: any): boolean {\n    return column.renderer && (!column.editing || column.editing && !this.isRowSelected(row));\n  }\n\n  useCellEditor(column: OColumn, row: any): boolean {\n    // TODO Add column.editor instanceof OTableCellEditorBooleanComponent to condition\n    if (column.editor && column.editor.autoCommit) {\n      return false;\n    }\n    return column.editor && column.editing && this.isRowSelected(row);\n  }\n\n  isSelectionModeMultiple(): boolean {\n    return this.selectionMode === Codes.SELECTION_MODE_MULTIPLE;\n  }\n\n  isSelectionModeSingle(): boolean {\n    return this.selectionMode === Codes.SELECTION_MODE_SINGLE;\n  }\n\n  isSelectionModeNone(): boolean {\n    return this.selectionMode === Codes.SELECTION_MODE_NONE;\n  }\n\n  onChangePage(evt: PageEvent) {\n    this.finishQuerySubscription = false;\n    this.dataService?.setPaginationContext({ pageNumber: evt.pageIndex, pageSize: evt.pageSize });\n    if (!this.pageable) {\n      this.currentPage = evt.pageIndex;\n      return;\n    }\n\n    const goingBack = evt.pageIndex < this.currentPage;\n    this.currentPage = evt.pageIndex;\n    const pageSize = this.paginator.isShowingAllRows(evt.pageSize) ? this.state.totalQueryRecordsNumber : evt.pageSize;\n\n    const oldQueryRows = this.queryRows;\n    const changingPageSize = (oldQueryRows !== pageSize);\n    this.queryRows = pageSize;\n    this.paginator.pageSize = pageSize;\n\n    let newStartRecord: number;\n    let queryLength: number;\n\n    if (goingBack || changingPageSize) {\n      newStartRecord = (this.currentPage * this.queryRows);\n      queryLength = this.queryRows;\n    } else {\n      newStartRecord = Math.max(this.state.queryRecordOffset, (this.currentPage * this.queryRows));\n      const newEndRecord = Math.min(newStartRecord + this.queryRows, this.state.totalQueryRecordsNumber);\n      queryLength = this.disablePageSizeCalculation ? this.queryRows : Math.min(this.queryRows, newEndRecord - newStartRecord);\n    }\n\n    const queryArgs: OQueryDataArgs = {\n      offset: newStartRecord,\n      length: queryLength\n    };\n\n    this.finishQuerySubscription = false;\n    this.queryData(void 0, queryArgs);\n  }\n\n  getOColumn(attr: string): OColumn {\n    return this._oTableOptions ? this._oTableOptions.columns.find(item => item.name === attr) : undefined;\n  }\n\n  insertRecord(recordData: any, sqlTypes?: object): Observable<any> {\n    if (this.readOnly) {\n      if (this.showNotificationOfReadOnly) {\n        this.snackBarService.open('MESSAGES.OPERATION_NOT_ALLOWED_READONLY');\n      }\n      throw new Error(`Insert operation is not allowed because the table is read-only.`)\n    }\n    if (!this.checkEnabledActionPermission(PermissionsUtils.ACTION_INSERT)) {\n      return undefined;\n    }\n    if (!Util.isDefined(sqlTypes)) {\n      const allSqlTypes = this.getSqlTypes();\n      sqlTypes = {};\n      Object.keys(recordData).forEach(key => {\n        sqlTypes[key] = allSqlTypes[key];\n      });\n    }\n    return this.daoTable.insertQuery(recordData, sqlTypes);\n  }\n\n  updateRecord(filter: any, updateData: any, sqlTypes?: object): Observable<any> {\n    if (this.readOnly) {\n      if (this.showNotificationOfReadOnly) {\n        this.snackBarService.open('MESSAGES.OPERATION_NOT_ALLOWED_READONLY');\n      }\n      throw new Error(`Update operation is not allowed because the table is read-only.`)\n    }\n\n    if (!this.checkEnabledActionPermission(PermissionsUtils.ACTION_UPDATE)) {\n      return of(this.dataSource.data);\n    }\n    const sqlTypesArg = sqlTypes || {};\n    if (!Util.isDefined(sqlTypes)) {\n      const allSqlTypes = this.getSqlTypes();\n      Object.keys(filter).forEach(key => {\n        sqlTypesArg[key] = allSqlTypes[key];\n      });\n      Object.keys(updateData).forEach(key => {\n        sqlTypesArg[key] = allSqlTypes[key];\n      });\n    }\n    return this.daoTable.updateQuery(filter, updateData, sqlTypesArg);\n  }\n\n\n  /**\n   * Gets data table\n   * @returns\n   */\n  getDataArray() {\n    return this.daoTable.data;\n  }\n\n\n  /**\n   * Sets data table when is static (ONLY IN THIS CASE)\n   * @param data\n   */\n  setDataArray(data: Array<any>) {\n    if (this.daoTable) {\n      // remote pagination has no sense when using static-data\n      this.pageable = false;\n      this.staticData = data;\n      this.daoTable.usingStaticData = true;\n      this.daoTable.setDataArray(this.staticData);\n      this.onDataLoaded.emit(this.daoTable.data);\n    }\n  }\n\n  protected deleteLocalItems() {\n    const dataArray = this.getDataArray();\n    const selectedItems = this.getSelectedItems();\n    selectedItems.forEach((selectedItem: any) => {\n      for (let j = dataArray.length - 1; j >= 0; --j) {\n        if (Util.equals(selectedItem, dataArray[j])) {\n          dataArray.splice(j, 1);\n          break;\n        }\n      }\n    });\n    this.clearSelection();\n    this.setDataArray(dataArray);\n  }\n\n  isColumnSortActive(column: OColumn): boolean {\n    const found = this.sortColArray.find(sortC => sortC.columnName === column.attr);\n    return found !== undefined;\n  }\n\n  isColumnDescSortActive(column: OColumn): boolean {\n    const found = this.sortColArray.find(sortC => sortC.columnName === column.attr && !sortC.ascendent);\n    return found !== undefined;\n  }\n\n  hasTabGroupChangeSubscription(): boolean {\n    return this.tabGroupChangeSubscription !== undefined;\n  }\n\n  isEmpty(value: any): boolean {\n    return !Util.isDefined(value) || ((typeof value === 'string') && !value);\n  }\n\n  setFiltersConfiguration(storage: OTableComponentStateClass = this.state) {\n    /*\n      Checking the original filterCaseSensitive with the filterCaseSensitive in initial configuration in local storage\n      if filterCaseSensitive in initial configuration is equals to original filterCaseSensitive input\n      filterCaseSensitive will be the value in local storage\n    */\n    if (storage.initialConfiguration.filterCaseSensitive !== this.filterCaseSensitive) {\n      this._oTableOptions.filterCaseSensitive = this.filterCaseSensitive;\n    } else {\n      this._oTableOptions.filterCaseSensitive = storage.hasOwnProperty('filter-case-sensitive') ? storage['filter-case-sensitive'] : this.filterCaseSensitive;\n    }\n\n    if (storage.initialConfiguration.filterColumnActiveByDefault !== this.filterColumnActiveByDefault) {\n      this.isColumnFiltersActive = this.filterColumnActiveByDefault;\n    } else {\n      const confFilterColumnActiveByDefault = storage.hasOwnProperty('filter-column-active') ? storage['filter-column-active'] : this.filterColumnActiveByDefault;\n      this.isColumnFiltersActive = confFilterColumnActiveByDefault || this.state.columnValueFilters.length > 0;\n    }\n\n    if (Util.isDefined(storage.columnValueFilters)) {\n      this.dataSource.initializeColumnsFilters(this.state.columnValueFilters);\n      this.onFilterByColumnChange.emit();\n    }\n\n    if (this.oTableQuickFilterComponent) {\n      this.oTableQuickFilterComponent.setValue(storage['filter']);\n      (storage['oColumns'] || []).forEach((oColData: any) => {\n        const oCol = this.getOColumn(oColData.attr);\n        if (oCol && oColData.hasOwnProperty('searching')) {\n          oCol.searching = oColData.searching;\n        }\n      });\n    }\n\n    if (this.filterBuilder && Util.isDefined(storage.filterBuilderValues)) {\n      this.filterBuilder.setFilterValues(storage.filterBuilderValues);\n      this.filterBuilder.triggerReload();\n    }\n  }\n\n  onStoreConfigurationClicked() {\n    if (this.oTableMenu) {\n      this.oTableMenu.onStoreConfigurationClicked();\n    }\n  }\n\n  onApplyConfigurationClicked() {\n    if (this.oTableMenu) {\n      this.oTableMenu.onApplyConfigurationClicked();\n    }\n  }\n\n  applyDefaultConfiguration() {\n    this.initializeParams();\n    this.parseVisibleColumns(true);\n    this.refreshColumnsWidthFromOriginalDefinition();\n    this.reinitializateQuickFilterColumns();\n    this.resetQueryRows();\n    const initialConfigSortColumnsArray = ServiceUtils.parseSortColumns(this.state.initialConfiguration.sortColumns);\n    this.reinitializeSortColumns(initialConfigSortColumnsArray);\n    this.onReinitialize.emit(null);\n    this.clearFilters(false);\n    this.reloadData();\n  }\n  resetQueryRows() {\n    if (Util.isDefined(this.state.initialConfiguration.queryRows)) {\n      this.queryRows = this.state.initialConfiguration.queryRows;\n    }\n  }\n  applyConfiguration(configurationName: string) {\n    const storedConfiguration = this.state.getStoredConfiguration(configurationName);\n    if (storedConfiguration) {\n      const properties = storedConfiguration['stored-properties'] || [];\n\n      properties.forEach(property => {\n        switch (property) {\n          case 'sort-columns':\n            this.reinitializeSortColumns();\n            break;\n          case 'oColumns-display':\n            this.parseVisibleColumns();\n            this.initializeCheckboxColumn();\n            this.refreshColumnsWidthFromLocalStorage();\n            break;\n          case 'quick-filter':\n          case 'columns-filter':\n          case 'filter-builder':\n            this.setFiltersConfiguration();\n            break;\n          case 'grouped-columns':\n            this.parseGroupedColumns();\n            break;\n          case 'page':\n            this.currentPage = this.state.currentPage;\n            this.queryRows = this.state.queryRows;\n            break;\n        }\n      });\n      this.reloadData();\n    }\n  }\n\n  getTitleAlignClass(oCol: OColumn) {\n\n    const hasTitleAlign = Util.isDefined(oCol.definition) && Util.isDefined(oCol.definition.titleAlign);\n    const autoAlign = (this.autoAlignTitles && !hasTitleAlign) || (hasTitleAlign && oCol.definition.titleAlign === Codes.COLUMN_TITLE_ALIGN_AUTO);\n    if (!autoAlign) {\n      return oCol.getTitleAlignClass();\n    }\n\n    let align = this.getCellAlignClass(oCol);\n    if (Util.isDefined(align) && align.length > 0) {\n      align = align.substring(2);\n    } else {\n      switch (oCol.type) {\n        case 'image':\n        case 'date':\n        case 'action':\n        case 'boolean':\n          align = Codes.COLUMN_TITLE_ALIGN_CENTER;\n          break;\n        case 'currency':\n        case 'integer':\n        case 'real':\n        case 'percentage':\n          align = Codes.COLUMN_TITLE_ALIGN_END;\n          break;\n        case 'service':\n        default:\n          align = Codes.COLUMN_TITLE_ALIGN_START;\n          break;\n      }\n    }\n    return align;\n\n  }\n\n  public getCellAlignClass(column: OColumn): string {\n    return Util.isDefined(column.definition) && Util.isDefined(column.definition.contentAlign) ? 'o-' + column.definition.contentAlign : '';\n  }\n\n\n  public getGroupHeaderCellAlignClass(column: string): string[] {\n    const classNameArray = [];\n    const oCol = this.getOColumn(column.substr('groupHeader-'.length));\n    if (Util.isDefined(oCol)) {\n      classNameArray.push(this.getCellAlignClass(oCol));\n      classNameArray.push(oCol.className ? oCol.className : '');\n    }\n    return classNameArray;\n  }\n\n  protected addDefaultRowButtons() {\n    // check permissions\n    if (this.editButtonInRow) {\n      this.addButtonInRow('editButtonInRow');\n    }\n    if (this.detailButtonInRow) {\n      this.addButtonInRow('detailButtonInRow');\n    }\n  }\n\n  protected addButtonInRow(name: string) {\n    const colDef: OColumn = this.createOColumn(name, this);\n    colDef.type = name;\n    colDef.visible = true;\n    colDef.searchable = false;\n    colDef.orderable = false;\n    colDef.resizable = false;\n    colDef.groupable = false;\n    colDef.title = undefined;\n    colDef.width = '48px';\n    this.pushOColumnDefinition(colDef);\n    this._oTableOptions.visibleColumns.push(name);\n  }\n\n  get headerHeight() {\n    let height = 0;\n    if (this.tableHeaderEl?.nativeElement) {\n      height += this.tableHeaderEl.nativeElement.offsetHeight;\n    }\n    if (this.tableToolbarEl?.nativeElement) {\n      height += this.tableToolbarEl.nativeElement.offsetHeight;\n    }\n    return height;\n  }\n\n  get toolBarHeight() {\n    let height = 0;\n\n    if (this.tableToolbarEl?.nativeElement) {\n      height += this.tableToolbarEl.nativeElement.offsetHeight;\n    }\n    return height;\n  }\n\n  isDetailMode(): boolean {\n    return this.detailMode !== Codes.DETAIL_MODE_NONE;\n  }\n\n  copyAll() {\n    Util.copyToClipboard(JSON.stringify(this.getRenderedValue()));\n  }\n\n  copySelection() {\n    const selectedItems = this.dataSource.getRenderedData(this.getSelectedItems());\n    Util.copyToClipboard(JSON.stringify(selectedItems));\n  }\n\n  destroyActivedTooltips() {\n    this.tooltip.forEach(tp => {\n      if (tp._overlayRef) {\n        tp._overlayRef.detach();\n      }\n    });\n  }\n\n  /**\n   * Triggers navigation to item detail, receiving item data\n   * @param item\n   * @returns detail\n   */\n  viewDetail(item: any): void {\n    if (this.readOnly && this.showNotificationOfReadOnly) {\n      this.snackBarService.open('MESSAGES.OPERATION_NOT_ALLOWED_READONLY');\n    }\n\n    if (!this.checkEnabledActionPermission('detail') || this.readOnly) {\n      return;\n    }\n    this.destroyActivedTooltips();\n    super.viewDetail(item);\n  }\n\n\n  /**\n   * Triggers navigation to item edition, receiving item data\n   * @param item\n   * @returns detail\n   */\n  editDetail(item: any): void {\n    if (this.readOnly && this.showNotificationOfReadOnly) {\n      this.snackBarService.open('MESSAGES.OPERATION_NOT_ALLOWED_READONLY');\n    }\n\n    if (!this.checkEnabledActionPermission('edit') || this.readOnly) {\n      return;\n    }\n    super.editDetail(item);\n  }\n\n  getOColumnFromTh(th: any): OColumn {\n    let result: OColumn;\n    const classList: any[] = Array.from((th as Element).classList || []);\n    const columnClass = classList.find((className: string) => (className.startsWith('mat-column-')));\n    if (Util.isDefined(columnClass)) {\n      result = this.getOColumn(columnClass.substr('mat-column-'.length));\n    }\n    return result;\n  }\n\n  getOColumnFromGroupHeaderColumn(attr: string): OColumn {\n    return this.getOColumn(attr.substr('groupHeader-'.length));\n  }\n\n  getThWidthFromOColumn(oColumn: OColumn): any {\n    let widthColumn: number;\n    const thArray = this.tableHeaderEl.nativeElement.children;\n    for (let i = 0; i < thArray.length && !Util.isDefined(widthColumn); i++) {\n      const th = thArray[i];\n      const classList = th.classList;\n      for (let j = 0; j < classList.length && !Util.isDefined(widthColumn); j++) {\n        if (classList[j] === 'mat-column-' + oColumn.attr) {\n          widthColumn = th.clientWidth;\n        }\n      }\n    }\n    return widthColumn;\n  }\n\n  getColumnInsertable(name): string {\n    return name + this.getSuffixColumnInsertable();\n  }\n\n  isRowSelected(row: any): boolean {\n    return !this.isSelectionModeNone() && this.selection.isSelected(row);\n  }\n\n  public getColumnWidthFromState(colDef: OColumn): string {\n    //1. By default, set width definition\n    let columnWidth = colDef.definition && colDef.definition.width ? colDef.definition.width : void 0;\n    const storedData = this.state.getColumnDisplay(colDef);\n    if (Util.isDefined(storedData) && Util.isDefined(storedData.width)) {\n      //2. Set width if the width is stored\n      columnWidth = storedData.width;\n      // check that the width of the columns saved in the initial configuration\n      // in the local storage is different from the original value\n      if (this.state.initialConfiguration.columnsDisplay) {\n        const initialStoredData = this.state.initialConfiguration.getColumnDisplay(colDef);\n        // If original width changed then the width is reseted with this value\n        if (initialStoredData && initialStoredData.width && colDef.definition.originalWidth) {\n          if (initialStoredData.width !== colDef.definition.originalWidth) {\n            columnWidth = colDef.definition.originalWidth;\n          }\n        }\n      }\n    }\n    return columnWidth;\n  }\n\n  refreshColumnsWidthFromLocalStorage() {\n    this.oTableOptions.columns.forEach(x => {\n      x.width = this.getColumnWidthFromState(x);\n    });\n  }\n\n  refreshColumnsWidthFromOriginalDefinition() {\n    setTimeout(() => {\n      this._oTableOptions.columns.filter(c => c.visible).forEach(c => {\n        c.width = c.DOMWidth = void 0;\n        if (Util.isDefined(c.definition) && Util.isDefined(c.definition.width)) {\n          c.width = c.definition.width;\n        }\n        c.setRenderWidth(this.horizontalScroll, this.getClientWidthColumn(c));\n      });\n      this.cd.detectChanges();\n    }, 0);\n  }\n\n  private createOColumn(attr?: string, table?: OTableComponent, column?: OTableColumnComponent & OTableColumnCalculatedComponent): OColumn {\n    const instance = new OColumn();\n    if (attr) {\n      instance.attr = attr;\n    }\n    if (table) {\n      instance.setDefaultProperties({\n        orderable: this.orderable,\n        resizable: this.resizable,\n        groupable: this.groupable,\n        pageable: this.pageable\n      });\n    }\n    if (column) {\n      instance.setColumnProperties(column);\n    }\n    return instance;\n  }\n\n  public registerOTableButtons(arg: OTableButtons) {\n    this.oTableButtons = arg;\n    if (this.oTableButtons && this.tableButtons && this.tableButtons.length > 0) {\n      this.oTableButtons.registerButtons(this.tableButtons.toArray());\n    }\n  }\n\n  public getClientWidthColumn(col: OColumn): number {\n    return col.DOMWidth || this.getThWidthFromOColumn(col);\n  }\n\n  public getMinWidthColumn(col: OColumn): string {\n    return Util.extractPixelsValue(col.minWidth, Codes.DEFAULT_COLUMN_MIN_WIDTH) + 'px';\n  }\n\n  showExpandableRow(): boolean {\n    return Util.isDefined(this.tableRowExpandable);\n  }\n\n  /**\n   * Gets enable virtual scroll\n   */\n  get enabledVirtualScroll(): boolean {\n    return this.virtualScroll && !this.showExpandableRow() && this.groupedColumnsArray.length === 0;\n  }\n  /**\n   * Parses grouped columns\n   */\n  parseGroupedColumns() {\n    let result = this.state.groupedColumns || this.originalGroupedColumnsArray;\n    if (this.state.groupedColumns && this.state.initialConfiguration.groupedColumns) {\n      const difference = this.state.initialConfiguration.groupedColumns\n        .filter(x => !this.originalGroupedColumnsArray.includes(x));\n\n      if (difference.length > 0) {\n        result = this.originalGroupedColumnsArray;\n      }\n    }\n    this.setGroupColumns(result);\n  }\n  parseGroupedColumnTypes() {\n    this.groupedColumnTypes = this.state.groupedColumnTypes;\n  }\n\n  /**\n   * Groups by column\n   * @param column\n   */\n  groupByColumn(column: OColumn, type?: string) {\n    this.checkGroupByColumn(column.attr, true);\n    if (type) {\n      this.updateGroupedColumnTypes(column.attr, true, type);\n    }\n    this.dataSource.updateGroupedColumns();\n  }\n\n  /**\n   * Ungroup by column\n   * @param column\n   */\n  unGroupByColumn(column: OColumn) {\n    this.checkGroupByColumn(column.attr, false);\n    this.updateGroupedColumnTypes(column.attr, false);\n    this.dataSource.updateGroupedColumns();\n  }\n\n  /**\n   * Ungroup by all columns\n   */\n  unGroupByAllColumns() {\n    this.setGroupColumns([]);\n    this.groupedColumnTypes = [];\n  }\n\n  setGroupColumns(value: any[]) {\n    this.groupedColumnsArray = value;\n    this.dataSource.updateGroupedColumns();\n  }\n  setGroupedColumnTypes(value: OGroupedColumnTypes[]) {\n    this.groupedColumnTypes = value;\n  }\n  checkGroupByColumn(field: string, add: boolean) {\n    let found = null;\n    for (const column of this.groupedColumnsArray) {\n      if (column === field) {\n        found = this.groupedColumnsArray.indexOf(column, 0);\n      }\n    }\n    if (found != null && found >= 0) {\n      if (!add) {\n        this.groupedColumnsArray.splice(found, 1);\n      }\n    } else {\n      if (add) {\n        this.groupedColumnsArray.push(field);\n      }\n    }\n  }\n\n  /**\n   * Determines whether item is group\n   * @param index\n   * @param item\n   * @returns true if group\n   */\n  isGroup(index, item): boolean {\n    return item instanceof OTableGroupedRow;\n  }\n\n  /**\n   * Determines whether item is not group\n   * @param index\n   * @param item\n   * @returns true if not group\n   */\n  isNotGroup(index, item): boolean {\n    return !(item instanceof OTableGroupedRow);\n  }\n\n  getLastGroups() {\n    // Get last groups\n    const scores = this.dataSource.renderedData;\n    const maxLevel = scores.reduce((acc, curr) => curr.level > acc ? curr.level : acc, 0);\n    const maxLevelRenderedData = scores.reduce((r, o) => o.level === maxLevel ? [...r, o] : r, []);\n    return maxLevelRenderedData.length;\n  }\n\n  groupHeaderClick(row: OTableGroupedRow) {\n    this.dataSource.toggleGroupByColumn(row);\n  }\n\n  private isInstanceOfOTableCellRendererServiceComponent(renderer: OBaseTableCellRenderer) {\n    return Util.isDefined(renderer) && (renderer as any).onDataLoaded && (renderer as any).queryAllData;\n  }\n\n  /**\n   * Gets column data by attr\n   * @param attr\n   * @param row\n   * @returns column data by attr\n   */\n  getColumnDataByAttr(attr, row: any): any {\n    let operation = null;\n    if (this.groupedColumnTypes.length != 0 && this.groupedColumnTypes.findIndex(column => column.attr == attr) != -1) {\n      operation = this.groupedColumnTypes[this.groupedColumnTypes.findIndex(column => column.attr == attr)].type;\n    }\n    const oCol = this.getOColumn(attr);\n    if (!Util.isDefined(oCol)) {\n      return row[attr];\n    }\n    const useRenderer = oCol.renderer && oCol.renderer.getCellData;\n    if (operation == null) {\n      return useRenderer ? oCol.renderer.getCellData(row[oCol.attr], row) : row[oCol.attr];\n    }\n    else {\n      const date = moment(row[oCol.attr]);\n      const language = this.translateService.getCurrentLang();\n      switch (operation) {\n        case \"YEAR\": return date.year();\n        case \"MONTH\": return moment().locale(language).month(date.month()).format(\"MMMM\");\n        case \"YEAR_MONTH\": return moment().locale(language).month(date.month()).year(date.year()).format(\"MMMM, YYYY\");\n        case \"YEAR_MONTH_DAY\": return useRenderer ? oCol.renderer.getCellData(row[oCol.attr], row) : row[oCol.attr];\n      }\n    }\n  }\n  updateGroupedColumnTypes(attr: string, add: boolean, operation?: string) {\n    let groupedColumns: OGroupedColumnTypes[] = [];\n    let index = this.groupedColumnTypes.findIndex(column => column.attr == attr);\n    if (index != -1) {\n      if (!add) {\n        this.groupedColumnTypes.splice(index, 1);\n      }\n    }\n    else {\n      if (add) {\n        this.groupedColumnTypes.push({ \"attr\": attr, \"type\": operation });\n      }\n    }\n    this.state.groupedColumnTypes = groupedColumns;\n  }\n\n  getClassNameGroupHeader(row: OTableGroupedRow): string {\n    let className = '';\n    if (row.level <= 10) {\n      className = 'o-table-group-row o-table-group-row-level-' + row.level;\n    }\n    return className;\n  }\n\n  private stopEdition(clearSelection?: boolean) {\n    clearSelection = clearSelection ? clearSelection : false;\n    this.editingCell = undefined;\n    this.editingRow = undefined;\n    this.clearSelectionAndEditing(clearSelection);\n  }\n\n  storeFilterInState(arg: OFilterDefinition) {\n    this.componentStateService.storeFilter(arg);\n  }\n\n  reinitializateQuickFilterColumns() {\n    this._oTableOptions.columns\n      .filter(column => column.searchable && column.visible)\n      .forEach(column => column.searching = true)\n  }\n\n  reinitializeSortColumns(sortColumns?: SQLOrder[]) {\n    this.tableHeaders = [];\n    if (Util.isDefined(sortColumns)) {\n      this.sortColArray = sortColumns;\n    } else {\n      this.parseSortColumns();\n    }\n    this.sort.setSortColumns(this.sortColArray);\n    this.refreshSortHeaders();\n  }\n\n  protected refreshSortHeaders() {\n    this.tableHeaders.filter(header => Util.isDefined(header.matSortHeader)).forEach(header => header.matSortHeader.refresh());\n  }\n\n  getQuickFilterValue(): string {\n    return Util.isDefined(this.oTableQuickFilterComponent) ?\n      this.oTableQuickFilterComponent.value :\n      '';\n  }\n\n  public queryCellRenderers(): Observable<any> {\n    const quickFilterValue = this.getQuickFilterValue();\n\n    if ((Util.isDefined(quickFilterValue) && quickFilterValue.length > 0) || this.sortColArray.length > 0) {\n      const queries = this.oTableOptions.columns\n        .filter(oCol => oCol.searching && this.isInstanceOfOTableCellRendererServiceComponent(oCol.renderer))\n        .map(oCol => (oCol.renderer as any).queryAllData());\n\n      return queries.length > 0 ? combineLatest(queries) : of(null);\n    }\n    return of(null);\n  }\n\n  tableQuickFilterChanged(value: string) {\n    if (this.pageable) {\n      this.queryCellRenderers().subscribe(() => {\n        this.reloadPaginatedDataFromStart(false);\n      });\n    } else {\n      if (value && value.length) {\n        this.dataSource.quickFilter = value;\n      }\n    }\n  }\n\n  // onMatSortChange\n  public filterData(value?: string, loadMore?: boolean): void {\n    //\n  }\n\n  setOTableColumnsGrouping(value: OTableColumnsGrouping) {\n    this.oTableColumnsGroupingComponent = value;\n  }\n\n  getColumnGroupingComponent(columnAttr: string): OTableColumnsGroupingColumnComponent {\n    let result: OTableColumnsGroupingColumnComponent;\n    if (Util.isDefined(this.oTableColumnsGroupingComponent)) {\n      result = this.oTableColumnsGroupingComponent.getColumnGrouping(columnAttr);\n    }\n    return result;\n  }\n\n  useColumnGroupingAggregate(columnAttr: string): boolean {\n    const oCol = this.getOColumn(columnAttr);\n    if (!Util.isDefined(oCol)) {\n      return false;\n    }\n    const sqlType = this.getSqlTypes()[columnAttr];\n    const hasDefaultAggregate = SQLTypes.isNumericSQLType(sqlType)\n      && (!Util.isDefined(oCol.renderer) || OTableComponent.AVAILABLE_GROUPING_COLUMNS_RENDERERS.includes(oCol.type));\n\n    if (!Util.isDefined(this.oTableColumnsGroupingComponent)) {\n      return hasDefaultAggregate;\n    }\n    return this.oTableColumnsGroupingComponent.useColumnAggregate(columnAttr, hasDefaultAggregate);\n  }\n\n  protected checkViewportSize() {\n    // Its a temporarily fixed for https://github.com/angular/components/issues/10117\n    // Solve the issue when switching tabs when the virtual scrolling component is used\n    // in a mat - tab component and virtual scroll work abnormally\n    if (this.virtualScrollViewport) {\n      this.virtualScrollViewport.checkViewportSize();\n    }\n  }\n\n  // Show expandable icon or not if has data or not\n  showExpandableIcon(row: any, rowIndex: number): Observable<boolean> {\n    return (Util.isDefined(this.showExpandableIconFunction) && this.showExpandableIconFunction instanceof Function) ? Util.wrapIntoObservable(this.showExpandableIconFunction(row, rowIndex)) : of(true);\n  }\n\n  getColumnsNotIncluded(): string[] {\n    let colsNotIncluded = [];\n    colsNotIncluded = this.oTableOptions.columns.filter(c => void 0 !== c.renderer && (c.type === 'image' || c.type === 'action')).map(c => c.attr);\n    colsNotIncluded.push(Codes.NAME_COLUMN_SELECT);\n    colsNotIncluded.push(Codes.NAME_COLUMN_EXPANDABLE);\n    return colsNotIncluded;\n  }\n\n  getColumnNames(columns: string[]): { [columnId: string]: string; } {\n    const tableColumnNames = {};\n    columns.forEach(c => {\n      const oColumn = this._oTableOptions.columns.find(oc => oc.attr === c);\n      tableColumnNames[c] = this.translateService.get(oColumn.title ? oColumn.title : oColumn.attr);\n    });\n    return tableColumnNames;\n  }\n\n  resetColumnsWidth() {\n    this._oTableOptions.columns.forEach(c => {\n      if (Util.isDefined(c.definition)) {\n        c.width = Util.isDefined(c.definition.width) ? c.definition.width : c.definition.originalWidth\n      } else {\n        c.width = \"auto\";\n      }\n    });\n    this.cd.detectChanges();\n    this.updateColumnsDOMWidth();\n  }\n\n  updateColumnsDOMWidth() {\n    this._oTableOptions.columns.forEach(c => {\n      c.DOMWidth = this.getThWidthFromOColumn(c);\n    });\n\n  }\n\n  public isDisableCheckbox(item: any): boolean {\n    let disable = false;\n    if (Util.isDefined(this.disableSelectionFunction)) {\n      return this.disableSelectionFunction({ ...item });\n    }\n    return disable;\n\n  }\n\n  getService() {\n    return this.dataService;\n  }\n\n  getSnackService() {\n    return this.snackBarService;\n  }\n}\n","<div class=\"o-table-container\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\" [style.display]=\"isVisible()? '' : 'none'\"\n  [class.block-events]=\"showLoading | async\">\n\n  <o-data-toolbar #tableToolbar *ngIf=\"hasControls()\" [title]=\"title\" [show-title]=\"showTitle\" class=\"o-table-toolbar\">\n    <ng-container o-data-toolbar-projection-start>\n      <o-table-buttons #tableButtons [insert-button]=\"insertButton\" [refresh-button]=\"refreshButton\" [delete-button]=\"showDeleteButton\">\n        <ng-content select=\"o-table-button\"></ng-content>\n      </o-table-buttons>\n    </ng-container>\n    <ng-content select=\"[o-table-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n    </ng-content>\n    <ng-content select=\"[o-table-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n    </ng-content>\n    <ng-content select=\"[o-table-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n    </ng-content>\n    <ng-container o-data-toolbar-projection-end>\n      <ng-container *ngIf=\"quickfilterContentChild; else defaultQuickFilter\">\n        <ng-content select=\"o-table-quickfilter\"></ng-content>\n      </ng-container>\n      <ng-template #defaultQuickFilter>\n        <ng-container *ngIf=\"quickFilter\">\n          <o-table-quickfilter (onChange)=\"tableQuickFilterChanged($event)\">\n          </o-table-quickfilter>\n        </ng-container>\n      </ng-template>\n      <button type=\"button\" *ngIf=\"showTableMenuButton\" mat-icon-button class=\"o-table-menu-button\" [matMenuTriggerFor]=\"tableMenu.matMenu\"\n        (click)=\"$event.stopPropagation()\">\n        <mat-icon svgIcon=\"ontimize:more_vert\"></mat-icon>\n      </button>\n      <o-table-menu #tableMenu [select-all-checkbox]=\"selectAllCheckbox\" [export-button]=\"exportButton\"\n        [columns-visibility-button]=\"columnsVisibilityButton\" [show-configuration-option]=\"showConfigurationOption\"\n        [show-filter-option]=\"showFilterOption\" [show-report-on-demand-option]=\"showReportOnDemandOption\"\n        [show-charts-on-demand-option]=\"showChartsOnDemandOption\" [show-reset-width-option]=\"showResetWidthOption\" [show-group-by-option]=\"groupable\">\n        <ng-content select=\"o-table-option\"></ng-content>\n      </o-table-menu>\n    </ng-container>\n  </o-data-toolbar>\n\n  <div #tableBody class=\"o-table-body o-scroll\" [class.horizontal-scroll]=\"horizontalScroll\" [class.scrolled]=\"horizontalScrolled\"\n        [ngStyle]=\"{'visibility': spinnerContainer ? 'hidden' : 'visible'}\">\n    <ng-container *ngIf=\"!enabledVirtualScroll; else tableWithVirtualScroll\">\n      <div class=\"o-table-overflow o-scroll\">\n        <ng-template *ngTemplateOutlet=\"table\"></ng-template>\n      </div>\n    </ng-container>\n    <ng-template #tableWithVirtualScroll>\n      <cdk-virtual-scroll-viewport #virtualScrollViewPort fxFlex>\n        <ng-template *ngTemplateOutlet=\"table\"></ng-template>\n      </cdk-virtual-scroll-viewport>\n    </ng-template>\n  </div>\n  <!--TABLE PAGINATOR-->\n  <mat-paginator *ngIf=\"paginator\" #matpaginator [length]=\"dataSource?.resultsLength\" [pageIndex]=\"paginator.pageIndex\" [pageSize]=\"queryRows\"\n    [pageSizeOptions]=\"paginator.pageSizeOptions\" (page)=\"onChangePage($event)\" [showFirstLastButtons]=\"paginator.showFirstLastButtons\"\n     [ngStyle]=\"{'visibility': spinnerContainer ? 'hidden' : 'visible'}\">\n  </mat-paginator>\n\n  <!--LOADING-->\n  <div #spinnerContainer *ngIf=\"showLoading | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" [ngStyle]=\"{'top.px': toolBarHeight}\"\n    class=\"spinner-container\" [class.spinner-container-scrollable]=\"loadingScroll | async\">\n    <o-table-skeleton></o-table-skeleton>\n  </div>\n\n  <!-- Disable blocker -->\n  <div *ngIf=\"!enabled\" class=\"o-table-disabled-blocker\"></div>\n</div>\n\n<ng-template #table>\n\n  <table mat-table #table [class.autoadjusted]=\"autoAdjust\" [trackBy]=\"getTrackByFunction()\" [dataSource]=\"dataSource\" oMatSort\n    [oMatSortColumns]=\"sortColArray\" [ngClass]=\"rowHeightObservable | async\" (cdkObserveContent)=\"projectContentChanged()\"\n    [oTableExpandedFooter]=\"(loading | async) === false\" [oTableExpandedFooterColspan]=\"visibleColArray.length\" [multiTemplateDataRows]=\"showExpandableRow()\"\n    aria-describedby=\"ontimize-web table\">\n\n    <!--Checkbox Column -->\n    <ng-container [matColumnDef]=\"oTableOptions.selectColumn.name\" *ngIf=\"oTableOptions.selectColumn.visible\">\n      <ng-container *ngIf=\"!tableColumnSelectAllContentChild; else customHeaderSelectAllTemplate\">\n        <th mat-header-cell *matHeaderCellDef>\n          <div class=\"content\" *ngIf=\"isSelectionModeMultiple()\">\n            <o-table-header-select-all [column]=\"oTableOptions.selectColumn\"></o-table-header-select-all>\n          </div>\n        </th>\n        <td mat-cell *matCellDef=\"let row\">\n          <mat-checkbox name=\"id[]\" (click)=\"$event.stopPropagation()\" [disabled]=\"isDisableCheckbox(row)\"\n            (change)=\"selectionCheckboxToggle($event, row)\" [checked]=\"isRowSelected(row)\">\n          </mat-checkbox>\n        </td>\n      </ng-container>\n      <ng-template #customHeaderSelectAllTemplate>\n        <th mat-header-cell *matHeaderCellDef [class.resizable]=\"resizable\" class=\"mat-header-select-all-with-title o-center\"\n          [style.width]=\"oTableOptions.selectColumn.width\" [style.min-width]=\"getMinWidthColumn(oTableOptions.selectColumn)\"\n          [style.max-width]=\"oTableOptions.selectColumn.maxWidth\">\n          <div class=\"content\">\n            <o-table-header-select-all [column]=\"oTableOptions.selectColumn\"></o-table-header-select-all>\n          </div>\n        </th>\n        <td mat-cell *matCellDef=\"let row\" class=\"o-center\" [style.width]=\"oTableOptions.selectColumn.width\"\n          [style.min-width]=\"getMinWidthColumn(oTableOptions.selectColumn)\" [style.max-width]=\"oTableOptions.selectColumn.maxWidth\">\n          <mat-checkbox name=\"id[]\" (click)=\"$event.stopPropagation()\" [disabled]=\"isDisableCheckbox(row)\"\n            (change)=\"selectionCheckboxToggle($event, row)\" [checked]=\"isRowSelected(row)\">\n          </mat-checkbox>\n        </td>\n      </ng-template>\n\n\n      <td mat-footer-cell *matFooterCellDef></td>\n    </ng-container>\n\n    <!--Expandable Column -->\n    <ng-container [matColumnDef]=\"oTableOptions.expandableColumn.name\" *ngIf=\"isColumnExpandable()\">\n      <th mat-header-cell *matHeaderCellDef>\n        {{ oTableOptions.expandableColumn.title }}\n      </th>\n      <td mat-cell *matCellDef=\"let row;let rowIndex = dataIndex\">\n        <mat-icon *ngIf=\"showExpandableIcon(row, rowIndex) | async\"\n        (click)=\"toggleRowExpandable(row, $event)\"\n        (keydown)=\"toggleRowExpandable(row, $event)\">\n          <ng-container *ngIf=\"isExpanded(row)\">{{ tableRowExpandable.iconCollapse }}</ng-container>\n          <ng-container *ngIf=\"!isExpanded(row)\">{{ tableRowExpandable.iconExpand }}</ng-container>\n        </mat-icon>\n      </td>\n    </ng-container>\n\n    <!-- Generic column definition -->\n    <ng-container *ngFor=\"let column of oTableOptions.columns\" [matColumnDef]=\"column.name\">\n      <!--Define header-cell-->\n\n      <th mat-header-cell *matHeaderCellDef [ngClass]=\"getTitleAlignClass(column)\" [class.resizable]=\"resizable\" [style.width]=\"column.width\"\n        [style.min-width]=\"getMinWidthColumn(column)\" [style.max-width]=\"column.maxWidth\">\n\n        <div class=\"content\">\n          <o-table-header [column]=\"column\"></o-table-header>\n        </div>\n      </th>\n\n\n      <!--Define mat-cell-->\n      <ng-container *ngIf=\"!table.multiTemplateDataRows; else cellTemplateMultiTemplateDataRows\">\n        <td #cell mat-cell *matCellDef=\"let row;let rowIndex = index \" [ngClass]=\"[column.className, getCellAlignClass(column)]\"\n          (click)=\"handleClick(row, column, rowIndex, cell, $event)\" (dblclick)=\"handleDoubleClick(row, column, rowIndex, cell, $event)\"\n          [class.empty-cell]=\"isEmpty(row[column.name])\" [matTooltipDisabled]=\"!column.hasTooltip()\" [matTooltip]=\"column.getTooltip(row)\"\n          matTooltipPosition=\"below\" matTooltipShowDelay=\"750\" matTooltipClass=\"o-table-cell-tooltip\"\n          [class.o-mat-cell-multiline]=\"(column.isMultiline | async)\" [oContextMenu]=\"tableContextMenu\"\n          [oContextMenuData]=\"{ cellName:column.name, rowValue:row, rowIndex:rowIndex}\" [style.width]=\"column.width\"\n          [style.min-width]=\"getMinWidthColumn(column)\" [style.max-width]=\"column.maxWidth\"\n          [class.o-table-editing-cell]=\"isRowSelected(row) && column.editing\">\n          <ng-container *ngTemplateOutlet=\"cellRenderer;context:{column:column,row:row}\"></ng-container>\n        </td>\n      </ng-container>\n      <ng-template #cellTemplateMultiTemplateDataRows>\n        <td #cell mat-cell *matCellDef=\"let row;let rowIndex = dataIndex \" [ngClass]=\"[column.className, getCellAlignClass(column)]\"\n          (click)=\"handleClick(row, column, rowIndex, cell, $event)\" (dblclick)=\"handleDoubleClick(row, column, rowIndex, cell, $event)\"\n          [class.empty-cell]=\"isEmpty(row[column.name])\" [matTooltipDisabled]=\"!column.hasTooltip()\" [matTooltip]=\"column.getTooltip(row)\"\n          matTooltipPosition=\"below\" matTooltipShowDelay=\"750\" matTooltipClass=\"o-table-cell-tooltip\"\n          [class.o-mat-cell-multiline]=\"(column.isMultiline | async)\" [oContextMenu]=\"tableContextMenu\"\n          [oContextMenuData]=\"{ cellName:column.name, rowValue:row, rowIndex:rowIndex}\" [style.width]=\"column.width\"\n          [style.min-width]=\"getMinWidthColumn(column)\" [style.max-width]=\"column.maxWidth\"\n          [class.o-table-editing-cell]=\"isRowSelected(row) && column.editing\">\n          <ng-container *ngTemplateOutlet=\"cellRenderer;context:{column:column,row:row}\"></ng-container>\n\n        </td>\n      </ng-template>\n      <!--Define mat-footer-cell-->\n      <ng-container *ngIf=\"showTotals | async\">\n        <td mat-footer-cell *matFooterCellDef [ngClass]=\"column.className\">\n          <div class=\"title\" *ngIf=\"column.aggregate && column.aggregate.title\">\n            {{ column.aggregate.title | oTranslate }}\n          </div>\n          <ng-container *ngIf=\"!column.renderer\">\n            {{ dataSource.getAggregateData(column) }}\n          </ng-container>\n          <ng-template *ngIf=\"column.renderer && column.aggregate\" [ngTemplateOutlet]=\"column.renderer.templateref\"\n            [ngTemplateOutletContext]=\"{cellvalue: dataSource.getAggregateData(column)}\"></ng-template>\n        </td>\n      </ng-container>\n\n    </ng-container>\n\n    <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\n    <ng-container *ngIf=\"hasExpandedRow\">\n      <ng-container matColumnDef=\"expandedDetail\">\n        <td mat-cell *matCellDef=\"let row;let rowIndex= dataIndex\" [attr.colspan]=\"oTableOptions.visibleColumns.length\">\n          <div [ngClass]=\"getExpandedRowContainerClass(rowIndex)\" [@detailExpand]=\"getStateExpand(row)\">\n          </div>\n        </td>\n      </ng-container>\n    </ng-container>\n\n    <!--FOOTER-INSERTABLE-->\n    <ng-container *ngIf=\"showLastInsertableRow && oTableInsertableRowComponent\">\n      <ng-container [matColumnDef]=\"oTableOptions.selectColumn.name + getSuffixColumnInsertable()\" *ngIf=\"oTableOptions.selectColumn.visible\">\n        <td mat-footer-cell *matFooterCellDef>\n        </td>\n      </ng-container>\n      <ng-container *ngFor=\"let column of oTableOptions.columns\" [matColumnDef]=\"column.name+ getSuffixColumnInsertable()\">\n\n        <td mat-footer-cell *matFooterCellDef [ngClass]=\"column.className\">\n          <ng-container *ngIf=\"oTableInsertableRowComponent.isColumnInsertable(column) && !oTableInsertableRowComponent.useCellEditor(column)\">\n            <mat-form-field class=\"insertable-form-field o-table-cell-editor-text o-table-cell-editor\" [hideRequiredMarker]=\"false\">\n              <input matInput type=\"text\" [placeholder]=\"oTableInsertableRowComponent.getPlaceholder(column)\" [id]=\"column.attr\"\n                [formControl]=\"oTableInsertableRowComponent.getControl(column)\" [required]=\"oTableInsertableRowComponent.isColumnRequired(column)\">\n              <mat-error *oMatError=\"oTableInsertableRowComponent.columnHasError(column, 'required')\">\n                {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n              </mat-error>\n            </mat-form-field>\n          </ng-container>\n\n          <ng-container *ngIf=\"oTableInsertableRowComponent.isColumnInsertable(column) && oTableInsertableRowComponent.useCellEditor(column)\">\n            <ng-template [ngTemplateOutlet]=\"oTableInsertableRowComponent.columnEditors[column.attr].templateref\"\n              [ngTemplateOutletContext]=\"{ rowvalue: oTableInsertableRowComponent.rowData }\">\n            </ng-template>\n          </ng-container>\n        </td>\n      </ng-container>\n\n    </ng-container>\n\n    <ng-container *ngIf=\"showFirstInsertableRow && oTableInsertableRowComponent\">\n      <ng-container [matColumnDef]=\"getColumnInsertable(oTableOptions.selectColumn.name)\" *ngIf=\"oTableOptions.selectColumn.visible\">\n        <td mat-header-cell *matHeaderCellDef>\n        </td>\n      </ng-container>\n      <ng-container *ngFor=\"let column of oTableOptions.columns\" [matColumnDef]=\"getColumnInsertable(column.name)\">\n\n        <td mat-header-cell *matHeaderCellDef [ngClass]=\"column.className\">\n          <ng-container *ngIf=\"oTableInsertableRowComponent.isColumnInsertable(column) && !oTableInsertableRowComponent.useCellEditor(column)\">\n            <mat-form-field class=\"insertable-form-field\" [hideRequiredMarker]=\"false\">\n              <input matInput type=\"text\" [placeholder]=\"oTableInsertableRowComponent.getPlaceholder(column)\" [id]=\"column.attr\"\n                [formControl]=\"oTableInsertableRowComponent.getControl(column)\" [required]=\"oTableInsertableRowComponent.isColumnRequired(column)\">\n              <mat-error *oMatError=\"oTableInsertableRowComponent.columnHasError(column, 'required')\">\n                {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n              </mat-error>\n            </mat-form-field>\n          </ng-container>\n\n          <ng-container *ngIf=\"oTableInsertableRowComponent.isColumnInsertable(column) && oTableInsertableRowComponent.useCellEditor(column)\">\n            <ng-template [ngTemplateOutlet]=\"oTableInsertableRowComponent.columnEditors[column.attr].templateref\"\n              [ngTemplateOutletContext]=\"{ rowvalue: oTableInsertableRowComponent.rowData }\">\n            </ng-template>\n          </ng-container>\n        </td>\n      </ng-container>\n\n    </ng-container>\n\n    <!-- Definition column group header -->\n    <ng-container *ngFor=\"let column of groupingHeadersRows; let i = index\" [matColumnDef]=\"column\">\n      <td mat-cell *matCellDef=\"let group\" class=\"grouping-row\" [oContextMenu]=\"tableContextMenu\"\n        [oContextMenuData]=\"{ cellName:column, rowValue:group, rowIndex:i}\" [ngClass]=\"getGroupHeaderCellAlignClass(column)\">\n        <div *ngIf=\"i===0\" class=\"grouping-title-wrapper\" [ngStyle]=\"{'padding-left': 20*(group.level-1)+'px'}\">\n          <mat-icon>{{ group.expanded ? 'expand_more' : 'chevron_right' }}</mat-icon>\n          {{ group.title }}\n        </div>\n        <div class=\"grouping-aggregate\" *ngIf=\"group.hasActiveAggregate(visibleColArray[i])\">\n          {{ group.getColumnActiveAggregateTitle(visibleColArray[i]) | oTranslate }} :\n          <ng-container *ngIf=\"!getOColumnFromGroupHeaderColumn(column).renderer\">\n            {{ group.getColumnAggregateValue(visibleColArray[i])}}\n          </ng-container>\n          <ng-container *ngIf=\"getOColumnFromGroupHeaderColumn(column).renderer\">\n            <ng-template\n              *ngTemplateOutlet=\"getOColumnFromGroupHeaderColumn(column).renderer?.templateref; context:{ cellvalue:  group.getColumnAggregateValue(visibleColArray[i]) }\">\n            </ng-template>\n          </ng-container>\n        </div>\n      </td>\n    </ng-container>\n\n    <ng-container matColumnDef=\"position\">\n      <td mat-cell *matCellDef=\"let row\"> {{row}} </td>\n    </ng-container>\n\n    <tr #tableHeader mat-header-row *matHeaderRowDef=\"oTableOptions.visibleColumns; sticky: fixedHeader\"></tr>\n\n    <ng-container *ngIf=\"!table.multiTemplateDataRows; else rowTemplateMultiTemplateDataRows\">\n      <tr mat-row oTableRow *matRowDef=\"let row; columns: oTableOptions.visibleColumns; when:isNotGroup; let rowIndex = index\"\n        [class.selected]=\"isRowSelected(row)\" [ngClass]=\"row | oTableRowClass: rowIndex: rowClass\">\n      </tr>\n    </ng-container>\n    <ng-template #rowTemplateMultiTemplateDataRows>\n      <tr mat-row oTableRow *matRowDef=\"let row; columns: oTableOptions.visibleColumns; when:isNotGroup; let rowIndex = dataIndex\"\n        [class.selected]=\"isRowSelected(row)\" [ngClass]=\"row | oTableRowClass: rowIndex: rowClass\">\n      </tr>\n    </ng-template>\n\n    <!-- Row Group header -->\n    <tr mat-row *matRowDef=\"let row; columns: groupingHeadersRows; when:isGroup\" (click)=\"groupHeaderClick(row)\"\n      [ngClass]=\"getClassNameGroupHeader(row)\">\n    </tr>\n\n    <!-- Expanded detail row-->\n    <ng-container *ngIf=\"hasExpandedRow\">\n      <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"o-table-row-expanded\"></tr>\n    </ng-container>\n\n    <ng-container *ngIf=\"showLastInsertableRow\">\n      <tr mat-footer-row *matFooterRowDef=\"oTableOptions.columnsInsertables; sticky: true\"\n        (keyup)=\"oTableInsertableRowComponent.handleKeyboardEvent($event)\" class=\"o-table-insertable\"></tr>\n    </ng-container>\n    <ng-container *ngIf=\"showFirstInsertableRow\">\n      <tr mat-header-row *matHeaderRowDef=\"oTableOptions.columnsInsertables; sticky: true\"\n        (keyup)=\"oTableInsertableRowComponent.handleKeyboardEvent($event)\" class=\"o-table-insertable\"> </tr>\n    </ng-container>\n    <ng-container *ngIf=\"showTotals | async\">\n      <tr mat-footer-row *matFooterRowDef=\"oTableOptions.visibleColumns; sticky: true\" class=\"o-table-aggregate\">\n      </tr>\n    </ng-container>\n  </table>\n\n</ng-template>\n\n<ng-container *ngIf=\"!contextMenuContentChild && contextMenu\">\n  <o-table-context-menu [insert]=\"insertButton\" [edit]=\"editionMode !== EDIT_MODE_NONE\" [view-detail]=\"detailMode !== DETAIL_MODE_NONE\"\n    [refresh]=\"refreshButton\" [delete]=\"deleteButton\" [filter]=\"showFilterOption\" [group-by-row]=\"groupable\">\n  </o-table-context-menu>\n</ng-container>\n\n<ng-template #cellRenderer let-row=\"row\" let-column=\"column\">\n  <div class=\"content\">\n\n    <ng-container [ngSwitch]=\"true\">\n      <ng-container *ngSwitchCase=\"column.renderer != null && (!column.editing || column.editing && !isRowSelected(row))\">\n        <ng-template *ngTemplateOutlet=\"column.renderer?.templateref; context:{ cellvalue: row[column.name], rowvalue:row }\">\n        </ng-template>\n      </ng-container>\n      <ng-container *ngSwitchCase=\"isRowSelected(row) && column.editing\">\n        <ng-template *ngTemplateOutlet=\"column.editor?.templateref; context:{ cellvalue: row[column.name], rowvalue:row }\">\n        </ng-template>\n      </ng-container>\n\n      <ng-container *ngSwitchCase=\"column.type === 'editButtonInRow' || column.type === 'detailButtonInRow'\">\n        <div fxLayoutAlign=\"center center\" class=\"o-action-cell-renderer\" (click)=\"onDetailButtonClick(column, row, $event)\">\n          <mat-icon>{{ getDetailButtonIcon(column) }}</mat-icon>\n        </div>\n      </ng-container>\n      <ng-container *ngSwitchDefault>{{ row[column.name] }}</ng-container>\n    </ng-container>\n\n  </div>\n</ng-template>\n","import { ContentChildren, Directive, EventEmitter, HostListener, Injector, OnInit, QueryList, Renderer2, Type, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncValidatorFn, UntypedFormControl, UntypedFormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../../decorators/input-converter';\nimport { OMatErrorDirective } from '../../../../directives/o-mat-error.directive';\nimport { OTableColumn } from '../../../../interfaces/o-table-column.interface';\nimport { SnackBarService } from '../../../../services/snackbar.service';\nimport { OTranslateService } from '../../../../services/translate/o-translate.service';\nimport { OValidatorComponent } from '../../../../shared/components/validation/o-validator.component';\nimport { ErrorData } from '../../../../types/error-data.type';\nimport { OMatErrorOptions } from '../../../../types/o-mat-error.type';\nimport { ObservableWrapper } from '../../../../util/async';\nimport { Codes } from '../../../../util/codes';\nimport { ComponentWithValidatorsAndErrorsData, ErrorsUtils } from '../../../../util/errors';\nimport { Util } from '../../../../util/util';\nimport { OTableComponent } from '../../o-table.component';\nimport { OColumn } from '../o-column.class';\nimport { OTableColumnComponent } from '../o-table-column.component';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_EDITOR = [\n  'orequired: required',\n  'showPlaceHolder: show-placeholder',\n  'olabel: label',\n  'updateRecordOnEdit: update-record-on-edit',\n  'showNotificationOnEdit: show-notification-on-edit',\n  'enabled'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_CELL_EDITOR = [\n  'editionStarted',\n  'editionCancelled',\n  'editionCommitted',\n  'onPostUpdateRecord'\n];\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_EDITOR,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_CELL_EDITOR\n})\nexport class OBaseTableCellEditor implements OnInit, ComponentWithValidatorsAndErrorsData {\n\n  protected translateService: OTranslateService;\n\n  @BooleanInputConverter()\n  orequired: boolean = false;\n  @BooleanInputConverter()\n  showPlaceHolder: boolean = false;\n  olabel: string;\n  @BooleanInputConverter()\n  updateRecordOnEdit: boolean = true;\n  @BooleanInputConverter()\n  showNotificationOnEdit: boolean = true;\n  protected _enabled: boolean = true;\n\n  protected _tableColumn: OTableColumn;\n  protected _table: OTableComponent;\n\n  protected _rowData: any;\n\n  formControl: UntypedFormControl;\n  controlArgs: any;\n\n  formGroup: UntypedFormGroup = new UntypedFormGroup({});\n\n  editionStarted: EventEmitter<object> = new EventEmitter<object>();\n  editionCancelled: EventEmitter<object> = new EventEmitter<object>();\n  editionCommitted: EventEmitter<object> = new EventEmitter<object>();\n\n  onPostUpdateRecord: EventEmitter<object> = new EventEmitter<object>();\n\n  public editorCreated: EventEmitter<object> = new EventEmitter<object>();\n\n  @ViewChild('input')\n  protected inputRef: any;\n\n  protected type: string;\n  registerInColumn: boolean = true;\n\n  protected snackBarService: SnackBarService;\n  protected oldValue: any;\n  cellEditorId: string;\n\n  errorsData: ErrorData[] = [];\n  protected validatorsSubscription: Subscription;\n  @ContentChildren(OValidatorComponent)\n  validatorChildren: QueryList<OValidatorComponent>;\n  protected renderer: Renderer2;\n\n  @HostListener('document:keyup', ['$event'])\n  onDocumentKeyup(event: KeyboardEvent) {\n    this.handleKeyup(event);\n  }\n\n  tooltipPosition: string = 'below';\n  tooltipShowDelay: number = 500;\n  tooltipHideDelay: number = 0;\n  errorOptions: OMatErrorOptions;\n  @ViewChildren(OMatErrorDirective)\n  oMatErrorChildren: QueryList<OMatErrorDirective>;\n\n  constructor(protected injector: Injector) {\n    this.snackBarService = this.injector.get<SnackBarService>(SnackBarService as Type<SnackBarService>);\n    this.tableColumn = this.injector.get<OTableColumnComponent>(OTableColumnComponent as Type<OTableColumnComponent>);\n    this.translateService = this.injector.get<OTranslateService>(OTranslateService as Type<OTranslateService>);\n    this.cellEditorId = Util.randomNumber().toString(36);\n    this.renderer = this.injector.get<Renderer2>(Renderer2 as Type<Renderer2>);\n    this.errorOptions = ErrorsUtils.getErrorOptions(this.injector);\n  }\n\n  ngOnInit(): void {\n    this.initialize();\n  }\n\n  public ngOnChanges(): void {\n    this.updateValidators();\n  }\n\n  ngAfterViewInit(): void {\n    if (this.validatorChildren) {\n      this.validatorsSubscription = this.validatorChildren.changes.subscribe(() => {\n        this.updateValidators();\n      });\n      if (this.validatorChildren.length > 0) {\n        this.updateValidators();\n      }\n    }\n  }\n\n  /**\n   * Initializes the cell editor\n   */\n  public initialize(): void {\n    this.createFormControl();\n    this.registerEditor();\n    this.editorCreated.emit(this);\n  }\n\n  protected handleKeyup(event: KeyboardEvent) {\n    const oColumn = this.table.getOColumn(this.tableColumnAttr);\n    if (!oColumn || !oColumn.editing) {\n      return;\n    }\n    const escClicked = this.checkKey(event, 'Escape', 27);\n    const enterClicked = this.checkKey(event, 'Enter', 13);\n    const tabClicked = this.checkKey(event, 'Tab', 9);\n    if (!escClicked && !enterClicked && !tabClicked) {\n      return;\n    }\n\n    if (escClicked) {\n      this.onEscClicked();\n      return;\n    }\n\n    if (this.table.editingCell && !this.table.editingCell.contains(event.target)) {\n      return;\n    }\n\n    if (enterClicked || tabClicked) {\n      this.commitEdition();\n    }\n  }\n\n  protected checkKey(event: KeyboardEvent, key: string, keyCode: number): boolean {\n    return (event.key && event.key === key) || (event.keyCode && event.keyCode === keyCode);\n  }\n\n  /**\n   * Creates form control\n   */\n  createFormControl() {\n    if (!this.formControl) {\n      const validators: ValidatorFn[] = this.resolveValidators();\n      const asyncValidators: AsyncValidatorFn[] = this.resolveAsyncValidators();\n      const cfg = {\n        value: undefined,\n        disabled: !this.enabled\n      };\n\n      this.formControl = new UntypedFormControl(cfg, validators, asyncValidators);\n\n    }\n    if (!Util.isDefined(this.formGroup.get(this.cellEditorId))) {\n      this.formGroup.addControl(this.cellEditorId, this.formControl);\n    }\n  }\n\n  /**\n   * Registers editor\n   */\n  registerEditor() {\n    if (this.registerInColumn && !Util.isDefined(this.tableColumn.editor)) {\n      this.tableColumn.registerEditor(this);\n      if (!Util.isDefined(this.type) && Util.isDefined(this.tableColumn.type)) {\n        this.type = this.tableColumn.type;\n      }\n    }\n  }\n\n  /**\n   * Gets the value of the cell data\n   * @returns cell data\n   */\n  getCellData(): any {\n    return this._rowData[this.tableColumnAttr];\n  }\n\n  /**\n   * Start edition with given the data\n   * @param data\n   */\n  startEdition(data: any) {\n    this.formGroup.reset();\n    this.rowData = data;\n    if (!this.isSilentControl()) {\n      this.editionStarted.emit(this._rowData);\n    }\n    this.table.cd.detectChanges();\n\n    // Selecting text if the template input element has defined the id=cellEditorId\n    const inputEl = document.getElementById(this.cellEditorId);\n    if (inputEl) {\n      (inputEl as HTMLInputElement).select();\n    }\n    this.setEditingRowClass(true)\n  }\n\n  /**\n   * Ends edition with the ability to skip or save changes\n   * @param saveChanges\n   */\n  endEdition(saveChanges: boolean) {\n    const oColumn: OColumn = this.table.getOColumn(this.tableColumnAttr);\n    if (oColumn) {\n      const updateObserver = this.table.updateCellData(oColumn, this._rowData, saveChanges);\n      if (updateObserver) {\n        updateObserver.subscribe(res => {\n          this.onUpdateSuccess(res);\n          this.table.daoTable.setDataArray(this.table.daoTable.data);\n        }, error => {\n          this._rowData[this.tableColumnAttr] = this.oldValue;\n          this.table.dataSource.updateRenderedRowData(this._rowData);\n          this.table.showDialogError(error, 'MESSAGES.ERROR_UPDATE');\n          this.table.cd.detectChanges();\n        });\n      } else {\n        this.table.cd.detectChanges();\n      }\n    }\n  }\n\n\n  /**\n   * Commits edition\n   */\n  commitEdition() {\n    if (!this.formControl.invalid) {\n      this.oldValue = this._rowData[this.tableColumnAttr];\n      this._rowData[this.tableColumnAttr] = this.formControl.value;\n      if (!this.isSilentControl()) {\n        this.endEdition(true);\n        this.editionCommitted.emit(this._rowData);\n      }\n    }\n  }\n\n  get tableColumn(): OTableColumn {\n    return this._tableColumn;\n  }\n\n  set tableColumn(arg: OTableColumn) {\n    this._tableColumn = arg;\n    if (arg) {\n      this._table = arg.table;\n    }\n  }\n\n  get tableColumnAttr(): string {\n    if (this._tableColumn) {\n      return this._tableColumn.attr;\n    }\n    return undefined;\n  }\n\n  set table(arg: OTableComponent) {\n    this._table = arg;\n  }\n\n  get table(): OTableComponent {\n    return this._table;\n  }\n\n  get rowData(): any {\n    return this._rowData;\n  }\n\n  set rowData(arg: any) {\n    this._rowData = arg;\n    const cellData = this.getCellData();\n    this.formControl.setValue(cellData);\n    this.formControl.markAsTouched();\n  }\n\n\n  /**\n   * Resolves validators\n   * @returns validators\n   */\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    if (this.tableColumn.angularValidatorsFn && this.tableColumn.angularValidatorsFn.length > 0) {\n      validators.push(...this.tableColumn.angularValidatorsFn);\n      ErrorsUtils.pushToErrorsData(this, this.tableColumn.angularValidatorsFnErrors);\n    }\n    if (this.orequired) {\n      validators.push(Validators.required);\n    }\n    return validators;\n  }\n\n  resolveAsyncValidators(): AsyncValidatorFn[] {\n    if (this.tableColumn.angularAsyncValidatorsFn && this.tableColumn.angularAsyncValidatorsFn.length > 0) {\n      ErrorsUtils.pushToErrorsData(this, this.tableColumn.angularValidatorsFnErrors);\n    }\n    return this.tableColumn.angularAsyncValidatorsFn || []\n  }\n\n  getActiveOErrors() {\n    return ErrorsUtils.getActiveOErrors(this);\n  }\n\n  public getErrorText(oError: any) {\n    if (this.tableColumn && this.tableColumn.editor && this.tableColumn.editor.errorsData) {\n      const error = this.tableColumn.editor.errorsData.find((item) => item.name === oError);\n      return error ? error.text : '';\n    } else {\n      return '';\n    }\n  }\n\n  protected updateValidators(): void {\n    ErrorsUtils.updateFormControlValidators(this);\n  }\n\n  /**\n   * Determines whether error has\n   * @param error\n   * @returns true if error\n   */\n  hasError(error: string): boolean {\n    return this.formControl && this.formControl.touched && (this.hasErrorExclusive(error) || this.formControl.hasError(error));\n  }\n\n  hasSomeError(): boolean {\n    return this.formControl && this.formControl.touched && Util.isDefined(this.formControl.errors);\n  }\n\n  hasErrorExclusive(error: string): boolean {\n    let hasError = false;\n    const errorsOrder = ['matDatepickerMax', 'matDatepickerMin', 'matDatepickerFilter', 'matDatepickerParse', 'required'];\n    const errors = this.formControl.errors;\n    if (Util.isDefined(errors)) {\n      if (Object.keys(errors).length === 1) {\n        return errors.hasOwnProperty(error);\n      } else {\n        for (let i = 0, len = errorsOrder.length; i < len; i++) {\n          hasError = errors.hasOwnProperty(errorsOrder[i]);\n          if (hasError) {\n            hasError = (errorsOrder[i] === error);\n            break;\n          }\n        }\n      }\n    }\n    return hasError;\n  }\n\n  getErrorValue(error: string, prop: string): string {\n    return this.formControl.hasError(error) ? this.formControl.getError(error)[prop] || '' : '';\n  }\n\n  onEscClicked() {\n    if (!this.isSilentControl()) {\n      this.endEdition(false);\n      this.editionCancelled.emit(this._rowData);\n    }\n  }\n\n  protected isSilentControl(): boolean {\n    return this.controlArgs !== undefined && this.controlArgs.silent;\n  }\n\n  getPlaceholder(): string {\n    return this.showPlaceHolder ?\n      this.translateService.get(this.olabel || this.tableColumn ? (this.tableColumn.title || this.tableColumnAttr) : this.tableColumnAttr) :\n      undefined;\n  }\n\n  protected onUpdateSuccess(res: any) {\n    ObservableWrapper.callEmit(this.onPostUpdateRecord, this._rowData);\n    if (this.showNotificationOnEdit) {\n      this.snackBarService.open('MESSAGES.UPDATED', { icon: 'check_circle' });\n    }\n  }\n\n  set enabled(arg: boolean) {\n    this._enabled = arg;\n    if (this.formControl) {\n      this._enabled ? this.formControl.enable() : this.formControl.disable();\n    }\n  }\n\n  get enabled(): boolean {\n    return this._enabled;\n  }\n\n  getFormControl() {\n    return this.formControl;\n  }\n\n  setEditingRowClass(addClass: boolean) {\n    const inputEl = document.getElementById(this.cellEditorId);\n    if (inputEl) {\n      const tableRowEl = inputEl.closest('tr');\n      if (tableRowEl) {\n        addClass ? this.renderer.addClass(tableRowEl, 'o-table-editing-row') :\n          this.renderer.removeClass(tableRowEl, 'o-table-editing-row')\n        this.table.cd.detectChanges();\n      }\n    }\n  }\n\n  get tooltip(): string {\n    const liteError = this.errorOptions.type === Codes.O_MAT_ERROR_LITE;\n    return liteError && this.hasSomeError() ? ErrorsUtils.getErrorsTooltipText(this) : '';\n  }\n\n  get tooltipClass(): string {\n    return ErrorsUtils.getTooltipClasses(this);\n  }\n}\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { Util } from '../../../../../util/util';\nimport { OBaseTableCellEditor } from '../o-base-table-cell-editor.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_BOOLEAN = [\n  'indeterminateOnNull: indeterminate-on-null',\n  // true-value: true value. Default: true.\n  'trueValue: true-value',\n  // false-value: false value. Default: false.\n  'falseValue: false-value',\n  // boolean-type [number|boolean|string]: cellData value type. Default: boolean\n  'booleanType: boolean-type',\n  'autoCommit: auto-commit'\n];\n\n@Component({\n  selector: 'o-table-cell-editor-boolean',\n  templateUrl: './o-table-cell-editor-boolean.component.html',\n  styleUrls: ['./o-table-cell-editor-boolean.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_BOOLEAN,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\n\nexport class OTableCellEditorBooleanComponent extends OBaseTableCellEditor implements OnInit {\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  indeterminate: boolean = false;\n\n  @BooleanInputConverter()\n  indeterminateOnNull: boolean = false;\n  trueValue: any;\n  falseValue: any;\n\n  protected _booleanType: string = 'boolean';\n\n  @BooleanInputConverter()\n  autoCommit: boolean = true;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.parseInputs();\n  }\n\n  get booleanType(): string {\n    return this._booleanType;\n  }\n\n  set booleanType(arg: string) {\n    arg = (arg || '').toLowerCase();\n    if (['number', 'boolean', 'string'].indexOf(arg) === -1) {\n      arg = 'boolean';\n    }\n    this._booleanType = arg;\n  }\n\n  protected parseInputs() {\n    switch (this.booleanType) {\n      case 'string':\n        this.parseStringInputs();\n        break;\n      case 'number':\n        this.parseNumberInputs();\n        break;\n      default:\n        this.trueValue = true;\n        this.falseValue = false;\n        break;\n    }\n  }\n\n  protected parseStringInputs() {\n    if ((this.trueValue || '').length === 0) {\n      this.trueValue = undefined;\n    }\n    if ((this.falseValue || '').length === 0) {\n      this.falseValue = undefined;\n    }\n  }\n\n  protected parseNumberInputs() {\n    this.trueValue = parseInt(this.trueValue, 10);\n    if (isNaN(this.trueValue)) {\n      this.trueValue = 1;\n    }\n    this.falseValue = parseInt(this.falseValue, 10);\n    if (isNaN(this.falseValue)) {\n      this.falseValue = 0;\n    }\n  }\n\n  startEdition(data: any) {\n    super.startEdition(data);\n    // using setTimeout to force this code execution after super.activateColumnEdition column.editing = true line\n    setTimeout(() => {\n      const isCurrentValueTrue = (this.formControl.value === this.trueValue);\n      if (this.autoCommit) {\n        // Toggling value (autocommmit changes component value without no further user interaction)\n        this.formControl.setValue(isCurrentValueTrue ? this.falseValue : this.trueValue, { emitEvent: false });\n        this.commitEdition();\n      } else {\n        this.formControl.setValue(isCurrentValueTrue ? this.trueValue : this.falseValue, { emitEvent: false });\n      }\n    }, 0);\n  }\n\n  getCellData() {\n    let cellData = super.getCellData();\n    this.indeterminate = this.indeterminateOnNull && !Util.isDefined(cellData);\n    if (!this.indeterminate) {\n      cellData = this.parseValueByType(cellData);\n    }\n    return cellData;\n  }\n\n  hasCellDataTrueValue(cellData: any): boolean {\n    let result: boolean;\n    if (Util.isDefined(cellData)) {\n      result = (cellData === this.trueValue);\n      if (this.booleanType === 'string' && !Util.isDefined(this.trueValue)) {\n        result = Util.parseBoolean(cellData, false);\n      }\n    }\n    return result;\n  }\n\n  protected parseValueByType(val: any): string | number | boolean {\n    let result = val;\n    const cellIsTrue = this.hasCellDataTrueValue(val);\n    const value = cellIsTrue ? this.trueValue : this.falseValue;\n    switch (this.booleanType) {\n      case 'string':\n        result = this.translateService.get(value);\n        break;\n      case 'number':\n        result = parseInt(value, 10);\n        break;\n      default:\n        break;\n    }\n    return result;\n  }\n\n  onChange(arg: MatCheckboxChange) {\n    this.formControl.setValue(arg.checked ? this.trueValue : this.falseValue, { emitEvent: false });\n    this.commitEdition();\n  }\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n  <div class=\"o-table-cell-editor-boolean o-table-cell-editor\" [formGroup]=\"formGroup\">\n    <mat-checkbox #checkbox (click)=\"$event.stopPropagation()\" (change)=\"onChange($event)\" [indeterminate]=\"indeterminate\"\n      [formControl]=\"formControl\" [class.hidden-checkbox]=\"autoCommit\">\n    </mat-checkbox>\n  </div>\n</ng-template>","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { MatDatepicker, MatDatepickerInputEvent } from '@angular/material/datepicker';\nimport moment from 'moment';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { MomentService } from '../../../../../services/moment.service';\nimport { OntimizeMomentDateAdapter } from '../../../../../shared/material/date/ontimize-moment-date-adapter';\nimport { DateFilterFunction } from '../../../../../types/date-filter-function.type';\nimport { ODateValueType } from '../../../../../types/o-date-value.type';\nimport { Util } from '../../../../../util/util';\nimport { OBaseTableCellEditor } from '../o-base-table-cell-editor.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_DATE = [\n  'format',\n  'locale',\n  'oStartView: start-view',\n  'min',\n  'max',\n  'oTouchUi: touch-ui',\n  'startAt: start-at',\n  'filterDate: filter-date',\n  // value-type [timestamp|string]: type must be defined to be able to save its value,\n  // e.g. classic ontimize server dates come as timestamps (number), but to be able to save them they have to be send as strings with\n  // the format 'YYYY-MM-DD HH:mm:ss'Default: timestamp.\n  'dateValueType: date-value-type'\n];\n\n\n@Component({\n  selector: 'o-table-cell-editor-date',\n  templateUrl: './o-table-cell-editor-date.component.html',\n  styleUrls: ['./o-table-cell-editor-date.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_DATE,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    { provide: DateAdapter, useClass: OntimizeMomentDateAdapter, deps: [MAT_DATE_LOCALE] }\n  ]\n})\n\nexport class OTableCellEditorDateComponent extends OBaseTableCellEditor implements OnInit {\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  format: string = 'L';\n  protected locale: string;\n  oStartView: 'month' | 'year' = 'month';\n  protected min: string;\n  protected max: string;\n  @BooleanInputConverter()\n  oTouchUi: boolean = false;\n  protected startAt: string;\n  filterDate: DateFilterFunction;\n  _dateValueType: ODateValueType = 'timestamp';\n\n  oStartAt: Date;\n  oMinDate: Date;\n  oMaxDate: Date;\n\n  private momentSrv: MomentService;\n  minDateString: string;\n  maxDateString: string;\n\n  protected datepicker: MatDatepicker<Date>;\n  constructor(\n    protected injector: Injector,\n    protected momentDateAdapter: DateAdapter<OntimizeMomentDateAdapter>\n  ) {\n    super(injector);\n    this.momentSrv = this.injector.get(MomentService);\n  }\n\n  initialize(): void {\n    super.initialize();\n    if (!this.locale) {\n      this.locale = this.momentSrv.getLocale();\n    }\n    if (this.format) {\n      (this.momentDateAdapter as any).oFormat = this.format;\n    }\n\n    this.momentDateAdapter.setLocale(this.locale);\n    if (this.startAt) {\n      this.oStartAt = new Date(this.startAt);\n    }\n\n    if (this.min) {\n      const date = new Date(this.min);\n      const momentD = moment(date);\n      if (momentD.isValid()) {\n        this.oMinDate = date;\n        this.minDateString = momentD.format(this.format);\n      }\n    }\n\n    if (this.max) {\n      const date = new Date(this.max);\n      const momentD = moment(date);\n      if (momentD.isValid()) {\n        this.oMaxDate = date;\n        this.maxDateString = momentD.format(this.format);\n      }\n    }\n  }\n\n  protected handleKeyup(event: KeyboardEvent) {\n    const oColumn = this.table.getOColumn(this.tableColumn.attr);\n    if (!oColumn) {\n      return;\n    }\n    if (!oColumn.editing && this.datepicker && this.datepicker.opened) {\n      this.datepicker.close();\n    } else {\n      super.handleKeyup(event);\n    }\n  }\n\n  startEdition(data: any) {\n    super.startEdition(data);\n    if (!this.startAt) {\n      this.oStartAt = this.getCellData();\n    }\n  }\n\n  getCellData(): any {\n    const value = super.getCellData();\n    if (Util.isDefined(value)) {\n      let result = value;\n      let m;\n      switch (this.dateValueType) {\n        case 'string':\n          m = moment(value, this.format);\n          break;\n        case 'date':\n          break;\n        case 'iso-8601':\n        case 'timestamp':\n        default:\n          m = moment(value);\n          break;\n      }\n      if (Util.isDefined(m)) {\n        result = m.toDate();\n      }\n      return result;\n    }\n    return value;\n  }\n\n  commitEdition() {\n    // !this.datepicker.opened &&\n    if (!this.formControl.invalid) {\n      this.oldValue = this._rowData[this.tableColumnAttr];\n      this._rowData[this.tableColumnAttr] = this.getValueByValyType();\n      if (!this.isSilentControl()) {\n        this.endEdition(true);\n        this.editionCommitted.emit(this._rowData);\n      }\n    }\n  }\n\n  protected getValueByValyType(): any {\n    let result = this.formControl.value;\n    const m = moment(this.formControl.value);\n    switch (this.dateValueType) {\n      case 'string':\n        result = m.format(this.format);\n        break;\n      case 'date':\n        result = new Date(result);\n        break;\n      case 'iso-8601':\n        result = m.toISOString();\n        break;\n      case 'timestamp':\n      default:\n        result = m.valueOf();\n        break;\n    }\n    return result;\n  }\n\n  onDateChange(event: MatDatepickerInputEvent<any>) {\n    const isValid = event.value && event.value.isValid && event.value.isValid();\n    let val = isValid ? event.value.valueOf() : event.value;\n    const m = moment(val);\n    switch (this.dateValueType) {\n      case 'string':\n        if (val) {\n          val = m.format(this.format);\n        }\n        break;\n      case 'date':\n        val = new Date(val);\n        break;\n      case 'iso-8601':\n        val = m.toISOString();\n        break;\n      case 'timestamp':\n      default:\n        break;\n    }\n\n    this.formControl.setValue(val, {\n      emitModelToViewChange: false,\n      emitEvent: false\n    });\n  }\n\n  openDatepicker(d: MatDatepicker<Date>) {\n    this.datepicker = d;\n    d.open();\n  }\n\n  set dateValueType(val: any) {\n    this._dateValueType = Util.convertToODateValueType(val);\n  }\n\n  get dateValueType(): any {\n    return this._dateValueType;\n  }\n\n  onClosed() {\n    if (this.inputRef) {\n      this.inputRef.nativeElement.focus();\n    }\n  }\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n  <div [formGroup]=\"formGroup\" class=\"o-table-cell-editor-date o-table-cell-editor\"\n    [matTooltip]=\"tooltip\"\n    [matTooltipClass]=\"tooltipClass\"\n    [matTooltipPosition]=\"tooltipPosition\"\n    [matTooltipShowDelay]=\"tooltipShowDelay\"\n    [matTooltipHideDelay]=\"tooltipHideDelay\">\n    <mat-form-field cdkFocusInitial>\n      <input #input matInput [id]=\"cellEditorId\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\"\n        [required]=\"orequired\" [matDatepicker]=\"d\" [matDatepickerFilter]=\"filterDate\"\n        (dateChange)=\"onDateChange($event)\" [min]=\"oMinDate\" [max]=\"oMaxDate\">\n\n      <mat-datepicker #d [startView]=\"oStartView\" [startAt]=\"oStartAt\" [touchUi]=\"oTouchUi\" (closed)=\"onClosed()\">\n      </mat-datepicker>\n\n      <span class=\"icon-btn\" (click)=\"openDatepicker(d)\" matSuffix>\n        <mat-icon svgIcon=\"ontimize:today\"></mat-icon>\n      </span>\n\n      <mat-error *oMatError=\"hasError('required')\">\n        {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n      </mat-error>\n      <mat-error *oMatError=\"hasError('matDatepickerParse')\">\n        {{ 'FORM_VALIDATION.DATE_PARSE' | oTranslate }} {{ format }}\n      </mat-error>\n      <mat-error *oMatError=\"hasError('matDatepickerFilter')\">\n        {{ 'FORM_VALIDATION.DATE_FILTER' | oTranslate }}\n      </mat-error>\n      <mat-error *oMatError=\"hasError('matDatepickerMin')\">\n        {{ 'FORM_VALIDATION.DATE_MIN' | oTranslate }} {{ minDateString }}\n      </mat-error>\n      <mat-error *oMatError=\"hasError('matDatepickerMax')\">\n        {{ 'FORM_VALIDATION.DATE_MAX' | oTranslate }} {{ maxDateString }}\n      </mat-error>\n      <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n        {{ getErrorText(oError) }}\n      </mat-error>\n    </mat-form-field>\n  </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\n\nimport {\n  OBaseTableCellEditor\n} from '../o-base-table-cell-editor.class';\n\n@Component({\n  selector: 'o-table-cell-editor-email',\n  templateUrl: './o-table-cell-editor-email.component.html',\n  styleUrls: ['./o-table-cell-editor-email.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\n\nexport class OTableCellEditorEmailComponent extends OBaseTableCellEditor {\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n  <div class=\"o-table-cell-editor-email o-table-cell-editor\" [formGroup]=\"formGroup\"\n    [matTooltip]=\"tooltip\"\n    [matTooltipClass]=\"tooltipClass\"\n    [matTooltipPosition]=\"tooltipPosition\"\n    [matTooltipShowDelay]=\"tooltipShowDelay\"\n    [matTooltipHideDelay]=\"tooltipHideDelay\">\n    <mat-form-field cdkFocusInitial>\n      <input #input matInput type=\"email\" [email]=\"true\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\" [id]=\"cellEditorId\"\n        [required]=\"orequired\">\n      <mat-error *oMatError=\"hasError('required')\">\n        {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n      </mat-error>\n      <mat-error *oMatError=\"hasError('email')\">\n        {{ 'FORM_VALIDATION.EMAIL_FORMAT' | oTranslate }}\n      </mat-error>\n      <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n        {{ getErrorText(oError) }}\n      </mat-error>\n    </mat-form-field>\n  </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, TemplateRef, ViewChild } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\n\nimport { NumberInputConverter } from '../../../../../decorators/input-converter';\nimport { Util } from '../../../../../util/util';\nimport { OBaseTableCellEditor } from '../o-base-table-cell-editor.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_INTEGER = [\n  'min',\n  'max',\n  'step'\n];\n\n\n@Component({\n  selector: 'o-table-cell-editor-integer',\n  templateUrl: './o-table-cell-editor-integer.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_INTEGER\n})\n\nexport class OTableCellEditorIntegerComponent extends OBaseTableCellEditor {\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  @NumberInputConverter()\n  min: number;\n  @NumberInputConverter()\n  max: number;\n  @NumberInputConverter()\n  step: number = 1;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  getCellData() {\n    const cellData = super.getCellData();\n    const intValue = parseInt(cellData, 10);\n    return isNaN(intValue) ? undefined : intValue;\n  }\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    if (Util.isDefined(this.min)) {\n      validators.push(Validators.min(this.min));\n    }\n    if (Util.isDefined(this.max)) {\n      validators.push(Validators.max(this.max));\n    }\n    return validators;\n  }\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n  <div class=\"o-table-cell-editor-integer o-table-cell-editor\" [formGroup]=\"formGroup\"\n    [matTooltip]=\"tooltip\"\n    [matTooltipClass]=\"tooltipClass\"\n    [matTooltipPosition]=\"tooltipPosition\"\n    [matTooltipShowDelay]=\"tooltipShowDelay\"\n    [matTooltipHideDelay]=\"tooltipHideDelay\">\n    <mat-form-field cdkFocusInitial>\n      <input #input matInput type=\"number\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\"\n        [required]=\"orequired\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [id]=\"cellEditorId\">\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', 'min') }}\n      </mat-error>\n      <mat-error *oMatError=\"hasError('max')\">\n        {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'max') }}\n      </mat-error>\n      <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n        {{ getErrorText(oError) }}\n      </mat-error>\n    </mat-form-field>\n  </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, TemplateRef, ViewChild } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\n\nimport { NumberInputConverter } from '../../../../../decorators/input-converter';\nimport { Util } from '../../../../../util/util';\nimport { OTableCellEditorIntegerComponent } from '../integer/o-table-cell-editor-integer.component';\n\n@Component({\n  selector: 'o-table-cell-editor-real',\n  templateUrl: './o-table-cell-editor-real.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class OTableCellEditorRealComponent extends OTableCellEditorIntegerComponent {\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  @NumberInputConverter()\n  min: number;\n  @NumberInputConverter()\n  max: number;\n  @NumberInputConverter()\n  step: number = 0.01;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n  getCellData() {\n    const cellData = super.getCellData();\n    const floatValue = parseFloat(cellData?.toString());\n    return isNaN(floatValue) ? undefined : floatValue;\n  }\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n    if (Util.isDefined(this.min)) {\n      validators.push(Validators.min(this.min));\n    }\n    if (Util.isDefined(this.max)) {\n      validators.push(Validators.max(this.max));\n    }\n    return validators;\n  }\n\n\n\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n  <div class=\"o-table-cell-editor-real o-table-cell-editor\" [formGroup]=\"formGroup\"\n    [matTooltip]=\"tooltip\"\n    [matTooltipClass]=\"tooltipClass\"\n    [matTooltipPosition]=\"tooltipPosition\"\n    [matTooltipShowDelay]=\"tooltipShowDelay\"\n    [matTooltipHideDelay]=\"tooltipHideDelay\">\n    <mat-form-field cdkFocusInitial>\n\n      <input #input matInput type=\"number\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\"\n        [required]=\"orequired\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [id]=\"cellEditorId\">\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', 'min') }}\n      </mat-error>\n      <mat-error *oMatError=\"hasError('max')\">\n        {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'max') }}\n      </mat-error>\n      <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n        {{ getErrorText(oError) }}\n      </mat-error>\n    </mat-form-field>\n  </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\n\nimport {\n  OBaseTableCellEditor\n} from '../o-base-table-cell-editor.class';\n\n@Component({\n  selector: 'o-table-cell-editor-text',\n  templateUrl: './o-table-cell-editor-text.component.html',\n  styleUrls: ['./o-table-cell-editor-text.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\n\nexport class OTableCellEditorTextComponent extends OBaseTableCellEditor {\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n  }\n\n\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n  <div class=\"o-table-cell-editor-text o-table-cell-editor\" [formGroup]=\"formGroup\"\n    [matTooltip]=\"tooltip\"\n    [matTooltipClass]=\"tooltipClass\"\n    [matTooltipPosition]=\"tooltipPosition\"\n    [matTooltipShowDelay]=\"tooltipShowDelay\"\n    [matTooltipHideDelay]=\"tooltipHideDelay\">\n\n    <mat-form-field cdkFocusInitial>\n      <input #input matInput type=\"text\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\" [id]=\"cellEditorId\"\n        [required]=\"orequired\">\n      <mat-error *oMatError=\"hasError('required')\">\n        {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n      </mat-error>\n      <mat-error *oMatError=\"hasError('minlength')\">\n        {{ 'FORM_VALIDATION.MIN_LENGTH' | oTranslate }}: {{ getErrorValue('minlength', 'requiredLength') }}\n      </mat-error>\n      <mat-error *oMatError=\"hasError('maxlength')\">\n        {{ 'FORM_VALIDATION.MAX_LENGTH' | oTranslate }}: {{ getErrorValue('maxlength', 'requiredLength') }}\n      </mat-error>\n      <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n        {{ getErrorText(oError) }}\n      </mat-error>\n    </mat-form-field>\n  </div>\n</ng-template>\n","import {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostListener,\n  Injector,\n  OnInit,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { UntypedFormControl, ValidatorFn } from '@angular/forms';\nimport { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerInputEvent } from '@angular/material/datepicker';\nimport moment from 'moment';\nimport { NgxMaterialTimepickerComponent } from 'ngx-material-timepicker';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { MomentService } from '../../../../../services/moment.service';\nimport { FormValueOptions } from '../../../../../types/form-value-options.type';\nimport { Codes } from '../../../../../util/codes';\nimport { Util } from '../../../../../util/util';\nimport { OBaseTableCellEditor } from '../o-base-table-cell-editor.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_TIME = [\n  'oDateFormat: date-format',\n  'oDateLocale: date-locale',\n  'oDateStartView: date-start-view',\n  'oMinDate: date-min',\n  'oMaxDate: date-max',\n  'oDateTouchUi: date-touch-ui',\n  'oDateStartAt: date-start-at',\n  'oHourFormat: hour-format',\n  'oHourMin: hour-min',\n  'oHourMax: hour-max',\n  'oHourPlaceholder: hour-placeholder',\n  'oDatePlaceholder: date-placeholder'\n];\n\n@Component({\n  selector: 'o-table-cell-editor-time',\n  templateUrl: './o-table-cell-editor-time.component.html',\n  styleUrls: ['./o-table-cell-editor-time.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_TIME,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] }\n  ],\n})\n\nexport class OTableCellEditorTimeComponent extends OBaseTableCellEditor implements OnInit, AfterViewChecked {\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  @ViewChild('dateInput')\n  protected dateInput: ElementRef;\n\n  @ViewChild('hourInput')\n  protected hourInput: ElementRef;\n\n  @ViewChild('picker')\n  public picker: NgxMaterialTimepickerComponent;\n\n  oStartView: 'month' | 'year' = 'month';\n\n  @ViewChild(MatDatepickerInput)\n  public datepickerInput: MatDatepickerInput<Date>;\n\n  formControlHour: UntypedFormControl;\n  formControlDate: UntypedFormControl;\n\n  public oDateFormat: string = 'L';\n  public oHourMax: string;\n  public oHourMin: string;\n  @BooleanInputConverter()\n  public oDateTouchUi: boolean;\n  public oDateStartAt: string;\n\n  private _oDateLocale;\n  protected oHourPlaceholder: string;\n  protected oDatePlaceholder: string;\n  public oHourFormat: number = Codes.TWENTY_FOUR_HOUR_FORMAT;\n  protected onKeyboardInputDone = false;\n  protected oMinDate: string;\n  protected oMaxDate: string;\n  protected _minDateString: string;\n  protected _maxDateString: string;\n  protected datepicker: MatDatepicker<Date>;\n  private momentSrv: MomentService;\n\n  // only true when hour input is focused\n  public enabledCommitOnTabPress: boolean = false;\n  protected activeKeys: object = {};\n\n  @HostListener('document:keydown', ['$event'])\n  onDocumentKeydown(event: KeyboardEvent) {\n    this.handleKeydown(event);\n  }\n\n  constructor(\n    protected injector: Injector,\n    private adapter: DateAdapter<any>\n  ) {\n    super(injector);\n    this.momentSrv = this.injector.get(MomentService);\n  }\n\n  initialize(): void {\n    super.initialize();\n    this.createInternalFormControl();\n    if (!this._oDateLocale) {\n      this.oDateLocale = this.momentSrv.getLocale();\n    }\n\n    if (this.oMinDate) {\n      const date = new Date(this.oMinDate);\n      const momentD = moment(date);\n      if (momentD.isValid()) {\n        this.minDateString = momentD.format(this.oDateFormat);\n      }\n    }\n\n    if (this.oMaxDate) {\n      const date = new Date(this.oMaxDate);\n      const momentD = moment(date);\n      if (momentD.isValid()) {\n        this.maxDateString = momentD.format(this.oDateFormat);\n      }\n    }\n  }\n\n  createInternalFormControl() {\n    if (!this.formControlDate) {\n      const validators: ValidatorFn[] = this.resolveValidators();\n      const cfg = {\n        value: undefined,\n        disabled: !this.enabled\n      };\n      this.formControlDate = new UntypedFormControl(cfg, validators);\n      this.formGroup.addControl('dateInput', this.formControlDate);\n    }\n\n    if (!this.formControlHour) {\n      const validators: ValidatorFn[] = this.resolveValidators();\n      const cfg = {\n        value: undefined,\n        disabled: !this.enabled\n      };\n      this.formControlHour = new UntypedFormControl(cfg, validators);\n      this.formGroup.addControl('hourInput', this.formControlHour);\n    }\n  }\n\n  public ngAfterViewChecked(): void {\n    this.modifyPickerMethods();\n  }\n\n  setTime(event: string) {\n    this.picker.updateTime(this.formControlHour.value);\n  }\n\n  onDateChange(event: MatDatepickerInputEvent<any>) {\n    const isValid = event.value && event.value.isValid && event.value.isValid();\n    const val = isValid ? event.value.valueOf() : moment().startOf('day');\n\n    this.formControlDate.setValue(val, {\n      emitModelToViewChange: false,\n      emitEvent: false\n    });\n    this.updateComponentValue();\n  }\n\n  protected updateValeOnInputChange(blurEvent: any): void {\n    if (this.onKeyboardInputDone) {\n      let value: string = blurEvent.currentTarget.value;\n      // ngx-material-timepicker does not allow writing characters on input, so we add 'AM/PM' in order to make validation work properly\n      value = this.parseHour(value);\n      this.formControlHour.setValue(value);\n    }\n    this.onKeyboardInputDone = false;\n  }\n\n  /**\n   * Receives an hour input introduced by the user and returns the hour formated acording current format\n   * @param value\n   */\n  protected parseHour(value: string): string {\n    const strArray = value.split(':');\n    let hour: any = strArray[0];\n\n    if (Codes.TWELVE_FOUR_HOUR_FORMAT === this.oHourFormat) {\n      if (hour) {\n        hour = parseInt(hour, 10);\n        const period = hour <= 12 ? ' AM' : ' PM';\n        if (hour > 12) {\n          hour = hour - 12;\n        }\n        strArray[0] = hour;\n        value = strArray.join(':') + period;\n      }\n    }\n    return value;\n  }\n\n  public onHourChange(event) {\n    let value;\n    if (event instanceof Event) {\n      this.updateValeOnInputChange(event);\n    } else {\n      value = this.convertToFormatString(event);\n      /** emitModelToViewChange: false  because onChange event is trigger in ngModelChange */\n      this.formControlHour.setValue(value, {\n        emitEvent: false,\n        emitModelToViewChange: false\n      });\n    }\n    this.updateComponentValue();\n  }\n\n  public setTimestampValue(value: any, options?: FormValueOptions): void {\n    let parsedValue;\n    const momentV = Util.isDefined(value) ? moment(value) : value;\n    if (momentV && momentV.isValid()) {\n      parsedValue = momentV.utcOffset(0).format(this.formatString);\n    }\n    this.formControlHour.setValue(parsedValue, options);\n  }\n\n  protected convertToFormatString(value): string {\n    if (value === '00:00' || !Util.isDefined(value)) {\n      return value;\n    }\n    const formatStr = this.oHourFormat === Codes.TWENTY_FOUR_HOUR_FORMAT ? 'HH:mm' : 'hh:mm a';\n    let result;\n    if (typeof value === 'number') {\n      result = moment(value).format(formatStr);\n    } else {\n      result = value ? moment(value, 'h:mm A').format(formatStr) : value;\n    }\n    return result;\n  }\n\n  openDatepicker(d: MatDatepicker<Date>) {\n    this.datepicker = d;\n    d.open();\n  }\n\n  getPlaceholderHour() {\n    let placeholder = '';\n    if (this.oHourPlaceholder) {\n      placeholder = this.translateService.get(this.oHourPlaceholder);\n    } else {\n      placeholder = super.getPlaceholder();\n    }\n    return placeholder;\n  }\n\n  getPlaceholderDate() {\n    let placeholder = '';\n    if (this.oDatePlaceholder) {\n      placeholder = this.translateService.get(this.oDatePlaceholder);\n    } else {\n      placeholder = super.getPlaceholder();\n    }\n    return placeholder;\n  }\n\n  public open(e?: Event): void {\n    if (this.picker) {\n      this.picker.open();\n    }\n  }\n\n  protected handleKeydown(e: KeyboardEvent) {\n    this.activeKeys[(e.key || e.keyCode)] = true;\n  }\n\n  protected handleKeyup(e: KeyboardEvent) {\n    this.activeKeys[(e.key || e.keyCode)] = false;\n    const oColumn = this.table.getOColumn(this.tableColumn.attr);\n    if (!oColumn) {\n      return;\n    }\n\n    if (this.checkKey(e, \"Tab\", 9) && (this.activeKeys[16] || this.activeKeys[\"Shift\"] || !this.enabledCommitOnTabPress)) {\n      // tab + shift or tab pressed with focus in the date component\n      return;\n    }\n    if (!oColumn.editing && this.datepicker && this.datepicker.opened) {\n      this.datepicker.close();\n    } else {\n      super.handleKeyup(e);\n    }\n  }\n\n  protected updateComponentValue(): void {\n\n    let timeValue: number;\n    const values = this.formGroup.getRawValue();\n    const mDate = (values['dateInput'] ? moment(values['dateInput']) : moment()).startOf('day');\n\n    const mHour = moment(values['hourInput'], this.formatString);\n    timeValue = mDate.clone()\n      .set('hour', mHour.get('hour'))\n      .set('minute', mHour.get('minutes'))\n      .valueOf();\n\n    if (this.formControl) {\n      this.formControl.setValue(timeValue);\n      this.formControl.markAsDirty();\n    }\n  }\n\n  protected modifyPickerMethods(): void {\n    if (this.picker && this.picker.inputElement) {\n      this.picker.inputElement.addEventListener('change', () => {\n        this.onKeyboardInputDone = true;\n      });\n    }\n    // if (this.picker) {\n    //   const ngxTimepicker = this.picker.timepickerInput;\n    //   if (ngxTimepicker && ngxTimepicker.onInput) {\n    //     ngxTimepicker.onInput = (value: string) => this.onKeyboardInputDone = true;\n    //   }\n    // }\n  }\n\n  hasErrorDate(error: string): boolean {\n    return this.formControlDate && this.formControlDate.touched && this.hasErrorExclusive(error);\n  }\n\n  hasErrorExclusive(error: string): boolean {\n    let hasError = false;\n    const errorsOrder = ['matDatepickerMax', 'matDatepickerMin', 'matDatepickerFilter', 'matDatepickerParse', 'required'];\n    const errors = this.formControlDate.errors;\n    if (Util.isDefined(errors)) {\n      if (Object.keys(errors).length === 1) {\n        return errors.hasOwnProperty(error);\n      } else {\n        for (let i = 0, len = errorsOrder.length; i < len; i++) {\n          hasError = errors.hasOwnProperty(errorsOrder[i]);\n          if (hasError) {\n            hasError = (errorsOrder[i] === error);\n            break;\n          }\n        }\n      }\n    }\n    return hasError;\n  }\n  hasErrorHour(error: string): boolean {\n    return this.formControlHour && this.formControlHour.touched;\n  }\n\n  getCellDataDate(): any {\n    const value = super.getCellData();\n    if (Util.isDefined(value)) {\n      const m = moment(value);\n      let result = value;\n      if (Util.isDefined(m)) {\n        result = m.toDate();\n      }\n      return result;\n    }\n    return value;\n  }\n\n  getCellDataHour(): any {\n    const value = super.getCellData();\n    if (Util.isDefined(value)) {\n      const m = moment(value);\n      let result = value;\n      if (Util.isDefined(m)) {\n        result = m.format(Codes.formatString(this.oHourFormat));\n      }\n      return result;\n    }\n    return value;\n  }\n\n  startEdition(data: any) {\n    super.startEdition(data);\n    const cellDataDate = this.getCellDataDate();\n    this.formControlDate.setValue(cellDataDate);\n\n    const cellDataHour = this.getCellDataHour();\n    this.formControlHour.setValue(cellDataHour);\n    this.formGroup.markAsTouched();\n  }\n\n  get formatString(): string {\n    return Codes.formatString(this.oHourFormat);\n  }\n\n  get minDateString(): string {\n    return this._minDateString;\n  }\n\n  set minDateString(val: string) {\n    this._minDateString = val;\n  }\n\n  get maxDateString(): string {\n    return this._maxDateString;\n  }\n\n  set maxDateString(val: string) {\n    this._maxDateString = val;\n  }\n\n  public set oDateLocale(value: string) {\n    this._oDateLocale = value;\n    if (Util.isDefined(this._oDateLocale)) {\n      this.adapter.setLocale(value);\n    }\n  }\n\n  get minDate(): Date {\n    return new Date(this.oMinDate);\n  }\n\n  get maxDate(): Date {\n    return new Date(this.oMaxDate);\n  }\n\n  onDatepickerClosed() {\n    this.dateInput.nativeElement.focus();\n  }\n\n  onTimepickerClosed() {\n    this.hourInput.nativeElement.focus();\n  }\n\n  commitEdition() {\n    if (!this.formGroup.invalid) {\n      super.commitEdition();\n    }\n  }\n\n  onKeyDown(e: KeyboardEvent): void {\n    if (!Codes.isHourInputAllowed(e)) {\n      e.preventDefault();\n    }\n  }\n\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n  <div [formGroup]=\"formGroup\" class=\"o-table-cell-editor-time o-table-cell-editor\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\"\n    fxLayoutGap=\"8px\"\n    [matTooltip]=\"tooltip\"\n    [matTooltipClass]=\"tooltipClass\"\n    [matTooltipPosition]=\"tooltipPosition\"\n    [matTooltipShowDelay]=\"tooltipShowDelay\"\n    [matTooltipHideDelay]=\"tooltipHideDelay\">\n    <mat-form-field>\n\n      <input #dateInput matInput [placeholder]=\"getPlaceholderDate()\" [formControl]=\"formControlDate\"\n        [required]=\"orequired\" [matDatepicker]=\"d\" (dateChange)=\"onDateChange($event)\" [min]=\"minDate\" [max]=\"maxDate\"\n        (focus)=\"enabledCommitOnTabPress = false\">\n\n      <mat-datepicker #d [startView]=\"oStartView\" [startAt]=\"oDateStartAt\" [touchUi]=\"oDateTouchUi\"\n        (closed)=\"onDatepickerClosed()\">\n      </mat-datepicker>\n\n      <span class=\"icon-btn\" (click)=\"openDatepicker(d)\" matSuffix>\n        <mat-icon svgIcon=\"ontimize:today\"></mat-icon>\n      </span>\n\n      <mat-error *oMatError=\"hasErrorDate('required') || hasErrorHour('required')\">\n        {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n      </mat-error>\n      <mat-error *oMatError=\"hasErrorDate('matDatepickerParse')\">\n        {{ 'FORM_VALIDATION.DATE_PARSE' | oTranslate }} {{ oHourFormat }}\n      </mat-error>\n      <mat-error *oMatError=\"hasErrorDate('matDatepickerFilter')\">\n        {{ 'FORM_VALIDATION.DATE_FILTER' | oTranslate }}\n      </mat-error>\n      <mat-error *oMatError=\"hasErrorDate('matDatepickerMin')\">\n        {{ 'FORM_VALIDATION.DATE_MIN' | oTranslate }} {{ minDateString }}\n      </mat-error>\n      <mat-error *oMatError=\"hasErrorDate('matDatepickerMax')\">\n        {{ 'FORM_VALIDATION.DATE_MAX' | oTranslate }} {{ maxDateString }}\n      </mat-error>\n      <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n        {{ getErrorText(oError) }}\n      </mat-error>\n\n    </mat-form-field>\n\n    <span class=\"separator\">&ndash;</span>\n\n    <mat-form-field>\n\n      <input #hourInput matInput [ngxTimepicker]=\"picker\" [placeholder]=\"getPlaceholderHour()\"\n        [formControl]=\"formControlHour\" [required]=\"orequired\" (change)=\"onHourChange($event)\" [min]=\"oHourMin\"\n        [max]=\"oHourMax\" (keydown)=\"onKeyDown($event)\" [disableClick]=\"true\" [format]=\"oHourFormat\"\n        (blur)=\"enabledCommitOnTabPress = true\">\n\n      <button type=\"button\" matSuffix mat-icon-button (click)=\"open($event)\">\n        <mat-icon ngxMaterialTimepickerToggleIcon svgIcon=\"ontimize:clock\"></mat-icon>\n      </button>\n\n      <mat-error *oMatError=\"hasErrorHour('invalidFormatHour')\">\n        {{ 'FORM_VALIDATION.HOUR_FORMAT' | oTranslate }} {{ formatString }}\n      </mat-error>\n      <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n        {{ oError.text | oTranslate }}\n      </mat-error>\n\n    </mat-form-field>\n\n    <ngx-material-timepicker #picker (timeSet)=\"onHourChange($event)\" [confirmBtnTmpl]=\"confirmBtn\"\n      [cancelBtnTmpl]=\"cancelBtn\" (closed)=\"onTimepickerClosed()\"></ngx-material-timepicker>\n    <ng-template #confirmBtn>\n      <button mat-stroked-button type=\"button\"><span>{{'OK' | oTranslate}}</span></button>\n    </ng-template>\n    <ng-template #cancelBtn>\n      <button mat-stroked-button type=\"button\"><span>{{'CANCEL' | oTranslate}}</span></button>\n    </ng-template>\n  </div>\n\n</ng-template>","import {\n  OTableCellEditorBooleanComponent\n} from './boolean/o-table-cell-editor-boolean.component';\nimport {\n  DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_DATE,\n  OTableCellEditorDateComponent\n} from './date/o-table-cell-editor-date.component';\nimport {\n  OTableCellEditorEmailComponent\n} from './email/o-table-cell-editor-email.component';\nimport { DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_INTEGER, OTableCellEditorIntegerComponent } from './integer/o-table-cell-editor-integer.component';\nimport { DEFAULT_INPUTS_O_TABLE_CELL_EDITOR, DEFAULT_OUTPUTS_O_TABLE_CELL_EDITOR } from './o-base-table-cell-editor.class';\nimport {\n  OTableCellEditorRealComponent\n} from './real/o-table-cell-editor-real.component';\nimport {\n  OTableCellEditorTextComponent\n} from './text/o-table-cell-editor-text.component';\nimport {\n  DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_TIME,\n  OTableCellEditorTimeComponent\n} from './time/o-table-cell-editor-time.component';\n\nexport const O_TABLE_CELL_EDITORS = [\n  OTableCellEditorBooleanComponent,\n  OTableCellEditorDateComponent,\n  OTableCellEditorIntegerComponent,\n  OTableCellEditorRealComponent,\n  OTableCellEditorTextComponent,\n  OTableCellEditorEmailComponent,\n  OTableCellEditorTimeComponent\n];\n\nexport const O_TABLE_CELL_EDITORS_INPUTS = [\n  ...DEFAULT_INPUTS_O_TABLE_CELL_EDITOR,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_INTEGER,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_DATE,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_TIME\n];\n\nexport const O_TABLE_CELL_EDITORS_OUTPUTS = [\n  ...DEFAULT_OUTPUTS_O_TABLE_CELL_EDITOR\n];\n\nexport const editorsMapping = {\n  boolean: OTableCellEditorBooleanComponent,\n  date: OTableCellEditorDateComponent,\n  integer: OTableCellEditorIntegerComponent,\n  real: OTableCellEditorRealComponent,\n  percentage: OTableCellEditorRealComponent,\n  currency: OTableCellEditorRealComponent,\n  text: OTableCellEditorTextComponent,\n  email: OTableCellEditorEmailComponent,\n  time: OTableCellEditorTimeComponent\n};\n","import { AfterContentInit, Directive, Injector, OnInit, PipeTransform, TemplateRef } from '@angular/core';\n\nimport { OTableColumn } from '../../../../interfaces/o-table-column.interface';\nimport { Expression } from '../../../../types/expression.type';\nimport { FilterExpressionUtils } from '../../../../util/filter-expression.utils';\nimport { Util } from '../../../../util/util';\nimport { OTableComponent } from '../../o-table.component';\nimport { OTableColumnComponent } from '../o-table-column.component';\n\nexport const DEFAULT_INPUTS_O_BASE_TABLE_CELL_RENDERER = [\n  'filterSource: filter-source',\n  'filterFunction: filter-function'\n];\n\n@Directive({\n  inputs: DEFAULT_INPUTS_O_BASE_TABLE_CELL_RENDERER\n})\n\nexport class OBaseTableCellRenderer implements OnInit, AfterContentInit {\n\n  public templateref: TemplateRef<any>;\n  public tableColumn: OTableColumn;\n  public _filterSource: 'render' | 'data' | 'both' = 'render';\n  public filterFunction: (cellValue: any, rowValue: any, quickFilter?: string) => boolean;\n\n  protected type: string;\n  protected pipeArguments: any;\n  protected componentPipe: PipeTransform;\n\n  constructor(protected injector: Injector) {\n    this.tableColumn = this.injector.get(OTableColumnComponent);\n  }\n\n  public ngOnInit() {\n    this.initialize();\n  }\n\n  public initialize(): void {\n\n  }\n\n  public ngAfterContentInit(): void {\n    if (typeof this.filterFunction !== 'function') {\n      this.filterFunction = undefined;\n    }\n    this.registerRenderer();\n  }\n\n  get table(): OTableComponent {\n    return this.tableColumn.table;\n  }\n\n  get column(): string {\n    return this.tableColumn.attr;\n  }\n\n  /**\n   * Registers renderer\n   */\n  public registerRenderer(): void {\n    this.tableColumn.registerRenderer(this);\n    if (!Util.isDefined(this.type) && Util.isDefined(this.tableColumn.type)) {\n      this.type = this.tableColumn.type;\n    }\n  }\n\n  /**\n   * Returns the displayed table cell value\n   * @param cellvalue the internal table cell value\n   * @param rowvalue the table row value\n   */\n  public getCellData(cellvalue: any, rowvalue?: any): string {\n    let parsedValue: string;\n    if (this.componentPipe && this.pipeArguments !== undefined && cellvalue !== undefined) {\n      parsedValue = this.componentPipe.transform(cellvalue, this.pipeArguments);\n    } else {\n      parsedValue = cellvalue;\n    }\n    return parsedValue;\n  }\n\n  public getTooltip(cellValue: any, rowValue: any): string {\n    return this.getCellData(cellValue, rowValue);\n  }\n\n  set filterSource(val: string) {\n    const lowerVal = (val || '').toLowerCase();\n    this._filterSource = (lowerVal === 'render' || lowerVal === 'data' || lowerVal === 'both') ? lowerVal : 'render';\n  }\n\n  get filterSource(): string {\n    return this._filterSource;\n  }\n\n  /**\n   * Return the values to filter\n   * @param cellValue\n   * @param [rowValue]\n   * @returns filter\n   */\n  getFilter(cellValue: any, rowValue?: any): any[] {\n    let result;\n    switch (this.filterSource) {\n      case 'render':\n        result = [this.getCellData(cellValue, rowValue)];\n        break;\n      case 'data':\n        result = [cellValue];\n        break;\n      case 'both':\n        result = [cellValue, this.getCellData(cellValue, rowValue)];\n        break;\n    }\n    return result;\n  }\n\n  public getFilterExpression(quickFilter: string): Expression {\n    return FilterExpressionUtils.buildExpressionLike(this.tableColumn.attr, quickFilter);\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { Codes } from '../../../../../util/codes';\nimport { Util } from '../../../../../util/util';\nimport { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_ACTION = [\n  'icon',\n  'svgIcon:svg-icon',\n  'action',\n  'text',\n  'iconPosition: icon-position'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_ACTION = [\n  'onClick'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-action',\n  templateUrl: './o-table-cell-renderer-action.component.html',\n  styleUrls: ['./o-table-cell-renderer-action.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_ACTION,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_ACTION\n})\nexport class OTableCellRendererActionComponent extends OBaseTableCellRenderer implements OnInit {\n\n  onClick: EventEmitter<object> = new EventEmitter<object>();\n  action: string;\n  _icon: string;\n  text: string;\n  iconPosition: string;\n  public svgIcon: string;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.tableColumn.type = 'action';\n    this.tableColumn.orderable = false;\n    this.tableColumn.searchable = false;\n    this.tableColumn.groupable = false;\n  }\n\n  initialize() {\n    super.initialize();\n    if (this.table) {\n      const oCol = this.table.getOColumn(this.tableColumn.attr);\n      oCol.title = Util.isDefined(this.tableColumn.title) ? this.tableColumn.title : undefined;\n    }\n    this.iconPosition = Util.parseIconPosition(this.iconPosition);\n  }\n\n  getCellData(value: any) {\n    return value;\n  }\n\n  innerOnClick(event, rowData) {\n    if (event) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n    if (this.table.readOnly) {\n      if (this.table.showNotificationOfReadOnly) {\n        this.table.getSnackService().open('MESSAGES.OPERATION_NOT_ALLOWED_READONLY');\n      }\n      return;\n    }\n    if (Util.isDefined(this.action)) {\n      switch (this.action.toLowerCase()) {\n        case 'detail':\n          this.table.viewDetail(rowData);\n          break;\n        case 'edit':\n          this.table.editDetail(rowData);\n          break;\n        default:\n          break;\n      }\n    } else {\n      this.onClick.emit(rowData);\n    }\n  }\n\n  get icon(): string {\n    return this._icon;\n  }\n\n  set icon(arg: string) {\n    this._icon = arg;\n  }\n\n  isIconPositionLeft() {\n    return Util.isDefined(this.icon) && this.iconPosition === Codes.ICON_POSITION_LEFT;\n  }\n\n  isIconPositionRight() {\n    return Util.isDefined(this.icon) && this.iconPosition === Codes.ICON_POSITION_RIGHT;\n  }\n\n  isSvgIconPositionRight() {\n    return Util.isDefined(this.svgIcon) && this.iconPosition === Codes.ICON_POSITION_RIGHT;\n  }\n\n  isSvgIconPositionLeft() {\n    return Util.isDefined(this.svgIcon) && this.iconPosition === Codes.ICON_POSITION_LEFT;\n  }\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n  <span class=\"o-action-cell-renderer\" (click)=\"innerOnClick($event, rowvalue)\">\n    <mat-icon *ngIf=\"isIconPositionLeft()\">{{ icon }}</mat-icon>\n    <mat-icon *ngIf=\"isSvgIconPositionLeft()\" [svgIcon]=\"svgIcon\"></mat-icon>\n    <span *ngIf=\"text !== undefined\">{{ text | oTranslate }}</span>\n    <mat-icon *ngIf=\"isIconPositionRight()\">{{ icon }}</mat-icon>\n    <mat-icon *ngIf=\"isSvgIconPositionRight()\" [svgIcon]=\"svgIcon\"></mat-icon>\n  </span>\n</ng-template>","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { OTranslateService } from '../../../../../services/translate/o-translate.service';\nimport { Util } from '../../../../../util/util';\nimport { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_BOOLEAN = [\n  // true-value [string]: true value. Default: no value.\n  'trueValue: true-value',\n  // false-value [string]: false value. Default: no value.\n  'falseValue: false-value',\n  // false-value [number|boolean|string]: cellData value type. Default: boolean\n  'booleanType: boolean-type',\n\n  'renderTrueValue: render-true-value',\n  'renderFalseValue: render-false-value',\n  // [string|number|icon|image]\n  'renderType: render-type'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-boolean',\n  templateUrl: './o-table-cell-renderer-boolean.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_BOOLEAN\n})\nexport class OTableCellRendererBooleanComponent extends OBaseTableCellRenderer implements OnInit {\n\n  trueValue: any;\n  falseValue: any;\n  protected _renderTrueValue: any;\n  protected _renderFalseValue: any;\n\n  protected _renderType: string = 'string';\n  protected _booleanType: string = 'boolean';\n  protected translateService: OTranslateService;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true })\n  templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.tableColumn.type = 'boolean';\n    this.translateService = this.injector.get(OTranslateService);\n  }\n\n  initialize() {\n    super.initialize();\n    this.parseInputs();\n  }\n\n  protected parseInputs() {\n    switch (this.booleanType) {\n      case 'string':\n        this.parseStringInputs();\n        break;\n      case 'number':\n        this.parseNumberInputs();\n        break;\n      default:\n        this.trueValue = true;\n        this.falseValue = false;\n        break;\n    }\n  }\n\n  protected parseStringInputs() {\n    if ((this.trueValue || '').length === 0) {\n      this.trueValue = undefined;\n    }\n    if ((this.falseValue || '').length === 0) {\n      this.falseValue = undefined;\n    }\n  }\n\n  protected parseNumberInputs() {\n    this.trueValue = parseInt(this.trueValue, 10);\n    if (isNaN(this.trueValue)) {\n      this.trueValue = 1;\n    }\n    this.falseValue = parseInt(this.falseValue, 10);\n    if (isNaN(this.falseValue)) {\n      this.falseValue = 0;\n    }\n  }\n\n  hasCellDataTrueValue(cellData: any): boolean {\n    let result: boolean;\n    if (Util.isDefined(cellData)) {\n      result = (cellData === this.trueValue);\n      if (this.booleanType === 'string' && !Util.isDefined(this.trueValue)) {\n        result = Util.parseBoolean(cellData, false);\n      }\n    }\n    return result;\n  }\n\n  getCellData(cellvalue: any, rowvalue?: any) {\n    let result = cellvalue;\n    const cellIsTrue = this.hasCellDataTrueValue(cellvalue);\n    const value = cellIsTrue ? this.trueValue : this.falseValue;\n    switch (this.renderType) {\n      case 'string':\n        result = this.translateService.get(value);\n        break;\n      case 'number':\n        result = value;\n        break;\n      default:\n        break;\n    }\n    return result;\n  }\n\n  get booleanType(): string {\n    return this._booleanType;\n  }\n\n  set booleanType(arg: string) {\n    arg = (arg || '').toLowerCase();\n    if (['number', 'boolean', 'string'].indexOf(arg) === -1) {\n      arg = 'boolean';\n    }\n    this._booleanType = arg;\n  }\n\n  get renderType(): string {\n    return this._renderType;\n  }\n\n  set renderType(arg: string) {\n    arg = (arg || '').toLowerCase();\n    if (['string', 'number', 'icon', 'image'].indexOf(arg) === -1) {\n      arg = 'string';\n    }\n    this._renderType = arg;\n  }\n\n  get renderTrueValue(): string {\n    return this._renderTrueValue || this.trueValue;\n  }\n\n  set renderTrueValue(arg: string) {\n    this._renderTrueValue = arg;\n  }\n\n  get renderFalseValue(): string {\n    return this._renderFalseValue || this.falseValue;\n  }\n\n  set renderFalseValue(arg: string) {\n    this._renderFalseValue = arg;\n  }\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\">\n  <ng-container *ngIf=\"hasCellDataTrueValue(cellvalue)\">\n    <ng-container [ngSwitch]=\"renderType\">\n      <ng-container *ngSwitchCase=\"'number'\">{{ renderTrueValue }}</ng-container>\n      <ng-container *ngSwitchCase=\"'icon'\">\n        <mat-icon class=\"material-icons\"> {{ renderTrueValue }}</mat-icon>\n      </ng-container>\n      <ng-container *ngSwitchCase=\"'image'\">\n        <img [src]=\"renderTrueValue\" alt=\"image for true value\"/>\n      </ng-container>\n      <span *ngSwitchDefault>{{ renderTrueValue | oTranslate }}</span>\n    </ng-container>\n  </ng-container>\n  <ng-container *ngIf=\"!hasCellDataTrueValue(cellvalue)\">\n    <ng-container [ngSwitch]=\"renderType\">\n      <ng-container *ngSwitchCase=\"'number'\">{{ renderFalseValue }}</ng-container>\n      <ng-container *ngSwitchCase=\"'icon'\">\n        <mat-icon class=\"material-icons\"> {{ renderFalseValue }}</mat-icon>\n      </ng-container>\n      <ng-container *ngSwitchCase=\"'image'\">\n        <img [src]=\"renderFalseValue\" alt=\"image for false value\" />\n      </ng-container>\n      <ng-container *ngSwitchDefault>{{ renderFalseValue | oTranslate}}</ng-container>\n    </ng-container>\n  </ng-container>\n</ng-template>","import { AfterContentInit, ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { IIntegerPipeArgument, OIntegerPipe } from '../../../../../pipes/o-integer.pipe';\nimport { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_INTEGER = [\n  // grouping [no|yes]: grouping thousands. Default: yes.\n  'grouping',\n  // thousand-separator [string]: thousands separator when grouping. Default: comma (,).\n  'thousandSeparator: thousand-separator'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-integer',\n  templateUrl: './o-table-cell-renderer-integer.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_INTEGER\n})\nexport class OTableCellRendererIntegerComponent extends OBaseTableCellRenderer implements AfterContentInit, OnInit {\n\n  @BooleanInputConverter()\n  protected grouping: boolean = true;\n  protected thousandSeparator: string = ',';\n  protected componentPipe: OIntegerPipe;\n  protected pipeArguments: IIntegerPipeArgument;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.tableColumn.type = 'integer';\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OIntegerPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.pipeArguments = {\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator\n    };\n  }\n\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\">\n    {{ getCellData(cellvalue)}}\n</ng-template>","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { NumberInputConverter } from '../../../../../decorators/input-converter';\nimport { IRealPipeArgument, ORealPipe } from '../../../../../pipes/o-real.pipe';\nimport { NumberService } from '../../../../../services/number.service';\nimport { OTableCellRendererIntegerComponent } from '../integer/o-table-cell-renderer-integer.component';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_REAL = [\n  // decimal-separator [string]: decimal separator. Default: dot (.).\n  'decimalSeparator: decimal-separator',\n  'minDecimalDigits: min-decimal-digits',\n  'maxDecimalDigits: max-decimal-digits'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-real',\n  templateUrl: './o-table-cell-renderer-real.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_REAL\n})\nexport class OTableCellRendererRealComponent extends OTableCellRendererIntegerComponent implements OnInit {\n\n  @NumberInputConverter()\n  minDecimalDigits: number = 2;\n  @NumberInputConverter()\n  maxDecimalDigits: number = 2;\n\n  protected decimalSeparator: string = '.';\n  protected numberService: NumberService;\n\n  protected componentPipe: ORealPipe;\n  protected pipeArguments: IRealPipeArgument;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.tableColumn.type = 'real';\n    this.numberService = this.injector.get(NumberService);\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new ORealPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.pipeArguments = {\n      minDecimalDigits: this.minDecimalDigits,\n      maxDecimalDigits: this.maxDecimalDigits,\n      decimalSeparator: this.decimalSeparator,\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator\n    };\n  }\n\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\">\n        {{ getCellData(cellvalue)}}\n</ng-template>","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { ICurrencyPipeArgument, OCurrencyPipe } from '../../../../../pipes/o-currency.pipe';\nimport { CurrencyService } from '../../../../../services/currency.service';\nimport { OTableCellRendererRealComponent } from '../real/o-table-cell-renderer-real.component';\nimport { NumberInputConverter } from '../../../../../decorators/input-converter';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_CURRENCY = [\n  // currency-symbol [string]: currency symbol. Default: dollar ($).\n  'currencySymbol: currency-symbol',\n\n  // currency-symbol-position [left|right]: position of the currency symbol. Default: left.\n  'currencySymbolPosition: currency-symbol-position'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-currency',\n  templateUrl: './o-table-cell-renderer-currency.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_CURRENCY\n})\nexport class OTableCellRendererCurrencyComponent extends OTableCellRendererRealComponent implements OnInit {\n\n  @NumberInputConverter()\n  minDecimalDigits: number = 2;\n  @NumberInputConverter()\n  maxDecimalDigits: number = 2;\n\n  protected currencySymbol: string;\n  protected currencySymbolPosition: string;\n  protected decimalSeparator: string = '.';\n\n  protected grouping: boolean = true;\n  protected thousandSeparator: string = ',';\n\n  protected currencyService: CurrencyService;\n\n  protected componentPipe: OCurrencyPipe;\n  protected pipeArguments: ICurrencyPipeArgument;\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.tableColumn.type = 'currency';\n    this.currencyService = this.injector.get(CurrencyService);\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OCurrencyPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    if (typeof this.currencySymbol === 'undefined') {\n      this.currencySymbol = this.currencyService.symbol;\n    }\n    if (typeof this.currencySymbolPosition === 'undefined') {\n      this.currencySymbolPosition = this.currencyService.symbolPosition;\n    }\n\n    this.pipeArguments = {\n      currencySimbol: this.currencySymbol,\n      currencySymbolPosition: this.currencySymbolPosition,\n      minDecimalDigits: this.minDecimalDigits,\n      maxDecimalDigits: this.maxDecimalDigits,\n      decimalSeparator: this.decimalSeparator,\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator\n    };\n\n  }\n\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\">\n  {{getCellData(cellvalue)}}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { IMomentPipeArgument, OMomentPipe } from '../../../../../pipes/o-moment.pipe';\nimport { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_DATE = [\n  // format [string]: date format. See MomentJS (http://momentjs.com/).\n  'format'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-date',\n  templateUrl: './o-table-cell-renderer-date.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_DATE\n})\nexport class OTableCellRendererDateComponent extends OBaseTableCellRenderer implements OnInit {\n\n  protected componentPipe: OMomentPipe;\n  protected pipeArguments: IMomentPipeArgument;\n\n  protected format: string;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.tableColumn.type = 'date';\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OMomentPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    // Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n    this.pipeArguments = {\n      format: this.format\n    };\n  }\n  getFormat(): string {\n    return this.format;\n  }\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\">\n   {{getCellData(cellvalue)}}\n</ng-template>","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { Util } from '../../../../../util/util';\nimport type { OColumn } from '../../o-column.class';\nimport { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_IMAGE = [\n  // image-type [base64|url]: image type (extern url or base64). Default: no value.\n  'imageType: image-type',\n  // empty-image [string]: url of the image to be shown if the column has not any value. Default: no value.\n  'emptyImage: empty-image',\n  // avatar [no|yes]: view image as avatar (circle), only at presentation level. Default: no.\n  'avatar'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_IMAGE = [\n  'onClick'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-image',\n  templateUrl: './o-table-cell-renderer-image.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_IMAGE\n})\nexport class OTableCellRendererImageComponent extends OBaseTableCellRenderer implements OnInit {\n\n  public imageType: string;\n  public emptyImage: string;\n  protected _source: string;\n  avatar: string;\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.tableColumn.type = 'image';\n    this.tableColumn.orderable = false;\n    this.tableColumn.searchable = false;\n    this.tableColumn.groupable = false;\n  }\n\n  initialize() {\n    super.initialize();\n    if (this.table) {\n      const oCol: OColumn = this.table.getOColumn(this.tableColumn.attr);\n      oCol.title = Util.isDefined(this.tableColumn.title) ? this.tableColumn.title : undefined;\n      oCol.definition.contentAlign = oCol.definition.contentAlign ? oCol.definition.contentAlign : 'center';\n    }\n  }\n\n  getSource(cellData: any) {\n    this._source = '';\n    switch (this.imageType) {\n      case 'base64':\n        this._source = cellData ? ('data:image/png;base64,' + ((typeof (cellData.bytes) !== 'undefined') ? cellData.bytes : cellData)) : this.emptyImage;\n        break;\n      case 'url':\n        this._source = cellData ? cellData : this.emptyImage;\n        break;\n      default:\n        this._source = this.emptyImage;\n        break;\n    }\n    return this._source;\n  }\n\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\">\n  <div [ngClass]=\"{'image-avatar':avatar,'image-plain':!avatar} \">\n    <img [src]=\"getSource(cellvalue)\" alt=\"renderer cell image\">\n  </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { IPercentPipeArgument, OPercentageValueBaseType, OPercentPipe } from '../../../../../pipes/o-percentage.pipe';\nimport { NumberService } from '../../../../../services/number.service';\nimport {\n  OTableCellRendererRealComponent\n} from '../real/o-table-cell-renderer-real.component';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_PERCENTAGE = [\n  'valueBase: value-base'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-percentage',\n  templateUrl: './o-table-cell-renderer-percentage.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_PERCENTAGE\n})\nexport class OTableCellRendererPercentageComponent extends OTableCellRendererRealComponent implements OnInit {\n\n  decimalSeparator: string = '.';\n  minDecimalDigits = 0;\n  maxDecimalDigits = 0;\n  valueBase: OPercentageValueBaseType = 1;\n\n  protected numberService: NumberService;\n\n  protected componentPipe: OPercentPipe;\n  protected pipeArguments: IPercentPipeArgument;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.tableColumn.type = 'percentage';\n    this.numberService = this.injector.get(NumberService);\n\n    this.setComponentPipe();\n  }\n\n  setComponentPipe() {\n    this.componentPipe = new OPercentPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.pipeArguments = {\n      minDecimalDigits: this.minDecimalDigits,\n      maxDecimalDigits: this.maxDecimalDigits,\n      decimalSeparator: this.decimalSeparator,\n      grouping: this.grouping,\n      thousandSeparator: this.thousandSeparator,\n      valueBase: this.valueBase\n    };\n  }\n\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\">\n        {{ getCellData(cellvalue)}}\n</ng-template>","import { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, Injector, OnDestroy, OnInit, TemplateRef, Type, ViewChild } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../../../decorators/input-converter';\nimport { ServiceResponse } from '../../../../../interfaces/service-response.interface';\nimport { ITranslatePipeArgument, OTranslatePipe } from '../../../../../pipes/o-translate.pipe';\nimport { DialogService } from '../../../../../services/dialog.service';\nimport { OntimizeServiceProvider } from '../../../../../services/factories';\nimport { OntimizeService } from '../../../../../services/ontimize/ontimize.service';\nimport { OConfigureServiceArgs } from '../../../../../types/configure-service-args.type';\nimport { Expression } from '../../../../../types/expression.type';\nimport { Codes } from '../../../../../util/codes';\nimport { FilterExpressionUtils } from '../../../../../util/filter-expression.utils';\nimport { ServiceUtils } from '../../../../../util/service.utils';\nimport { SQLTypes } from '../../../../../util/sqltypes';\nimport { Util } from '../../../../../util/util';\nimport type { OColumn } from '../../o-column.class';\nimport { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_SERVICE = [\n  'entity',\n  'service',\n  'columns',\n  'translate',\n  'valueColumn: value-column',\n  'valueColumnType: value-column-type',\n  'parentKeys: parent-keys',\n  'queryMethod: query-method',\n  'serviceType : service-type',\n  'translateArgsFn: translate-params'\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_SERVICE = [\n  'onDataLoaded'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-service',\n  templateUrl: './o-table-cell-renderer-service.component.html',\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_SERVICE,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_SERVICE,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    // Service renderer must have its own service instance in order to avoid overriding table service configuration\n    OntimizeServiceProvider\n  ]\n})\nexport class OTableCellRendererServiceComponent extends OBaseTableCellRenderer implements OnInit, AfterViewInit, OnDestroy {\n\n  public static DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_SERVICE = DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_SERVICE;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  public rowData: any;\n  public cellValues = [];\n  public renderValue: any;\n  public responseMap = {};\n\n  /* Inputs */\n  protected entity: string;\n  protected service: string;\n  protected columns: string;\n  @BooleanInputConverter()\n  protected translate: boolean = false;\n  protected valueColumn: string;\n  public valueColumnType: string = Codes.TYPE_INT;\n  protected parentKeys: string;\n  protected queryMethod: string = Codes.QUERY_METHOD;\n  protected serviceType: string;\n\n  /* Outputs */\n  public onDataLoaded: EventEmitter<any> = new EventEmitter();\n  /* Internal variables */\n  protected colArray: string[] = [];\n  protected dataService: any;\n  protected _pKeysEquiv = {};\n  protected dialogService: DialogService;\n\n  public translateArgsFn: (rowData: any) => any[];\n  protected componentPipe: OTranslatePipe;\n  protected pipeArguments: ITranslatePipeArgument = {};\n\n  protected subscritpions: Subscription = new Subscription();\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.tableColumn.type = 'service';\n    this.dialogService = injector.get<DialogService>(DialogService as Type<DialogService>);\n    this.setComponentPipe();\n  }\n\n  public initialize(): void {\n    super.initialize();\n    if (this.table) {\n      const oCol: OColumn = this.table.getOColumn(this.column);\n      oCol.definition.contentAlign = oCol.definition.contentAlign ? oCol.definition.contentAlign : 'start';\n    }\n\n    this.colArray = Util.parseArray(this.columns, true);\n    const pkArray = Util.parseArray(this.parentKeys);\n    this._pKeysEquiv = Util.parseParentKeysEquivalences(pkArray);\n    this.configureService();\n  }\n\n  public ngAfterViewInit(): void {\n    const oCol: OColumn = this.table.getOColumn(this.column);\n    if (Util.isDefined(oCol.editor)) {\n      this.subscritpions.add(oCol.editor.onPostUpdateRecord.subscribe((data: any) => {\n        this.queryData(data[this.tableColumn.attr], data);\n      }));\n    }\n  }\n\n  public ngOnDestroy(): void {\n    if (this.subscritpions) {\n      this.subscritpions.unsubscribe();\n    }\n  }\n\n  public getDescriptionValue(cellvalue: any, rowValue: any): string {\n    if (Util.isDefined(cellvalue) && this.cellValues.indexOf(cellvalue) === -1) {\n      this.queryData(cellvalue, rowValue);\n      this.cellValues.push(cellvalue);\n    }\n    return '';\n  }\n\n  public queryData(cellvalue, parentItem?: any): void {\n    if (!this.dataService || !(this.queryMethod in this.dataService) || !this.entity) {\n      console.warn('Service not properly configured! aborting query');\n      return;\n    }\n    const filter = ServiceUtils.getFilterUsingParentKeys(parentItem, this._pKeysEquiv);\n    const tableColAlias = Object.keys(this._pKeysEquiv).find(key => this._pKeysEquiv[key] === this.column);\n    if (Util.isDefined(tableColAlias)) {\n      if (!filter[tableColAlias]) {\n        filter[tableColAlias] = cellvalue;\n      }\n    } else {\n      filter[this.column] = cellvalue;\n    }\n    const sqlTypes = this.getSqlTypesForFilter(filter);\n    this.dataService[this.queryMethod](filter, this.colArray, this.entity, sqlTypes)\n      .subscribe((resp: ServiceResponse) => {\n        if (resp.isSuccessful()) {\n          let respData;\n          if (Util.isArray(resp.data)) {\n            respData = resp.data[0];\n          } else if (Util.isObject(resp.data) && Object.keys(resp.data).length > 0) {\n            respData = resp.data;\n          } else {\n            console.warn('Component has received not supported service data. Supported data are Array or Object');\n          }\n\n          if (Util.isDefined(respData)) {\n            this.responseMap[cellvalue] = respData[this.valueColumn];\n            this.onDataLoaded.emit(this.responseMap[cellvalue]);\n          }\n        }\n      }, err => {\n        console.error(err);\n        if (err && typeof err !== 'object') {\n          this.dialogService.alert('ERROR', err);\n        } else {\n          this.dialogService.alert('ERROR', 'MESSAGES.ERROR_QUERY');\n        }\n      });\n  }\n\n  getSqlTypesForFilter(filter: Object) {\n    const sqlType = {};\n    const tableSqlTypes = this.table.getSqlTypes();\n\n    Object.keys(filter).forEach(filterKey => {\n      const pKeyEquiv = Object.keys(this._pKeysEquiv).find(keyEquiv => keyEquiv === filterKey);\n      const keyEquiv = Util.isDefined(pKeyEquiv) ? this._pKeysEquiv[pKeyEquiv] : filterKey;\n      sqlType[filterKey] = tableSqlTypes[keyEquiv]\n    });\n\n    return sqlType;\n  }\n  public configureService(): void {\n    const configureServiceArgs: OConfigureServiceArgs = { injector: this.injector, baseService: OntimizeService, entity: this.entity, service: this.service, serviceType: this.serviceType }\n    this.dataService = Util.configureService(configureServiceArgs);\n  }\n\n  public getCellData(cellvalue: any, rowvalue?: any): string {\n    return this.responseMap[cellvalue];\n  }\n\n  public getFilterExpression(quickFilter: string): Expression {\n    const oCol: OColumn = this.table.getOColumn(this.column);\n    let result: Expression;\n    let cacheValue = Object.keys(this.responseMap).find(key => Util.normalizeString(this.responseMap[key]).indexOf(Util.normalizeString(quickFilter)) !== -1);\n    if (cacheValue) {\n      cacheValue = this.parseByValueColumnType(cacheValue);\n      result = FilterExpressionUtils.buildExpressionEquals(this.column, SQLTypes.parseUsingSQLType(cacheValue, SQLTypes.getSQLTypeKey(oCol.sqlType)));\n    }\n    return result;\n  }\n\n  public setComponentPipe(): void {\n    this.componentPipe = new OTranslatePipe(this.injector);\n  }\n\n  public responseValue(cellvalue: any, rowvalue?: any): string {\n    if (this.translate) {\n      this.pipeArguments = this.translateArgsFn ? { values: this.translateArgsFn(rowvalue) } : {};\n      return super.getCellData(cellvalue, rowvalue);\n    } else {\n      return cellvalue;\n    }\n  }\n\n  protected parseByValueColumnType(val: any) {\n    let value = val;\n\n    if (this.valueColumnType === Codes.TYPE_INT) {\n      const parsed = parseInt(value, 10);\n      if (!isNaN(parsed)) {\n        value = parsed;\n      }\n    }\n    return value;\n  }\n\n  /** Querying all entity records to have the responseMap fully filled */\n  queryAllData(): Observable<any> {\n    return new Observable(observer => {\n      if (!this.dataService || !(this.queryMethod in this.dataService) || !this.entity) {\n        console.warn('Service not properly configured! aborting query');\n        observer.next();\n      }\n      this.dataService[this.queryMethod]({}, this.colArray, this.entity)\n        .subscribe((resp: ServiceResponse) => {\n          if (resp.isSuccessful()) {\n            let respData = [];\n            if (Util.isArray(resp.data)) {\n              respData = resp.data;\n            } else if (Util.isObject(resp.data) && Object.keys(resp.data).length > 0) {\n              respData = [resp.data];\n            } else {\n              console.warn('Component has received not supported service data. Supported data are Array or Object');\n            }\n\n            respData.forEach(item => {\n              if (Util.isDefined(item[this.column])) {\n                this.cellValues.push(item[this.column]);\n                this.responseMap[item[this.column]] = item[this.valueColumn];\n              }\n            });\n            this.onDataLoaded.emit(this.responseMap);\n          }\n          observer.next();\n        }, err => {\n          console.error(err);\n          observer.next();\n        });\n    });\n  }\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n  {{ getDescriptionValue(cellvalue, rowvalue) }}{{ responseValue(responseMap[cellvalue]) }}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';\n\nimport { IMomentPipeArgument, OMomentPipe } from '../../../../../pipes/o-moment.pipe';\nimport { Util } from '../../../../../util/util';\nimport { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_TIME = [\n  'format'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-time',\n  templateUrl: './o-table-cell-renderer-time.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_TIME\n})\nexport class OTableCellRendererTimeComponent extends OBaseTableCellRenderer implements OnInit {\n\n  protected componentPipe: OMomentPipe;\n  protected pipeArguments: IMomentPipeArgument;\n\n  protected _format: string = 'L HH:mm a';\n  protected locale: string;\n\n  @ViewChild('templateref', { read: TemplateRef, static: true }) public templateref: TemplateRef<any>;\n\n  constructor(protected injector: Injector) {\n    super(injector);\n    this.tableColumn.type = 'time';\n    this.setComponentPipe();\n  }\n\n  set format(value: string) {\n    if (Util.isDefined(value)) {\n      this._format = value;\n    }\n  }\n  setComponentPipe() {\n    this.componentPipe = new OMomentPipe(this.injector);\n  }\n\n  initialize() {\n    super.initialize();\n    this.pipeArguments = {\n      format: this._format\n    };\n  }\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\">\n   {{getCellData(cellvalue)}}\n</ng-template>","import { ChangeDetectionStrategy, Component, Injector, TemplateRef, ViewChild } from '@angular/core';\n\nimport { ITranslatePipeArgument, OTranslatePipe } from '../../../../../pipes/o-translate.pipe';\nimport { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class';\n\nexport const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_TRANSLATE = [\n  // translate-params [(rowData: any) => any[]]: function that receives the row data and return the parameters for the translate pipe.\n  'translateArgsFn: translate-params'\n];\n\n@Component({\n  selector: 'o-table-cell-renderer-translate',\n  templateUrl: './o-table-cell-renderer-translate.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_TRANSLATE\n})\nexport class OTableCellRendererTranslateComponent extends OBaseTableCellRenderer {\n\n  @ViewChild('templateref', { read: TemplateRef, static: true })\n  public templateref: TemplateRef<any>;\n\n  public translateArgsFn: (rowData: any) => any[];\n\n  protected componentPipe: OTranslatePipe;\n  protected pipeArguments: ITranslatePipeArgument = {};\n\n  constructor(protected injector: Injector) {\n    super(injector);\n\n    this.tableColumn.type = 'translate';\n\n    this.setComponentPipe();\n  }\n\n  public setComponentPipe(): void {\n    this.componentPipe = new OTranslatePipe(this.injector);\n  }\n\n  public getCellData(cellvalue: any, rowvalue?: any): string {\n    this.pipeArguments = this.translateArgsFn ? { values: this.translateArgsFn(rowvalue) } : {};\n    return super.getCellData(cellvalue, rowvalue);\n  }\n\n}\n","<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n  {{ getCellData(cellvalue, rowvalue) }}\n</ng-template>\n","import { OTableCellRendererActionComponent, DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_ACTION, DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_ACTION } from './action/o-table-cell-renderer-action.component';\nimport { OTableCellRendererBooleanComponent, DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_BOOLEAN } from './boolean/o-table-cell-renderer-boolean.component';\nimport { OTableCellRendererCurrencyComponent, DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_CURRENCY } from './currency/o-table-cell-renderer-currency.component';\nimport { OTableCellRendererDateComponent, DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_DATE } from './date/o-table-cell-renderer-date.component';\nimport { OTableCellRendererImageComponent, DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_IMAGE, DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_IMAGE } from './image/o-table-cell-renderer-image.component';\nimport { DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_INTEGER, OTableCellRendererIntegerComponent } from './integer/o-table-cell-renderer-integer.component';\nimport { OTableCellRendererPercentageComponent } from './percentage/o-table-cell-renderer-percentage.component';\nimport { OTableCellRendererRealComponent, DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_REAL } from './real/o-table-cell-renderer-real.component';\nimport { OTableCellRendererServiceComponent, DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_SERVICE, DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_SERVICE } from './service/o-table-cell-renderer-service.component';\nimport { OTableCellRendererTimeComponent } from './time/o-table-cell-renderer-time.component';\nimport { OTableCellRendererTranslateComponent, DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_TRANSLATE } from './translate/o-table-cell-renderer-translate.component';\n\nexport const O_TABLE_CELL_RENDERERS = [\n  OTableCellRendererActionComponent,\n  OTableCellRendererDateComponent,\n  OTableCellRendererBooleanComponent,\n  OTableCellRendererImageComponent,\n  OTableCellRendererIntegerComponent,\n  OTableCellRendererRealComponent,\n  OTableCellRendererCurrencyComponent,\n  OTableCellRendererPercentageComponent,\n  OTableCellRendererServiceComponent,\n  OTableCellRendererTranslateComponent,\n  OTableCellRendererTimeComponent\n];\n\nexport const O_TABLE_CELL_RENDERERS_INPUTS = [\n  ...DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_BOOLEAN,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_INTEGER,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_REAL,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_CURRENCY,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_DATE,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_IMAGE,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_ACTION,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_SERVICE,\n  ...DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_TRANSLATE\n];\n\nexport const O_TABLE_CELL_RENDERERS_OUTPUTS = [\n  ...DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_ACTION,\n  ...DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_IMAGE,\n  ...DEFAULT_OUTPUTS_O_TABLE_CELL_RENDERER_SERVICE\n];\n\nexport const renderersMapping = {\n  action: OTableCellRendererActionComponent,\n  boolean: OTableCellRendererBooleanComponent,\n  currency: OTableCellRendererCurrencyComponent,\n  date: OTableCellRendererDateComponent,\n  image: OTableCellRendererImageComponent,\n  integer: OTableCellRendererIntegerComponent,\n  percentage: OTableCellRendererPercentageComponent,\n  real: OTableCellRendererRealComponent,\n  service: OTableCellRendererServiceComponent,\n  translate: OTableCellRendererTranslateComponent,\n  time: OTableCellRendererTimeComponent\n};\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Injector,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter, NumberInputConverter } from '../../../decorators/input-converter';\nimport { OTableColumn } from '../../../interfaces/o-table-column.interface';\nimport { OPercentageValueBaseType } from '../../../pipes/o-percentage.pipe';\nimport { DateFilterFunction } from '../../../types/date-filter-function.type';\nimport { ErrorData } from '../../../types/error-data.type';\nimport { Expression } from '../../../types/expression.type';\nimport { ODateValueType } from '../../../types/o-date-value.type';\nimport { Codes } from '../../../util/codes';\nimport { SQLTypes } from '../../../util/sqltypes';\nimport { Util } from '../../../util/util';\nimport { OTableComponent } from '../o-table.component';\nimport { editorsMapping, O_TABLE_CELL_EDITORS_INPUTS, O_TABLE_CELL_EDITORS_OUTPUTS } from './cell-editor/cell-editor';\nimport { O_TABLE_CELL_RENDERERS_INPUTS, O_TABLE_CELL_RENDERERS_OUTPUTS, renderersMapping } from './cell-renderer/cell-renderer';\n\nexport const DEFAULT_INPUTS_O_TABLE_COLUMN = [\n\n  // attr [string]: column name.\n  'attr',\n\n  // title [string]: column title. Default: no value.\n  'title',\n\n  // title-align [start | center | end]: column title alignment. Default: center.\n  'titleAlign: title-align',\n\n  // content-align [start | center | end]: column content alignment.\n  'contentAlign: content-align',\n\n  // orderable [no|yes]: column can be sorted. Default: yes.\n  'orderable',\n\n  // searchable [no|yes]: searchings are performed into column content. Default: yes.\n  'searchable',\n\n  // groupable [no|yes|true|false]: Indicates whether or not the column can be groupable\n  'groupable',\n\n  // type [boolean|integer|real|currency|date|image]: column type. Default: no value (string).\n  'type',\n\n  // editable [no|yes]: column can be edited directly over the table. Default: no.\n  'editable',\n\n  'width',\n\n  // only in pixels\n  'minWidth: min-width',\n\n  // only in pixels\n  'maxWidth: max-width',\n\n  // async-load [no|yes|true|false]: asynchronous query. Default: no\n  'asyncLoad : async-load',\n\n  // sqltype[string]: Data type according to Java standard. See SQLType class. Default: 'OTHER'\n  'sqlType: sql-type',\n\n  'tooltip',\n\n  'tooltipValue: tooltip-value',\n\n  'tooltipFunction: tooltip-function',\n\n  'multiline',\n\n  'resizable',\n\n  'filterExpressionFunction: filter-expression-function',\n\n  'class',\n\n  'angularValidatorsFn: validators',\n\n  'angularValidatorsFnErrors: validators-errors',\n\n  'angularAsyncValidatorsFn: async-validators',\n\n  ...O_TABLE_CELL_RENDERERS_INPUTS,\n  ...O_TABLE_CELL_EDITORS_INPUTS\n];\n\nexport const DEFAULT_OUTPUTS_O_TABLE_COLUMN = [\n  ...O_TABLE_CELL_RENDERERS_OUTPUTS,\n  ...O_TABLE_CELL_EDITORS_OUTPUTS\n];\n\n@Component({\n  selector: 'o-table-column',\n  templateUrl: './o-table-column.component.html',\n  styleUrls: ['./o-table-column.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: DEFAULT_INPUTS_O_TABLE_COLUMN,\n  outputs: DEFAULT_OUTPUTS_O_TABLE_COLUMN\n})\nexport class OTableColumnComponent implements OTableColumn, OnDestroy, OnInit, AfterViewInit {\n\n  public renderer: any;\n  public editor: any;\n\n  public type: string;\n  public attr: string;\n  public title: string;\n  public titleAlign: string;\n  public contentAlign: 'start' | 'center' | 'end';\n  public sqlType: string;\n  protected _SQLType: number;\n  protected _orderable: boolean;\n  protected _resizable: boolean;\n  protected _searchable: boolean;\n  protected _groupable: boolean;\n  @BooleanInputConverter()\n  public editable: boolean = false;\n  public width: string;\n  public minWidth: string;\n  public maxWidth: string;\n  @BooleanInputConverter()\n  public tooltip: boolean = false;\n  tooltipValue: string;\n  tooltipFunction: (rowData: any) => any;\n  public class: string;\n\n  set multiline(val: boolean) {\n    val = Util.parseBoolean(String(val));\n    this._multiline = val;\n  }\n  get multiline(): boolean {\n    return this._multiline;\n  }\n  protected _multiline: boolean = false;\n\n  public angularValidatorsFn: ValidatorFn[] = [];\n  public angularValidatorsFnErrors: ErrorData[] = [];\n\n  public angularAsyncValidatorsFn: AsyncValidatorFn[] = [];\n\n  filterExpressionFunction: (columnAttr: string, quickFilter?: string) => Expression;\n\n  /* input renderer base */\n  public _filterSource: 'render' | 'data' | 'both' = 'render';\n  public filterFunction: (cellValue: any, rowValue: any, quickFilter?: string) => boolean;\n  /* input renderer date */\n  protected format: string;\n  /* input renderer integer */\n  protected grouping: any = true;\n  protected thousandSeparator: string = ',';\n  /* input renderer real */\n  protected decimalSeparator: string = '.';\n\n  /* input renderer currency */\n  protected currencySymbol: string;\n  protected currencySymbolPosition: string;\n\n  /* input renderer boolean */\n  protected trueValue: any;\n  protected falseValue: any;\n  protected renderTrueValue: any;\n  protected renderFalseValue: any;\n  protected renderType: string = 'string';\n  protected booleanType: string = 'boolean';\n\n  /* input image */\n  protected imageType: string;\n  protected avatar: string;\n  protected emptyImage: string;\n\n  /* input renderer action */\n  protected icon: string;\n  protected action: string;\n  protected text: string;\n  protected iconPosition: string;\n\n  /* input renderer service */\n  protected entity: string;\n  protected service: string;\n  protected columns: string;\n  protected valueColumn: string;\n  protected parentKeys: string;\n  protected queryMethod: string = Codes.QUERY_METHOD;\n  protected serviceType: string;\n  @BooleanInputConverter()\n  protected translate: boolean = false;\n  /* input renderer translate */\n  protected translateArgsFn: (rowData: any) => any[];\n  /* input time */\n  oDateFormat = 'L';\n  oHourFormat = 24;\n\n  /* input renderer percentage */\n  valueBase: OPercentageValueBaseType = 1;\n\n  /* input editor */\n  @BooleanInputConverter()\n  protected orequired: boolean = false;\n  @BooleanInputConverter()\n  showPlaceHolder: boolean = false;\n  olabel: string;\n  @BooleanInputConverter()\n  updateRecordOnEdit: boolean = true;\n  @BooleanInputConverter()\n  showNotificationOnEdit: boolean = false;\n\n  /* input editor date */\n  protected locale: string;\n  protected oStartView: 'month' | 'year' = 'month';\n  protected oMinDate: string;\n  protected oMaxDate: string;\n  @BooleanInputConverter()\n  protected oTouchUi: boolean = false;\n  protected oStartAt: string;\n  protected filterDate: DateFilterFunction;\n  protected dateValueType: ODateValueType = 'timestamp';\n\n  /* input editor integer */\n  @NumberInputConverter()\n  min: number;\n  @NumberInputConverter()\n  max: number;\n  @NumberInputConverter()\n  step: number;\n  @NumberInputConverter()\n  minDecimalDigits: number = 2;\n  @NumberInputConverter()\n  maxDecimalDigits: number = 2;\n\n  /* input editor boolean */\n  @BooleanInputConverter()\n  indeterminateOnNull: boolean = false;\n  @BooleanInputConverter()\n  autoCommit: boolean;\n\n  /* output cell renderer action */\n  onClick: EventEmitter<object> = new EventEmitter<object>();\n\n  /* output cell editor */\n  editionStarted: EventEmitter<object> = new EventEmitter<object>();\n  editionCancelled: EventEmitter<object> = new EventEmitter<object>();\n  editionCommitted: EventEmitter<object> = new EventEmitter<object>();\n  onPostUpdateRecord: EventEmitter<object> = new EventEmitter<object>();\n\n  @BooleanInputConverter()\n  asyncLoad: boolean = false;\n\n  @ViewChild('container', { read: ViewContainerRef, static: true })\n  container: ViewContainerRef;\n\n  private subscriptions = new Subscription();\n\n  constructor(\n    @Inject(forwardRef(() => OTableComponent)) public table: OTableComponent,\n    protected injector: Injector\n  ) {\n  }\n\n  static addEditor(type: string, editorClassReference: any) {\n    if (!editorsMapping.hasOwnProperty(type) && Util.isDefined(editorClassReference)) {\n      editorsMapping[type] = editorClassReference;\n    }\n  }\n\n  ngOnInit() {\n    this.grouping = Util.parseBoolean(this.grouping, true);\n    this.titleAlign = this.parseTitleAlign();\n    this.table.registerColumn(this);\n    this.subscriptions.add(this.table.onReinitialize.subscribe(() => this.table.registerColumn(this)));\n  }\n\n  ngAfterViewInit(): void {\n    this.createRenderer();\n    this.createEditor();\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n  }\n\n  parseTitleAlign(): string {\n    const align = (this.titleAlign || '').toLowerCase();\n    return Codes.AVAILABLE_COLUMN_TITLE_ALIGNS.indexOf(align) !== -1 ? align : undefined;\n  }\n\n  get originalWidth() {\n    let originalWidth = this.width;\n    const pxVal = Util.extractPixelsValue(originalWidth);\n    if (Util.isDefined(pxVal)) {\n      originalWidth = pxVal + '';\n\n    }\n    return originalWidth;\n  }\n\n  protected createRenderer(): void {\n    if (!Util.isDefined(this.renderer) && Util.isDefined(this.type)) {\n      const componentRef = renderersMapping[this.type];\n      if (componentRef !== undefined) {\n        let newRenderer;\n        const ref = this.container.createComponent(componentRef);\n        newRenderer = ref.instance;\n        newRenderer.filterSource = this.filterSource;\n        newRenderer.filterFunction = this.filterFunction;\n        switch (this.type) {\n          case 'currency':\n            newRenderer.currencySymbol = this.currencySymbol;\n            newRenderer.currencySymbolPosition = this.currencySymbolPosition;\n            newRenderer.decimalSeparator = this.decimalSeparator;\n            newRenderer.minDecimalDigits = this.minDecimalDigits;\n            newRenderer.maxDecimalDigits = this.maxDecimalDigits;\n            newRenderer.grouping = this.grouping;\n            newRenderer.thousandSeparator = this.thousandSeparator;\n            break;\n          case 'date':\n            newRenderer.format = this.format;\n            break;\n          case 'time':\n            newRenderer.format = this.format;\n            break;\n          case 'integer':\n            newRenderer.grouping = this.grouping;\n            newRenderer.thousandSeparator = this.thousandSeparator;\n            break;\n          case 'boolean':\n            newRenderer.trueValue = this.trueValue;\n            newRenderer.falseValue = this.falseValue;\n            newRenderer.renderTrueValue = this.renderTrueValue;\n            newRenderer.renderFalseValue = this.renderFalseValue;\n            newRenderer.renderType = this.renderType;\n            newRenderer.booleanType = this.booleanType;\n            break;\n          case 'percentage':\n            newRenderer.valueBase = this.valueBase;\n          // eslint-disable-next-line no-fallthrough\n          case 'real':\n            newRenderer.decimalSeparator = this.decimalSeparator;\n            newRenderer.minDecimalDigits = this.minDecimalDigits;\n            newRenderer.maxDecimalDigits = this.maxDecimalDigits;\n            newRenderer.grouping = this.grouping;\n            newRenderer.thousandSeparator = this.thousandSeparator;\n            break;\n          case 'image':\n            newRenderer.imageType = this.imageType;\n            newRenderer.avatar = this.avatar;\n            newRenderer.emptyImage = this.emptyImage;\n            break;\n          case 'action':\n            newRenderer.icon = this.icon;\n            newRenderer.action = this.action;\n            newRenderer.text = this.text;\n            newRenderer.iconPosition = this.iconPosition;\n            newRenderer.onClick = this.onClick;\n            break;\n          case 'service':\n            newRenderer.entity = this.entity;\n            newRenderer.service = this.service;\n            newRenderer.columns = this.columns;\n            newRenderer.valueColumn = this.valueColumn;\n            newRenderer.parentKeys = this.parentKeys;\n            newRenderer.queryMethod = this.queryMethod;\n            newRenderer.serviceType = this.serviceType;\n            newRenderer.translate = this.translate;\n            break;\n          case 'translate':\n            newRenderer.translateArgsFn = this.translateArgsFn;\n            break;\n        }\n        this.registerRenderer(newRenderer);\n\n      }\n    }\n  }\n\n  buildCellEditor(type: string, container: ViewContainerRef, propsOrigin: any, registerInColumn: boolean = true) {\n    let editor;\n    const componentRef = editorsMapping[type] || editorsMapping.text;\n    if (componentRef === undefined) {\n      return editor;\n    }\n\n    const ref = container.createComponent(componentRef);\n    editor = ref.instance;\n    if (propsOrigin !== undefined) {\n      switch (type) {\n        case 'date':\n          editor.format = propsOrigin.format;\n          editor.locale = propsOrigin.locale;\n          editor.oStartView = propsOrigin.oStartView;\n          editor.oMinDate = propsOrigin.oMinDate;\n          editor.oMaxDate = propsOrigin.oMaxDate;\n          editor.oTouchUi = propsOrigin.oTouchUi;\n          editor.oStartAt = propsOrigin.oStartAt;\n          editor.filterDate = propsOrigin.filterDate;\n          editor.dateValueType = propsOrigin.dateValueType;\n          break;\n        case 'time':\n          editor.oDateFormat = propsOrigin.oDateFormat;\n          editor.oHourFormat = propsOrigin.oHourFormat;\n          editor.oDateLocale = propsOrigin.oDateLocale;\n          editor.oMinDate = propsOrigin.oMinDate;\n          editor.oMaxDate = propsOrigin.oMaxDate;\n\n          editor.oTouchUi = propsOrigin.oTouchUi;\n          editor.oDateStartAt = propsOrigin.oDateStartAt;\n          editor.oDateTextInputEnabled = propsOrigin.oDateTextInputEnabled;\n\n          editor.oHourMin = propsOrigin.oHourMin;\n          editor.oHourMax = propsOrigin.oHourMax;\n          editor.oHourTextInputEnabled = propsOrigin.oHourTextInputEnabled;\n          editor.oHourPlaceholder = propsOrigin.oHourPlaceholder;\n          editor.oDatePlaceholder = propsOrigin.oDatePlaceholder;\n          break;\n        case 'boolean':\n          editor.booleanType = propsOrigin.booleanType;\n          editor.indeterminateOnNull = propsOrigin.indeterminateOnNull;\n          editor.autoCommit = propsOrigin.autoCommit;\n          editor.trueValue = propsOrigin.trueValue;\n          editor.falseValue = propsOrigin.falseValue;\n          break;\n        case 'integer':\n        case 'percentage':\n        case 'currency':\n        case 'real':\n          editor.min = propsOrigin.min;\n          editor.max = propsOrigin.max;\n          editor.step = Util.isDefined(propsOrigin.step) ? propsOrigin.step : editor.step;\n          break;\n        case 'image':\n          break;\n        default:\n          break;\n      }\n      editor.olabel = propsOrigin.olabel;\n      editor.type = propsOrigin.type;\n    }\n    editor.registerInColumn = registerInColumn;\n\n    return editor;\n  }\n\n  protected createEditor() {\n    if (!Util.isDefined(this.editor) && this.editable) {\n      const newEditor = this.buildCellEditor(this.type, this.container, this);\n      if (newEditor) {\n        newEditor.orequired = this.orequired;\n        newEditor.showPlaceHolder = this.showPlaceHolder;\n        newEditor.updateRecordOnEdit = this.updateRecordOnEdit;\n        newEditor.showNotificationOnEdit = this.showNotificationOnEdit;\n        newEditor.editionStarted = this.editionStarted;\n        newEditor.editionCancelled = this.editionCancelled;\n        newEditor.editionCommitted = this.editionCommitted;\n        newEditor.onPostUpdateRecord = this.onPostUpdateRecord;\n        this.registerEditor(newEditor);\n      }\n    }\n  }\n\n  public registerRenderer(renderer: any) {\n    this.renderer = renderer;\n    const oCol = this.table.getOColumn(this.attr);\n    if (oCol !== undefined) {\n      oCol.renderer = this.renderer;\n    }\n    this.renderer.initialize();\n  }\n\n  public registerEditor(editor: any) {\n    this.editor = editor;\n    const oCol = this.table.getOColumn(this.attr);\n    if (oCol !== undefined) {\n      oCol.editor = this.editor;\n    }\n    this.editor.initialize();\n  }\n\n  set orderable(val: any) {\n    this._orderable = typeof val === 'boolean' ? val : Util.parseBoolean(val, true);\n    const oCol = this.table.getOColumn(this.attr);\n    if (oCol) {\n      oCol.orderable = this._orderable;\n    }\n  }\n\n  get orderable(): any {\n    return this._orderable;\n  }\n\n  set resizable(val: any) {\n    this._resizable = typeof val === 'boolean' ? val : Util.parseBoolean(val, true);\n    const oCol = this.table.getOColumn(this.attr);\n    if (oCol) {\n      oCol.resizable = this._resizable;\n    }\n  }\n\n  get resizable(): any {\n    return this._resizable;\n  }\n\n  set searchable(val: any) {\n    this._searchable = typeof val === 'boolean' ? val : Util.parseBoolean(val, true);\n    const oCol = this.table.getOColumn(this.attr);\n    if (oCol) {\n      oCol.searchable = this._searchable;\n    }\n  }\n\n  get searchable(): any {\n    return this._searchable;\n  }\n\n  set groupable(val: any) {\n    this._groupable = typeof val === 'boolean' ? val : Util.parseBoolean(val, true);\n    const oCol = this.table.getOColumn(this.attr);\n    if (oCol) {\n      oCol.groupable = this._groupable;\n    }\n  }\n\n  get groupable(): any {\n    return this._groupable;\n  }\n\n  getSQLType(): number {\n    if (!(this.sqlType && this.sqlType.length > 0)) {\n      switch (this.type) {\n        case 'date':\n          this.sqlType = 'TIMESTAMP';\n          break;\n        case 'integer':\n          this.sqlType = 'INTEGER';\n          break;\n        case 'boolean':\n          this.sqlType = 'BOOLEAN';\n          break;\n        case 'real':\n        case 'percentage':\n        case 'currency':\n          this.sqlType = 'DOUBLE';\n          break;\n      }\n    }\n\n    this._SQLType = SQLTypes.getSQLTypeValue(this.sqlType);\n    return this._SQLType;\n  }\n\n  set filterSource(val: string) {\n    const lowerVal = (val || '').toLowerCase();\n    this._filterSource = (lowerVal === 'render' || lowerVal === 'data' || lowerVal === 'both') ? lowerVal : 'render';\n  }\n\n  get filterSource(): string {\n    return this._filterSource;\n  }\n}\n","<span #container>\n</span>","import { ChangeDetectionStrategy, Component, forwardRef, Inject, Injector } from '@angular/core';\n\nimport { OTableColumnCalculated } from '../../../../interfaces/o-table-column-calculated.interface';\nimport { OperatorFunction } from '../../../../types/operation-function.type';\nimport { OTableComponent } from '../../o-table.component';\nimport { OTableColumnComponent } from '../o-table-column.component';\n\nexport const DEFAULT_INPUTS_O_TABLE_COLUMN_CALCULATED = [\n  // operation [string]: operation .\n  'operation',\n  // operation-function [funtion]: callback title. Default: no value.\n  'functionOperation: operation-function'\n];\n\n@Component({\n  selector: 'o-table-column-calculated',\n  templateUrl: './o-table-column-calculated.component.html',\n  inputs: DEFAULT_INPUTS_O_TABLE_COLUMN_CALCULATED,\n  providers: [\n    {\n      provide: OTableColumnComponent,\n      useExisting: forwardRef(() => OTableColumnCalculatedComponent)\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class OTableColumnCalculatedComponent extends OTableColumnComponent implements OTableColumnCalculated {\n\n  public operation: string;\n  public functionOperation: OperatorFunction;\n\n  constructor(\n    @Inject(forwardRef(() => OTableComponent)) public table: OTableComponent,\n    protected injector: Injector) {\n    super(table, injector);\n\n  }\n\n}\n","<span #container>\n</span>","import { OTableApplyConfigurationDialogComponent } from './apply-configuration/o-table-apply-configuration-dialog.component';\nimport { OTableExportDialogComponent } from './export/o-table-export-dialog.component';\nimport { OTableFilterByColumnDataDialogComponent } from './filter-by-column/o-table-filter-by-column-data-dialog.component';\nimport { OTableGroupByColumnsDialogComponent } from './group-by-columns/o-table-group-by-columns-dialog.component';\nimport { OTableStoreConfigurationDialogComponent } from './store-configuration/o-table-store-configuration-dialog.component';\nimport { OTableVisibleColumnsDialogComponent } from './visible-columns/o-table-visible-columns-dialog.component';\n\nexport const O_TABLE_DIALOGS = [\n  OTableApplyConfigurationDialogComponent,\n  OTableExportDialogComponent,\n  OTableStoreConfigurationDialogComponent,\n  OTableVisibleColumnsDialogComponent,\n  OTableFilterByColumnDataDialogComponent,\n  OTableGroupByColumnsDialogComponent\n];\n","import { OTableColumnAggregateComponent } from './aggregate/o-table-column-aggregate.component';\nimport { OTablePaginatorComponent } from './paginator/o-table-paginator.component';\n\nexport const O_TABLE_FOOTER_COMPONENTS = [\n  OTablePaginatorComponent,\n  OTableColumnAggregateComponent\n];\n","import { OTableButtonComponent } from './table-button/o-table-button.component';\nimport { OTableButtonsComponent } from './table-buttons/o-table-buttons.component';\nimport { OTableColumnResizerComponent } from './table-column-resizer/o-table-column-resizer.component';\nimport {\n  OTableColumnsGroupingColumnComponent\n} from './table-columns-grouping/columns/o-table-columns-grouping-column.component';\nimport { OTableColumnsGroupingComponent } from './table-columns-grouping/o-table-columns-grouping.component';\nimport { OTableColumnsFilterColumnComponent } from './table-columns-filter/columns/o-table-columns-filter-column.component';\nimport { OTableColumnsFilterComponent } from './table-columns-filter/o-table-columns-filter.component';\nimport {\n  OTableHeaderColumnFilterIconComponent\n} from './table-header-column-filter-icon/o-table-header-column-filter-icon.component';\nimport { OTableInsertableRowComponent } from './table-insertable-row/o-table-insertable-row.component';\nimport { OTableMenuComponent } from './table-menu/o-table-menu.component';\nimport { OTableOptionComponent } from './table-option/o-table-option.component';\nimport { OTableQuickfilterComponent } from './table-quickfilter/o-table-quickfilter.component';\nimport { OTableHeaderComponent } from './table-header/o-table-header.component';\nimport { OTableHeaderSelectAllComponent } from './table-header-select-all/o-table-header-select-all.component';\nimport { OTableColumnSelectAllDirective } from './table-column-select-all/o-table-column-select-all.directive';\n\nexport const O_TABLE_HEADER_COMPONENTS = [\n  OTableButtonComponent,\n  OTableButtonsComponent,\n  OTableColumnResizerComponent,\n  OTableColumnsFilterComponent,\n  OTableMenuComponent,\n  OTableOptionComponent,\n  OTableInsertableRowComponent,\n  OTableQuickfilterComponent,\n  OTableColumnsFilterColumnComponent,\n  OTableHeaderColumnFilterIconComponent,\n  OTableHeaderComponent,\n  OTableColumnsGroupingComponent,\n  OTableColumnsGroupingColumnComponent,\n  OTableColumnSelectAllDirective,\n  OTableHeaderSelectAllComponent\n];\n\nexport const O_TABLE_HEADER_COMPONENTS_EXPORTED = [\n  OTableButtonComponent,\n  OTableButtonsComponent,\n  OTableColumnResizerComponent,\n  OTableColumnsGroupingComponent,\n  OTableColumnsGroupingColumnComponent,\n  OTableColumnsFilterComponent,\n  OTableMenuComponent,\n  OTableOptionComponent,\n  OTableInsertableRowComponent,\n  OTableQuickfilterComponent,\n  OTableColumnsFilterColumnComponent,\n  OTableHeaderComponent,\n  OTableColumnSelectAllDirective\n];\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OContextMenuModule } from '../contextmenu/o-context-menu.module';\nimport { ODualListSelectorModule } from '../dual-list-selector/o-dual-list-selector.module';\nimport { ODataToolbarModule } from '../o-data-toolbar/o-data-toolbar.module';\nimport { OTableColumnCalculatedComponent } from './column/calculated/o-table-column-calculated.component';\nimport { O_TABLE_CELL_EDITORS } from './column/cell-editor/cell-editor';\nimport { O_TABLE_CELL_RENDERERS } from './column/cell-renderer/cell-renderer';\nimport { OTableColumnComponent } from './column/o-table-column.component';\nimport { OTableContextMenuComponent } from './extensions/contextmenu/o-table-context-menu.component';\nimport { O_TABLE_DIALOGS } from './extensions/dialog/o-table-dialog-components';\nimport { OTableExportButtonComponent } from './extensions/export-button/o-table-export-button.component';\nimport { OTableExportButtonService } from './extensions/export-button/o-table-export-button.service';\nimport { OTableExpandedFooterDirective } from './extensions/footer/expanded/o-table-expanded-footer.directive';\nimport { O_TABLE_FOOTER_COMPONENTS } from './extensions/footer/o-table-footer-components';\nimport { OTableMatPaginatorIntl } from './extensions/footer/paginator/o-table-mat-paginator-intl';\nimport { O_TABLE_HEADER_COMPONENTS, O_TABLE_HEADER_COMPONENTS_EXPORTED } from './extensions/header/o-table-header-components';\nimport { OTableRowClassPipe } from './extensions/pipes/o-table-row-class.pipe';\nimport { OTableRowDirective } from './extensions/row/o-table-row.directive';\nimport { OTableRowExpandableComponent } from './extensions/row/table-row-expandable/o-table-row-expandable.component';\nimport { OMatSortModule } from './extensions/sort/o-mat-sort-module';\nimport { OTableComponent } from './o-table.component';\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\nimport { OTableSkeletonComponent } from './extensions/skeleton/o-table-skeleton.component';\n\n@NgModule({\n  declarations: [\n    OTableComponent,\n    OTableColumnComponent,\n    OTableColumnCalculatedComponent,\n    OTableContextMenuComponent,\n    OTableRowDirective,\n    OTableExpandedFooterDirective,\n    OTableExportButtonComponent,\n    OTableRowClassPipe,\n    ...O_TABLE_CELL_RENDERERS,\n    ...O_TABLE_CELL_EDITORS,\n    ...O_TABLE_DIALOGS,\n    ...O_TABLE_HEADER_COMPONENTS,\n    ...O_TABLE_FOOTER_COMPONENTS,\n    OTableRowExpandableComponent,\n    OTableSkeletonComponent\n  ],\n  imports: [\n    CommonModule,\n    OSharedModule,\n    CdkTableModule,\n    DragDropModule,\n    PortalModule,\n    NgxSkeletonLoaderModule,\n    OContextMenuModule,\n    ObserversModule,\n    OMatSortModule,\n    NgxMaterialTimepickerModule,\n    ODualListSelectorModule,\n    ODataToolbarModule\n  ],\n  exports: [\n    OTableComponent,\n    OTableColumnComponent,\n    CdkTableModule,\n    OTableColumnCalculatedComponent,\n    OTableContextMenuComponent,\n    OTableRowDirective,\n    OTableExpandedFooterDirective,\n    OMatSortModule,\n    OTableExportButtonComponent,\n    OTableRowClassPipe,\n    ...O_TABLE_HEADER_COMPONENTS_EXPORTED,\n    ...O_TABLE_CELL_RENDERERS,\n    ...O_TABLE_CELL_EDITORS,\n    ...O_TABLE_FOOTER_COMPONENTS,\n    OTableRowExpandableComponent,\n    OTableSkeletonComponent\n  ],\n  providers: [\n    OTableExportButtonService,\n    { provide: MatPaginatorIntl, useClass: OTableMatPaginatorIntl }\n  ]\n})\nexport class OTableModule { }\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, of } from 'rxjs';\nimport { OTreeFlatNode } from '../../types/tree-flat-node.type';\n\n\n@Injectable()\nexport class OTreeDao {\n  protected _isLoadingResults: boolean = false;\n  protected loadingTimer;\n  /** Stream that emits whenever the data has been modified. */\n  dataChange = new BehaviorSubject<any[]>([]);\n  sqlTypesChange = new BehaviorSubject<object>({});\n  get data(): any[] { return this.dataChange.value; }\n\n  rootLevelNodes: OTreeFlatNode[] = [];\n  /** Map from flat node to nested node. This helps us finding the nested node to be modified */\n  flatNodeMap = new Map<OTreeFlatNode, any>();\n\n  setDataArray(data: Array<any>) {\n    this.dataChange.next(data);\n    return of(data);\n  }\n\n  get isLoadingResults(): boolean {\n    return this._isLoadingResults;\n  }\n\n  set isLoadingResults(val: boolean) {\n    if (val) {\n      this.cleanTimer();\n      this.loadingTimer = setTimeout(() => {\n        this._isLoadingResults = val;\n      }, 500);\n    } else {\n      this.cleanTimer();\n      this._isLoadingResults = val;\n    }\n  }\n\n  protected cleanTimer() {\n    if (this.loadingTimer) {\n      clearTimeout(this.loadingTimer);\n    }\n  }\n}\n","import { CollectionViewer, DataSource, SelectionChange } from '@angular/cdk/collections';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport { Injector } from '@angular/core';\nimport { BehaviorSubject, map, merge, Observable } from 'rxjs';\n\nimport { OTranslateService } from '../../services/translate';\nimport { OTreeDao } from './o-tree-dao.service';\nimport { OTreeComponent } from './o-tree.component';\nimport { OTreeFlatNode } from '../../types/tree-flat-node.type';\n\nexport class OTreeDataSource implements DataSource<OTreeFlatNode> {\n  dataChange = new BehaviorSubject<OTreeFlatNode[]>([]);\n  translateService: any;\n  protected _database: OTreeDao;\n\n  get data(): OTreeFlatNode[] {\n    return this.dataChange.value;\n  }\n  set data(value: OTreeFlatNode[]) {\n    this._treeControl.dataNodes = value;\n    this.dataChange.next(value);\n  }\n\n  constructor(\n    private oTree: OTreeComponent,\n    private _treeControl: FlatTreeControl<OTreeFlatNode>,\n    private injector: Injector\n  ) {\n    this.translateService = this.injector.get(OTranslateService);\n    this._database = this.oTree.daoTree;\n  }\n\n  connect(collectionViewer: CollectionViewer): Observable<OTreeFlatNode[]> {\n    this._treeControl.expansionModel.changed.subscribe(change => {\n      if (\n        change.added ||\n        change.removed\n      ) {\n        this.handleTreeControl(change);\n      }\n    });\n\n    return merge(collectionViewer.viewChange, this.dataChange).pipe(map(() => {\n      return this.data;\n    }));\n  }\n\n  disconnect(collectionViewer: CollectionViewer): void {\n    this.dataChange.complete();\n   }\n\n  /** Handle expand/collapse behaviors */\n  handleTreeControl(change: SelectionChange<OTreeFlatNode>) {\n    if (change.added) {\n      change.added.forEach(node => this.oTree.toggleNode(node, true));\n    }\n    if (change.removed) {\n      change.removed\n        .slice()\n        .reverse()\n        .forEach(node => this.oTree.toggleNode(node, false));\n    }\n  }\n\n  isTreeFlatNode(value: any) {\n    return 'level' in value && 'label' in value;\n  }\n\n  updateTree(parentNode: OTreeFlatNode, children: Array<any>, expand: boolean) {\n    const treeNode = parentNode.treeNode ? parentNode.treeNode : this.oTree;\n    const index = this.data.findIndex(node => node.id === parentNode.id);\n\n    if (!children || index < 0) {\n      // If no children, or cannot find the node, no op\n      return;\n    }\n\n    if (expand) {\n      let level = parentNode.level + 1;\n      let nodes: Array<OTreeFlatNode>;\n      nodes = children.map(child => {\n        if (this.isTreeFlatNode(child)) {\n          return child;\n        } else {\n          return treeNode.transformer(child, level, parentNode);\n        }\n      });\n      this.data.splice(index + 1, 0, ...nodes);\n\n      //If parentNode is selected, the children also are selected\n      if (this.oTree.checklistSelection.isSelected(parentNode)) {\n        this.oTree.checklistSelection.select(...nodes)\n      }\n    } else {\n      let count = 0;\n      for (\n        let i = index + 1;\n        i < this.data.length && this.data[i].level > parentNode.level;\n        i++, count++\n      );\n      this.data.splice(index + 1, count);\n    }\n\n    // notify the change\n    this.dataChange.next(this.data);\n    parentNode.isLoading = false;\n\n  }\n\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, ViewChild } from '@angular/core';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatMenu } from '@angular/material/menu';\n\n\n@Component({\n  selector: 'o-tree-menu',\n  templateUrl: './o-tree-menu.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: [\n    'selectAllCheckbox: select-all-checkbox',\n    'selectAllCheckboxVisible: select-all-checkbox-visible',\n  ],\n  outputs: [\n    'onSelectCheckboxChange'\n  ]\n})\nexport class OTreeMenuComponent {\n  @ViewChild('menu', { static: true })\n  matMenu: MatMenu;\n\n  selectAllCheckbox = false;\n  selectAllCheckboxVisible = false;\n\n  public onSelectCheckboxChange: EventEmitter<boolean> = new EventEmitter();\n\n  toggleShowCheckbox(event: MatCheckboxChange) {\n    this.onSelectCheckboxChange.emit(event.checked);\n  }\n\n}\n\n\n","<mat-menu #menu=\"matMenu\" x-position=\"before\" class=\"o-tree-menu o-mat-menu\">\n  <span mat-menu-item *ngIf=\"selectAllCheckbox\">\n    <mat-checkbox (change)=\"toggleShowCheckbox($event)\"  [(ngModel)]=\"selectAllCheckboxVisible\">\n      {{ 'TREE.BUTTONS.SELECT' | oTranslate }}\n    </mat-checkbox>\n  </span>\n</mat-menu>\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport {\n  AfterViewInit,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Injector,\n  OnDestroy,\n  OnInit,\n  Optional,\n  TemplateRef,\n  ViewEncapsulation\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { ServiceResponse } from '../../interfaces/service-response.interface';\nimport { OntimizeServiceProvider } from '../../services/factories';\nimport { OTreeComponentStateService } from '../../services/state/o-tree-component-state.service';\nimport { OPermissions } from '../../types';\nimport { OTreePermissions } from '../../types/o-tree-permissions.type';\nimport { OTreeFlatNode } from '../../types/tree-flat-node.type';\nimport { Codes } from '../../util/codes';\nimport { FilterExpressionUtils } from '../../util/filter-expression.utils';\nimport { Util } from '../../util/util';\nimport { OFormComponent } from '../form/o-form.component';\nimport { AbstractOServiceComponent } from '../o-service-component.class';\nimport { OTreeDao } from './o-tree-dao.service';\nimport { OTreeDataSource } from './o-tree.datasource';\nimport { OTreeNodeComponent } from './tree-node/tree-node.component';\n\n\nexport const DEFAULT_INPUTS_O_TREE = [\n  // attr [string]: list identifier. It is mandatory if data are provided through the data attribute. Default: entity (if set).\n  'oattr: attr',\n\n  // service [string]: JEE service path. Default: no value.\n  'service',\n\n  // entity [string]: entity of the service. Default: no value.\n  'entity',\n\n  // columns [string]: columns of the entity, separated by ';'. Default: no value.\n  'columns',\n\n  // keys [string]: entity keys, separated by ';'. Default: no value.\n  'keys',\n\n  // parent-keys [string]: parent keys to filter, separated by ';'. Default: no value.\n  'parentKeys: parent-keys',\n\n  // query-method [string]: name of the service method to perform queries. Default: query.\n  'queryMethod: query-method',\n\n  // insert-button [no|yes]: show insert button. Default: yes.\n  'insertButton: insert-button',\n\n  // refresh-button [no|yes]: show refresh button. Default: yes.\n  'refreshButton: refresh-button',\n\n  // delete-button [no|yes]: show delete button when user select items. Default: yes.\n  'deleteButton: delete-button',\n\n  // END OF DEFAULT_INPUTS_O_SERVICE_COMPONENT\n  'visibleColumns: visible-columns',\n  'selectAllCheckbox: select-all-checkbox',\n  'separator',\n  'parentColumn: parent-column',\n  'sortColumn: sort-column',\n  // select-all-checkbox-visible [yes|no|true|false]: show selection check boxes.Default: no.\n  'selectAllCheckboxVisible: select-all-checkbox-visible',\n  // filter [yes|no|true|false]: whether filter is case sensitive. Default: no.\n  'filterCaseSensitive: filter-case-sensitive',\n  // quick-filter [no|yes]: show quick filter. Default: yes.\n  'quickFilter: quick-filter',\n  // quick-filter-placeholder: quick filter placeholder\n  'quickFilterPlaceholder: quick-filter-placeholder',\n  // quick-filter-columns [string]: columns of the filter, separated by ';'. Default: no value.\n  'quickFilterColumns: quick-filter-columns',\n  // detail-mode [none|click|doubleclick]: way to open the detail form of a row. Default: 'click'.\n  'detailMode: detail-mode',\n  // detail-form-route [string]: route of detail form. Default: 'detail'.\n  'detailFormRoute: detail-form-route',\n  // show-buttons-text [yes|no|true|false]: show text of header buttons. Default: yes.\n  'showButtonsText: show-buttons-text',\n  'rootTitle: root-title',\n  'recursive',\n  'route'\n];\n\nexport const DEFAULT_OUTPUTS_O_TREE = ['onNodeSelected', 'onNodeExpanded', 'onNodeCollapsed', 'onLoadNextLevel', 'onDataLoaded', 'onNodeClick'];\n\n@Component({\n  selector: 'o-tree',\n  templateUrl: './o-tree.component.html',\n  styleUrls: ['./o-tree.component.scss'],\n  inputs: DEFAULT_INPUTS_O_TREE,\n  outputs: DEFAULT_OUTPUTS_O_TREE,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-tree]': 'true'\n  },\n  providers: [\n    OTreeDao,\n    OntimizeServiceProvider\n  ]\n})\n\nexport class OTreeComponent extends AbstractOServiceComponent<OTreeComponentStateService> implements OnInit, OnDestroy, AfterViewInit {\n\n  getLevel = (node: OTreeFlatNode) => node.level;\n\n  isExpandable = (node: OTreeFlatNode) => node.expandable;\n\n  getChildren = (node: OTreeFlatNode): any => {\n    if (this.recursive) {\n      return this.getRecursiveChildrenNode(node);\n    } else {\n      return this.getTreeNodeChildren(node);\n    }\n  }\n\n  getTreeNodeChildren(node: OTreeFlatNode): any {\n    if (node.level === 0 && Util.isDefined(this.rootTitle)) {\n      return this.rootNodes;\n    } else if (node.treeNode) {\n      if (Util.isDefined(node.treeNode.rootTitle) && !Util.isDefined(node.rootNode)) {\n        let rootNode: OTreeFlatNode = {\n          id: this.dataSource.data.length + 1, rootNode: true, label: this.translateService.get(node.treeNode.rootTitle), level: node.level + 1, expandable: true, data: node.data, isLoading: false, treeNode: node.treeNode\n        };\n        this.daoTree.flatNodeMap.set(rootNode, node);\n        return [rootNode];\n      } else {\n        return node.treeNode.childQueryData(node);\n      }\n    } else {\n      return this.childreNodes.filter((item) => item[this.parentKeys] === node[this.keys]);\n    }\n  }\n\n  getRecursiveChildrenNode(node: OTreeFlatNode): any {\n    if (node.level === 0 && Util.isDefined(this.rootTitle)) {\n      return this.rootNodes;\n    } else {\n      return node.treeNode.childQueryData(node);\n    }\n\n  }\n  getComponentFilter(existingFilter: any = {}): any {\n    let filter = existingFilter;\n    if (this.recursive && this.parentColumn !== undefined) {\n      const parentItemExpr = FilterExpressionUtils.buildExpressionFromObject(filter);\n      const parentNotNullExpr = FilterExpressionUtils.buildExpressionIsNull(this.parentColumn);\n      const filterExpr = FilterExpressionUtils.buildComplexExpression(parentItemExpr, parentNotNullExpr, FilterExpressionUtils.OP_AND);\n      filter = {};\n      filter[FilterExpressionUtils.FILTER_EXPRESSION_KEY] = filterExpr;\n    }\n    return super.getComponentFilter(filter);\n  }\n\n  hasChild = (_: number, _nodeData: OTreeFlatNode) => _nodeData.expandable;\n\n  hasNoContent = (_: number, _nodeData: OTreeFlatNode) => _nodeData.label === '';\n\n\n  dataSource: OTreeDataSource;\n\n  @BooleanInputConverter()\n  refreshButton: boolean = true;\n  @BooleanInputConverter()\n  deleteButton: boolean = false;\n  @BooleanInputConverter()\n  showButtonsText: boolean = false;\n\n  visibleColumns: string;\n  separator: string = Codes.HYPHEN_SEPARATOR;\n  parentColumn: string;\n  sortColumn: string;\n  @BooleanInputConverter()\n  selectAllCheckboxVisible: boolean = false;\n  @BooleanInputConverter()\n  selectAllCheckbox: boolean = false;\n  @BooleanInputConverter()\n  recursive: boolean = false;\n\n  protected _quickFilter: boolean = false;\n  paginationControls = false;\n  quickFilterColumns: string;\n  selectedNode: OTreeFlatNode;\n  childreNodes: OTreeFlatNode[] = [];\n  nodesArray: OTreeFlatNode[] = [];\n  ancestors: any[] = [];\n  checklistSelection = new SelectionModel<OTreeFlatNode>(true, [], true, (sm1, sm2) => sm1.id === sm2.id);\n\n  onNodeSelected: EventEmitter<any> = new EventEmitter();\n  onNodeExpanded: EventEmitter<any> = new EventEmitter();\n  onNodeCollapsed: EventEmitter<any> = new EventEmitter();\n  onLoadNextLevel: EventEmitter<any> = new EventEmitter();\n  onNodeClick: EventEmitter<any> = new EventEmitter<any>();\n  rootTitle: string;\n  rootNodes: OTreeFlatNode[] = [];\n  daoTree: OTreeDao;\n\n  @ContentChild('leafNodeTemplate', { read: TemplateRef, static: false })\n  leafNodeTemplate: TemplateRef<any>;\n\n  @ContentChild('parentNodeTemplate', { read: TemplateRef, static: false })\n  parentNodeTemplate: TemplateRef<any>;\n\n  treeFlattener: any;\n  treeControl: FlatTreeControl<OTreeFlatNode, OTreeFlatNode>;\n\n  @ContentChild('nodeTemplate', { read: TemplateRef, static: false })\n  set nodeTemplate(value: TemplateRef<any>) {\n    if (value != null) {\n      this.leafNodeTemplate = value;\n      this.parentNodeTemplate = value;\n    }\n  }\n\n  @ContentChild(forwardRef(() => OTreeNodeComponent), { descendants: false })\n  treeNode!: OTreeNodeComponent;\n  protected permissions: OTreePermissions;\n  protected actionsPermissions: OPermissions[];\n  protected visibleColumnsArray: string[] = [];\n  public enabledDeleteButton: boolean = false;\n  protected subscription: Subscription = new Subscription();\n  public route: string;\n  get showTreeMenuButton(): boolean {\n    const staticOpt = this.selectAllCheckbox;\n    return staticOpt;\n  }\n  constructor(\n    public injector: Injector,\n    elRef: ElementRef,\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent\n  ) {\n    super(injector, elRef, form);\n    this.daoTree = this.injector.get(OTreeDao)\n\n  }\n\n  ngOnInit() {\n    this.setTreeControl();\n    this.initialize();\n    this.initializeParams();\n\n    this.subscription.add(\n      this.selection.changed.subscribe(\n        () => (this.enabledDeleteButton = !this.selection.isEmpty())\n      )\n    );\n    this.permissions = this.permissionsService.getTreePermissions(this.oattr, this.actRoute);\n    this.actionsPermissions = this.getActionsPermissions(this.permissions);\n    this.setButtonPermissions(this.actionsPermissions);\n  }\n\n\n  public initialize(): void {\n    super.initialize();\n    this.initializeDao();\n  }\n\n  protected initializeDao() {\n\n    if (this.staticData) {\n      this.queryOnBind = false;\n      this.queryOnInit = false;\n      this.setDataArray(this.staticData);\n    } else {\n      this.configureService();\n    }\n  }\n\n  initializeParams(): void {\n    // If visible-columns is not present then visible-columns is all columns\n    if (!this.visibleColumns) {\n      this.visibleColumns = this.columns;\n    }\n\n    if (!Util.isDefined(this.quickFilterColumns)) {\n      this.quickFilterColumns = this.visibleColumns;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.visibleColumnsArray = Util.parseArray(this.visibleColumns, true);\n    this.quickFilterColArray = Util.parseArray(this.quickFilterColumns, true);\n    this.setDatasource();\n    this.afterViewInit();\n    if (this.queryOnInit) {\n      this.queryData();\n    }\n    this.manageCustomPermissions(this.actionsPermissions, '[o-tree-button]');\n  }\n\n  ngOnDestroy(): void {\n    this.destroy();\n    this.subscription.unsubscribe();\n  }\n\n  registerTreeNode(oTreeNode: OTreeNodeComponent) {\n    // this.dataSource.data.forEach()\n  }\n\n  checkboxClicked(event: Event): void {\n    event.stopPropagation();\n  }\n\n  leafNodeClicked(event: Event, node: OTreeFlatNode): void {\n    this.nodeClicked(node, event);\n  }\n\n  parentNodeClicked(event: Event, node: OTreeFlatNode): void {\n    this.nodeClicked(node, event);\n  }\n\n  protected nodeClicked(node: OTreeFlatNode, event: Event) {\n    event.stopPropagation();\n    event.preventDefault();\n    this.onNodeClick.emit(node);\n    this.selectedNode = node;\n    if (this.detailMode !== Codes.DETAIL_MODE_NONE && !this.isRootNode(node)) {\n      node.node.viewDetail(node.data, { label: node.label });\n    }\n  }\n\n  isRootNode(node: OTreeFlatNode) {\n    return Util.isDefined(node.rootNode) && node.rootNode;\n  }\n\n  onClickToggleButton(event: Event, node) {\n    event.stopPropagation();\n    if (this.treeControl.isExpanded(node)) {\n      this.onNodeExpanded.emit(node);\n    } else {\n      this.onNodeCollapsed.emit(node);\n    }\n  }\n  /**\n  * Toggle the node, remove from display list\n  */\n  toggleNode(node: OTreeFlatNode, expand: boolean) {\n    node.isLoading = true;\n    if (expand && node.expandable) {\n      const children = this.getChildren(node);\n      if (Util.isArray(children)) {\n        this.dataSource.updateTree(node, children, expand);\n      } else {\n        this.updateAsyncTree(children, node, expand);\n      }\n    } else {\n      this.dataSource.updateTree(node, [], expand);\n    }\n\n  }\n\n  private updateAsyncTree(children: any, node: OTreeFlatNode, expand: boolean) {\n    children.subscribe((res: ServiceResponse) => {\n      let data;\n      if (res.isSuccessful()) {\n        const arrData = (res.data !== undefined) ? res.data : [];\n        data = Util.isArray(arrData) ? arrData : [];\n      }\n      this.dataSource.updateTree(node, data, expand);\n    }, err => {\n      node.isLoading = false;\n      if (Util.isDefined(this.queryFallbackFunction)) {\n        this.queryFallbackFunction(err);\n      } else {\n        this.oErrorDialogManager.openErrorDialog(err);\n        console.error(err);\n      }\n    });\n\n  }\n\n  /** Toggle a leaf to-do item selection. Check all the parents to see if they changed */\n  todoLeafItemSelectionToggle(node: OTreeFlatNode): void {\n    this.todoItemSelectionToggle(node);\n  }\n\n  /** Toggle the to-do item selection. Select/deselect all the descendants node */\n  todoItemSelectionToggle(node: OTreeFlatNode): void {\n    this.checklistSelection.toggle(node);\n\n    const descendants = this.treeControl.getDescendants(node);\n    this.checklistSelection.isSelected(node)\n      ? this.checklistSelection.select(...descendants)\n      : this.checklistSelection.deselect(...descendants);\n\n    // Force update for the parent\n    descendants.every((child) => this.checklistSelection.isSelected(child));\n    this.onNodeSelected.emit(node.data);\n\n\n  }\n\n\n  /** Whether all the descendants of the node are selected. */\n  descendantsAllSelected(node: OTreeFlatNode): boolean {\n    let descAllSelected = false;\n    const descendants = this.treeControl.getDescendants(node);\n    if (node.expandable) {\n\n      if (this.treeControl.isExpanded(node) && descendants.length > 0) {\n        descAllSelected = descendants.every((child) =>\n          this.checklistSelection.isSelected(child)\n        );\n        descAllSelected ? this.checklistSelection.select(node) : this.checklistSelection.deselect(node);\n        return descAllSelected;\n      } else {\n        return this.checklistSelection.isSelected(node);\n      }\n\n    } else {\n      return this.checklistSelection.isSelected(node);\n    }\n\n  }\n\n  /** Whether part of the descendants are selected */\n  descendantsPartiallySelected(node: OTreeFlatNode): boolean {\n\n    let result = false;\n    const descendants = this.treeControl.getDescendants(node);\n    if (node.expandable) {\n      if (descendants.length > 0) {\n        result = descendants.some((child) =>\n          this.checklistSelection.isSelected(child)\n        );\n      }\n    }\n    return result && !this.descendantsAllSelected(node);\n\n  }\n\n\n  protected setTreeControl() {\n    if (!Util.isDefined(this.treeControl)) {\n      this.treeControl = new FlatTreeControl<OTreeFlatNode>(this.getLevel, this.isExpandable);\n    }\n  }\n  /** */\n\n  protected setDatasource() {\n    if (!Util.isDefined(this.dataSource)) {\n      this.dataSource = new OTreeDataSource(this, this.treeControl, this.injector);\n    }\n\n  }\n\n  getParentNodes(node: OTreeFlatNode, index: number, tree: OTreeFlatNode[]): OTreeFlatNode[] {\n    let parentNode = this.daoTree.flatNodeMap.get(node);\n    if (Util.isDefined(parentNode)) {\n      const existingNode = tree.findIndex(x => x['id'] === parentNode['id']) > -1;\n      if (Util.isDefined(parentNode)) {\n        if (!existingNode) {\n          //if not exist node in tree then, add parent before node\n          tree.splice(index, 0, parentNode)\n          return this.getParentNodes(parentNode, index, tree);\n        } else {\n          //if not exist node in tree then, add parent before node\n          return this.getParentNodes(parentNode, index, tree);\n        }\n      } else {\n        return tree;\n      }\n    } else {\n      return tree;\n    }\n  }\n\n  filterData(value?: string, loadMore?: boolean): void {\n\n    let filteredTreeData = [];\n    if (value) {\n      for (let [nestedNode] of this.daoTree.flatNodeMap) {\n        if (nestedNode.label.toLocaleLowerCase().indexOf(value.toLocaleLowerCase()) > -1) {\n          filteredTreeData.push(nestedNode);\n        }\n      };\n\n      let index = 0;\n      while (index < filteredTreeData.length) {\n        let node = filteredTreeData[index];\n        const parentNodes = this.getParentNodes(node, index, filteredTreeData);\n        if (!Util.isArrayEmpty(parentNodes)) {\n          filteredTreeData = parentNodes;\n        }\n        index++;\n      }\n      this.dataSource.data = filteredTreeData;\n    } else {\n      filteredTreeData = this.dataResponseArray;\n      this.setDataArray(filteredTreeData);\n    }\n\n\n    // Notify the change.\n    if (value) {\n      let rootNodes = filteredTreeData.filter(node => node.level == 0);\n      this.expandNodesWithNodes(rootNodes);\n    }\n\n  }\n  /**\n   * Expands nodes with nodes\n   * @param treeData\n   */\n  expandNodesWithNodes(treeData: OTreeFlatNode[]) {\n    treeData.filter(node => node.expandable).forEach(node => {\n      const descendants = this.treeControl.getDescendants(node);\n      if (descendants.length > 0) {\n        this.treeControl.expand(node);\n        this.expandNodesWithNodes(descendants)\n      }\n    });\n  }\n\n  /**\n    * Gets data tree\n    * @returns\n    */\n  getDataArray() {\n    return this.daoTree.data;\n  }\n\n  setDataArray(data: any): void {\n    this.daoTree.flatNodeMap.clear();\n    this.daoTree.setDataArray(data);\n    if (this.recursive) {\n      this.childreNodes = data.filter(\n        (item: any) => item[this.parentColumn] != null\n      );\n      this.rootNodes = data.filter(\n        (item: any) => !Util.isDefined(item[this.parentColumn]) || item[this.parentColumn] === null\n      );\n    }\n\n    this.rootNodes = data;\n\n    let level = 0;\n    let rootNode: OTreeFlatNode;\n    if (Util.isDefined(this.rootTitle)) {\n      level = +1;\n      rootNode = { id: 0, label: this.translateService.get(this.rootTitle), rootNode: true, level: 0, expandable: true, data: {}, isLoading: false };\n      this.daoTree.flatNodeMap.set(rootNode, null);\n      this.dataSource.data = [rootNode];\n      this.treeControl.expand(rootNode);\n    } else {\n      this.dataSource.data = this.rootNodes.map(node => this.transformer(node, level));\n    }\n\n  }\n\n  transformer = (node: any, level: number, parentNode?: any) => {\n\n    const nodeChildren = this.childreNodes.filter((item) => item[this.parentColumn] === node[this.keys]);\n    const flatNode: OTreeFlatNode =\n    {\n      'id': this.getNodeId(node, parentNode),\n      'label': this.getItemText(node),\n      'level': level,\n      'node': this,\n      treeNode: this.treeNode,\n      'expandable': Util.isDefined(this.treeNode) || !!nodeChildren?.length || this.recursive,\n      'data': node,\n      'isLoading': false,\n      'route': this.route\n    };\n\n    this.daoTree.flatNodeMap.set(flatNode, parentNode);\n\n    //recursive\n    nodeChildren.forEach(node => this.transformer(node, level + 1));\n    return flatNode;\n\n\n  }\n\n  onSelectCheckboxChange(visible: boolean) {\n    this.selectAllCheckboxVisible = visible;\n  }\n\n  protected sort(array: OTreeFlatNode[]): void {\n    if (this.sortColumn != null) {\n      array.sort((a, b) =>\n        a.data[this.sortColumn].localeCompare(b.data[this.sortColumn])\n      );\n      array\n        .filter((node) => !!this.treeControl.getDescendants(node))\n        .forEach((node) => this.sort(this.treeControl.getDescendants(node)));\n    }\n  }\n\n  protected getItemText(item: any): string {\n    return this.visibleColumnsArray\n      .filter((col) => item[col] != null && `${item[col]}`.length > 0)\n      .map((col) => item[col])\n      .join(this.separator);\n  }\n\n  getItemKey(item: any): string {\n    return this.keysArray.map((col) => item[col]).join(';');\n  }\n\n\n  protected filterByQuickFilterColumns(\n    item: any,\n    quickfilter: string\n  ): boolean {\n    const caseSensitive = this.isFilterCaseSensitive();\n    const regExpStr = new RegExp(\n      Util.escapeSpecialCharacter(\n        Util.normalizeString(quickfilter, !caseSensitive)\n      )\n    );\n    return this.getQuickFilterColumns().some((col) =>\n      regExpStr.test(Util.normalizeString(item.data[col] + '', !caseSensitive))\n    );\n  }\n\n  public add(e?: Event): void {\n    super.insertDetail();\n  }\n\n  protected getNodeId(item: any, parentNode: any) {\n    /** revisarlo:igual con id incremental era mas facil e igual de eficiente */\n    let id = '';\n    this.keysArray.forEach(key => {\n      id += item[key];\n    });\n    if (Util.isDefined(this.parentKeys) && Util.isDefined(parentNode)) {\n      id += parentNode.id;\n    }\n\n    return this.keys + ':' + id;\n  }\n\n\n\n\n  protected navigateToViewDetail(node: OTreeFlatNode) {\n    if (Util.isDefined(node.route)) {\n      let route = undefined;\n\n      let nodeRoute = node.route;\n      let routeArray = nodeRoute.split(Codes.ROUTE_SEPARATOR);\n      for (let i = 0, len = routeArray.length; i < len; i++) {\n        if (routeArray[i].startsWith(Codes.ROUTE_VARIABLE_CHAR)) {\n          routeArray[i] = node.data[routeArray[i].substring(1)];\n        }\n      }\n      route = routeArray.join(Codes.ROUTE_SEPARATOR);\n\n      if (Util.isDefined(route)) {\n        const extras = {\n          relativeTo: this.actRoute\n        };\n        this.router.navigate([route], extras);\n      }\n    }\n  }\n\n  isSelectedNode(node: OTreeFlatNode) {\n    return this.selectedNode == node;\n  }\n\n  public onItemDetailClick(node: OTreeFlatNode): void {\n    this.handleItemClick(node.data);\n  }\n}\n","<div fxLayout=\"column\" fxFlex>\n\n  <div *ngIf=\"hasControls()\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n\n    <div class=\"buttons\">\n      <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n\n        <button *ngIf=\"insertButton\" type=\"button\" mat-stroked-button aria-label=\"Insert\" [disabled]=\"!enabledInsertButton\" (click)=\"add($event)\">\n          <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n          <span>{{ 'INSERT' | oTranslate }}</span>\n        </button>\n\n        <button *ngIf=\"refreshButton\" type=\"button\" mat-stroked-button aria-label=\"Refresh\" [disabled]=\"!enabledRefreshButton\" (click)=\"reloadData()\">\n          <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n          <span>{{ 'REFRESH' | oTranslate }}</span>\n        </button>\n\n        <button *ngIf=\"deleteButton\" type=\"button\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n          [class.disabled]=\"!enabledDeleteButton\">\n          <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n          <span>{{ 'DELETE' | oTranslate }}</span>\n        </button>\n\n      </ng-container>\n\n      <ng-template #showButtonsWithoutText>\n        <button *ngIf=\"insertButton\" type=\"button\" mat-icon-button aria-label=\"Insert\" [disabled]=\"!enabledInsertButton\" (click)=\"add($event)\">\n          <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n        </button>\n\n        <button *ngIf=\"refreshButton\" type=\"button\" mat-icon-button aria-label=\"Refresh\" [disabled]=\"!enabledRefreshButton\" (click)=\"reloadData()\">\n          <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n        </button>\n\n        <button *ngIf=\"deleteButton\" type=\"button\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n          [class.disabled]=\"!enabledDeleteButton\">\n          <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n        </button>\n      </ng-template>\n\n      <ng-content select=\"[o-tree-button]\"></ng-content>\n    </div>\n    <div fxFlex>\n      <span fxLayoutAlign=\"center center\" class=\"title\">{{ title | oTranslate }}</span>\n    </div>\n    <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n      [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" appearance=\"outline\" float-label=\"never\" show-menu=\"no\">\n    </o-search-input>\n    <button type=\"button\" *ngIf=\"showTreeMenuButton\" mat-icon-button class=\"o-tree-menu-button\" [matMenuTriggerFor]=\"treeMenu.matMenu\"\n      (click)=\"$event.stopPropagation()\">\n      <mat-icon svgIcon=\"ontimize:more_vert\"></mat-icon>\n    </button>\n    <o-tree-menu #treeMenu [select-all-checkbox]=\"selectAllCheckbox\" [select-all-checkbox-visible]=\"selectAllCheckboxVisible\"\n      (onSelectCheckboxChange)=\"onSelectCheckboxChange($event)\"></o-tree-menu>\n\n  </div>\n\n  <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n\n    <!-- This is the tree node template for leaf nodes -->\n    <mat-tree-node *matTreeNodeDef=\"let node\" (click)=\"leafNodeClicked($event, node)\" matTreeNodeToggle matTreeNodePadding\n      [ngClass]=\"{'selected-node': isSelectedNode(node)}\">\n      <!-- use a disabled button to provide padding for tree leaf -->\n      <button mat-icon-button disabled></button>\n\n      <ng-container *ngIf=\"selectAllCheckboxVisible; else simpleLeafNodeTpl\">\n        <div class=\"node-wrapper\">\n          <mat-checkbox *ngIf=\"selectAllCheckboxVisible; else simpleLeafNodeTpl\" [checked]=\"checklistSelection.isSelected(node)\"\n            (click)=\"checkboxClicked($event)\" (change)=\"todoLeafItemSelectionToggle(node)\">\n          </mat-checkbox>\n          <ng-container [ngTemplateOutlet]=\"leafNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n          </ng-container>\n        </div>\n      </ng-container>\n      <ng-template #simpleLeafNodeTpl>\n        <ng-container [ngTemplateOutlet]=\"leafNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n        </ng-container>\n      </ng-template>\n\n    </mat-tree-node>\n    <!-- This is the tree node template for expandable nodes -->\n    <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" (click)=\"parentNodeClicked($event, node)\" matTreeNodePadding\n      [ngClass]=\"{'selected-node': isSelectedNode(node)}\">\n      <button mat-icon-button [attr.aria-label]=\"'toggle ' + node.label\" matTreeNodeToggle (click)=\"onClickToggleButton($event, node)\">\n        <mat-icon class=\"mat-icon-rtl-mirror\">\n          {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\n        </mat-icon>\n      </button>\n\n      <ng-container *ngIf=\"selectAllCheckboxVisible; else simpleParentNodeTpl\">\n        <div class=\"node-wrapper\">\n          <mat-checkbox *ngIf=\"selectAllCheckboxVisible; else simpleParentNodeTpl\" (click)=\"checkboxClicked($event)\"\n            (change)=\"todoItemSelectionToggle(node)\" [checked]=\"descendantsAllSelected(node)\" [indeterminate]=\"descendantsPartiallySelected(node)\">\n          </mat-checkbox>\n          <ng-container [ngTemplateOutlet]=\"parentNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n          </ng-container>\n        </div>\n      </ng-container>\n\n      <ng-template #simpleParentNodeTpl>\n        <ng-container [ngTemplateOutlet]=\"parentNodeFulltemplate\" [ngTemplateOutletContext]=\"{$implicit:node}\">\n        </ng-container>\n      </ng-template>\n    </mat-tree-node>\n  </mat-tree>\n</div>\n\n<ng-template let-node #leafNodeFulltemplate>\n  <ng-container *ngIf=\"leafNodeTemplate; else defaultLeafNodeTpl\" [ngTemplateOutlet]=\"leafNodeTemplate\"\n    [ngTemplateOutletContext]=\"{$implicit:node.data}\">\n  </ng-container>\n\n  <ng-template #defaultLeafNodeTpl>\n    {{node.label}}\n  </ng-template>\n</ng-template>\n\n<ng-template let-node #parentNodeFulltemplate>\n  <ng-container *ngIf=\"parentNodeTemplate; else defaultParentNodeTpl\" [ngTemplateOutlet]=\"parentNodeTemplate\"\n    [ngTemplateOutletContext]=\"{$implicit:node.data}\">\n  </ng-container>\n\n  <ng-template #defaultParentNodeTpl>\n    <span>{{node.label}}</span>\n    <mat-progress-bar *ngIf=\"node.isLoading\" mode=\"indeterminate\" fxFlex></mat-progress-bar>\n  </ng-template>\n</ng-template>\n","import { AfterViewInit, Component, ElementRef, forwardRef, Inject, Injector, OnInit, Optional, SkipSelf } from '@angular/core';\nimport { of } from 'rxjs';\nimport { Observable } from 'rxjs/internal/Observable';\n\nimport { ServiceResponse } from '../../../interfaces/service-response.interface';\nimport { OntimizeServiceProvider } from '../../../services/factories';\nimport { ServiceUtils } from '../../../util/service.utils';\nimport { Util } from '../../../util/util';\nimport { OFormComponent } from '../../form';\nimport { OTreeComponent } from '../o-tree.component';\nimport { OTreeFlatNode } from '../../../types/tree-flat-node.type';\n\n@Component({\n  selector: 'o-tree-node',\n  template: ' ',\n  providers: [OntimizeServiceProvider]\n})\nexport class OTreeNodeComponent extends OTreeComponent implements OnInit, AfterViewInit {\n\n  constructor(\n    public injector: Injector,\n    elementRef: ElementRef,\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    @Optional() @Inject(forwardRef(() => OTreeComponent)) public parentComponent: OTreeComponent,\n    @SkipSelf() @Optional() public parentNode: OTreeNodeComponent\n  ) {\n    super(injector, elementRef, form);\n  }\n\n  ngOnInit() {\n    this.initialize();\n    this.initializeParams();\n    this.queryOnBind = true;\n    this.queryOnInit = false;\n  }\n\n  ngAfterViewInit(): void {\n    this.visibleColumnsArray = Util.parseArray(this.visibleColumns, true);\n    this.quickFilterColArray = Util.parseArray(this.quickFilterColumns, true);\n  }\n\n\n  public childQueryData(node: OTreeFlatNode): Observable<ServiceResponse> | Observable<any> {\n    let queryMethodName = this.queryMethod;\n    if (!this.dataService || !(queryMethodName in this.dataService) || !this.entity) {\n      return of({ data: [] });\n    }\n    const parentItem = ServiceUtils.getParentKeysFromForm(this._pKeysEquiv, this.form);\n    let filter\n    if (this.recursive) {\n      filter = parentItem ?? {};\n      filter[this.parentColumn] = node.data[this.keysArray[0]]\n    } else {\n      filter = ServiceUtils.getFilterUsingParentKeys(node.data, node.treeNode._pKeysEquiv);\n    }\n\n    let queryArguments = [filter, this.colArray, this.entity];\n\n    return this.dataService[queryMethodName](...queryArguments) as Observable<ServiceResponse>;\n  }\n}\n","import { OTreeNodeComponent } from './tree-node/tree-node.component';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OTreeComponent } from './o-tree.component';\nimport { OSearchInputModule } from '../input/search-input/o-search-input.module';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { OTreeMenuComponent } from './header/tree-menu/o-tree-menu.component';\n\n@NgModule({\n  declarations: [OTreeNodeComponent,OTreeComponent, OTreeMenuComponent],\n  imports: [CommonModule, OSearchInputModule, OSharedModule, CdkTreeModule, MatTreeModule],\n  exports: [OTreeComponent, OTreeNodeComponent],\n})\nexport class OTreeModule { }\n","import { Component, ElementRef, Injector, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators';\nimport { AuthService } from '../../services/auth.service';\nimport { DialogService } from '../../services/dialog.service';\nimport { OUserInfoService, UserInfo } from '../../services/o-user-info.service';\nimport { OUserInfoConfigurationDirective } from './user-info-configuration/o-user-info-configuration.directive';\n\nexport const DEFAULT_INPUTS_O_USER_INFO = [\n  'showProfile: show-profile',\n  'showSettings: show-settings',\n  'showLogout: show-logout'\n];\n\nexport const DEFAULT_OUTPUTS_O_USER_INFO = [];\n\n@Component({\n  selector: 'o-user-info',\n  inputs: DEFAULT_INPUTS_O_USER_INFO,\n  outputs: DEFAULT_OUTPUTS_O_USER_INFO,\n  templateUrl: './o-user-info.component.html',\n  styleUrls: ['./o-user-info.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-user-info]': 'true'\n  }\n})\nexport class OUserInfoComponent implements OnDestroy {\n\n  protected dialogService: DialogService;\n  protected authService: AuthService;\n  protected oUserInfoService: OUserInfoService;\n\n  userInfoSubscription: Subscription;\n  protected userInfo: UserInfo;\n\n  @BooleanInputConverter()\n  public showLogout: boolean = true;\n\n  @BooleanInputConverter()\n  public showSettings: boolean = true;\n\n  @BooleanInputConverter()\n  public showProfile: boolean = false;\n\n  public userInfoConfiguration: OUserInfoConfigurationDirective;\n\n  constructor(\n    protected elRef: ElementRef,\n    protected injector: Injector,\n    protected router: Router\n  ) {\n    this.dialogService = this.injector.get(DialogService);\n    this.authService = this.injector.get(AuthService);\n    this.oUserInfoService = this.injector.get(OUserInfoService);\n\n    this.userInfo = this.oUserInfoService.getUserInfo();\n    this.userInfoSubscription = this.oUserInfoService.getUserInfoObservable().subscribe(res => {\n      this.userInfo = res;\n    });\n  }\n\n  ngOnDestroy() {\n    this.userInfoSubscription.unsubscribe();\n  }\n\n  onLogoutClick() {\n    this.authService.logoutWithConfirmation();\n  }\n\n  onSettingsClick() {\n    this.router.navigate(['main/settings']);\n  }\n\n  onProfileClick() {\n    this.router.navigate(['main/profile']);\n  }\n\n  get existsUserInfo(): boolean {\n    return this.userInfo !== undefined;\n  }\n\n  get avatar(): string {\n    return this.userInfo ? this.userInfo.avatar : undefined;\n  }\n\n  get username(): string {\n    return this.userInfo ? this.userInfo.username : undefined;\n  }\n\n  registerUserInfoConfiguration(userInfoMenu: OUserInfoConfigurationDirective) {\n    this.userInfoConfiguration = userInfoMenu;\n    this.updateInputsByConfiguration();\n  }\n\n  private updateInputsByConfiguration() {\n    this.showLogout = this.userInfoConfiguration ? this.userInfoConfiguration.showLogout : this.showLogout;\n    this.showProfile = this.userInfoConfiguration ? this.userInfoConfiguration.showProfile : this.showProfile;\n    this.showSettings = this.userInfoConfiguration ? this.userInfoConfiguration.showSettings : this.showSettings;\n  }\n\n}\n","<div class=\"o-user-info-container\" fxLayout=\"row\" fxLayoutAlign=\"center\">\n  <ng-container *ngIf=\"existsUserInfo\">\n    <div class=\"o-user-info-wrapper\" fxLayout=\"row\" fxLayoutAlign=\"center center\" [matMenuTriggerFor]=\"menu\"\n      fxLayoutGap=\"16px\">\n      <div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"o-user-info-avatar-wrapper\">\n        <img [src]=\"avatar\" *ngIf=\"avatar\" alt=\"avatar image\"/>\n      </div>\n      <span class=\"o-user-info-username\" *ngIf=\"username\"> {{ username }}</span>\n      <mat-icon svgIcon=\"ontimize:keyboard_arrow_down\"></mat-icon>\n    </div>\n    <mat-menu #menu=\"matMenu\" yPosition=\"below\" class=\"o-mat-menu\">\n      <button type=\"button\" mat-menu-item (click)=\"onProfileClick()\" *ngIf=\"showProfile\">\n        <mat-icon>person</mat-icon>\n        <span>{{ 'APP_LAYOUT.USER_PROFILE' | oTranslate }}</span>\n      </button>\n      <button type=\"button\" mat-menu-item (click)=\"onSettingsClick()\" *ngIf=\"showSettings\">\n        <mat-icon svgIcon=\"ontimize:settings\"></mat-icon>\n        <span>{{ 'APP_LAYOUT.SETTINGS' | oTranslate }}</span>\n      </button>\n      <ng-container *ngIf=\"userInfoConfiguration\">\n        <button *ngFor=\"let item of userInfoConfiguration.userInfoConfigurationItems\" type=\"button\" mat-menu-item\n          [matTooltip]=\"item.name | oTranslate\" matTooltipDisabled=\"item.tooltip\" [ngClass]=\"item.class\"\n          (click)=\"item.triggerOnClick($event)\">\n          <mat-icon>{{item.icon}} </mat-icon>\n          <span>{{ item.name | oTranslate }}</span>\n        </button>\n      </ng-container>\n      <button type=\"button\" mat-menu-item (click)=\"onLogoutClick()\" *ngIf=\"showLogout\">\n        <mat-icon svgIcon=\"ontimize:power_settings_new\"></mat-icon>\n        <span>{{ 'LOGOUT' | oTranslate }}</span>\n      </button>\n\n    </mat-menu>\n  </ng-container>\n</div>","import { Directive, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { BooleanInputConverter } from '../../../decorators';\nimport { DialogService } from '../../../services';\n\nexport const DEFAULT_INPUTS_O_USER_INFO_MENU_ITEM = [\n  'name',\n  'route',\n  'icon',\n  'action',\n  'confirm',\n  'confirmText: confirm-text',\n  'tooltip',\n  'class'\n];\n\n\n@Directive({\n  selector: 'o-user-info-configuration-item',\n  inputs: DEFAULT_INPUTS_O_USER_INFO_MENU_ITEM\n})\n\nexport class OUserInfoConfigurationItemDirective {\n\n  @BooleanInputConverter()\n  toolTip: boolean = false;\n\n  @BooleanInputConverter()\n  confirm: boolean = false;\n\n  public action: () => void;\n  public route: string;\n  public confirmText;\n  protected router: Router;\n  protected dialogService: DialogService;\n\n  constructor(public injector: Injector) {\n    this.router = this.injector.get(Router);\n    this.dialogService = this.injector.get(DialogService);\n  }\n\n  triggerOnClick(e: Event) {\n    if (this.route) {\n      this.navigate();\n    } else {\n      this.executeItemAction();\n    }\n  }\n\n  navigate() {\n    if (this.router.url !== this.route) {\n      this.router.navigate([this.route]);\n    }\n  }\n\n  executeItemAction() {\n    if (this.confirm) {\n      this.dialogService.confirm('CONFIRM', this.confirmText || 'MESSAGES.CONFIRM_ACTION').then(result => result ? this.action() : null);\n    } else {\n      this.action();\n    }\n  }\n\n\n}","import { ContentChildren, Directive } from '@angular/core';\n\nimport { BooleanInputConverter } from '../../../decorators';\nimport { OUserInfoConfigurationItemDirective } from '../user-info-configuration-item/o-user-info-configuration-item.directive';\n\nexport const DEFAULT_INPUTS_O_USER_INFO_MENU = [\n  'showProfile: show-profile',\n  'showSettings: show-settings',\n  'showLogout: show-logout',\n];\n\nexport const DEFAULT_OUTPUTS_O_USER_INFO_MENU = [\n];\n\n@Directive({\n  selector: 'o-user-info-configuration',\n  inputs: DEFAULT_INPUTS_O_USER_INFO_MENU,\n  outputs: DEFAULT_OUTPUTS_O_USER_INFO_MENU\n})\nexport class OUserInfoConfigurationDirective {\n\n\n  @ContentChildren(OUserInfoConfigurationItemDirective) userInfoConfigurationItems: Array<OUserInfoConfigurationItemDirective>;\n\n  @BooleanInputConverter()\n  showProfile: boolean = false;\n\n  @BooleanInputConverter()\n  showSettings: boolean = true;\n\n  @BooleanInputConverter()\n  showLogout: boolean = true;\n\n  constructor() { }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OUserInfoComponent } from './o-user-info.component';\nimport { OUserInfoConfigurationItemDirective } from './user-info-configuration-item/o-user-info-configuration-item.directive';\nimport { OUserInfoConfigurationDirective } from './user-info-configuration/o-user-info-configuration.directive';\n\n@NgModule({\n  declarations: [OUserInfoComponent, OUserInfoConfigurationDirective, OUserInfoConfigurationItemDirective],\n  imports: [CommonModule, OSharedModule, RouterModule],\n  exports: [OUserInfoComponent, OUserInfoConfigurationDirective, OUserInfoConfigurationItemDirective]\n})\nexport class OUserInfoModule { }\n","import type { OUserInfoConfigurationDirective } from \"./user-info-configuration/o-user-info-configuration.directive\";\n\nexport abstract class OUserInfoBase{\n\n  abstract registerUserInfoConfiguration(userInfoMenu: OUserInfoConfigurationDirective);\n\n}","import type { OUserInfoBase } from \"../user-info/o-user-info-base.class\";\n\nexport abstract class OAppHeaderBase {\n  abstract userInfo: OUserInfoBase;\n}","import { Component, EventEmitter, Injector, Type, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Observable } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { AuthService } from '../../services';\nimport { DialogService } from '../../services/dialog.service';\nimport { OModulesInfoService } from '../../services/o-modules-info.service';\nimport { Codes } from '../../util/codes';\nimport { OUserInfoBase } from '../user-info/o-user-info-base.class';\nimport { OAppHeaderBase } from './o-app-header-base.class';\n\nexport const DEFAULT_INPUTS_O_APP_HEADER = [\n  'showUserInfo: show-user-info',\n  'showLanguageSelector: show-language-selector',\n  'useFlagIcons: use-flag-icons',\n  'color',\n  'headerHeight:header-height',\n  'showTitle: show-title',\n  'staticTitle: static-title',\n  'showStaticTitle: show-static-title'\n];\n\nexport const DEFAULT_OUTPUTS_O_APP_HEADER = [\n  'onSidenavToggle'\n];\n\n@Component({\n  selector: 'o-app-header',\n  inputs: DEFAULT_INPUTS_O_APP_HEADER,\n  outputs: DEFAULT_OUTPUTS_O_APP_HEADER,\n  templateUrl: './o-app-header.component.html',\n  styleUrls: ['./o-app-header.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-app-header]': 'true',\n    '[class.o-app-header-small]': 'headerHeight===\"small\"',\n    '[class.o-app-header-medium]': 'headerHeight===\"medium\"',\n    '[class.o-app-header-large]': 'headerHeight===\"large\"'\n  },\n  providers: [\n    { provide: OAppHeaderBase, useExisting: forwardRef(() => OAppHeaderComponent) }\n\n  ]\n})\nexport class OAppHeaderComponent {\n\n  protected dialogService: DialogService;\n  protected modulesInfoService: OModulesInfoService;\n  protected authService: AuthService;\n  public showTitle = false;\n  public showStaticTitle = false;\n  public staticTitle: string;\n  public headerTitle$: Observable<string>;\n\n  @ViewChild('userInfo')\n  public userInfo: OUserInfoBase;\n\n  @BooleanInputConverter()\n  showUserInfo: boolean = true;\n  @BooleanInputConverter()\n  showLanguageSelector: boolean = true;\n  @BooleanInputConverter()\n  useFlagIcons: boolean = false;\n\n  public onSidenavToggle = new EventEmitter<void>();\n  protected _headerHeight = Codes.DEFAULT_ROW_HEIGHT;\n\n  set headerHeight(value) {\n    this._headerHeight = value ? value.toLowerCase() : value;\n    if (!Codes.isValidRowHeight(this._headerHeight)) {\n      this._headerHeight = Codes.DEFAULT_ROW_HEIGHT;\n    }\n  }\n\n  get headerHeight(): string {\n    return this._headerHeight;\n  }\n\n  private _color: ThemePalette;\n\n  constructor(\n    protected injector: Injector,\n  ) {\n    this.dialogService = this.injector.get<DialogService>(DialogService as Type<DialogService>);\n    this.modulesInfoService = this.injector.get<OModulesInfoService>(OModulesInfoService as Type<OModulesInfoService>);\n    this.authService = this.injector.get<AuthService>(AuthService as Type<AuthService>);\n  }\n  ngOnInit() {\n    if (!this.showStaticTitle) {\n      this.headerTitle$ = this.modulesInfoService.getModuleChangeObservable();\n    }\n  }\n  onLogoutClick() {\n    this.authService.logoutWithConfirmation();\n  }\n  set color(newValue: ThemePalette) {\n    this._color = newValue;\n  }\n\n  get color(): ThemePalette {\n    return this._color;\n  }\n\n}\n","<nav fxFlex fxLayout=\"row\" fxLayoutAlign=\"space-between stretch\" [ngClass]=\"color ? 'o-app-header-'+color : ''\">\n  <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n    <ng-content></ng-content>\n    <ng-content select=\"o-app-layout-header-projection-start\"></ng-content>\n    <span *ngIf=\"showTitle && !showStaticTitle\" class=\"o-app-header-title\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n      {{ headerTitle$ | async | oTranslate }}\n    </span>\n    <span *ngIf=\"showTitle && showStaticTitle\" class=\"o-app-header-title\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n      {{ staticTitle | oTranslate }}\n    </span>\n    <div fxLayout=\"row\" fxLayoutAlign=\"end stretch\" class=\"o-app-header-default-actions\">\n      <div class=\"layout-header-projection-end\">\n        <ng-content select=\"o-app-layout-header-projection-end\"></ng-content>\n      </div>\n      <o-user-info #userInfo *ngIf=\"showUserInfo\"></o-user-info>\n      <o-language-selector *ngIf=\"showLanguageSelector\" [use-flag-icons]=\"useFlagIcons\"></o-language-selector>\n    </div>\n  </div>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OLanguageSelectorModule } from '../language-selector/o-language-selector.module';\nimport { OUserInfoModule } from '../user-info/o-user-info.module';\nimport { OAppHeaderComponent } from './o-app-header.component';\n\n@NgModule({\n  imports: [CommonModule, OLanguageSelectorModule, OUserInfoModule, OSharedModule],\n  declarations: [OAppHeaderComponent],\n  exports: [OAppHeaderComponent]\n})\nexport class OAppHeaderModule { }\n","import { EventEmitter } from \"@angular/core\";\nimport { MatSidenav } from \"@angular/material/sidenav\";\n\nexport abstract class OAppSidenavBase {\n  abstract onSidenavOpenedChange: EventEmitter<boolean>;\n  abstract sidenav: MatSidenav;\n  abstract onSidenavClosedStart: EventEmitter<void>;\n  abstract onSidenavOpenedStart: EventEmitter<void>;\n}","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Subscription, merge } from 'rxjs';\nimport { OAppSidenavBase } from '../o-app-sidenav-base.class';\n\n\nexport const DEFAULT_INPUTS_O_APP_SIDENAV_IMAGE = [\n  'openedSrc: opened-src',\n  'closedSrc: closed-src'\n];\n\nexport const DEFAULT_OUTPUTS_O_APP_SIDENAV_IMAGE = [];\n\n@Component({\n  selector: 'o-app-sidenav-image',\n  inputs: DEFAULT_INPUTS_O_APP_SIDENAV_IMAGE,\n  outputs: DEFAULT_OUTPUTS_O_APP_SIDENAV_IMAGE,\n  templateUrl: './o-app-sidenav-image.component.html',\n  styleUrls: ['./o-app-sidenav-image.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-app-sidenav-image]': 'true'\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OAppSidenavImageComponent implements OnInit, OnDestroy, OnChanges {\n\n  protected sidenav: OAppSidenavBase;\n  public openedSrc: string;\n  public closedSrc: string;\n  private _src: string;\n\n  protected subscription = new Subscription();\n\n  constructor(\n    protected injector: Injector,\n    protected cd: ChangeDetectorRef\n  ) {\n    this.sidenav = this.injector.get(OAppSidenavBase);\n  }\n\n  ngOnInit() {\n    if (this.sidenav) {\n      this.subscription.add(merge(this.sidenav.onSidenavClosedStart, this.sidenav.onSidenavOpenedStart).subscribe(() => this.updateImage()));\n    }\n    this.updateImage();\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.openedSrc || changes.closedSrc) {\n      this.updateImage();\n    }\n  }\n\n  updateImage() {\n    if (this.sidenav && this.sidenav.sidenav && this.sidenav.sidenav.opened) {\n      this.setOpenedImg();\n    } else {\n      this.setClosedImg();\n    }\n    this.cd.detectChanges();\n  }\n\n  set src(val: string) {\n    this._src = val;\n  }\n\n  get src() {\n    return this._src;\n  }\n\n  setOpenedImg() {\n    this.src = this.openedSrc;\n  }\n\n  setClosedImg() {\n    this.src = this.closedSrc;\n  }\n\n  get showImage(): boolean {\n    return (this._src !== undefined && this._src.length > 0);\n  }\n\n}\n","<div class=\"o-app-sidenav-image-container\" *ngIf=\"showImage\">\n  <img class=\"o-app-sidenav-image\" [src]=\"src\" alt=\"application sidenav image\" />\n</div>\n","export abstract class OAppLayoutBase{\n  abstract useFlagIcons: boolean;F\n}","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Injector,\n  OnDestroy,\n  OnInit,\n  Type,\n  ViewEncapsulation\n} from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { MenuItemAction, MenuItemLocale, MenuItemLogout, MenuItemRoute, MenuItemUserInfo } from '../../../interfaces/app-menu.interface';\nimport { AppMenuService } from '../../../services/app-menu.service';\nimport { AuthService } from '../../../services/auth.service';\nimport { DialogService } from '../../../services/dialog.service';\nimport { OUserInfoService } from '../../../services/o-user-info.service';\nimport { PermissionsService } from '../../../services/permissions/permissions.service';\nimport { OTranslateService } from '../../../services/translate/o-translate.service';\nimport { OPermissions } from '../../../types/o-permissions.type';\nimport { PermissionsUtils } from '../../../util/permissions';\nimport { Util } from '../../../util/util';\nimport { OAppSidenavBase } from '../o-app-sidenav-base.class';\nimport { OAppLayoutBase } from '../../../layouts/app-layout/o-app-layout-base.class';\n\nexport const DEFAULT_INPUTS_O_APP_SIDENAV_MENU_ITEM = [\n  'menuItem : menu-item',\n  'menuItemType : menu-item-type',\n  'sidenavOpened : sidenav-opened',\n  'disabled'\n];\n\nexport const DEFAULT_OUTPUTS_O_APP_SIDENAV_MENU_ITEM = [\n  'onClick'\n];\n\n@Component({\n  selector: 'o-app-sidenav-menu-item',\n  inputs: DEFAULT_INPUTS_O_APP_SIDENAV_MENU_ITEM,\n  outputs: DEFAULT_OUTPUTS_O_APP_SIDENAV_MENU_ITEM,\n  templateUrl: './o-app-sidenav-menu-item.component.html',\n  styleUrls: ['./o-app-sidenav-menu-item.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class]': 'getClass()',\n    '[attr.disabled]': 'disabled'\n  }\n})\nexport class OAppSidenavMenuItemComponent implements OnInit, AfterViewInit, OnDestroy {\n\n  public onClick: EventEmitter<any> = new EventEmitter<any>();\n\n  protected translateService: OTranslateService;\n  protected authService: AuthService;\n  protected dialogService: DialogService;\n  protected permissionsService: PermissionsService;\n  protected oUserInfoService: OUserInfoService;\n  protected appMenuService: AppMenuService;\n  protected userInfoSubscription: Subscription;\n\n  protected sidenav: OAppSidenavBase;\n  protected router: Router;\n\n  menuItem: any; // TODO MenuRootItem;\n  menuItemType: string;\n  @BooleanInputConverter()\n  sidenavOpened: boolean = true;\n  @BooleanInputConverter()\n  disabled: boolean = false;\n\n  protected appSidenavToggleSubscription: Subscription = new Subscription();\n  protected routerSubscription: Subscription;\n  protected oAppLayoutComponent: OAppLayoutBase;\n\n  protected permissions: OPermissions;\n  protected mutationObserver: MutationObserver;\n\n  hidden: boolean;\n  active: boolean;\n\n  constructor(\n    protected injector: Injector,\n    protected elRef: ElementRef,\n    protected cd: ChangeDetectorRef\n  ) {\n    this.translateService = this.injector.get<OTranslateService>(OTranslateService as Type<OTranslateService>);\n    this.authService = this.injector.get<AuthService>(AuthService as Type<AuthService>);\n    this.dialogService = this.injector.get<DialogService>(DialogService as Type<DialogService>);\n    this.permissionsService = this.injector.get<PermissionsService>(PermissionsService as Type<PermissionsService>);\n    this.oUserInfoService = this.injector.get<OUserInfoService>(OUserInfoService as Type<OUserInfoService>);\n    this.sidenav = this.injector.get<OAppSidenavBase>(OAppSidenavBase as Type<OAppSidenavBase>);\n    this.oAppLayoutComponent = this.injector.get<OAppLayoutBase>(OAppLayoutBase as Type<OAppLayoutBase>);\n    this.router = this.injector.get<Router>(Router as Type<Router>);\n    this.appMenuService = this.injector.get<AppMenuService>(AppMenuService as Type<AppMenuService>);\n\n    this.routerSubscription = this.router.events.subscribe((event) => {\n      if (event instanceof NavigationEnd && this.appMenuService.isRouteItem(this.menuItem)) {\n        this.active = this.appMenuService.isItemActive(this.menuItem as MenuItemRoute);\n        this.cd.detectChanges();\n      }\n    });\n  }\n\n  ngOnInit() {\n    this.parsePermissions();\n    this.active = this.appMenuService.isItemActive(this.menuItem as MenuItemRoute);\n  }\n\n  ngAfterViewInit() {\n    if (this.isUserInfoItem() && this.sidenav) {\n      this.setUserInfoImage();\n      this.appSidenavToggleSubscription.add(this.sidenav.onSidenavOpenedChange.subscribe(() => {\n        if (this.sidenav.sidenav.opened) {\n          this.setUserInfoImage();\n          this.setUserInfoImage();\n        }\n      }));\n      this.userInfoSubscription = this.oUserInfoService.getUserInfoObservable().subscribe(res => {\n        if (Util.isDefined(res.avatar) && this.sidenav.sidenav.opened) {\n          (this.menuItem as MenuItemUserInfo).avatar = res.avatar;\n          this.setUserInfoImage();\n        }\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.appSidenavToggleSubscription) {\n      this.appSidenavToggleSubscription.unsubscribe();\n    }\n    if (this.routerSubscription) {\n      this.routerSubscription.unsubscribe();\n    }\n    if (this.mutationObserver) {\n      this.mutationObserver.disconnect();\n    }\n    if (this.userInfoSubscription) {\n      this.userInfoSubscription.unsubscribe();\n    }\n  }\n\n  protected parsePermissions() {\n    // if oattr in form, it can have permissions\n    this.permissions = this.permissionsService.getMenuPermissions(this.menuItem.id);\n    if (!Util.isDefined(this.permissions)) {\n      return;\n    }\n    this.hidden = this.permissions.visible === false;\n    if (!this.disabled) {\n      // if the disabled input is true it means that its parent is disabled using permissions\n      this.disabled = this.permissions.enabled === false;\n    }\n\n    if (this.disabled) {\n      this.mutationObserver = PermissionsUtils.registerDisabledChangesInDom(this.elRef.nativeElement, {\n        checkStringValue: true\n      });\n    }\n  }\n\n  public setUserInfoImage() {\n    const imgEl = this.elRef.nativeElement.getElementsByClassName('o-user-info-image')[0];\n    if (imgEl !== undefined) {\n      const item = this.menuItem as MenuItemUserInfo;\n      imgEl.setAttribute('style', 'background-image: url(\\'' + item.avatar + '\\')');\n    }\n    this.cd.detectChanges();\n  }\n\n  executeItemAction() {\n    const actionItem = (this.menuItem as MenuItemAction);\n    if (Util.parseBoolean(actionItem.confirm, false)) {\n      this.dialogService.confirm('CONFIRM', actionItem.confirmText || 'MESSAGES.CONFIRM_ACTION').then(result => result ? actionItem.action() : null);\n    } else {\n      actionItem.action();\n    }\n  }\n\n  configureI18n() {\n    const localeItem = (this.menuItem as MenuItemLocale);\n    if (this.isConfiguredLang()) {\n      return;\n    }\n    if (this.translateService) {\n      this.translateService.use(localeItem.locale);\n    }\n  }\n\n  isConfiguredLang() {\n    const localeItem = (this.menuItem as MenuItemLocale);\n    if (this.translateService) {\n      return (this.translateService.getCurrentLang() === localeItem.locale);\n    }\n    return false;\n  }\n\n  logout() {\n    const menuItem = (this.menuItem as MenuItemLogout);\n    if (Util.parseBoolean(menuItem.confirm, true)) {\n      this.authService.logoutWithConfirmation();\n    } else {\n      this.authService.logout();\n    }\n  }\n\n  navigate() {\n    const route = (this.menuItem as MenuItemRoute).route;\n    if (this.router.url !== route) {\n      this.router.navigate([route]);\n    }\n  }\n\n  triggerClick(e: Event) {\n    if (this.disabled) {\n      return;\n    }\n    this.appMenuService.onClick.next();\n\n    switch (this.menuItemType) {\n      case 'action':\n        this.executeItemAction();\n        break;\n      case 'locale':\n        this.configureI18n();\n        break;\n      case 'logout':\n        this.logout();\n        break;\n      default:\n        if (this.appMenuService.isRouteItem(this.menuItem)) {\n          this.navigate();\n        }\n        break;\n    }\n    this.onClick.emit(e);\n  }\n\n\n\n  isActionItem(): boolean {\n    return this.menuItemType === 'action';\n  }\n\n  isLocaleItem(): boolean {\n    return this.menuItemType === 'locale';\n  }\n\n  isLogoutItem(): boolean {\n    return this.menuItemType === 'logout';\n  }\n\n  isUserInfoItem(): boolean {\n    return this.menuItemType === 'user-info';\n  }\n\n  isDefaultItem(): boolean {\n    return this.menuItemType === 'default';\n  }\n\n  get useFlagIcons(): boolean {\n    return this.oAppLayoutComponent && this.oAppLayoutComponent.useFlagIcons;\n  }\n\n  get tooltip(): string {\n    let result = this.translateService.get(this.menuItem.name);\n    if (Util.isDefined(this.menuItem.tooltip)) {\n      result += ': ' + this.translateService.get(this.menuItem.tooltip);\n    }\n    return result;\n  }\n\n  getClass() {\n    let className = 'o-app-sidenav-menu-item';\n    if (this.menuItem.class) {\n      className += ' ' + this.menuItem.class;\n    }\n    return className;\n  }\n\n}\n","<ng-container *ngIf=\"sidenavOpened\">\n  <li *ngIf=\"!hidden\" class=\"o-app-sidenav-menuitem o-app-sidenav-item\" [class.o-user-info]=\"isUserInfoItem()\">\n\n    <a mat-button *ngIf=\"!isUserInfoItem() && !isLocaleItem()\" (click)=\"triggerClick($event)\"\n      [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n      <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n        <mat-icon *ngIf=\"menuItem.svgIcon\" [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n        <mat-icon *ngIf=\"menuItem.icon\">{{ menuItem.icon }}</mat-icon>\n        <span class=\"o-app-sidenav-menuitem-title\">{{ menuItem.name | oTranslate }}</span>\n      </div>\n    </a>\n\n    <a mat-button *ngIf=\"isLocaleItem()\" (click)=\"triggerClick($event)\">\n      <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n        <mat-icon *ngIf=\"menuItem.svgIcon\" [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n        <mat-icon *ngIf=\"menuItem.icon\">{{ menuItem.icon }}</mat-icon>\n        {{ menuItem.name | oTranslate }}\n        <mat-icon *ngIf=\"isConfiguredLang()\" class=\"configured-lang\">check_circle</mat-icon>\n      </div>\n    </a>\n\n    <div *ngIf=\"isUserInfoItem()\" fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"o-user-info-menu-item\">\n      <div class=\"o-user-info-image\" fxFlexFill></div>\n      <div class=\"o-user-info-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxFlexFill>\n        <div class=\"o-user-info-name\">{{ menuItem.user }} </div>\n        <o-language-selector [use-flag-icons]=\"useFlagIcons\"></o-language-selector>\n      </div>\n    </div>\n  </li>\n</ng-container>\n\n<ng-container *ngIf=\"!sidenavOpened\">\n  <li *ngIf=\"!hidden\" class=\"o-app-sidenav-menuitem o-app-sidenav-item\">\n    <a [matTooltip]=\"tooltip\" matTooltipClass=\"menuitem-tooltip\" matTooltipPosition=\"right\" mat-button (click)=\"triggerClick($event)\"\n      [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n      <mat-icon *ngIf=\"menuItem.svgIcon\" [svgIcon]=\"menuItem.svgIcon\"></mat-icon>\n      <mat-icon *ngIf=\"menuItem.icon\">{{ menuItem.icon }}</mat-icon>\n    </a>\n  </li>\n</ng-container>\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Injector,\n  OnDestroy,\n  OnInit,\n  Type,\n  ViewEncapsulation\n} from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter, NumberInputConverter } from '../../../decorators/input-converter';\nimport { MenuGroup, MenuGroupRoute } from '../../../interfaces/app-menu.interface';\nimport { AppMenuService } from '../../../services/app-menu.service';\nimport { PermissionsService } from '../../../services/permissions/permissions.service';\nimport { OTranslateService } from '../../../services/translate/o-translate.service';\nimport { OPermissions } from '../../../types/o-permissions.type';\nimport { PermissionsUtils } from '../../../util/permissions';\nimport { Util } from '../../../util/util';\nimport { OAppSidenavBase } from '../o-app-sidenav-base.class';\n\nexport const DEFAULT_INPUTS_O_APP_SIDENAV_MENU_GROUP = [\n  'menuGroup : menu-group',\n  'sidenavOpened : sidenav-opened',\n  'level'\n];\n\nexport const DEFAULT_OUTPUTS_O_APP_SIDENAV_MENU_GROUP = [\n  'onItemClick'\n];\n\n@Component({\n  selector: 'o-app-sidenav-menu-group',\n  inputs: DEFAULT_INPUTS_O_APP_SIDENAV_MENU_GROUP,\n  outputs: DEFAULT_OUTPUTS_O_APP_SIDENAV_MENU_GROUP,\n  templateUrl: './o-app-sidenav-menu-group.component.html',\n  styleUrls: ['./o-app-sidenav-menu-group.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  animations: [\n    trigger('contentExpansion', [\n      state('collapsed', style({ height: '0px' })),\n      state('expanded', style({ height: '*' })),\n      transition('collapsed => expanded', animate('200ms ease-in')),\n      transition('expanded => collapsed', animate('200ms ease-out'))\n    ])\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class]': 'getClass()',\n    '[attr.disabled]': 'disabled'\n  }\n})\nexport class OAppSidenavMenuGroupComponent implements OnInit, AfterViewInit, OnDestroy {\n\n  public onItemClick: EventEmitter<any> = new EventEmitter<any>();\n  public onClickEvent: EventEmitter<any> = new EventEmitter<any>();\n\n  protected translateService: OTranslateService;\n  protected permissionsService: PermissionsService;\n\n  public appMenuService: AppMenuService;\n  public sidenav: OAppSidenavBase;\n  protected sidenavSubscription: Subscription = new Subscription();\n  protected permissions: OPermissions;\n  protected mutationObserver: MutationObserver;\n\n  public menuGroup: (MenuGroup | MenuGroupRoute);\n\n  @BooleanInputConverter()\n  sidenavOpened: boolean = true;\n\n  @NumberInputConverter()\n  level: number = 1;\n\n  hidden: boolean;\n  disabled: boolean;\n  protected _contentExpansion;\n  protected router: Router;\n  routerSubscription: Subscription;\n  active: boolean;\n\n  constructor(\n    protected injector: Injector,\n    protected elRef: ElementRef,\n    protected cd: ChangeDetectorRef\n  ) {\n    this.translateService = this.injector.get(OTranslateService);\n    this.appMenuService = this.injector.get(AppMenuService);\n    this.permissionsService = this.injector.get(PermissionsService);\n    this.sidenav = this.injector.get(OAppSidenavBase);\n    this.router = this.injector.get<Router>(Router as Type<Router>);\n    this.routerSubscription = this.router.events.subscribe((event) => {\n      if (event instanceof NavigationEnd && this.appMenuService.isRouteItem(this.menuGroup)) {\n        this.active = this.appMenuService.isItemActive(this.menuGroup as MenuGroupRoute);\n        this.cd.detectChanges();\n      }\n    });\n  }\n\n  ngOnInit() {\n    this.parsePermissions();\n  }\n\n  ngAfterViewInit() {\n    if (this.menuGroup.id === 'user-info' && this.sidenav) {\n      const self = this;\n      this.sidenavSubscription.add(this.sidenav.onSidenavOpenedChange.subscribe((opened) => {\n        self.disabled = ((!opened && Util.isDefined(opened)) || (Util.isDefined(self.permissions) && self.permissions && self.permissions.enabled === false));\n        self.updateContentExpansion();\n        self.cd.markForCheck();\n      }));\n    }\n    this.updateContentExpansion();\n  }\n\n  ngOnDestroy() {\n    if (this.sidenavSubscription) {\n      this.sidenavSubscription.unsubscribe();\n    }\n\n    if (this.routerSubscription) {\n      this.routerSubscription.unsubscribe();\n    }\n  }\n\n  protected parsePermissions() {\n    // if oattr in form, it can have permissions\n    this.permissions = this.permissionsService.getMenuPermissions(this.menuGroup.id);\n    if (!Util.isDefined(this.permissions)) {\n      return;\n    }\n    this.hidden = this.permissions.visible === false;\n    this.disabled = this.permissions.enabled === false;\n\n    if (this.disabled) {\n      this.mutationObserver = PermissionsUtils.registerDisabledChangesInDom(this.elRef.nativeElement, {\n        checkStringValue: true\n      });\n    }\n  }\n\n  onClick() {\n    if (this.disabled) {\n      return;\n    }\n    if (this.appMenuService.isMenuGroup(this.menuGroup) ||\n      this.appMenuService.isMenuGroupRoute(this.menuGroup) && (!this.menuGroup.opened)) {\n      this.toggle();\n    }\n    this.navigate();\n  }\n\n  toggle(event?: Event): void {\n    if (event) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n    this.menuGroup.opened = !this.menuGroup.opened;\n    this.appMenuService.onClick.next();\n    this.updateContentExpansion();\n  }\n\n  navigate() {\n    if (this.appMenuService.isMenuGroupRoute(this.menuGroup)) {\n      const route = (this.menuGroup as MenuGroupRoute).route;\n      if (this.router.url !== route) {\n        this.router.navigate([route]);\n      }\n    }\n  }\n\n  updateContentExpansion() {\n    let isOpened = this.menuGroup && this.menuGroup.opened;\n    if (this.menuGroup.id === 'user-info') {\n      isOpened = (this.sidenav && this.sidenav.sidenav && this.sidenav.sidenav.opened) && isOpened;\n    }\n    this.contentExpansion = isOpened ? 'expanded' : 'collapsed';\n  }\n\n  get contentExpansion(): string {\n    return this._contentExpansion;\n  }\n\n  set contentExpansion(val: string) {\n    this._contentExpansion = val;\n    this.cd.detectChanges();\n  }\n\n  get tooltip() {\n    let result = this.translateService.get(this.menuGroup.name);\n    if (Util.isDefined(this.menuGroup.tooltip)) {\n      result += ': ' + this.translateService.get(this.menuGroup.tooltip);\n    }\n    return result;\n  }\n\n  onMenuItemClick(e: Event): void {\n    this.onItemClick.emit(e);\n  }\n\n  getClass() {\n    let className = 'o-app-sidenav-menu-group o-app-sidenav-menu-group-level-' + this.level;\n    if (this.menuGroup.class) {\n      className += ' ' + this.menuGroup.class;\n    }\n    return className;\n  }\n\n}\n","<ng-container *ngIf=\"!hidden\">\n  <a mat-button mat-button class=\"o-app-sidenav-item o-app-sidenav-menugroup\" [class.opened]=\"menuGroup.opened\" (click)=\"onClick()\"\n    [class.o-app-sidenav-viewer-sidenav-item-selected]=\"active\">\n    <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill>\n      <ng-container *ngIf=\"sidenavOpened\">\n        <mat-icon *ngIf=\"menuGroup.svgIcon\" [svgIcon]=\"menuGroup.svgIcon\"></mat-icon>\n        <mat-icon *ngIf=\"menuGroup.icon\">{{ menuGroup.icon }}</mat-icon>\n        <span class=\"o-app-sidenav-menugroup-title\">{{ menuGroup.name | oTranslate }}</span>\n        <span class=\"fill-remaining\"></span>\n        <ng-container *ngIf=\"appMenuService.isMenuGroupRoute(menuGroup) && menuGroup.opened; else arrowMenuGroupTemplate\">\n          <mat-icon class=\"o-app-sidenav-menugroup-arrow\" svgIcon=\"ontimize:keyboard_arrow_right\" (click)=\"toggle($event)\"></mat-icon>\n        </ng-container>\n        <ng-template #arrowMenuGroupTemplate>\n          <mat-icon class=\"o-app-sidenav-menugroup-arrow\" svgIcon=\"ontimize:keyboard_arrow_right\"></mat-icon>\n        </ng-template>\n      </ng-container>\n      <ng-container *ngIf=\"!sidenavOpened\">\n        <mat-icon [matTooltip]=\"tooltip\" matTooltipClass=\"menugroup-tooltip\" matTooltipPosition=\"right\" *ngIf=\"menuGroup.svgIcon\"\n          [svgIcon]=\"menuGroup.svgIcon\"></mat-icon>\n        <mat-icon [matTooltip]=\"tooltip\" matTooltipClass=\"menugroup-tooltip\" matTooltipPosition=\"right\" *ngIf=\"menuGroup.icon\">{{\n          menuGroup.icon }}</mat-icon>\n      </ng-container>\n    </div>\n  </a>\n\n  <div class=\"o-app-sidenav-menugroup-items-container\">\n    <ul [@contentExpansion]=\"contentExpansion\" class=\"o-app-sidenav-menugroup-ul\">\n      <ng-container *ngFor=\"let menuItem of menuGroup.items\">\n        <ng-container *ngIf=\"appMenuService.isVisible(menuItem)\">\n          <o-app-sidenav-menu-item [sidenav-opened]=\"sidenavOpened\" *ngIf=\"!menuItem.items; else menuGroup\" [disabled]=\"disabled\"\n            [menu-item]=\"menuItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuItem)\" (onClick)=\"onMenuItemClick($event)\">\n          </o-app-sidenav-menu-item>\n          <ng-template #menuGroup>\n            <o-app-sidenav-menu-group [menu-group]=\"menuItem\" [sidenav-opened]=\"sidenavOpened\" [level]=\"level + 1\"\n              *ngIf=\"appMenuService.getMenuItemType(menuItem) === 'group'\" (onItemClick)=\"onMenuItemClick($event)\">\n            </o-app-sidenav-menu-group>\n          </ng-template>\n        </ng-container>\n      </ng-container>\n    </ul>\n  </div>\n</ng-container>\n","import { DefaultComponentStateClass } from './o-component-state.class';\n\nexport class OAppSidenavComponentStateClass extends DefaultComponentStateClass {\n\n  menu: { id: string, opened: boolean }[];\n}\n","import { Injectable } from '@angular/core';\n\nimport { OAppSidenavComponent } from '../../components/app-sidenav/o-app-sidenav.component';\nimport { OAppSidenavComponentStateClass } from './o-app-menu-component-state.class';\nimport { AbstractComponentStateService } from './o-component-state.service';\nimport { MenuGroup } from '../../interfaces/app-menu.interface';\n\n@Injectable()\nexport class OAppSidenavComponentStateService extends AbstractComponentStateService<OAppSidenavComponentStateClass, OAppSidenavComponent> {\n\n\n  initialize(component: OAppSidenavComponent) {\n    this.state = new OAppSidenavComponentStateClass();\n    super.initialize(component);\n  }\n\n  initializeState(state: OAppSidenavComponentStateClass) {\n    super.initializeState(state);\n  }\n\n  storeMenu() {\n    let menuState = this.component.menuRootArray\n      .filter((group: MenuGroup) => group.opened !== undefined)\n      .reduce((acc: { id: string, opened: boolean }[], group: MenuGroup) => {\n        acc.push({ id: group.id, opened: group.opened });\n        return acc;\n      }, []);\n\n    this.state.menu = menuState;\n    this.localStorageService.updateComponentStorage(this.component, this.component.getRouteKey());\n  }\n\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Injector,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { MediaObserver } from '@angular/flex-layout';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { MenuGroup, MenuItemUserInfo } from '../../interfaces/app-menu.interface';\nimport { AppMenuService } from '../../services/app-menu.service';\nimport { OUserInfoService, UserInfo } from '../../services/o-user-info.service';\nimport { OAppSidenavComponentStateService } from '../../services/state/o-app-menu-component-state.service';\nimport { MenuRootItem } from '../../types/menu-root-item.type';\nimport { Codes, OAppLayoutMode, OSidenavMode } from '../../util/codes';\nimport { Util } from '../../util/util';\nimport { OAppSidenavBase } from './o-app-sidenav-base.class';\n\nexport const DEFAULT_INPUTS_O_APP_SIDENAV = [\n  'opened',\n  'showUserInfo: show-user-info',\n  'showToggleButton: show-toggle-button',\n  'openedSidenavImg: opened-sidenav-image',\n  'closedSidenavImg: closed-sidenav-image',\n  'layoutMode: layout-mode',\n  'sidenavMode: sidenav-mode',\n  'storeState: store-state'\n];\n\nexport const DEFAULT_OUTPUTS_O_APP_SIDENAV = [\n  'onSidenavOpenedChange',\n  'onSidenavOpenedStart',\n  'onSidenavClosedStart',\n  'onSidenavToggle',\n  'afterSidenavToggle'\n];\n\n@Component({\n  selector: 'o-app-sidenav',\n  inputs: DEFAULT_INPUTS_O_APP_SIDENAV,\n  outputs: DEFAULT_OUTPUTS_O_APP_SIDENAV,\n  templateUrl: './o-app-sidenav.component.html',\n  styleUrls: ['./o-app-sidenav.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-app-sidenav]': 'true'\n  },\n  providers: [\n    { provide: OAppSidenavBase, useExisting: forwardRef(() => OAppSidenavComponent) }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OAppSidenavComponent extends OAppSidenavComponentStateService implements OnInit, OnDestroy, AfterViewInit {\n\n  @ViewChild(MatSidenav)\n  sidenav: MatSidenav;\n\n  protected routerSubscription: Subscription;\n  appMenuService: AppMenuService;\n  menuRootArray: MenuRootItem[] = [];\n  protected _layoutMode: OAppLayoutMode = Codes.APP_LAYOUT_MODE_DESKTOP;\n  protected _sidenavMode: OSidenavMode;\n  @BooleanInputConverter()\n  protected opened: boolean = true;\n  _showUserInfo: boolean = true;\n  _showToggleButton: boolean = true;\n  openedSidenavImg: string;\n  closedSidenavImg: string;\n\n  onSidenavOpenedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n  onSidenavOpenedStart: EventEmitter<void> = new EventEmitter<void>();\n  onSidenavClosedStart: EventEmitter<void> = new EventEmitter<void>();\n  onSidenavToggle: EventEmitter<boolean> = new EventEmitter<boolean>();\n  afterSidenavToggle: EventEmitter<boolean> = new EventEmitter<boolean>();\n  protected oUserInfoService: OUserInfoService;\n  protected userInfoSubscription: Subscription;\n  protected permissionSubscription: Subscription;\n  protected userInfo: UserInfo;\n\n  protected mediaWatch: Subscription;\n  protected manuallyClosed: boolean = false;\n  onRouteChangeStorageSubscription: Subscription;\n  storeState: boolean = true;\n\n  constructor(\n    protected injector: Injector,\n    protected router: Router,\n    protected elRef: ElementRef,\n    protected cd: ChangeDetectorRef,\n    protected media: MediaObserver\n  ) {\n    super(injector);\n    this.appMenuService = this.injector.get(AppMenuService);\n    this.menuRootArray = this.appMenuService.getMenuRoots();\n    this.permissionSubscription = this.appMenuService.onPermissionMenuChanged.subscribe(() => this.refreshMenuRoots());\n    this.oUserInfoService = this.injector.get(OUserInfoService);\n    const self = this;\n    this.mediaWatch = this.media.asObservable().subscribe(() => {\n      if (self.isScreenSmall() && self.sidenav) {\n        self.sidenav.close();\n      }\n    });\n    this.registerLocalStorageServiceRouteChange();\n  }\n  ngOnInit() {\n    this.routerSubscription = this.router.events.subscribe(() => {\n      if (this.isScreenSmall()) {\n        this.sidenav.close();\n      }\n    });\n\n    this.initialize(this);\n    this.restoreMenuGroupState();\n  }\n\n  ngAfterViewInit() {\n    if (this.showUserInfo && this.showToggleButton) {\n      this.userInfo = this.oUserInfoService.getUserInfo();\n      this.userInfoSubscription = this.oUserInfoService.getUserInfoObservable().subscribe(res => {\n        this.userInfo = res;\n        this.refreshMenuItemUserInfo();\n      });\n    }\n    this.refreshMenuItemUserInfo();\n  }\n\n  getDataToStore(): any {\n    return this.state;\n\n  }\n\n  restoreMenuGroupState(): void {\n    if (this.localStorageService && this.storeState) {\n      let menuState: { id: string, opened: boolean }[] = this.state.menu ?? [];\n\n      this.menuRootArray.forEach((group: MenuGroup) => {\n        const savedState = menuState.find(menuOption => menuOption.id === group.id);\n        if (savedState) {\n          group.opened = savedState.opened;\n        }\n      });\n    }\n  }\n\n  getComponentKey(): string {\n    return 'OAppSidenavComponent';\n  }\n\n  getRouteKey(): string {\n    return undefined;\n  }\n\n  @HostListener('window:beforeunload', [])\n  beforeunloadHandler() {\n    this.updateStateStorage();\n  }\n\n  protected registerLocalStorageServiceRouteChange() {\n    if (this.storeState) {\n      this.onRouteChangeStorageSubscription = this.localStorageService.onRouteChange.subscribe(res => {\n        this.updateStateStorage();\n      });\n    }\n  }\n\n  protected updateStateStorage(): void {\n    if (this.localStorageService && this.storeState) {\n      this.storeMenu();\n    }\n  }\n\n  refreshMenuRoots(): void {\n    this.menuRootArray = [...this.appMenuService.getMenuRoots()];\n    this.cd.detectChanges();\n  }\n\n  @HostListener('window:resize', [])\n  onResize() {\n    if (!this.manuallyClosed && !this.isScreenSmall() && !this.isMobileMode()) {\n      this.sidenav.open();\n    }\n  }\n\n\n  get layoutMode(): OAppLayoutMode {\n    return this._layoutMode;\n  }\n\n  set layoutMode(val: OAppLayoutMode) {\n    const m = Codes.OAppLayoutModes.find(e => e === val);\n    if (Util.isDefined(m)) {\n      this._layoutMode = m;\n    }\n  }\n\n  get sidenavMode(): OSidenavMode {\n    return this._sidenavMode;\n  }\n\n  set sidenavMode(val: OSidenavMode) {\n    const m = Codes.OSidenavModes.find(e => e === val);\n    if (Util.isDefined(m)) {\n      this._sidenavMode = m;\n    }\n  }\n\n  protected refreshMenuItemUserInfo() {\n    if (this.showUserInfo && this.userInfo && this._showToggleButton) {\n      const firstRoot = this.menuRootArray[0];\n      const alreadyExistsUserInfo = firstRoot ? firstRoot.id === 'user-info' : false;\n      if (alreadyExistsUserInfo) {\n        const userInfoItem: MenuItemUserInfo = (this.menuRootArray[0] as MenuGroup).items[0] as MenuItemUserInfo;\n        userInfoItem.id = this.userInfo.username;\n        userInfoItem.name = this.userInfo.username;\n        userInfoItem.user = this.userInfo.username;\n        userInfoItem.avatar = this.userInfo.avatar;\n      } else {\n        const userInfoItem: MenuItemUserInfo = {\n          id: this.userInfo.username,\n          name: this.userInfo.username,\n          user: this.userInfo.username,\n          avatar: this.userInfo.avatar\n        };\n        const menuGroupUserInfo: MenuGroup = {\n          id: 'user-info',\n          name: 'APP_LAYOUT.USER_PROFILE',\n          items: [userInfoItem],\n          opened: true,\n          icon: 'person_pin'\n        };\n        this.menuRootArray.unshift(menuGroupUserInfo);\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.routerSubscription) {\n      this.routerSubscription.unsubscribe();\n    }\n\n    if (this.userInfoSubscription) {\n      this.userInfoSubscription.unsubscribe();\n    }\n\n    if (this.permissionSubscription) {\n      this.permissionSubscription.unsubscribe();\n    }\n  }\n\n  isScreenSmall(): boolean {\n    return !this.manuallyClosed && this.media.isActive('lt-sm');\n  }\n\n  isMobileMode(): boolean {\n    return this._layoutMode === Codes.APP_LAYOUT_MODE_MOBILE;\n  }\n\n  isDesktopMode(): boolean {\n    return this._layoutMode === Codes.APP_LAYOUT_MODE_DESKTOP;\n  }\n\n  isSidenavOpened(): boolean {\n    return this.opened && !this.isMobileMode() && !this.isScreenSmall();\n  }\n\n  toggleSidenav() {\n    const promise = this.sidenav.opened ? this.sidenav.close() : this.sidenav.open();\n    const self = this;\n    promise.then(() => {\n      self.afterSidenavToggle.emit(self.sidenav.opened);\n    });\n    this.cd.detectChanges();\n    this.opened = this.sidenav.opened;\n    this.manuallyClosed = !this.opened;\n    this.onSidenavToggle.emit(this.sidenav.opened);\n  }\n\n  get showUserInfo(): boolean {\n    return this._showUserInfo;\n  }\n\n  set showUserInfo(arg: boolean) {\n    this._showUserInfo = arg;\n  }\n\n  get showToggleButton(): boolean {\n    return this._showToggleButton;\n  }\n\n  set showToggleButton(arg: boolean) {\n    this._showToggleButton = arg;\n  }\n\n  onMenuItemClick(): void {\n    if (this.isMobileMode()) {\n      this.sidenav.close();\n    }\n  }\n\n  sidenavClosedStart() {\n    this.onSidenavClosedStart.emit();\n  }\n\n  sidenavOpenedStart() {\n    this.onSidenavOpenedStart.emit();\n  }\n\n  sidenavOpenedChange() {\n    this.onSidenavOpenedChange.emit();\n  }\n}\n\n","<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n  [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n  [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n  <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n    [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n    [class.mat-drawer-closed]=\"!sidenav.opened\" fxLayoutAlign=\"start stretch\" (openedChange)=\"sidenavOpenedChange()\"\n    (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n    <div fxFlex fxLayout=\"column\">\n      <div fxLayout=\"row\" fxLayoutAlign=\"end center\" class=\"sidenav-toggle-container\" *ngIf=\"isDesktopMode()\">\n        <mat-icon class=\"sidenav-toggle\" (click)=\"toggleSidenav()\" svgIcon=\"ontimize:menu\">menu</mat-icon>\n      </div>\n\n      <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n      <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n      <div class=\"navMenu\">\n        <nav *ngFor=\"let menuRootItem of menuRootArray\">\n\n          <ul *ngIf=\"appMenuService.getMenuItemType(menuRootItem) !== 'group' && appMenuService.isVisible(menuRootItem)\">\n            <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n              [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n            </o-app-sidenav-menu-item>\n          </ul>\n\n          <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n            *ngIf=\"appMenuService.getMenuItemType(menuRootItem) === 'group' && appMenuService.isVisible(menuRootItem)\"\n            (onItemClick)=\"onMenuItemClick()\">\n          </o-app-sidenav-menu-group>\n\n        </nav>\n      </div>\n      <div class=\"layout-sidenav-projection-end\">\n        <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n      </div>\n    </div>\n  </mat-sidenav>\n\n  <mat-sidenav-content class=\"o-app-sidenav-content\">\n    <ng-content></ng-content>\n  </mat-sidenav-content>\n</mat-sidenav-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OLanguageSelectorModule } from '../language-selector/o-language-selector.module';\nimport { OAppSidenavImageComponent } from './image/o-app-sidenav-image.component';\nimport { OAppSidenavMenuGroupComponent } from './menu-group/o-app-sidenav-menu-group.component';\nimport { OAppSidenavMenuItemComponent } from './menu-item/o-app-sidenav-menu-item.component';\nimport { OAppSidenavComponent } from './o-app-sidenav.component';\n\n@NgModule({\n    imports: [CommonModule, OSharedModule, RouterModule, OLanguageSelectorModule],\n    declarations: [\n        OAppSidenavComponent,\n        OAppSidenavMenuGroupComponent,\n        OAppSidenavImageComponent,\n        OAppSidenavMenuItemComponent\n    ],\n    exports: [OAppSidenavComponent]\n})\nexport class OAppSidenavModule { }\n","import { Component } from '@angular/core';\nexport const DEFAULT_INPUTS_O_APP_LAYOUT_HEADER = [\n  'position'\n];\n@Component({\n  selector: 'o-app-layout-header',\n  templateUrl: './o-app-layout-header.component.html',\n})\nexport class OAppLayoutHeaderComponent {\n  position: 'start' | 'end' = 'start';\n}\n","<ng-content></ng-content>","import { Component } from '@angular/core';\n\nexport const DEFAULT_INPUTS_O_APP_LAYOUT_SIDENAV = [\n  'position'\n];\n\n@Component({\n  selector: 'o-app-layout-sidenav',\n  templateUrl: './o-app-layout-sidenav.component.html',\n  inputs: DEFAULT_INPUTS_O_APP_LAYOUT_SIDENAV\n})\nexport class OAppLayoutSidenavComponent {\n\n  position: 'start' | 'end' = 'end';\n}\n","<ng-content></ng-content>","import { AfterViewInit, Component, ContentChild, EventEmitter, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\nimport { OUserInfoConfigurationDirective } from '../../components/user-info/user-info-configuration/o-user-info-configuration.directive';\nimport { BooleanInputConverter } from '../../decorators/input-converter';\nimport { Codes, OAppLayoutMode, OSidenavMode } from '../../util/codes';\nimport { Util } from '../../util/util';\nimport { OAppSidenavBase } from '../../components/app-sidenav/o-app-sidenav-base.class';\nimport { OAppHeaderBase } from '../../components/app-header/o-app-header-base.class';\nimport { OAppLayoutBase } from './o-app-layout-base.class';\n\nexport const DEFAULT_INPUTS_O_APP_LAYOUT = [\n  'mode',\n  'sidenavMode: sidenav-mode',\n  'sidenavOpened: sidenav-opened',\n  '_showHeader: show-header',\n  'showUserInfo: show-user-info',\n  'showLanguageSelector: show-language-selector',\n  'useFlagIcons: use-flag-icons',\n  'openedSidenavImg: opened-sidenav-image',\n  'closedSidenavImg: closed-sidenav-image',\n  'headerColor: header-color',\n  'headerHeight: header-height',\n  'showTitle: show-title',\n  'staticTitle: static-title',\n  'showStaticTitle: show-static-title'\n];\n\nexport const DEFAULT_OUTPUTS_O_APP_LAYOUT: any[] = [\n  'beforeOpenSidenav',\n  'afterOpenSidenav',\n  'beforeCloseSidenav',\n  'afterCloseSidenav'\n];\n\n@Component({\n  selector: 'o-app-layout',\n  inputs: DEFAULT_INPUTS_O_APP_LAYOUT,\n  outputs: DEFAULT_OUTPUTS_O_APP_LAYOUT,\n  templateUrl: './o-app-layout.component.html',\n  styleUrls: ['./o-app-layout.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { provide: OAppLayoutBase, useExisting: forwardRef(() => OAppLayoutComponent) }\n  ]\n})\n\nexport class OAppLayoutComponent implements AfterViewInit {\n\n  @BooleanInputConverter()\n  sidenavOpened: boolean = true;\n  @BooleanInputConverter()\n  showUserInfo: boolean = true;\n  @BooleanInputConverter()\n  showLanguageSelector: boolean = true;\n  @BooleanInputConverter()\n  useFlagIcons: boolean = false;\n  @BooleanInputConverter()\n  protected _showHeader: boolean = true;\n  @BooleanInputConverter()\n  public showTitle: boolean = false;\n  public staticTitle: string;\n  @BooleanInputConverter()\n  public showStaticTitle: boolean = false;\n\n  public headerColor: ThemePalette;\n  public headerHeight = Codes.DEFAULT_ROW_HEIGHT;\n\n  @ViewChild('appSidenav')\n  public appSidenav: OAppSidenavBase;\n\n  @ViewChild('appHeader')\n  public appHeader: OAppHeaderBase;\n\n  @ContentChild(OUserInfoConfigurationDirective)\n  public userInfoConfiguration: OUserInfoConfigurationDirective;\n\n  protected _mode: OAppLayoutMode;\n  protected _sidenavMode: OSidenavMode;\n\n  openedSidenavImg: string;\n  closedSidenavImg: string;\n\n  beforeOpenSidenav: EventEmitter<boolean> = new EventEmitter<boolean>();\n  afterOpenSidenav: EventEmitter<boolean> = new EventEmitter<boolean>();\n  beforeCloseSidenav: EventEmitter<boolean> = new EventEmitter<boolean>();\n  afterCloseSidenav: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  get showHeader(): boolean {\n    return this._showHeader;\n  }\n\n  set showHeader(val: boolean) {\n    this._showHeader = val;\n  }\n\n  get mode(): OAppLayoutMode {\n    return this._mode;\n  }\n\n  set mode(val: OAppLayoutMode) {\n    const m = Codes.OAppLayoutModes.find(e => e === val);\n    if (Util.isDefined(m)) {\n      this._mode = m;\n      if (this._mode === 'mobile' && !Util.isDefined(this.showHeader)) {\n        this.showHeader = true;\n      }\n    } else {\n      console.error('Invalid `o-app-layout` mode (' + val + ')');\n    }\n  }\n\n  get sidenavMode(): OSidenavMode {\n    return this._sidenavMode;\n  }\n\n  set sidenavMode(val: OSidenavMode) {\n    const m = Codes.OSidenavModes.find(e => e === val);\n    if (Util.isDefined(m)) {\n      this._sidenavMode = m;\n    } else {\n      console.error('Invalid `o-app-layout` sidenav-mode (' + val + ')');\n    }\n  }\n\n  sidenavToggle(opened: boolean) {\n    opened ? this.beforeOpenSidenav.emit() : this.beforeCloseSidenav.emit();\n  }\n\n  afterToggle(opened: boolean) {\n    opened ? this.afterOpenSidenav.emit() : this.afterCloseSidenav.emit();\n  }\n\n  ngAfterViewInit(): void {\n    if (this.appHeader && this.appHeader.userInfo) {\n      this.appHeader.userInfo.registerUserInfoConfiguration(this.userInfoConfiguration);\n    }\n  }\n\n}\n","<o-app-sidenav #appSidenav [sidenav-mode]=\"sidenavMode\" [opened]=\"sidenavOpened\" [show-user-info]=\"showUserInfo\" [show-toggle-button]=\"!showHeader\"\n  [opened-sidenav-image]=\"openedSidenavImg\" [closed-sidenav-image]=\"closedSidenavImg\" [layout-mode]=\"mode\" [class.header-layout]=\"showHeader\"\n  (onSidenavToggle)=\"sidenavToggle($event)\" (afterSidenavToggle)=\"afterToggle($event)\">\n\n  <ng-content select=\"o-app-layout-sidenav[position=start]\" ngProjectAs=\"o-app-layout-sidenav-projection-start\">\n  </ng-content>\n  <ng-content select=\"o-app-layout-sidenav[position=end]\" ngProjectAs=\"o-app-layout-sidenav-projection-end\">\n  </ng-content>\n  <ng-content select=\"o-app-layout-sidenav\" ngProjectAs=\"o-app-layout-sidenav-projection-end\"></ng-content>\n\n  <o-app-header #appHeader *ngIf=\"showHeader\" [show-title]=\"showTitle\" [show-static-title]=\"showStaticTitle\" [static-title]=\"staticTitle\"\n    [show-user-info]=\"showUserInfo\" [show-language-selector]=\"showLanguageSelector\" [use-flag-icons]=\"useFlagIcons\"\n    (onSidenavToggle)=\"appSidenav.toggleSidenav()\" [color]=\"headerColor\" [header-height]=\"headerHeight\">\n    <mat-icon class=\"sidenav-toggle\" svgIcon=\"ontimize:menu\" (click)=\"appSidenav.toggleSidenav()\" *ngIf=\"appSidenav.isMobileMode()\"></mat-icon>\n    <ng-content select=\"o-app-layout-header[position=start]\" ngProjectAs=\"o-app-layout-header-projection-start\">\n    </ng-content>\n    <ng-content select=\"o-app-layout-header[position=end]\" ngProjectAs=\"o-app-layout-header-projection-end\">\n    </ng-content>\n    <ng-content select=\"o-app-layout-header\" ngProjectAs=\"o-app-layout-header-projection-start\"></ng-content>\n  </o-app-header>\n\n  <div class=\"application-layout-content-wrapper\" [class.header-layout]=\"showHeader\">\n    <ng-content></ng-content>\n  </div>\n</o-app-sidenav>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { OAppHeaderModule } from '../../components/app-header/o-app-header.module';\nimport { OAppSidenavModule } from '../../components/app-sidenav/o-app-sidenav.module';\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OAppLayoutHeaderComponent } from './app-layout-header/o-app-layout-header.component';\nimport { OAppLayoutSidenavComponent } from './app-layout-sidenav/o-app-layout-sidenav.component';\nimport { OAppLayoutComponent } from './o-app-layout.component';\n\n@NgModule({\n  imports: [CommonModule, OSharedModule, RouterModule, OAppSidenavModule, OAppHeaderModule],\n  declarations: [OAppLayoutComponent, OAppLayoutHeaderComponent, OAppLayoutSidenavComponent],\n  exports: [OAppLayoutComponent, OAppLayoutHeaderComponent, OAppLayoutSidenavComponent]\n})\nexport class OAppLayoutModule { }\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Injector,\n  OnDestroy,\n  Type,\n  ViewEncapsulation\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { MenuGroup } from '../../interfaces/app-menu.interface';\nimport { PermissionsService } from '../../services';\nimport { AppMenuService } from '../../services/app-menu.service';\nimport { OTranslateService } from '../../services/translate/o-translate.service';\nimport { OPermissions } from '../../types';\nimport { MenuRootItem } from '../../types/menu-root-item.type';\n\nexport const DEFAULT_INPUTS_O_MENU_LAYOUT = [\n  'parentMenuId : parent-menu-id',\n  'excludeMenusId : exclude-menus-id'\n];\n\nexport const DEFAULT_OUTPUTS_O_MENU_LAYOUT = [\n];\n\n@Component({\n  selector: 'o-card-menu-layout',\n  templateUrl: './o-card-menu-layout.component.html',\n  styleUrls: ['./o-card-menu-layout.component.scss'],\n  inputs: DEFAULT_INPUTS_O_MENU_LAYOUT,\n  outputs: DEFAULT_OUTPUTS_O_MENU_LAYOUT,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-menu-layout]': 'true'\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OCardMenuLayoutComponent implements AfterViewInit, OnDestroy {\n\n  protected translateService: OTranslateService;\n  protected translateServiceSubscription: Subscription;\n  protected appMenuService: AppMenuService;\n  protected menuRoots: MenuRootItem[];\n  protected cardItemsArray: MenuRootItem[];\n  protected parentMenuId: string;\n  protected excludeMenusId: string;\n  protected permissions: OPermissions;\n  protected permissionsService: PermissionsService;\n  protected parentMenuIds: string[];\n  protected excludeIds: string[];\n\n  hidden: boolean;\n\n  constructor(\n    private injector: Injector,\n    private cd: ChangeDetectorRef\n  ) {\n    this.translateService = this.injector.get(OTranslateService);\n    this.appMenuService = this.injector.get(AppMenuService);\n    this.menuRoots = this.appMenuService.getMenuRoots();\n    this.permissionsService = this.injector.get<PermissionsService>(PermissionsService as Type<PermissionsService>);\n\n    this.translateServiceSubscription = this.translateService.onLanguageChanged.subscribe(() => {\n      this.cd.detectChanges();\n    });\n  }\n\n  public ngAfterViewInit(): void {\n    this.setCardMenuItems();\n  }\n\n  public ngOnDestroy(): void {\n    if (this.translateServiceSubscription) {\n      this.translateServiceSubscription.unsubscribe();\n    }\n  }\n\n  public setCardMenuItems(): void {\n    let cardItemsAux = [];\n    if (!this.parentMenuId) {\n      cardItemsAux = this.menuRoots.filter(item => !this.appMenuService.isMenuGroup(item));\n    } else {\n\n      this.parentMenuIds = (this.parentMenuId || '').split(';').map(id => id.trim());\n      this.excludeIds = (this.excludeMenusId || '').split(';').map(id => id.trim());\n\n      cardItemsAux = this.getItemsFilteredByParentId(this.menuRoots, this.parentMenuIds);\n    }\n\n    this.cardItems = cardItemsAux;\n  }\n\n  get cardItems(): MenuRootItem[] {\n    return this.cardItemsArray;\n  }\n\n  set cardItems(val: MenuRootItem[]) {\n    this.cardItemsArray = val;\n    this.cd.detectChanges();\n  }\n\n  protected getItemsFilteredByParentId(array: MenuRootItem[], parentMenuIds: string[]): MenuRootItem[] {\n    let result: MenuRootItem[] = [];\n    const groups = array.filter(item => this.appMenuService.isMenuGroup(item));\n\n    parentMenuIds.forEach(parentMenuId => {\n      for (let i = 0, len = groups.length; i < len; i++) {\n        const menuGroup = groups[i] as MenuGroup;\n        if (menuGroup.id === parentMenuId) {\n          let permissions = this.permissionsService.getMenuPermissions(parentMenuId);\n          menuGroup.items.forEach(item => {\n            let hidden = permissions?.visible === false || this.excludeIds.includes(item.id);\n\n            item['show-in-card-menu'] = !hidden;\n          });\n          result = result.concat(menuGroup.items);\n          break;\n        } else {\n          const childResult = this.getItemsFilteredByParentId(menuGroup.items, [parentMenuId]);\n          if (childResult.length) {\n            result = result.concat(childResult);\n            break;\n          }\n        }\n      }\n    });\n\n    return result;\n  }\n\n\n}\n","<div fxLayout=\"row wrap\" class=\"scrolling\" fxLayout.lt-md=\"column\" fxLayoutAlign=\"space-around center\" fxLayoutGap=\"8px\">\n  <ng-container *ngFor=\"let item of cardItems\">\n    <o-card-menu-item *ngIf=\"item['show-in-card-menu'] !== false\" button-text=\"CARD_MENU_LAYOUT.BUTTON_TEXT\" [route]=\"item.route\" [title]=\"item.name\"\n      [tooltip]=\"item.tooltip\" [icon]=\"item.icon\" [image]=\"item.image\" [detail-component]=\"item.component\"\n      [detail-component-inputs]=\"item['component-inputs']\" [ngClass]=\"item.class\">\n    </o-card-menu-item>\n  </ng-container>\n  <ng-content select=\"o-card-menu-item\"></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OCardMenuItemModule } from '../../components/card-menu-item/o-card-menu-item.module';\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OCardMenuLayoutComponent } from './o-card-menu-layout.component';\n\n@NgModule({\n  declarations: [OCardMenuLayoutComponent],\n  imports: [CommonModule, OCardMenuItemModule, OSharedModule],\n  exports: [OCardMenuLayoutComponent]\n})\nexport class OCardMenuLayoutModule { }\n","import { Directive, Input } from '@angular/core';\nimport { DialogPosition } from '@angular/material/dialog';\n\nimport { BooleanConverter } from '../../../../decorators/input-converter';\nimport { OFormLayoutManagerComponent } from '../../o-form-layout-manager.component';\n\n@Directive({\n  selector: 'o-form-layout-dialog-options, o-form-layout-manager[mode=\"dialog\"]'\n})\nexport class OFormLayoutDialogOptionsDirective {\n\n  constructor(protected formLayoutManager: OFormLayoutManagerComponent) { }\n\n  ngOnChanges() {\n    if (this.formLayoutManager) {\n      this.formLayoutManager.addDialogOptions(this.getOptions());\n    }\n  }\n\n  @Input()\n  public width: string = '';\n\n  @Input('min-width')\n  public minWidth: number | string;\n\n  @Input('max-width')\n  public maxWidth: number | string;\n\n  @Input()\n  public height: string = '';\n\n  @Input('min-height')\n  public minHeight: number | string;\n\n  @Input('max-height')\n  public maxHeight: number | string;\n\n  @Input()\n  public class: string | string[] = '';\n\n  @Input()\n  public position: DialogPosition;\n\n  @Input('backdrop-class')\n  public backdropClass: string;\n\n  protected _closeOnNavigation: boolean = true;\n  @Input('close-on-navigation')\n  set closeOnNavigation(value: boolean) {\n    this._closeOnNavigation = BooleanConverter(value);\n  }\n\n  protected _disableClose: boolean = true;\n  @Input('disable-close')\n  set disableClose(value: boolean) {\n    this._disableClose = BooleanConverter(value);\n  }\n\n  @Input()\n  public title: string;\n\n  @Input('label-columns')\n  public labelColumns: string;\n\n  @Input()\n  public separator: string;\n\n  @Input('dialog-title-separator')\n  public dialogTitleSeparator;\n\n  getOptions() {\n    const result = {\n      width: this.width,\n      minWidth: this.minWidth,\n      maxWidth: this.maxWidth,\n      height: this.height,\n      minHeight: this.minHeight,\n      maxHeight: this.maxHeight,\n      class: this.class,\n      position: this.position,\n      backdropClass: this.backdropClass,\n      disableClose: this._disableClose,\n      closeOnNavigation: this._closeOnNavigation,\n      title: this.title,\n      labelColumns: this.labelColumns,\n      separator: this.separator,\n      dialogTitleSeparator: this.dialogTitleSeparator\n    }\n    // Deleting undefined properties\n    Object.keys(result).forEach(key => result[key] == null ? delete result[key] : {});\n    return result;\n  }\n\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { OFormLayoutManagerComponent } from '../../o-form-layout-manager.component';\n\n@Directive({\n  selector: 'o-form-layout-split-pane-options, o-form-layout-manager[mode=\"split-pane\"]'\n})\nexport class OFormLayoutSplitPaneOptionsDirective {\n\n  constructor(protected formLayoutManager: OFormLayoutManagerComponent) { }\n\n  ngOnChanges() {\n    if (this.formLayoutManager) {\n      this.formLayoutManager.addSplitPaneOptions(this.getOptions());\n    }\n  }\n\n  @Input('main-width') mainWidth: number | string;\n  @Input('main-max-width') mainMaxWidth: number | string;\n  @Input('main-min-width') mainMinWidth: number | string;\n  @Input('detail-width') detailWidth: number | string;\n  @Input('detail-max-width') detailMaxWidth: number | string;\n  @Input('detail-min-width') detailMinWidth: number | string;\n\n  getOptions() {\n    const result = {\n      mainWidth: this.mainWidth,\n      mainMaxWidth: this.mainMaxWidth,\n      mainMinWidth: this.mainMinWidth,\n      detailWidth: this.detailWidth,\n      detailMaxWidth: this.detailMaxWidth,\n      detailMinWidth: this.detailMinWidth\n    }\n    // Deleting undefined properties\n    Object.keys(result).forEach(key => result[key] == null ? delete result[key] : {});\n    return result;\n  }\n}\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatTabHeaderPosition } from '@angular/material/tabs';\n\nimport { BooleanConverter, NumberConverter } from '../../../../decorators/input-converter';\nimport { OFormLayoutManagerComponent } from '../../o-form-layout-manager.component';\n\n@Directive({\n  selector: 'o-form-layout-tabgroup-options, o-form-layout-manager[mode=\"tab\"]'\n})\nexport class OFormLayoutTabGroupOptionsDirective {\n\n  constructor(protected formLayoutManager: OFormLayoutManagerComponent) { }\n\n  ngOnChanges() {\n    if (this.formLayoutManager) {\n      this.formLayoutManager.addTabGroupOptions(this.getOptions());\n    }\n  }\n\n  @Input('background-color')\n  public backgroundColor: ThemePalette;\n\n  @Input()\n  public color: ThemePalette;\n\n  protected _disableAnimation: boolean = true;\n  @Input('disable-animation')\n  set disableAnimation(value: boolean) {\n    this._disableAnimation = BooleanConverter(value);\n  }\n\n  @Input('header-position')\n  public headerPosition: MatTabHeaderPosition;\n\n  @Input()\n  public icon: string;\n\n  @Input('icon-position')\n  public iconPosition: 'left' | 'right' = 'left';\n\n  @Input('title-data-origin')\n  public titleDataOrigin: string;\n\n  @Input()\n  public title: string;\n\n  @Input('label-columns')\n  public labelColumns: string;\n\n  @Input()\n  public separator: string;\n\n  protected _maxTabs: number;\n  @Input('max-tabs')\n  public set maxTabs(value: number) {\n    this._maxTabs = NumberConverter(value);\n  }\n  @Input('stretch-tabs')\n  public set stretchTabs(value:boolean) {\n    this._stretchTabs = BooleanConverter(value);\n  }\n  protected _stretchTabs: boolean = false;\n\n  @ContentChild(TemplateRef)\n  templateMatTabLabel: TemplateRef<any>;\n\n  getOptions(): Object {\n    const result = {\n      backgroundColor: this.backgroundColor,\n      color: this.color,\n      headerPosition: this.headerPosition,\n      disableAnimation: this._disableAnimation,\n      icon: this.icon,\n      iconPosition: this.iconPosition,\n      titleDataOrigin: this.titleDataOrigin,\n      title: this.title,\n      labelColumns: this.labelColumns,\n      separator: this.separator,\n      maxTabs: this._maxTabs,\n      stretchTabs: this._stretchTabs\n\n    }\n    // Deleting undefined properties\n    Object.keys(result).forEach(key => result[key] == null ? delete result[key] : {});\n    return result;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { ResizableModule } from 'angular-resizable-element';\nimport { OFormLayoutManagerComponentStateService } from '../../services/state/o-form-layout-manager-component-state.service';\n\nimport { OSharedModule } from '../../shared/shared.module';\nimport { OFormLayoutDialogComponent } from './dialog/o-form-layout-dialog.component';\nimport { OFormLayoutDialogOptionsDirective } from './dialog/options/o-form-layout-dialog-options.directive';\nimport { OFormLayoutManagerContentDirective } from './directives/o-form-layout-manager-content.directive';\nimport { CanActivateFormLayoutChildGuard } from './guards/o-form-layout-can-activate-child.guard';\nimport { OFormLayoutManagerComponent } from './o-form-layout-manager.component';\nimport { OFormLayoutSplitPaneComponent } from './split-pane/o-form-layout-split-pane.component';\nimport { OFormLayoutSplitPaneOptionsDirective } from './split-pane/options/o-form-layout-split-pane-options.directive';\nimport { OFormLayoutTabGroupComponent } from './tabgroup/o-form-layout-tabgroup.component';\nimport { OFormLayoutTabGroupOptionsDirective } from './tabgroup/options/o-form-layout-tabgroup-options.directive';\n\n@NgModule({\n    imports: [CommonModule, OSharedModule, RouterModule, ResizableModule],\n    declarations: [\n        OFormLayoutDialogComponent,\n        OFormLayoutManagerComponent,\n        OFormLayoutTabGroupComponent,\n        OFormLayoutManagerContentDirective,\n        OFormLayoutTabGroupOptionsDirective,\n        OFormLayoutDialogOptionsDirective,\n        OFormLayoutSplitPaneComponent,\n        OFormLayoutSplitPaneOptionsDirective\n    ],\n    exports: [\n        OFormLayoutManagerComponent,\n        OFormLayoutTabGroupOptionsDirective,\n        OFormLayoutDialogOptionsDirective,\n        OFormLayoutSplitPaneOptionsDirective\n    ],\n    providers: [{\n            provide: CanActivateFormLayoutChildGuard,\n            useClass: CanActivateFormLayoutChildGuard\n        },\n        OFormLayoutManagerComponentStateService\n    ],\n    schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class OFormLayoutManagerModule { }\n","import { LOCATION_INITIALIZED } from '@angular/common';\nimport { Injector, Provider } from '@angular/core';\nimport { MAT_RIPPLE_GLOBAL_OPTIONS } from '@angular/material/core';\nimport { Router } from '@angular/router';\nimport { combineLatest } from 'rxjs';\n\nimport { AppConfig, O_INPUTS_OPTIONS } from '../config/app-config';\nimport { appConfigFactory } from '../services/app-config.provider';\nimport { ComponentStateServiceProvider, ExportDataServiceProvider, OntimizeAuthServiceProvider, OntimizeExportServiceProvider, OntimizeServiceProvider, O_MAT_ERROR_OPTIONS, OntimizeLocalStorageServiceProvider } from '../services/factories';\nimport { LocalStorageService } from '../services/local-storage.service';\nimport { NavigationService } from '../services/navigation.service';\nimport { OntimizeMatIconRegistry } from '../services/ontimize-icon-registry.service';\nimport { OntimizeServiceResponseAdapter } from '../services/ontimize/ontimize-service-response.adapter';\nimport { ORemoteConfigurationService } from '../services/remote-config.service';\nimport { OTranslateService } from '../services/translate/o-translate.service';\nimport { Error403Component } from '../shared/components/error403/o-error-403.component';\nimport { Config } from '../types/config.type';\nimport { Codes } from '../util/codes';\nimport { Util } from '../util/util';\n\nfunction addPermissionsRouteGuard(injector: Injector) {\n  const route = injector.get(Router);\n  const exists403 = route.config.find(r => r.path === Codes.FORBIDDEN_ROUTE);\n  if (!exists403) {\n    route.config.push({ path: Codes.FORBIDDEN_ROUTE, component: Error403Component });\n  }\n}\n\nexport function appInitializerFactory(injector: Injector, config: Config, oTranslate: OTranslateService) {\n  return () => new Promise<any>((resolve: any) => {\n    const observableArray = [];\n    const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n    locationInitialized.then(() => {\n      const storedLang = oTranslate.getStoredLanguage();\n      const configLang = config['locale'];\n      const browserLang = oTranslate.getBrowserLang();\n      let userLang = Util.isDefined(config['defaultLocale']) ? config['defaultLocale'] : 'en';\n      let defaultLang = Util.isDefined(config['defaultLocale']) ? config['defaultLocale'] : 'en';\n      if (storedLang) {\n        userLang = storedLang;\n      } else if (configLang) {\n        userLang = configLang;\n        defaultLang = configLang;\n      } else if (browserLang) {\n        userLang = browserLang;\n        defaultLang = browserLang;\n      }\n      oTranslate.setDefaultLang(defaultLang);\n\n      const locales = new Set(config.applicationLocales || []);\n      locales.add('en');\n      locales.add(userLang);\n\n      // initialize available locales array if needed\n      if (!config.applicationLocales) {\n        config.applicationLocales = [...locales];\n      }\n\n      if (config.uuid == null || config.uuid === '') {\n        console.error('Your app must have an \\'uuid\\' property defined on your app.config file. Otherwise, your application will not work correctly.');\n        alert('Your app must have an \\'uuid\\' property defined on your app.config file. Otherwise, your application will not work correctly.');\n      }\n      injector.get(NavigationService).initialize();\n      injector.get(OntimizeMatIconRegistry).initialize();\n      injector.get(LocalStorageService).setBackwardCompatibility();\n      addPermissionsRouteGuard(injector);\n      observableArray.push(oTranslate.setAppLang(userLang));\n      const remoteConfigService = injector.get(ORemoteConfigurationService);\n      observableArray.push(remoteConfigService.initialize());\n      combineLatest(observableArray).subscribe(() => {\n        resolve();\n      });\n    });\n  });\n}\n\nexport const ONTIMIZE_PROVIDERS: Provider[] = [\n  { provide: AppConfig, useFactory: appConfigFactory, deps: [Injector] },\n  OntimizeServiceProvider,\n  OntimizeServiceResponseAdapter,\n  OntimizeAuthServiceProvider,\n  ComponentStateServiceProvider,\n  ExportDataServiceProvider,\n  OntimizeExportServiceProvider,\n  OntimizeLocalStorageServiceProvider,\n  // disabled global ripple\n  { provide: MAT_RIPPLE_GLOBAL_OPTIONS, useValue: { disabled: true } },\n  { provide: O_MAT_ERROR_OPTIONS, useValue: {} },\n  { provide: O_INPUTS_OPTIONS, useValue: {} }\n];\n","export type AlertType = 'info' | 'warn' | 'error';\n\nexport class ODialogConfig {\n\n  /* The type of preconfigured alert dialogs */\n  alertType?: AlertType;\n\n  /* The text of 'ok' button */\n  okButtonText?: string;\n\n  /* The text of 'cancel' button */\n  cancelButtonText?: string;\n\n  /* The material icon of the dialog */\n  icon?: string;\n}\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Component, ElementRef, forwardRef, Inject, Injector, OnDestroy, OnInit, Optional, ViewChild } from '@angular/core';\nimport { MediaChange, MediaObserver } from '@angular/flex-layout';\nimport { FormGroup, UntypedFormControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { DateRange, MatDatepickerInputEvent, MatDateRangeInput, MatDateRangePicker } from '@angular/material/datepicker';\nimport moment from 'moment';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInputConverter } from '../../../decorators/input-converter';\nimport { MomentService } from '../../../services/moment.service';\nimport { OntimizeMomentDateAdapter } from '../../../shared';\nimport { FormValueOptions } from '../../../types/form-value-options.type';\nimport { ODateValueType } from '../../../types/o-date-value.type';\nimport { SQLTypes } from '../../../util/sqltypes';\nimport { Util } from '../../../util/util';\nimport { OFormValue } from '../../form/o-form-value';\nimport { OFormComponent } from '../../form/o-form.component';\nimport { DEFAULT_OUTPUTS_O_FORM_DATA_COMPONENT, OFormDataComponent } from '../../o-form-data-component.class';\nimport { OValueChangeEvent } from '../../o-value-change-event.class';\nimport { DEFAULT_INPUTS_O_DATE_INPUT } from '../date-input/o-date-input.component';\nimport { OFormControl } from '../o-form-control.class';\nimport { DateCustomClassFunction } from '../../../types/date-custom-class.type';\n\nexport const DEFAULT_OUTPUTS_O_DATERANGE_INPUT = [\n  ...DEFAULT_OUTPUTS_O_FORM_DATA_COMPONENT\n];\n\nexport const DEFAULT_INPUTS_O_DATERANGE_INPUT = [\n  'separator',\n  'olocale:locale',\n  'startKey',\n  'endKey',\n  'valueType: value-type',\n  'mode',\n  'placeholderStartDay: placeholder-startday',\n  'placeholderEndDay: placeholder-endday',\n  ...DEFAULT_INPUTS_O_DATE_INPUT\n];\n\n@Component({\n  selector: 'o-daterange-input',\n  templateUrl: './o-daterange-input.component.html',\n  outputs: DEFAULT_OUTPUTS_O_DATERANGE_INPUT,\n  inputs: DEFAULT_INPUTS_O_DATERANGE_INPUT,\n  providers: [\n    { provide: DateAdapter, useClass: OntimizeMomentDateAdapter, deps: [MAT_DATE_LOCALE] }\n  ]\n})\nexport class ODateRangeInputComponent extends OFormDataComponent implements OnDestroy, OnInit {\n\n  @ViewChild('picker', { static: true })\n  picker!: MatDateRangePicker<Date>;\n\n  @BooleanInputConverter()\n  public textInputEnabled: boolean = true;\n\n  @BooleanInputConverter()\n  public oTouchUi: boolean = false;\n\n  @ViewChild('dateRangeInput')\n  dateRangeInput: MatDateRangeInput<Date>;\n\n  public mode: 'mobile' | 'desktop' | 'auto' = 'auto';\n\n  startDateValue: Date;\n  endDateValue: Date;\n\n  range: FormGroup<{ [x: string]: OFormControl; }>\n\n  protected _dateClass: DateCustomClassFunction\n  get dateClass(): DateCustomClassFunction {\n    return this._dateClass;\n  }\n\n  set dateClass(val: DateCustomClassFunction) {\n    this._dateClass = val;\n  }\n\n  protected _oMinDate: Date;\n  set oMinDate(value: any) {\n    if (value) {\n      const momentD = this.getValueAsMoment(value)\n      if (Util.isDefined(momentD)) {\n        this._oMinDate = this.convertToDate(value);\n      }\n    }\n  }\n  get oMinDate() {\n    return this._oMinDate;\n  }\n\n  protected _oMaxDate: Date;\n  set oMaxDate(value: any) {\n    if (value) {\n      this._oMaxDate = this.convertToDate(value);\n    }\n  }\n  get oMaxDate() {\n    return this._oMaxDate;\n  }\n\n  protected _startKey: string = 'startDate';\n  get startKey() {\n    return this._startKey;\n  }\n  set startKey(value) {\n    this._startKey = value;\n  }\n\n  protected _endKey: string = 'endDate';\n  get endKey() {\n    return this._endKey;\n  }\n  set endKey(value) {\n    this._endKey = value;\n  }\n\n  protected _valueType: ODateValueType = 'timestamp';\n\n  public separator = ' - ';\n\n  get showClearButton(): boolean {\n    return this.clearButton && !this.isReadOnly && this.enabled && this.getValue();\n  }\n\n  get touchUi(): boolean {\n    return this.oTouchUi || false;\n  }\n\n  set touchUi(val: boolean) {\n    this.oTouchUi = val;\n  }\n\n  isMobileMode(): boolean {\n    return this.mode === 'mobile' || (this.mode === 'auto' && this.breakpointObserver.isMatched(Breakpoints.Handset))\n  }\n\n  isDesktopMode(): boolean {\n    return this.mode === 'desktop' || (this.mode === 'auto' && !this.breakpointObserver.isMatched(Breakpoints.Handset))\n  }\n\n  public oformat: string = 'L';\n\n  protected olocale: string;\n  private momentSrv: MomentService;\n  protected media: MediaObserver;\n  protected mediaSubscription: Subscription;\n  protected onLanguageChangeSubscription: Subscription;\n\n  public placeholderStartDay = 'DATERANGE.PLACEHOLDER_STARTDATE';\n  public placeholderEndDay = 'DATERANGE.PLACEHOLDER_ENDDATE';\n  constructor(\n    @Optional() @Inject(forwardRef(() => OFormComponent)) form: OFormComponent,\n    elRef: ElementRef,\n    injector: Injector,\n    protected momentDateAdapter: DateAdapter<OntimizeMomentDateAdapter>,\n    protected breakpointObserver: BreakpointObserver\n  ) {\n    super(form, elRef, injector);\n    this.momentSrv = this.injector.get(MomentService);\n    this.media = this.injector.get(MediaObserver);\n    this.range = new FormGroup({\n      [this.startKey]: new OFormControl(),\n      [this.endKey]: new OFormControl()\n    });\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n    this.subscribeToMediaChanges();\n    if (!this.olocale) {\n      this.olocale = this.momentSrv.getLocale();\n    }\n\n    if (this.oformat) {\n      (this.momentDateAdapter as any).oFormat = this.oformat;\n    }\n\n    this.momentDateAdapter.setLocale(this.olocale);\n    this.onLanguageChangeSubscription = this.translateService.onLanguageChanged.subscribe(() => {\n      this.momentDateAdapter.setLocale(this.translateService.getCurrentLang());\n      this.setValue(this.getValue());\n    });\n\n  }\n\n  public subscribeToMediaChanges(): void {\n    this.mediaSubscription = this.media.asObservable().subscribe((change: MediaChange[]) => {\n      if (['xs', 'sm'].indexOf(change[0].mqAlias) !== -1) {\n        this.touchUi = Util.isDefined(this.oTouchUi) ? this.oTouchUi : true;\n      }\n      if (['md', 'lg', 'xl'].indexOf(change[0].mqAlias) !== -1) {\n        this.touchUi = Util.isDefined(this.oTouchUi) ? this.oTouchUi : false;\n      }\n    });\n  }\n\n  public open(): void {\n    if (!this.isReadOnly && this.enabled) {\n      this.picker.open();\n    }\n  }\n\n  resolveValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = super.resolveValidators();\n\n    validators.push(this.rangeDateValidator.bind(this));\n    if (Util.isDefined(this.oMinDate)) {\n      validators.push(this.minDateValidator.bind(this));\n    }\n    if (Util.isDefined(this.oMaxDate)) {\n      validators.push(this.maxDateValidator.bind(this));\n    }\n\n    validators.push(this.parseDateValidator.bind(this));\n    return validators;\n  }\n\n  isObjectDataRangeNull(objectValue): boolean {\n    return objectValue !== null && objectValue.value !== null &&\n      !Util.isDefined(objectValue.value[this.startKey]) &&\n      !Util.isDefined(objectValue.value[this.endKey]);\n  }\n\n\n  protected rangeDateValidator(control: UntypedFormControl): ValidationErrors {\n\n    if (control.value instanceof Object && !this.isObjectDataRangeNull(control)) {\n      const endValue = this.getValueAsMoment(control.value[this._endKey]);\n      const startValue = this.getValueAsMoment(control.value[this._startKey]);\n      if (endValue.isSameOrBefore(startValue)) {\n        return {\n          dateRange: true\n        };\n      }\n    }\n    return {};\n  }\n\n  protected minDateValidator(control: UntypedFormControl): ValidationErrors {\n    const mindate = moment(this.oMinDate);\n    if ((control.value instanceof Object)\n      && !this.isObjectDataRangeNull(control)) {\n      const startValue = this.getValueAsMoment(control.value[this._startKey]);\n      if (startValue.isBefore(mindate)) {\n        return {\n          dateRangeMin: {\n            dateMin: mindate.format(this.oformat)\n          }\n        };\n      }\n    }\n    return {};\n  }\n\n  protected maxDateValidator(control: UntypedFormControl): ValidationErrors {\n    const maxdate = moment(this.oMaxDate);\n    if ((control.value instanceof Object)\n      && !this.isObjectDataRangeNull(control)) {\n      const endValue = this.getValueAsMoment(control.value[this._endKey]);\n      if (endValue.isAfter(maxdate)) {\n        return {\n          dateRangeMax: {\n            dateMax: maxdate.format(this.oformat)\n          }\n        };\n      }\n    }\n    return {};\n  }\n\n  protected parseDateValidator(control: UntypedFormControl): ValidationErrors {\n    if ((control.value instanceof Object)\n      && !this.isObjectDataRangeNull(control)) {\n      const endValue = this.getValueAsMoment(control.value[this._endKey]);\n      const startValue = this.getValueAsMoment(control.value[this._startKey]);\n      if (!endValue.isValid() || !startValue.isValid()) {\n        return {\n          dateRangeParse: {\n            format: this.oformat + this.separator + this.oformat\n          }\n        };\n      }\n    }\n    return {};\n  }\n\n  set valueType(val: any) {\n    this._valueType = Util.convertToODateValueType(val);\n  }\n\n  get valueType(): any {\n    return this._valueType;\n  }\n\n  public ngOnDestroy(): void {\n    super.ngOnDestroy();\n    if (this.mediaSubscription) {\n      this.mediaSubscription.unsubscribe();\n    }\n    if (this.onLanguageChangeSubscription) {\n      this.onLanguageChangeSubscription.unsubscribe();\n    }\n  }\n\n  protected setFormValue(val: any, options?: FormValueOptions, setDirty: boolean = false): void {\n    let value = val;\n    if (val instanceof OFormValue) {\n      value = val.value;\n    }\n\n    this.range.setValue(this.ensureODateValueType(value), options);\n    super.setFormValue(value, options, setDirty);\n  }\n\n\n  protected ensureODateValueType(val: any) {\n    if (!Util.isDefined(val)) {\n      return { [this.startKey]: null, [this.endKey]: null };\n    }\n\n    let result = val;\n    const startVal = this.convertToDate(val[this.startKey]);\n    const endVal = this.convertToDate(val[this.endKey]);\n\n    if (!Util.isDefined(result)) {\n      console.warn(`ODateRangeInputComponent value (${val}) is not consistent with value-type (${this.valueType})`);\n    } else {\n      result = { [this.startKey]: startVal, [this.endKey]: endVal };\n\n    }\n    return result;\n  }\n\n  protected convertToDate(val: any): Date | null {\n    if (!Util.isDefined(val)) return null;\n\n    switch (this.valueType) {\n      case 'string':\n        return typeof val === 'string' && moment(val, this.oformat).isValid()\n          ? new Date(moment(val, this.oformat).valueOf())\n          : null;\n\n      case 'date':\n        return val instanceof Date ? val : null;\n\n      case 'timestamp':\n        return typeof val === 'number' ? new Date(val) : null;\n\n      case 'iso-8601':\n        if (typeof val === 'string') {\n          return moment(val).isValid() ? new Date(moment(val).valueOf()) : null;\n        } else if (typeof val === 'number' && this.getSQLType() === SQLTypes.TIMESTAMP) {\n          return new Date(val);\n        }\n        return null;\n\n      default:\n        return null;\n    }\n  }\n\n  public onChangeEvent(event: MatDatepickerInputEvent<Date>): void {\n    const dateRangeValue: DateRange<Date> = this.dateRangeInput.value;\n\n    if (dateRangeValue.start && dateRangeValue.end) {\n      let value = {\n        [this.startKey]: Util.parseByValueType(dateRangeValue.start, this.valueType, this.oformat),\n        [this.endKey]: Util.parseByValueType(dateRangeValue.end, this.valueType, this.oformat)\n      };\n      this.setValue(value, {\n        changeType: OValueChangeEvent.USER_CHANGE,\n        emitEvent: false,\n        emitModelToViewChange: false\n      });\n    }\n\n  }\n\n  public onClickInput(e: Event): void {\n    if (!this.textInputEnabled) {\n      this.open();\n    }\n  }\n\n  public onClickClearValue(event: Event): void {\n    super.onClickClearValue(event);\n    this.range.setValue({ [this.startKey]: null, [this.endKey]: null });\n    this.markFormGroupTouched();\n  }\n\n  protected markFormGroupTouched() {\n    Object.keys(this.range.controls).forEach((key) => {\n      const control = this.range.get(key);\n      control?.markAsTouched();\n    });\n  }\n  protected getValueAsMoment(val: any): any {\n    if (!Util.isDefined(val)) {\n      return val;\n    }\n    let result;\n    switch (true) {\n      case this.valueType === 'string' && typeof val === 'string':\n        result = moment(val, this.oformat);\n        break;\n      case this.valueType === 'date' && val instanceof Date:\n      case this.valueType === 'timestamp' && typeof val === 'number':\n      case this.valueType === 'iso-8601' && typeof val === 'string':\n        result = moment(val)\n        break;\n      case this.valueType === 'iso-8601':\n        if (typeof val !== 'string') {\n          const acceptTimestamp = typeof val === 'number' && this.getSQLType() === SQLTypes.TIMESTAMP;\n          if (acceptTimestamp) {\n            result = moment(val)\n          }\n        }\n        break;\n      default:\n        break;\n    }\n    return Util.isDefined(result) && result.isValid() ? result : undefined\n  }\n\n\n\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n  [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n\n  <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n    class=\"icon-field\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n    <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n    <mat-date-range-input #dateRangeInput [rangePicker]=\"picker\" [id]=\"getAttribute()\" [formGroup]=\"range\" [separator]=\"separator\"\n      [required]=\"isRequired\" [min]=\"oMinDate\" [max]=\"oMaxDate\" (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\">\n      <input #startDate matStartDate placeholder=\"{{ placeholderStartDay | oTranslate }}\" [value]=\"startDateValue\"\n        [formControlName]=\"startKey\" (dateChange)=\"onChangeEvent($event)\" [readonly]=\"isReadOnly || !textInputEnabled\" (focus)=\"innerOnFocus($event)\"\n        (blur)=\"innerOnBlur($event)\" [required]=\"isRequired\">\n      <input #endDate matEndDate placeholder=\"{{ placeholderEndDay | oTranslate }}\" [value]=\"endDateValue\" [formControlName]=\"endKey\"\n        (dateChange)=\"onChangeEvent($event)\" [readonly]=\"isReadOnly || !textInputEnabled\" (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\"\n        [required]=\"isRequired\">\n    </mat-date-range-input>\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    <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"isReadOnly || !enabled\"></mat-datepicker-toggle>\n    <mat-date-range-picker #picker [disabled]=\"isReadOnly || !enabled\" [class.read-only]=\"isReadOnly\" [touchUi]=\"touchUi\" [dateClass]=\"dateClass\"></mat-date-range-picker>\n\n    <mat-error *oMatError=\"hasError('required')\">\n      {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('dateRange')\">\n      {{ 'FORM_VALIDATION.DATERANGE_INVALID' | oTranslate }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('dateRangeParse')\">\n      {{ 'FORM_VALIDATION.DATE_PARSE' | oTranslate }} : {{ getErrorValue('dateRangeParse', 'format') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('dateRangeMin')\">\n      {{ 'FORM_VALIDATION.DATERANGE_MIN' | oTranslate }} : {{ getErrorValue('dateRangeMin', 'dateMin') }}\n    </mat-error>\n    <mat-error *oMatError=\"hasError('dateRangeMax')\">\n      {{ 'FORM_VALIDATION.DATERANGE_MAX' | oTranslate }} : {{ getErrorValue('dateRangeMax', 'dateMax') }}\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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OSharedModule } from '../../../shared/shared.module';\nimport { ODateRangeInputComponent } from './o-daterange-input.component';\n\n@NgModule({\n  declarations: [ODateRangeInputComponent],\n  imports: [CommonModule, OSharedModule],\n  exports: [ODateRangeInputComponent]\n})\nexport class ODateRangeInputModule { }\n","import { HttpClient, HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, Injector, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { TranslateLoader, TranslateModule, TranslateParser } from '@ngx-translate/core';\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\n\nimport { OBarMenuModule } from '../components/bar-menu/o-bar-menu.module';\nimport { OBreadcrumbModule } from '../components/breadcrumb/o-breadcrumb.module';\nimport { OButtonToggleModule } from '../components/button-toggle/o-button-toggle.module';\nimport { OButtonModule } from '../components/button/o-button.module';\nimport { OCardMenuItemModule } from '../components/card-menu-item/o-card-menu-item.module';\nimport { OColumnCollapsibleModule } from '../components/container/column-collapsible/o-column-collapsible.module';\nimport { OColumnModule } from '../components/container/column/o-column.module';\nimport { ORowCollapsibleModule } from '../components/container/row-collapsible/o-row-collapsible.module';\nimport { ORowModule } from '../components/container/row/o-row.module';\nimport { OContextMenuModule } from '../components/contextmenu/o-context-menu.module';\nimport { ODualListSelectorModule } from '../components/dual-list-selector/o-dual-list-selector.module';\nimport { OExpandableContainerModule } from '../components/expandable-container/o-expandable-container.module';\nimport { OFilterBuilderModule } from '../components/filter-builder/o-filter-builder.module';\nimport { OFormContainerModule } from '../components/form-container/o-form-container.module';\nimport { OFormModule } from '../components/form/o-form.module';\nimport { OGridModule } from '../components/grid/o-grid.module';\nimport { OImageModule } from '../components/image/o-image.module';\nimport { OCheckboxModule } from '../components/input/checkbox/o-checkbox.module';\nimport { OComboModule } from '../components/input/combo/o-combo.module';\nimport { OCurrencyInputModule } from '../components/input/currency-input/o-currency-input.module';\nimport { ODateInputModule } from '../components/input/date-input/o-date-input.module';\nimport { ODateRangeLegacyInputModule } from '../components/input/date-range-legacy/o-daterange-input.module';\nimport { OEmailInputModule } from '../components/input/email-input/o-email-input.module';\nimport { OFileInputModule } from '../components/input/file-input/o-file-input.module';\nimport { OHourInputModule } from '../components/input/hour-input/o-hour-input.module';\nimport { OHTMLInputModule } from '../components/input/html-input/o-html-input.module';\nimport { OIntegerInputModule } from '../components/input/integer-input/o-integer-input.module';\nimport { OListPickerModule } from '../components/input/listpicker/o-list-picker.module';\nimport { ONIFInputModule } from '../components/input/nif-input/o-nif-input.module';\nimport { OPasswordInputModule } from '../components/input/password-input/o-password-input.module';\nimport { OPercentInputModule } from '../components/input/percent-input/o-percent-input.module';\nimport { OPhoneInputModule } from '../components/input/phone-input/o-phone-input.module';\nimport { ORadioModule } from '../components/input/radio/o-radio.module';\nimport { ORealInputModule } from '../components/input/real-input/o-real-input.module';\nimport { OSearchInputModule } from '../components/input/search-input/o-search-input.module';\nimport { OSlideToggleModule } from '../components/input/slide-toggle/o-slide-toggle.module';\nimport { OSliderModule } from '../components/input/slider/o-slider.module';\nimport { OTextInputModule } from '../components/input/text-input/o-text-input.module';\nimport { OTextareaInputModule } from '../components/input/textarea-input/o-textarea-input.module';\nimport { OTimeInputModule } from '../components/input/time-input/o-time-input.module';\nimport { OLanguageSelectorModule } from '../components/language-selector/o-language-selector.module';\nimport { OListModule } from '../components/list/o-list.module';\nimport { ODataToolbarModule } from '../components/o-data-toolbar/o-data-toolbar.module';\nimport { OTableModule } from '../components/table/o-table.module';\nimport { OTreeModule } from '../components/tree';\nimport { OUserInfoModule } from '../components/user-info/o-user-info.module';\nimport { APP_CONFIG, AppConfig } from '../config/app-config';\nimport { OAppLayoutModule } from '../layouts/app-layout/o-app-layout.module';\nimport { OCardMenuLayoutModule } from '../layouts/card-menu-layout/o-card-menu-layout.module';\nimport { OFormLayoutManagerModule } from '../layouts/form-layout/o-form-layout-manager.module';\nimport { OPermissionsModule } from '../services/permissions/o-permissions.module';\nimport { OTranslateHttpLoader } from '../services/translate/o-translate-http-loader';\nimport { OTranslateParser } from '../services/translate/o-translate.parser';\nimport { OTranslateService } from '../services/translate/o-translate.service';\nimport { OSharedModule } from '../shared/shared.module';\nimport { Util } from '../util/util';\nimport { appInitializerFactory } from './o-providers';\nimport { ODateRangeInputModule } from '../components/input/date-range/o-daterange-input.module';\n\n@NgModule({\n  providers: [{\n    provide: APP_INITIALIZER,\n    useFactory: appInitializerFactory,\n    deps: [Injector, APP_CONFIG, OTranslateService],\n    multi: true\n  }]\n})\nexport class OntimizeWebTranslateModule { }\n\nexport const INTERNAL_ONTIMIZE_MODULES_EXPORTED: any = [\n  OntimizeWebTranslateModule,\n  OPermissionsModule,\n  // Standard modules\n  HttpClientModule,\n  OSharedModule,\n\n  // Ontimize modules\n  OBarMenuModule,\n  OBreadcrumbModule,\n  OButtonModule,\n  OButtonToggleModule,\n  OCheckboxModule,\n  OComboModule,\n  OColumnModule,\n  OColumnCollapsibleModule,\n  OContextMenuModule,\n  ORowModule,\n  ORowCollapsibleModule,\n  OFilterBuilderModule,\n  OFormModule,\n  OFormContainerModule,\n  OImageModule,\n  OCurrencyInputModule,\n  ODateInputModule,\n  OEmailInputModule,\n  OPhoneInputModule,\n  OFileInputModule,\n  OHTMLInputModule,\n  OIntegerInputModule,\n  OListPickerModule,\n  ONIFInputModule,\n  OPasswordInputModule,\n  OPercentInputModule,\n  ORealInputModule,\n  OTextInputModule,\n  OTextareaInputModule,\n  OListModule,\n  OSearchInputModule,\n  OTableModule,\n  OAppLayoutModule,\n  OFormLayoutManagerModule,\n  OUserInfoModule,\n  OLanguageSelectorModule,\n  OCardMenuItemModule,\n  OCardMenuLayoutModule,\n  OHourInputModule,\n  OTimeInputModule,\n  OGridModule,\n  ORadioModule,\n  OSlideToggleModule,\n  OSliderModule,\n  ODateRangeLegacyInputModule,\n  ODateRangeInputModule,\n  OExpandableContainerModule,\n  ODualListSelectorModule,\n  ODataToolbarModule,\n  OTreeModule\n];\n\n// AoT requires an exported function for factories\nexport function OHttpLoaderFactory(http: HttpClient, injector: Injector, appConfig: AppConfig) {\n  const i18nConf = appConfig.getI18nAssetsConfiguration();\n  let i18nPath;\n  let i18nExtension;\n  if (Util.isDefined(i18nConf)) {\n    if (Util.isDefined(i18nConf.path)) {\n      i18nPath = i18nConf.path;\n    }\n    if (Util.isDefined(i18nConf.extension)) {\n      i18nExtension = i18nConf.extension;\n    }\n  }\n  return new OTranslateHttpLoader(http, i18nPath, i18nExtension, injector);\n}\n\nexport function OTranslateParserFactory() {\n  return new OTranslateParser();\n}\n\nexport const INTERNAL_ONTIMIZE_MODULES: any = [\n  HttpClientModule,\n\n  // // Ngx-translate\n  TranslateModule.forRoot({\n    loader: {\n      provide: TranslateLoader,\n      useFactory: OHttpLoaderFactory,\n      deps: [HttpClient, Injector, AppConfig]\n    },\n    parser: {\n      provide: TranslateParser,\n      useFactory: OTranslateParserFactory\n    }\n  }),\n  // DndModule.forRoot(),\n  NgxMaterialTimepickerModule,\n  OSharedModule,\n\n  // Ontimize modules\n  OBarMenuModule,\n  OBreadcrumbModule,\n  OButtonModule,\n  OButtonToggleModule,\n  OCardMenuItemModule,\n  OColumnModule,\n  OColumnCollapsibleModule,\n  ORowModule,\n  ORowCollapsibleModule,\n  OContextMenuModule,\n  OFilterBuilderModule,\n  OFormModule,\n  OFormContainerModule,\n  OGridModule,\n  OImageModule,\n\n  OCheckboxModule,\n  OComboModule,\n  OCurrencyInputModule,\n  ODateInputModule,\n  ODateRangeLegacyInputModule,\n  OEmailInputModule,\n  OPhoneInputModule,\n  OFileInputModule,\n  OHourInputModule,\n  OHTMLInputModule,\n  OIntegerInputModule,\n  OListPickerModule,\n  ONIFInputModule,\n  OPasswordInputModule,\n  OPercentInputModule,\n  ORadioModule,\n  ORealInputModule,\n  OSearchInputModule,\n  OSlideToggleModule,\n  OTextInputModule,\n  OTextareaInputModule,\n  OTimeInputModule,\n\n  OLanguageSelectorModule,\n  OListModule,\n  OTableModule,\n  OUserInfoModule,\n\n  OAppLayoutModule,\n  OCardMenuLayoutModule,\n  OFormLayoutManagerModule,\n  OExpandableContainerModule,\n  ODualListSelectorModule\n];\n\nexport const ONTIMIZE_MODULES: any = [\n  BrowserModule,\n  BrowserAnimationsModule,\n  OntimizeWebTranslateModule,\n  OPermissionsModule\n];\n\nexport const ONTIMIZE_MODULES_WITHOUT_ANIMATIONS: any = [\n  NoopAnimationsModule,\n  OntimizeWebTranslateModule,\n  OPermissionsModule\n];\n\n","import { CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { APP_CONFIG } from './config/app-config';\nimport { INTERNAL_ONTIMIZE_MODULES, INTERNAL_ONTIMIZE_MODULES_EXPORTED } from './config/o-modules';\nimport { ONTIMIZE_PROVIDERS } from './config/o-providers';\nimport { Config } from './types/config.type';\n\n@NgModule({\n    declarations: [],\n    imports: INTERNAL_ONTIMIZE_MODULES,\n    exports: [INTERNAL_ONTIMIZE_MODULES_EXPORTED],\n    schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class OntimizeWebModule {\n  static forRoot(config: Config): ModuleWithProviders<OntimizeWebModule> {\n    return {\n      ngModule: OntimizeWebModule,\n      providers: [\n        ...ONTIMIZE_PROVIDERS,\n        { provide: APP_CONFIG, useValue: config }\n      ]\n    };\n  }\n}\n","import { NgModuleRef } from '@angular/core';\n\nexport function ontimizePostBootstrap(ngModuleRef: NgModuleRef<any>): NgModuleRef<any> {\n  const loader: HTMLElement = document && document.getElementById('loader-wrapper');\n  if (loader && loader.parentNode) {\n    loader.parentNode.removeChild(loader);\n  }\n  return ngModuleRef;\n}\n"],"names":["i1.ListItem","i2","CORE_TRANSLATIONS.MAP","i1","i3","i5.OTranslatePipe","i3.OWrapperContentMenuComponent","i2.OContextMenuOverlayService","i6.OTranslatePipe","i4.OTranslatePipe","i1.DialogService","i1.OFormConfirmExitService","i4","i5.OFormLayoutManagerContentDirective","i1.OFormBase","i6","i7.OFormNavigationComponent","i8.OTranslatePipe","i3.OFormToolbarComponent","i5","i6.OKeyboardListenerDirective","i1.OFormComponent","i1.OFormServiceComponent","i3.OTranslatePipe","i7","i8","i9.OMatErrorDirective","i10.OTranslatePipe","i1.OBarMenuBase","i3.OBarMenuItemComponent","i4.OBarMenuGroupComponent","i5.OLocaleBarMenuItemComponent","i3.OBarMenuNestedComponent","i7.OTranslatePipe","i8.ODualListSelectorDateItemComponent","i9.OTranslatePipe","i1.OFilterBuilderComponent","i9","i10","i12.OTranslatePipe","i3.OTabGroupDirective","i7.OFormLayoutManagerContentDirective","i3.OFormLayoutManagerBase","i5.OFormLayoutTabGroupComponent","i6.OFormLayoutSplitPaneComponent","i2.OSearchInputComponent","i11.ODataToolbarComponent","i12.OGridItemDirective","i13.OGridSkeletonComponent","i14.OTranslatePipe","i5.OMatErrorDirective","i6.OFileDragAndDropDirective","i11","i4.OMatErrorDirective","i11.OContextMenuDirective","i12.OContextMenuComponent","i13.OContextMenuItemComponent","i14.OComboSearchComponent","i15.OTranslatePipe","i2.OTranslatePipe","renderersMapping","i1.OComboRendererBooleanComponent","i2.OComboRendererIntegerComponent","i3.OComboRendererRealComponent","i4.OComboRendererCurrencyComponent","i5.OComboRendererDateComponent","i6.OComboRendererPercentageComponent","i7.OComboRendererIconComponent","i3.OMatErrorDirective","i4.InputRegulateDirective","i11.OTranslatePipe","i11.ODaterangepickerDirective","i12","i13","i3.CKEditorComponent","i6.OMatErrorDirective","i8.OSearchInputComponent","i10.OContextMenuDirective","i11.OContextMenuComponent","i12.OContextMenuItemComponent","i13.OTranslatePipe","i1.OListPickerRendererIntegerComponent","i2.OListPickerRendererRealComponent","i3.OListPickerRendererCurrencyComponent","i4.OListPickerRendererDateComponent","i5.OListPickerRendererPercentageComponent","i9.OContextMenuDirective","i10.OContextMenuComponent","i11.OContextMenuItemComponent","i2.ODateInputComponent","i3.OHourInputComponent","i8.ODataToolbarComponent","i9.OListSkeletonComponent","i1.OListItemComponent","i5.OSafePipe","i2.OContextMenuComponent","i3.OContextMenuItemComponent","i4.OContextMenuGroupComponent","i5.OContextMenuSeparatorComponent","i14","i15","i17.OTranslatePipe","i18.IsEmptyValuePipe","i4.ODualListSelectorComponent","i1.OTableBase","i3.OTableButtonComponent","i5.OTableOptionComponent","i3.OMatSortHeader","i4.OTableColumnResizerComponent","i5.OTableHeaderColumnFilterIconComponent","i3.OTableColumnResizerComponent","i17.OContextMenuDirective","i19.OMatSort","i20.ODataToolbarComponent","i21.OTableContextMenuComponent","i22.OTableRowDirective","i23.OTableExpandedFooterDirective","i24.OTableButtonsComponent","i25.OTableMenuComponent","i26.OTableQuickfilterComponent","i27.OTableHeaderComponent","i28.OTableHeaderSelectAllComponent","i29.OTableSkeletonComponent","i30.OTranslatePipe","i31.OTableRowClassPipe","map","i11.OTreeMenuComponent","i2.OLanguageSelectorComponent","i3.OUserInfoComponent","i6.OLanguageSelectorComponent","i6.OAppSidenavMenuItemComponent","i7.OAppSidenavMenuGroupComponent","i8.OAppSidenavImageComponent","i9.OAppSidenavMenuItemComponent","i3.OAppSidenavComponent","i4.OAppHeaderComponent","i2.OCardMenuItemComponent","i1.OFormLayoutManagerComponent","i4.OSharedModule","i5.OBarMenuModule","i6.OBreadcrumbModule","i7.OButtonModule","i8.OButtonToggleModule","i9.OCardMenuItemModule","i10.OColumnModule","i11.OColumnCollapsibleModule","i12.ORowModule","i13.ORowCollapsibleModule","i14.OContextMenuModule","i15.OFilterBuilderModule","i16.OFormModule","i17.OFormContainerModule","i18.OGridModule","i19.OImageModule","i20.OCheckboxModule","i21.OComboModule","i22.OCurrencyInputModule","i23.ODateInputModule","i24.ODateRangeLegacyInputModule","i25.OEmailInputModule","i26.OPhoneInputModule","i27.OFileInputModule","i28.OHourInputModule","i29.OHTMLInputModule","i30.OIntegerInputModule","i31.OListPickerModule","i32.ONIFInputModule","i33.OPasswordInputModule","i34.OPercentInputModule","i35.ORadioModule","i36.ORealInputModule","i37.OSearchInputModule","i38.OSlideToggleModule","i39.OTextInputModule","i40.OTextareaInputModule","i41.OTimeInputModule","i42.OLanguageSelectorModule","i43.OListModule","i44.OTableModule","i45.OUserInfoModule","i46.OAppLayoutModule","i47.OCardMenuLayoutModule","i48.OFormLayoutManagerModule","i49.OExpandableContainerModule","i50.ODualListSelectorModule","i51.OntimizeWebTranslateModule","i52.OPermissionsModule","i53.OSliderModule","i54.ODateRangeInputModule","i55.ODataToolbarModule","i56.OTreeModule"],"mappings":"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"}