{"version":3,"file":"systelab-components.mjs","sources":["../../../projects/systelab-components/src/lib/slider/slider.component.ts","../../../projects/systelab-components/src/lib/slider/slider.component.html","../../../projects/systelab-components/src/lib/switch/switch.component.ts","../../../projects/systelab-components/src/lib/switch/switch.component.html","../../../projects/systelab-components/src/lib/contextmenu/context-menu-action-data.ts","../../../projects/systelab-components/src/lib/contextmenu/abstract-context.component.ts","../../../projects/systelab-components/src/lib/contextmenu/abstract-context-menu.component.ts","../../../projects/systelab-components/src/lib/contextmenu/context-menu-item.component.ts","../../../projects/systelab-components/src/lib/contextmenu/context-menu-item.component.html","../../../projects/systelab-components/src/lib/contextmenu/context-menu-submenu-item.component.ts","../../../projects/systelab-components/src/lib/contextmenu/context-menu-submenu-item.component.html","../../../projects/systelab-components/src/lib/contextmenu/context-menu.component.ts","../../../projects/systelab-components/src/lib/contextmenu/context-menu.component.html","../../../projects/systelab-components/src/lib/twolist/datafilter.pipe.ts","../../../projects/systelab-components/src/lib/twolist/two-list-utilities.ts","../../../projects/systelab-components/src/lib/button/button.component.ts","../../../projects/systelab-components/src/lib/button/button.component.html","../../../projects/systelab-components/src/lib/sortable-list/abstract-sortable-list.component.ts","../../../projects/systelab-components/src/lib/twolist/two-list-sortable-list.component.ts","../../../projects/systelab-components/src/lib/sortable-list/abstract-sortable-list.component.html","../../../projects/systelab-components/src/lib/twolist/two-list.component.ts","../../../projects/systelab-components/src/lib/twolist/two-list.component.html","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-context-menu-cell-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-context-menu-cell-renderer.component.html","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-header-context-menu-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-header-context-menu-renderer.component.html","../../../projects/systelab-components/src/lib/grid/options/grid-column-options.ts","../../../projects/systelab-components/src/lib/modal/dialog/modal-context.ts","../../../projects/systelab-components/src/lib/modal/dialog/dialog-ref.ts","../../../projects/systelab-components/src/lib/tabs/tab.component.ts","../../../projects/systelab-components/src/lib/tabs/tabs.component.ts","../../../projects/systelab-components/src/lib/systelab-components.module.config.ts","../../../projects/systelab-components/src/lib/modal/systelab-dialog-config.ts","../../../projects/systelab-components/src/lib/modal/header/dialog-header.component.ts","../../../projects/systelab-components/src/lib/modal/header/dialog-header.component.html","../../../projects/systelab-components/src/lib/modal/bottom/dialog-bottom.component.ts","../../../projects/systelab-components/src/lib/modal/bottom/dialog-bottom.component.html","../../../projects/systelab-components/src/lib/grid/options/grid-column-options-dialog.component.ts","../../../projects/systelab-components/src/lib/grid/options/grid-column-options-dialog.component.html","../../../projects/systelab-components/src/lib/utilities/styles.util.service.ts","../../../projects/systelab-components/src/lib/utilities/color.util.service.ts","../../../projects/systelab-components/src/lib/combobox/renderer/combobox-favourite-renderer.component.ts","../../../projects/systelab-components/src/lib/combobox/renderer/combobox-favourite-renderer.component.html","../../../projects/systelab-components/src/lib/helper/autosize-grid-helper.ts","../../../projects/systelab-components/src/lib/combobox/abstract-combobox.component.ts","../../../projects/systelab-components/src/lib/combobox/renderer/combobox-input-renderer.ts","../../../projects/systelab-components/src/lib/colorpicker/color-cell-renderer.component.ts","../../../projects/systelab-components/src/lib/colorpicker/color-renderer.component.html","../../../projects/systelab-components/src/lib/combobox/renderer/combobox-input-renderer.component.ts","../../../projects/systelab-components/src/lib/colorpicker/colorpicker.component.ts","../../../projects/systelab-components/src/lib/combobox/abstract-combobox.component.html","../../../projects/systelab-components/src/lib/select/all-yes-no-combobox.component.ts","../../../projects/systelab-components/src/lib/select/no-yes-combobox-component.ts","../../../projects/systelab-components/src/lib/select/period-combobox.component.ts","../../../projects/systelab-components/src/lib/select/gender-combobox.component.ts","../../../projects/systelab-components/src/lib/modal/dialog/dialog.service.ts","../../../projects/systelab-components/src/lib/applicationframe/header/app-header.component.ts","../../../projects/systelab-components/src/lib/applicationframe/header/app-header.component.html","../../../projects/systelab-components/src/lib/applicationframe/sidebar/app-sidebar-large.component.ts","../../../projects/systelab-components/src/lib/applicationframe/sidebar/app-sidebar-large.component.html","../../../projects/systelab-components/src/lib/datepicker/date-transformer.service.ts","../../../projects/systelab-components/src/lib/datepicker/datepicker.component.ts","../../../projects/systelab-components/src/lib/datepicker/datepicker.component.html","../../../projects/systelab-components/src/lib/spinner/touch.spin-values.ts","../../../projects/systelab-components/src/lib/spinner/spinner.component.ts","../../../projects/systelab-components/src/lib/spinner/spinner.component.html","../../../projects/systelab-components/src/lib/datepicker/datepicker-time.component.ts","../../../projects/systelab-components/src/lib/datepicker/datepicker-time.component.html","../../../projects/systelab-components/src/lib/select/select.component.ts","../../../projects/systelab-components/src/lib/tooltip/tooltip.directive.ts","../../../projects/systelab-components/src/lib/applicationframe/sidebar/app-sidebar-small.component.ts","../../../projects/systelab-components/src/lib/applicationframe/sidebar/app-sidebar-small.component.html","../../../projects/systelab-components/src/lib/applicationframe/application-frame.component.ts","../../../projects/systelab-components/src/lib/applicationframe/application-frame.component.html","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-context-menu-action-data.ts","../../../projects/systelab-components/src/lib/grid/abstract-grid.component.ts","../../../projects/systelab-components/src/lib/grid/abstract-api-grid.component.ts","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-context-menu-component.ts","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-header-context-menu.component.ts","../../../projects/systelab-components/src/lib/searcher/searcher.table.component.ts","../../../projects/systelab-components/src/lib/grid/abstract-grid.component.html","../../../projects/systelab-components/src/lib/directives/keyup-debounce.directive.ts","../../../projects/systelab-components/src/lib/searcher/searcher.dialog.component.ts","../../../projects/systelab-components/src/lib/searcher/searcher.dialog.component.html","../../../projects/systelab-components/src/lib/calendar/calendar-header.component.ts","../../../projects/systelab-components/src/lib/calendar/calendar-header.component.html","../../../projects/systelab-components/src/lib/calendar/calendar-table.component.ts","../../../projects/systelab-components/src/lib/calendar/calendar-table.component.html","../../../projects/systelab-components/src/lib/calendar/calendar-footer.component.ts","../../../projects/systelab-components/src/lib/calendar/calendar-footer.component.html","../../../projects/systelab-components/src/lib/calendar/calendar-dialog.component.ts","../../../projects/systelab-components/src/lib/calendar/calendar-dialog.component.html","../../../projects/systelab-components/src/lib/loading/loading.component.ts","../../../projects/systelab-components/src/lib/loading/loading.component.html","../../../projects/systelab-components/src/lib/toggle-button/toggle-button.component.ts","../../../projects/systelab-components/src/lib/toggle-button/toggle-button.component.html","../../../projects/systelab-components/src/lib/file-selector/file-selector.component.ts","../../../projects/systelab-components/src/lib/file-selector/file-selector.component.html","../../../projects/systelab-components/src/lib/timeline/timeline.component.ts","../../../projects/systelab-components/src/lib/timeline/timeline.component.html","../../../projects/systelab-components/src/lib/navbar/navbar.component.ts","../../../projects/systelab-components/src/lib/navbar/navbar.component.html","../../../projects/systelab-components/src/lib/modal/message-popup/message-with-icon.component.ts","../../../projects/systelab-components/src/lib/modal/message-popup/message-with-icon.component.html","../../../projects/systelab-components/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/systelab-components/src/lib/breadcrumb/breadcrumb.component.html","../../../projects/systelab-components/src/lib/week-selector/week-selector.component.ts","../../../projects/systelab-components/src/lib/week-selector/week-selector.component.html","../../../projects/systelab-components/src/lib/month-selector/month-selector.component.ts","../../../projects/systelab-components/src/lib/month-selector/month-selector.component.html","../../../projects/systelab-components/src/lib/signature-canvas/signature-canvas.component.ts","../../../projects/systelab-components/src/lib/signature-canvas/signature-canvas.component.html","../../../projects/systelab-components/src/lib/percentage-circle/percentage-circle.component.ts","../../../projects/systelab-components/src/lib/percentage-circle/percentage-circle.component.html","../../../projects/systelab-components/src/lib/loading/loading.service.ts","../../../projects/systelab-components/src/lib/select/time-unit-combobox.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/checkbox/checkbox-cell-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/checkbox/checkbox-cell-renderer.component.html","../../../projects/systelab-components/src/lib/wizard-steps/wizard-steps.component.ts","../../../projects/systelab-components/src/lib/wizard-steps/wizard-steps.component.html","../../../projects/systelab-components/src/lib/grid/custom-cells/spinner/spinner-cell-editor.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/spinner/spinner-cell-editor.component.html","../../../projects/systelab-components/src/lib/grid/custom-cells/spinner/spinner-cell-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/input/input-cell-editor.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/input/input-cell-editor.component.html","../../../projects/systelab-components/src/lib/grid/custom-cells/checkbox/checkbox-cell-editor.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/checkbox/checkbox-cell-editor.component.html","../../../projects/systelab-components/src/lib/grid/custom-cells/decimal-input/decimal-input-cell-editor.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/decimal-input/decimal-input-cell-editor.component.html","../../../projects/systelab-components/src/lib/listbox/renderer/abstract-tree-listbox-renderer.component.ts","../../../projects/systelab-components/src/lib/listbox/renderer/abstract-tree-listbox-renderer.component.html","../../../projects/systelab-components/src/lib/listbox/abstract-listbox.component.ts","../../../projects/systelab-components/src/lib/listbox/gender-listbox.component.ts","../../../projects/systelab-components/src/lib/listbox/abstract-listbox.component.html","../../../projects/systelab-components/src/lib/numpad/numpad.dialog.component.ts","../../../projects/systelab-components/src/lib/numpad/numpad.dialog.component.html","../../../projects/systelab-components/src/lib/directives/autofocus.directive.ts","../../../projects/systelab-components/src/lib/numpad/numpad.component.ts","../../../projects/systelab-components/src/lib/numpad/numpad.component.html","../../../projects/systelab-components/src/lib/listbox/listbox.component.ts","../../../projects/systelab-components/src/lib/contextpanel/context-panel.component.ts","../../../projects/systelab-components/src/lib/contextpanel/context-panel.component.html","../../../projects/systelab-components/src/lib/date-range-picker/date-range-picker.component.ts","../../../projects/systelab-components/src/lib/date-range-picker/date-range-picker.component.html","../../../projects/systelab-components/src/lib/modal/message-popup/message-popup-view.component.ts","../../../projects/systelab-components/src/lib/modal/message-popup/message-popup-view.component.html","../../../projects/systelab-components/src/lib/paginator/paginator-page.component.ts","../../../projects/systelab-components/src/lib/paginator/paginator-page.component.html","../../../projects/systelab-components/src/lib/paginator/paginator.component.ts","../../../projects/systelab-components/src/lib/paginator/paginator.component.html","../../../projects/systelab-components/src/lib/modal/message-popup/message-popup.service.ts","../../../projects/systelab-components/src/lib/chip-button/chip-button.component.ts","../../../projects/systelab-components/src/lib/chip-button/chip-button.component.html","../../../projects/systelab-components/src/lib/grid/custom-cells/stacked-bar/stacked-bar-cell-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/stacked-bar/stacked-bar-cell-renderer.component.html","../../../projects/systelab-components/src/lib/chips/chips.component.ts","../../../projects/systelab-components/src/lib/chips/chips.component.html","../../../projects/systelab-components/src/lib/spy-menu/spy-menu.component.ts","../../../projects/systelab-components/src/lib/spy-menu/spy-menu.component.html","../../../projects/systelab-components/src/lib/spy-menu/scroll-spy.directive.ts","../../../projects/systelab-components/src/lib/toast/toast-animation.ts","../../../projects/systelab-components/src/lib/toast/toast-config.ts","../../../projects/systelab-components/src/lib/toast/toast-ref.ts","../../../projects/systelab-components/src/lib/toast/toast.service.ts","../../../projects/systelab-components/src/lib/toast/toast.component.ts","../../../projects/systelab-components/src/lib/toast/toast.component.html","../../../projects/systelab-components/src/lib/toggle-selector/toggle-selector.component.ts","../../../projects/systelab-components/src/lib/toggle-selector/toggle-selector.component.html","../../../projects/systelab-components/src/lib/slider-double-range/slider-double-range.component.ts","../../../projects/systelab-components/src/lib/slider-double-range/slider-double-range.component.html","../../../projects/systelab-components/src/lib/directives/draggable.directive.ts","../../../projects/systelab-components/src/lib/directives/resizable.directive.ts","../../../projects/systelab-components/src/lib/image-viewer/image-viewer.component.ts","../../../projects/systelab-components/src/lib/image-viewer/image-viewer.component.html","../../../projects/systelab-components/src/lib/helper/translation-helper.ts","../../../projects/systelab-components/src/lib/helper/number-helper.ts","../../../projects/systelab-components/src/lib/directives/numpad-decimal-numeric.directive.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/positive-integer/positive-integer-input-cell-editor.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/positive-integer/positive-integer-input-cell-editor.component.html","../../../projects/systelab-components/src/lib/directives/test-id.directive.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/searcher-tree-header/searcher-tree-header-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/searcher-tree-header/searcher-tree-header-renderer.component.html","../../../projects/systelab-components/src/lib/accordion/accordion.component.ts","../../../projects/systelab-components/src/lib/accordion/accordion.component.html","../../../projects/systelab-components/src/lib/systelab-components.module.ts","../../../projects/systelab-components/src/lib/contextmenu/abstract-context-menu-option.ts","../../../projects/systelab-components/src/lib/contextmenu/context-menu-option.ts","../../../projects/systelab-components/src/lib/applicationframe/sidebar/app-sidebar.component.ts","../../../projects/systelab-components/src/lib/searcher/searcher.dialog.parameters.ts","../../../projects/systelab-components/src/lib/searcher/abstract-searcher.ts","../../../projects/systelab-components/src/lib/searcher/abstract-generic.searcher.component.ts","../../../projects/systelab-components/src/lib/searcher/abstract-searcher.component.ts","../../../projects/systelab-components/src/lib/combobox/abstract-api-combobox.component.ts","../../../projects/systelab-components/src/lib/combobox/autocomplete/autocomplete-api-combobox.component.ts","../../../projects/systelab-components/src/lib/combobox/tree/abstract-api-tree-combobox.component.ts","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-context-menu-option.ts","../../../projects/systelab-components/src/lib/listbox/abstract-api-listbox.component.ts","../../../projects/systelab-components/src/lib/listbox/abstract-api-tree-listbox.component.ts","../../../projects/systelab-components/src/lib/add-remove-list/abstract-add-remove-list.component.ts","../../../projects/systelab-components/src/lib/tree/tree-node.ts","../../../projects/systelab-components/src/lib/tree/abstract-tree.component.ts","../../../projects/systelab-components/src/lib/spy-menu/spy-menu-item.ts","../../../projects/systelab-components/src/lib/forms/validators/email-validator.directive.ts","../../../projects/systelab-components/src/lib/forms/validators/phone-validator.directive.ts","../../../projects/systelab-components/src/lib/forms/validators/url-validator.directive.ts","../../../projects/systelab-components/src/lib/theme/theme.config.ts","../../../projects/systelab-components/src/lib/theme/theme.service.ts","../../../projects/systelab-components/src/public-api.ts","../../../projects/systelab-components/src/systelab-components.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-slider',\n\ttemplateUrl: 'slider.component.html'\n})\nexport class SliderComponent {\n\n\t@Input() public min = 0;\n\t@Input() public max = 100;\n\t@Input() public step = 1;\n\t@Input() public continuous = true;\n\n\t@Input() public value = 0;\n\t@Output() public valueChange = new EventEmitter();\n\n\t@ViewChild('range', {static: false}) element: ElementRef;\n\n\tpublic sliderChangeEvent(event: any) {\n\t\tconst v = this.element.nativeElement.value;\n\t\tif (v !== this.value) {\n\t\t\tthis.value = v;\n\t\t\tthis.valueChange.emit(this.value);\n\t\t}\n\t}\n\n\tpublic sliderInputEvent(event: any) {\n\t\tif (this.continuous) {\n\t\t\tthis.value = this.element.nativeElement.value;\n\t\t\tthis.valueChange.emit(this.value);\n\t\t}\n\t}\n}\n","<input #range type=\"range\" min=\"{{ min }}\" max=\"{{ max }}\" value=\"{{ value }}\" step=\"{{ step }}\"\n  (change)=\"sliderChangeEvent($event)\" (input)=\"sliderInputEvent($event)\" class=\"slab-slider\" id=\"myRange\" />","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-switch',\n\ttemplateUrl: 'switch.component.html'\n})\nexport class SwitchComponent {\n\tprivate checked = false;\n\n\t@Input() get isChecked() {\n\t\treturn this.checked;\n\t}\n\n\tset isChecked(val: boolean) {\n\t\tthis.checked = val;\n\t\tthis.isCheckedChange.emit(this.checked);\n\t}\n\n\t@Output() public isCheckedChange = new EventEmitter();\n\n\t@Input() public disabled = false;\n\n\t@HostListener('click')\n\tpublic onToggle() {\n\t\tif (!this.disabled) {\n\t\t\tthis.isChecked = !this.isChecked;\n\t\t}\n\t}\n\n\tpublic doKeyDown(event: KeyboardEvent) {\n\t\tif (event.key === ' ') {\n\t\t\tif (!this.disabled) {\n\t\t\t\tthis.isChecked = !this.isChecked;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n}\n","<span class=\"slab-switch\" [tabIndex]=\"disabled?-1:0\" [class.checked]=\"isChecked\" [class.disabled]=\"disabled\" (keydown)=\"doKeyDown($event)\">\n    <span class=\"slab-tick\"></span>\n    <input type=\"checkbox\" name=\"checkbox\" [checked]=\"isChecked\" [disabled]=\"disabled\" style=\"display:none\">\n    <span class=\"slab-switch-text\"></span>\n</span>\n","export class ContextMenuActionData {\n\n\tconstructor( public elementId: string, public actionId: string) {\n\t}\n\n}\n","import { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\n\ndeclare var jQuery: any;\n\n@Directive()\nexport abstract class AbstractContextComponent<T> implements OnInit, OnDestroy {\n\n\t@ViewChild('dropdownparent', {static: true}) public dropdownParent: ElementRef;\n\t@ViewChild('dropdownmenu', {static: false}) public dropdownMenuElement: ElementRef;\n\t@ViewChild('dropdown', {static: false}) public dropdownElement: ElementRef;\n\t@ViewChild('ngcontent', {static: false}) public ngcontent: ElementRef;\n\n\t@Output() public action = new EventEmitter();\n\n\t@Input() public elementID = (Math.floor(Math.random() * (999999999999 - 1))).toString();\n\t@Input() public fontSize: string;\n\t@Input() public fontColor: string;\n\t@Input() public isEmbedded = false;\n\t@Input() public overflow = false;\n\n\tpublic destroyWheelListener: Function;\n\tpublic destroyMouseListener: Function;\n\tpublic destroyKeyListener: Function;\n\tpublic scrollHandler: any;\n\tpublic isOpened = false;\n\tprotected previousActionId: string;\n\tprotected previousShownMenu: Array<string> = [];\n\tprotected previousMenuWidth: Array<number> = [];\n\tprotected lastMenuLevel = 0;\n\n\tprotected constructor(protected el: ElementRef, protected myRenderer: Renderer2, protected cdr: ChangeDetectorRef) {\n\t}\n\n\tpublic ngOnInit(): void {\n\t\tjQuery(this.dropdownParent.nativeElement)\n\t\t\t.on('hide.bs.dropdown', this.actionsAfterCloseDropDown.bind(this));\n\t}\n\n\t@HostListener('window:resize', ['$event'])\n\tpublic onResize(event: any): void {\n\t\tif (this.isDropDownOpened()) {\n\t\t\tthis.closeDropDown();\n\t\t}\n\t}\n\n\tpublic isDropDownOpened(): boolean {\n\t\treturn this.dropdownParent.nativeElement.className.includes('show');\n\t}\n\n\tprotected loop(x: number, y: number): void {\n\t\tif (this.isDropDownOpened()) {\n\t\t\tthis.myRenderer.setStyle(this.dropdownMenuElement.nativeElement, 'position', 'fixed');\n\t\t\tif (this.isEmbedded) {\n\t\t\t\tthis.myRenderer.setStyle(this.dropdownMenuElement.nativeElement, 'transform', 'unset');\n\t\t\t}\n\t\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'position', 'absolute');\n\t\t\ty = y - this.dropdownParent.nativeElement.offsetHeight;\n\t\t\tif (y + this.dropdownElement.nativeElement.offsetHeight > window.innerHeight) {\n\t\t\t\ty = y - this.dropdownElement.nativeElement.offsetHeight;\n\t\t\t\tif (y < 0) {\n\t\t\t\t\ty = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (x + this.dropdownElement.nativeElement.offsetWidth > window.innerWidth) {\n\t\t\t\tx = x - this.dropdownElement.nativeElement.offsetWidth;\n\t\t\t}\n\t\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'top', y + 'px');\n\t\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'left', x + 'px');\n\t\t\tthis.myRenderer.setStyle(this.dropdownMenuElement.nativeElement, 'visibility', 'visible');\n\t\t\tthis.addListeners();\n\n\t\t} else {\n\t\t\tsetTimeout(() => this.loop(x, y), 10);\n\t\t}\n\t}\n\n\tpublic showDropDown(x: number, y: number): void {\n\t\tsetTimeout(() => this.loop(x, y), 10);\n\t}\n\n\tpublic resetDropDownPositionAndHeight(): void {\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'top', null);\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'left', null);\n\t}\n\n\tprotected getFirstChildLeft(selectedChild: ElementRef): number {\n\t\tlet firstChildLeft = this.dropdownElement.nativeElement.offsetWidth + 15;\n\t\tconst firstChildAbsoluteLeft = this.dropdownElement.nativeElement.offsetLeft;\n\n\t\tif (firstChildAbsoluteLeft + this.dropdownElement.nativeElement.offsetWidth +\n\t\t\tselectedChild.nativeElement.offsetWidth > window.innerWidth) {\n\t\t\tfirstChildLeft = -selectedChild.nativeElement.offsetWidth + 10;\n\t\t}\n\t\treturn firstChildLeft;\n\t}\n\n\tprotected getFirstChildLeftWithLevels(selectedChild: ElementRef, optionLevel: number, previousMenuWidth: Array<number>): number {\n\t\tlet firstChildLeft;\n\t\tlet accumulativeLeft = 0;\n\t\tconst firstChildAbsoluteLeft = this.dropdownElement.nativeElement.offsetLeft;\n\n\t\tif (optionLevel < 1) {\n\t\t\tfirstChildLeft = this.dropdownElement.nativeElement.offsetWidth + 12;\n\t\t} else {\n\t\t\tfirstChildLeft = previousMenuWidth[optionLevel - 1] + 12;\n\t\t\tfor (let i = 0; i < optionLevel; i++) {\n\t\t\t\taccumulativeLeft = accumulativeLeft + previousMenuWidth[i];\n\t\t\t}\n\t\t}\n\n\t\tif (firstChildAbsoluteLeft + this.dropdownElement.nativeElement.offsetWidth + accumulativeLeft +\n\t\t\tselectedChild.nativeElement.offsetWidth > window.innerWidth) {\n\t\t\tfirstChildLeft = -selectedChild.nativeElement.offsetWidth + 15;\n\t\t}\n\t\treturn firstChildLeft;\n\t}\n\n\tprotected getFirstChildTop(event: any, selectedChild: ElementRef): number {\n\t\tconst firstChildAbsoluteTop = event.clientY;\n\t\tlet firstChildRelativeTop = event.target.offsetTop;\n\n\t\tif (firstChildAbsoluteTop + selectedChild.nativeElement.offsetHeight > window.innerHeight) {\n\t\t\tfirstChildRelativeTop = firstChildRelativeTop - selectedChild.nativeElement.offsetHeight;\n\t\t}\n\t\treturn firstChildRelativeTop;\n\t}\n\n\tpublic actionsAfterCloseDropDown(): void {\n\t\tthis.previousShownMenu = [];\n\t\tthis.previousMenuWidth = [];\n\t\tthis.lastMenuLevel = 0;\n\t\tthis.previousActionId = undefined;\n\t\tthis.isOpened = false;\n\t\tthis.cdr.detectChanges();\n\t\tthis.removeScrollHandler();\n\t\tif (this.destroyWheelListener) {\n\t\t\tthis.destroyWheelListener();\n\t\t}\n\t\tif (this.destroyKeyListener) {\n\t\t\tthis.destroyKeyListener();\n\t\t}\n\t\tif (this.destroyMouseListener) {\n\t\t\tthis.destroyMouseListener();\n\t\t}\n\t\tthis.resetDropDownPositionAndHeight();\n\t}\n\n\tpublic closeDropDown(): void {\n\t\tif (this.isDropDownOpened()) {\n\t\t\tthis.myRenderer.removeAttribute(this.dropdownParent.nativeElement, 'aria-expanded');\n\t\t\tthis.myRenderer.removeClass(this.dropdownParent.nativeElement, 'show');\n\t\t\tthis.myRenderer.removeClass(this.dropdownMenuElement.nativeElement, 'show');\n\t\t\tthis.myRenderer.setStyle(this.dropdownMenuElement.nativeElement, 'visibility', 'hidden');\n\t\t}\n\t\tthis.actionsAfterCloseDropDown();\n\t}\n\n\tprotected addListeners(): void {\n\t\tthis.addScrollHandler();\n\t\tthis.destroyMouseListener = this.myRenderer.listen('window', 'click', (evt: MouseEvent) => {\n\t\t\tthis.handleMouseEvents(evt);\n\t\t});\n\t\tthis.destroyWheelListener = this.myRenderer.listen('window', 'scroll', (evt: WheelEvent) => {\n\t\t\tthis.handleWheelEvents(evt);\n\t\t});\n\t\tthis.destroyKeyListener = this.myRenderer.listen('document', 'keydown', (evt: KeyboardEvent) => {\n\t\t\tthis.handleKeyboardEvents(evt);\n\t\t});\n\t}\n\n\tprotected handleKeyboardEvents(event: KeyboardEvent): void {\n\t\tif (event.key === 'Escape') {\n\t\t\tif (this.isDropDownOpened()) {\n\t\t\t\tthis.closeDropDown();\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected handleWheelEvents(event: WheelEvent): void {\n\t\tthis.checkTargetAndClose(event.target);\n\t}\n\n\tprotected handleMouseEvents(event: MouseEvent): void {\n\t\tthis.checkTargetAndClose(event.target);\n\t}\n\n\tprotected scroll(event: any): void {\n\t\tthis.checkTargetAndClose(event.target);\n\t}\n\n\tprotected checkTargetAndClose(target: any): void {\n\t\tif (!this.checkIfNgContent(target)) {\n\t\t\tif (this.isDropDownOpened()) {\n\t\t\t\tthis.closeDropDown();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic ngContentStopPropagation(event: any): void {\n\t\tevent.stopPropagation();\n\t}\n\n\tprotected checkIfNgContent(target: any): boolean {\n\t\tlet currentElement = target;\n\t\twhile (currentElement !== this.dropdownElement && currentElement) {\n\t\t\tif (currentElement === this.ngcontent.nativeElement) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tcurrentElement = currentElement.parentElement;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected addScrollHandler(): void {\n\t\tthis.scrollHandler = this.scroll.bind(this);\n\t\twindow.addEventListener('scroll', this.scrollHandler, true);\n\t}\n\n\tprotected removeScrollHandler(): void {\n\t\twindow.removeEventListener('scroll', this.scrollHandler, true);\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis.removeScrollHandler();\n\t}\n\n\tpublic dotsClicked(event: MouseEvent): void {\n\t\tif (!this.isDropDownOpened()) {\n\t\t\tthis.elementID = (Math.floor(Math.random() * (999999999999 - 1))).toString();\n\t\t\tthis.hideDivUntilIsPositioned(event.clientX, event.clientY);\n\t\t}\n\t}\n\n\tprotected hideDivUntilIsPositioned(x: number, y: number): void {\n\t\t// hide the div until is positioned in event x y position to avoid flick\n\t\tthis.myRenderer.setStyle(this.dropdownMenuElement.nativeElement, 'visibility', 'hidden');\n\t\tthis.isOpened = true;\n\t\tthis.cdr.detectChanges();\n\t\tthis.showDropDown(x, y);\n\t}\n\n\tpublic open(event: MouseEvent): void {\n\t\tjQuery('#' + this.elementID)\n\t\t\t.dropdown('toggle');\n\t\tif (!this.isDropDownOpened()) {\n\t\t\t// Add class manually because is not set when jquery.dropdwon toogle is executed\n\t\t\tthis.myRenderer.addClass(this.dropdownParent.nativeElement, 'show');\n\t\t\tthis.hideDivUntilIsPositioned(event.clientX, event.clientY);\n\t\t}\n\t}\n\n\tpublic toggle(elementID: string): void {\n\t\tjQuery('#' + elementID)\n\t\t\t.toggle();\n\t}\n}\n","import { Directive, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren, OnInit } from '@angular/core';\nimport { AbstractContextComponent } from './abstract-context.component';\nimport { ContextMenuOption } from './context-menu-option';\n\n@Directive()\nexport abstract class AbstractContextMenuComponent<T> extends AbstractContextComponent<T> implements OnInit {\n\n\t@ViewChildren('childdropdownmenu') public childDropdownMenuElement: QueryList<ElementRef>;\n\t@ViewChild('scrollableList', {static: false}) public scrollableList: ElementRef;\n\n\t@Output() public override action = new EventEmitter();\n\n\tpublic readonly levelSeparator = '_|_';\n\tpublic hasIcons = false;\n\tprivate contextMenuOptionsList: Array<T>;\n\n\t@Input()\n\tset contextMenuOptions(value: Array<T>) {\n\t\tthis.contextMenuOptionsList = value;\n\t\tthis.checkIfHasIcons();\n\t}\n\n\tget contextMenuOptions(): Array<T> {\n\t\treturn this.contextMenuOptionsList;\n\t}\n\n\tpublic override ngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tthis.checkIfHasIcons();\n\t}\n\n\tpublic override dotsClicked(event: MouseEvent): void {\n\t\tif (this.existsAtLeastOneActionEnabled()) {\n\t\t\tsuper.dotsClicked(event);\n\t\t} else {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n\n\tpublic override open(event: MouseEvent): void {\n\t\tif (this.existsAtLeastOneActionEnabled()) {\n\t\t\tsuper.open(event);\n\t\t} else {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n\n\tpublic doClick(event: any, elementID: string, action: ContextMenuOption, parent?: ContextMenuOption): void {\n\t\tif (this.isEnabled(elementID, action.actionId)) {\n\t\t\tthis.executeAction(event, elementID, action.actionId);\n\t\t}\n\t}\n\n\tpublic doClickWithAction(event: any, elementID: string, actionId: string): void {\n\t\tif (this.isEnabled(elementID, actionId)) {\n\t\t\tthis.executeAction(event, elementID, actionId);\n\t\t}\n\t}\n\n\tpublic doMouseOver(event: any, elementID: string, actionId: string): void {\n\t\tif (this.isEnabled(elementID, actionId)) {\n\t\t\tconst optionAcitionId = this.getOptionDetailsActionId(actionId);\n\n\t\t\tconst selectedChild = this.childDropdownMenuElement.toArray()\n\t\t\t\t.find((elem) => elem.nativeElement.id === (optionAcitionId + this.elementID));\n\n\t\t\tthis.showSubmenu(event, actionId, selectedChild, this.elementID);\n\t\t}\n\t}\n\n\tpublic getSelfReference(): AbstractContextMenuComponent<T> {\n\t\treturn this;\n\t}\n\n\tpublic getMenuLevel(actionId: string): number {\n\t\tconst actions: string[] = actionId ? actionId.split(this.levelSeparator) : [];\n\t\treturn actions.length - 1;\n\t}\n\n\tpublic getOptionDetailsActionId(actionId: string): string {\n\t\tconst option = this.getOption(actionId);\n\t\treturn option ? option.actionId : undefined;\n\t}\n\n\tpublic getOptionDetailsHasChildren(actionId: string): boolean {\n\t\tconst option = this.getOption(actionId);\n\t\treturn option ? option.hasChildren() : false;\n\t}\n\n\tpublic showSubmenu(event: any, actionId: string, selectedChild: ElementRef, elementId: string): void {\n\t\tconst optionActionId = this.getOptionDetailsActionId(actionId);\n\t\tconst optionHasChildren = this.getOptionDetailsHasChildren(actionId);\n\t\tconst optionLevel = this.getMenuLevel(actionId);\n\n\t\tif (optionHasChildren) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\n\t\t\tif (this.previousActionId !== optionActionId) {\n\t\t\t\tthis.previousActionId = optionActionId;\n\t\t\t\tthis.hideSubmenus(optionLevel);\n\t\t\t\tthis.lastMenuLevel = optionLevel + 1;\n\n\t\t\t\tthis.previousShownMenu.push(optionActionId + elementId);\n\n\t\t\t\tthis.toggle(optionActionId + elementId);\n\n\t\t\t\tthis.previousMenuWidth[this.lastMenuLevel - 1] = selectedChild.nativeElement.offsetWidth;\n\n\t\t\t\tconst leftPosition = this.getFirstChildLeftWithLevels(selectedChild, optionLevel, this.previousMenuWidth);\n\n\t\t\t\tthis.myRenderer.setStyle(selectedChild.nativeElement, 'top', this.getFirstChildTop(event, selectedChild) + 'px');\n\n\t\t\t\tif (selectedChild.nativeElement.getBoundingClientRect().top < 0) {\n\t\t\t\t\tthis.myRenderer.setStyle(selectedChild.nativeElement, 'top', (0 - event.clientY + selectedChild.nativeElement.parentElement.offsetTop + 10) + 'px');\n\t\t\t\t}\n\n\t\t\t\tthis.myRenderer.setStyle(selectedChild.nativeElement, 'left', leftPosition + 'px');\n\t\t\t}\n\t\t} else {\n\t\t\tthis.hideSubmenus(optionLevel);\n\t\t\tthis.lastMenuLevel = optionLevel;\n\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tthis.previousActionId = optionActionId;\n\n\t\t}\n\t}\n\n\tprotected checkIfHasIcons(): void {\n\t\tthis.hasIcons = false;\n\t}\n\n\tprotected override checkTargetAndClose(target: any): void {\n\t\tif (!this.checkIfNgContent(target)) {\n\t\t\tif (target !== this.scrollableList.nativeElement && this.isDropDownOpened()) {\n\t\t\t\tif (this.childDropdownMenuElement) {\n\t\t\t\t\tif (!this.childDropdownMenuElement.toArray()\n\t\t\t\t\t\t.some((elem) => target === elem.nativeElement)) {\n\t\t\t\t\t\tthis.closeDropDown();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeDropDown();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected hideSubmenus(untilLevel: number): void {\n\t\tif (untilLevel < this.lastMenuLevel) {\n\t\t\tfor (let i = this.lastMenuLevel; i > untilLevel; i--) {\n\t\t\t\tif (this.previousShownMenu[i - 1]) {\n\t\t\t\t\tthis.toggle(this.previousShownMenu[i - 1]);\n\t\t\t\t}\n\t\t\t\tthis.previousShownMenu.pop();\n\t\t\t\tthis.lastMenuLevel = i - 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic abstract openWithOptions(event: MouseEvent, newContextMenuOptions: Array<T>): void;\n\n\tpublic abstract isEnabled(elementId: string, actionId: string): boolean;\n\n\tpublic abstract isIconEnabled(elementId: string, actionId: string): boolean;\n\n\tpublic abstract executeAction(event: any, elementId: string, actionId: string, parentAction?: string): void;\n\n\tprotected abstract existsAtLeastOneActionEnabled(): boolean;\n\n\tprotected abstract getOption(actionId: string);\n}\n","import { Component, Input } from '@angular/core';\nimport { ContextMenuOption } from './context-menu-option';\n\n@Component({\n\tselector:    'systelab-context-menu-item',\n\ttemplateUrl: 'context-menu-item.component.html'\n})\nexport class ContextMenuItemComponent {\n\n\t@Input() public action: ContextMenuOption;\n\t@Input() public hasIcons: boolean;\n\t@Input() public isEnabled: boolean;\n\t@Input() public isIconEnabled: boolean;\n\t@Input() public hasChildren: boolean;\n\n\tconstructor() {\n\t}\n\n}\n","<div *ngIf=\"hasIcons && isIconEnabled\"\n     class=\"slab-icon-container rounded d-flex text-center justify-content-center align-items-center\"\n     [style.background-color]=\"action.backgroundIconColor\">\n    <i class=\"slab-flex-1 slab-menu-icon {{action.iconClass}}\" [style.color]=\"action.iconColor\"\n       [style.font-size]=\"action.iconFontSize\"\n       [ngClass]=\"{'text-white': !action.iconColor}\"></i>\n</div>\n<a class=\"slab-flex-1\" style=\"flex:1 1 auto\" [style.padding-left]=\"hasIcons && !isIconEnabled?'20px':'0'\"\n   [ngClass]=\"{'ml-2': hasIcons}\">{{action.actionText}}</a>\n<span *ngIf=\"hasChildren\" class=\"pl-3 slab-menu-caret icon-chevron-right small mt-1\" ></span>\n<div *ngIf=\"action.isDivider && isEnabled\" class=\"dropdown-divider\"></div>","import { Component, ElementRef, Input, QueryList, ViewChildren, } from '@angular/core';\nimport { AbstractContextMenuComponent } from './abstract-context-menu.component';\nimport { ContextMenuOption } from './context-menu-option';\n\n@Component({\n\tselector:    'systelab-context-menu-submenu-item',\n\ttemplateUrl: 'context-menu-submenu-item.component.html'\n})\nexport class ContextMenuSubmenuItemComponent {\n\n\t@Input() public action: ContextMenuOption;\n\t@Input() public actionName: string;\n\t@Input() public hasIcons: boolean;\n\t@Input() public hasChildren: boolean;\n\tpublic readonly levelSeparator = '_|_';\n\t@Input() public contextMenuOriginal: AbstractContextMenuComponent<ContextMenuOption>;\n\t@Input() public parentId: string;\n\n\t@Input() public elementID = (Math.floor(Math.random() * (999999999999 - 1))).toString();\n\n\t@ViewChildren('childdropdownmenu') public childDropdownMenuElement: QueryList<ElementRef>;\n\n\tconstructor() {\n\t}\n\n\tpublic doMouseOver(event: any, elementID: string, actionId: string): void {\n\t\tlet selectedChild;\n\n\t\tconst optionAcitionId = this.contextMenuOriginal.getOptionDetailsActionId(actionId);\n\n\t\tselectedChild = this.childDropdownMenuElement.toArray()\n\t\t\t.find((elem) => elem.nativeElement.id === (optionAcitionId + this.elementID));\n\n\t\tthis.contextMenuOriginal.showSubmenu(event, actionId, selectedChild, this.elementID);\n\t}\n\n\tpublic doClickWithAction(event: any, elementID: string, actionId: string): void {\n\t\tthis.contextMenuOriginal.executeAction(event, elementID, actionId);\n\t}\n\n\tpublic getAction(childActionId: String): string {\n\t\treturn this.actionName + this.levelSeparator + childActionId;\n\t}\n\n\tpublic isEnabled(elementId: string, actionId: string): boolean {\n\t\treturn (this.action && this.action.isActionEnabled) ? this.action.isActionEnabled(elementId, actionId) : true;\n\t}\n\n\tpublic isIconEnabled(elementId: string, actionId: string): boolean {\n\t\treturn (this.action && this.action.isIconEnabled) ? this.action.isIconEnabled(elementId, actionId) : true;\n\t}\n}\n","@for (childAction of action.childrenContextMenuOptions; track childAction.actionId) {\n    <li class=\"d-flex align-items-center\" [class.disabled]=\"!true\"\n        (click)=\"doClickWithAction($event, parentId, actionName + levelSeparator + childAction.actionId)\"\n        (mouseover)=\"doMouseOver($event, elementID, actionName + levelSeparator + childAction.actionId)\">\n        <div *ngIf=\"isEnabled\" class=\"slab-flex-1\" style=\"flex:1 1 auto\">\n            <systelab-context-menu-item class=\"d-flex align-items-center\" [action]=\"childAction\"\n                                        [isEnabled]=\"isEnabled(elementID, childAction.actionId)\"\n                                        [isIconEnabled]=\"isIconEnabled(elementID, childAction.actionId)\"\n                                        [hasChildren]=\"childAction.hasChildren()\"\n                                        [hasIcons]=\"hasIcons\"></systelab-context-menu-item>\n            <ul *ngIf=\"childAction.hasChildren()\" #childdropdownmenu id=\"{{childAction.actionId+elementID}}\"\n                class=\"slab-dropdown dropdown-menu slab-dropdown-menu slab-dropdown-scroll slab-dropdown-absolute\">\n                <systelab-context-menu-submenu-item [action]=\"childAction\"\n                                                    [actionName]=\"getAction(childAction.actionId)\"\n                                                    [hasChildren]=\"childAction.hasChildren()\"\n                                                    [hasIcons]=\"hasIcons\"\n                                                    [contextMenuOriginal]=\"contextMenuOriginal\"\n                                                    [parentId]=\"parentId\"\n                ></systelab-context-menu-submenu-item>\n            </ul>\n        </div>\n    </li>\n}\n","import { ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { ContextMenuActionData } from './context-menu-action-data';\nimport { ContextMenuOption } from './context-menu-option';\nimport { AbstractContextMenuComponent } from './abstract-context-menu.component';\n\n@Component({\n\tselector:    'systelab-context-menu',\n\ttemplateUrl: 'context-menu.component.html',\n})\nexport class ContextMenuComponent extends AbstractContextMenuComponent<ContextMenuOption> implements OnInit, OnDestroy {\n\n\tconstructor(protected override el: ElementRef, protected override myRenderer: Renderer2, protected override cdr: ChangeDetectorRef) {\n\t\tsuper(el, myRenderer, cdr);\n\t}\n\n\tpublic openWithOptions(event: MouseEvent, newContextMenuOptions: Array<ContextMenuOption>): void {\n\t\tthis.contextMenuOptions = newContextMenuOptions;\n\t\tthis.open(event);\n\t}\n\n\tpublic override getSelfReference(): AbstractContextMenuComponent<ContextMenuOption> {\n\t\treturn this;\n\t}\n\n\tprotected existsAtLeastOneActionEnabled(): boolean {\n\t\tif (this.contextMenuOptions) {\n\t\t\treturn this.contextMenuOptions.some(opt => this.isEnabled(this.elementID, opt.actionId));\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic isEnabled(elementId: string, actionId: string): boolean {\n\t\tconst option: ContextMenuOption = this.getOption(actionId);\n\t\treturn (option && option.isActionEnabled) ? option.isActionEnabled(elementId, actionId) : true;\n\t}\n\n\tpublic isIconEnabled(elementId: string, actionId: string): boolean {\n\t\tconst option: ContextMenuOption = this.getOption(actionId);\n\t\treturn (option && option.isIconEnabled) ? option.isIconEnabled(elementId, actionId) : true;\n\t}\n\n\tpublic executeAction(event: any, elementId: string, actionId: string): void {\n\n\t\tconst option: ContextMenuOption = this.getOption(actionId);\n\n\t\tif (option && option.hasChildren()) {\n\t\t\tthis.doMouseOver(event, elementId, actionId);\n\t\t} else {\n\t\t\t\tthis.closeDropDown();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\tif (option && option.action) {\n\t\t\t\toption.action(new ContextMenuActionData(elementId, actionId));\n\t\t\t} else {\n\t\t\t\tthis.action.emit(new ContextMenuActionData(elementId, actionId));\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected override checkIfHasIcons(): void {\n\t\tthis.hasIcons = this.contextMenuOptions.some(opt => opt.iconClass !== undefined && opt.iconClass !== null);\n\t}\n\n\tprotected getOption(actionId: string, parentAction?: string): ContextMenuOption {\n\t\tif (actionId) {\n\t\t\tconst actions: string[] = actionId.split(this.levelSeparator);\n\t\t\tlet level = 1;\n\n\t\t\tlet menuLevel: ContextMenuOption = this.contextMenuOptions.find(opt => opt.actionId === actions[level - 1]);\n\t\t\tlevel++;\n\t\t\twhile (level <= actions.length) {\n\t\t\t\tmenuLevel = menuLevel.childrenContextMenuOptions.find(opt => opt.actionId === actions[level - 1]);\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\treturn menuLevel;\n\t\t} else {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n}\n","<div #dropdownparent id=\"{{elementID}}\" class=\"dropdown\">\n    <div class=\"dropdown-toggle slab-context-menu\" data-toggle=\"dropdown\" (click)=\"dotsClicked($event)\">\n        <i class=\"icon-context-menu\" [ngClass]=\"{'d-none': isEmbedded}\" [style.font-size]=\"fontSize\"\n           [style.color]=\"fontColor\"></i>\n    </div>\n    <div #dropdownmenu class=\"dropdown-menu slab-dropdown-menu\">\n        <div #dropdown class=\"slab-dropdown slab-dropdown-fixed\">\n            <div *ngIf=\"isOpened\">\n                <div #ngcontent (click)=\"ngContentStopPropagation($event)\">\n                    <ng-content></ng-content>\n                </div>\n                <ul #scrollableList class=\"slab-dropdown-scroll\" [ngClass]=\"{'slab-dropdown-overflow': overflow}\">\n                    @for (action of contextMenuOptions; track action.actionId) {\n                        <li class=\"d-flex align-items-center m-0\"\n                            [class.disabled]=\"!isEnabled(elementID, action.actionId) || action.isDivider\"\n                            (click)=\"doClickWithAction($event, elementID, action.actionId)\"\n                            (mouseover)=\"doMouseOver($event, elementID, action.actionId)\">\n                            <div *ngIf=\"isEnabled(elementID, action.actionId)\" class=\"slab-flex-1\" style=\"flex:1 1 auto\">\n                                <systelab-context-menu-item class=\"d-flex align-items-center\" [action]=\"action\"\n                                                            [isEnabled]=\"isEnabled(elementID, action.actionId)\"\n                                                            [isIconEnabled]=\"isIconEnabled(elementID, action.actionId)\"\n                                                            [hasChildren]=\"action.hasChildren()\"\n                                                            [hasIcons]=\"hasIcons\"></systelab-context-menu-item>\n                                <ul *ngIf=\"action.hasChildren()\" #childdropdownmenu id=\"{{action.actionId+elementID}}\"\n                                    class=\"slab-dropdown dropdown-menu slab-dropdown-menu slab-dropdown-scroll slab-dropdown-absolute\">\n                                    <systelab-context-menu-submenu-item [action]=\"action\"\n                                                                        [actionName]=\"action.actionId\"\n                                                                        [hasChildren]=\"action.hasChildren()\"\n                                                                        [hasIcons]=\"hasIcons\"\n                                                                        [contextMenuOriginal]=\"getSelfReference()\"\n                                                                        [parentId]=\"elementID\"\n                                    ></systelab-context-menu-submenu-item>\n                                </ul>\n                            </div>\n                        </li>\n                    }\n                </ul>\n            </div>\n        </div>\n    </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'datafilter'\n})\n\nexport class DataFilterPipe implements PipeTransform {\n\n\tpublic transform(input: any[], searchString: string): any {\n\t\tconst result = [];\n\t\tif (!searchString) {\n\t\t\treturn input;\n\t\t}\n\n\t\tfor (const element of input) {\n\t\t\tif (element.displayName.toLowerCase()\n\t\t\t\t\t.indexOf(searchString.toLowerCase()) > -1) {\n\t\t\t\tresult.push(element);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}\n","export class TwoListItem {\n  constructor(public displayName: string, public colId: string, public isSelected: boolean, public isVisible: boolean) {\n  }\n}\n\nexport class CurrentSelectionStatus {\n  constructor(public available: Array<TwoListItem>, public visible: Array<TwoListItem>) {\n  }\n\n  public selectAvailable(element: TwoListItem, filteredList: Array<TwoListItem>, isShiftKey: boolean, isControlKey: boolean): void {\n    this.clear(this.visible);\n    this.select(this.available, element, filteredList, isShiftKey, isControlKey);\n  }\n\n  public selectVisible(element: TwoListItem, filteredList: Array<TwoListItem>, isShiftKey: boolean, isControlKey: boolean): void {\n    this.clear(this.available);\n    this.select(this.visible, element, filteredList, isShiftKey, isControlKey);\n  }\n\n  public clearAll(): void {\n    this.clear(this.available);\n    this.clear(this.visible);\n  }\n\n  private select(\n    selectedList: Array<TwoListItem>,\n    element: TwoListItem,\n    filteredList: Array<TwoListItem>,\n    isShiftKey: boolean,\n    isControlKey: boolean\n  ): void {\n    if (selectedList.length > 0 && isShiftKey) {\n      this.selectRange(selectedList, element, filteredList);\n    } else {\n      this.selectSingle(selectedList, element, isControlKey);\n    }\n  }\n\n  private selectRange(selectedList: Array<TwoListItem>, element: TwoListItem, filteredList: Array<TwoListItem>) {\n    const indexOfLastSelected = filteredList.indexOf(selectedList[0]);\n    const indexOfSelected = filteredList.indexOf(element);\n\n    this.clear(selectedList);\n\n    if (indexOfLastSelected < indexOfSelected) {\n      for (let i = indexOfLastSelected; i <= indexOfSelected; i++) {\n        filteredList[i].isSelected = true;\n        selectedList.push(filteredList[i]);\n      }\n    } else {\n      for (let i = indexOfLastSelected; i >= indexOfSelected; i--) {\n        filteredList[i].isSelected = true;\n        selectedList.push(filteredList[i]);\n      }\n    }\n  }\n\n  private selectSingle(selectedList: Array<TwoListItem>, element: TwoListItem, isControlKey: boolean) {\n    element.isSelected = !element.isSelected;\n    if (selectedList.length === 0 || (selectedList.length > 0 && isControlKey)) {\n      if (element.isSelected) {\n        selectedList.push(element);\n      } else {\n        selectedList.splice(selectedList.indexOf(element), 1);\n      }\n    } else {\n      this.clear(selectedList);\n      if (element.isSelected) {\n        selectedList.push(element);\n      }\n    }\n  }\n\n  private clear(list: Array<TwoListItem>) {\n    list.forEach(element => element.isSelected = false);\n    list.splice(0);\n  }\n}\n","import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-button',\n\ttemplateUrl: 'button.component.html',\n\tstyles:      [`\n      :host {\n          display: inline-block;\n      }`]\n})\nexport class ButtonComponent {\n\n\t@Output() public action = new EventEmitter();\n\n\t@Input() public disabled = false;\n\n\t@Input() public type: 'regular' | 'primary' | 'warning' | 'danger' | 'success' | 'link' = 'regular';\n\n\t@Input() public size: 'small' | 'medium' | 'large' = 'medium';\n\n\tconstructor(private element: ElementRef) {\n\n\t}\n\n\tpublic getId() {\n\t\treturn this.element.nativeElement.id;\n\t}\n\n\tpublic doClick(event: any) {\n\t\tif (this.disabled) {\n\t\t\tevent.stopPropagation();\n\t\t} else {\n\t\t\tthis.action.emit(event);\n\t\t}\n\t}\n}\n","<button type=\"button\" class=\"slab-btn\"\n        [class.slab-btn-regular]=\"type==='regular'\"\n        [class.slab-btn-primary]=\"type==='primary'\"\n        [class.slab-btn-warning]=\"type==='warning'\"\n        [class.slab-btn-danger]=\"type==='danger'\"\n        [class.slab-btn-success]=\"type==='success'\"\n        [class.slab-btn-link]=\"type==='link'\"\n        [class.slab-btn-small]=\"size==='small'\"\n        [class.slab-btn-medium]=\"size==='medium'\"\n        [class.slab-btn-large]=\"size==='large'\"\n        [class.slab-btn-disabled]=\"disabled\"\n        [disabled]=\"disabled\" (click)=\"doClick($event)\">\n    <ng-content></ng-content>\n</button>\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { polyfill } from 'mobile-drag-drop';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\n\n@Directive()\nexport abstract class AbstractSortableListComponent<T> {\n\n\t@Input() public elementsList: Array<T> = [];\n\t@Input() public secondListSearch: string;\n\t@Input() public dragAndDropEnabled = true;\n\n\t@Output() elementsListChange = new EventEmitter<Array<T>>();\n\n\tpublic deleteWithSupr = false;\n\tpublic showIcon = false;\n\n\tconstructor() {\n\t\tpolyfill({});\n\t}\n\n\tpublic dbClickSelectedItem(element: T) {\n\t}\n\n\tpublic getDescription(element: T): string {\n\t\treturn element[this.getDescriptionField(element)];\n\t}\n\n\tpublic getSelectionFieldValue(element: T): boolean {\n\t\treturn element[this.getSelectionField(element)];\n\t}\n\n\tpublic handleDragEnter(event) {\n\t\treturn this.handleDrag(event);\n\t}\n\n\tpublic handleDragOver(event) {\n\t\treturn this.handleDrag(event);\n\t}\n\n\tpublic handleDragLeave(event) {\n\t\treturn this.handleDrag(event);\n\t}\n\n\tpublic selectElement(element: T, ev: KeyboardEvent) {\n\t\tif (!ev.ctrlKey) {\n\t\t\tthis.elementsList.forEach(elementInList => {\n\t\t\t\telementInList[this.getSelectionField(element)] = false;\n\t\t\t});\n\t\t}\n\t\telement[this.getSelectionField(element)] = !element[this.getSelectionField(element)];\n\t}\n\n\tpublic getSelectedRows(): Array<T> {\n\t\treturn this.elementsList.filter(element => element[this.getSelectionField(element)]);\n\t}\n\n\tpublic removeElement(element: T, event: KeyboardEvent): void {\n\t\tif (this.deleteWithSupr && event.code === 'Delete') {\n\t\t\tthis.elementsList.splice(this.elementsList.indexOf(element), 1);\n\t\t\tthis.elementsListChange.emit(this.elementsList);\n\t\t}\n\t}\n\n\tpublic dropped(event: CdkDragDrop<T[]>): void {\n\t\tmoveItemInArray(this.elementsList, event.previousIndex, event.currentIndex);\n\t\tthis.elementsListChange.emit(this.elementsList);\n\t}\n\n\n\tpublic abstract getDescriptionField(element?: T): string;\n\n\tpublic abstract getSelectionField(element?: T): string;\n\n\tpublic abstract getIcon(element?: T): string;\n\n\tprivate handleDrag(event): boolean {\n\t\tif (this.dragAndDropEnabled) {\n\t\t\tevent.preventDefault();\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CurrentSelectionStatus, TwoListItem } from './two-list-utilities';\nimport { AbstractSortableListComponent } from '../sortable-list/abstract-sortable-list.component';\nimport { DataFilterPipe } from './datafilter.pipe';\n\n@Component({\n\tselector:    'systelab-two-list-sortable-list',\n\ttemplateUrl: '../sortable-list/abstract-sortable-list.component.html'\n})\nexport class TwoListSortableListComponent extends AbstractSortableListComponent<TwoListItem> {\n\n\t@Input() public currentSelectionStatus: CurrentSelectionStatus;\n\t@Input() public override secondListSearch: string;\n\n\t@Output() public dbClick: EventEmitter<TwoListItem> = new EventEmitter();\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tpublic getDescriptionField(): string {\n\t\treturn 'displayName';\n\t}\n\n\tpublic getSelectionField(): string {\n\t\treturn 'isSelected';\n\t}\n\n\tpublic getIcon(item: TwoListItem): string {\n\t\treturn '';\n\t}\n\n\tpublic override selectElement(element: TwoListItem, ev: KeyboardEvent) {\n\t\tconst visibleFilteredList = new DataFilterPipe().transform(this.elementsList, this.secondListSearch);\n\t\tthis.currentSelectionStatus.selectVisible(element, visibleFilteredList, ev.shiftKey, ev.ctrlKey);\n\t}\n\n\tpublic override dbClickSelectedItem(element: TwoListItem) {\n\t\tthis.dbClick.emit(element);\n\t}\n}\n","<div class=\"slab-sortable-list text-nowrap\"\n     (onDragEnter)=\"handleDragEnter($event)\"\n     (onDragOver)=\"handleDragOver($event)\"\n     (onDragLeave)=\"handleDragLeave($event)\">\n    <div class=\"slab-sortable-list-row list-group w-100\" cdkDropList (cdkDropListDropped)=\"dropped($event)\">\n        <div *ngFor=\"let element of (elementsList| datafilter:secondListSearch); let i=index;\" [id]=\"'element'+i\"\n            (keydown)=\"removeElement(element, $event)\"\n            tabindex=\"-1\"\n            [ngClass]=\"{'slab-sortable-list-row slab-sortable-list-row-selected':getSelectionFieldValue(element),'slab-sortable-list-row':!getSelectionFieldValue(element)}\"\n             [class.slab-sortable-list-even-row]=\"0 === i % 2\"\n             [class.slab-sortable-list-odd-row]=\"1 === i % 2\"\n            (click)=\"selectElement(element,$event)\" (dblclick)=\"dbClickSelectedItem(element)\" cdkDrag [cdkDragDisabled]=\"!dragAndDropEnabled\">\n            <i *ngIf=\"showIcon\" class=\"mr-1 text-primary\" [ngClass]=\"getIcon(element)\"></i>{{getDescription(element)}}\n        </div>\n    </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DataFilterPipe } from './datafilter.pipe';\nimport { CurrentSelectionStatus, TwoListItem } from './two-list-utilities';\n\n@Component({\n\tselector:    'systelab-two-list',\n\ttemplateUrl: 'two-list.component.html',\n\tstyles:      [`\n        :host {\n            width: 100%;\n            height: 100%;\n        }\n\t`]\n})\nexport class TwoListComponent {\n\n\tpublic _available: Array<TwoListItem> = [];\n\t@Input()\n\tget available() {\n\t\treturn this._available;\n\t}\n\n\tset available(list: Array<TwoListItem>) {\n\t\tthis._available = list;\n\t\tthis.availableChange.emit(this._available);\n\t}\n\n\tpublic _visible: Array<TwoListItem> = [];\n\t@Input()\n\tget visible() {\n\t\treturn this._visible;\n\t}\n\n\tset visible(list: Array<TwoListItem>) {\n\t\tthis._visible = list;\n\t\tthis.visibleChange.emit(this._visible);\n\t}\n\n\t@Output() public visibleChange = new EventEmitter<Array<TwoListItem>>();\n\t@Output() public availableChange = new EventEmitter<Array<TwoListItem>>();\n\n\t@Input() public initialAvailableColumns: Array<TwoListItem>;\n\t@Input() public defaultVisibleColumns: Array<TwoListItem>;\n\t@Input() public defaultHiddenColumns: Array<TwoListItem>;\n\n\t@Input() public dragAndDropEnabled = true;\n\n\tpublic firstListSearch: string;\n\tpublic secondListSearch: string;\n\tpublic currentSelectionStatus: CurrentSelectionStatus = new CurrentSelectionStatus([], []);\n\n\tconstructor() {\n\t}\n\n\tpublic add() {\n\t\tfor (const element of this.currentSelectionStatus.available) {\n\t\t\telement.isVisible = true;\n\t\t}\n\t\tthis.visible = this.visible.concat(new DataFilterPipe().transform(this.currentSelectionStatus.available, this.firstListSearch));\n\t\tthis.refresh(false);\n\t}\n\n\tpublic addAll() {\n\t\tthis.visible = this.visible.concat(new DataFilterPipe().transform(this.available, this.firstListSearch));\n\t\tfor (const element of this.visible) {\n\t\t\telement.isVisible = true;\n\t\t}\n\t\tthis.refresh(false);\n\t}\n\n\tpublic removeAll() {\n\t\tthis.available = this.available.concat(new DataFilterPipe().transform(this.visible, this.secondListSearch));\n\t\tthis.visible = this.removeItemsFromList(this.visible, new DataFilterPipe().transform(this.visible, this.secondListSearch));\n\t\tfor (const element of this.available) {\n\t\t\telement.isVisible = false;\n\t\t}\n\t\tthis.refresh(true);\n\t}\n\n\tpublic remove() {\n\t\tfor (const element of this.currentSelectionStatus.available) {\n\t\t\telement.isVisible = false;\n\t\t}\n\t\tthis.available = this.available.concat(new DataFilterPipe().transform(this.currentSelectionStatus.visible, this.secondListSearch));\n\t\tthis.visible = this.removeItemsFromList(this.visible, new DataFilterPipe().transform(this.currentSelectionStatus.visible, this.secondListSearch));\n\t\tthis.refresh(true);\n\t}\n\n\tprivate refresh(sortAvailable: boolean) {\n\t\tthis.firstListSearch = '';\n\t\tthis.secondListSearch = '';\n\t\tif (sortAvailable) {\n\t\t\tthis.available = this.sort(this.available);\n\t\t}\n\t\tthis.available = this.removeItemsFromList(new DataFilterPipe().transform(this.available, this.firstListSearch), this.visible);\n\t\tthis.currentSelectionStatus.clearAll();\n\t}\n\n\tprivate sort(list: Array<TwoListItem>) {\n\n\t\tconst arrayAux = [];\n\t\tconst theReturn: Array<TwoListItem> = [];\n\t\tconst length = list.length;\n\n\t\tfor (const actual of this.initialAvailableColumns) {\n\t\t\tif (arrayAux.length === length) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tfor (let j = 0; j < length; j++) {\n\t\t\t\tif (actual.colId === list[j].colId) {\n\t\t\t\t\tarrayAux.push(j);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\ttheReturn[i] = list[arrayAux[i]];\n\t\t}\n\t\treturn theReturn;\n\t}\n\n\tpublic setDefaultColumnValues(): void {\n\t\tthis.available = this.defaultHiddenColumns;\n\t\tthis.visible = this.defaultVisibleColumns;\n\t}\n\n\tpublic removeItemsFromList(list: Array<any>, itemsToRemove: Array<any>): Array<any> {\n\t\treturn list.filter(element => !itemsToRemove.some(item => item.colId === element.colId));\n\t}\n\n\tpublic selectAvailableItem(element: TwoListItem, ev: KeyboardEvent) {\n\t\tconst availableFilteredList = new DataFilterPipe().transform(this.available, this.firstListSearch);\n\t\tthis.currentSelectionStatus.selectAvailable(element, availableFilteredList, ev.shiftKey, ev.ctrlKey);\n\t}\n\n\tpublic moveSelectedItemsFromAvailableToVisible(element: TwoListItem, ev: Event) {\n\t\tthis.available = this.removeItemsFromList(this.available, [element]);\n\t\telement.isVisible = true;\n\t\tthis.visible = this.visible.concat(element);\n\t}\n\n\tpublic moveSelectedItemsFromVisibleToAvailable(element: TwoListItem) {\n\t\telement.isVisible = false;\n\t\tthis.available = this.available.concat(new DataFilterPipe().transform([element], this.secondListSearch));\n\t\tthis.visible = this.removeItemsFromList(this.visible, new DataFilterPipe().transform([element], this.secondListSearch));\n\t\tthis.refresh(true);\n\t}\n}\n","<div class=\"slab-twolist h-100\">\n    <div class=\"slab-twolistdiv\">\n        <label>{{'COMMON_AVAILABLE_FIELDS' | translate | async }} ({{ available.length }})</label>\n        <div>\n            <input type=\"text\" class=\"form-control\" [(ngModel)]=\"firstListSearch\">\n        </div>\n        <div id=\"left-list\" class=\"slab-twolistbox\">\n            <div class=\"slab-twolistboxdiv\">\n                <ul class=\"slab-twolistboxrow list-group\">\n                    <li *ngFor=\"let item of (available | datafilter:firstListSearch); let i=index;\" [id]=\"'available'+i\"\n                        [ngClass]=\"{'slab-twolistboxrow slab-twolistboxrowselected':item.isSelected,'slab-twolistboxrow':!item.isSelected}\"\n                        [class.slab-twolistboxrow-even-row]=\"0 === i % 2\"\n                        [class.slab-twolistboxrow-odd-row]=\"1 === i % 2\"\n                        (click)=\"selectAvailableItem(item, $event)\" (dblclick)=\"moveSelectedItemsFromAvailableToVisible(item, $event)\">\n                        {{item.displayName}}\n                    </li>\n                </ul>\n            </div>\n        </div>\n        <systelab-button type=\"link\" id=\"slab-add-all\" [disabled]=\"available.length == 0\" (click)=\"addAll()\">{{'COMMON_ADD_ALL' | translate | async }} ({{ available.length }})</systelab-button>\n    </div>\n    <div class=\"slab-twolistbuttondiv\">\n        <button type=\"button\" class=\"btn icon-angle-right\" (click)=\"add()\" title=\"{{'COMMON_ADD_SELECTED' | translate | async }}\"\n                [disabled]=\"currentSelectionStatus.available.length == 0\">\n        </button>\n        <button type=\"button\" class=\"btn icon-angle-left\" (click)=\"remove()\" title=\"{{'COMMON_REMOVE_SELECTED' | translate | async }}\"\n                [disabled]=\"currentSelectionStatus.visible.length == 0\">\n        </button>\n    </div>\n\n    <div class=\"slab-twolistdiv\">\n        <label>{{'COMMON_FIELDS_TO_SHOW' | translate | async }} ({{ visible.length }})</label>\n        <div>\n            <input type=\"text\" class=\"form-control\" [(ngModel)]=\"secondListSearch\">\n        </div>\n        <div id=\"right-list\" class=\"slab-twolistbox text-nowrap\">\n            <systelab-two-list-sortable-list class=\"w-100\" [currentSelectionStatus]=\"currentSelectionStatus\"\n                                             [(elementsList)]=\"visible\" [secondListSearch]=\"secondListSearch\" [dragAndDropEnabled]=\"dragAndDropEnabled\"\n                                             (dbClick)=\"moveSelectedItemsFromVisibleToAvailable($event)\"></systelab-two-list-sortable-list>\n        </div>\n        <systelab-button type=\"link\" id=\"slab-remove-all\" [disabled]=\"visible.length == 0\" (click)=\"removeAll()\">{{'COMMON_REMOVE_ALL' | translate | async }} ({{ visible.length }})</systelab-button>\n    </div>\n</div>\n","import { Component } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\nimport { AbstractGrid } from '../abstract-grid.component';\n\n@Component({\n\tselector:    'systelab-grid-context-menu-cell-renderer',\n\ttemplateUrl: 'grid-context-menu-cell-renderer.component.html'\n})\nexport class GridContextMenuCellRendererComponent<T> implements AgRendererComponent {\n\n\tprotected container: AbstractGrid<T>;\n\tpublic fontSize: string;\n\tpublic fontColor: string;\n\tpublic rowIndex: number;\n\tpublic data: T;\n\n\tpublic agInit(params: any): void {\n\t\tthis.container = params.context.componentParent;\n\t\tthis.rowIndex = params.rowIndex;\n\t\tthis.data = params.data;\n\t}\n\n\tpublic dotsClicked(event: MouseEvent): void {\n\t\tlet selectedRows: T | Array<T> = this.data;\n\n\t\tif (event.ctrlKey && !this.container.removeSelectionOnOpenContextMenu) {\n\t\t\tselectedRows = this.container.getSelectedRows();\n\t\t} else if (this.container.removeSelectionOnOpenContextMenu) {\n\t\t\tthis.container.gridOptions.api.deselectAll();\n\t\t\tif (event.ctrlKey) {\n\t\t\t\tthis.container.gridOptions.api.selectIndex(this.rowIndex, false, false);\n\t\t\t}\n\t\t}\n\t\tthis.container.dotsClicked(this.rowIndex, selectedRows, event);\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n}\n","<div *ngIf=\"data\" class=\"slab-context-menu\" (click)=\"dotsClicked($event)\">\n    <i class=\"icon-context-menu\" [style.font-size]=\"fontSize\" [style.color]=\"fontColor\"></i>\n</div>\n","import {Component} from '@angular/core';\nimport {IHeaderAngularComp} from 'ag-grid-angular';\nimport {IHeaderParams} from 'ag-grid-community';\nimport {AbstractGrid} from '../abstract-grid.component';\n\n@Component({\n\tselector: 'systelab-grid-header-context-menu-cell-renderer',\n\ttemplateUrl: 'grid-header-context-menu-renderer.component.html'\n})\n\nexport class GridHeaderContextMenuComponent<T> implements IHeaderAngularComp {\n\n\tpublic headerName: string;\n\tpublic headerData: any;\n\tprotected container: AbstractGrid<T>;\n\n\tpublic agInit(params: IHeaderParams): void {\n\t\tthis.container = params.context.componentParent;\n\t\tthis.headerName = params.displayName;\n\t\tthis.headerData = params.column.getColDef().headerComponentParams.headerData;\n\t}\n\n\tpublic refresh(params: IHeaderParams): boolean {\n\t\treturn true;\n\t}\n\n\tpublic dotsClicked(event: MouseEvent): void {\n\t\tthis.container.headerDotsClicked(this.headerData, event);\n\t}\n\n}\n","<div class=\"slab-grid-header-context-menu\">\n    <div class=\"slab-context-menu\" (click)=\"dotsClicked($event)\">\n        <i class=\"icon-context-menu\"></i>\n    </div>\n    <div class=\"slab-grid-header-context-menu-label\">{{headerName}}</div>\n</div>\n","import { TwoListItem } from '../../twolist/two-list-utilities';\n\nexport class GridColumnsOptions {\n\tpublic available: Array<TwoListItem> = [];\n\tpublic visible: Array<TwoListItem> = [];\n\tpublic initialAvailableColumns: Array<TwoListItem> = [];\n\tpublic defaultVisibleColumns?: Array<TwoListItem> = [];\n\tpublic defaultHiddenColumns?: Array<TwoListItem> = [];\n}\n","export interface ModalComponent<SystelabModalContext> {\n}\n\nexport class SystelabModalContext {\n\n\tpublic dialogClass: string;\n\n\tpublic width: number = null;\n\tpublic height: number = null;\n\n\tpublic minWidth: number = null;\n\tpublic minHeight: number = null;\n\n\tpublic maxWidth: number = null;\n\tpublic maxHeight: number = null;\n\n\tpublic widthRelative: string = null;\n\tpublic heightRelative: string = null;\n\n\tpublic minWidthRelative: string = null;\n\tpublic minHeightRelative: string = null;\n\n\tpublic maxWidthRelative: string = null;\n\tpublic maxHeightRelative: string = null;\n\n\tpublic positionX;\n\tpublic positionY;\n\n\tpublic fullScreen = false;\n\n\tpublic isBlocking = true;\n\tpublic keyboard = null;\n\tpublic isContextDialog = false;\n\n\tpublic showClose = true;\n\n\tpublic setDefaultSize(w: number, h: number) {\n\t\tif (!this.width) {\n\t\t\tthis.width = w;\n\t\t}\n\t\tif (!this.height) {\n\t\t\tthis.height = h;\n\t\t}\n\t}\n\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { SystelabModalContext } from './modal-context';\n\nexport class DialogRef<T extends SystelabModalContext> {\n\n\tprivate static readonly ESCAPE_KEY = 'Escape';\n\n\tprivate subject: Subject<any> = new Subject<any>();\n\n\tprivate subscription: Subscription = new Subscription();\n\n\tconstructor(private overlayRef: OverlayRef, public context: T) {\n\t\tif (!context.isBlocking) {\n\t\t\tthis.subscription.add(overlayRef.backdropClick()\n\t\t\t\t.subscribe(\n\t\t\t\t\t() => this.close()));\n\t\t}\n\t\tif (context.showClose) {\n\t\t\tthis.subscription.add(overlayRef.keydownEvents()\n\t\t\t\t.subscribe((k) => {\n\t\t\t\t\tif (k.code === DialogRef.ESCAPE_KEY || k.key === DialogRef.ESCAPE_KEY) {\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t}\n\t}\n\n\tpublic closeAllDialogs() {\n\n\t}\n\n\tpublic close(value?: any): void {\n\t\tthis.overlayRef.dispose();\n\t\tthis.subject.next(value);\n\t\tthis.subject.complete();\n\t\tif (this.subscription) {\n\t\t\tthis.subscription.unsubscribe();\n\t\t}\n\t}\n\n\tpublic getResult(): Observable<any> {\n\t\treturn this.subject.asObservable();\n\t}\n\n\tpublic disable() {\n\t\tthis.overlayRef.overlayElement.classList.add('slab-dialog-disabled');\n\t}\n\n\tpublic enable() {\n\t\tthis.overlayRef.overlayElement.classList.remove('slab-dialog-disabled');\n\t}\n\n}\n\n","import { Component, ElementRef, Input } from '@angular/core';\n\n@Component({\n\tselector: 'systelab-tab',\n\ttemplate: `\n                  <div class=\"d-flex slab-flex-1 slab-overflow-container\">\n                      <ng-content></ng-content>\n                  </div>\n\t\t\t  `,\n\tstyles:   [`\n        :host {\n            flex: 1;\n            display: flex;\n            flex-direction: column;\n        }\n\t`]\n})\nexport class TabComponent {\n\t@Input() public title: string;\n\t@Input() public titleHtml: string;\n\t@Input() public active = false;\n\t@Input() public id = '';\n\t@Input() public warning = false;\n\n\tconstructor(protected elementRef: ElementRef) {\n\t}\n\n\tpublic setVisible(visible: boolean) {\n\t\tif (visible) {\n\t\t\tthis.elementRef.nativeElement.style.display = 'flex';\n\t\t} else {\n\t\t\tthis.elementRef.nativeElement.style.display = 'none';\n\t\t}\n\t}\n}\n","import { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\nimport { TabComponent } from './tab.component';\n\n@Component({\n\tselector: 'systelab-tabs',\n\ttemplate: `\n                <ul class=\"nav nav-tabs\" [class.hideTabBackground]=\"!showTabBackground\" [class.slab-tabs-shrink]=\"shrink\" role=\"tablist\">\n\t\t\t\t\t@for (tab of tabs; track tab.id) {\n\t\t\t\t\t\t<li class=\"nav-item\" [class.hideTabBackground]=\"!showTabBackground\"\n\t\t\t\t\t\t\t(click)=\"doSelectTab(tab)\">\n\t\t\t\t\t\t\t<div class=\"nav-link nav-single-tab d-flex align-items-center justify-content-center\"\n\t\t\t\t\t\t\t\t [class.active]=\"tab.active\" [class.slab-tabs-shrink]=\"shrink\" data-toggle=\"tab\" role=\"tab\" [attr.aria-controls]=\"tab.id\" id=\"tab-{{tab.id}}\"\n\t\t\t\t\t\t\t\t [tabindex]=\"paintFocus?0:-1\" (keydown)=\"doKeyDown($event,tab)\">\n\t\t\t\t\t\t\t\t<span *ngIf=\"tab.titleHtml\" [innerHTML]=\"tab.titleHtml\" class=\"d-flex align-items-center\"></span>\n\t\t\t\t\t\t\t\t<span *ngIf=\"tab.title\" class=\"d-flex align-items-center\">{{tab.title}}</span>\n\t\t\t\t\t\t\t\t<i *ngIf=\"tab.warning\" class=\"text-warning icon-warning ml-3\"></i>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t}\n                </ul>\n                <div class=\"slab-flex-1 d-flex slab-overflow-container\">\n                    <ng-content></ng-content>\n                </div>\n\n\t          `,\n\tstyles:   [`\n      :host {\n          width: 100%;\n          display: flex;\n          flex-direction: column;\n      }\n\n\n\t`]\n})\nexport class TabsComponent implements AfterContentInit {\n\n\t@ContentChildren(TabComponent) tabs: QueryList<TabComponent>;\n\n\t@Input() public showTabBackground = true;\n\t@Input() public shrink = false;\n\t@Input() public paintFocus = false;\n\n\t@Output() public select = new EventEmitter<string>();\n\n\tpublic ngAfterContentInit() {\n\n\t\tif (this.tabs.length > 0) {\n\t\t\tconst activeTabs = this.tabs.filter((tab) => tab.active);\n\t\t\tif (activeTabs.length === 0) {\n\t\t\t\tthis.doSelectTab(this.tabs.first);\n\t\t\t} else {\n\t\t\t\tthis.doSelectTab(activeTabs[0]);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic doSelectTab(tab: TabComponent) {\n\t\tthis.deactivateAllTabs();\n\t\tthis.selectTab(tab);\n\t}\n\n\tpublic doSelectTabById(tabId: string) {\n\t\tconst tab: TabComponent = this.tabs.toArray()\n\t\t\t.find((t) => t.id === tabId);\n\t\tif (tab) {\n\t\t\tthis.deactivateAllTabs();\n\t\t\tthis.selectTab(tab);\n\t\t}\n\t}\n\n\tprivate selectTab(tab: TabComponent) {\n\t\ttab.active = true;\n\t\ttab.setVisible(true);\n\t\tthis.select.emit(tab.id);\n\t}\n\n\tprivate deactivateAllTabs() {\n\t\tif (this.tabs) {\n\t\t\tthis.tabs.toArray()\n\t\t\t\t.forEach(t => {\n\t\t\t\t\tt.active = false;\n\t\t\t\t\tt.setVisible(false);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tpublic doKeyDown(event: KeyboardEvent, tab: TabComponent) {\n\t\tif (event.key === 'Enter') {\n\t\t\tevent.preventDefault();\n\t\t\tthis.deactivateAllTabs();\n\t\t\tthis.selectTab(tab);\n\t\t}\n\t}\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { ToastConfig } from './toast/toast-config';\nimport { SystelabDialogConfig } from './modal/systelab-dialog-config';\n\nexport const APP_CONFIG = new InjectionToken<AppConfig>('APP_CONFIG_PARAMS');\n\nexport interface AppConfig{\n    productionMode: boolean;\n    toast?: ToastConfig;\n    dialogConfig?: SystelabDialogConfig;\n}\n","export interface SystelabDialogConfig {\n\tdialogsDraggableByDefault?: boolean;\n}\n\nexport const DEFAULT_SYSTELAB_DIALOG_CONFIG: SystelabDialogConfig = {\n\tdialogsDraggableByDefault: true\n};","import { AfterViewInit, Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { APP_CONFIG, AppConfig } from '../../systelab-components.module.config';\nimport { DEFAULT_SYSTELAB_DIALOG_CONFIG } from '../systelab-dialog-config';\n\n@Component({\n\tselector:    'systelab-dialog-header',\n\ttemplateUrl: 'dialog-header.component.html',\n\tstyles:      [`\n        :host {\n            width: 100%;\n        }\n        .slab-draggable {\n            cursor: move;\n            cursor: grab;\n            cursor: -moz-grab;\n            cursor: -webkit-grab;\n        }\n\t`]\n})\nexport class DialogHeaderComponent implements AfterViewInit {\n\n\t@Input() withClose = true;\n\t@Input() withInfo = false;\n\t@Input() withProgressBar = false;\n\t@Input() withTextProgressBar = false;\n\t@Input() withHome = false;\n\t@Input() withMinimize = false;\n\t@Input() withDrag = true;\n\n\t@Output() public close = new EventEmitter();\n\t@Output() public info = new EventEmitter();\n\t@Output() public home = new EventEmitter();\n\t@Output() public minimize = new EventEmitter();\n\n\tpublic textProgress: string;\n\tpublic progress: number;\n\tprivate on: number;\n\tprivate here: number;\n\n\tconstructor(@Optional() @Inject(APP_CONFIG) private config: AppConfig) {\n\t\tthis.withDrag = config?.dialogConfig?.dialogsDraggableByDefault !== undefined ?\n\t\t\tconfig.dialogConfig.dialogsDraggableByDefault : DEFAULT_SYSTELAB_DIALOG_CONFIG.dialogsDraggableByDefault;\n\t}\n\n\tpublic ngAfterViewInit() {\n\t}\n\n\tpublic doClose() {\n\t\tthis.close.emit();\n\t}\n\n\tpublic doInfo() {\n\t\tthis.info.emit();\n\t}\n\n\tpublic doHome() {\n\t\tthis.home.emit();\n\t}\n\n\tpublic doMinimize() {\n\t\tthis.minimize.emit();\n\t}\n\n\tpublic go(n: number, textProgress?: string): void {\n\t\tif (this.withProgressBar || this.withTextProgressBar) {\n\t\t\tif (n > 100) {\n\t\t\t\tn = 100;\n\t\t\t}\n\t\t\tif (n >= 0) {\n\t\t\t\tthis.here = n;\n\t\t\t\tif (!this.on) {\n\t\t\t\t\tthis.on = 1;\n\t\t\t\t\tthis.move(n);\n\t\t\t\t}\n\t\t\t} else if (this.on) {\n\t\t\t\tthis.move(n);\n\t\t\t}\n\t\t\tthis.textProgress = textProgress ?? `${n}%`;\n\t\t}\n\t}\n\n\t// animation loop\n\tprivate move(width: number): void {\n\t\tconst dist = width - this.here;\n\t\tif (dist < 0.1 && dist > -0.1) {\n\t\t\tthis.place(this.here);\n\t\t\tthis.on = 0;\n\t\t} else {\n\t\t\tthis.place(width - dist / 4);\n\t\t}\n\t}\n\n\t// set bar width\n\tprivate place(num: number): void {\n\t\tthis.progress = num;\n\t}\n\n}\n","<ng-template #headerContent>\n    <div class=\"d-inline-block text-truncate\">\n        <ng-content></ng-content>\n    </div>\n    <div class=\"d-flex\">\n        <div *ngIf=\"withHome\" class=\"slab-dialog-header-button slab-dialog-home mr-1\" (click)=\"doHome()\"></div>\n        <div *ngIf=\"withMinimize\" class=\"slab-dialog-header-button slab-dialog-minimize mr-1\" (click)=\"doMinimize()\"></div>\n        <div *ngIf=\"withInfo\" class=\"slab-dialog-header-button slab-dialog-info mr-1\" (click)=\"doInfo()\"></div>\n        <div *ngIf=\"withClose\" class=\"slab-dialog-header-button slab-dialog-close\" (click)=\"doClose()\"></div>\n    </div>\n</ng-template>\n\n<div *ngIf=\"withDrag\" class=\"slab-dialog-header slab-draggable d-flex justify-content-between\"\n     cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" cdkDragHandle>\n    <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n</div>\n<div *ngIf=\"!withDrag\" class=\"slab-dialog-header d-flex justify-content-between\">\n    <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n</div>\n\n<div *ngIf=\"(withProgressBar || withTextProgressBar) && progress\" class=\"slab-dialog-header-progress text-center\"\n     [ngClass]=\"{'slab-dialog-header-progress-bar-with-text':withTextProgressBar}\">\n    <div class=\"slab-dialog-header-progress-bar\" role=\"progressbar\" [style.width.%]=\"progress\" [attr.aria-valuenow]=\"progress\"\n         aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n    <span *ngIf=\"withTextProgressBar\" class=\"slab-dialog-header-progress-bar-text h-100 d-flex align-items-center justify-content-center\">{{textProgress}}</span>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-dialog-bottom',\n\ttemplateUrl: 'dialog-bottom.component.html',\n\tstyles:   [`\n\t\t\t:host {\n      width: 100%;\n  \t}\n\t`]\n})\nexport class DialogBottomComponent {\n\n\tconstructor() {\n\t}\n}\n","<div class=\"slab-dialog-bottom d-flex flex-wrap\">\n    <ng-content></ng-content>\n</div>\n","import { AfterViewInit, Component } from '@angular/core';\nimport { TwoListItem } from '../../twolist/two-list-utilities';\nimport { GridColumnsOptions } from './grid-column-options';\nimport { I18nService } from 'systelab-translate';\nimport { ModalComponent, SystelabModalContext } from '../../modal/dialog/modal-context';\nimport { DialogRef } from '../../modal/dialog/dialog-ref';\n\nexport class GridColumnOptionsDialogParameters extends SystelabModalContext {\n\tpublic override width = 800;\n\tpublic override height = 500;\n\tpublic columnOptions: GridColumnsOptions;\n\tpublic canHideAllColumns = false;\n}\n\n@Component({\n\tselector:    'grid-column-options-dialog',\n\ttemplateUrl: 'grid-column-options-dialog.component.html',\n})\nexport class GridColumnOptionsDialog implements ModalComponent<GridColumnOptionsDialogParameters>, AfterViewInit {\n\n\tpublic gridColumnOptionsDialogParameters: GridColumnOptionsDialogParameters;\n\n\tpublic availableColumns: Array<TwoListItem> = [];\n\tpublic visibleColumns: Array<TwoListItem> = [];\n\tpublic initialAvailableColumns: Array<TwoListItem> = [];\n\n\tprivate readonly canHideAllColumns: boolean = false;\n\n\tconstructor(public dialog: DialogRef<GridColumnOptionsDialogParameters>, protected i18nService: I18nService) {\n\t\tthis.gridColumnOptionsDialogParameters = dialog.context;\n\n\t\tthis.availableColumns = this.gridColumnOptionsDialogParameters.columnOptions.available;\n\t\tthis.visibleColumns = this.gridColumnOptionsDialogParameters.columnOptions.visible;\n\t\tthis.initialAvailableColumns = this.gridColumnOptionsDialogParameters.columnOptions.initialAvailableColumns;\n\t\tthis.canHideAllColumns = this.gridColumnOptionsDialogParameters.canHideAllColumns;\n\t}\n\n\tpublic isSubmitDisabled(): boolean {\n\t\treturn this.canHideAllColumns ? false : this.visibleColumns.length === 0;\n\t}\n\n\tpublic submit(): void {\n\t\tconst options = new GridColumnsOptions();\n\t\toptions.visible = this.visibleColumns;\n\t\tthis.dialog.close(options);\n\t}\n\n\tpublic close(): void {\n\t\tthis.dialog.close();\n\t}\n\n\tpublic static getParameters(): GridColumnOptionsDialogParameters {\n\t\treturn new GridColumnOptionsDialogParameters();\n\t}\n\n\tpublic getTabTitle(code: string): string {\n\t\treturn this.i18nService.instant(code);\n\t}\n\n\tpublic ngAfterViewInit(): void {\n\t\tsetTimeout(() => document.getElementById('ID_optionsSubmitButton').focus());\n\t}\n\n}\n","<systelab-dialog-header [withInfo]=\"false\" (close)=\"close();\">{{ 'COMMON_OPTIONS' | translate | async }}\n</systelab-dialog-header>\n<systelab-tabs class=\"slab-flex-1 slab-overflow-container\">\n    <systelab-tab [title]=\"getTabTitle('COMMON_FIELDS')\" class=\"p-2 slab-overflow-container\">\n        <systelab-two-list class=\"slab-flex-1 slab-overflow-container\"\n                           [(available)]=\"availableColumns\"\n                           [(visible)]=\"visibleColumns\"\n                           [initialAvailableColumns]=\"initialAvailableColumns\">\n        </systelab-two-list>\n    </systelab-tab>\n</systelab-tabs>\n<systelab-dialog-bottom>\n    <systelab-button type=\"primary\" class=\"ml-auto\" id=\"ID_optionsSubmitButton\"\n                     [disabled]=\"isSubmitDisabled()\" (action)=\"submit()\"> {{'COMMON_SUBMIT' | translate | async}}\n    </systelab-button>\n</systelab-dialog-bottom>\n\n","import { Injectable, ElementRef } from '@angular/core';\n\n@Injectable()\nexport class StylesUtilService {\n\tconstructor() {\n\t}\n\n\tpublic static getStyleValue(elementRef: ElementRef, styleAttribute: string): string {\n\t\tif (elementRef && elementRef.nativeElement) {\n\t\t\tconst aux = window.getComputedStyle(elementRef.nativeElement, null)\n\t\t\t\t.getPropertyValue(styleAttribute);\n\t\t\tif (aux.indexOf('px') > -1) {\n\t\t\t\treturn aux.substr(0, aux.indexOf('px'));\n\t\t\t} else {\n\t\t\t\treturn aux;\n\t\t\t}\n\t\t} else {\n\t\t\treturn '';\n\t\t}\n\t}\n}\n","import { Injectable } from '@angular/core';\n\nexport interface RGB {\n\tr: number;\n\tg: number;\n\tb: number;\n}\n\n@Injectable()\nexport class ColorUtilService {\n\n\tpublic static generateColorArray(colorValues: Array<any>, withBorder?: boolean): Array<any> {\n\t\tconst colorList = [];\n\n\t\tfor (const colorR of colorValues) {\n\t\t\tfor (const colorG of colorValues) {\n\t\t\t\tfor (const colorB of colorValues) {\n\t\t\t\t\tconst newColorElement: any = {};\n\t\t\t\t\tnewColorElement.color = '#' + this.rgbToHex(colorR, colorG, colorB);\n\t\t\t\t\tif (withBorder) {\n\t\t\t\t\t\tnewColorElement.border = '#' + this.rgbToHex(colorR * 0.7, colorG * 0.7, colorB * 0.7);\n\t\t\t\t\t}\n\t\t\t\t\tnewColorElement.id = newColorElement.color;\n\t\t\t\t\tnewColorElement.value = newColorElement.color;\n\t\t\t\t\tcolorList.push(newColorElement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn colorList;\n\t}\n\n\tpublic static rgbToHex(R: number, G: number, B: number): string {\n\t\treturn this.toHex(R) + this.toHex(G) + this.toHex(B);\n\t}\n\n\tprivate static toHex(num: number): string {\n\t\tif (isNaN(num)) {\n\t\t\treturn '00';\n\t\t}\n\t\tnum = Math.max(0, Math.min(num, 255));\n\t\treturn '0123456789ABCDEF'.charAt((num - num % 16) / 16) + '0123456789ABCDEF'.charAt(num % 16);\n\t}\n\n\tpublic static hexToRGB(hex: string): RGB {\n\t\tconst result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\t\treturn result ? {\n\t\t\tr: parseInt(result[1], 16),\n\t\t\tg: parseInt(result[2], 16),\n\t\t\tb: parseInt(result[3], 16)\n\t\t} : null;\n\t}\n\n\tpublic static darkColorFromHex(hex: string): string {\n\t\tconst rgbColor = this.hexToRGB(hex);\n\t\treturn this.rgbToHex(rgbColor.r * 0.7, rgbColor.g * 0.7, rgbColor.b * 0.7);\n\t}\n}\n","import { Component } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\n\n@Component({\n\tselector:    'combobox-favourite-renderer',\n\ttemplateUrl: 'combobox-favourite-renderer.component.html'\n})\nexport class ComboboxFavouriteRendererComponent implements AgRendererComponent {\n\n\tpublic isFavourite = false;\n\tpublic label: string;\n\tpublic favouriteList: Array<string> = [];\n\n\tpublic agInit(params: any): void {\n\t\tthis.favouriteList = (<any>params).favouriteList;\n\t\tif (params && params.data) {\n\t\t\tthis.label = params.data[params.colDef.field];\n\t\t\tthis.checkIfIsFavourite(params);\n\t\t}\n\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n\n\tprotected checkIfIsFavourite(params: any): void {\n\t\tthis.isFavourite = this.favouriteList.map(String)\n\t\t\t.includes(params.data[params.colDef.id].toString());\n\t}\n}\n","<div class=\"ag-header-cell-label d-flex align-items-center\">\n    <i *ngIf=\"isFavourite\" class=\"icon-star pr-2 text-primary\"></i>\n    <span [class.pl-4]=\"!isFavourite && favouriteList.length > 0\">{{label}}</span>\n</div>\n","import { Column, GridOptions } from 'ag-grid-community';\n\nexport interface CalculatedGridState {\n\tminRow: number;\n\tmaxRow: number;\n\ttop: number | undefined;\n\tcalculatedDisplayedCols: string[];\n\tautoSizeColumnsToContent: boolean;\n}\n\nexport function initializeCalculatedGridState(autoSizeColumnsToContent: boolean = true): CalculatedGridState {\n\treturn {\n\t\tminRow: -1,\n\t\tmaxRow: -1,\n\t\ttop: undefined,\n\t\tcalculatedDisplayedCols: [],\n\t\tautoSizeColumnsToContent: autoSizeColumnsToContent\n\t};\n}\n\nexport class AutosizeGridHelper {\n\n\tprivate static itWasPreviouslyCalculated(event: any, gridState: CalculatedGridState, gridOptions: GridOptions) {\n\t\tlet previouslyCalculated = false;\n\t\tif (event?.direction === 'vertical') {\n\t\t\tpreviouslyCalculated = this.itWasVerticallyCalculated(gridState, gridOptions, event);\n\t\t} else if (event?.direction === 'horizontal') {\n\t\t\tpreviouslyCalculated = this.itWasHorizontallyCalculated(gridState, gridOptions);\n\t\t}\n\t\treturn previouslyCalculated;\n\t}\n\n\tprivate static itWasVerticallyCalculated(gridState: CalculatedGridState, gridOptions: GridOptions, event: any) {\n\t\tif (!event.top) {\n\t\t\tgridState.top = event.top;\n\t\t}\n\n\t\tlet previouslyCalculated = false;\n\t\t//Scrolling up\n\t\tif (event.top <= gridState.top && gridState.minRow <= gridOptions.api.getFirstDisplayedRow()) {\n\t\t\tpreviouslyCalculated = true;\n\t\t}\n\n\t\t//Scrolling down\n\t\tif (event.top >= gridState.top && gridState.maxRow >= gridOptions.api.getLastDisplayedRow()) {\n\t\t\tpreviouslyCalculated = true;\n\t\t}\n\n\t\tgridState.top = event.top;\n\t\tgridState.minRow = gridOptions.api.getFirstDisplayedRow();\n\t\tgridState.maxRow = gridOptions.api.getLastDisplayedRow();\n\n\t\treturn previouslyCalculated;\n\t}\n\n\tprivate static itWasHorizontallyCalculated(gridState: CalculatedGridState, gridOptions: GridOptions) {\n\t\tconst displayedColumns: Column[] = gridOptions.columnApi.getAllDisplayedColumns();\n\t\tconst newColumnOnDisplay: Column = displayedColumns.find(col => !gridState.calculatedDisplayedCols.includes(col.getColId()));\n\n\t\tgridState.calculatedDisplayedCols = displayedColumns.map(col => col.getColId());\n\t\treturn !newColumnOnDisplay;\n\t}\n\n\tpublic static doAutoSizeManagement(calculatedGridState: CalculatedGridState, gridOptions: GridOptions, event?: any) {\n\t\tif(!event || !calculatedGridState) {\n\t\t\tcalculatedGridState = initializeCalculatedGridState(calculatedGridState?.autoSizeColumnsToContent);\n\t\t}\n\n\t\tif(calculatedGridState.autoSizeColumnsToContent) {\n\t\t\tconst previouslyCalculated = this.itWasPreviouslyCalculated(event, calculatedGridState, gridOptions);\n\t\t\tif (!previouslyCalculated) {\n\t\t\t\tgridOptions.columnApi.getColumns()\n\t\t\t\t\t.forEach(col => {\n\t\t\t\t\t\tif (!col.getColDef().suppressSizeToFit) {\n\t\t\t\t\t\t\tgridOptions.columnApi.autoSizeColumn(col.getColId(), true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthis.sizeColumnsToFit(gridOptions);\n\t\t}\n\t}\n\n\t//This is to reduce the size of the last autosized column by 1 pixel.\n\t// \tThis is necessary because some browsers do not correctly calculate\n\t// \tthe available grid size when it is not an integer.\n\t//\tFor example, if the actual available size is 99.6, some browsers return 99.6\n\t//\tfor the parent size (viewport) and 100 for the grid size (container). And now,\n\t//\tsince the container is bigger than its viewport, an horizontal scrollbar appears.\n\t//\tAdditionally, as the size in difference is less than 1 (caused because of\n\t//\trounding), the scrollbar is empty, having no bar handle.\n\t//This is only necessary for sizeColumnsToFit, autoSizeColumns does it correctly.\n\tpublic static sizeColumnsToFit(gridOptions: GridOptions) {\n\t\tgridOptions.api.sizeColumnsToFit();\n\n\t\tconst cols: Column[] = gridOptions.columnApi.getColumns();\n\t\tfor(let i: number = cols.length - 1; i >= 0; i--) {\n\t\t\tconst col: Column = cols[i];\n\t\t\tif(!col.getColDef().suppressSizeToFit && col.getActualWidth() > 1) {\n\t\t\t\tgridOptions.columnApi.setColumnWidth(col, col.getActualWidth() - 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","import { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\nimport { GetRowIdParams, GridOptions } from 'ag-grid-community';\nimport { StylesUtilService } from '../utilities/styles.util.service';\nimport { ComboboxFavouriteRendererComponent } from './renderer/combobox-favourite-renderer.component';\nimport { PreferencesService } from 'systelab-preferences';\nimport { AutosizeGridHelper, CalculatedGridState, initializeCalculatedGridState } from '../helper/autosize-grid-helper';\n\ndeclare var jQuery: any;\n\n@Directive()\nexport abstract class AbstractComboBox<T> implements AgRendererComponent, OnInit, OnDestroy {\n\n\tpublic static ROW_HEIGHT = -1;\n\tpublic static DROPDOWN_MENU_MARGIN = 16;\n\n\t@ViewChild('input', {static: false}) public input: ElementRef;\n\t@ViewChild('filterInput', {static: false}) public filterInput: ElementRef;\n\n\tpublic comboId: string = (Math.floor(Math.random() * (999999999999 - 1))).toString();\n\n\t@Input() public customInputRenderer: any;\n\t@Input() public initialParams: any;\n\n\t@Input() public filter = false;\n\t@Input() public multipleSelection = false;\n\t@Input() public listSelectedValues = false;\n\t@Input() public allElement = false;\n\n\t@Input() public fontFamily: string;\n\t@Input() public fontSize: string;\n\t@Input() public fontWeight: string;\n\t@Input() public fontStyle: string;\n\t@Input() public withIcon: boolean;\n\t@Input() public withDeleteOption: boolean;\n\t@Input() public defaultIdValue: string | number;\n\t@Input() public defaultDescription: string;\n\t@Input() public defaultCode: string;\n\t@Input() public iconClass: string;\n\t@Input() public inputColor: string;\n\t@Input() public iconColor: string;\n\t@Input() public tabindex: number;\n\t@Input() public deleteIconClass = 'icon-close';\n\t@Input() public withEmptyValue: boolean;\n\n\tpublic getAllFieldIDValue(): string | number {\n\t\treturn '0';\n\t}\n\n\tpublic getAllFieldDescriptionValue(): string {\n\t\treturn '';\n\t}\n\n\tpublic getAllCodeFieldValue(): string {\n\t\treturn '';\n\t}\n\n\tpublic getAllInstance(): T {\n\t\tconst instance = this.getInstance();\n\n\t\tinstance[this.getIdField()] = this.getAllFieldIDValue();\n\t\tinstance[this.getDescriptionField()] = this.getAllFieldDescriptionValue();\n\t\tinstance[this.getCodeField()] = this.getAllCodeFieldValue();\n\n\t\treturn instance;\n\t}\n\n\tpublic _values: Array<any>;\n\t@Input()\n\tset values(newValues: Array<any>) {\n\t\tif (newValues) {\n\t\t\tif (this.withEmptyValue) {\n\t\t\t\tnewValues.unshift({description: '', id: undefined});\n\t\t\t}\n\t\t}\n\t\tthis._values = newValues;\n\t\tif (this.gridOptions) {\n\t\t\tthis.gridOptions.rowData = this._values;\n\t\t}\n\t\tthis.setCodeDescriptionById();\n\t}\n\n\tget values() {\n\t\treturn this._values;\n\t}\n\n\t@Input() public isDisabled: boolean;\n\t@Input() public expandToParentContainerHeight = false;\n\t@Output() public change = new EventEmitter();\n\t@Output() public idChange = new EventEmitter();\n\t@Output() public descriptionChange = new EventEmitter();\n\t@Output() public levelChange = new EventEmitter();\n\t@Input() public allowEditInput = false;\n\t@Input() public emptyElement = false;\n\t@Input() public selectDeselectAll = false;\n\t@Input() public withFavourites = false;\n\t@Input() public preferenceName: string;\n\n\tpublic isFavourite = false;\n\tpublic favouriteList: Array<string | number> = [];\n\tpublic isTree = false;\n\n\tpublic _id: number | string;\n\t@Input()\n\tset id(value: number | string) {\n\t\tthis._id = value;\n\t\tthis.idChange.emit(value);\n\t\tthis.setCodeDescriptionById();\n\t\tthis.checkIfIsFavourite(value);\n\t}\n\n\tget id() {\n\t\treturn this._id;\n\t}\n\n\tpublic _description: string;\n\n\t@Input()\n\tset description(value: string) {\n\t\tthis._description = value;\n\t\tif (this.id && this.values) {\n\t\t\tconst item: T = this.values.find(it => it[this.getIdField()] === this.id);\n\t\t\tif (item) {\n\t\t\t\tthis._description = item[this.getDescriptionField()];\n\t\t\t}\n\t\t}\n\t\tthis.descriptionChange.emit(this._description);\n\t\tthis.fieldToShow = this._description;\n\t}\n\n\tget description() {\n\t\treturn this._description;\n\t}\n\n\tpublic _level: number;\n\t@Input()\n\tset level(value: number) {\n\t\tthis._level = value;\n\t\tthis.levelChange.emit(this._level);\n\t}\n\n\tget level() {\n\t\treturn this._level;\n\t}\n\n\tpublic _fieldToShow: string;\n\t@Input()\n\tset fieldToShow(value: string) {\n\t\tthis._fieldToShow = value;\n\t\tthis.fieldToShowChange.emit(this._fieldToShow);\n\t}\n\n\tget fieldToShow() {\n\t\treturn this._fieldToShow;\n\t}\n\n\t@Output() public fieldToShowChange = new EventEmitter();\n\n\tpublic _code: string;\n\t@Input()\n\tset code(value: string) {\n\t\tthis._code = value;\n\t\tif (this.id != null && this.values) {\n\t\t\tconst item: T = this.values.find(it => it[this.getIdField()] === this.id);\n\t\t\tif (item) {\n\t\t\t\tthis._code = item[this.getCodeField()];\n\t\t\t}\n\t\t}\n\t\tthis.codeChange.emit(this._code);\n\t}\n\n\tget code() {\n\t\treturn this._code;\n\t}\n\n\t@Output() public codeChange = new EventEmitter();\n\n\tpublic _multipleSelectedItemList: Array<T> = [];\n\n\t@Input()\n\tset multipleSelectedItemList(value: Array<T>) {\n\t\tthis._multipleSelectedItemList = value;\n\t\tthis.setDescriptionAndCodeWhenMultiple(value);\n\t\tthis.multipleSelectedItemListChange.emit(this._multipleSelectedItemList);\n\t\tthis.multipleSelectedIDListChange.emit(this.selectionItemListToIDList());\n\t}\n\n\tget multipleSelectedItemList() {\n\t\treturn this._multipleSelectedItemList;\n\t}\n\n\t@Output() public multipleSelectedItemListChange = new EventEmitter();\n\t@Output() public multipleSelectedIDListChange = new EventEmitter();\n\t@Output() public selectedItemChange = new EventEmitter();\n\n\t@ViewChild('combobox', {static: true}) public comboboxElement: ElementRef;\n\t@ViewChild('dropdowntoogle', {static: false}) public dropdownToogleElement: ElementRef;\n\t@ViewChild('dropdownmenu', {static: false}) public dropdownMenuElement: ElementRef;\n\t@ViewChild('dropdown', {static: true}) public dropdownElement: ElementRef;\n\t@ViewChild('input', {static: false}) public inputElement: ElementRef;\n\t@ViewChild('hidden', {static: true}) public hiddenElement: ElementRef;\n\n\tpublic filterValue = '';\n\tpublic currentSelected: any = {};\n\tpublic selectionChanged = false;\n\n\tpublic gridOptions: GridOptions;\n\tpublic columnDefs: Array<any>;\n\n\tpublic params: any;\n\n\tpublic top = 0;\n\tpublic left = 0;\n\tpublic windowResized = false;\n\tpublic isDropdownOpened = false;\n\tpublic windowScrollHandler: any;\n\n\tprivate calculatedGridState : CalculatedGridState = initializeCalculatedGridState();\n\tprivate scrollTimeout;\n\n\tconstructor(public myRenderer: Renderer2, public chRef: ChangeDetectorRef, public preferencesService?: PreferencesService) {\n\t}\n\n\tpublic ngOnInit() {\n\n\t\tthis.setRowHeight();\n\n\t\tthis.setStyle('font-family', this.fontFamily);\n\t\tthis.setStyle('font-size', this.fontSize);\n\t\tthis.setStyle('font-weight', this.fontWeight);\n\t\tthis.setStyle('font-style', this.fontStyle);\n\n\t\tjQuery(this.comboboxElement.nativeElement)\n\t\t\t.on('hide.bs.dropdown', this.closeDropDown.bind(this));\n\n\t\tthis.initializeFavouriteList();\n\t\tthis.configGrid();\n\t}\n\n\tprivate setStyle(styleName: string, styleValue: string): void {\n\t\tif (styleValue) {\n\t\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, styleName, styleValue);\n\t\t}\n\t}\n\n\tprotected setDescriptionAndCodeWhenMultiple(value: Array<T>) {\n\t\tthis._description = '';\n\t\tthis._code = '';\n\t\tfor (const selectedItem of value) {\n\t\t\tif (this._code !== '') {\n\t\t\t\tthis._code += '; ';\n\t\t\t}\n\t\t\tthis._code += selectedItem[this.getCodeField()];\n\n\t\t\tif (this._description !== '') {\n\t\t\t\tthis._description += '; ';\n\t\t\t}\n\t\t\tthis._description += selectedItem[this.getDescriptionField()];\n\t\t}\n\t}\n\n\tprotected initializeFavouriteList(): void {\n\t\tconst favouriteListPreference: Array<string | number> = (this.preferencesService) ? this.preferencesService.get(this.preferenceName + '.favourites') : undefined;\n\t\tif (this.withFavourites && favouriteListPreference && favouriteListPreference.length > 0) {\n\t\t\tthis.favouriteList = favouriteListPreference;\n\t\t\tif (this.id != null) {\n\t\t\t\tthis.checkIfIsFavourite(this.id.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected configGrid() {\n\t\tthis.columnDefs = (this.withFavourites) ? [\n\t\t\t{\n\t\t\t\tcolId:              'itemDescription',\n\t\t\t\tid:                 this.getIdField(),\n\t\t\t\tfield:              this.getDescriptionField(),\n\t\t\t\ttooltipField: \t\tthis.getDescriptionField(),\n\t\t\t\tcheckboxSelection:  this.multipleSelection,\n\t\t\t\tcellRenderer:       ComboboxFavouriteRendererComponent,\n\t\t\t\tcellRendererParams: {\n\t\t\t\t\tfavouriteList: this.favouriteList\n\t\t\t\t}\n\t\t\t}\n\t\t] : [\n\t\t\t{\n\t\t\t\tcolId:             \t'itemDescription',\n\t\t\t\tfield:             \tthis.getDescriptionField(),\n\t\t\t\ttooltipField: \t\tthis.getDescriptionField(),\n\t\t\t\tcheckboxSelection: \tthis.multipleSelection,\n\t\t\t}\n\t\t];\n\t\tthis.gridOptions = {};\n\n\t\tthis.gridOptions.columnDefs = this.columnDefs;\n\n\t\tthis.gridOptions.rowHeight = AbstractComboBox.ROW_HEIGHT;\n\t\tthis.gridOptions.headerHeight = 0;\n\t\tthis.gridOptions.suppressCellFocus = false;\n\n\t\tif (this.multipleSelection) {\n\t\t\tthis.gridOptions.rowSelection = 'multiple';\n\t\t\tthis.gridOptions.suppressRowClickSelection = true;\n\t\t} else {\n\t\t\tthis.gridOptions.rowSelection = 'single';\n\t\t}\n\n\t\tthis.gridOptions.getRowId = (item: GetRowIdParams) => this.getRowNodeId(item)\n\t\t\t?.toString();\n\n\t\tthis.configGridData();\n\n\t\tthis.gridOptions.enableBrowserTooltips = true;\n\t}\n\n\tprotected getRowNodeId(item: GetRowIdParams): string | number | undefined {\n\t\tif (item) {\n\t\t\tif (item[this.getIdField()] != null) {\n\t\t\t\treturn item[this.getIdField()];\n\t\t\t}\n\t\t\treturn item.data?.[this.getIdField()] ?? '';\n\t\t}\n\t\treturn '';\n\t}\n\n\tprotected configGridData() {\n\t\tthis.gridOptions.rowData = this.values;\n\t}\n\n\tprotected setRowHeight() {\n\t\tconst lineHeight = StylesUtilService.getStyleValue(this.hiddenElement, 'line-height');\n\t\tAbstractComboBox.ROW_HEIGHT = Number(lineHeight ? lineHeight : 26);\n\t}\n\n\tpublic abstract getInstance(): T;\n\n\tpublic abstract getDescriptionField(): string;\n\n\tpublic abstract getCodeField(): string;\n\n\tpublic abstract getIdField(): string;\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t}\n\n\tpublic getInputHeight() {\n\t\treturn this.expandToParentContainerHeight ? {'height': '100%'} : undefined;\n\t}\n\n\tprotected getComboPreferencesPrefix(): string {\n\t\treturn this.preferenceName || this.constructor.name;\n\t}\n\n\tpublic doToggleFavourite(event: MouseEvent): void {\n\t\tevent.stopPropagation();\n\t\tthis.toggleFavourite();\n\t}\n\n\tpublic deleteValueSelected(event: MouseEvent): void {\n\t\tevent.stopPropagation();\n\t\tif (this.multipleSelection) {\n\t\t\tif (this.multipleSelectedItemList && this.multipleSelectedItemList.length > 0) {\n\t\t\t\tthis.multipleSelectedItemList = [];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.id = this.defaultIdValue ? this.defaultIdValue : undefined;\n\t\t\tthis._description = this.defaultDescription ? this.defaultDescription : undefined;\n\t\t\tthis._code = this.defaultCode ? this.defaultCode : undefined;\n\t\t}\n\n\t}\n\n\tpublic onComboClicked(event: any) {\n\t\tif (this.isDisabled || (this.allowEditInput && event.target.className.indexOf('input') > -1)) {\n\t\t\tevent.stopPropagation();\n\t\t} else {\n\t\t\tif (!this.isDropDownOpen()) {\n\t\t\t\tthis.isDropdownOpened = true;\n\t\t\t\tthis.showDropDown();\n\t\t\t} else {\n\t\t\t\t// close\n\t\t\t\tthis.checkMultipleSelectionClosed();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic onComboKeyArrowDown(event: any) {\n\t\tif (!this.isDropDownOpen()) {\n\t\t\tthis.isDropdownOpened = true;\n\t\t\tthis.showDropDown();\n\t\t} else {\n\t\t\t// close\n\t\t\tthis.checkMultipleSelectionClosed();\n\t\t}\n\t}\n\n\n\tpublic onComboKeyArrowUp(event: any) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n\n\tprotected toggleFavourite(): void {\n\t\tthis.isFavourite = !this.isFavourite;\n\t\tif (this.isFavourite) {\n\t\t\tthis.favouriteList.push(this.id.toString());\n\t\t} else {\n\t\t\tthis.favouriteList.splice(this.favouriteList.map(String)\n\t\t\t\t.indexOf(this.id.toString()), 1);\n\t\t}\n\t\tthis.preferencesService.put(this.getComboPreferencesPrefix() + '.favourites', this.favouriteList.map(String));\n\t}\n\n\tpublic setDropdownWidth() {\n\t\tconst parentWidth = this.comboboxElement.nativeElement.offsetWidth;\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'width', parentWidth + 'px');\n\t\tthis.setGridSize();\n\t}\n\n\tpublic isDropDownOpen(): boolean {\n\t\treturn this.comboboxElement.nativeElement.className.includes('show');\n\t}\n\n\tpublic closeDropDown() {\n\t\tthis.isDropdownOpened = false;\n\t\tthis.removeWindowScrollHandler();\n\t\tthis.removeGridScrollHandler();\n\t\tthis.resetDropDownPositionAndHeight();\n\t\tif (this.isDropDownOpen()) {\n\t\t\tthis.myRenderer.removeClass(this.comboboxElement.nativeElement, 'show');\n\t\t\tthis.myRenderer.removeClass(this.dropdownMenuElement.nativeElement, 'show');\n\t\t}\n\t\tthis.chRef.detectChanges();\n\t\tthis.checkMultipleSelectionClosed();\n\t\tthis.input.nativeElement.focus();\n\t}\n\n\tpublic resetDropDownPositionAndHeight() {\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'top', null);\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'left', null);\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', '0px');\n\t}\n\n\tpublic loop(): void {\n\t\tlet result = true;\n\n\t\tif (this.isDropDownOpen()) {\n\t\t\tthis.setDropdownHeight();\n\t\t\tthis.setDropdownPosition();\n\t\t\tthis.transferFocusToGrid();\n\t\t\tresult = false;\n\t\t}\n\t\tif (result && this.isDropdownOpened) {\n\t\t\tsetTimeout(() => this.loop(), 10);\n\t\t} else {\n\t\t\tif (this.filter === true) {\n\t\t\t\tthis.filterInput.nativeElement.focus();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprotected transferFocusToGrid(): void {\n\t\t// scrolls to the first row\n\t\tthis.gridOptions.api.ensureIndexVisible(0);\n\n\t\t// scrolls to the first column\n\t\tconst firstCol = this.gridOptions.columnApi.getAllDisplayedColumns()[0];\n\t\tthis.gridOptions.api.ensureColumnVisible(firstCol);\n\n\t\t// sets focus into the first grid cell\n\t\tthis.gridOptions.api.setFocusedCell(0, firstCol);\n\t}\n\n\tpublic onCellKeyDown(e: any) {\n\t\tif (e.event.key === 'Enter') {\n\t\t\tif (this.multipleSelection && e.node.selected) {\n\t\t\t\te.node.setSelected(false);\n\t\t\t} else {\n\t\t\t\te.node.setSelected(true);\n\t\t\t}\n\t\t\te.event.preventDefault();\n\t\t}\n\t\tif (e.event.key === 'Tab') {\n\t\t\tthis.closeDropDown();\n\t\t\te.event.preventDefault();\n\t\t\te.event.stopPropagation();\n\t\t}\n\t}\n\n\tpublic showDropDown() {\n\t\tthis.addWindowScrollHandler();\n\t\tthis.setDropdownWidth();\n\t\tif (!this.isDropDownOpen()) {\n\t\t\tsetTimeout(() => this.loop(), 10);\n\t\t}\n\t}\n\n\tpublic clickDropDownMenu(e: Event) {\n\t\te.stopPropagation();\n\t}\n\n\tpublic setDropdownHeight() {\n\t\tlet calculatedHeight = 0;\n\t\tconst totalItems: number = this.getTotalItemsForDropdownHeight();\n\n\t\tif (this.selectDeselectAll === true) {\n\t\t\tcalculatedHeight += AbstractComboBox.ROW_HEIGHT + 10;\n\t\t}\n\t\tif (this.filter === true) {\n\t\t\tcalculatedHeight += AbstractComboBox.ROW_HEIGHT + 5;\n\t\t}\n\n\t\tif (totalItems === 0) {\n\t\t\tcalculatedHeight += 8 + AbstractComboBox.ROW_HEIGHT;\n\t\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', calculatedHeight + 'px');\n\t\t} else if (totalItems < 10) {\n\t\t\tcalculatedHeight += 8 + AbstractComboBox.ROW_HEIGHT * totalItems;\n\t\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', calculatedHeight + 'px');\n\t\t} else {\n\t\t\tcalculatedHeight += AbstractComboBox.ROW_HEIGHT * 10;\n\t\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', calculatedHeight + 'px');\n\t\t}\n\n\t}\n\n\tprotected getTotalItemsInCombo(): number {\n\t\treturn Number(this.values ? this.values.length : 0);\n\t}\n\n\tprotected getTotalItemsForDropdownHeight(): number {\n\t\tlet totalItems = this.getTotalItemsInCombo();\n\t\tif (this.emptyElement) {\n\t\t\ttotalItems += 1;\n\t\t}\n\t\tif (this.allElement) {\n\t\t\ttotalItems += 1;\n\t\t}\n\t\treturn totalItems;\n\t}\n\n\tpublic setDropdownPosition() {\n\t\tthis.myRenderer.setStyle(this.dropdownMenuElement.nativeElement, 'position', 'fixed');\n\t\tconst dropdownParentRect: any = this.inputElement.nativeElement.getBoundingClientRect();\n\t\tthis.top = dropdownParentRect.top;\n\t\tthis.left = dropdownParentRect.left;\n\n\t\t// Trick for positioning in IE11\n\t\tif (!!(<any>window).MSInputMethodContext && !!(<any>window).document.documentMode) {\n\t\t\tthis.top = dropdownParentRect.top + this.inputElement.nativeElement.offsetHeight;\n\t\t}\n\n\t\tif (this.top + this.dropdownElement.nativeElement.offsetHeight > window.innerHeight) {\n\t\t\tthis.top = this.top - this.dropdownElement.nativeElement.offsetHeight - this.inputElement.nativeElement.offsetHeight - AbstractComboBox.DROPDOWN_MENU_MARGIN;\n\t\t}\n\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'top', this.top + 'px');\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'left', this.left + 'px');\n\t}\n\n\tpublic getSelectedRow(): T {\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tconst selectedRow: Array<T> = this.gridOptions.api.getSelectedRows();\n\t\t\tif (selectedRow !== null) {\n\t\t\t\treturn selectedRow[0];\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic doSearch(event: any) {\n\t\tthis.filterValue = event.target.value;\n\t\tthis.doFilter();\n\t}\n\n\tpublic doFilter() {\n\t\tconst auxListArray = this.values.filter(element => element.description.toLowerCase()\n\t\t\t.indexOf(this.filterValue.toLowerCase()) > -1);\n\t\tthis.gridOptions.api.setRowData(auxListArray);\n\t}\n\n\tpublic doSelectAll() {\n\t\tthis.gridOptions.api.selectAll();\n\t}\n\n\tpublic doDeselectAll() {\n\t\tthis.gridOptions.api.deselectAll();\n\t}\n\n\tpublic onSelectionChanged(event: any) {\n\t\tif (!this.multipleSelection) {\n\t\t\tconst selectedRow = this.getSelectedRow();\n\t\t\tif (selectedRow !== null && selectedRow !== undefined) {\n\t\t\t\tthis.id = selectedRow[this.getIdField()];\n\t\t\t\tthis.code = selectedRow[this.getCodeField()];\n\t\t\t\tthis.description = selectedRow[this.getDescriptionField()];\n\t\t\t\tthis.currentSelected = selectedRow;\n\t\t\t\tthis.change.emit(selectedRow);\n\t\t\t\tthis.selectedItemChange.emit(selectedRow);\n\t\t\t\tthis.closeDropDown();\n\t\t\t\tif (selectedRow[this.getIdField()]) {\n\t\t\t\t\tthis.checkIfIsFavourite(selectedRow[this.getIdField()].toString());\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.selectionChanged = true;\n\t\t}\n\t}\n\n\tprotected checkIfIsFavourite(id: string | number): void {\n\t\tif (id != null) {\n\t\t\tconst idString = id.toString();\n\t\t\tthis.isFavourite = this.favouriteList.map(String)\n\t\t\t\t.includes(idString);\n\t\t} else {\n\t\t\tthis.isFavourite = false;\n\t\t}\n\t}\n\n\tpublic onModelUpdated() {\n\t\tthis.addGridScrollHandler();\n\t\tif (this.multipleSelection) {\n\t\t\tif (this.multipleSelectedItemList && this.multipleSelectedItemList.length > 0) {\n\t\t\t\tthis.gridOptions.api.forEachNode(node => {\n\t\t\t\t\tif (this.multipleSelectedItemList.some((item) => (item !== undefined && node.data !== undefined && item[this.getIdField()] === this.getRowNodeId(node.data)))) {\n\t\t\t\t\t\tnode.selectThisNode(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (this._id) {\n\t\t\tthis.gridOptions.api.forEachNode(node => {\n\t\t\t\tif (this.getRowNodeId(node.data) === this._id) {\n\t\t\t\t\tthis.currentSelected = node.data;\n\t\t\t\t\tnode.selectThisNode(true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic setGridSize() {\n\t\tthis.gridOptions.rowHeight = AbstractComboBox.ROW_HEIGHT;\n\t\tif (this.gridOptions.api && this.columnDefs) {\n\t\t\tif (this.windowResized) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tAutosizeGridHelper.sizeColumnsToFit(this.gridOptions);\n\t\t\t\t\tthis.windowResized = false;\n\t\t\t\t}, 5);\n\t\t\t} else {\n\t\t\t\tAutosizeGridHelper.sizeColumnsToFit(this.gridOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\t// overrides\n\tpublic onRowSelected(event: any) {\n\t\tif (!this.multipleSelection) {\n\t\t} else if (event.node && event.node.data && event.node.data[this.getIdField()] !== undefined) {\n\t\t\tif (this.multipleSelectedItemList) {\n\t\t\t\tconst elementIndexInSelectedList: number = this.multipleSelectedItemList.findIndex((item) => {\n\t\t\t\t\treturn item[this.getIdField()] === event.node.data[this.getIdField()];\n\t\t\t\t});\n\t\t\t\tif (event.node.selected) {\n\t\t\t\t\tif (elementIndexInSelectedList < 0) {\n\t\t\t\t\t\tif (this.allElement) {\n\t\t\t\t\t\t\t// if the selectedNode is \"all\"\n\t\t\t\t\t\t\tif (event.node.data[this.getIdField()] === this.getAllFieldIDValue()) {\n\t\t\t\t\t\t\t\tthis.multipleSelectedItemList = [];\n\t\t\t\t\t\t\t\tthis.unselectAllNodesInGridOptions();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// the selectedNode is NOT \"all: was \"all\" node already selected?\n\t\t\t\t\t\t\t\tconst elementAllInSelectedList: number = this.multipleSelectedItemList.findIndex((item) => {\n\t\t\t\t\t\t\t\t\treturn item[this.getIdField()] === this.getAllFieldIDValue();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t// yes, it was => unselect \"all\" node and empty the multipleSelectedItemList\n\t\t\t\t\t\t\t\tif (elementAllInSelectedList !== -1) {\n\t\t\t\t\t\t\t\t\tthis.multipleSelectedItemList = [];\n\t\t\t\t\t\t\t\t\tthis.unselectNodeAllInGridOptions();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Regardless the value of allElement, we have to add the newElement using the selectedNode\n\t\t\t\t\t\tthis.multipleSelectedItemList.push(event.node.data);\n\t\t\t\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList.slice();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (elementIndexInSelectedList !== -1) {\n\t\t\t\t\t\tthis.multipleSelectedItemList.splice(elementIndexInSelectedList, 1);\n\t\t\t\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList.slice();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.multipleSelectedItemList = [];\n\t\t\t\tthis.multipleSelectedItemList.push(event.node.data);\n\t\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList.slice();\n\t\t\t}\n\t\t\tthis.setDescriptionAndCodeWhenMultiple(this.multipleSelectedItemList);\n\t\t}\n\t}\n\n\tprivate unselectAllNodesInGridOptions() {\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.forEachNode(node => {\n\t\t\t\tif (node && this.getRowNodeId(node.data) !== this.getAllFieldIDValue()) {\n\t\t\t\t\tnode.selectThisNode(false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate unselectNodeAllInGridOptions() {\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.forEachNode(node => {\n\t\t\t\tif (node && this.getRowNodeId(node.data) === this.getAllFieldIDValue()) {\n\t\t\t\t\tnode.selectThisNode(false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic setCodeDescriptionById() {\n\t\tif (this.id !== undefined && this.values) {\n\t\t\tconst item: T = this.values.find(it => it[this.getIdField()] === this.id);\n\t\t\tif (item) {\n\t\t\t\tthis.description = item[this.getDescriptionField()];\n\t\t\t\tthis.code = item[this.getCodeField()];\n\t\t\t}\n\t\t} else if (this.id === undefined) {\n\t\t\tthis.description = undefined;\n\t\t\tthis.code = undefined;\n\t\t}\n\t}\n\n\t@HostListener('window:resize', ['$event'])\n\tpublic onResize() {\n\t\tif (this.isDropDownOpen()) {\n\t\t\tthis.closeDropDown();\n\t\t}\n\t\tconst parentWidth = this.comboboxElement.nativeElement.offsetWidth;\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'width', parentWidth + 'px');\n\t\tthis.windowResized = true;\n\t}\n\n\tprotected isComboBoxScrolling(element: HTMLElement): boolean {\n\t\tif (element.id === this.dropdownElement.nativeElement.id) {\n\t\t\treturn true;\n\t\t} else if (element.parentElement) {\n\t\t\treturn this.isComboBoxScrolling(element.parentElement);\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected scroll(event) {\n\t\tif (!this.isComboBoxScrolling(event.target)) {\n\t\t\tthis.closeDropDown();\n\t\t}\n\t}\n\n\tprotected addWindowScrollHandler() {\n\t\tthis.windowScrollHandler = this.scroll.bind(this);\n\t\twindow.addEventListener('scroll', this.windowScrollHandler, true);\n\t}\n\n\tprotected removeWindowScrollHandler() {\n\t\twindow.removeEventListener('scroll', this.windowScrollHandler, true);\n\t}\n\n\tprotected addGridScrollHandler() {\n\t\tif(this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.removeEventListener('bodyScroll', this.onBodyScroll.bind(this));\n\n\t\t\tthis.calculatedGridState = initializeCalculatedGridState();\n\t\t\tthis.onBodyScroll(undefined);\n\n\t\t\tthis.gridOptions.api.addEventListener('bodyScroll', this.onBodyScroll.bind(this));\n\t\t}\n\t}\n\n\tprotected removeGridScrollHandler() {\n\t\tif(this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.removeEventListener('bodyScroll', this.onBodyScroll.bind(this));\n\t\t}\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis.removeWindowScrollHandler();\n\t\tthis.removeGridScrollHandler();\n\t\tthis.chRef.detach();\n\t}\n\n\tpublic removeItem(item: T) {\n\t\tconst index = this.multipleSelectedItemList.findIndex(it => it[this.getIdField()] === item[this.getIdField()]);\n\t\tif (index !== -1) {\n\t\t\tthis.multipleSelectedItemList.splice(index, 1);\n\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList;\n\t\t}\n\t}\n\n\tprivate selectionItemListToIDList(): Array<string | number> {\n\t\treturn this.multipleSelectedItemList.map(item => item[this.getIdField()]);\n\t}\n\n\tpublic checkMultipleSelectionClosed() {\n\t\tif (this.selectionChanged) {\n\t\t\tthis.change.emit(this.multipleSelectedItemList);\n\t\t\tthis.selectedItemChange.emit(this.multipleSelectedItemList);\n\t\t\tthis.multipleSelectedItemListChange.emit(this.multipleSelectedItemList);\n\t\t\tthis.multipleSelectedIDListChange.emit(this.selectionItemListToIDList());\n\t\t}\n\t}\n\n\tpublic doGridReady() {\n\t\tif (this.filterValue && this.filter === true) {\n\t\t\tthis.doFilter();\n\t\t}\n\t}\n\n\tprivate onBodyScroll(event: any): void {\n\t\tclearTimeout(this.scrollTimeout);\n\t\tthis.scrollTimeout = setTimeout(() => {\n\t\t\tthis.doAutoSizeManagement(event);\n\t\t}, 150);\n\t}\n\n\tprotected doAutoSizeManagement(event?: any) {\n\t\tAutosizeGridHelper.doAutoSizeManagement(this.calculatedGridState, this.gridOptions, event);\n\t}\n}\n","import { Directive, Input } from '@angular/core';\n\n@Directive()\nexport class ComboBoxInputRenderer {\n\t@Input() selectedData: any;\n\t@Input() initialParams: any;\n\n\tprivate _id: number | string;\n\t@Input()\n\tset id( value: number | string ) {\n\t\tthis._id = value;\n\t}\n\n\tget id(): number | string {\n\t\treturn this._id;\n\t}\n\n\tprivate _description: string;\n\t@Input()\n\tset description( value: string ) {\n\t\tthis._description = value;\n\t}\n\n\tget description(): string {\n\t\treturn this._description;\n\t}\n\n\tconstructor() {\n\t}\n}\n","import { AfterViewInit, Component } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\nimport { ComboBoxInputRenderer } from '../combobox/renderer/combobox-input-renderer';\nimport { ColorUtilService } from '../utilities/color.util.service';\n\n@Component({\n\tselector:    'systelab-cell-colorpicker',\n\ttemplateUrl: 'color-renderer.component.html'\n})\nexport class ColorCellRendererComponent extends ComboBoxInputRenderer implements AgRendererComponent, AfterViewInit {\n\tpublic agGridParams: any;\n\tpublic border = '';\n\n\tpublic agInit(params: any): void {\n\t\tthis.agGridParams = params;\n\n\t\tif (params.data) {\n\t\t\tthis.id = params.data.id.toString();\n\t\t\tthis.description = params.data.id.toString();\n\t\t\tthis.border = '#' + ColorUtilService.darkColorFromHex(params.data.id.toString());\n\t\t}\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n\n\tpublic ngAfterViewInit() {\n\t\tif (this.id && this.id !== null) {\n\t\t\tthis.border = '#' + ColorUtilService.darkColorFromHex(this.id.toString());\n\t\t}\n\t}\n}\n","<div class=\"h-100 d-flex align-items-center\">\n    <div class=\"slab-color-tag\" [ngClass]=\"{'slab-color-tag-border': id && id!==''}\" [style.background-color]=\"id\" [style.border-color]=\"border\"></div>\n</div>","import { AfterViewInit, Component, ComponentFactoryResolver, ComponentRef, Input, OnChanges, OnDestroy, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ComboBoxInputRenderer } from './combobox-input-renderer';\n\n@Component( {\n\tselector: 'combobox-input-renderer',\n\ttemplate: `\n                  <div #target></div>`\n} )\n\nexport class ComboBoxInputRendererComponent implements OnChanges, AfterViewInit, OnDestroy {\n\t@ViewChild( 'target', { read: ViewContainerRef, static: false } ) target;\n\t@Input() componentType: any;\n\t@Input() id: number | string;\n\t@Input() description: string;\n\t@Input() selectedData: any;\n\t@Input() initialParams: any;\n\tcmpRef: ComponentRef<ComboBoxInputRenderer>;\n\tprivate isViewInitialized = false;\n\n\tconstructor( public componentFactoryResolver: ComponentFactoryResolver ) {\n\t}\n\n\tngOnChanges(): void {\n\t\tthis.updateComponent();\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.isViewInitialized = true;\n\t\tthis.updateComponent();\n\t}\n\n\tngOnDestroy(): void {\n\t\tif ( this.cmpRef ) {\n\t\t\tthis.cmpRef.destroy();\n\t\t}\n\t}\n\n\tprivate updateComponent() {\n\t\tif ( !this.isViewInitialized ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this.cmpRef ) {\n\t\t\tthis.cmpRef.destroy();\n\t\t}\n\t\tconst factory = this.componentFactoryResolver.resolveComponentFactory( this.componentType );\n\t\tthis.cmpRef = this.target.createComponent( factory );\n\t\tthis.target.insert( this.cmpRef.hostView );\n\n\t\tthis.updateComponentInputs();\n\t}\n\n\tprivate updateComponentInputs() {\n\t\tthis.cmpRef.instance.id = this.id;\n\t\tthis.cmpRef.instance.description = this.description;\n\t\tthis.cmpRef.instance.selectedData = this.selectedData;\n\t\tthis.cmpRef.instance.initialParams = this.initialParams;\n\t\tthis.cmpRef.changeDetectorRef.detectChanges();\n\t}\n}\n","import { ChangeDetectorRef, Component, OnInit, Renderer2 } from '@angular/core';\nimport { AbstractComboBox } from '../combobox/abstract-combobox.component';\nimport { ColorCellRendererComponent } from './color-cell-renderer.component';\nimport { ColorUtilService } from '../utilities/color.util.service';\nimport { ComboBoxInputRenderer } from '../combobox/renderer/combobox-input-renderer';\n\n@Component({\n\tselector:    'systelab-colorpicker',\n\ttemplateUrl: '../combobox/abstract-combobox.component.html'\n})\nexport class ColorComboBox extends AbstractComboBox<ComboBoxInputRenderer> implements OnInit {\n\tconstructor(public override myRenderer: Renderer2, chRef: ChangeDetectorRef) {\n\t\tsuper(myRenderer, chRef);\n\n\t\tthis.customInputRenderer = ColorCellRendererComponent;\n\n\t\tthis.values = ColorUtilService.generateColorArray([0, 128, 192, 255], true);\n\t}\n\n\tpublic override ngOnInit(): void {\n\t\tsuper.ngOnInit();\n\n\t\tthis.columnDefs = [\n\t\t\t{\n\t\t\t\tcolId:        'id',\n\t\t\t\tfield:        this.getDescriptionField(),\n\t\t\t\tcellRenderer: ColorCellRendererComponent,\n\t\t\t\tsuppressSizeToFit: true,\n\t\t\t\tflex: 1\n\t\t\t}\n\t\t];\n\n\t\tthis.gridOptions.columnDefs = this.columnDefs;\n\t}\n\n\tgetInstance(): ComboBoxInputRenderer {\n\t\treturn new ComboBoxInputRenderer();\n\t}\n\n\tgetDescriptionField(): string {\n\t\treturn 'description';\n\t}\n\n\tgetCodeField(): string {\n\t\treturn '';\n\t}\n\n\tgetIdField(): string {\n\t\treturn 'id';\n\t}\n\n}\n","<div #combobox class=\"dropdown slab-combobox d-flex w-100\" [ngClass]=\"{'disabled': isDisabled}\">\n    <div #dropdowntoogle class=\"slab-flex-1 d-flex dropdown-toggle slab-dropdown-toogle\" id=\"{{comboId}}\"\n         data-toggle=\"dropdown\" (click)=\"onComboClicked($event)\" (keydown.arrowDown)=\"onComboKeyArrowDown($event)\"\n         (keydown.arrowUp)=\"onComboKeyArrowUp($event)\">\n        <input *ngIf=\"!customInputRenderer\" #input [readonly]=\"!allowEditInput\" type=\"text\"\n               class=\"slab-flex-1 slab-combo-label slab-combo-input\"\n               [tabindex]=\"tabindex\"\n               [ngStyle]=\"getInputHeight()\" [style.font-family]=\"fontFamily\" [style.font-size.px]=\"fontSize\"\n               [style.font-weight]=\"fontWeight\" [style.font-style]=\"fontStyle\"\n               [(ngModel)]=\"description\" [disabled]=\"isDisabled\" [style.color]=\"inputColor\"/>\n        <div *ngIf=\"customInputRenderer\" #input readonly type=\"text\"\n             class=\"slab-flex-1 slab-combo-input combobox-input-renderer\" [ngStyle]=\"getInputHeight()\"\n             [style.font-family]=\"fontFamily\" [style.font-size.px]=\"fontSize\" [style.font-weight]=\"fontWeight\"\n             [style.font-style]=\"fontStyle\" [style.color]=\"inputColor\"\n             [tabindex]=\"tabindex\">\n            <combobox-input-renderer [componentType]=\"customInputRenderer\" [id]=\"id\" [description]=\"description\"\n                                     [initialParams]=\"initialParams\"\n                                     [selectedData]=\"currentSelected\"></combobox-input-renderer>\n        </div>\n        <button *ngIf=\"withDeleteOption && id && (id !== defaultIdValue)\" type=\"button\" #deleteButton\n                class=\"slab-combo-button border-right-0 rounded-0 {{deleteIconClass}}\" (click)=\"deleteValueSelected($event)\"\n                tabindex=\"-1\"></button>\n        <button *ngIf=\"withIcon && id\" class=\"slab-combo-button border-right-0 rounded-0 {{iconClass}}\"\n                [style.color]=\"iconColor\" tabindex=\"-1\"></button>\n        <button type=\"button\" *ngIf=\"withFavourites && id!==null && (!isTree || (isTree && level))\" #favouriteButton\n                class=\"slab-combo-button slab-combo-star border-right-0 rounded-0 text-primary\"\n                [ngClass]=\"{'icon-star': isFavourite, 'icon-star-o': !isFavourite }\" (click)=\"doToggleFavourite($event)\"\n                tabindex=\"-1\"></button>\n        <button type=\"button\" #combobutton class=\"slab-combo-button slab-combo-button-icon\" [disabled]=\"isDisabled\"\n                tabindex=\"-1\"></button>\n    </div>\n\n    <div #dropdownmenu class=\"dropdown-menu slab-combo-dropdown\" (click)=\"clickDropDownMenu($event)\"\n         [ngClass]=\"{'disabled': isDisabled}\">\n        <div #dropdown id=\"slab-combo-dropdown-box\" class=\"slab-combo-dropdown-box d-flex flex-column\">\n            <div *ngIf=\"filter\" class=\"slab-filter-container\" [style.font-family]=\"fontFamily\"\n                 [style.font-size.px]=\"fontSize\" [style.font-weight]=\"fontWeight\" [tabindex]=\"tabindex\"\n                 [style.font-style]=\"fontStyle\">\n                <input class=\"w-100 border rounded\" [value]=\"filterValue\" #filterInput (keyup)=\"doSearch($event)\">\n            </div>\n            <div *ngIf=\"selectDeselectAll\" class=\"slab-filter-container mb-2\">\n                <div class=\"w-100 text-center btn-group\" role=\"group\">\n                    <button type=\"button\" class=\"btn btn-sm w-50\"\n                            (click)=\"doSelectAll()\">{{'COMMON_SELECT_ALL' | translate | async }}</button>\n                    <button type=\"button\" class=\"btn btn-sm w-50\"\n                            (click)=\"doDeselectAll()\">{{'COMMON_DESELECT_ALL' | translate | async }}</button>\n                </div>\n            </div>\n            <div #hidden class=\"height-hidden\"></div>\n            <div class=\"slab-flex-1 position-relative\">\n                <ag-grid-angular *ngIf=\"isDropdownOpened\" #grid id=\"agGrid\" #agGrid style=\"width: 100%; height: 100%;\"\n                                 [style.font-family]=\"fontFamily\"\n                                 [style.font-size.px]=\"fontSize\" [style.font-weight]=\"fontWeight\"\n                                 [style.font-style]=\"fontStyle\" class=\"ag-theme-fresh\"\n                                 [gridOptions]=\"gridOptions\" (selectionChanged)=\"onSelectionChanged($event)\"\n                                 (modelUpdated)=\"onModelUpdated()\"\n                                 (rowSelected)=\"onRowSelected($event)\" (gridReady)=\"doGridReady()\"\n                                 (cellKeyDown)=\"onCellKeyDown($event)\">\n                </ag-grid-angular>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div *ngIf=\"listSelectedValues && multipleSelection\">\n    <ul class=\"ml-1 mt-2 mb-0 pl-0\" *ngIf=\"multipleSelectedItemList.length < 8\">\n        <li class=\"slab-combo-badge badge badge-primary mr-1 p-2\" role=\"badge\"\n            *ngFor=\"let item of multipleSelectedItemList\"><span\n                class=\"float-left mr-2\">{{item.description}}</span>\n            <button data-dismiss=\"badge\" type=\"button\" class=\"close\" (click)=\"removeItem(item)\" aria-label=\"Close\"\n                    tabindex=\"-1\">\n                <span aria-hidden=\"true\">&times;</span>\n            </button>\n        </li>\n    </ul>\n    <ul class=\"ml-1 mt-2 pl-0\" *ngIf=\"multipleSelectedItemList.length > 7\">\n        <li class=\"slab-combo-badge badge badge-primary mr-1 p-2\"\n            role=\"badge\">{{'COMMON_SELECTED_ITEMS' | translate | async }}\n            <span class=\"badge badge-light\">{{multipleSelectedItemList.length}}</span>\n        </li>\n    </ul>\n</div>\n","import {AbstractComboBox} from '../combobox/abstract-combobox.component';\nimport {ChangeDetectorRef, Component, OnInit, Renderer2} from '@angular/core';\nimport {I18nService} from 'systelab-translate';\n\nclass Element {\n\tconstructor(public id: string, public description: string) {\n\t}\n}\n\n@Component({\n\tselector:    'systelab-all-yes-no-select',\n\ttemplateUrl: '../combobox/abstract-combobox.component.html'\n})\n\nexport class AllYesNoSelect extends AbstractComboBox<Element> implements OnInit {\n\n\tprivate readonly descriptionAll: string;\n\tprivate readonly descriptionYes: string;\n\tprivate readonly descriptionNo: string;\n\n\tconstructor(myRenderer: Renderer2, public override chRef: ChangeDetectorRef, public i18nService: I18nService) {\n\t\tsuper(myRenderer, chRef);\n\t\tthis.descriptionAll = this.i18nService.instant('COMMON_ALL');\n\t\tthis.descriptionYes = this.i18nService.instant('COMMON_YES');\n\t\tthis.descriptionNo = this.i18nService.instant('COMMON_NO');\n\t}\n\n\tpublic override ngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tconst elements = new Array<Element>();\n\t\tthis.defaultDescription = this.descriptionAll;\n\t\tthis.defaultIdValue = '';\n\t\telements.push(new Element('', this.descriptionAll));\n\t\telements.push(new Element('Y', this.descriptionYes));\n\t\telements.push(new Element('N', this.descriptionNo));\n\t\tif (!this._id) {\n\t\t\tthis._id = '';\n\t\t}\n\t\tthis.values = elements;\n\t}\n\n\n\tgetInstance(): Element {\n\t\treturn new Element('', '');\n\t}\n\n\tgetDescriptionField(): string {\n\t\treturn 'description';\n\t}\n\n\tgetCodeField(): string {\n\t\treturn '';\n\t}\n\n\tgetIdField(): string {\n\t\treturn 'id';\n\t}\n\n}\n","import {AbstractComboBox} from '../combobox/abstract-combobox.component';\nimport { AfterViewInit, ChangeDetectorRef, Component, Input, Renderer2 } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\n\nclass Element {\n\tconstructor( public id: string, public description: string ) {\n\n\t}\n}\n\n@Component( {\n\tselector:    'systelab-no-yes-select',\n\ttemplateUrl: '../combobox/abstract-combobox.component.html'\n} )\n\nexport class NoYesSelect extends AbstractComboBox<Element> implements AfterViewInit{\n\n\n\t@Input() public reverseValues = false;\n\n\tconstructor( public override myRenderer: Renderer2, public override chRef: ChangeDetectorRef, public i18nService: I18nService ) {\n\t\tsuper( myRenderer, chRef );\n\t}\n\n\tpublic ngAfterViewInit(): void {\n\t\tconst elements = new Array<Element>();\n\t\tif ( this.reverseValues ) {\n\t\t\telements.push( new Element( 'Y', this.i18nService.instant( 'COMMON_YES' ) ) );\n\t\t\telements.push( new Element( 'N', this.i18nService.instant( 'COMMON_NO' ) ) );\n\t\t\tif ( !this._id ) {\n\t\t\t\tthis._id = 'Y';\n\t\t\t}\n\t\t} else {\n\t\t\telements.push( new Element( 'N', this.i18nService.instant( 'COMMON_NO' ) ) );\n\t\t\telements.push( new Element( 'Y', this.i18nService.instant( 'COMMON_YES' ) ) );\n\t\t\tif ( !this._id ) {\n\t\t\t\tthis._id = 'N';\n\t\t\t}\n\t\t}\n\t\tthis.values = elements;\n\t}\n\n\tgetInstance(): Element {\n\t\treturn new Element('', '');\n\t}\n\n\tgetDescriptionField(): string {\n\t\treturn 'description';\n\t}\n\n\tgetCodeField(): string {\n\t\treturn '';\n\t}\n\n\tgetIdField(): string {\n\t\treturn 'id';\n\t}\n}\n","import { AbstractComboBox } from '../combobox/abstract-combobox.component';\nimport { AfterViewInit, ChangeDetectorRef, Component, Renderer2 } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\n\nclass Element {\n\tconstructor(public id: string, public description: string) {\n\n\t}\n}\n\n@Component({\n\tselector:    'systelab-period-select',\n\ttemplateUrl: '../combobox/abstract-combobox.component.html'\n})\n\nexport class PeriodSelect extends AbstractComboBox<Element> implements AfterViewInit {\n\n\tconstructor(public override  myRenderer: Renderer2, public override chRef: ChangeDetectorRef, public i18nService: I18nService) {\n\t\tsuper(myRenderer, chRef);\n\t}\n\n\tpublic ngAfterViewInit(): void {\n\t\tconst elements = new Array<Element>();\n\t\telements.push(new Element(this.i18nService.instant('COMMON_PERIOD_WILL_BE_SPECIFIED'), this.i18nService.instant('COMMON_PERIOD_WILL_BE_SPECIFIED')));\n\t\telements.push(new Element(this.i18nService.instant('COMMON_CURRENT_MONTH'), this.i18nService.instant('COMMON_CURRENT_MONTH')));\n\t\telements.push(new Element(this.i18nService.instant('COMMON_ONE_MONTH_AGO'), this.i18nService.instant('COMMON_ONE_MONTH_AGO')));\n\t\telements.push(new Element(this.i18nService.instant('COMMON_TWO_MONTHS_AGO'), this.i18nService.instant('COMMON_TWO_MONTHS_AGO')));\n\t\telements.push(new Element(this.i18nService.instant('COMMON_THREE_MONTHS_AGO'), this.i18nService.instant('COMMON_THREE_MONTHS_AGO')));\n\t\telements.push(new Element(this.i18nService.instant('COMMON_CURRENT_YEAR'), this.i18nService.instant('COMMON_CURRENT_YEAR')));\n\t\telements.push(new Element(this.i18nService.instant('COMMON_ONE_YEAR_AGO'), this.i18nService.instant('COMMON_ONE_YEAR_AGO')));\n\t\telements.push(new Element(this.i18nService.instant('COMMON_TWO_YEARS_AGO'), this.i18nService.instant('COMMON_TWO_YEARS_AGO')));\n\t\telements.push(new Element(this.i18nService.instant('COMMON_THREE_YEARS_AGO'), this.i18nService.instant('COMMON_THREE_YEARS_AGO')));\n\t\telements.push(new Element(this.i18nService.instant('COMMON_ALL'), this.i18nService.instant('COMMON_ALL')));\n\t\tthis._id = this.i18nService.instant('COMMON_PERIOD_WILL_BE_SPECIFIED');\n\n\t\tthis.values = elements;\n\t}\n\n\tgetInstance(): Element {\n\t\treturn new Element('', '');\n\t}\n\n\tgetDescriptionField(): string {\n\t\treturn 'description';\n\t}\n\n\tgetCodeField(): string {\n\t\treturn '';\n\t}\n\n\tgetIdField(): string {\n\t\treturn 'id';\n\t}\n}\n","import {AbstractComboBox} from '../combobox/abstract-combobox.component';\nimport {ChangeDetectorRef, Component, Input, OnInit, Renderer2} from '@angular/core';\nimport {I18nService} from 'systelab-translate';\n\nclass Element {\n\tconstructor(public id: string, public description: string) {\n\n\t}\n}\n\n@Component({\n\tselector:    'systelab-gender-select',\n\ttemplateUrl: '../combobox/abstract-combobox.component.html'\n})\n\nexport class GenderSelect extends AbstractComboBox<Element> implements OnInit {\n\n\t@Input() showAll = false;\n\t@Input() showUnknown = true;\n\tprivate readonly descriptionAll;\n\tprivate readonly descriptionUnknown;\n\tprivate readonly descriptionMale;\n\tprivate readonly descriptionFemale;\n\n\n\tconstructor(public override myRenderer: Renderer2, public override  chRef: ChangeDetectorRef, public i18nService: I18nService) {\n\t\tsuper(myRenderer, chRef);\n\t\tthis.descriptionAll =  this.i18nService.instant('COMMON_ALL');\n\t\tthis.descriptionUnknown = this.i18nService.instant('COMMON_UNKNOWN');\n\t\tthis.descriptionMale =  this.i18nService.instant('COMMON_MALE');\n\t\tthis.descriptionFemale =  this.i18nService.instant('COMMON_FEMALE');\n\t}\n\n\tpublic override ngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tthis.defaultIdValue = 'M';\n\t\tthis.defaultDescription = this.descriptionMale;\n\t\tconst elements = new Array<Element>();\n\t\tif (this.showAll) {\n\t\t\tthis.defaultIdValue = 'A';\n\t\t\tthis.defaultDescription = this.descriptionAll;\n\t\t\telements.push(new Element('A', this.descriptionAll));\n\t\t}\n\t\tif (this.showUnknown) {\n\t\t\tthis.defaultIdValue = 'U';\n\t\t\tthis.defaultDescription = this.descriptionUnknown;\n\t\t\telements.push(new Element('U', this.descriptionUnknown));\n\t\t}\n\t\telements.push(new Element('M', this.descriptionMale));\n\t\telements.push(new Element('F', this.descriptionFemale));\n\n\t\tif (!this._id) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (this.showAll) {\n\t\t\t\t\tthis._id = 'A';\n\t\t\t\t} else if (this.showUnknown) {\n\t\t\t\t\tthis._id = 'U';\n\t\t\t\t} else {\n\t\t\t\t\tthis._id = 'M';\n\t\t\t\t}\n\t\t\t}, 200);\n\t\t}\n\t\tthis.values = elements;\n\t}\n\n\tgetInstance(): Element {\n\t\treturn new Element('', '');\n\t}\n\n\tgetDescriptionField(): string {\n\t\treturn 'description';\n\t}\n\n\tgetCodeField(): string {\n\t\treturn '';\n\t}\n\n\tgetIdField(): string {\n\t\treturn 'id';\n\t}\n\n}\n","import { Injectable, Injector, Type } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DialogRef } from './dialog-ref';\nimport { SystelabModalContext } from './modal-context';\n\n@Injectable({providedIn: 'root'})\nexport class DialogService {\n\n\tpublic static readonly breakpointMedium = 768;\n\n\tconstructor(private readonly overlay: Overlay, private injector: Injector) {\n\t}\n\n\tpublic showDialog(component: Type<any>, parameters: SystelabModalContext): Observable<any> {\n\t\tconst overlayRef = this.overlay.create(this.getConfig(parameters));\n\t\tconst dialogRef = new DialogRef(overlayRef, parameters);\n\t\tconst userProfilePortal = new ComponentPortal(component, null, this.createInjector(dialogRef));\n\t\toverlayRef.attach(userProfilePortal);\n\t\treturn dialogRef.getResult();\n\t}\n\n\tprivate getConfig(parameters: SystelabModalContext): OverlayConfig {\n\t\tconst config = new OverlayConfig();\n\t\tconfig.panelClass = parameters.dialogClass;\n\n\t\tif (window.innerWidth <= DialogService.breakpointMedium || parameters.fullScreen) {\n\t\t\tconfig.width = '100%';\n\t\t\tconfig.height = '100%';\n\t\t\tconfig.panelClass = 'fullscreen';\n\t\t} else {\n\t\t\tconfig.width = parameters.width ? parameters.width : parameters.widthRelative;\n\t\t\tconfig.height = parameters.height ? parameters.height : parameters.heightRelative;\n\n\t\t\tconfig.minWidth = parameters.minWidth ? parameters.minWidth : parameters.minWidthRelative;\n\t\t\tconfig.minHeight = parameters.minHeight ? parameters.minHeight : parameters.minHeightRelative;\n\n\t\t\tconfig.maxWidth = parameters.maxWidth ? parameters.maxWidth : parameters.maxWidthRelative;\n\t\t\tconfig.maxHeight = parameters.maxHeight ? parameters.maxHeight : parameters.maxHeightRelative;\n\t\t}\n\t\tconfig.hasBackdrop = true;\n\n\t\tif (parameters.isContextDialog && parameters.positionX && parameters.positionY) {\n\t\t\tconfig.panelClass = ['slab-context-modal', 'slab-context-modal-arrow-center'];\n\t\t\tconst screenWidth = window.innerWidth;\n\t\t\tlet positionX = parameters.positionX - (parameters.width / 2);\n\t\t\tif ((positionX + parameters.width) > screenWidth) {\n\t\t\t\tpositionX = screenWidth - parameters.width;\n\t\t\t\tconfig.panelClass = ['slab-context-modal', 'slab-context-modal-arrow-right'];\n\t\t\t} else if (positionX < 0) {\n\t\t\t\tpositionX = parameters.positionX - (parameters.positionX / 2);\n\t\t\t\tconfig.panelClass = ['slab-context-modal', 'slab-context-modal-arrow-left'];\n\t\t\t}\n\t\t\tconst positionY = parameters.positionY + 50;\n\t\t\tpositionX = ((positionX / screenWidth) * 100) + 5;\n\n\t\t\tconfig.positionStrategy = this.overlay.position()\n\t\t\t\t.global()\n\t\t\t\t.left(positionX\n\t\t\t\t\t.toString() + '%')\n\t\t\t\t.top(positionY.toString() + 'px');\n\t\t} else {\n\t\t\tconfig.positionStrategy = this.overlay.position()\n\t\t\t\t.global()\n\t\t\t\t.centerHorizontally()\n\t\t\t\t.centerVertically();\n\t\t}\n\n\t\tconfig.scrollStrategy = this.overlay.scrollStrategies.block();\n\n\t\treturn config;\n\t}\n\n\tprivate createInjector(overlayRef: DialogRef<SystelabModalContext>): Injector {\n\t\treturn Injector.create({\n\t\t\tparent: this.injector,\n\t\t\tproviders: [\n\t\t\t\t{ provide: DialogRef, useValue: overlayRef }\n\t\t\t]\n\t\t});\n\t}\n}\n","import { Component, Input } from '@angular/core';\nimport { DialogService } from '../../modal/dialog/dialog.service';\n\nexport class ApplicationHeaderMenuEntry {\n\tconstructor(public optionName: string, public isDivider: boolean, public action?: any) {\n\t}\n}\n\n@Component({\n\tselector: 'systelab-app-header',\n\ttemplateUrl: 'app-header.component.html'\n})\nexport class ApplicationHeaderComponent {\n\n\t@Input() public userName: string;\n\t@Input() public userFullName: string;\n\t@Input() public title: string;\n\t@Input() public logoIcon: string;\n\t@Input() public menuBars = false;\n\t@Input() public menu: ApplicationHeaderMenuEntry[] = [];\n\n\tconstructor(protected dialogService: DialogService) {\n\n\t}\n}\n","<nav class=\"slab-app-header-bar d-flex align-items-center align-items-stretch\">\n    <i [ngClass]=\"logoIcon\" class=\"slab-app-header-modulab-icon\"></i>\n    <div class=\"slab-app-header-labels-container slab-flex-1 text-truncate\">\n        <label *ngIf=\"title\" class=\"slab-app-header-title text-truncate\">{{title}}</label>\n        <small *ngIf=\"userFullName\" id=\"username\" class=\"d-block text-truncate\">{{userFullName}}\n        </small>\n    </div>\n    <div class=\"d-flex align-items-center mr-2\">\n        <ng-content></ng-content>\n    </div>\n    <div class=\"dropdown slab-app-header-user-container\">\n        <div class=\"dropdown-toggle\" data-toggle=\"dropdown\" data-boundary=\"window\" *ngIf=\"menu.length > 0 || userName\">\n            <button *ngIf=\"!menuBars\" class=\"slab-app-header-user-icon d-inline-block align-middle\">\n                <div class=\"align-middle h-100\">\n                    <i class=\"icon-user align-bottom\"></i>\n                </div>\n            </button>\n            <button *ngIf=\"menuBars\" class=\"slab-app-header-bars-icon d-inline-block align-middle\">\n                <div class=\"align-middle h-100\">\n                    <i class=\"icon-list align-bottom\"></i>\n                </div>\n            </button>\n            <label *ngIf=\"!menuBars\" class=\"text-truncate align-middle\">{{userName}}</label>\n            <div class=\"dropdown-menu dropdown-menu-right slab-dropdown\" *ngIf=\"menu.length > 0\">\n                <ul>\n                    @for (menuEntry of menu; track menuEntry.action) {\n                        <li (click)=\"menuEntry.action()\">{{menuEntry.optionName}}\n                            <div *ngIf=\"menuEntry.isDivider\" class=\"dropdown-divider\"></div>\n                        </li>\n                    }\n                </ul>\n            </div>\n        </div>\n    </div>\n</nav>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ApplicationSidebarAction, ApplicationSidebarTab } from './app-sidebar.component';\n\n@Component({\n\tselector:    'systelab-app-sidebar-large',\n\ttemplateUrl: 'app-sidebar-large.component.html'\n})\nexport class ApplicationSidebarLargeComponent implements OnInit {\n\n\t@Input() public actions: ApplicationSidebarAction[] = [];\n\t@Input() public tabs: ApplicationSidebarTab[] = [];\n\t@Output() public selected = new EventEmitter();\n\n\tconstructor() {\n\t}\n\n\tpublic ngOnInit(): void {\n\t\tthis.checkSubMenuSelected();\n\t}\n\n\tprivate checkSubMenuSelected() {\n\t\tthis.tabs.forEach((tab) => {\n\t\t\tif (tab.subMenu) {\n\t\t\t\ttab.subMenu.forEach((subTab) => {\n\t\t\t\t\tif (subTab.isSelected === true) {\n\t\t\t\t\t\ttab.isSelected = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic selectTab(id: string) {\n\t\tthis.tabs.forEach((tab) => {\n\t\t\ttab.isSelected = (tab.id === id);\n\t\t\tif (tab.subMenu) {\n\t\t\t\ttab.subMenu.forEach((subTab) => {\n\t\t\t\t\tif (subTab.id === id) {\n\t\t\t\t\t\tsubTab.isSelected = true;\n\t\t\t\t\t\ttab.isSelected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsubTab.isSelected = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tthis.selected.emit(id);\n\t}\n}\n","<div class=\"slab-app-sidebar-large-menu-container\">\n    <ul class=\"slab-app-sidebar-tabs-container\">\n        @for (tab of tabs; track tab.id) {\n            <li class=\"slab-app-sidebar-tab\" (click)=\"!tab.subMenu ? tab.action ? tab.action(tab.id) : selectTab(tab.id) : false\"\n                [class.selected]=\"tab.isSelected\">\n                <div class=\"slab-app-sidebar-tab-decoration float-left\"></div>\n                <span>{{tab.name}}</span>\n                <ul *ngIf=\"tab.subMenu\" class=\"slab-app-sidebar-submenu\">\n                    @for (subTab of tab.subMenu; track subTab.id) {\n                        <li class=\"slab-app-sidebar-subtab\"  (click)=\"subTab.action ? subTab.action(subTab.id) : selectTab(subTab.id)\" [class.selected]=\"subTab.isSelected\">\n                            <div class=\"slab-app-sidebar-tab-decoration  float-left\"></div>\n                            <span>{{subTab.name}}</span>\n                        </li>\n                    }\n                </ul>\n            </li>\n        }\n    </ul>\n    <ul class=\"slab-app-sidebar-actions-container\">\n        @for (action of actions; track action.name) {\n            <button type=\"button\" class=\"btn\" (click)=\"action.action()\">\n                <i *ngIf=\"action.icon\" class=\"{{action.icon}}\"></i> {{action.name}}\n            </button>\n        }\n    </ul>\n</div>\n","import { Injectable } from '@angular/core';\nimport { addDays, addMonths, addWeeks, addYears, getDaysInMonth } from 'date-fns';\n\n@Injectable()\nexport class DataTransformerService {\n\n\tpublic processShortcuts(date: string, fromDateForRelative: Date): Date {\n\t\tconst regExp = new RegExp('^[\\-]?[0-9]+[DWSMYA]$', 'i');\n\t\tif (regExp.test(date)) {\n\t\t\tconst shortcut = date.substr(-1)\n\t\t\t\t.toUpperCase();\n\t\t\tconst amount = Number(date.slice(0, -1));\n\t\t\tconst fromDate = fromDateForRelative ?  fromDateForRelative : new Date();\n\t\t\tswitch (shortcut) {\n\t\t\t\tcase 'D':\n\t\t\t\t\treturn addDays(fromDate, amount);\n\t\t\t\tcase 'W':\n\t\t\t\tcase 'S':\n\t\t\t\t\treturn addWeeks(fromDate, amount);\n\t\t\t\tcase 'M':\n\t\t\t\t\treturn addMonths(fromDate, amount);\n\t\t\t\tcase 'Y':\n\t\t\t\tcase 'A':\n\t\t\t\t\treturn addYears(fromDate, amount);\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic infereDate(date: string, dateFormat: string): Date {\n\t\tlet dateTmp = date.trim();\n\n\t\tconst dayPosition = dateFormat.lastIndexOf('d');\n\t\tconst monthPosition = dateFormat.lastIndexOf('m');\n\t\tconst yearPosition = dateFormat.lastIndexOf('y');\n\n\t\tconst dayBefore = dayPosition < monthPosition;\n\t\tconst yearBefore = yearPosition < dayPosition;\n\n\t\tlet firstSeparatorPosition: number;\n\t\tlet secondSeparatorPosition: number;\n\n\t\tconst separator = this.getDateSeparator(dateFormat);\n\t\tif (separator) {\n\t\t\t// Get separator positions before removing them\n\t\t\tfirstSeparatorPosition = dateTmp.indexOf(separator);\n\t\t\tsecondSeparatorPosition = dateTmp.lastIndexOf(separator);\n\n\t\t\tdateTmp = this.removeSeparator(dateTmp, separator);\n\t\t\t// After removing the desired separator, no other separator is expected\n\t\t\tif (this.getDateSeparator(dateTmp)) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\n\t\tconst dayLength = this.getDayLength(dateTmp, dayBefore, yearBefore, firstSeparatorPosition, secondSeparatorPosition);\n\t\tconst monthLength = [4, 6, 8].some(length => dateTmp.length === length) ? dayLength : 2 / dayLength;\n\t\tconst yearLength = [7, 8].some(length => dateTmp.length === length) ? 4 : 2;\n\n\t\tif (dayLength && monthLength && yearLength) {\n\t\t\treturn this.getFormattedDate(dateTmp, dayBefore, yearBefore, dayLength, monthLength, yearLength);\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate getDayLength(date: string, dayBefore: boolean, yearBefore: boolean, firstSeparatorPosition: number, secondSeparatorPosition: number): number {\n\t\tswitch (date.length) {\n\t\t\tcase 4:\n\t\t\t\treturn 1;\n\t\t\tcase 6:\n\t\t\tcase 8:\n\t\t\t\treturn 2;\n\t\t\tcase 5:\n\t\t\tcase 7:\n\t\t\t\tif (firstSeparatorPosition > 0 && secondSeparatorPosition !== firstSeparatorPosition) {\n\t\t\t\t\tlet dayLength: number;\n\t\t\t\t\tif (secondSeparatorPosition - firstSeparatorPosition === 2) {\n\t\t\t\t\t\tdayLength = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdayLength = 2;\n\t\t\t\t\t}\n\t\t\t\t\tif (!dayBefore) {\n\t\t\t\t\t\tdayLength = 2 / dayLength;\n\t\t\t\t\t}\n\t\t\t\t\tif (!yearBefore) {\n\t\t\t\t\t\tdayLength = 2 / dayLength;\n\n\t\t\t\t\t}\n\t\t\t\t\treturn dayLength;\n\t\t\t\t}\n\t\t}\n\t}\n\n\tprivate getFormattedDate(dateTmp: string, dayBefore: boolean, yearBefore: boolean, dayLength: number, monthLength: number, yearLength): Date {\n\t\tlet dayInDate: number;\n\t\tlet monthInDate: number;\n\t\tlet yearInDate: number;\n\t\tif (yearBefore) {\n\t\t\tyearInDate = +dateTmp.substring(0, yearLength);\n\t\t\tif (dayBefore) {\n\t\t\t\tdayInDate = +dateTmp.substring(yearLength, yearLength + dayLength);\n\t\t\t\tmonthInDate = +dateTmp.substring(yearLength + dayLength) - 1;\n\t\t\t} else {\n\t\t\t\tmonthInDate = +dateTmp.substring(yearLength, yearLength + monthLength) - 1;\n\t\t\t\tdayInDate = +dateTmp.substring(yearLength + monthLength);\n\t\t\t}\n\t\t} else {\n\t\t\tif (dayBefore) {\n\t\t\t\tdayInDate = +dateTmp.substring(0, dayLength);\n\t\t\t\tmonthInDate = +dateTmp.substring(dayLength, dayLength + monthLength) - 1;\n\t\t\t} else {\n\t\t\t\tmonthInDate = +dateTmp.substring(0, monthLength) - 1;\n\t\t\t\tdayInDate = +dateTmp.substring(monthLength, monthLength + dayLength);\n\t\t\t}\n\t\t\tyearInDate = +dateTmp.substring(monthLength + dayLength);\n\t\t}\n\n\t\tif (yearInDate < 100) {\n\t\t\tyearInDate = 2000 + yearInDate;\n\t\t}\n\t\treturn (this.checkMonthNumber(monthInDate) && this.checkDayNumber(yearInDate,monthInDate,dayInDate))\n\t\t\t? new Date(yearInDate, monthInDate, dayInDate)\n\t\t\t: null;\n\t}\n\n\tprivate checkMonthNumber(monthInDate: number): boolean {\n\t\treturn (monthInDate >= 0 && monthInDate <= 11); // Months go from 0 to 11\n\t}\n\n\tprivate checkDayNumber(yearInDate: number, monthInDate: number, dayInDate: number): boolean{\n\t\treturn (dayInDate >= 1 && dayInDate <= getDaysInMonth(new Date(yearInDate, monthInDate)));\n\t}\n\n\tprivate getDateSeparator(dateFormat: string) {\n\t\tlet dateSeparator: string;\n\t\tif (dateFormat.includes('/')) {\n\t\t\tdateSeparator = '/';\n\t\t} else if (dateFormat.includes('-')) {\n\t\t\tdateSeparator = '-';\n\t\t} else if (dateFormat.includes('.')) {\n\t\t\tdateSeparator = '.';\n\t\t}\n\t\treturn dateSeparator;\n\t}\n\n\tprivate removeSeparator(dateTmp: string, dateSeparator: string): string {\n\t\treturn dateTmp.split(dateSeparator)\n\t\t\t.join('');\n\t}\n}\n","import {\n\tAfterViewInit,\n\tComponent,\n\tDoCheck,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tRenderer2,\n\tViewChild\n} from '@angular/core';\nimport { addDays } from 'date-fns';\nimport { PrimeNGConfig } from 'primeng/api';\nimport { Calendar } from 'primeng/calendar';\nimport { I18nService } from 'systelab-translate';\nimport { DataTransformerService } from './date-transformer.service';\n\n@Component({\n\tselector:    'systelab-datepicker',\n\ttemplateUrl: 'datepicker.component.html',\n\tproviders:   [DataTransformerService]\n})\nexport class DatepickerComponent implements OnInit, AfterViewInit, DoCheck, OnDestroy {\n\n\t@Input() public disabled = false;\n\t@Input() public error = false;\n\t@Input() public required = false;\n\t@Input() public inputExpandHeight: boolean;\n\t@Input() public markPreviousAfterDate = false;\n\t@Input() public inputFontSize: number;\n\t@Input() public showTodayButton = false;\n\t@Input() public inline = false;\n\t@Input() public minDate: Date;\n\t@Input() public maxDate: Date;\n\t@Input() public warnDaysBefore: number;\n\t@Input() public warnDaysAfter: number;\n\t@Input() public autofocus = false;\n\t@Input() public fromDateForRelativeDates: Date;\n\t@Input() public tabindex: number;\n\t@Input() public withIntegratedTime = false;\n\t@Input() public onlyTime = false;\n\t@Input() public showOtherMonths = true;\n\t@Input() public selectOtherMonths = false;\n\t@Input() public dateFormat: string;\n\n\t@Input()\n\tget currentDate(): Date {\n\t\treturn this._currentDate;\n\t}\n\n\tset currentDate(value: Date) {\n\t\tthis._currentDate = value;\n\t\tif (this.markPreviousAfterDate || (this.warnDaysBefore && this.warnDaysBefore > 0)) {\n\n\t\t\tif (!this.warnDaysBefore) {\n\t\t\t\tthis.warnDaysBefore = 1;\n\t\t\t}\n\n\t\t\tthis.checkPreviousAfterDate();\n\t\t}\n\t\tif (this.warnDaysAfter && this.warnDaysAfter > 0) {\n\t\t\tthis.checkTooFarDate();\n\t\t}\n\t}\n\n\t@Output() public currentDateChange = new EventEmitter<Date>();\n\n\t@ViewChild('calendar', {static: true}) public currentCalendar: Calendar;\n\n\tpublic inputChanged = false;\n\tprotected _currentDate: Date;\n\tpublic previousAfterDate = false;\n\tpublic tooFarDate = false;\n\tpublic language: any;\n\n\tpublic currentDocSize: number;\n\tpublic currentLanguage: string;\n\t// eslint-disable-next-line @typescript-eslint/ban-types\n\tpublic destroyWheelListener: Function;\n\t// eslint-disable-next-line @typescript-eslint/ban-types\n\tpublic destroyKeyListener: Function;\n\tpublic inputElement: ElementRef;\n\tpublic focusEvt: FocusEvent;\n\tpublic isTablet = false;\n\tpublic datepickerId: string = (Math.random() * (999999999999 - 1)).toString();\n\tpublic formatError: boolean;\n\n\tprivate headerElement: any = document.getElementById(this.datepickerId);\n\n\tconstructor(protected myRenderer: Renderer2, protected i18nService: I18nService, protected dataTransformerService: DataTransformerService, protected config: PrimeNGConfig) {\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis.getLanguage();\n\n\t\tthis.currentDocSize = window.innerWidth;\n\t\tthis.currentLanguage = this.i18nService.getCurrentLanguage();\n\n\t\tthis.addListeners();\n\t\tif (navigator.userAgent.indexOf('iPad') > -1 || navigator.userAgent.indexOf('Android') > -1) {\n\t\t\tthis.isTablet = true;\n\t\t}\n\t}\n\n\tpublic ngAfterViewInit() {\n\t\tconst newElement = document.createElement('i');\n\t\tif (!this.inline) {\n\t\t\tnewElement.className = this.onlyTime ? 'icon-clock' : 'icon-calendar';\n\t\t\tif (this.currentCalendar) {\n\t\t\t\tif (this.autofocus) {\n\t\t\t\t\tthis.currentCalendar.el.nativeElement.querySelector('input')\n\t\t\t\t\t\t.focus();\n\t\t\t\t}\n\t\t\t\tthis.currentCalendar.el.nativeElement.childNodes[0].className = 'p-calendar slab-form-icon w-100';\n\t\t\t\tthis.currentCalendar.el.nativeElement.childNodes[0].appendChild(newElement);\n\t\t\t}\n\t\t}\n\t\tif (this.tabindex) {\n\t\t\tthis.currentCalendar.el.nativeElement.querySelector('input')\n\t\t\t\t.setAttribute('tabindex', this.tabindex);\n\t\t}\n\n\t}\n\n\tpublic ngDoCheck() {\n\t\tif (window.innerWidth !== this.currentDocSize) {\n\t\t\tthis.currentDocSize = window.innerWidth;\n\t\t\tthis.closeDatepicker();\n\t\t}\n\n\t\tif (this.headerElement !== document.getElementById(this.datepickerId)) {\n\t\t\tthis.headerElement = document.getElementById(this.datepickerId);\n\t\t\tif (this.headerElement) {\n\t\t\t\tthis.repositionateCalendar(new ElementRef(this.headerElement.parentElement.parentElement));\n\t\t\t}\n\t\t}\n\n\t\tif (this.currentLanguage !== this.i18nService.getCurrentLanguage()) {\n\t\t\tthis.currentLanguage = this.i18nService.getCurrentLanguage();\n\t\t\tthis.getLanguage();\n\t\t}\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis.destroyKeyListener?.();\n\t\tthis.destroyWheelListener?.();\n\t}\n\n\tpublic selectDate(): void {\n\t\tthis.formatError = false;\n\t\tthis.currentDateChange.emit(this.currentDate);\n\t\tthis.inputChanged = false;\n\t}\n\n\tpublic changeDate(): void {\n\t\tthis.formatError = false;\n\t\tif (this.currentCalendar?.inputfieldViewChild.nativeElement.value !== undefined) {\n\t\t\tconst dateStr = this.currentCalendar.inputfieldViewChild.nativeElement.value.trim()\n\t\t\t\t.toLowerCase();\n\t\t\tif (this.inputChanged) {\n\t\t\t\tif (dateStr.length >= 2) {\n\t\t\t\t\tconst transformedDate = this.dataTransformerService.processShortcuts(dateStr, this.fromDateForRelativeDates);\n\t\t\t\t\tif (transformedDate) {\n\t\t\t\t\t\tthis.currentDate = transformedDate;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.onlyTime || this.withIntegratedTime) {\n\t\t\t\t\t\t\tconst splitDateByHours = dateStr.split(':');\n\t\t\t\t\t\t\tif (!this.onlyTime) {\n\t\t\t\t\t\t\t\tswitch (splitDateByHours.length) {\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tthis.infereDate(dateStr);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tconst hourPosition = splitDateByHours[0].length-2;\n\t\t\t\t\t\t\t\t\t\tconst dateString = splitDateByHours[0].substring(0, hourPosition);\n\t\t\t\t\t\t\t\t\t\tthis.infereDate(dateString);\n\t\t\t\t\t\t\t\t\t\tthis.parseTime(+splitDateByHours[0].substring(hourPosition), +splitDateByHours[1]);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthis.formatError = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst hour = +splitDateByHours[0];\n\t\t\t\t\t\t\t\tconst minute = +splitDateByHours[1];\n\t\t\t\t\t\t\t\tthis.currentDate = new Date();\n\t\t\t\t\t\t\t\tthis.parseTime(hour, minute);\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.infereDate(dateStr);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.currentDateChange.emit(this.currentDate);\n\t\t\t\tthis.inputChanged = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate parseTime(hour: number, minute: number): void {\n\t\tconst isValidHour = hour >= 0 && hour <= 23;\n\t\tconst isValidMinute = minute >= 0 && minute <= 59;\n\t\tif (!isValidHour || !isValidMinute) {\n\t\t\tthis.formatError = true;\n\t\t} else {\n\t\t\tthis.currentDate.setHours(hour, minute);\n\t\t}\n\t}\n\n\tprivate infereDate(dateStr: string): void {\n\t\tconst inferedDate = this.dataTransformerService.infereDate(dateStr, this.i18nService.getDateFormatForDatePicker());\n\t\tif (inferedDate) {\n\t\t\tthis.currentDate = inferedDate;\n\t\t} else {\n\t\t\tthis.formatError = true;\n\t\t}\n\t}\n\n\tpublic onInput(event: KeyboardEvent) {\n\t\tif (event.code === 'Enter' || event.code === 'Tab') {\n\t\t\tthis.currentCalendar.inputfieldViewChild.nativeElement.blur();\n\t\t\tthis.currentCalendar.onBlur.emit(event);\n\t\t\tthis.closeDatepicker();\n\t\t} else {\n\t\t\tthis.inputChanged = true;\n\t\t}\n\t}\n\n\tpublic saveEventOnFocus(evt: FocusEvent): void {\n\t\tthis.inputElement = new ElementRef(evt.target);\n\t\tthis.focusEvt = evt;\n\t}\n\n\tpublic repositionateCalendar(element?: ElementRef): void {\n\n\t\ttry {\n\t\t\tconst { inputElementTop, inputElementHeight, datepickerElementHeight } = this.inputElement.nativeElement.getBoundingClientRect();\n\t\t\tif (inputElementTop + inputElementHeight + datepickerElementHeight > window.innerHeight) {\n\t\t\t\tconst newTop: number = inputElementTop + inputElementHeight - (datepickerElementHeight + inputElementHeight + 10);\n\t\t\t\tthis.myRenderer.setAttribute(element.nativeElement, 'top', newTop + 'px');\n\t\t\t}\n\t\t} catch (ex) {\n\t\t}\n\t}\n\n\tpublic nextMonth(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tlet month = this.currentCalendar.currentMonth;\n\t\t\tif (month < 11) {\n\t\t\t\tmonth++;\n\t\t\t\tthis.currentCalendar.onMonthDropdownChange(month.toString());\n\t\t\t} else {\n\t\t\t\tmonth = 0;\n\t\t\t\tlet year = this.currentCalendar.currentYear;\n\t\t\t\tyear++;\n\t\t\t\tthis.currentCalendar.onMonthDropdownChange(month.toString());\n\t\t\t\tthis.currentCalendar.onYearDropdownChange(year.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic prevMonth(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tlet month = this.currentCalendar.currentMonth;\n\t\t\tif (month > 0) {\n\t\t\t\tmonth--;\n\t\t\t\tthis.currentCalendar.onMonthDropdownChange(month.toString());\n\t\t\t} else {\n\t\t\t\tmonth = 11;\n\t\t\t\tlet year = this.currentCalendar.currentYear;\n\t\t\t\tyear--;\n\t\t\t\tthis.currentCalendar.onMonthDropdownChange(month.toString());\n\t\t\t\tthis.currentCalendar.onYearDropdownChange(year.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic nextYear(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tconst currentYear = this.currentCalendar.currentYear + 1;\n\t\t\tthis.currentCalendar.onYearDropdownChange(currentYear.toString());\n\t\t}\n\t}\n\n\tpublic prevYear(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tconst currentYear = this.currentCalendar.currentYear - 1;\n\t\t\tthis.currentCalendar.onYearDropdownChange(currentYear.toString());\n\t\t}\n\t}\n\n\tpublic clearDate(event): void {\n\t\tif (this.currentCalendar) {\n\t\t\tthis.currentDate = null;\n\t\t\tthis.currentCalendar.onClearButtonClick(event);\n\t\t\tthis.currentDateChange.emit(this.currentDate);\n\t\t\tthis.inputChanged = false;\n\t\t}\n\t}\n\n\tpublic setTodayDate(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tthis.currentDate = new Date();\n\t\t\tthis.currentDateChange.emit(this.currentDate);\n\t\t\tthis.inputChanged = false;\n\t\t}\n\t}\n\n\tpublic closeDatepicker(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tthis.currentCalendar.focus = false;\n\t\t\tthis.currentCalendar.overlayVisible = false;\n\t\t}\n\t}\n\n\tprivate checkPreviousAfterDate(): void {\n\t\tif (this._currentDate) {\n\t\t\tthis._currentDate.setHours(0, 0, 0, 0);\n\t\t\tconst pastDate = addDays(new Date(), this.warnDaysBefore * -1);\n\t\t\tpastDate.setHours(0, 0, 0, 0);\n\t\t\tthis.previousAfterDate = this._currentDate.getTime() <= pastDate.getTime();\n\t\t} else {\n\t\t\tthis.previousAfterDate = false;\n\t\t}\n\t}\n\n\tprivate checkTooFarDate() {\n\t\tif (this._currentDate) {\n\t\t\tthis._currentDate.setHours(0, 0, 0, 0);\n\t\t\tconst futureDate = addDays(new Date(), this.warnDaysAfter);\n\t\t\tthis.tooFarDate = this._currentDate.getTime() >= futureDate.getTime();\n\t\t} else {\n\t\t\tthis.tooFarDate = false;\n\t\t}\n\t}\n\n\tprivate getLanguage(): void {\n\n\t\tconst weekDaysNames: Array<string> = [];\n\t\tconst weekDaysNamesShort: Array<string> = [];\n\t\tconst monthNames: Array<string> = [];\n\t\tconst monthNamesShort: Array<string> = [];\n\t\t/* eslint-disable max-len */\n\t\tthis.i18nService.get(['COMMON_SUNDAY', 'COMMON_MONDAY', 'COMMON_TUESDAY', 'COMMON_WEDNESDAY', 'COMMON_THURSDAY', 'COMMON_FRIDAY', 'COMMON_SATURDAY'])\n\t\t\t.subscribe((res) => {\n\t\t\t\tweekDaysNames.push(res.COMMON_SUNDAY, res.COMMON_MONDAY, res.COMMON_TUESDAY, res.COMMON_WEDNESDAY, res.COMMON_THURSDAY, res.COMMON_FRIDAY, res.COMMON_SATURDAY);\n\t\t\t});\n\n\t\tthis.i18nService.get(['COMMON_SEVENTH_DAY', 'COMMON_FIRST_DAY', 'COMMON_SECOND_DAY', 'COMMON_THIRD_DAY', 'COMMON_FOURTH_DAY', 'COMMON_FIFTH_DAY', 'COMMON_SIXTH_DAY'])\n\t\t\t.subscribe((res) => {\n\t\t\t\tweekDaysNamesShort.push(res.COMMON_SEVENTH_DAY, res.COMMON_FIRST_DAY, res.COMMON_SECOND_DAY, res.COMMON_THIRD_DAY, res.COMMON_FOURTH_DAY, res.COMMON_FIFTH_DAY, res.COMMON_SIXTH_DAY);\n\t\t\t});\n\n\t\tthis.i18nService.get(['COMMON_JANUARY', 'COMMON_FEBRUARY', 'COMMON_MARCH', 'COMMON_APRIL', 'COMMON_MAY', 'COMMON_JUNE', 'COMMON_JULY', 'COMMON_AUGUST', 'COMMON_SEPTEMBER', 'COMMON_OCTOBER', 'COMMON_NOVEMBER', 'COMMON_DECEMBER'])\n\t\t\t.subscribe((res) => {\n\t\t\t\tmonthNames.push(res.COMMON_JANUARY, res.COMMON_FEBRUARY, res.COMMON_MARCH, res.COMMON_APRIL, res.COMMON_MAY, res.COMMON_JUNE, res.COMMON_JULY, res.COMMON_AUGUST, res.COMMON_SEPTEMBER, res.COMMON_OCTOBER, res.COMMON_NOVEMBER, res.COMMON_DECEMBER);\n\t\t\t});\n\n\t\tthis.i18nService.get(['JOB_MONTHS_1', 'JOB_MONTHS_2', 'JOB_MONTHS_3', 'JOB_MONTHS_4', 'JOB_MONTHS_5', 'JOB_MONTHS_6', 'JOB_MONTHS_7', 'JOB_MONTHS_8', 'JOB_MONTHS_9', 'JOB_MONTHS_10', 'JOB_MONTHS_11', 'JOB_MONTHS_12'])\n\t\t\t.subscribe((res) => {\n\t\t\t\tmonthNamesShort.push(res.JOB_MONTHS_1, res.JOB_MONTHS_2, res.JOB_MONTHS_3, res.JOB_MONTHS_4, res.JOB_MONTHS_5, res.JOB_MONTHS_6, res.JOB_MONTHS_7, res.JOB_MONTHS_8, res.JOB_MONTHS_9, res.JOB_MONTHS_10, res.JOB_MONTHS_11, res.JOB_MONTHS_12);\n\t\t\t});\n\n\t\tthis.language = {\n\t\t\ttranslations: {\n\t\t\t\tdayNames:        weekDaysNames,\n\t\t\t\tdayNamesShort:   weekDaysNamesShort,\n\t\t\t\tdayNamesMin:     weekDaysNamesShort,\n\t\t\t\tmonthNames:      monthNames,\n\t\t\t\tmonthNamesShort: monthNamesShort\n\t\t\t}\n\t\t};\n\n\t\tthis.language.firstDayOfWeek = this.i18nService.getFirstDayOfWeek();\n\n\t\tthis.language.dateFormatValue = this.dateFormat ? this.dateFormat : this.i18nService.getDateFormatForDatePicker(true);\n\t\tif (this.currentCalendar) {\n\t\t\tthis.currentCalendar.dateFormat = this.dateFormat || this.language.dateFormatValue;\n\t\t}\n\n\t\tthis.config.setTranslation(this.language.translations);\n\t}\n\n\tprivate addListeners(): void {\n\t\tthis.destroyWheelListener = this.myRenderer.listen('window', 'wheel', () => {\n\t\t\tthis.closeDatepicker();\n\t\t});\n\n\t\tthis.destroyKeyListener = this.myRenderer.listen('document', 'keydown', (evt: KeyboardEvent) => {\n\t\t\tif (evt.key === 'Escape' || evt.key === 'Tab') {\n\t\t\t\tthis.closeDatepicker();\n\t\t\t}\n\t\t});\n\t}\n}\n","<p-calendar #calendar [(ngModel)]=\"currentDate\" [showIcon]=\"false\"\n            [dateFormat]=\"language.dateFormatValue\"\n            [firstDayOfWeek]=\"language.firstDayOfWeek\"\n            (onFocus)=\"saveEventOnFocus($event)\"\n            (onBlur)=\"changeDate()\"\n            (onSelect)=\"selectDate()\"\n            (onInput)=\"onInput($event)\"\n            [showOtherMonths]=\"showOtherMonths\"\n            [selectOtherMonths]=\"selectOtherMonths\"\n            [minDate]=\"minDate\"\n            [focusTrap]=\"false\"\n            [maxDate]=\"maxDate\"\n            [inline]=\"inline\"\n            [required]=\"required\"\n            [disabled]=\"disabled\"\n            [readonlyInput]=\"isTablet\"\n            [style.font-size.px]=\"inputFontSize\"\n            [showTime]=\"withIntegratedTime\"\n            [timeOnly]=\"onlyTime\"\n            [showTransitionOptions]=\"'1ms linear'\"\n            [hideTransitionOptions]=\"'1ms linear'\"\n            appendTo=\"body\"\n            [tabindex]=\"tabindex\"\n            [ngClass]=\"{'date-error': formatError || error || (required && !currentDate), 'is-disabled': disabled, 'warning-date': tooFarDate || previousAfterDate, 'input-expand-height':inputExpandHeight}\">\n    <ng-template pTemplate=\"header\" *ngIf=\"!onlyTime\">\n        <div id=\"{{datepickerId}}\" class=\"slab-datepicker-header\">\n            <a id=\"previousYear\" class=\"icon-angle-double-left slab-icon-medium\" (click)=\"prevYear()\"></a>\n            <a id=\"previousMonth\" class=\"icon-angle-left slab-icon-medium\" (click)=\"prevMonth()\"></a>\n            <a id=\"nextYear\" class=\"icon-angle-double-right slab-icon-medium\" (click)=\"nextYear()\"></a>\n            <a id=\"nextMonth\" class=\"icon-angle-right slab-icon-medium\" (click)=\"nextMonth()\"></a>\n            <div class=\"p-datepicker-title d-flex align-items-center justify-content-center\">\n                <span class=\"p-datepicker-month\">{{ language.translations.monthNames[currentCalendar.currentMonth] }}&nbsp;</span>\n                <span class=\"p-datepicker-year\">{{ currentCalendar.currentYear }}</span>\n            </div>\n        </div>\n    </ng-template>\n    <ng-template pTemplate=\"footer\">\n        <div *ngIf=\"!inline\" class=\"p-3 d-flex border-top\">\n            <systelab-button *ngIf=\"showTodayButton\" id=\"today\" size=\"small\" class=\"mr-auto\"\n                    (click)=\"setTodayDate()\">{{ 'COMMON_TODAY' | translate | async }}</systelab-button>\n            <systelab-button id=\"clear\" size=\"small\" type=\"danger\" class=\"ml-auto\"\n                    (click)=\"clearDate($event)\">{{ 'COMMON_CLEAR' | translate | async }}</systelab-button>\n        </div>\n    </ng-template>\n</p-calendar>\n\n","export class TouchSpinValues {\n\n\tconstructor( public value: number, public min: number, public max: number, public step: number = 1, public isDecimal: boolean = true, public precision = 2 ) {\n\t}\n\n\tpublic getPrecision(): number {\n\t\treturn (this.isDecimal) ? this.precision : 0;\n\t}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TouchSpinValues } from './touch.spin-values';\n\n@Component({\n\tselector:    'systelab-spinner',\n\ttemplateUrl: 'spinner.component.html'\n})\nexport class TouchspinComponent {\n\n\tprivate validKeys: string[] = ['Digit0', 'Digit1', 'Digit2', 'Digit3', 'Digit4', 'Digit5', 'Digit6', 'Digit7', 'Digit8', 'Digit9',\n\t\t'Numpad0', 'Numpad1', 'Numpad2', 'Numpad3', 'Numpad4', 'Numpad5', 'Numpad6', 'Numpad7', 'Numpad8', 'Numpad9',\n\t\t'NumpadSubtract', 'Minus', 'Comma', 'Period', 'NumpadDecimal'];\n\n\t@Input() public error = false;\n\t@Input() public disabled = false;\n\t@Input() public fillUnitsWithZero: boolean | number = false; //0 if false, and 1 if true\n\t@Input() public tabindex: number;\n\tprivate _spinValues: TouchSpinValues;\n\tprotected _valueStr: string;\n\n\t@Input() public isInGrid = false;\n\n\tprivate previousValue: number;\n\n\t@Input()\n\tget value(): number {\n\t\treturn this._spinValues ? this._spinValues.value : 0;\n\t}\n\n\tset value(val: number) {\n\t\tif (this._spinValues) {\n\t\t\tthis.previousValue = this._spinValues.value;\n\t\t\tthis._spinValues.value = val;\n\t\t\tconst numberOfZeros = typeof this.fillUnitsWithZero === 'boolean' ? this.fillUnitsWithZero ? 1 : 0 : this.fillUnitsWithZero;\n\t\t\tif (val) {\n\t\t\t\tconst valStr: string = val > 0 ? String(val)\n\t\t\t\t\t\t.padStart(numberOfZeros + 1, '0') :\n\t\t\t\t\tString(val)\n\t\t\t\t\t\t.substring(0, 1) + String(val)\n\t\t\t\t\t\t.substring(1)\n\t\t\t\t\t\t.padStart(numberOfZeros + 1, '0');\n\t\t\t\tif (valStr !== this.valueStr) {\n\t\t\t\t\tthis.valueStr = valStr;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.valueStr = '0'.padStart(numberOfZeros + 1, '0');\n\t\t\t}\n\t\t}\n\t}\n\n\t@Output() public valueChange = new EventEmitter<number>();\n\t@Output() public change = new EventEmitter();\n\n\t@Input()\n\tget spinValues(): TouchSpinValues {\n\t\treturn this._spinValues;\n\t}\n\n\tset spinValues(val: TouchSpinValues) {\n\t\tthis._spinValues = val;\n\n\t\tif (!this._spinValues.step) {\n\t\t\tthis._spinValues.step = 1;\n\t\t}\n\t\tthis.value = this._spinValues.value;\n\t\tthis.previousValue = this._spinValues.value;\n\t}\n\n\t@Input()\n\tget valueStr(): string {\n\t\treturn this._valueStr;\n\t}\n\n\tset valueStr(val: string) {\n\t\tif (val) {\n\t\t\tconst valNumber: number = Number(val);\n\t\t\tif (this.value && this.value !== valNumber) {\n\t\t\t\tif (valNumber < this._spinValues.min || valNumber > this._spinValues.max) {\n\t\t\t\t\tthis.value = this.previousValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._valueStr = (val.length === 1 && this.fillUnitsWithZero) ? ('0' + val) : val;\n\t\t} else {\n\t\t\tthis._valueStr = this.fillUnitsWithZero ? '00' : '0';\n\t\t}\n\t\tthis.valueStrChange.emit(this._valueStr);\n\t}\n\n\t@Output() public valueStrChange = new EventEmitter<string>();\n\n\tpublic minus() {\n\t\tconst value: number = Number(this._spinValues.value);\n\n\t\tif (value - this._spinValues.step > this._spinValues.min) {\n\t\t\tthis._spinValues.value = Number((value - this._spinValues.step).toFixed(this._spinValues.getPrecision()));\n\t\t\tthis.saveValueAndEmit(this._spinValues.value);\n\t\t} else {\n\t\t\tif (this._spinValues.value !== this._spinValues.min) {\n\t\t\t\tthis._spinValues.value = this._spinValues.min;\n\t\t\t\tthis.saveValueAndEmit(this._spinValues.value);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic plus() {\n\t\tconst value: number = Number(this._spinValues.value);\n\n\t\tif (value + this._spinValues.step < this._spinValues.max) {\n\t\t\tthis._spinValues.value = Number((value + this._spinValues.step).toFixed(this._spinValues.getPrecision()));\n\t\t\tthis.saveValueAndEmit(this._spinValues.value);\n\t\t} else {\n\t\t\tif (this._spinValues.value !== this._spinValues.max) {\n\t\t\t\tthis._spinValues.value = this._spinValues.max;\n\t\t\t\tthis.saveValueAndEmit(this._spinValues.value);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic doCheckKey(event: KeyboardEvent): boolean {\n\t\treturn this.validKeys.some(code => code === event.code);\n\t}\n\n\tpublic doKeyDown(event: KeyboardEvent): void {\n\t\tif (event.code === 'ArrowUp') {\n\t\t\tthis.plus();\n\t\t\tevent.preventDefault();\n\t\t} else {\n\t\t\tif (event.code === 'ArrowDown') {\n\t\t\t\tthis.minus();\n\t\t\t\tevent.preventDefault();\n\t\t\t} else {\n\t\t\t\tif (event.code === 'Tab' && this.isInGrid || event.code === 'Enter') {\n\t\t\t\t\tthis.checkValue(this.valueStr);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic checkValue(valueStr: string) {\n\t\tconst value: number = Number(valueStr);\n\n\t\tif (isNaN(value)) {\n\t\t\tthis._spinValues.value = this.previousValue;\n\t\t} else {\n\t\t\tif (value < this._spinValues.min || value > this._spinValues.max) {\n\t\t\t\tthis._spinValues.value = this.previousValue;\n\t\t\t\tif (this.previousValue) {\n\n\t\t\t\t\tconst valStr: string = (this.previousValue <= 9 && this.fillUnitsWithZero) ? '0' + this.previousValue : String(this.previousValue);\n\t\t\t\t\tif (valStr !== this.valueStr) {\n\t\t\t\t\t\tthis.valueStr = valStr;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.valueStr = this.fillUnitsWithZero ? '00' : '0';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.saveValueAndEmit(value);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate saveValueAndEmit(value: number): void {\n\t\tthis.previousValue = value;\n\t\tthis.value = Number(value.toFixed(this._spinValues.getPrecision()));\n\t\tthis.valueChange.emit(this.value);\n\t\tthis.change.emit(this.value);\n\t}\n}\n","<div class=\"slab-spinner-container d-flex\">\n    <div class=\"input-group\">\n        <div class=\"input-group-prepend\">\n            <button type=\"button\" id=\"minus-button\" class=\"btn pt-0 pb-0 pl-1 pr-1\"  [disabled]=\"disabled\" [tabIndex]=\"-1\"\n                    [class.disabled]=\"disabled\" [class.slab-spinner-error]=\"error\" (click)=\"minus()\"><i\n                    class=\"icon-minus-thin\"></i></button>\n        </div>\n        <input [class.disabled]=\"disabled\" name=\"sp\" [(ngModel)]=\"valueStr\"\n               [tabindex]=\"tabindex\"\n               class=\"slab-flex-1 slab-spinner-input form-control text-center\" [class.slab-spinner-error]=\"error\" type=\"text\"\n               (keydown)=\"doKeyDown($event)\"\n               (keypress)=\"doCheckKey($event)\"\n               (blur)=\"checkValue(valueStr)\"\n               autocomplete=\"off\" [disabled]=\"disabled\">\n        <div class=\"input-group-append\">\n            <button type=\"button\" id=\"plus-button\" class=\"btn pt-0 pb-0 pl-1 pr-1\" [disabled]=\"disabled\" [tabIndex]=\"-1\"\n                    [class.disabled]=\"disabled\" [class.slab-spinner-error]=\"error\" (click)=\"plus()\"><i\n                    class=\"icon-plus-thin\"></i></button>\n        </div>\n    </div>\n</div>\n","import { Component, Input, Renderer2 } from '@angular/core';\nimport { DatepickerComponent } from './datepicker.component';\nimport { TouchSpinValues } from '../spinner/touch.spin-values';\nimport { I18nService } from 'systelab-translate';\nimport { DataTransformerService } from './date-transformer.service';\nimport { PrimeNGConfig } from 'primeng/api';\n\n@Component({\n\tselector:    'systelab-date-time',\n\ttemplateUrl: 'datepicker-time.component.html',\n\tproviders:   [DataTransformerService]\n})\nexport class DatepickerTimeComponent extends DatepickerComponent {\n\t@Input()\n\toverride get currentDate(): Date {\n\t\treturn this._currentDate;\n\t}\n\t@Input() public resetTimeWhenChangingCurrentDate = false;\n\t@Input() public showCalendar = true;\n\n\tpublic touchSpinHourValues: TouchSpinValues;\n\tpublic touchSpinMinutesValues: TouchSpinValues;\n\n\tconstructor(myRenderer: Renderer2, i18nService: I18nService, dataTransformerService: DataTransformerService, config: PrimeNGConfig) {\n\t\tsuper(myRenderer, i18nService, dataTransformerService, config);\n\n\t\tthis.touchSpinHourValues = new TouchSpinValues(0, 0, 23, 1);\n\t\tthis.touchSpinMinutesValues = new TouchSpinValues(0, 0, 59, 1);\n\t}\n\n\toverride set currentDate(value: Date) {\n\t\tthis._currentDate = value;\n\t\tif(this.withIntegratedTime){\n\t\t\tthis.currentDateChange.emit(this._currentDate);\n\t\t} else if (this._currentDate) {\n\t\t\tif (this.resetTimeWhenChangingCurrentDate) {\n\t\t\t\tthis.touchSpinHourValues.value = this._currentDate.getHours();\n\t\t\t\tthis.touchSpinMinutesValues.value = this._currentDate.getMinutes();\n\t\t\t} else {\n\t\t\t\tif (this._currentDate.getHours() === 0 || this.touchSpinHourValues.value !== 0) {\n\t\t\t\t\tthis._currentDate.setHours(this.touchSpinHourValues.value);\n\t\t\t\t} else {\n\t\t\t\t\tthis.touchSpinHourValues.value = this._currentDate.getHours();\n\t\t\t\t}\n\t\t\t\tif (this._currentDate.getMinutes() === 0 || this.touchSpinMinutesValues.value !== 0) {\n\t\t\t\t\tthis._currentDate.setMinutes(this.touchSpinMinutesValues.value);\n\t\t\t\t} else {\n\t\t\t\t\tthis.touchSpinMinutesValues.value = this._currentDate.getMinutes();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.touchSpinHourValues.value = 0;\n\t\t\tthis.touchSpinMinutesValues.value = 0;\n\t\t\tthis.currentHoursChanged(0);\n\t\t\tthis.currentMinutesChanged(0);\n\t\t}\n\t}\n\n\tpublic currentHoursChanged(value: number) {\n\t\tif (this._currentDate) {\n\t\t\tthis._currentDate.setHours(value);\n\t\t\tthis.currentDateChange.emit(this._currentDate);\n\t\t}\n\t}\n\n\tpublic currentMinutesChanged(value: number) {\n\t\tif (this._currentDate) {\n\t\t\tthis._currentDate.setMinutes(value);\n\t\t\tthis.currentDateChange.emit(this._currentDate);\n\t\t}\n\t}\n}\n","<div class=\"d-flex\">\n    <ng-container *ngIf=\"showCalendar || withIntegratedTime\">\n        <systelab-datepicker\n                [(currentDate)]=\"currentDate\"\n                (currentDateChange)=\"currentDateChange.emit($event)\"\n                [disabled]=\"disabled\"\n                [error]=\"error\"\n                [markPreviousAfterDate]=\"markPreviousAfterDate\"\n                [required]=\"required\"\n                [inputExpandHeight]=\"inputExpandHeight\"\n                [inputFontSize]=\"inputFontSize\"\n                [showTodayButton]=\"showTodayButton\"\n                [tabindex]=\"tabindex\"\n                [maxDate]=\"maxDate\"\n                [minDate]=\"minDate\"\n                [warnDaysAfter]=\"warnDaysAfter\"\n                [warnDaysBefore]=\"warnDaysBefore\"\n                [autofocus]=\"autofocus\"\n                [onlyTime]=\"!showCalendar\"\n                [withIntegratedTime]=\"withIntegratedTime\"\n                [inline]=\"inline\"\n                [showOtherMonths]=\"showOtherMonths\"\n                [selectOtherMonths]=\"selectOtherMonths\"></systelab-datepicker>\n    </ng-container>\n\n    <ng-container *ngIf=\"!withIntegratedTime\">\n        <systelab-spinner class=\"d-flex h-100\" id=\"hours\"\n                          [spinValues]=\"touchSpinHourValues\"\n                          [fillUnitsWithZero]=\"true\"\n                          [(value)]=\"touchSpinHourValues.value\"\n                          [disabled]=\"disabled\"\n                          [error]=\"error\"\n                          [tabindex]=\"tabindex\"\n                          (valueChange)=\"currentHoursChanged($event)\"></systelab-spinner>\n        <label class=\"mx-1 my-0\" [class.text-danger]=\"error\">:</label>\n        <systelab-spinner class=\"d-flex h-100\" id=\"minutes\"\n                          [spinValues]=\"touchSpinMinutesValues\"\n                          [fillUnitsWithZero]=\"true\"\n                          [tabindex]=\"tabindex\"\n                          [(value)]=\"touchSpinMinutesValues.value\"\n                          [disabled]=\"disabled\"\n                          [error]=\"error\"\n                          (valueChange)=\"currentMinutesChanged($event)\"></systelab-spinner>\n    </ng-container>\n</div>","import {AbstractComboBox} from '../combobox/abstract-combobox.component';\nimport {ChangeDetectorRef, Component, Renderer2} from '@angular/core';\nimport {PreferencesService} from 'systelab-preferences';\n\n\nclass Element {\n\tconstructor(public id: string, public description: string) {\n\n\t}\n}\n\n@Component({\n\tselector: 'systelab-select',\n\ttemplateUrl: '../combobox/abstract-combobox.component.html'\n})\n\nexport class ModulabSelect extends AbstractComboBox<Element> {\n\n\tconstructor(public override myRenderer: Renderer2, public override chRef: ChangeDetectorRef, public override preferencesService?: PreferencesService) {\n\t\tsuper(myRenderer, chRef, preferencesService);\n\t}\n\n\tgetInstance(): Element {\n\t\treturn new Element('', '');\n\t}\n\n\tgetDescriptionField(): string {\n\t\treturn 'description';\n\t}\n\n\tgetCodeField(): string {\n\t\treturn 'code';\n\t}\n\n\tgetIdField(): string {\n\t\treturn 'id';\n\t}\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';\n\ndeclare var jQuery: any;\n\n@Directive({\n\tselector: '[systelabTooltip],[systelabTooltipHtml]'\n})\nexport class TooltipDirective implements AfterViewInit, OnDestroy, OnChanges {\n\n\tpublic static readonly DEFAULT_PLACEMENT = 'top';\n\tpublic static readonly DEFAULT_DELAY = 1000;\n\n\t@Input() public systelabTooltip: string;\n\t@Input() public systelabTooltipHtml: string;\n\t@Input() public systelabTooltipPlacement: undefined | 'top' | 'right' | 'bottom' | 'left';\n\t@Input() public systelabTooltipDelay: number;\n\t@Input() public systelabTooltipHideDelay: number;\n\t@Input() public systelabTooltipOnFocus = true;\n\n\tconstructor(private el: ElementRef, private renderer: Renderer2) {\n\t}\n\n\tngAfterViewInit() {\n\t\tjQuery(this.el.nativeElement)\n\t\t\t.tooltip();\n\t}\n\n\tngOnDestroy() {\n\t\tjQuery(this.el.nativeElement)\n\t\t\t.tooltip('dispose');\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tthis.ngOnDestroy();\n\t\tthis.initializeTooltip();\n\t\tthis.ngAfterViewInit();\n\t}\n\n\tprivate initializeTooltip(): void {\n\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-toogle', 'tooltip');\n\t\tif (!this.systelabTooltipOnFocus) {\n\t\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-trigger', 'hover');\n\t\t}\n\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-boundary', 'viewport');\n\t\tif (this.systelabTooltipHtml) {\n\t\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-html', 'true');\n\t\t}\n\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-placement',\n\t\t\t(this.systelabTooltipPlacement) ? this.systelabTooltipPlacement : TooltipDirective.DEFAULT_PLACEMENT);\n\n\t\tconst tooltipShowDelay = `\"show\":${((this.systelabTooltipDelay) ? this.systelabTooltipDelay : TooltipDirective.DEFAULT_DELAY)}`;\n\t\tconst tooltipHideDelay = `\"hide\":${((this.systelabTooltipHideDelay) ? this.systelabTooltipHideDelay : TooltipDirective.DEFAULT_DELAY)}`;\n\t\tconst tooltipDelay = `{${tooltipShowDelay}, ${tooltipHideDelay}}`;\n\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-delay', tooltipDelay);\n\n\t\tthis.renderer.setAttribute(this.el.nativeElement, 'title', (this.systelabTooltipHtml) ? this.systelabTooltipHtml : (this.systelabTooltip ? this.systelabTooltip : ''));\n\n\t\tif (!this.systelabTooltipHtml && !this.systelabTooltip) {\n\t\t\tthis.renderer.setAttribute(this.el.nativeElement, 'title', '');\n\t\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-original-title', '');\n\t\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-html', 'false');\n\t\t}\n\t}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ApplicationSidebarAction, ApplicationSidebarTab } from './app-sidebar.component';\n\n\n@Component({\n\tselector:    'systelab-app-sidebar-small',\n\ttemplateUrl: 'app-sidebar-small.component.html'\n})\nexport class ApplicationSidebarSmallComponent {\n\n\t@Input() public actions: ApplicationSidebarAction[] = [];\n\t@Input() public tabs: ApplicationSidebarTab[] = [];\n\t@Output() public selected = new EventEmitter();\n\n\tconstructor() {\n\t}\n\n\tpublic selectTab(id: string) {\n\t\tthis.tabs.forEach((tab) => {\n\t\t\ttab.isSelected = (tab.id === id);\n\t\t});\n\t\tthis.selected.emit(id);\n\t}\n\n\tpublic executeTabAction(tab: ApplicationSidebarTab): void {\n\t\tif ( !tab.subMenu && tab.action) {\n\t\t\ttab.action(tab.id);\n\t\t} else if ( !tab.subMenu && !tab.action) {\n\t\t\tthis.selectTab(tab.id);\n\t\t}\n\t}\n}\n","<div class=\"slab-app-sidebar-small-menu-container d-flex flex-column overflow-hidden\">\n    <ul class=\"slab-app-sidebar-button-container slab-flex-1\">\n\n        @for(tab of tabs; track tab.id) {\n            <li class=\"slab-app-sidebar-button\"\n                (click)=\"executeTabAction(tab)\"\n                [class.selected]=\"tab.isSelected\" systelabTooltip=\"{{tab.name}}\" systelabTooltipPlacement=\"right\"\n                systelabTooltipDelay=\"0\" systelabTooltipHideDelay=\"0\">\n                <i [ngClass]=\"tab.icon\"></i>\n                <div *ngIf=\"tab.isSelected\" class=\"arrow-left w-100\"></div>\n            </li>\n        }\n    </ul>\n    <ul class=\"slab-app-sidebar-button-container slab-bottom\">\n\n        @for (action of actions; track action.name) {\n            <li class=\"slab-app-sidebar-button w-100\" (click)=\"action.action()\"\n                systelabTooltip=\"{{action.name}}\" systelabTooltipPlacement=\"right\" systelabTooltipDelay=\"0\"\n                systelabTooltipHideDelay=\"0\">\n                <i class=\"{{action.icon}}\"></i>\n            </li>\n        }\n    </ul>\n</div>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\nimport { ApplicationHeaderMenuEntry } from './header/app-header.component';\nimport { ApplicationSidebarAction, ApplicationSidebarTab } from './sidebar/app-sidebar.component';\nimport { ApplicationSidebarLargeComponent } from './sidebar/app-sidebar-large.component';\nimport { ApplicationSidebarSmallComponent } from './sidebar/app-sidebar-small.component';\n\n@Component({\n\tselector:    'systelab-app-frame',\n\ttemplateUrl: 'application-frame.component.html'\n})\nexport class ApplicationFrameComponent {\n\n\t@ViewChild('sidebarLarge', {static: false}) sidebar: ApplicationSidebarLargeComponent;\n\t@ViewChild('sidebarSmall', {static: false}) sidebarSmall: ApplicationSidebarSmallComponent;\n\n\t@Input() public userName: string;\n\t@Input() public userFullName: string;\n\t@Input() public title: string;\n\t@Input() public menuBars = false;\n\t@Input() public logoIcon = '';\n\n\t@Input() public menu: ApplicationHeaderMenuEntry[] = [];\n\t@Input() public actions: ApplicationSidebarAction[] = [];\n\t@Input() public tabs: ApplicationSidebarTab[] = [];\n\t@Input() public showSideBar = true;\n\t@Input() public largeSideBar = true;\n\n\t@Output() public selected = new EventEmitter();\n\n\tconstructor(protected i18nService: I18nService) {\n\t}\n\n\tpublic doSelect(id: string): void {\n\t\tthis.selected.emit(id);\n\t}\n\n\tpublic continueSelect(id: string): void {\n\t\tif (this.sidebar) {\n\t\t\tthis.sidebar.selectTab(id);\n\t\t} else if (this.sidebarSmall) {\n\t\t\tthis.sidebarSmall.selectTab(id);\n\t\t}\n\t}\n}\n","<div class=\"h-100 d-flex flex-column\">\n  <systelab-app-header [userName]=\"userName\" [userFullName]=\"userFullName\" [title]=\"title\" [menu]=\"menu\" [logoIcon]=\"logoIcon\"\n    [menuBars]=\"menuBars\">\n    <ng-content select=\"[header-content]\"></ng-content>\n  </systelab-app-header>\n  <div class=\"slab-main-container slab-overflow-container slab-flex-1 d-flex\">\n    <div *ngIf=\"showSideBar\" [ngClass]=\"{'slab-side-bar-container-large': largeSideBar,'slab-side-bar-container-small': !largeSideBar }\">\n      <systelab-app-sidebar-large *ngIf=\"largeSideBar\" #sidebarLarge [tabs]=\"tabs\" [actions]=\"actions\" (selected)=\"doSelect($event)\"></systelab-app-sidebar-large>\n      <systelab-app-sidebar-small *ngIf=\"!largeSideBar\" #sidebarSmall [tabs]=\"tabs\" [actions]=\"actions\" (selected)=\"doSelect($event)\"></systelab-app-sidebar-small>\n    </div>\n    <div class=\"slab-flex-1 d-flex\">\n      <ng-content select=\"[main-content]\"></ng-content>\n    </div>\n  </div>\n</div>\n","import { GridOptions } from 'ag-grid-community';\n\nexport class GridContextMenuActionData<T> {\n\n\tconstructor(public elementId: string, public actionId: string, public data: T, public gridOptions: GridOptions, public multipleSelectedData?: Array<T>) {\n\n\t}\n\n}\n\n","import { Directive, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ColDef, Column, ColumnApi, GridOptions, IsFullWidthRowParams } from 'ag-grid-community';\nimport { GridContextMenuOption } from './contextmenu/grid-context-menu-option';\nimport { GridContextMenuActionData } from './contextmenu/grid-context-menu-action-data';\nimport { DialogService } from '../modal/dialog/dialog.service';\nimport { PreferencesService } from 'systelab-preferences';\nimport { I18nService } from 'systelab-translate';\nimport { StylesUtilService } from '../utilities/styles.util.service';\nimport { GridContextMenuComponent, GridRowMenuActionHandler } from './contextmenu/grid-context-menu-component';\nimport { timer } from 'rxjs';\nimport { GridColumnsOptions } from './options/grid-column-options';\nimport { GridColumnOptionsDialog, GridColumnOptionsDialogParameters } from './options/grid-column-options-dialog.component';\nimport { GridContextMenuCellRendererComponent } from './contextmenu/grid-context-menu-cell-renderer.component';\nimport { TwoListItem } from '../twolist/two-list-utilities';\nimport { GridHeaderContextMenu, GridHeaderMenuActionHandler } from './contextmenu/grid-header-context-menu.component';\nimport { AutosizeGridHelper, CalculatedGridState, initializeCalculatedGridState } from '../helper/autosize-grid-helper';\n\nexport type rowSelectionType = 'single' | 'multiple';\n\n@Directive()\nexport abstract class AbstractGrid<T> implements OnInit, GridRowMenuActionHandler, GridHeaderMenuActionHandler {\n\n\tpublic static readonly contextMenuColId = 'contextMenu';\n\tpublic static readonly selectionColId = 'selectCol';\n\n\tpublic gridOptions: GridOptions;\n\tpublic overlayNoRowsTemplate;\n\tpublic overlayLoadingTemplate;\n\tpublic startCellEditorWithTab = false;\n\n\t@Input() public headerMenu: Array<GridContextMenuOption<Object>>;\n\t@Input() public menu: Array<GridContextMenuOption<T>>;\n\n\t@Input() public preferenceName: string;\n\t@Input() public multipleSelection = false;\n\t@Input() public showChecks = false;\n\t@Input() public headerCheckboxSelection = false;\n\t@Input() public rowData: Array<T> = [];\n\t@Input() public noRowsText;\n\t@Input() public loadingText;\n\t@Input() public removeSelectionOnOpenContextMenu = false;\n\t@Input() public autoSizeColumnsToContent = false;\n\n\t@Output() public action = new EventEmitter();\n\t@Output() public clickRow = new EventEmitter();\n\t@Output() public rowDragEnd = new EventEmitter();\n\t@Output() public viewportChanged = new EventEmitter();\n\t@Output() public rowSelected = new EventEmitter();\n\n\t@ViewChild('hidden', {static: true}) public hiddenElement: ElementRef;\n\t@ViewChild('popupmenu', {static: false}) public popupmenu: GridContextMenuComponent<T>;\n\t@ViewChild('headerpopupmenu', {static: false}) public headerPopupMenu: GridHeaderContextMenu<Object>;\n\n\tprotected firstSizeToFitExecuted = false;\n\tprivate calculatedGridState: CalculatedGridState;\n\tprivate scrollTimeout;\n\n\tprotected constructor(protected preferencesService: PreferencesService, protected i18nService: I18nService,\n\t\t\t\t\t\t  protected dialogService: DialogService) {\n\t}\n\n\tpublic ngOnInit(): void {\n\n\t\tthis.gridOptions = this.getInitialGridOptions();\n\n\t\tif (this.noRowsText) {\n\t\t\tthis.overlayNoRowsTemplate = this.noRowsText;\n\t\t\tthis.overlayLoadingTemplate = this.loadingText;\n\t\t}\n\t\tthis.calculatedGridState = initializeCalculatedGridState(this.autoSizeColumnsToContent);\n\t}\n\n\tprotected getInitialGridOptions(): GridOptions {\n\t\tconst rowHeight = StylesUtilService.getStyleValue(this.hiddenElement, 'line-height');\n\t\tconst headerHeight = StylesUtilService.getStyleValue(this.hiddenElement, 'height');\n\n\t\tconst options: GridOptions = {};\n\n\t\toptions.columnDefs = this.getColumnDefsWithOptions();\n\t\toptions.rowHeight = Number(rowHeight);\n\t\toptions.headerHeight = Number(headerHeight);\n\t\toptions.suppressDragLeaveHidesColumns = true;\n\t\toptions.suppressCellFocus = true;\n\t\toptions.enableRangeSelection = true;\n\t\toptions.stopEditingWhenCellsLoseFocus = true;\n\t\toptions.singleClickEdit = true;\n\t\toptions.defaultColDef = {\n\t\t\tresizable: this.isColResizeEnabled()\n\t\t};\n\t\toptions.rowSelection = this.getRowSelectionType();\n\t\toptions.localeText = {\n\t\t\tnoRowsToShow: this.i18nService.instant('COMMON_NO_ROWS_TO_SHOW'),\n\t\t\tloadingOoo:   this.i18nService.instant('COMMON_LOADING')\n\t\t};\n\n\t\tif (this.hideHeader()) {\n\t\t\toptions.headerHeight = 0;\n\t\t}\n\t\tif (this.showChecks) {\n\t\t\tif (this.multipleSelection) {\n\t\t\t\toptions.suppressRowClickSelection = true;\n\t\t\t}\n\t\t}\n\t\toptions.isFullWidthRow = (isFullWidthRowParams: IsFullWidthRowParams) => this.getIsFullWidthRow(isFullWidthRowParams);\n\t\toptions.fullWidthCellRenderer = this.getFullWidthCellRenderer();\n\t\toptions.context = {componentParent: this};\n\t\toptions.onCellEditingStarted = (event) => this.onCellEditingStarted(event);\n\n\t\treturn options;\n\t}\n\n\tprotected onCellEditingStarted(event: any): void {\n\t\tthis.startCellEditorWithTab = event.event?.key === 'Tab';\n\t}\n\n\tpublic onModelUpdated(event: any) {\n\t\tthis.doAutoSizeManagement();\n\t\treturn event;\n\t}\n\n\tpublic doGridReady(event: any): void {\n\t\tthis.loadColumnsStateFromPreferences();\n\n\t\tif(this.autoSizeColumnsToContent) {\n\t\t\tthis.gridOptions.api.addEventListener('bodyScroll', this.onBodyScroll.bind(this));\n\t\t} else {\n\t\t\tthis.doAutoSizeManagement();\n\t\t}\n\t\tthis.gridOptions.api.addEventListener('columnMoved', this.saveColumnsStateInPreferences.bind(this));\n\t}\n\n\tprotected saveColumnsStateInPreferences(): void {\n\t\tif (this.firstSizeToFitExecuted) {\n\t\t\tthis.preferencesService.put(this.getGridOptionsPreferencesPrefix(), this.gridOptions.columnApi.getColumnState());\n\t\t}\n\t}\n\n\tprotected loadColumnsStateFromPreferences(): void {\n\t\tthis.loadColumnsState(this.getGridOptionsPreferencesPrefix(), this.gridOptions.columnApi);\n\t}\n\n\tprivate loadColumnsState(prefix: string, columnApi: ColumnApi): void {\n\n\t\tif (this.preferencesService.get(prefix)) {\n\n\t\t\tconst gridOptionsPreferences: Array<any> = this.preferencesService.get(prefix);\n\n\t\t\t// Filtered preferences columns that are not in the current columnDef.\n\t\t\tconst filteredGridOptionsPreferences: Array<any> = gridOptionsPreferences\n\t\t\t\t.filter(colPref => columnApi.getColumns()\n\t\t\t\t\t.some(column => colPref.colId === column.getColId()));\n\n\t\t\t// Show new added columns\n\t\t\tcolumnApi.getColumns()\n\t\t\t\t.filter(column => !filteredGridOptionsPreferences.some(colPref => colPref.colId === column.getColId()))\n\t\t\t\t.forEach(column => {\n\t\t\t\t\tconst newColumn: any = {\n\t\t\t\t\t\t'colId':         column.getColId(),\n\t\t\t\t\t\t'hide':          !column.isVisible(),\n\t\t\t\t\t\t'aggFunc':       null,\n\t\t\t\t\t\t'width':         column.getActualWidth(),\n\t\t\t\t\t\t'pivotIndex':    null,\n\t\t\t\t\t\t'pinned':        null,\n\t\t\t\t\t\t'rowGroupIndex': null\n\t\t\t\t\t};\n\n\t\t\t\t\tif (column.getColId() === AbstractGrid.contextMenuColId || column.getColId() === AbstractGrid.selectionColId) {\n\t\t\t\t\t\tfilteredGridOptionsPreferences.unshift(newColumn);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfilteredGridOptionsPreferences.push(newColumn);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.setColumnWidthToFitContent(columnApi, filteredGridOptionsPreferences);\n\n\t\t\t// Override pinned property saved in preferences\n\t\t\tconst pinnedCol = filteredGridOptionsPreferences.find(column => column.colId === AbstractGrid.contextMenuColId || column.colId === AbstractGrid.selectionColId);\n\t\t\tif (pinnedCol) {\n\t\t\t\tpinnedCol['pinned'] = 'left';\n\t\t\t}\n\t\t\tcolumnApi.applyColumnState({state: filteredGridOptionsPreferences, applyOrder: true});\n\t\t}\n\t}\n\n\tprivate setColumnWidthToFitContent(columnApi: ColumnApi, filteredGridOptionsPreferences: Array<any>) {\n\t\t// Set to null width of preferences of columns without supressSizeToFit\n\t\t// If not set to null these columns are not sizedtofit\n\t\tcolumnApi.getColumns()\n\t\t\t.filter(column => !column.getColDef().suppressSizeToFit)\n\t\t\t.forEach(column => {\n\t\t\t\tconst columnPref: any = filteredGridOptionsPreferences.find(colPref => colPref.colId === column.getColId());\n\t\t\t\tcolumnPref.width = null;\n\t\t\t});\n\t}\n\n\tprivate getContextMenuColumnDef(width: number) {\n\t\treturn {\n\t\t\tcolId:             AbstractGrid.contextMenuColId,\n\t\t\theaderName:        '',\n\t\t\tpinned:            'left',\n\t\t\twidth:             width,\n\t\t\tsuppressSizeToFit: true,\n\t\t\tresizable:         false,\n\t\t\tsuppressMovable:   true,\n\t\t\tcellRenderer:      GridContextMenuCellRendererComponent\n\t\t};\n\t}\n\n\tprivate getCheckColumnDef(width: number) {\n\t\treturn {\n\t\t\tcolId:             AbstractGrid.selectionColId,\n\t\t\theaderName:        '',\n\t\t\theaderCheckboxSelection: this.headerCheckboxSelection,\n\t\t\tcheckboxSelection: true,\n\t\t\tpinned:            'left',\n\t\t\twidth:             width,\n\t\t\tsuppressSizeToFit: true,\n\t\t\tresizable:         false,\n\t\t\tsuppressMovable:   true\n\t\t};\n\t}\n\n\tprotected abstract getColumnDefs(): Array<any>;\n\n\tprotected getColumnDefsWithOptions(): Array<any> {\n\n\t\tconst colDefs: Array<any> = this.getColumnDefs();\n\n\t\tif (this.menu && this.menu.length > 0) {\n\t\t\tcolDefs.unshift(this.getContextMenuColumnDef(this.getContextMenuColumnWidth()));\n\t\t}\n\t\tif (this.showChecks) {\n\t\t\tcolDefs.unshift(this.getCheckColumnDef(this.getCheckColumnWidth()));\n\t\t}\n\t\tcolDefs.forEach((colDef: ColDef) => this.suppressColumnSizeToFit(colDef));\n\n\t\treturn colDefs;\n\t}\n\n\tprotected hideHeader(): boolean {\n\t\treturn false;\n\t}\n\n\tprotected getIsFullWidthRow(isFullWidthRowParams: IsFullWidthRowParams): boolean {\n\t\treturn false;\n\t}\n\n\tpublic getFullWidthCellRenderer(): any {\n\t\treturn undefined;\n\t}\n\n\tprotected getGridOptionsPreferencesPrefix(): string {\n\t\treturn this.preferenceName || this.constructor.name;\n\t}\n\n\tpublic executeContextMenuAction(elementId: string, actionId: string): void {\n\t\tconst option: GridContextMenuOption<T> = this.menu.find(opt => opt.actionId === actionId);\n\t\tconst rowId = Number(elementId.substr(elementId.indexOf('row'))\n\t\t\t.replace('row', ''));\n\t\tconst data: T = this.gridOptions.api.getModel()\n\t\t\t.getRow(rowId).data;\n\t\tconst rowsSelected: Array<T> = this.gridOptions.api.getSelectedRows();\n\n\t\tconst actionData: GridContextMenuActionData<T> = new GridContextMenuActionData(rowId.toString(), actionId, data, this.gridOptions, rowsSelected);\n\t\tif (option && option.action && data !== undefined) {\n\t\t\toption.action(actionData);\n\t\t} else {\n\t\t\tthis.action.emit(actionData);\n\t\t}\n\t\tthis.popupmenu.closeDropDown();\n\t}\n\n\tpublic isContextMenuOptionEnabled(elementId: string, actionId: string): boolean {\n\n\t\tconst option: GridContextMenuOption<T> = this.menu.find(opt => opt.actionId === actionId);\n\t\tconst rowId = Number(elementId.substr(elementId.indexOf('row'))\n\t\t\t.replace('row', ''));\n\t\tconst data: T = this.gridOptions.api.getModel()\n\t\t\t.getRow(rowId).data;\n\n\t\tif (option && option.isActionEnabled && data !== undefined) {\n\t\t\treturn option.isActionEnabled(data);\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic executeHeaderContextMenuAction(elementId: string, actionId: string, headerData: any): void {\n\n\t\tconst option: GridContextMenuOption<Object> = this.headerMenu.find(opt => opt.actionId === actionId);\n\n\t\tif (option && option.action) {\n\t\t\tconst actionData: GridContextMenuActionData<Object> = new GridContextMenuActionData(elementId, actionId, headerData, this.gridOptions);\n\t\t\treturn option.action(actionData);\n\t\t} else {\n\t\t\tconst actionData: GridContextMenuActionData<Object> = new GridContextMenuActionData(elementId, actionId, headerData, this.gridOptions);\n\t\t\tthis.action.emit(actionData);\n\t\t}\n\t\tthis.headerPopupMenu.closeDropDown();\n\t}\n\n\tpublic isHeaderContextMenuOptionEnabled(elementId: string, actionId: string, headerData: any): boolean {\n\n\t\tconst option: GridContextMenuOption<Object> = this.headerMenu.find(opt => opt.actionId === actionId);\n\t\tif (option && option.isActionEnabled) {\n\t\t\treturn option.isActionEnabled(headerData);\n\t\t}\n\t\treturn true;\n\t}\n\n\tprotected isColResizeEnabled(): boolean {\n\t\treturn true;\n\t}\n\n\tprivate suppressColumnSizeToFit(colDef: ColDef): void {\n\t\tif (colDef.width) {\n\t\t\tcolDef.suppressSizeToFit = true;\n\t\t}\n\t}\n\n\tpublic onRowSelected(event: any): void {\n\t\tthis.rowSelected.emit(event.data);\n\t}\n\n\tprotected getRowSelectionType(): rowSelectionType {\n\t\treturn this.multipleSelection ? 'multiple' : 'single';\n\t}\n\n\tpublic getSelectedRows(): Array<T> {\n\t\treturn this.gridOptions.api.getSelectedRows();\n\t}\n\n\tpublic getSelectedRow(): T {\n\t\tconst selected = this.getSelectedRows();\n\t\treturn selected.length > 0 ? selected[0] : null;\n\t}\n\n\tpublic selectRow(index: number): void {\n\t\tthis.gridOptions.api.ensureIndexVisible(index);\n\t\ttimer(200)\n\t\t\t.subscribe(() => this.gridOptions.api.selectIndex(index, false, false));\n\t}\n\n\tpublic doClick(event: any): void {\n\t\tif (event.column.colId === 'contextMenu' && !(event.event.ctrlKey && this.showChecks)) {\n\t\t\tevent.node.setSelected(true);\n\t\t} else {\n\t\t\tif (event.column.colId === 'selectCol') {\n\t\t\t\tevent.node.setSelected(!event.node.isSelected());\n\t\t\t} else {\n\t\t\t\tif (!event.column.isCellEditable(event.node)) {\n\t\t\t\t\tconst value = (event.event.ctrlKey && this.multipleSelection && !this.showChecks) ? event.event : event.data;\n\t\t\t\t\tthis.clickRow.emit(value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic doColumnResized(event: any): void {\n\t\tthis.saveColumnsStateInPreferences();\n\t}\n\n\tpublic doViewportChanged(): void {\n\t\tthis.viewportChanged.emit();\n\t}\n\n\tpublic doGridSizeChanged(event: any): void {\n\t\tif (this.gridOptions.api) {\n\t\t\tthis.doAutoSizeManagement();\n\t\t}\n\t}\n\n\tpublic showOptions(canHideAllColumns?: boolean): void {\n\t\tconst parameters: GridColumnOptionsDialogParameters = GridColumnOptionsDialog.getParameters();\n\n\t\tparameters.columnOptions = this.getGridColumnOptions(this.gridOptions.columnApi, this.getColumnDefs());\n\t\tparameters.canHideAllColumns = canHideAllColumns;\n\n\t\tthis.dialogService.showDialog(GridColumnOptionsDialog, parameters)\n\t\t\t.subscribe(\n\t\t\t\t(columnsOptions: GridColumnsOptions) => {\n\t\t\t\t\tif (columnsOptions) {\n\t\t\t\t\t\tthis.applyGridColumnOptions(this.gridOptions.columnApi, columnsOptions);\n\t\t\t\t\t\tthis.doAutoSizeManagement();\n\t\t\t\t\t\tthis.saveColumnsStateInPreferences();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tprotected getGridColumnOptions(columnApi: ColumnApi, columnDefs: Array<any>): GridColumnsOptions {\n\t\tconst options = new GridColumnsOptions();\n\n\t\toptions.available = columnApi.getColumns()\n\t\t\t.filter(column => !columnApi.getColumn(column.getColDef().colId)\n\t\t\t\t.isVisible())\n\t\t\t.map(column => new TwoListItem(column.getColDef().headerName, column.getColDef().colId, false, false));\n\n\t\toptions.initialAvailableColumns = columnApi.getColumns()\n\t\t\t.map(column => new TwoListItem(column.getColDef().headerName, column.getColDef().colId, false, false));\n\n\t\toptions.visible = columnApi.getAllDisplayedColumns()\n\t\t\t.filter(column => column.getColId() !== 'contextMenu' && column.getColId() !== 'selectCol')\n\t\t\t.map(column => new TwoListItem(column.getColDef().headerName, column.getColDef().colId, false, true));\n\n\t\toptions.defaultVisibleColumns = columnDefs.filter(column => !column.hide)\n\t\t\t.map(column => new TwoListItem(column.headerName, column.colId, false, true));\n\n\t\toptions.defaultHiddenColumns = columnDefs.filter(column => column.hide)\n\t\t\t.map(column => new TwoListItem(column.headerName, column.colId, false, false));\n\t\treturn options;\n\t}\n\n\tprotected applyGridColumnOptions(columnApi: ColumnApi, columnOptions: GridColumnsOptions): void {\n\t\tlet numberOfFixedInitialColumns = (columnApi.getColumn('contextMenu') !== null) ? 1 : 0;\n\t\tnumberOfFixedInitialColumns += (columnApi.getColumn('selectCol') !== null) ? 1 : 0;\n\n\t\tcolumnOptions.visible.forEach((tlp, index) => {\n\t\t\tconst col: Column = columnApi.getColumns()\n\t\t\t\t.find((column: Column) => column.getColDef().colId === tlp.colId);\n\t\t\tcol.setVisible(true);\n\t\t\tcolumnApi.moveColumn(col.getColId(), index + numberOfFixedInitialColumns);\n\t\t});\n\n\t\tcolumnApi.getColumns()\n\t\t\t.forEach((column) => {\n\t\t\t\tif (column.getColId() !== 'contextMenu' && column.getColId() !== 'selectCol') {\n\t\t\t\t\tif (!columnOptions.visible.some(tlp => tlp.colId === column.getColDef().colId)) {\n\t\t\t\t\t\tcolumnApi.setColumnVisible(column.getColId(), false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tpublic dotsClicked(rowIndex: number, data: T | Array<T>, event: MouseEvent): void {\n\t\tthis.popupmenu.setActionManager(this);\n\t\tthis.popupmenu.setRowIndex(rowIndex);\n\t\tif (this.existsAtLeastOneActionEnabled(data)) {\n\t\t\ttimer(200)\n\t\t\t\t.subscribe(() => this.popupmenu.openWithOptions(event, this.menu));\n\t\t} else {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n\n\tpublic headerDotsClicked(headerData: Object, event: MouseEvent): void {\n\t\tthis.headerPopupMenu.setActionManager(this);\n\t\tthis.headerPopupMenu.setHeaderData(headerData);\n\t\tif (this.existsAtLeastOneHeaderActionEnabled(headerData)) {\n\t\t\ttimer(200)\n\t\t\t\t.subscribe(() => this.headerPopupMenu.openWithOptions(event, this.headerMenu,));\n\t\t} else {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n\n\tprotected existsAtLeastOneHeaderActionEnabled(data: Object | Array<Object>): boolean {\n\t\treturn this.headerMenu ? this.headerMenu.some(menuOption => this.isMenuOptionEnabled(menuOption, data)) : false;\n\t}\n\n\tprotected existsAtLeastOneActionEnabled(data: T | Array<T> | Object | Array<Object>): boolean {\n\t\tif (this.menu) {\n\t\t\treturn this.menu.some(menuOption => this.isMenuOptionEnabled(menuOption, data));\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate isMenuOptionEnabled(menuOption: GridContextMenuOption<T>, data: T | Array<T> | Object | Array<Object>): boolean {\n\t\tif (menuOption.isActionEnabled) {\n\t\t\treturn menuOption.isActionEnabled.apply(null, [data]);\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic onRowDragEnd(event: any): void {\n\t\tthis.rowDragEnd.emit(event);\n\t}\n\n\tprotected getContextMenuColumnWidth(): number {\n\t\treturn 40;\n\t}\n\n\tprotected getCheckColumnWidth(): number {\n\t\treturn 35;\n\t}\n\n\tprivate onBodyScroll(event: any): void {\n\t\tclearTimeout(this.scrollTimeout);\n\t\tthis.scrollTimeout = setTimeout(() => {\n\t\t\tthis.doAutoSizeManagement(event);\n\t\t}, 150);\n\t}\n\n\tprivate doAutoSizeManagement(event?: any) {\n\t\tthis.firstSizeToFitExecuted = true; \n\t\tAutosizeGridHelper.doAutoSizeManagement(this.calculatedGridState, this.gridOptions, event);\n\t}\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { AbstractGrid } from './abstract-grid.component';\nimport { Observable } from 'rxjs';\nimport { GridOptions, IDatasource, IGetRowsParams } from 'ag-grid-community';\nimport { PreferencesService } from 'systelab-preferences';\nimport { I18nService } from 'systelab-translate';\nimport { DialogService } from '../modal/dialog/dialog.service';\n\n@Directive()\nexport abstract class AbstractApiGrid<T> extends AbstractGrid<T> implements IDatasource, OnInit {\n\n\tconstructor(protected override preferencesService: PreferencesService, protected override i18nService: I18nService,\n\t\t\t\tprotected override dialogService: DialogService) {\n\t\tsuper(preferencesService, i18nService, dialogService);\n\t}\n\n\tprotected override getInitialGridOptions(): GridOptions {\n\t\tconst options = super.getInitialGridOptions();\n\t\toptions.rowModelType = 'infinite';\n\t\toptions.paginationPageSize = 50;\n\t\toptions.cacheBlockSize = 50;\n\t\toptions.cacheOverflowSize = 2;\n\t\toptions.maxConcurrentDatasourceRequests = 4;\n\t\toptions.maxBlocksInCache = 15;\n\t\toptions.infiniteInitialRowCount = 0;\n\t\toptions.datasource = this;\n\t\treturn options;\n\t}\n\n\tpublic abstract getTotalItems(): number;\n\n\tprotected abstract getData(page: number, itemsPerPage: number): Observable<Array<T>>;\n\n\tpublic getRows(params: IGetRowsParams): void {\n\t\tthis.gridOptions.api.showLoadingOverlay();\n\t\tthis.getData(params.endRow / this.gridOptions.paginationPageSize, this.gridOptions.paginationPageSize)\n\t\t\t.subscribe({\n\t\t\t\tnext:  (page: Array<T>) => this.putPage(page, this.getTotalItems(), params),\n\t\t\t\terror: () => this.putPage([], 0, params)\n\t\t\t});\n\t}\n\n\tprotected putPage(page: Array<T>, totalItems: number, params: IGetRowsParams): void {\n\t\tthis.gridOptions.api.hideOverlay();\n\t\tparams.successCallback(page, totalItems);\n\t\tif (page.length === 0) {\n\t\t\tthis.gridOptions.api.showNoRowsOverlay();\n\t\t}\n\t}\n\n\tpublic refresh(): void {\n\t\tthis.gridOptions.api.setDatasource(this);\n\t}\n}\n","import { ChangeDetectorRef, Component, ElementRef, Renderer2 } from '@angular/core';\nimport { AbstractContextMenuComponent } from '../../contextmenu/abstract-context-menu.component';\nimport { GridContextMenuOption } from './grid-context-menu-option';\n\nexport interface GridRowMenuActionHandler {\n\tisContextMenuOptionEnabled(elementId: string, actionId: string): boolean;\n\n\texecuteContextMenuAction(elementId: string, actionId: string): void;\n}\n\n@Component({\n\tselector:    'systelab-grid-context-menu',\n\ttemplateUrl: '../../contextmenu/context-menu.component.html'\n})\nexport class GridContextMenuComponent<T> extends AbstractContextMenuComponent<GridContextMenuOption<T>> {\n\n\tprotected actionHandler: GridRowMenuActionHandler;\n\n\tconstructor(protected override el: ElementRef, protected override myRenderer: Renderer2, protected override cdr: ChangeDetectorRef) {\n\t\tsuper(el, myRenderer, cdr);\n\t}\n\n\tpublic setActionManager(actionHandler: GridRowMenuActionHandler): void {\n\t\tthis.actionHandler = actionHandler;\n\t}\n\n\tpublic setRowIndex(rowIndex: number): void {\n\t\tthis.elementID = (Math.floor(Math.random() * (999999999999 - 1))).toString() + 'row' + rowIndex;\n\t}\n\n\tpublic openWithOptions(event: MouseEvent, newContextMenuOptions: Array<GridContextMenuOption<T>>): void {\n\t\tthis.contextMenuOptions = newContextMenuOptions;\n\t\tthis.open(event);\n\t}\n\n\tprotected existsAtLeastOneActionEnabled(): boolean {\n\t\tif (this.contextMenuOptions) {\n\t\t\treturn this.contextMenuOptions.some((menuOption: GridContextMenuOption<T>) => this.isEnabled(this.elementID, menuOption.actionId));\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic isIconEnabled(elementId: string, actionId: string): boolean {\n\t\treturn false;\n\t}\n\n\tpublic isEnabled(elementId: string, actionId: string): boolean {\n\t\treturn this.actionHandler.isContextMenuOptionEnabled(elementId, actionId);\n\t}\n\n\tpublic executeAction(event: any, elementId: string, actionId: string): void {\n\n\t\tconst option: GridContextMenuOption<T> = this.getOption(actionId);\n\n\t\tif (option && !option.hasChildren()) {\n\t\t\tif (this.isEmbedded) {\n\t\t\t\tthis.closeDropDown();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\n\t\t\tif (option && option.actionId !== null && option.actionId !== undefined) {\n\t\t\t\tthis.actionHandler.executeContextMenuAction(elementId, option.actionId);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.doMouseOver(event, elementId, actionId);\n\t\t}\n\t}\n\n\tprotected getOption(actionId: string): GridContextMenuOption<T> {\n\t\tconst actions: string[] = actionId.split(this.levelSeparator);\n\t\tlet level = 1;\n\n\t\tlet menuLevel: GridContextMenuOption<T> = this.contextMenuOptions.find(opt => opt.actionId === actions[level - 1]);\n\t\tlevel++;\n\t\twhile (level <= actions.length) {\n\t\t\tmenuLevel = menuLevel.childrenContextMenuOptions.find(opt => opt.actionId === actions[level - 1]);\n\t\t\tlevel++;\n\t\t}\n\n\t\treturn menuLevel;\n\n\t}\n\n}\n","import {ChangeDetectorRef, Component, ElementRef, Renderer2} from '@angular/core';\nimport {AbstractContextMenuComponent} from '../../contextmenu/abstract-context-menu.component';\nimport {GridContextMenuOption} from './grid-context-menu-option';\nimport {IAfterGuiAttachedParams, IHeaderParams} from 'ag-grid-community';\n\nexport interface GridHeaderMenuActionHandler {\n\texecuteHeaderContextMenuAction(elementId: string, actionId: string, headerData: Object): void;\n\n\tisHeaderContextMenuOptionEnabled(elementId: string, actionId: string, headerData: Object): boolean;\n}\n\n@Component({\n\tselector: 'systelab-grid-header-context-menu',\n\ttemplateUrl: '../../contextmenu/context-menu.component.html'\n})\nexport class GridHeaderContextMenu<Object> extends AbstractContextMenuComponent<GridContextMenuOption<Object>> {\n\tpublic actionHandler: GridHeaderMenuActionHandler;\n\tpublic headerData: Object;\n\n\tconstructor(protected override el: ElementRef, protected override  myRenderer: Renderer2, protected override cdr: ChangeDetectorRef) {\n\t\tsuper(el, myRenderer, cdr);\n\t}\n\n\tpublic refresh(params: IHeaderParams): boolean {\n\t\treturn true;\n\t}\n\n\tpublic afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\n\t}\n\n\tpublic setActionManager(actionHandler: GridHeaderMenuActionHandler): void {\n\t\tthis.actionHandler = actionHandler;\n\t}\n\n\tpublic setHeaderData(headerData: Object): void {\n\t\tthis.headerData = headerData;\n\t}\n\n\tpublic openWithOptions(event: MouseEvent, newContextMenuOptions: Array<GridContextMenuOption<Object>>): void {\n\t\tthis.contextMenuOptions = newContextMenuOptions;\n\t\tthis.open(event);\n\t}\n\n\tprotected existsAtLeastOneActionEnabled(): boolean {\n\t\treturn this.contextMenuOptions ?\n\t\t\tthis.contextMenuOptions.some(option => this.isEnabled(this.elementID, option.actionId)) : false;\n\t}\n\n\tpublic isEnabled(elementId: string, actionId: string): boolean {\n\t\treturn this.actionHandler.isHeaderContextMenuOptionEnabled(elementId, actionId, this.headerData);\n\t}\n\n\tpublic isIconEnabled(elementId: string, actionId: string): boolean {\n\t\treturn false;\n\t}\n\n\tpublic executeAction(event: any, elementId: string, actionId: string): void {\n\t\tthis.actionHandler.executeHeaderContextMenuAction(elementId, actionId, this.headerData);\n\t}\n\n\tpublic override showSubmenu(event: any, actionId: string, selectedChild: ElementRef, elementId: string): void {\n\t\t// TODO : Implement something\n\t}\n\n\tprotected getOption(actionId: string) {\n\t\t// TODO : Implement something\n\t}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { PreferencesService } from 'systelab-preferences';\nimport { I18nService } from 'systelab-translate';\nimport { CellKeyDownEvent, IsFullWidthRowParams } from 'ag-grid-community';\nimport { AbstractSearcher } from './abstract-searcher';\nimport { AbstractApiGrid } from '../grid/abstract-api-grid.component';\nimport { DialogService } from '../modal/dialog/dialog.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n\tselector:    'systelab-internal-searcher-table',\n\ttemplateUrl: '../grid/abstract-grid.component.html'\n\n})\nexport class SearcherTableComponent<T> extends AbstractApiGrid<T> implements OnInit {\n\n\t@Input() public valueForSearch: string;\n\t@Input('contains') public searchForContain: boolean;\n\t@Input() public searcher: AbstractSearcher<T>;\n\n\tconstructor(protected override preferencesService: PreferencesService, protected override i18nService: I18nService,\n\t\t\t\tprotected override dialogService: DialogService) {\n\t\tsuper(preferencesService, i18nService, dialogService);\n\t}\n\n\tpublic override ngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tthis.gridOptions.enableBrowserTooltips = true;\n\t\tthis.gridOptions.suppressCellFocus = false;\n\t\tthis.gridOptions.onCellKeyDown = this.onEnterPressedCallback()\n\t}\n\n\tprotected getColumnDefs(): Array<any> {\n\t\treturn this.searcher.getColumnDefs();\n\t}\n\n\tprotected override hideHeader(): boolean {\n\t\treturn this.searcher.hideHeader();\n\t}\n\n\n\tprotected override getIsFullWidthRow(isFullWidthRowParams: IsFullWidthRowParams): boolean {\n\t\treturn this.searcher.getIsFullWidthRow(isFullWidthRowParams);\n\t}\n\n\tpublic override getFullWidthCellRenderer(): any {\n\t\treturn this.searcher.getFullWidthCellRenderer();\n\t}\n\n\tprotected getContextMenuOptions(): Array<any> {\n\t\treturn new Array<any>();\n\t}\n\n\tpublic getTotalItems() {\n\t\treturn this.searcher.getTotalItems();\n\t}\n\n\tprotected getData(page: number, itemsPerPage: number): Observable<Array<T>> {\n\t\tlet searchText: string;\n\t\tif (this.valueForSearch) {\n\t\t\tsearchText = (this.searchForContain) ? '%' + this.valueForSearch : this.valueForSearch;\n\t\t}\n\t\treturn this.searcher.getData(searchText, page, itemsPerPage);\n\t}\n\n\tpublic refreshTable(): void {\n\t\tthis.refresh();\n\t}\n\n\tpublic focusFirstRow(): void {\n\t\tthis.gridOptions.api.setFocusedCell(0, this.gridOptions.columnApi.getColumns()[0].getColId());\n\t}\n\n\tpublic getSelectedElements(): Array<T> {\n\t\treturn this.gridOptions.api.getSelectedRows();\n\t}\n\n\tprotected override getGridOptionsPreferencesPrefix(): string {\n\t\treturn this.searcher.getGridOptionsPreferencesPrefix();\n\t}\n\n\tpublic override onModelUpdated(event: any) {\n\t\tsuper.onModelUpdated(event);\n\t\tif (this.multipleSelection) {\n\t\t\tif (this.searcher && this.searcher.multipleSelectedItemList && this.searcher.multipleSelectedItemList.length > 0) {\n\t\t\t\tthis.gridOptions.api.forEachNode(node => {\n\t\t\t\t\tif (this.searcher.multipleSelectedItemList\n\t\t\t\t\t\t.filter((selectedItem) => {\n\t\t\t\t\t\t\treturn (selectedItem && node.data && selectedItem[this.getSelectionField()] === node.data[this.getSelectionField()]);\n\t\t\t\t\t\t}).length > 0) {\n\t\t\t\t\t\tnode.selectThisNode(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (this.searcher && this.searcher.id && this.searcher.id !== undefined) {\n\t\t\tthis.gridOptions.api.forEachNode(node => {\n\t\t\t\tif (node.data && node.data[this.searcher.getIdField()] === this.searcher.id) {\n\t\t\t\t\tnode.selectThisNode(true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate getSelectionField() {\n\t\treturn this.searcher.useIdInMultipleSelectionGrid ? this.searcher.getIdField() : this.searcher.getCodeField();\n\t}\n\n\t// overrides\n\tpublic override onRowSelected(event: any): void {\n\t\tif (this.multipleSelection) {\n\t\t\tif (event.node && event.node.data && event.node.data[this.searcher.getIdField()] !== undefined) {\n\t\t\t\tif (this.searcher.multipleSelectedItemList) {\n\t\t\t\t\tconst element = this.searcher.multipleSelectedItemList.find((item) => {\n\t\t\t\t\t\treturn item[this.getSelectionField()] === event.node.data[this.getSelectionField()];\n\t\t\t\t\t});\n\t\t\t\t\tif (event.node.selected && !element) {\n\t\t\t\t\t\tthis.addElementToMultipleSelectedItemList(event.node.data);\n\t\t\t\t\t} else if (!event.node.selected && element) {\n\t\t\t\t\t\tthis.searcher.multipleSelectedItemList = this.searcher.multipleSelectedItemList\n\t\t\t\t\t\t\t.filter((item) => item[this.getSelectionField()] !== element[this.getSelectionField()]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.addElementToMultipleSelectedItemList(event.node.data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate addElementToMultipleSelectedItemList(element: T): void {\n\t\tif (!this.searcher.multipleSelectedItemList) {\n\t\t\tthis.searcher.multipleSelectedItemList = [];\n\t\t}\n\t\tthis.searcher.multipleSelectedItemList.push(element);\n\t\tthis.searcher.multipleSelectedItemList = this.searcher.multipleSelectedItemList.slice();\n\t}\n\n\tprivate onEnterPressedCallback() {\n\t\treturn (e) => {\n\t\t\tif (e.event instanceof KeyboardEvent) {\n\t\t\t\tconst keyEvent = e.event;\n\t\t\t\tif (keyEvent.key === 'Enter') {\n\t\t\t\t\tthis.clickRow.emit(e.data);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n}\n","<div #hidden class=\"height-hidden\"></div>\n<ag-grid-angular id=\"agGrid\" #agGrid style=\"position:absolute; top:0; bottom:0; left:0; right:0; overflow: hidden;\"\n                 class=\"ag-theme-fresh\"\n                 [gridOptions]=\"gridOptions\"\n                 (gridReady)=\"doGridReady($event)\"\n                 (gridSizeChanged)=\"doGridSizeChanged($event)\"\n                 (cellClicked)=\"doClick($event)\"\n                 [rowDragManaged]=\"true\"\n                 [animateRows]=\"true\"\n                 (rowDragEnd)=\"onRowDragEnd($event)\"\n                 (columnResized)=\"doColumnResized($event)\"\n                 (viewportChanged)=\"doViewportChanged()\"\n                 [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\n                 [overlayLoadingTemplate]=\"overlayLoadingTemplate\"\n                 (rowSelected)=\"onRowSelected($event)\"\n                 (modelUpdated)=\"onModelUpdated($event)\" [rowData]=\"rowData\">\n</ag-grid-angular>\n<systelab-grid-context-menu #popupmenu [style.position]=\"'fixed'\" [isEmbedded]=\"true\"></systelab-grid-context-menu>\n<systelab-grid-header-context-menu #headerpopupmenu [style.position]=\"'fixed'\" [isEmbedded]=\"true\"></systelab-grid-header-context-menu>\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n\tselector: '[keyup-debounce]'\n})\nexport class KeyupDebounceDirective implements OnInit, OnDestroy {\n\n\t@Input() public keyupDebounceTime = 350;\n\t@Output() public keyupDebounced = new EventEmitter();\n\tprivate debouncer = new Subject();\n\tprivate subscription: Subscription;\n\tpublic constructor(private el: ElementRef) {\n\t}\n\n\n\tpublic ngOnInit(): void {\n\t\tthis.subscription = this.debouncer\n\t\t\t.pipe(debounceTime(this.keyupDebounceTime))\n\t\t\t.subscribe(e => this.keyupDebounced.emit(e));\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis.subscription.unsubscribe();\n\t}\n\n\t@HostListener('keyup', ['$event'])\n\tpublic keyupEvent(event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.debouncer.next(event);\n\t}\n\n\n}\n","import { AfterViewInit, Component, ElementRef, ViewChild } from '@angular/core';\nimport { SearcherTableComponent } from './searcher.table.component';\nimport { I18nService } from 'systelab-translate';\nimport { ModalComponent } from '../modal/dialog/modal-context';\nimport { DialogRef } from '../modal/dialog/dialog-ref';\nimport { SearcherDialogParameters } from './searcher.dialog.parameters';\n\n@Component({\n\tselector: 'systelab-searcher-dialog',\n\ttemplateUrl: 'searcher.dialog.component.html'\n})\nexport class SearcherDialog<T> implements ModalComponent<SearcherDialogParameters<T>>, AfterViewInit {\n\n\t@ViewChild(SearcherTableComponent, {static: false}) public tableComponent: SearcherTableComponent<T>;\n\t@ViewChild('valueToSearchInput') public valueToSearchInput: ElementRef;\n\n\tpublic parameters: SearcherDialogParameters<T>;\n\tpublic searchingValue: string;\n\n\tpublic searchLabel: string;\n\tpublic titleForDialog: string;\n\tpublic multipleSelection = false;\n\tpublic showClose: boolean;\n\n\tpublic searchByContains = false;\n\n\tconstructor(public dialog: DialogRef<SearcherDialogParameters<T>>, protected i18nService: I18nService) {\n\t\tthis.parameters = dialog.context;\n\t\tthis.searchingValue = this.parameters.valueToSearch;\n\t\tthis.searchByContains = !this.parameters.searchByStartWithAsDefault;\n\n\t\tthis.showClose = this.parameters.showCloseButton;\n\t\tif (!this.parameters.showCloseButton) {\n\t\t\tthis.parameters.isBlocking = true;\n\t\t\tthis.parameters.keyboard = null;\n\t\t}\n\n\t\tif (this.parameters.searcher) {\n\t\t\tthis.searchLabel = this.parameters.searcher.getTextForSearcherLabel();\n\t\t\tthis.titleForDialog = this.parameters.searcher.getTitleForDialog();\n\t\t\tthis.multipleSelection = this.parameters.searcher.multipleSelection;\n\t\t}\n\t}\n\n\tpublic ngAfterViewInit(): void {\n\t\tthis.setFocusToInput();\n\t}\n\n\tpublic setFocusToInput(): void {\n\t\tthis.refreshSearch();\n\t\tsetTimeout(() => this.valueToSearchInput?.nativeElement.focus(), 100);\n\t}\n\n\tpublic close(): void {\n\t\tthis.dialog.close();\n\t}\n\n\tpublic submit(): void {\n\t\tif (this.parameters.searcher.multipleSelection) {\n\t\t\tthis.dialog.close(this.parameters.searcher.multipleSelectedItemList);\n\t\t} else {\n\t\t\tthis.dialog.close(this.tableComponent.getSelectedElements());\n\t\t}\n\t}\n\n\tpublic setFocusToGrid(event:KeyboardEvent): void {\n\t\tevent.preventDefault();\n\t\tthis.valueToSearchInput?.nativeElement.blur();\n\t\tthis.tableComponent.focusFirstRow()\n\t}\n\n\tpublic refreshSearch(): void {\n\t\tthis.tableComponent.refreshTable();\n\t}\n\n\tpublic selectOnClick(data: T) {\n\t\tif (!this.multipleSelection) {\n\t\t\tif (data) {\n\t\t\t\tconst arr: Array<T> = new Array<T>();\n\t\t\t\tarr.push(data);\n\t\t\t\tthis.dialog.close(arr);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getSelectedElements(): string {\n\t\treturn this.parameters.showSelectedRowsInSubmitButton && this.parameters.searcher.multipleSelectedItemList?.length > 0 ?\n\t\t\t` (${this.parameters.searcher.multipleSelectedItemList.length})` : '';\n\t}\n}\n\n\n","<systelab-dialog-header [withClose]=\"showClose || multipleSelection\" (close)=\"close()\">{{titleForDialog}}\n</systelab-dialog-header>\n\n<div (keydown)=\"(($event.keyCode===13)?$event.preventDefault():0)\"\n     class=\"slab-flex-1 d-flex flex-column flex-nowrap slab-searcher-dialog-container\">\n\n    <form class=\"d-flex p-3\">\n        <div class=\"d-flex slab-flex-1 border rounded\">\n            <div class=\"d-flex border-right pb-1\">\n                <div class=\"slab-first-option ml-3 mr-2\">\n                    <input name=\"status-searchby1\" type=\"radio\" id=\"status-searchby-starts\"\n                           [(ngModel)]=\"searchByContains\" [value]=\"false\"\n                           (ngModelChange)=\"setFocusToInput()\">\n                    <label for=\"status-searchby-starts\">{{ 'COMMON_STARTS_WITH' | translate | async}}</label>\n                </div>\n                <div class=\"slab-second-option ml-2 mr-3\">\n                    <input name=\"status-searchby2\" type=\"radio\" id=\"status-searchby-contains\"\n                           [(ngModel)]=\"searchByContains\" [value]=\"true\"\n                           (ngModelChange)=\"setFocusToInput()\">\n                    <label for=\"status-searchby-contains\">{{ 'COMMON_CONTAINS' | translate | async}}</label>\n                </div>\n            </div>\n            <div class=\"slab-input d-flex slab-flex-1\">\n                <input type=\"text\" class=\"slab-flex-1 slab-searcher-dialog-search-text\" #valueToSearchInput id=\"valueToSearch\"\n                       keyup-debounce\n                       [keyupDebounceTime]=\"parameters.debounceTime\"\n                       (keyupDebounced)=\"refreshSearch()\" (keydown.tab)=\"setFocusToGrid($event)\"\n                       placeholder=\"{{'COMMON_SEARCH' | translate | async}}\"\n                       [(ngModel)]=\"searchingValue\" name=\"valueToSearch\" autocomplete=\"off\">\n            </div>\n        </div>\n    </form>\n\n    <div class=\"slab-flex-1 d-flex\">\n        <systelab-internal-searcher-table class=\"slab-flex-1 position-relative\" name=\"searcherTable\"\n                                          [contains]=\"searchByContains\"\n                                          [showChecks]=\"multipleSelection\"\n                                          [multipleSelection]=\"multipleSelection\"\n                                          [valueForSearch]=\"searchingValue\"\n                                          [searcher]=\"parameters.searcher\"\n                                          (clickRow)=\"selectOnClick($event)\"></systelab-internal-searcher-table>\n    </div>\n</div>\n<systelab-dialog-bottom *ngIf=\"multipleSelection\" class=\"slab-searcher-dialog-button\">\n    <systelab-button type=\"primary\" class=\"ml-auto\" (action)=\"submit()\">{{ 'COMMON_OK' | translate | async }}{{getSelectedElements()}}</systelab-button>\n</systelab-dialog-bottom>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\n\n@Component({\n\tselector:    'systelab-calendar-header',\n\ttemplateUrl: 'calendar-header.component.html',\n\tstyleUrls:   ['calendar-header.component.scss']\n})\nexport class CalendarHeaderComponent {\n\n\t@Input() currentDate: Date;\n\n\t@Output() previousYear = new EventEmitter();\n\t@Output() previousMonth = new EventEmitter();\n\n\t@Output() nextMonth = new EventEmitter();\n\t@Output() nextYear = new EventEmitter();\n\n\tconstructor(private i18nService: I18nService) {\n\n\t}\n\tpublic doPreviousYear(): void {\n\t\tthis.previousYear.emit();\n\t}\n\n\tpublic doPreviousMonth(): void {\n\t\tthis.previousMonth.emit();\n\t}\n\n\tpublic doNextMonth(): void {\n\t\tthis.nextMonth.emit();\n\t}\n\n\tpublic doNextYear(): void {\n\t\tthis.nextYear.emit();\n\t}\n\n\tpublic getTitle(): string {\n\t\treturn this.i18nService.formatMonthAndYear(this.currentDate);\n\t}\n}\n\n","<div class=\"slab-custom-calendar-header\">\n    <a id=\"previous-year\" class=\"icon-angle-double-left slab-icon-medium\" (click)=\"doPreviousYear()\"></a>\n    <a id=\"previous-month\" class=\"icon-angle-left slab-icon-medium\" (click)=\"doPreviousMonth()\"></a>\n    <a id=\"next-year\" class=\"icon-angle-double-right slab-icon-medium\" (click)=\"doNextYear()\"></a>\n    <a id=\"next-month\" class=\"icon-angle-right slab-icon-medium\" (click)=\"doNextMonth()\"></a>\n    <div class=\"slab-custom-calendar-title\">{{getTitle()}}</div>\n</div>\n","import { Component, ContentChild, Input, OnChanges, TemplateRef } from '@angular/core';\nimport { addDays, getDate, getISODay, isSameDay, lastDayOfMonth, setDate } from 'date-fns';\nimport { I18nService } from 'systelab-translate';\n\nexport interface DaySlot {\n\tdate?: Date;\n\tday: number;\n\tisHoliday: boolean;\n}\n\n@Component({\n\tselector: 'systelab-calendar-table',\n\ttemplateUrl: 'calendar-table.component.html',\n\tstyleUrls: ['calendar-table.component.scss']\n})\nexport class CalendarTableComponent implements OnChanges {\n\n\t@Input() public currentDate: Date;\n\t@Input() public days: DaySlot[] = [];\n\t@Input() public useLongDays = false;\n\n\t@ContentChild(TemplateRef, { static: false }) templateRef: TemplateRef<any>;\n\n\tpublic language: any;\n\tpublic daysHeader: string[] = [];\n\tpublic rows: DaySlot[][] = [];\n\n\tconstructor(protected i18nService: I18nService) {\n\t}\n\n\tpublic ngOnChanges(): void {\n\t\tthis.refresh();\n\t}\n\n\tpublic refresh(): void {\n\t\tif (!this.currentDate) {\n\t\t\tthis.currentDate = new Date();\n\t\t}\n\t\tthis.getLanguage();\n\t\tthis.defineHeaderDays();\n\t\tthis.rows = [];\n\t\tthis.putDaySlotsIntoArray(this.generateDays());\n\t}\n\n\tprotected defineHeaderDays(): void {\n\t\tthis.daysHeader = this.useLongDays ? this.language.dayNames.slice() : this.language.dayNamesShort.slice();\n\t\tlet firstDay: Array<string> = this.daysHeader.slice(0, 1);\n\t\tif (this.language.firstDayOfWeek === 1 &&\n\t\t\tfirstDay[0] === (this.useLongDays ? this.language.dayNames[0] : this.language.dayNamesShort[0])) {\n\t\t\tfirstDay = this.daysHeader.splice(0, 1);\n\t\t\tthis.daysHeader.push(firstDay[0]);\n\t\t}\n\t}\n\n\tprotected getLanguage(): void {\n\t\tthis.language = {\n\t\t\tdayNames: [\n\t\t\t\tthis.i18nService.instant('COMMON_SUNDAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_MONDAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_TUESDAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_WEDNESDAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_THURSDAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_FRIDAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_SATURDAY')\n\t\t\t],\n\t\t\tdayNamesShort: [\n\t\t\t\tthis.i18nService.instant('COMMON_SEVENTH_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_FIRST_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_SECOND_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_THIRD_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_FOURTH_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_FIFTH_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_SIXTH_DAY')\n\t\t\t],\n\t\t\tdayNamesMin: [\n\t\t\t\tthis.i18nService.instant('COMMON_SEVENTH_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_FIRST_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_SECOND_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_THIRD_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_FOURTH_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_FIFTH_DAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_SIXTH_DAY')\n\t\t\t],\n\t\t\tmonthNames: [\n\t\t\t\tthis.i18nService.instant('COMMON_JANUARY'),\n\t\t\t\tthis.i18nService.instant('COMMON_FEBRUARY'),\n\t\t\t\tthis.i18nService.instant('COMMON_MARCH'),\n\t\t\t\tthis.i18nService.instant('COMMON_APRIL'),\n\t\t\t\tthis.i18nService.instant('COMMON_MAY'),\n\t\t\t\tthis.i18nService.instant('COMMON_JUNE'),\n\t\t\t\tthis.i18nService.instant('COMMON_JULY'),\n\t\t\t\tthis.i18nService.instant('COMMON_AUGUST'),\n\t\t\t\tthis.i18nService.instant('COMMON_SEPTEMBER'),\n\t\t\t\tthis.i18nService.instant('COMMON_OCTOBER'),\n\t\t\t\tthis.i18nService.instant('COMMON_NOVEMBER'),\n\t\t\t\tthis.i18nService.instant('COMMON_DECEMBER')\n\t\t\t],\n\t\t\tmonthNamesShort: [\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_1'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_2'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_3'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_4'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_5'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_6'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_7'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_8'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_9'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_10'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_11'),\n\t\t\t\tthis.i18nService.instant('JOB_MONTHS_12')\n\t\t\t]\n\t\t};\n\n\t\tthis.language.firstDayOfWeek = this.i18nService.getFirstDayOfWeek();\n\t\tthis.language.dateFormatValue = this.i18nService.getDateFormatForDatePicker(true);\n\t}\n\n\tprivate generateDays(): Date[] {\n\t\tconst dates: Date[] = [];\n\n\t\tconst firstDayOfMonth = setDate(this.currentDate, 1);\n\t\tconst lastDateOfMonth = lastDayOfMonth(firstDayOfMonth);\n\n\t\t// Calculate the days to add at the beginning.\n\t\tlet firstDayPosition = getISODay(firstDayOfMonth);\n\t\tif (this.language.firstDayOfWeek === 1) {\n\t\t\tfirstDayPosition = firstDayPosition - 1;\n\t\t}\n\t\tfirstDayPosition = firstDayPosition % 7;\n\n\t\t// Push the empty days.\n\t\tfor (let i = 0; i < firstDayPosition; i++) {\n\t\t\tdates.push(null);\n\t\t}\n\n\t\t// put the dates.\n\t\tlet date = firstDayOfMonth;\n\t\tfor (let i = 1; i <= getDate(lastDateOfMonth); i++) {\n\t\t\tdates.push(date);\n\t\t\tdate = addDays(date, 1);\n\t\t}\n\t\treturn dates;\n\t}\n\n\tprivate putDaySlotsIntoArray(datesArray: Date[]) {\n\n\t\tconst days: DaySlot[] = [];\n\t\tfor (const singleDate of datesArray) {\n\t\t\tif (singleDate === null) {\n\t\t\t\tdays.push({ day: -1, isHoliday: false });\n\t\t\t} else {\n\t\t\t\tconst loadDay = this.getLoadDay(singleDate);\n\t\t\t\tif (loadDay) {\n\t\t\t\t\tdays.push(loadDay);\n\t\t\t\t} else {\n\t\t\t\t\tdays.push({ date: singleDate, day: getDate(singleDate), isHoliday: false });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Split in at maximum 6 rows\n\t\tfor (let i = 0; i < 6; i++) {\n\t\t\tthis.rows.push(days.slice(i * 7, (i * 7) + 7));\n\t\t}\n\n\t\t// Remove the last two rows if they are empty.\n\t\tfor (let i = this.rows.length - 1; i >= 3; i--) {\n\t\t\tif (this.rows[i].length === 0) {\n\t\t\t\tthis.rows.splice(i, 1);\n\t\t\t}\n\t\t}\n\t\t// The last week should have 7 slots too\n\t\tconst lastRow = this.rows.length;\n\t\tfor (let j = this.rows[lastRow - 1].length; j < 7; j++) {\n\t\t\tthis.rows[lastRow - 1].push({ day: -1, isHoliday: false });\n\t\t}\n\t}\n\n\tprivate getLoadDay(date: Date): DaySlot {\n\t\tfor (const day of this.days) {\n\t\t\tif (isSameDay(day.date, date)) {\n\t\t\t\treturn day;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n}\n","<div class=\"slab-custom-calendar\">\n    <table class=\"slab-custom-calendar-table\">\n        <thead>\n        <tr>\n            @for (dayName of daysHeader; track dayName) {\n                <th>{{dayName}}</th>\n            }\n        </tr>\n        </thead>\n        <tbody>\n            @for (row of rows; track row) {\n                <tr>\n                    @for (daySlot of row; track daySlot.day) {\n                        <td [ngClass]=\"{'disabled-cell': !daySlot.date}\">\n                            <div *ngIf=\"daySlot.date\" class=\"slab-custom-calendar-cell\">\n                                <ng-container *ngTemplateOutlet=\"templateRef; context: { daySlot: daySlot }\"></ng-container>\n                            </div>\n                        </td>\n                    }\n                </tr>\n            }\n        </tbody>\n    </table>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {I18nService} from 'systelab-translate';\n\n@Component({\n\tselector: 'systelab-calendar-footer',\n\ttemplateUrl: 'calendar-footer.component.html'\n})\nexport class CalendarFooterComponent {\n\n\t@Input() currentDate: Date;\n\n\t@Output() onClearDate: EventEmitter<void> = new EventEmitter<void>();\n\n\tconstructor(private i18nService: I18nService) {\n\t}\n\n\tpublic clearDate(): void {\n\t\tthis.onClearDate.emit();\n\t}\n}\n\n","<div class=\"slab-custom-calendar-footer p-1 d-flex border-top\">\n    <systelab-button id=\"clear-date-button\" type=\"danger\" size=\"small\" class=\"ml-auto\" (action)=\"clearDate()\">{{ 'COMMON_CLEAR' | translate | async }}</systelab-button>\n</div>\n","import { Component, ViewChild } from '@angular/core';\nimport { addMonths, addYears } from 'date-fns';\nimport { of } from 'rxjs';\nimport { delay } from 'rxjs/operators';\n\nimport { CalendarTableComponent, DaySlot } from './calendar-table.component';\nimport { I18nService } from 'systelab-translate';\nimport { DialogRef } from '../modal/dialog/dialog-ref';\nimport { ModalComponent, SystelabModalContext } from '../modal/dialog/modal-context';\n\nexport class CalendarDialogParameters extends SystelabModalContext {\n\n\tpublic override width = 800;\n\tpublic override height = 600;\n\tpublic headerDescription = '';\n}\n\n@Component({\n\ttemplateUrl: 'calendar-dialog.component.html',\n\tstyleUrls:   ['calendar-dialog.component.scss']\n\n})\nexport class CalendarDialog implements ModalComponent<CalendarDialogParameters> {\n\n\t@ViewChild('calendar', {static: false}) calendar: CalendarTableComponent;\n\n\tpublic parameters: CalendarDialogParameters;\n\tpublic currentDate: Date;\n\tpublic days: DaySlot[] = [];\n\n\tconstructor(public dialog: DialogRef<CalendarDialogParameters>, private i18nService: I18nService) {\n\t\tthis.parameters = dialog.context;\n\t\tthis.currentDate = new Date();\n\t\tthis.getData();\n\t}\n\n\tpublic static getParameters(): CalendarDialogParameters {\n\t\treturn new CalendarDialogParameters();\n\t}\n\n\tpublic close(): void {\n\t\tthis.dialog.close();\n\t}\n\n\tpublic selectDaySlot(daySlot: DaySlot): void {\n\t\tif (daySlot.date) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tpublic doSomething(data: any): void {\n\t\tconsole.log(data);\n\t}\n\n\tpublic changeYear(yearFactor: number): void {\n\t\tthis.days = [];\n\t\tthis.currentDate = addYears(this.currentDate, yearFactor);\n\t\tthis.getData();\n\t}\n\n\tpublic changeMonth(monthFactor: number): void {\n\t\tthis.days = [];\n\t\tthis.currentDate = addMonths(this.currentDate, monthFactor);\n\t\tthis.getData();\n\t}\n\n\tprivate getData() {\n\t\tof(true)\n\t\t\t.pipe(delay(1000))\n\t\t\t.subscribe(\n\t\t\t\t() => {\n\t\t\t\t\tconst returnedDays: DaySlot[] = [];\n\t\t\t\t\treturnedDays.push({date: new Date(2017, 10, 25), day: 25, isHoliday: true});\n\t\t\t\t\treturnedDays.push({date: new Date(2017, 10, 26), day: 26, isHoliday: true});\n\t\t\t\t\tthis.days = returnedDays;\n\t\t\t\t}\n\t\t\t);\n\t}\n\n}\n\n","<systelab-dialog-header [withInfo]=\"false\" (close)=\"close();\">{{parameters.headerDescription}}</systelab-dialog-header>\n<div class=\"slab-calendar-dialog\">\n    <systelab-calendar-header [currentDate]=\"currentDate\"\n                              (previousYear)=\"changeYear(-1)\" (previousMonth)=\"changeMonth(-1)\"\n                              (nextMonth)=\"changeMonth(1)\" (nextYear)=\"changeYear(1)\">\n    </systelab-calendar-header>\n    <systelab-calendar-table #calendar class=\"slab-calendar-table\" [currentDate]=\"currentDate\" [days]=\"days\">\n        <ng-template let-daySlot=\"daySlot\">\n            <a [ngClass]=\"{'is-holiday': daySlot.isHoliday,'disable-link':daySlot.isDisabled}\" (click)=\"selectDaySlot(daySlot)\">\n                {{daySlot.day}}\n            </a>\n            <div *ngIf=\"!daySlot.isHoliday\" class=\"slab-calendar-buttons\">\n                <button type=\"button\" class=\"slab-calendar-button1\" (click)=\"doSomething(daySlot)\"></button>\n            </div>\n        </ng-template>\n    </systelab-calendar-table>\n    <systelab-calendar-footer></systelab-calendar-footer>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-loading',\n\ttemplateUrl: 'loading.component.html',\n\tstyleUrls:   ['loading.component.scss', 'loading-alternative.component.scss']\n})\nexport class LoadingComponent {\n\n\t@Input() public useClassic = false;\n}\n","\n<div  *ngIf=\"useClassic\" class=\"application-loader-spinner\">\n    <div class=\"sk-circle1 sk-circle\"></div>\n    <div class=\"sk-circle2 sk-circle\"></div>\n    <div class=\"sk-circle3 sk-circle\"></div>\n    <div class=\"sk-circle4 sk-circle\"></div>\n    <div class=\"sk-circle5 sk-circle\"></div>\n    <div class=\"sk-circle6 sk-circle\"></div>\n    <div class=\"sk-circle7 sk-circle\"></div>\n    <div class=\"sk-circle8 sk-circle\"></div>\n    <div class=\"sk-circle9 sk-circle\"></div>\n    <div class=\"sk-circle10 sk-circle\"></div>\n    <div class=\"sk-circle11 sk-circle\"></div>\n    <div class=\"sk-circle12 sk-circle\"></div>\n</div>\n<div *ngIf=\"!useClassic\" class=\"application-loader-spinner\">\n    <div class=\"double-bounce1\"></div>\n    <div class=\"double-bounce2\"></div>\n</div>\n\n","import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-toggle-button',\n\ttemplateUrl: 'toggle-button.component.html',\n\tstyles:      [`\n      :host {\n          background-color: transparent;\n      }`]\n})\nexport class ToggleButtonComponent {\n\tprivate checked = false;\n\n\t@Input() get isChecked() {\n\t\treturn this.checked;\n\t}\n\n\tset isChecked(val: boolean) {\n\t\tthis.checked = val;\n\t\tthis.isCheckedChange.emit(this.checked);\n\t}\n\n\t@Output() public isCheckedChange = new EventEmitter();\n\n\t@Input() public disabled = false;\n\n\tconstructor(private element: ElementRef) {\n\n\t}\n\n\tpublic getId() {\n\t\treturn this.element.nativeElement.id;\n\t}\n\n\tpublic doToggle(event: any) {\n\t\tif (this.disabled) {\n\t\t\tevent.stopPropagation();\n\t\t} else {\n\t\t\tthis.isChecked = !this.isChecked;\n\t\t}\n\t}\n}\n","<span (click)=\"doToggle($event)\">\n    <button type=\"button\" class=\"btn\" [class.btn-outline-primary]=\"!isChecked\" [class.btn-primary]=\"isChecked\" [disabled]=\"disabled\"><ng-content></ng-content></button>\n</span>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n\tselector: 'systelab-file-selector',\n\ttemplateUrl: 'file-selector.component.html'\n})\n\nexport class FileSelectorComponent {\n\n\tprivate _fileName = '';\n\tprivate _file: File;\n\tprivate _fileList: FileList;\n\n\t@Output() public fileNameChange = new EventEmitter<string>();\n\t@Output() public fileChange = new EventEmitter<File>();\n\t@Output() public fileListChange = new EventEmitter<FileList>();\n\n\t@Input() showButtonOnDisable = false;\n\t@Input() multipleSelection = false;\n\t@Input() disabled = false;\n\n\t@Input()\n\tpublic get fileName() {\n\t\treturn this._fileName;\n\t}\n\n\tpublic set fileName(name: string) {\n\t\tthis._fileName = name;\n\t\tthis.fileNameChange.emit(this._fileName);\n\t}\n\n\t@Input()\n\tpublic get file() {\n\t\treturn this._file;\n\t}\n\n\tpublic set file(file: File) {\n\t\tthis._file = file;\n\t\tthis.fileChange.emit(this._file);\n\t}\n\n\t@Input()\n\tpublic get fileList() {\n\t\treturn this._fileList;\n\t}\n\n\tpublic set fileList(fileList: FileList) {\n\t\tthis._fileList = fileList;\n\t\tthis.fileListChange.emit(this._fileList);\n\t}\n\n\tpublic selectFile(files: FileList) {\n\t\tif (files.length) {\n\t\t\tif (this.multipleSelection) {\n\t\t\t\tthis.fileList = files;\n\t\t\t\tthis.fileName = '';\n\t\t\t\tfor (let index = 0; index < files.length; index++) {\n\t\t\t\t\tthis.fileName += (this.fileName.length > 0 ? ', ' : '') + files[index].name;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.fileName = files[0].name;\n\t\t\t\tthis.file = files[0];\n\t\t\t}\n\t\t}\n\t}\n}\n","<div class=\"slab-file-selector input-group\">\n    <input readonly class=\"form-control\" id=\"fileSelectorInput\" type=\"text\" name=\"uploadFile\"\n           [(ngModel)]=\"fileName\"\n           (click)=\"uploadBtn.click()\"\n           [disabled]=\"disabled\">\n    <input #uploadBtn type=\"file\" class=\"d-none\" (change)=\"selectFile($event.target.files)\" [multiple]=\"multipleSelection\">\n    <div class=\"input-group-append\">\n        <button class=\"btn btn-sm pt-0 pb-0\" [disabled]=\"disabled\"\n                [hidden]=\"disabled && !showButtonOnDisable\"\n                id=\"selectionButton\"\n                type=\"button\" (click)=\"uploadBtn.click()\"><b>...</b></button>\n    </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\n\nexport class TimelineEvent {\n\n\tpublic inverted = false;\n\tpublic icon: string;\n\tpublic extraText: string;\n\tpublic richExtraText: string;\n\tpublic data: Object;\n\tpublic color: string;\n\n\tconstructor(public title: string, public publishingDate: Date, public text: string) {\n\n\t}\n\n\tpublic getIcon() {\n\t\tif (this.icon) {\n\t\t\treturn this.icon;\n\t\t} else {\n\t\t\treturn 'icon-download';\n\t\t}\n\t}\n\n\tpublic getColor() {\n\t\tif (this.color) {\n\t\t\treturn this.color;\n\t\t}\n\t\treturn 'warning';\n\t}\n}\n\n@Component({\n\tselector:    'systelab-timeline',\n\ttemplateUrl: 'timeline.component.html'\n})\nexport class TimelineComponent {\n\n\t@Input() public events: TimelineEvent[] = [];\n\t@Output() public timelineClick = new EventEmitter<TimelineEvent>();\n\n\tconstructor(protected i18nService: I18nService) {\n\n\t}\n\n\tpublic getPrintableDate(event: TimelineEvent) {\n\t\treturn this.i18nService.formatDateTime(event.publishingDate, true);\n\t}\n\n\tpublic doClick(timelineEvent: TimelineEvent) {\n\t\tthis.timelineClick.emit(timelineEvent);\n\t}\n}\n","<ul class=\"slab-timeline p-3 mt-3\">\n    @for (event of events; track event) {\n        <li [class.slab-timeline-inverted]=\"event.inverted\">\n            <div class=\"slab-timeline-badge {{event.getColor()}}\"><i class=\"{{event.getIcon()}}\"></i></div>\n            <div class=\"slab-timeline-panel\" (click)=\"doClick(event)\">\n                <div class=\"slab-timeline-heading\">\n                    <h4 class=\"slab-timeline-title\">{{event.title}}</h4>\n                    <p>\n                        <small class=\"text-muted\"><i class=\"icon-clock\"></i> {{getPrintableDate(event)}}</small>\n                    </p>\n                </div>\n                <div class=\"slab-timeline-body\">\n                    <p>{{event.text}}</p>\n                    <p *ngIf=\"event.extraText\">{{event.extraText}}</p>\n                    <p *ngIf=\"event.richExtraText\" [innerHTML]=\"event.richExtraText\"></p>\n                </div>\n            </div>\n        </li>\n    }\n</ul>\n","import {Component, Input} from '@angular/core';\n\nexport class NavbarItem {\n\tconstructor(public id: number, public text: string, public image: string, public floatImage: boolean, public isSelected: boolean,\n\t            public isEnabled: boolean, public action: any, public target?: string, public url?: string, public backgroundColor?: string, public fontColor?: string) {\n\t}\n}\n\n@Component({\n\tselector: 'systelab-navbar',\n\ttemplateUrl: 'navbar.component.html',\n})\nexport class NavbarComponent {\n\n\t@Input() public items: NavbarItem[] = [];\n\t@Input() public isVertical = false;\n\t@Input() public backgroundColor;\n\t@Input() public backgroundHoverColor: string;\n\t@Input() public borderColor: string;\n\t@Input() public activeColor = 'white';\n\t@Input() public activeFontColor = 'black';\n\t@Input() public fontHoverColor:string;\n\t@Input() public fontColor = 'white';\n\t@Input() public align = 'left';\n\t@Input() public id: string;\n\t@Input() public hideBottomBorder: boolean;\n\t@Input() public hideTopBorder: boolean;\n\t@Input() public hideRightBorder: boolean;\n\t@Input() public hideLeftBorder: boolean;\n\t@Input() public padding: string;\n\n\tpublic hovered: number;\n\n\tconstructor() {\n\t}\n\n\tpublic noop() {\n\t}\n}\n","<div class=\"slab-navbar navbar-expand-md navbar-light\" [style.background-color]=\"backgroundColor\">\n    <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" [attr.data-target]=\"'#' + id\"\n            [attr.aria-controls]=\"id\"\n            aria-expanded=\"false\" aria-label=\"Toggle navigation\"\n            [style.background-color]=\"hovered == -2  ? backgroundHoverColor :  backgroundColor\"\n            (mouseover)=\"hovered = -2\" (mouseout)=\"hovered = -1\">\n        <i class=\"slab-icon mt-2 mb-2 icon-list\" [style.color]=\"fontColor\"></i>\n    </button>\n\n    <div class=\"collapse navbar-collapse\" [id]=\"id\" [class.justify-content-center]=\"align === 'center'\"\n         [class.justify-content-end]=\"align === 'right'\">\n        <ul [class.flex-row]=\"!isVertical\" [class.flex-column]=\"isVertical\"\n            class=\"nav nav-pills slab-navbar-elements align-items-center d-flex\">\n\n            @for (nav of items; track nav.id; let last= $last) {\n                <li [style.border-right]=\"hideRightBorder?'none':(!isVertical && !last ?'none': borderColor  ? '1px solid '+borderColor:'none')\"\n                    [style.border-bottom]=\"hideBottomBorder?'none':(isVertical && !last ?'none': borderColor ? '1px solid '+borderColor:'none')\"\n                    [style.border-left]=\"borderColor && !hideLeftBorder? '1px solid '+borderColor:'none'\"\n                    [style.border-top]=\"borderColor && !hideTopBorder? '1px solid '+borderColor:'none'\"\n                    [style.padding]=\"padding\"\n                    class=\"nav-item\"\n                    [class.disabled]=\"!nav.isEnabled\"\n                    (click)=\"nav.isEnabled&&nav.action?nav.action():noop()\"\n                    [style.background-color]=\"nav.isSelected? activeColor : (hovered == nav.id && nav.isEnabled ? backgroundHoverColor : !nav.isEnabled ? '#cccccc': (nav.backgroundColor)?nav.backgroundColor:backgroundColor)\"\n                    (mouseover)=\"hovered = nav.id\" (mouseout)=\"hovered = -1\" [class.active]=\"nav.isSelected\">\n                    <a [id]=\"'nav-'+nav.id\"\n                       class=\"nav-link text-center align-self-stretch d-flex align-items-center justify-content-center\"\n                       [attr.href]=\"nav.url ? nav.isEnabled ?  nav.url : '' : null \"\n                       [attr.target]=\"nav.url ? nav.isEnabled ?  nav.target : '' : null \"\n                       [style.color]=\"nav.fontColor ? nav.fontColor: (hovered == nav.id && nav.isEnabled ? fontHoverColor : (nav.isSelected?activeFontColor:fontColor))\"\n                       [class.disabled]=\"!nav.isEnabled\" [class.active]=\"nav.isSelected\">\n                        <i *ngIf=\"nav.image\" [class]=\"nav.image\" [class.slab-icon-float-image]=\"nav.floatImage\"\n                           [class.slab-icon-vertical-image]=\"!nav.floatImage\"></i>\n                        <span *ngIf=\"nav.text\" [ngClass]=\"{'ml-2': nav.image}\">{{nav.text}}</span>\n                    </a>\n                </li>\n            }\n        </ul>\n    </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\nexport class MessagePopupIcon {\n\tconstructor(public cssClass: string, public cssPropertiesClass?: string) {\n\n\t}\n}\n\n@Component({\n\tselector: 'systelab-message-with-icon',\n\ttemplateUrl: 'message-with-icon.component.html',\n\tstyleUrls: ['message-with-icon.component.scss']\n})\nexport class MessageWithIconComponent {\n\n\tpublic static readonly MESSAGE_QUESTION = 1;\n\tpublic static readonly MESSAGE_ERROR = 2;\n\tpublic static readonly MESSAGE_WARNING = 3;\n\tpublic static readonly MESSAGE_INFO = 4;\n\n\t@Input() public message = '';\n\t@Input() public type = 1;\n\t@Input() public icon: MessagePopupIcon;\n\n\tpublic getIcon() {\n\t\tif (this.icon) {\n\t\t\treturn this.icon.cssClass;\n\t\t} else {\n\t\t\tswitch (this.type) {\n\t\t\t\tcase MessageWithIconComponent.MESSAGE_QUESTION:\n\t\t\t\t\treturn 'icon-question-circle';\n\t\t\t\tcase MessageWithIconComponent.MESSAGE_ERROR:\n\t\t\t\t\treturn 'icon-times-circle';\n\t\t\t\tcase MessageWithIconComponent.MESSAGE_WARNING:\n\t\t\t\t\treturn 'icon-warning';\n\t\t\t\tcase MessageWithIconComponent.MESSAGE_INFO:\n\t\t\t\t\treturn 'icon-info-circle';\n\t\t\t\tdefault:\n\t\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getColor() {\n\t\tif (this.icon) {\n\t\t\tif (this.icon.cssPropertiesClass) {\n\t\t\t\treturn this.icon.cssPropertiesClass;\n\t\t\t} else {\n\t\t\t\treturn 'info';\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (this.type) {\n\t\t\t\tcase MessageWithIconComponent.MESSAGE_QUESTION:\n\t\t\t\t\treturn 'info';\n\t\t\t\tcase MessageWithIconComponent.MESSAGE_ERROR:\n\t\t\t\t\treturn 'danger';\n\t\t\t\tcase MessageWithIconComponent.MESSAGE_WARNING:\n\t\t\t\t\treturn 'warning';\n\t\t\t\tcase MessageWithIconComponent.MESSAGE_INFO:\n\t\t\t\t\treturn 'info';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'info';\n\t\t\t}\n\t\t}\n\t}\n}\n","<div class=\"d-flex slab-flex-1 justify-content-center p-3\">\n    <div class=\"m-auto d-flex w-100\">\n        <i class=\"mx-4 slab-msg-box-icon {{getIcon()}} {{getColor()}}\"></i>\n        <div class=\"slab-flex-1 d-flex align-self-center\">\n            <div class=\"pl-2 slab-line-break-wrap\" id=\"popup-message\">{{message}}</div>\n        </div>        \n    </div>\n</div>","import { Component, Input } from '@angular/core';\n\nexport class BreadcrumbSubItem {\n\tconstructor(public id: string, public text: string, public action: any, public url?: string) {\n\t}\n}\n\nexport class BreadcrumbItem {\n\t// eslint-disable-next-line max-len\n\tconstructor(public id: string, public text: string, public isActive: boolean, public action: any, public subItems?: BreadcrumbSubItem[], public url?: string) {\n\t}\n}\n\n@Component({\n\tselector: 'systelab-breadcrumb',\n\ttemplateUrl: './breadcrumb.component.html'\n})\nexport class BreadcrumbComponent {\n\n\t@Input() public items: BreadcrumbItem[];\n\t@Input() public backgroundColor: string;\n\t@Input() public fontColor: string;\n\t@Input() public itemMaxWidth: string = '100%';\n\t@Input() public subItemMaxWidth: string = '100%';\n\n\tconstructor() {\n\t}\n\n\tpublic noop() {\n\t}\n}\n","<ol class=\"breadcrumb\" [style.background-color]=\"backgroundColor\">\n\n    @for (bread of items; track bread.id) {\n        <li [class.active]=\"bread.isActive\" (click)=\"bread.isActive?bread.action():noop()\">\n            <a *ngIf=\"bread.isActive\" [attr.target]=\"bread.url ? '_self' : null \" [attr.href]=\"bread.url ?  bread.url  : null \"\n               [style.color]=\"fontColor\" [style.max-width]=\"itemMaxWidth\">{{bread.text}}</a>\n            <label *ngIf=\"!bread.isActive\" [style.max-width]=\"itemMaxWidth\">{{bread.text}}</label>\n            <button *ngIf=\"bread.subItems\" class=\"slab-caret-button\" type=\"button\"\n                    id=\"dropdownMenu1\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"true\">\n                &nbsp;<i class=\"icon-caret-down\" [style.color]=\"fontColor\"></i>\n            </button>\n            <ul *ngIf=\"bread.subItems\" class=\"dropdown-menu slab-sub-items\" aria-labelledby=\"dropdownMenu1\">\n                @for (subBread of bread.subItems; track subBread.id) {\n                    <li (click)=\"subBread.action()\" class=\"slab-items\">\n                        <a [attr.target]=\"subBread.url ? '_self' : null \" [attr.href]=\"subBread.url ?  subBread.url  : null \"\n                           [style.color]=\"fontColor\" [style.max-width]=\"subItemMaxWidth\">{{subBread.text}}</a>\n                    </li>\n                }\n            </ul>\n        </li>\n    }\n</ol>\n","import { OnInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\nimport { Month } from '../month-selector/month-selector.component';\n\nexport class Week {\n\tconstructor(public week: number, public text: string, public day: number, public month: number, public year: number, public isActive: boolean) {\n\t}\n}\n\n@Component({\n\tselector: 'systelab-week-selector',\n\ttemplateUrl: './week-selector.component.html'\n})\nexport class WeekSelectorComponent implements OnInit {\n\n\t@Input() public maxDate: Date;\n\t@Input() public minDate: Date;\n\t@Input() public currentDate: Date;\n\t@Input() public disabled: boolean;\n\n\tprivate _selectedWeek: Week;\n\t@Input()\n\tget selectedWeek(): Week {\n\t\treturn this._selectedWeek;\n\t}\n\n\t@Output() public selectedWeekChange = new EventEmitter();\n\n\tset selectedWeek(value: Week) {\n\t\tthis._selectedWeek = value;\n\t\tthis.selectedWeekChange.emit(this._selectedWeek);\n\t}\n\n\tpublic weeks: Array<Week> = [];\n\tpublic months: Array<Month> = [];\n\tpublic isOpened = false;\n\tpublic monthNames = [];\n\tpublic daysNames = [];\n\n\tconstructor(private i18nService: I18nService) {\n\t\tconst year = new Date();\n\t\tfor (let i = 1; i <= 12; i++) {\n\t\t\tconst month = this.i18nService.formatMonthAndYear(new Date(i + '/01/' + year.getFullYear()))\n\t\t\t\t.split(',');\n\t\t\tthis.monthNames.push(month[0]);\n\t\t}\n\t\tthis.daysNames.push(this.i18nService.instant('COMMON_SUNDAY'));\n\t\tthis.daysNames.push(this.i18nService.instant('COMMON_MONDAY'));\n\t\tthis.daysNames.push(this.i18nService.instant('COMMON_TUESDAY'));\n\t\tthis.daysNames.push(this.i18nService.instant('COMMON_WEDNESDAY'));\n\t\tthis.daysNames.push(this.i18nService.instant('COMMON_THURSDAY'));\n\t\tthis.daysNames.push(this.i18nService.instant('COMMON_FRIDAY'));\n\t\tthis.daysNames.push(this.i18nService.instant('COMMON_SATURDAY'));\n\t}\n\n\tpublic ngOnInit(): void {\n\t\tif (!this.currentDate) {\n\t\t\tthis.currentDate = new Date();\n\t\t}\n\t\tthis.getMonths();\n\t}\n\n\tpublic onClicked(e) {\n\t\tthis.isOpened = true;\n\t}\n\n\tpublic hideSelector() {\n\t\tthis.isOpened = false;\n\t}\n\n\tpublic getMonths() {\n\t\tthis.months = [];\n\t\tconst month = this.currentDate.getMonth();\n\t\tconst year = this.currentDate.getFullYear();\n\t\tfor (let i = 0; i <= 11; i++) {\n\t\t\tconst dateStart = new Date(year, i, 1, 0, 0, 0, 0);\n\t\t\tconst dateEnd = new Date(year, i + 1, 0);\n\t\t\tif (this.checkDateIntoIntervals(dateStart) || this.checkDateIntoIntervals(dateEnd)) {\n\t\t\t\tconst isActive = (i === month);\n\t\t\t\tthis.months.push({month: i, year: year, text: this.monthNames[i], isActive: isActive});\n\t\t\t}\n\t\t}\n\t\tthis.getWeeks();\n\t}\n\n\tpublic getWeeks() {\n\t\tthis.weeks = [];\n\t\tconst monthActive = this.months.filter(x => x.month === this.currentDate.getMonth())[0];\n\t\tconst weekInfo = this.getWeeksInMonth(monthActive.month, monthActive.year);\n\t\tconst week = this.getWeek(this.currentDate.getFullYear(), this.currentDate.getMonth(), this.currentDate.getDate(), true);\n\t\tfor (let i = 0; i < weekInfo.length - 1; i++) {\n\t\t\tlet isActive = false;\n\t\t\tconst dateStart = new Date(monthActive.year, monthActive.month, weekInfo[i].start, 0, 0, 0, 0);\n\t\t\tconst dateEnd = new Date(monthActive.year, monthActive.month, weekInfo[i].end, 0, 0, 0, 0);\n\t\t\tif (this.checkDateIntoIntervals(dateStart) || this.checkDateIntoIntervals(dateEnd)) {\n\t\t\t\tconst text = this.i18nService.instant('COMMON_WEEK') + ' ' + weekInfo[i].number + ': ' + this.daysNames[dateStart.getDay()] + ' ' + weekInfo[i].start + ' ' + this.i18nService.instant('COMMON_TO') + ' ' + this.daysNames[dateEnd.getDay()] + ' ' + weekInfo[i].end;\n\t\t\t\tif (weekInfo[i].number === week) {\n\t\t\t\t\tisActive = true;\n\t\t\t\t}\n\t\t\t\tconst weekObj: Week = new Week(weekInfo[i].number, text, weekInfo[i].start, monthActive.month, monthActive.year, isActive);\n\t\t\t\tthis.weeks.push(weekObj);\n\t\t\t\tif (isActive) {\n\t\t\t\t\tthis.selectedWeek = weekObj;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\tpublic onClickedWeek(week: Week) {\n\t\tthis.currentDate = new Date(week.year, week.month, week.day);\n\t\tthis.hideSelector();\n\t\tthis.getWeeks();\n\t}\n\n\tpublic onClickedMonth(month: Month) {\n\t\tthis.currentDate = new Date(month.year, month.month, 1);\n\t\tthis.getMonths();\n\t}\n\n\tpublic addYear(num: number) {\n\t\tconst newDate = new Date(this.currentDate.getFullYear() + (num), this.currentDate.getMonth(), this.currentDate.getDate());\n\t\tif (this.checkDateIntoIntervals(newDate)) {\n\t\t\tthis.currentDate = newDate;\n\t\t\tthis.getMonths();\n\t\t}\n\t}\n\n\tpublic addMonth(num: number) {\n\t\tconst dateStart = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth() + (num), 1);\n\t\tconst dateEnd = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth() + 1 + (num), 0);\n\t\tif (this.checkDateIntoIntervals(dateStart) || this.checkDateIntoIntervals(dateEnd)) {\n\t\t\tthis.currentDate = dateStart;\n\t\t\tthis.getMonths();\n\t\t}\n\t}\n\n\tpublic checkDateIntoIntervals(date: Date) {\n\t\tif (this.minDate && this.maxDate) {\n\t\t\tif (date >= this.minDate && date <= this.maxDate) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (this.minDate) {\n\t\t\tif (date >= this.minDate) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (this.maxDate) {\n\t\t\tif (date <= this.maxDate) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// TODO: Move to Translate Library\n\tpublic getWeeksInMonth(monthActual: number, yearActual: number) {\n\t\tconst firstDate = new Date(yearActual, monthActual, 1);\n\t\tconst lastDate = new Date(yearActual, monthActual + 1, 0);\n\t\tconst numDays = lastDate.getDate();\n\t\tconst weeks = [];\n\t\tlet endDay = 7 - firstDate.getDay(), startDay = 1;\n\t\tif (firstDate.getDay() === 0) {\n\t\t\tendDay = 1;\n\t\t} else {\n\t\t\tendDay = 7 - firstDate.getDay() + 1;\n\t\t}\n\t\twhile (startDay <= numDays) {\n\t\t\tif (startDay === 1) {\n\t\t\t\tweeks.push({start: startDay, end: endDay, number: this.getWeek(yearActual, monthActual, startDay, true)});\n\t\t\t}\n\t\t\tstartDay = endDay + 1;\n\t\t\tendDay = endDay + 7;\n\t\t\tendDay = startDay === 1 && endDay === 8 ? 1 : endDay;\n\t\t\tif (endDay > numDays) {\n\t\t\t\tendDay = numDays;\n\t\t\t}\n\t\t\tweeks.push({start: startDay, end: endDay, number: this.getWeek(yearActual, monthActual, startDay, true)});\n\t\t}\n\t\treturn weeks;\n\t}\n\n\t// TODO: Move to Translate Library\n\tpublic getWeek(yearActual, monthActual, dayActual, isGregorian) {\n\t\tmonthActual += 1; // use 1-12\n\t\tconst binaryMod = Math.floor((14 - (monthActual)) / 12); // Only can have as result 1 or 0\n\t\tconst yearValue = yearActual + 4800 - binaryMod;\n\t\tconst monthValue = (monthActual) + (12 * binaryMod) - 3;\n\t\t// Find JulianDay\n\t\tlet julianday = 0;\n\t\tif (isGregorian) {\n\t\t\tjulianday = dayActual + Math.floor(((153 * monthValue) + 2) / 5) +\n\t\t\t\t(365 * yearValue) + Math.floor(yearValue / 4) - Math.floor(yearValue / 100) +\n\t\t\t\tMath.floor(yearValue / 400) - 32045;  // (gregorian calendar)\n\t\t} else {\n\t\t\tjulianday = (dayActual + 1) + Math.round(((153 * monthValue) + 2) / 5) + (365 + yearValue) +\n\t\t\t\tMath.round(yearValue / 4) - 32083;    // (julian calendar)\n\t\t}\n\t\t// now calc weekNumber according to Julian Day\n\t\tconst d4 = (julianday + 31741 - (julianday % 7)) % 146097 % 36524 % 1461;\n\t\tconst l = Math.floor(d4 / 1460);\n\t\tconst totalDays = ((d4 - l) % 365) + l;\n\t\tconst weekNumber = Math.floor(totalDays / 7) + 1;\n\t\treturn weekNumber;\n\t}\n}\n","<div class=\"dropdown slab-combobox slab-week-selector d-flex w-100\" [ngClass]=\"{'disabled': disabled}\">\n    <div class=\"slab-flex-1 d-flex dropdown-toggle slab-dropdown-toogle\">\n        <input #input type=\"text\" class=\"slab-flex-1 d-flex slab-combo-input\" [disabled]=\"disabled\" [(ngModel)]=\"this.selectedWeek.text\"\n               (click)=\"onClicked($event)\"/>\n        <button #combobutton type=\"button\" class=\"slab-combo-button slab-combo-button-icon\" [disabled]=\"disabled\" (click)=\"onClicked($event)\"></button>\n    </div>\n    <div *ngIf=\"isOpened\" class=\"slab-week-selector-dropdown\" [ngClass]=\"{'disabled': disabled}\" (mouseleave)=\"hideSelector()\">\n        <div class=\"header-selector\">\n            <systelab-calendar-header [currentDate]=\"currentDate\" (previousYear)=\"addYear(-1)\" (previousMonth)=\"addMonth(-1)\" (nextMonth)=\"addMonth(1)\" (nextYear)=\"addYear(1)\">\n            </systelab-calendar-header>\n        </div>\n        <div class=\"box\">\n            <ul>\n                @for (week of weeks; track week) {\n                <li [class.active]=\"week.isActive\" (click)=\"onClickedWeek(week)\">\n                    {{week.text}}\n                </li>\n                }\n            </ul>\n        </div>\n        <div class=\"box\">\n            <ul>\n                @for (month of months; track month) {\n                    <li [class.active]=\"month.isActive\" (click)=\"onClickedMonth(month)\">\n                        {{month.text}}\n                    </li>\n                }\n            </ul>\n        </div>\n    </div>\n</div>\n","import { OnInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\n\nexport class Month {\n\tconstructor(public month: number, public text: string, public year: number, public isActive: boolean) {\n\t}\n}\n\n@Component({\n\tselector:    'systelab-month-selector',\n\ttemplateUrl: './month-selector.component.html'\n})\nexport class MonthSelectorComponent implements OnInit {\n\n\t@Input() public maxDate: Date;\n\t@Input() public minDate: Date;\n\t@Input() public currentDate: Date;\n\t@Input() public disabled: boolean;\n\n\tprivate _selectedMonth: Month;\n\t@Input()\n\tget selectedMonth(): Month {\n\t\treturn this._selectedMonth;\n\t}\n\n\t@Output() public selectedMonthChange = new EventEmitter();\n\n\tset selectedMonth(value: Month) {\n\t\tthis._selectedMonth = value;\n\t\tthis.selectedMonthChange.emit(this._selectedMonth);\n\t}\n\n\tpublic months: Array<Month> = [];\n\tpublic isOpened = false;\n\tpublic monthNames = [];\n\n\tconstructor(private i18nService: I18nService) {\n\t\tif (this.currentDate) {\n\t\t\tthis.setMonthsNames(this.currentDate.getFullYear());\n\t\t} else {\n\t\t\tthis.setMonthsNames(new Date().getFullYear());\n\t\t}\n\t\tthis.selectedMonth = new Month(0, '', 0, false);\n\t}\n\n\tpublic ngOnInit(): void {\n\t\tif (!this.currentDate) {\n\t\t\tthis.currentDate = new Date();\n\t\t}\n\t\tthis.getMonths();\n\t}\n\n\tpublic setMonthsNames(year: number) {\n\t\tthis.monthNames = [];\n\n\t\tfor (let i = 0; i <= 11; i++) {\n\t\t\tconst month = this.i18nService.formatMonthAndYear(new Date(year, i, 1));\n\t\t\tthis.monthNames.push(month);\n\t\t}\n\t}\n\n\tpublic onClicked(e) {\n\t\tthis.isOpened = true;\n\t}\n\n\tpublic hideSelector() {\n\t\tthis.isOpened = false;\n\t}\n\n\tpublic getMonths() {\n\t\tthis.months = [];\n\t\tconst month = this.currentDate.getMonth();\n\t\tconst year = this.currentDate.getFullYear();\n\t\tfor (let i = 0; i <= 11; i++) {\n\t\t\tconst dateStart = new Date(year, i, 1, 0, 0, 0, 0);\n\t\t\tconst dateEnd = new Date(year, i + 1, 0);\n\t\t\tif (this.checkDateIntoIntervals(dateStart) || this.checkDateIntoIntervals(dateEnd)) {\n\t\t\t\tconst isActive = (i === month);\n\t\t\t\tconst monthObj: Month = new Month(i, this.monthNames[i], year, isActive);\n\t\t\t\tthis.months.push(monthObj);\n\t\t\t\tif (isActive) {\n\t\t\t\t\tthis.selectedMonth = monthObj;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addYear(num: number) {\n\t\tconst date = new Date(this.currentDate.getFullYear() + (num), this.currentDate.getMonth(), this.currentDate.getDate());\n\t\tif (this.checkDateIntoIntervals(date)) {\n\t\t\tthis.currentDate = date;\n\t\t\tthis.setMonthsNames(this.currentDate.getFullYear());\n\t\t\tthis.getMonths();\n\t\t}\n\t}\n\n\tpublic checkDateIntoIntervals(date: Date) {\n\t\tif (this.minDate && this.maxDate) {\n\t\t\treturn date >= this.minDate && date <= this.maxDate;\n\t\t} else if (this.minDate) {\n\t\t\treturn date >= this.minDate;\n\t\t} else if (this.maxDate) {\n\t\t\treturn date <= this.maxDate;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic onClickedMonth(month: Month) {\n\t\tthis.currentDate = new Date(month.year, month.month, 1);\n\t\tthis.hideSelector();\n\t\tthis.getMonths();\n\t}\n}\n","<div class=\"dropdown slab-combobox slab-month-selector d-flex w-100\" [ngClass]=\"{'disabled': disabled}\">\n    <div class=\"slab-flex-1 d-flex dropdown-toggle slab-dropdown-toogle\">\n        <input #input type=\"text\" class=\"slab-flex-1 d-flex slab-combo-input\" [readOnly]=\"true\" [disabled]=\"disabled\" [(ngModel)]=\"selectedMonth.text\"\n               (click)=\"onClicked($event)\"/>\n        <button #combobutton type=\"button\" class=\"slab-combo-button slab-combo-button-icon\" [disabled]=\"disabled\" (click)=\"onClicked($event)\" [tabIndex]=\"-1\"></button>\n    </div>\n    <div *ngIf=\"isOpened\" class=\"slab-month-selector-dropdown\" [ngClass]=\"{'disabled': disabled}\" (mouseleave)=\"hideSelector()\">\n        <div class=\"header-selector\">\n            <systelab-calendar-header [currentDate]=\"currentDate\" (previousYear)=\"addYear(-1)\"\n                                      (nextYear)=\"addYear(1)\">\n            </systelab-calendar-header>\n        </div>\n        <div class=\"box\">\n            <ul>\n                @for (month of months; track month.month) {\n                    <li [class.active]=\"month.isActive\" (click)=\"onClickedMonth(month)\">\n                        {{month.text}}\n                    </li>\n                }\n            </ul>\n        </div>\n    </div>\n</div>\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { pairwise, switchMap, takeUntil } from 'rxjs/operators';\n\nexport class Point {\n\tconstructor(public x: number, public y: number) {\n\t}\n}\n\n@Component({\n\tselector:    'systelab-signature-canvas',\n\ttemplateUrl: './signature-canvas.component.html'\n})\nexport class SignatureCanvasComponent implements AfterViewInit {\n\n\tprivate _code: string;\n\tprivate _signature: string;\n\n\t@ViewChild('signature', {static: false}) sign: ElementRef;\n\t@ViewChild('img', {static: false}) img: ElementRef;\n\n\tpublic downPath = '';\n\tpublic href = '';\n\tpublic verificationActive = false;\n\tpublic isCanvasEmpty = true;\n\n\tprivate cx: CanvasRenderingContext2D;\n\n\t@Input() public width = 400;\n\t@Input() public height: number;\n\t@Input() public withCodeVerification: boolean;\n\t@Input() public isDownloadable: boolean;\n\t@Input() public isIncorrectCode: boolean;\n\n\t@Input()\n\tget signature(): string {\n\t\treturn this._signature;\n\t}\n\n\t@Output() public signatureChange = new EventEmitter();\n\n\tset signature(value: string) {\n\t\tthis._signature = value;\n\t\tthis.signatureChange.emit(this._signature);\n\t}\n\n\t@Output() finish = new EventEmitter();\n\n\tpublic dofinish() {\n\t\tthis.finish.emit();\n\t}\n\n\t@Input()\n\tget code(): string {\n\t\treturn this._code;\n\t}\n\n\t@Output() codeChange = new EventEmitter();\n\n\tset code(value: string) {\n\t\tthis._code = value;\n\t\tthis.codeChange.emit(this._code);\n\t}\n\n\tpublic ngAfterViewInit() {\n\t\tthis.configureCanvas();\n\t}\n\n\tpublic configureCanvas() {\n\t\tconst canvas: HTMLCanvasElement = this.sign.nativeElement;\n\t\tif (canvas) {\n\t\t\tthis.cx = canvas.getContext('2d');\n\t\t\tcanvas.width = this.width;\n\t\t\tcanvas.height = this.height;\n\t\t\tthis.cx.lineWidth = 4;\n\t\t\tthis.cx.lineCap = 'round';\n\t\t\tthis.cx.strokeStyle = '#000000';\n\t\t\tthis.captureEvents(canvas);\n\t\t}\n\t}\n\n\tpublic captureEvents(canvas: HTMLCanvasElement) {\n\t\tfromEvent(canvas, 'mousedown')\n\t\t\t.pipe(switchMap((e) => {\n\t\t\t\treturn fromEvent(canvas, 'mousemove').pipe(\n\t\t\t\t\t\ttakeUntil(fromEvent(canvas, 'mouseup')),\n\t\t\t\t\t\ttakeUntil(fromEvent(canvas, 'mouseleave')), pairwise());\n\t\t\t}))\n\t\t\t.subscribe((res: [MouseEvent, MouseEvent]) => {\n\t\t\t\tconst rect = canvas.getBoundingClientRect();\n\t\t\t\tconst prevPos = new Point(res[0].clientX - rect.left, res[0].clientY - rect.top);\n\t\t\t\tconst currentPos = new Point(res[1].clientX - rect.left, res[1].clientY - rect.top);\n\t\t\t\tthis.draw(prevPos, currentPos);\n\t\t\t\tif (this.isCanvasEmpty) {\n\t\t\t\t\tthis.isCanvasEmpty = false;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tpublic draw(previousPoint: Point, currentPoint: Point) {\n\t\tif (!this.cx) {\n\t\t\treturn;\n\t\t}\n\t\tthis.cx.beginPath();\n\t\tif (previousPoint) {\n\t\t\tthis.cx.moveTo(previousPoint.x, previousPoint.y);\n\t\t\tthis.cx.lineTo(currentPoint.x, currentPoint.y);\n\t\t\tthis.cx.stroke();\n\t\t}\n\t}\n\n\tpublic downloadImage() {\n\t\tconst canvas: HTMLCanvasElement = this.sign.nativeElement;\n\t\tconst dataURL = canvas.toDataURL('image/png');\n\t\tthis.href = dataURL;\n\t\tconst date = new Date();\n\t\tthis.downPath = date + 'signature.png';\n\t}\n\n\tpublic cleanCanvas() {\n\t\tthis.isCanvasEmpty = true;\n\t\tthis.cx.clearRect(0, 0, this.width, this.height);\n\t}\n\n\tpublic finishDrawing() {\n\t\tconst canvas: HTMLCanvasElement = this.sign.nativeElement;\n\t\tconst dataURL = canvas.toDataURL('image/png');\n\t\tthis.signature = dataURL;\n\t\tif (this.withCodeVerification) {\n\t\t\tcanvas.setAttribute('style', 'display:none;');\n\t\t\tthis.verificationActive = true;\n\t\t} else {\n\t\t\tthis.finish.emit();\n\t\t}\n\t}\n\n\tpublic returnCanvas() {\n\t\tconst canvas: HTMLCanvasElement = this.sign.nativeElement;\n\t\tcanvas.setAttribute('style', 'display:block;');\n\t\tthis.verificationActive = false;\n\t}\n}\n","<div>\n    <div class=\"mb-2\" *ngIf=\"!verificationActive\">\n        {{ 'SIGN_TEXT_EXPLANATION' | translate | async }}\n    </div>\n    <canvas class=\"border rounded\" #signature></canvas>\n    <div class=\"text-right mt-2\" [style.width.px]=\"width\" *ngIf=\"!verificationActive\">\n        <systelab-button class=\"mr-1\" (click)=\"cleanCanvas()\">{{ 'SIGN_CLEAN' | translate | async }}</systelab-button>\n        <a href=\"#\" *ngIf=\"isDownloadable\" class=\"btn btn-outline-primary mr-1\" [attr.download]=\"downPath\" [attr.href]=\"href\" id=\"btn-download\"\n            (click)=\"downloadImage()\">{{ 'SIGN_DOWNLOAD' | translate | async }}</a>\n        <systelab-button type=\"primary\" [disabled]=\"isCanvasEmpty\" (click)=\"finishDrawing()\">{{ 'SIGN_FINISH' | translate | async }}</systelab-button>\n\n    </div>\n    <div class=\"align-content-center p-3\" *ngIf=\"verificationActive\" [style.width.px]=\"width\" [style.height.px]=\"height\">\n        <div [style.width.px]=\"width - 50\" [style.height.px]=\"height - 50\">\n            <div class=\"mb-2\">{{ 'SIGN_VERIFICATION_TEXT' | translate | async }}</div>\n            <form novalidate class=\"w-100\">\n                <input type=\"password\" class=\"w-100 form-control\" [(ngModel)]=\"code\" [class.slab-error]=\"inputCode.invalid && inputCode.touched || isIncorrectCode\"\n                    id=\"inputCode\" placeholder=\"{{ 'SIGNATURE_CODE' | translate | async }}\" #inputCode=\"ngModel\" name=\"inputCode\"\n                    (keyup.enter)=\"dofinish()\" required autocomplete=\"off\">\n                <systelab-button type=\"primary\" class=\"w-100 mt-4\" [disabled]=\"inputCode.invalid\" (click)=\"dofinish()\">{{ 'SIGN_VERIFY' | translate | async }}\n                </systelab-button>\n                <div *ngIf=\"isIncorrectCode\" class=\"alert alert-danger alert-sm text-center mt-3\">\n                    <a>{{ 'SIGN_ERROR_ENTERED_CODE' | translate | async }}</a>\n                </div>\n                <div class=\"mt-3 text-center\">\n                    <systelab-button type=\"link\" (click)=\"returnCanvas()\">{{ 'SIGN_RETURN' | translate | async }}</systelab-button>\n                </div>\n            </form>\n        </div>\n    </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-percentage-circle',\n\ttemplateUrl: 'percentage-circle.component.html'\n})\nexport class PercentageCircleComponent {\n\n\t@Input() public value = 0;\n\t@Input() public text = '';\n\t@Input() public color;\n\n\n}\n","<div class=\"percentage-circle\" [attr.data-percentage]=\"value\">\n                <span class=\"percentage-circle-left\">\n                    <span class=\"percentage-circle-bar\" [style.border-color]=\"color\"></span>\n                </span>\n                <span class=\"percentage-circle-right\">\n                    <span class=\"percentage-circle-bar\" [style.border-color]=\"color\"></span>\n                </span>\n    <div class=\"percentage-circle-value\">\n        <div>\n            {{value}}%<br>\n            <span>{{text}}</span>\n        </div>\n    </div>\n</div>","import {Injectable} from '@angular/core';\n\n@Injectable()\nexport class LoadingService {\n\n\tprotected loadingList: boolean[] = [];\n\n\tpublic setLoading() {\n\t\tthis.loadingList.push(true);\n\t}\n\n\tpublic removeLoading() {\n\t\tif (this.loadingList.length > 0) {\n\t\t\tthis.loadingList.pop();\n\t\t}\n\t}\n\n\tpublic isLoading(): boolean {\n\t\treturn this.loadingList.length > 0;\n\t}\n\n}\n","import { AbstractComboBox } from '../combobox/abstract-combobox.component';\nimport { AfterViewInit, ChangeDetectorRef, Component, Input, Renderer2 } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\n\nclass Element {\n\tconstructor(public id: string, public description: string) {\n\n\t}\n}\n\n@Component({\n\tselector:    'systelab-time-unit-select',\n\ttemplateUrl: '../combobox/abstract-combobox.component.html'\n})\n\nexport class TimeUnitSelectComponent extends AbstractComboBox<Element> implements AfterViewInit {\n\n\t@Input() public showEmptyOption = false;\n\t@Input() public showMinutesOption = false;\n\t@Input() public showHoursOption = false;\n\t@Input() public showWeeksOption = false;\n\n\tconstructor(public override myRenderer: Renderer2, public override chRef: ChangeDetectorRef, public i18nService: I18nService) {\n\t\tsuper(myRenderer, chRef);\n\t}\n\n\tpublic ngAfterViewInit(): void {\n\t\tconst elements = new Array<Element>();\n\t\tif (this.showEmptyOption) {\n\t\t\telements.push(new Element('', ''));\n\t\t}\n\t\tif (this.showMinutesOption) {\n\t\t\telements.push(new Element(this.i18nService.instant('COMMON_MINUTES'), this.i18nService.instant('COMMON_MINUTES')));\n\t\t}\n\t\tif (this.showHoursOption) {\n\t\t\telements.push(new Element(this.i18nService.instant('COMMON_HOURS'), this.i18nService.instant('COMMON_HOURS')));\n\t\t}\n\t\telements.push(new Element(this.i18nService.instant('COMMON_DAYS'), this.i18nService.instant('COMMON_DAYS')));\n\t\tif (this.showWeeksOption) {\n\t\t\telements.push(new Element(this.i18nService.instant('COMMON_WEEKS'), this.i18nService.instant('COMMON_WEEKS')));\n\t\t}\n\t\telements.push(new Element(this.i18nService.instant('COMMON_MONTHS'), this.i18nService.instant('COMMON_MONTHS')));\n\t\telements.push(new Element(this.i18nService.instant('COMMON_YEARS'), this.i18nService.instant('COMMON_YEARS')));\n\n\t\tif (!this.id) {\n\t\t\tthis._id = '';\n\t\t}\n\n\t\tthis.values = elements;\n\t}\n\n\tgetInstance(): Element {\n\t\treturn new Element('', '');\n\t}\n\n\tgetDescriptionField(): string {\n\t\treturn 'description';\n\t}\n\n\tgetCodeField(): string {\n\t\treturn '';\n\t}\n\n\tgetIdField(): string {\n\t\treturn 'id';\n\t}\n\n}\n","import { Component } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\n\n@Component({\n\tselector:    'systelab-checkbox-cell',\n\ttemplateUrl: 'checkbox-cell-renderer.component.html',\n\tstyleUrl: 'checkbox-cell-renderer.component.scss'\n})\nexport class CheckboxCellRendererComponent implements AgRendererComponent {\n\tprivate params: any;\n\n\tpublic isCheckboxActive: boolean;\n\tpublic hideCheckbox = false;\n\tpublic showDisabled = false;\n\tpublic id: string;\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t\tthis.showDisabled = params.showDisabled;\n\t\tif (params.data) {\n\t\t\tthis.id = params.data[params.colDef.elementID];\n\t\t\tthis.isCheckboxActive = params.data[this.params.colDef.field];\n\t\t\tif (this.params.colDef.hideCheckbox) {\n\t\t\t\tthis.hideCheckbox = this.params.colDef.hideCheckbox(this.params.data);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\tif (params.value != null) {\n\t\t\tthis.isCheckboxActive = params.value;\n\t\t}\n\t\treturn true;\n\t}\n}\n","<div class=\"h-100 w-100 ag-checkbox-renderer-click-wrapper\"></div>\n<div class=\"ag-selection-checkbox ag-selection-checkbox-cell-renderer h-100 w-100\">\n    <div class=\"ag-labeled ag-label-align-right ag-checkbox ag-input-field h-100\">\n        <label class=\"ag-input-field-label ag-label ag-hidden ag-checkbox-label\" for=\"{{id}}-active\"></label>\n        <div class=\"ag-wrapper ag-input-wrapper ag-checkbox-input-wrapper ag-checkbox-input-wrapper-cell-editor\"\n             [ngClass]=\"{'ag-checked': isCheckboxActive, 'slab-inactive-checkbox': showDisabled}\">\n            <input class=\"ag-input-field-input ag-checkbox-input\"\n                   type=\"checkbox\"\n                   id=\"{{id}}-active\" [checked]=\"isCheckboxActive\"\n                   readonly>\n        </div>\n    </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport class WizardStep {\n\tstep: number;\n\tdescription: string;\n\toptionalText?: string;\n\tvisited: boolean;\n}\n\n@Component({\n\tselector:    'systelab-wizard-steps',\n\ttemplateUrl: './wizard-steps.component.html'\n})\nexport class WizardStepsComponent {\n\n\t@Input() steps: Array<WizardStep> = [];\n\t@Input() roundedStep = true;\n\t@Input() allowNavigation = false;\n\tprivate _currentStep = 1;\n\t@Input()\n\tget currentStep(): number {\n\t\treturn this._currentStep;\n\t}\n\n\t@Output() currentStepChange = new EventEmitter();\n\n\tset currentStep(value: number) {\n\t\tthis._currentStep = value;\n\t\tthis.currentStepChange.emit(this._currentStep);\n\t}\n\n\t@Output() action = new EventEmitter();\n\n\tpublic doAction(step) {\n\t\tthis.action.emit(step);\n\t}\n\n\tconstructor() {\n\t}\n}\n","<div class=\"slab-steps-wizard\">\n    <div class=\"slab-row\">\n        @for (step of steps; track step.step; let first = $first; let last = $last;) {\n            <div class=\"slab-step\">\n                <div class=\"slab-step-button-container\">\n                    <div class=\"step-line step-line-left\" [class.slab-step-visited]=\"step.step < currentStep && step.visited || step.step == currentStep\"\n                         [class.slab-step-first]=\"first\">\n                    </div>\n                    <button (click)=\"doAction(step)\" [disabled]=\"(!allowNavigation  && step.step < currentStep) || step.step > currentStep\" class=\"btn cursor\"\n                            [class.btn-outline-primary]=\"step.step > currentStep && !step.visited\"\n                            [class.btn-primary]=\"step.step < currentStep && step.visited || step.step == currentStep\"\n                            [class.slab-step-round]=\"roundedStep\">{{step.step}}</button>\n                    <div class=\"step-line step-line-right\" [class.slab-step-visited]=\"step.step < currentStep && step.visited\"\n                         [class.slab-step-last]=\"last\">\n                    </div>\n                </div>\n                <p class=\"slab-step-text\">{{step.description}}</p>\n                <p *ngIf=\"step.optionalText\" class=\"slab-step-optional-text\">{{step.optionalText}}</p>\n\n            </div>\n        }\n    </div>\n</div>\n\n","import { Component } from '@angular/core';\nimport { AgEditorComponent } from 'ag-grid-angular';\nimport { TouchSpinValues } from '../../../spinner/touch.spin-values';\n\n@Component({\n\tselector:    'systelab-spinner-cell-editor',\n\ttemplateUrl: 'spinner-cell-editor.component.html'\n})\nexport class SpinnerCellEditorComponent implements AgEditorComponent {\n\tpublic params: any;\n\n\tpublic id: string;\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t}\n\n\tpublic getValue(): any {\n\t\treturn new TouchSpinValues((<TouchSpinValues>this.params.value).value, (<TouchSpinValues>this.params.value).min,\n\t\t\t(<TouchSpinValues>this.params.value).max, (<TouchSpinValues>this.params.value).step, (<TouchSpinValues>this.params.value).isDecimal);\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n}\n","<div class=\"text-center d-flex align-items-center\">\n    <systelab-spinner class=\"mx-1 w-100\" style=\"margin-top:1px;\" [isInGrid]=\"true\"\n                      [spinValues]=\"params.value\"></systelab-spinner>\n</div>\n","import { Component } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\n\n@Component({\n\tselector: 'systelab-spinner-cell-renderer',\n\ttemplate: `<span class=\"slab-flex-1 text-center\">{{params.value?.value}}</span>`\n})\nexport class SpinnerCellRendererComponent implements AgRendererComponent {\n\tpublic params: any;\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn false;\n\t}\n}\n","import {Component} from '@angular/core';\nimport {AgEditorComponent} from 'ag-grid-angular';\n\n@Component({\n\tselector: 'systelab-input-cell-editor',\n\ttemplateUrl: 'input-cell-editor.component.html'\n})\nexport class InputCellEditorComponent implements AgEditorComponent {\n\tpublic params: any;\n\n\tpublic id: string;\n\tpublic isEditable = true;\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t}\n\n\tpublic getValue(): any {\n\t\treturn this.params.value;\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n}\n","<input title=\"input-cell\" type=\"text\" class=\"w-100 h-100 border-0 bg-transparent\" [disabled]=\"!isEditable\"\n       [(ngModel)]=\"params.value\">\n","import { AfterViewInit, Component } from '@angular/core';\nimport { AgEditorComponent } from 'ag-grid-angular';\n\n@Component({\n\tselector:    'systelab-checkbox-cell',\n\ttemplateUrl: 'checkbox-cell-editor.component.html'\n})\nexport class CheckboxCellEditorComponent implements AgEditorComponent, AfterViewInit {\n\tprivate params: any;\n\n\tpublic isCheckboxActive: boolean;\n\tpublic id: string;\n\tprivate singleClickEdit: boolean;\n\n\tpublic ngAfterViewInit() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (this.singleClickEdit && !this.params.context?.componentParent.startCellEditorWithTab) {\n\t\t\t\t\tthis.isCheckboxActive = !this.isCheckboxActive;\n\t\t\t\t\tthis.params.stopEditing();\n\t\t\t\t}\n\t\t\t}, 0);\n\t}\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t\tif (this.params.column.colDef['elementID']) {\n\t\t\tthis.id = this.params.node.data[this.params.column.colDef['elementID']];\n\t\t}\n\t\tthis.isCheckboxActive = this.params.value;\n\t\tthis.singleClickEdit = !this.params.hasOwnProperty('singleClickEdit') || this.params.singleClickEdit;\n\t}\n\n\tpublic getValue(): any {\n\t\tthis.params.value = this.isCheckboxActive;\n\t\treturn this.isCheckboxActive;\n\t}\n\n\tpublic doOnChange() {\n\t\tthis.isCheckboxActive = !this.isCheckboxActive;\n\t}\n\n}\n","<div class=\"ag-selection-checkbox ag-selection-checkbox-cell-renderer h-100 w-100\">\n    <div class=\"ag-labeled ag-label-align-right ag-checkbox ag-input-field h-100\">\n        <label class=\"ag-input-field-label ag-label ag-hidden ag-checkbox-label\" for=\"{{id}}-active\"></label>\n        <div class=\"ag-wrapper ag-input-wrapper ag-checkbox-input-wrapper ag-checkbox-input-wrapper-cell-editor\"\n             [ngClass]=\"{'ag-checked': isCheckboxActive}\">\n            <input class=\"ag-input-field-input ag-checkbox-input\"\n                   type=\"checkbox\"\n                   id=\"{{id}}-active\" [checked]=\"isCheckboxActive\"\n                   (change)=\"doOnChange()\">\n        </div>\n    </div>\n</div>\n","import {Component} from '@angular/core';\nimport {AgEditorComponent} from 'ag-grid-angular';\n\n@Component({\n\tselector: 'systelab-decimal-input-cell-editor',\n\ttemplateUrl: 'decimal-input-cell-editor.component.html'\n})\nexport class DecimalInputCellEditorComponent implements AgEditorComponent {\n\tpublic params: any;\n\n\tpublic decimalValue: number;\n\tpublic id: string;\n\tpublic isEditable = true;\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t\tthis.decimalValue = this.params.value;\n\t}\n\n\tpublic getValue(): any {\n\t\treturn this.decimalValue;\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n}\n","<input title=\"input-cell\" type=\"number\" step=\"any\" class=\"w-100 h-100 border-0 bg-transparent\"\n       [disabled]=\"!isEditable\"\n       [(ngModel)]=\"decimalValue\">","import { Component } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\nimport { TreeListBoxElement } from '../abstract-api-tree-listbox.component';\n\n@Component({\n\tselector:    'abstract-listbox-renderer',\n\ttemplateUrl: 'abstract-tree-listbox-renderer.component.html'\n})\nexport class AbstractTreeListboxRendererComponent implements AgRendererComponent {\n\tpublic params: any;\n\n\tpublic isCheckboxActive: boolean;\n\tpublic id: string;\n\tpublic description: string;\n\tpublic level: number;\n\tpublic isMultipleSelection = false;\n\tpublic checkId: string = (Math.floor(Math.random() * (999999999999 - 1))).toString();\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t\tif (params.data) {\n\t\t\tconst listBoxElement: TreeListBoxElement<any> = params.data;\n\t\t\tif (listBoxElement.level === 0) {\n\t\t\t\tthis.id = listBoxElement.nodeData[params.level0IDField];\n\t\t\t\tthis.description = listBoxElement.nodeData[params.level0DescriptionField];\n\t\t\t} else {\n\t\t\t\tthis.id = listBoxElement.nodeData[params.level1IDField];\n\t\t\t\tthis.description = listBoxElement.nodeData[params.level1DescriptionField];\n\t\t\t}\n\t\t\tthis.isCheckboxActive = listBoxElement.selected;\n\t\t\tthis.level = listBoxElement.level;\n\t\t\tthis.isMultipleSelection = (<any>params).isMultipleSelection;\n\t\t}\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n\n\tpublic changeValue(): void {\n\t\tthis.params.changeFunction(this.params.data);\n\n\t}\n}\n","<div class=\"d-flex column\">\n    <div *ngIf=\"isMultipleSelection\">\n        <div class=\"slab-flex-1\" [style.marginLeft.px]=\"(level*20)+1\">\n            <input type=\"checkbox\" id=\"{{checkId}}-{{level}}-{{id}}\" [(ngModel)]=\"params.data.selected\"\n                   [disabled]=\"params.isDisabled\"\n                   (change)=\"changeValue()\">\n            <label for=\"{{checkId}}-{{level}}-{{id}}\">{{description}}</label>\n        </div>\n    </div>\n    <div *ngIf=\"!isMultipleSelection\" class=\"d-flex slab-flex-1\">\n        <div class=\"slab-flex-1\" (click)=\"changeValue()\" [style.marginLeft.px]=\"(level*20)+1\">\n            <span>{{description}}</span>\n        </div>\n    </div>\n</div>\n","import { Directive, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { StylesUtilService } from '../utilities/styles.util.service';\nimport { ColDef, GetRowIdParams, GridOptions } from 'ag-grid-community';\nimport { AutosizeGridHelper, CalculatedGridState, initializeCalculatedGridState } from '../helper/autosize-grid-helper';\n\n@Directive()\nexport abstract class AbstractListBox<T> implements OnInit {\n\n\tpublic gridOptions: GridOptions;\n\t@ViewChild('hidden', {static: true}) public hiddenElement: ElementRef;\n\tpublic _values: Array<T>;\n\t@Input()\n\tset values(newValues: Array<T>) {\n\t\tthis._values = newValues;\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.setRowData(this._values);\n\t\t}\n\t}\n\n\tget values() {\n\t\treturn this._values;\n\t}\n\n\t@Input() public rowDrag = false;\n\t@Input() public isDisabled: boolean;\n\n\tpublic _selectedItem: T;\n\n\t@Input()\n\tset selectedItem(value: T) {\n\t\tthis._selectedItem = value;\n\t\tthis.selectItemInGrid();\n\t}\n\n\tget selectedItem() {\n\t\treturn this._selectedItem;\n\t}\n\n\t@Output() selectedItemChange = new EventEmitter<T>();\n\t@Output() public multipleSelectedIDListChange = new EventEmitter();\n\t@Output() public rowDragEnd = new EventEmitter();\n\n\t@Input() public selectFirstItem = false;\n\t@Input() public multipleSelection = false;\n\t@Input() public showAll = false;\n\t@Input() public hideChecks = false;\n\n\tprotected _multipleSelectedItemList: Array<T>;\n\n\tprivate calculatedGridState : CalculatedGridState = initializeCalculatedGridState();\n\tprivate scrollTimeout;\n\n\t@Input()\n\tset multipleSelectedItemList(value: Array<T>) {\n\t\tthis._multipleSelectedItemList = value;\n\t\tthis.selectItemInGrid();\n\t\tthis.multipleSelectedItemListChange.emit(this._multipleSelectedItemList);\n\t\tthis.multipleSelectedIDListChange.emit(this.selectionItemListToIDList());\n\t}\n\n\tget multipleSelectedItemList(): Array<T> {\n\t\treturn this._multipleSelectedItemList;\n\t}\n\n\t@Output() public multipleSelectedItemListChange = new EventEmitter();\n\n\tprotected constructor() {\n\t\t// This is intentional\n\t}\n\n\tprotected abstract getIdField(level?: number): string;\n\n\tprotected abstract getDescriptionField(level?: number): string;\n\n\tpublic abstract getInstance(): T;\n\n\tpublic ngOnInit() {\n\n\t\tconst rowHeight = StylesUtilService.getStyleValue(this.hiddenElement, 'line-height');\n\n\t\tthis.gridOptions = {};\n\n\t\tthis.gridOptions.columnDefs = this.getColumnDefsWithOptions();\n\n\t\tif (this.multipleSelection && !this.hideChecks) {\n\t\t\tthis.gridOptions.suppressRowClickSelection = true;\n\t\t\tthis.gridOptions.rowClassRules = {\n\t\t\t\t'ag-row-disabled': (params) => {\n\t\t\t\t\treturn this.isDisabled;\n\t\t\t\t},\n\t\t\t};\n\t\t} else {\n\t\t\tthis.gridOptions.suppressRowClickSelection = this.isDisabled;\n\t\t}\n\n\t\tthis.gridOptions.rowHeight = Number(rowHeight);\n\t\tthis.gridOptions.suppressDragLeaveHidesColumns = true;\n\t\tthis.gridOptions.suppressCellFocus = true;\n\t\tthis.gridOptions.enableRangeSelection = !this.isDisabled;\n\t\tthis.gridOptions.defaultColDef = {};\n\t\tthis.gridOptions.defaultColDef.resizable = false;\n\t\tthis.gridOptions.rowSelection = this.multipleSelection ? 'multiple' : 'single';\n\t\tthis.gridOptions.suppressRowDeselection = this.isDisabled;\n\n\t\tthis.gridOptions.context = {componentParent: this};\n\n\t\tthis.gridOptions.headerHeight = 0;\n\t\tthis.gridOptions.getRowId = (item: GetRowIdParams) => this.getRowNodeId(item)\n\t\t\t?.toString();\n\n\t\tthis.gridOptions.rowData = this.values;\n\n\t\tthis.gridOptions.enableBrowserTooltips = true;\n\t}\n\n\tprotected getRowNodeId(item: GetRowIdParams): string | number | undefined {\n\t\tif (item) {\n\t\t\tif (item[this.getIdField()] != null) {\n\t\t\t\treturn item[this.getIdField()];\n\t\t\t}\n\t\t\treturn item?.data[this.getIdField()] ?? '';\n\t\t}\n\t\treturn '';\n\t}\n\n\tprotected getColumnDefsWithOptions(): Array<any> {\n\n\t\tconst colDefs: Array<any> = [\n\t\t\t{\n\t\t\t\trowDrag: this.rowDrag,\n\t\t\t\tcolId:   this.getIdField(),\n\t\t\t\tfield:   this.getDescriptionField(),\n\t\t\t\ttooltipField: this.getDescriptionField()\n\t\t\t}\n\t\t];\n\n\t\tif (this.multipleSelection && !this.hideChecks) {\n\t\t\tcolDefs.unshift({\n\t\t\t\tcolId:             'selectCol',\n\t\t\t\theaderName:        '',\n\t\t\t\tcheckboxSelection: true,\n\t\t\t\twidth:             this.getCheckColumnWidth(),\n\t\t\t\tsuppressSizeToFit: true,\n\t\t\t\tresizable:         false,\n\t\t\t\tsuppressMovable:   true,\n\t\t\t\tpinned:            'left'\n\t\t\t});\n\t\t}\n\t\tthis.addSuppressSizeToFitToColumnsWithWidthDefined(colDefs);\n\n\t\treturn colDefs;\n\t}\n\n\tprotected getCheckColumnWidth(): number {\n\t\treturn 32;\n\t}\n\n\tpublic getAllFieldID(): number | string {\n\t\treturn 0;\n\t}\n\n\tpublic getAllFieldDescription(): string {\n\t\treturn 'All';\n\t}\n\n\tpublic cleanSelection() {\n\t\tthis.unselectAllNodes();\n\t}\n\n\tprotected addSuppressSizeToFitToColumnsWithWidthDefined(colDefs: ColDef[]) {\n\t\tcolDefs.forEach(function(columnDef: ColDef) {\n\t\t\tif (columnDef.width) {\n\t\t\t\tcolumnDef.suppressSizeToFit = true;\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic doGridReady(event: any) {\n\t\tthis.gridOptions.api.addEventListener('bodyScroll', this.onBodyScroll.bind(this));\n\t}\n\n\tprivate onBodyScroll(event: any): void {\n\t\tclearTimeout(this.scrollTimeout);\n\t\tthis.scrollTimeout = setTimeout(() => {\n\t\t\tthis.doAutoSizeManagement(event);\n\t\t}, 150);\n\t}\n\n\tprotected doAutoSizeManagement(event?: any) {\n\t\tAutosizeGridHelper.doAutoSizeManagement(this.calculatedGridState, this.gridOptions, event);\n\t}\n\n\tpublic doGridSizeChanged(event: any) {\n\t\tif (this.gridOptions.api) {\n\t\t\tthis.doAutoSizeManagement();\n\t\t}\n\t}\n\n\tpublic doClick(row: any) {\n\t\tif (!this.multipleSelection && !this.isDisabled) {\n\t\t\tthis.selectedItem = row.node.data;\n\t\t\tthis.selectedItemChange.emit(row.node.data);\n\t\t}\n\t}\n\n\t// overrides\n\tpublic onRowSelected(event: any) {\n\t\tif (this.multipleSelection) {\n\t\t\tif (!this.isDisabled && event.node && event.node.data && event.node.data[this.getIdField()] != null) {\n\t\t\t\tif (this.multipleSelectedItemList) {\n\t\t\t\t\tconst elementIndexInSelectedList: number = this.multipleSelectedItemList.findIndex((item) => {\n\t\t\t\t\t\treturn item[this.getIdField()] === event.node.data[this.getIdField()];\n\t\t\t\t\t});\n\t\t\t\t\tif (event.node.selected) {\n\t\t\t\t\t\tif (elementIndexInSelectedList < 0) {\n\t\t\t\t\t\t\tif (this.showAll) {\n\t\t\t\t\t\t\t\tif (event.node.data[this.getIdField()] === this.getAllFieldID()) {\n\t\t\t\t\t\t\t\t\tthis.multipleSelectedItemList.push(event.node.data);\n\t\t\t\t\t\t\t\t\tthis.unselectAllNodes();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst elementAllInSelectedList: number = this.multipleSelectedItemList.findIndex((item) => {\n\t\t\t\t\t\t\t\t\t\treturn item[this.getIdField()] === this.getAllFieldID();\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tif (elementAllInSelectedList !== -1) {\n\t\t\t\t\t\t\t\t\t\tthis.unselectNodeAll();\n\t\t\t\t\t\t\t\t\t\tthis.multipleSelectedItemList = [];\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tthis.multipleSelectedItemList.push(event.node.data);\n\t\t\t\t\t\t\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList.slice();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.multipleSelectedItemList.push(event.node.data);\n\t\t\t\t\t\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList.slice();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (elementIndexInSelectedList !== -1) {\n\t\t\t\t\t\t\tthis.multipleSelectedItemList.splice(elementIndexInSelectedList, 1);\n\t\t\t\t\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList.slice();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (this.showAll && (event.node.data[this.getIdField()] === this.getAllFieldID())) {\n\t\t\t\t\t\tthis.multipleSelectedItemList.push(event.node.data);\n\t\t\t\t\t\tthis.unselectAllNodes();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.multipleSelectedItemList = [];\n\t\t\t\t\t\tthis.multipleSelectedItemList.push(event.node.data);\n\t\t\t\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList.slice();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic onModelUpdated(pEvent: any) {\n\t\tthis.doAutoSizeManagement();\n\t\tthis.selectItemInGrid();\n\t\treturn pEvent;\n\t}\n\n\tprotected selectItemInGrid(): void {\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.forEachNode(node => {\n\t\t\t\tif (node.data) {\n\t\t\t\t\tif (this.multipleSelection) {\n\t\t\t\t\t\tif (this.multipleSelectedItemList && this.multipleSelectedItemList.length > 0) {\n\t\t\t\t\t\t\tif (this.multipleSelectedItemList\n\t\t\t\t\t\t\t\t.filter((selectedItem) => {\n\t\t\t\t\t\t\t\t\treturn (selectedItem !== undefined && selectedItem[this.getIdField()] === this.getRowNodeId(node.data));\n\t\t\t\t\t\t\t\t}).length > 0) {\n\t\t\t\t\t\t\t\tnode.selectThisNode(true);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnode.selectThisNode(false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.selectThisNode(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.selectedItem && this.selectFirstItem) {\n\t\t\t\t\t\t\tif (node.rowIndex === 0) {\n\t\t\t\t\t\t\t\tnode.setSelected(true);\n\t\t\t\t\t\t\t\tthis.selectedItem = node.data;\n\t\t\t\t\t\t\t\tthis.selectedItemChange.emit(node.data);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (this.selectedItem) {\n\t\t\t\t\t\t\tif (this.getRowNodeId(node.data) === this.selectedItem[this.getIdField()]) {\n\t\t\t\t\t\t\t\tnode.setSelected(true);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate selectionItemListToIDList(): Array<string | number> {\n\t\tconst idList = new Array<string | number>();\n\t\tfor (const item of this.multipleSelectedItemList) {\n\t\t\tidList.push(item[this.getIdField()]);\n\t\t}\n\t\treturn idList;\n\t}\n\n\tprivate unselectAllNodes() {\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.forEachNode(node => {\n\t\t\t\tif (node && this.getRowNodeId(node.data) !== this.getAllFieldID()) {\n\t\t\t\t\tnode.selectThisNode(false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate unselectNodeAll() {\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.forEachNode(node => {\n\t\t\t\tif (node && this.getRowNodeId(node.data) === this.getAllFieldID()) {\n\t\t\t\t\tnode.selectThisNode(false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic onRowDragEnd(event: any) {\n\t\tthis.rowDragEnd.emit(event);\n\t}\n\n}\n","import { AfterViewInit, Component, Input } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\nimport { AbstractListBox } from './abstract-listbox.component';\n\nclass Element {\n\tconstructor(public id: string, public description: string) {\n\n\t}\n}\n\n@Component({\n\tselector:    'systelab-gender-listbox',\n\ttemplateUrl: 'abstract-listbox.component.html'\n\n})\nexport class SystelabGenderListBox extends AbstractListBox<Element> implements AfterViewInit {\n\n\t@Input() override showAll = false;\n\n\tconstructor(public i18nService: I18nService) {\n\t\tsuper();\n\t}\n\n\tpublic ngAfterViewInit(): void {\n\t\tconst elements = [];\n\t\tif (this.showAll) {\n\t\t\telements.push(new Element('A', this.i18nService.instant('COMMON_ALL')));\n\t\t}\n\t\telements.push(new Element('U', this.getDescriptionForGender('U')));\n\t\telements.push(new Element('F', this.getDescriptionForGender('F')));\n\t\telements.push(new Element('M', this.getDescriptionForGender('M')));\n\n\t\tthis.values = elements;\n\t}\n\n\tpublic override getAllFieldID(): number | string {\n\t\treturn 'A';\n\t}\n\n\tpublic override getAllFieldDescription(): string {\n\t\treturn this.i18nService.instant('COMMON_ALL');\n\t}\n\n\tpublic getIdField(): string {\n\t\treturn 'id';\n\t}\n\n\tpublic getDescriptionField(): string {\n\t\treturn 'description';\n\t}\n\n\tpublic getInstance() {\n\t\treturn new Element('', '');\n\t}\n\n\tpublic getDescriptionForGender(gender: string): string {\n\t\tswitch (gender) {\n\t\t\tcase 'U':\n\t\t\t\treturn this.i18nService.instant('COMMON_UNKNOWN');\n\t\t\tcase 'M':\n\t\t\t\treturn this.i18nService.instant('COMMON_MALE');\n\t\t\tcase 'F':\n\t\t\t\treturn this.i18nService.instant('COMMON_FEMALE');\n\t\t\tdefault:\n\t\t\t\treturn this.i18nService.instant('COMMON_UNKNOWN');\n\t\t}\n\t}\n}\n","<div class=\"slab-listbox\" [ngClass]=\"{'disabled': isDisabled}\">\n    <div #hidden class=\"height-hidden\"></div>\n    <ag-grid-angular #grid id=\"agGrid\" style=\"position:absolute; top:0; bottom:0; left:0; right:0; overflow: hidden;\"\n                     class=\"ag-theme-fresh border rounded\" [ngClass]=\"{'disabled': isDisabled}\"\n                     [gridOptions]=\"gridOptions\"\n                     [rowDragManaged]=\"rowDrag\"\n                     [animateRows]=\"rowDrag\"\n                     (rowDragEnd)=\"onRowDragEnd($event)\"\n                     (gridReady)=\"doGridReady($event)\"\n                     (gridSizeChanged)=\"doGridSizeChanged($event)\"\n                     (cellClicked)=\"doClick($event)\"\n                     (clickRow)=\"doClick($event)\"\n                     (rowSelected)=\"onRowSelected($event)\"\n                     (modelUpdated)=\"onModelUpdated($event)\">\n    </ag-grid-angular>\n</div>","import { Component, ElementRef, ViewChild } from '@angular/core';\nimport { ModalComponent, SystelabModalContext } from '../modal/dialog/modal-context';\nimport { DialogRef } from '../modal/dialog/dialog-ref';\n\nexport class NumPadDialogParameters extends SystelabModalContext {\n\tpublic value: string;\n\tpublic override width = 300;\n\tpublic override height = 450;\n\tpublic isPassword: boolean;\n}\n\n@Component({\n\ttemplateUrl: 'numpad.dialog.component.html'\n})\nexport class NumPadDialog implements ModalComponent<NumPadDialogParameters> {\n\n\t@ViewChild('inputElement', {static: false}) protected inputElement: ElementRef;\n\tpublic value = '';\n\tpublic dialogParameters: NumPadDialogParameters;\n\tpublic searchingValue: string;\n\n\tpublic titleForDialog: string;\n\tpublic showClose = true;\n\tpublic isPassword = false;\n\n\tpublic static getParameters(): NumPadDialogParameters {\n\t\treturn new NumPadDialogParameters();\n\t}\n\n\tconstructor(public dialog: DialogRef<NumPadDialogParameters>) {\n\t\tthis.dialogParameters = dialog.context;\n\t\tthis.isPassword = this.dialogParameters.isPassword;\n\t\tthis.value = this.dialogParameters.value;\n\t}\n\n\tpublic close(): void {\n\t\tthis.dialog.close(null);\n\t}\n\n\tpublic accept() {\n\t\tthis.dialog.close(this.value);\n\t}\n\n\tpublic pushButton(value: string) {\n\t\tif (this.value) {\n\t\t\tthis.value += value;\n\t\t} else {\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tthis.inputElement.nativeElement.focus();\n\t}\n\n\tpublic deleteNumber() {\n\t\tthis.value = this.value.substring(0, this.value.length - 1);\n\t}\n\n\tpublic cleanInput() {\n\t\tthis.value = '';\n\t}\n\n\tpublic doKeyPress(event: KeyboardEvent) {\n\t\tif (event.code === 'Enter') {\n\t\t\tthis.dialog.close(this.value);\n\t\t}\n\t}\n}\n\n\n","<systelab-dialog-header [withClose]=\"showClose\" (close)=\"close()\">{{titleForDialog}}\n</systelab-dialog-header>\n<div class=\"container slab-numpad-container\">\n    <form>\n        <div class=\"bs-callout\">\n            <div class=\"row\">\n                <div class=\"col-md-12 slab-numpad-parentPadding\">\n                    <input [autofocus]=\"true\" #inputElement *ngIf=\"!isPassword\" id=\"numpadField\" type=\"text\" class=\"form-control slab-numpad-input\" name=\"numpadField\"\n                           [(ngModel)]=\"value\">\n                    <input [autofocus]=\"true\" #inputElement *ngIf=\"isPassword\" id=\"numpadFieldPwd\" type=\"password\" class=\"form-control slab-numpad-input\" name=\"numpadFieldPwd\"\n                           [(ngModel)]=\"value\">\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('1')\">1</a>\n                </div>\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('2')\">2</a>\n                </div>\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('3')\">3</a>\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('4')\">4</a>\n                </div>\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('5')\">5</a>\n                </div>\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('6')\">6</a>\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('7')\">7</a>\n                </div>\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('8')\">8</a>\n                </div>\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('9')\">9</a>\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"cleanInput()\">C</a>\n                </div>\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('0')\">0</a>\n                </div>\n                <div class=\"col-md-4 slab-numpad-nopadding\">\n                    <a class=\"btn slab-numpad-btn form-control\" (click)=\"deleteNumber()\"><</a>\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-md-12 slab-numpad-nopadding\">\n                    <button class=\"btn slab-numpad-btn btn-primary form-control\" (keypress)=\"doKeyPress($event)\" (click)=\"accept()\">{{ 'COMMON_OK' | translate | async }}</button>\n                </div>\n            </div>\n        </div>\n    </form>\n</div>","import { AfterContentInit, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n\tselector: '[autoFocus]'\n})\nexport class AutofocusDirective implements AfterContentInit {\n\n\t@Input() public autoFocus = true;\n\n\tpublic constructor(private el: ElementRef) {\n\t}\n\n\tpublic ngAfterContentInit() {\n\t\tif (this.autoFocus) {\n\t\t\tsetTimeout(() => this.el.nativeElement.focus());\n\t\t}\n\t}\n\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { DialogService } from '../modal/dialog/dialog.service';\nimport { NumPadDialog, NumPadDialogParameters } from './numpad.dialog.component';\n\n@Component({\n\tselector:    'systelab-numpad',\n\ttemplateUrl: 'numpad.component.html'\n})\nexport class NumPadComponent {\n\tprotected _value: string;\n\t@Input()\n\tisPassword = false;\n\t@Input()\n\tpublic autofocus = false;\n\n\t@Input() public placeholder = '';\n\t@Input() public onClickSelectValue: boolean = false;\n\n\t@Output() public valueChange = new EventEmitter<string>();\n\t@Output() public change = new EventEmitter<string>();\n\n\t@Input()\n\tget value(): string {\n\t\treturn this._value;\n\t}\n\n\tset value(value: string) {\n\t\tthis._value = value;\n\t\tthis.valueChange.emit(this._value);\n\t}\n\n\t@ViewChild('input') public input: ElementRef<HTMLInputElement>;\n\n\tconstructor(public dialogService: DialogService) {\n\t}\n\n\tpublic openNumPadDialog() {\n\t\tconst parameters: NumPadDialogParameters = NumPadDialog.getParameters();\n\t\tparameters.value = this.value;\n\t\tparameters.isPassword = this.isPassword;\n\t\tthis.dialogService.showDialog(NumPadDialog, parameters)\n\t\t\t.subscribe(response => {\n\t\t\t\tif (response != null) {\n\t\t\t\t\tthis.value = response;\n\t\t\t\t\tthis.doEnter();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tpublic doEnter() {\n\t\tif (this.value && this.value.trim() !== '') {\n\t\t\tthis.change.emit(this.value);\n\t\t}\n\t}\n\n\tpublic focus(): void {\n\t\tconst element: HTMLElement = this.getNumPadElement();\n\t\tif (element) {\n\t\t\telement.focus();\n\t\t}\n\t}\n\n\n\tpublic blur(): void {\n\t\tconst element: HTMLElement = this.getNumPadElement();\n\t\tif (element) {\n\t\t\telement.blur();\n\t\t}\n\t}\n\n\tprivate getNumPadElement(): HTMLElement {\n\t\treturn this.isPassword ? document.getElementById('numpaddialogPwd') : document.getElementById('numpaddialog');\n\t}\n\n\tpublic doSelectValue() {\n\t\tif (this.onClickSelectValue) {\n\t\t\tthis.input.nativeElement.select();\n\t\t}\n\t}\n}\n","<div class=\"input-group slab-numpad-container\">\n    <input #input *ngIf=\"isPassword\" (click)=\"doSelectValue()\" class=\"form-control\" id=\"numpaddialogPwd\" type=\"password\" name=\"numpaddialog\" [placeholder]=\"placeholder\" [autoFocus]=\"autofocus\" [(ngModel)]=\"value\" (keyup.enter)=\"doEnter()\">\n    <input #input *ngIf=\"!isPassword\" (click)=\"doSelectValue()\" class=\"form-control\" id=\"numpaddialog\" type=\"text\" name=\"numpaddialog\" [placeholder]=\"placeholder\" [autoFocus]=\"autofocus\" [(ngModel)]=\"value\" (keyup.enter)=\"doEnter()\">\n    <div class=\"input-group-append\">\n        <button id=\"showDialogButton\" class=\"btn pt-0 pb-0\" type=\"button\"  (click)=\"openNumPadDialog()\"><i class=\"icon-numpad\"></i></button>\n    </div>\n</div>\n","import { Component } from '@angular/core';\nimport { AbstractListBox } from './abstract-listbox.component';\n\nexport class ListBoxElement {\n\tconstructor(public id: string, public description: string) {\n\n\t}\n}\n\n@Component({\n\tselector:    'systelab-listbox',\n\ttemplateUrl: 'abstract-listbox.component.html'\n})\n\nexport class ModulabListBox extends AbstractListBox<ListBoxElement> {\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tgetInstance(): ListBoxElement {\n\t\treturn new ListBoxElement('', '');\n\t}\n\n\tgetDescriptionField(): string {\n\t\treturn 'description';\n\t}\n\n\tgetIdField(): string {\n\t\treturn 'id';\n\t}\n}\n","import { ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { ContextMenuOption } from '../contextmenu/context-menu-option';\nimport { AbstractContextComponent } from '../contextmenu/abstract-context.component';\n\n@Component({\n\tselector:    'systelab-context-panel',\n\ttemplateUrl: 'context-panel.component.html',\n})\nexport class ContextPanelComponent extends AbstractContextComponent<ContextMenuOption> implements OnInit, OnDestroy {\n\n\tconstructor(protected override el: ElementRef, protected override myRenderer: Renderer2, protected override cdr: ChangeDetectorRef) {\n\t\tsuper(el, myRenderer, cdr);\n\t}\n}\n","<div #dropdownparent id=\"{{elementID}}\" class=\"dropdown\">\n    <div class=\"dropdown-toggle slab-context-menu\" data-toggle=\"dropdown\" (click)=\"dotsClicked($event)\">\n        <ng-content select=\".header-content\"></ng-content>\n    </div>\n    <div #dropdownmenu class=\"dropdown-menu slab-dropdown-menu\">\n        <div #dropdown class=\"slab-dropdown slab-dropdown-fixed\">\n            <div *ngIf=\"isOpened\">\n                <div #ngcontent (click)=\"ngContentStopPropagation($event)\">\n                    <ng-content select=\".main-content\"></ng-content>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-date-range-picker',\n\ttemplateUrl: 'date-range-picker.component.html'\n})\nexport class DateRangepicker {\n\n\tprivate _fromDate: Date;\n\tprivate _toDate: Date;\n\n\t@Input() public minDate: Date;\n\t@Input() public maxDate: Date;\n\n\t@Input() public disabled = false;\n\n\t@Input()\n\tget fromDate(): Date {\n\t\treturn this._fromDate;\n\t}\n\n\tset fromDate(value: Date) {\n\t\tthis._fromDate = value;\n\t\tthis.fromDateChange.emit(value);\n\t}\n\n\t@Input()\n\tget toDate(): Date {\n\t\treturn this._toDate;\n\t}\n\n\tset toDate(value: Date) {\n\t\tthis._toDate = value;\n\t\tthis.toDateChange.emit(value);\n\t}\n\n\t@Output() public toDateChange = new EventEmitter<Date>();\n\t@Output() public fromDateChange = new EventEmitter<Date>();\n\n}\n","<span class=\"mr-4\">\n    <systelab-datepicker [(currentDate)]=\"fromDate\" [inline]=\"true\" [minDate]=\"minDate\" [maxDate]=\"maxDate\" [disabled]=\"disabled\"></systelab-datepicker>\n</span>\n<span>\n    <systelab-datepicker [(currentDate)]=\"toDate\" [inline]=\"true\" [minDate]=\"minDate\" [maxDate]=\"maxDate\" [disabled]=\"disabled\"></systelab-datepicker>\n</span>","import { Component } from '@angular/core';\nimport { MessagePopupButton } from './message-popup.service';\nimport { DialogRef } from '../dialog/dialog-ref';\nimport { ModalComponent, SystelabModalContext } from '../dialog/modal-context';\nimport { MessagePopupIcon } from './message-with-icon.component';\n\nexport class MessagePopupViewContext extends SystelabModalContext {\n\n\tpublic override fullScreen = false;\n\tpublic override maxWidth = 700;\n\tpublic override minWidth = 499;\n\tpublic override maxHeight = 400;\n\tpublic override minHeight = 280;\n\tpublic title: string;\n\tpublic msg: string;\n\tpublic icon: MessagePopupIcon;\n\tpublic type: number;\n\tpublic color: string;\n\tpublic buttons: MessagePopupButton[] = [];\n\tpublic askAgain = false;\n\tpublic msgAskAgain: string;\n}\n\n@Component({\n\tselector:    'dialog-view',\n\ttemplateUrl: 'message-popup-view.component.html',\n\tstyleUrls:   ['message-popup-view.component.scss']\n})\nexport class MessagePopupViewComponent implements ModalComponent<MessagePopupViewContext> {\n\n\tpublic parameters: MessagePopupViewContext;\n\tpublic hasAnyButtonFocus = false;\n\tpublic checkAskAgain = false;\n\n\tconstructor(public dialog: DialogRef<MessagePopupViewContext>) {\n\t\tthis.parameters = dialog.context;\n\t\tif (this.parameters.buttons) {\n\t\t\tthis.hasAnyButtonFocus = this.parameters.buttons.some(button => button.focus);\n\t\t}\n\t}\n\n\tpublic static getParameters(): MessagePopupViewContext {\n\t\treturn new MessagePopupViewContext();\n\t}\n\n\tpublic close(value?: any): void {\n\t\tif (this.parameters.askAgain) {\n\t\t\tthis.dialog.close([value, this.checkAskAgain]);\n\t\t} else {\n\t\t\tthis.dialog.close(value);\n\t\t}\n\t}\n}\n","<systelab-dialog-header (close)=\"close()\">{{parameters.title}}</systelab-dialog-header>\n<systelab-message-with-icon class=\"d-flex slab-flex-1 slab-overflow-container\" [message]=\"parameters.msg\" [type]=\"parameters.type\"\n                            [icon]=\"parameters.icon\"></systelab-message-with-icon>\n<div *ngIf=\"parameters.askAgain\" class=\"d-flex slab-flex-1 align-items-center pl-5\">\n    <systelab-switch [(isChecked)]=\"checkAskAgain\"></systelab-switch>\n    <label class=\"col-form-label ml-2\">{{parameters.msgAskAgain}}</label>\n</div>\n<systelab-dialog-bottom>\n    <div class=\"ml-auto\" *ngIf=\"parameters.buttons.length>0\">\n        @for (button of parameters.buttons; track button; let i = $index; let cnt = $count;) {\n            <button type=\"button\"\n                    class=\"btn ml-1 {{button.cssClass}}\"\n                    (click)=\"close(button.returnValue)\"\n                    [autoFocus]=\"button.focus || (!hasAnyButtonFocus && i===cnt-1)\">{{button.title}}</button>\n        }\n    </div>\n    <div class=\"ml-auto\" *ngIf=\"parameters.buttons.length===0\">\n        <button type=\"button\" class=\"btn btn-primary\" (click)=\"close()\" [autoFocus]=\"true\">{{ 'COMMON_CLOSE' | translate | async }}</button>\n    </div>\n</systelab-dialog-bottom>\n\n","import { Component, Input } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-paginator-page',\n\ttemplateUrl: 'paginator-page.component.html'\n})\nexport class PaginatorPageComponent {\n\t@Input() icon: string;\n\t@Input() pageNumber = '';\n\t@Input() selected = false;\n\t@Input() disabled = false;\n}\n","<button class=\"btn cursor mr-1\" [class.btn-primary]=\"selected\" [disabled]=\"disabled\">\n    <span class=\"{{icon}}\">{{pageNumber}}</span>\n</button>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-paginator',\n\ttemplateUrl: 'paginator.component.html'\n})\nexport class PaginatorComponent implements OnInit, OnChanges {\n\n\t@Input() totalPages = 1;\n\t@Input() page = 1;\n\n\t@Input() pagesToShow = 11;\n\t@Input() showNextPreviousButtons = true;\n\t@Input() showFirstLastButtons = true;\n\n\t@Output() pageChange = new EventEmitter<number>();\n\n\tpublic pages: number[];\n\n\tprivate static calculateVisiblePages(totalPages: number, pagesToShow: number): number {\n\t\treturn Math.min(totalPages, pagesToShow);\n\t}\n\n\tprivate static calculateStartPage(currentPage: number, totalPages: number, visiblePages: number): number {\n\t\tif (totalPages - currentPage < (visiblePages / 2)) {\n\t\t\treturn totalPages - visiblePages + 1;\n\t\t}\n\t\treturn Math.max(1, Math.ceil(currentPage - ((visiblePages) / 2)));\n\t}\n\n\tprivate static calculateEndPage(totalPages: number, startPage: number, visiblePages: number): number {\n\t\treturn Math.min(totalPages, startPage + visiblePages - 1);\n\t}\n\n\tprivate static calculateLinkPages(currentPage: number, totalPages: number, pagesToShow: number): number[] {\n\t\tconst visiblePages = PaginatorComponent.calculateVisiblePages(totalPages, pagesToShow);\n\t\tconst startPage = PaginatorComponent.calculateStartPage(currentPage, totalPages, visiblePages);\n\t\tconst endPage = PaginatorComponent.calculateEndPage(totalPages, startPage, visiblePages);\n\n\t\tconst linkPages = [];\n\n\t\tfor (let i = startPage; i <= endPage; i++) {\n\t\t\tlinkPages.push(i);\n\t\t}\n\t\treturn linkPages;\n\n\t}\n\n\tpublic ngOnInit(): void {\n\t\tthis.pages = PaginatorComponent.calculateLinkPages(this.page, this.totalPages, this.pagesToShow);\n\t}\n\n\tpublic ngOnChanges(changes: SimpleChanges): void {\n\t\tif (this.page && this.totalPages && this.pagesToShow) {\n\t\t\tthis.pages = PaginatorComponent.calculateLinkPages(this.page, this.totalPages, this.pagesToShow);\n\t\t}\n\t}\n\n\tpublic goFirst() {\n\t\tthis.goToPage(1);\n\t}\n\n\tpublic goPrevious() {\n\t\tif (this.page > 1) {\n\t\t\tthis.goToPage(this.page - 1);\n\t\t}\n\t}\n\n\tpublic goNext() {\n\t\tif (this.page < this.totalPages) {\n\t\t\tthis.goToPage(this.page + 1);\n\t\t}\n\t}\n\n\tpublic goLast() {\n\t\tthis.goToPage(this.totalPages);\n\t}\n\n\tpublic goToPage(page: number) {\n\t\tif (this.page !== page) {\n\t\t\tthis.page = page;\n\t\t\tthis.pageChange.emit(this.page);\n\t\t}\n\t}\n\n}\n","<div class=\"slab-paginator-container w-100 h-100 d-flex justify-content-center\">\n    <systelab-paginator-page *ngIf=\"showFirstLastButtons\" [icon]=\"'icon-angle-double-left'\" [disabled]=\"page===1\" (click)=\"goFirst()\"></systelab-paginator-page>\n    <systelab-paginator-page *ngIf=\"showNextPreviousButtons\" [icon]=\"'icon-angle-left'\" [disabled]=\"page===1\"\n                             (click)=\"goPrevious()\"></systelab-paginator-page>\n\n    @for (p of pages; track p) {\n        <systelab-paginator-page [pageNumber]=\"p.toString()\" [selected]=\"page===p\" (click)=\"goToPage(p)\" id=\"page{{p}}\"></systelab-paginator-page>\n    }\n\n    <systelab-paginator-page *ngIf=\"showNextPreviousButtons\" [icon]=\"'icon-angle-right'\" [disabled]=\"page===totalPages\"\n                             (click)=\"goNext()\"></systelab-paginator-page>\n    <systelab-paginator-page *ngIf=\"showFirstLastButtons\" [icon]=\"'icon-angle-double-right'\" [disabled]=\"page===totalPages\"\n                             (click)=\"goLast()\"></systelab-paginator-page>\n</div>\n","import { Injectable } from '@angular/core';\nimport {EMPTY, Observable} from 'rxjs';\nimport { I18nService } from 'systelab-translate';\nimport { DialogService } from '../dialog/dialog.service';\nimport { MessagePopupViewComponent } from './message-popup-view.component';\nimport { MessagePopupIcon, MessageWithIconComponent } from './message-with-icon.component';\nimport {OverlayKeyboardDispatcher, OverlayRef} from \"@angular/cdk/overlay\";\n\nexport class MessagePopupButton {\n\tconstructor(public title: string, public returnValue: any, public cssClass?: string, public focus: boolean = false) {\n\t}\n}\n\n@Injectable({providedIn: 'root'})\nexport class MessagePopupService {\n\n\tpublic static readonly breakpointMedium = 500;\n\n\tconstructor(protected i18nService: I18nService, protected dialogService: DialogService, private overlayDispatcher: OverlayKeyboardDispatcher) {\n\t}\n\n\tpublic showErrorPopup(titleDescription: string, errorDescription: string, modalClass?: string, width?: number, height?: number): Observable<any> {\n\t\tif (this.isPopupAlreadyShowed(titleDescription, errorDescription)) {\n\t\t\treturn EMPTY;\n\t\t}\n\n\t\treturn this.showPopup(\n\t\t\ttitleDescription,\n\t\t\tMessageWithIconComponent.MESSAGE_ERROR,\n\t\t\terrorDescription,\n\t\t\tmodalClass,\n\t\t\twidth,\n\t\t\theight,\n\t\t\t[]\n\t\t);\n\t}\n\n\tpublic showWarningPopup(titleDescription: string, warningDescription: string, modalClass?: string, width?: number, height?: number): Observable<any> {\n\t\treturn this.showPopup(\n\t\t\ttitleDescription,\n\t\t\tMessageWithIconComponent.MESSAGE_WARNING,\n\t\t\twarningDescription,\n\t\t\tmodalClass,\n\t\t\twidth,\n\t\t\theight,\n\t\t\t[]\n\t\t);\n\t}\n\n\tpublic showInformationPopup(titleDescription: string, messageDescription: string, modalClass?: string, width?: number, height?: number): Observable<any> {\n\t\treturn this.showPopup(\n\t\t\ttitleDescription,\n\t\t\tMessageWithIconComponent.MESSAGE_INFO,\n\t\t\tmessageDescription,\n\t\t\tmodalClass,\n\t\t\twidth,\n\t\t\theight,\n\t\t\t[]\n\t\t);\n\t}\n\n\tpublic showYesNoQuestionPopup(titleDescription: string, messageDescription: string, modalClass?: string, width?: number, height?: number, template?: string): Observable<any> {\n\t\tconst buttons: MessagePopupButton[] = this.getButtonsTemplate(template);\n\t\treturn this.showPopup(titleDescription, MessageWithIconComponent.MESSAGE_QUESTION, messageDescription, modalClass, width, height, buttons);\n\t}\n\n\tpublic showCustomQuestionPopup(titleDescription: string, messageDescription: string, modalClass?: string, width?: number, height?: number, buttons?: MessagePopupButton[], icon?: MessagePopupIcon): Observable<any> {\n\t\treturn this.showPopup(titleDescription, MessageWithIconComponent.MESSAGE_QUESTION, messageDescription, modalClass, width, height, buttons, icon);\n\t}\n\n\tpublic showAskAgainPopup(titleDescription: string, messageDescription: string, modalClass?: string, width?: number, height?: number, buttons?: MessagePopupButton[], icon?: MessagePopupIcon, messageAskAgain?: string): Observable<any> {\n\t\treturn this.showPopup(titleDescription, MessageWithIconComponent.MESSAGE_QUESTION, messageDescription, modalClass, width, height, buttons, icon, messageAskAgain);\n\t}\n\n\tprotected showPopup(title: string, type: number, message: string, modalClass?: string, width?: number, height?: number, buttons?: MessagePopupButton[], icon?: MessagePopupIcon, messageAskAgain?: string): Observable<any> {\n\n\t\tconst defaultWidth = 600;\n\t\tconst maxWidth = 700;\n\t\tconst minWidth = 499;\n\t\tconst defaultHeight = 300;\n\t\tconst maxHeight = 400;\n\t\tconst minHeight = 280;\n\n\t\tconst parameters = MessagePopupViewComponent.getParameters();\n\t\tparameters.title = title;\n\t\tparameters.type = type;\n\t\tparameters.msg = message;\n\t\tparameters.buttons = buttons;\n\t\tparameters.width = width ? width : defaultWidth;\n\t\tparameters.height = height ? height : defaultHeight;\n\n\t\tparameters.maxWidth = maxWidth;\n\t\tparameters.minWidth = minWidth;\n\n\t\tparameters.maxHeight = maxHeight;\n\t\tparameters.minHeight = minHeight;\n\n\t\tparameters.icon = icon;\n\n\t\tparameters.askAgain = messageAskAgain !== undefined && messageAskAgain.length > 0;\n\t\tparameters.msgAskAgain = messageAskAgain;\n\n\t\treturn this.dialogService.showDialog(MessagePopupViewComponent, parameters);\n\t}\n\n\tprivate getButtonsTemplate(template:string): MessagePopupButton[] {\n\t\tconst buttons: MessagePopupButton[] = [];\n\t\tconst availableTemplates: any = {\n\t\t\t'outline-danger': 'btn-outline-danger',\n\t\t\t'danger': 'btn-danger',\n\t\t\t'outline-warning': 'btn-outline-warning',\n\t\t\t'warning': 'btn-warning',\n\t\t\t'primary':'btn-primary',\n\t\t\t'outline-primary': 'btn-outline-primary',\n\t\t}\n\t\tconst classTemplate: string = availableTemplates[template] || 'btn-outline-primary';\n\n\t\tbuttons.push(new MessagePopupButton(this.i18nService.instant('COMMON_NO'), false, 'btn-link', template?.includes('danger')));\n\t\tbuttons.push(new MessagePopupButton(this.i18nService.instant('COMMON_YES'), true, classTemplate));\n\t\treturn buttons;\n\t}\n\n\tprivate isPopupAlreadyShowed(title:string, message: string): boolean {\n\t\treturn this.overlayDispatcher._attachedOverlays.some((overlayRef: OverlayRef) =>\n\t\t\toverlayRef.overlayElement.textContent?.startsWith(title + message));\n\t}\n\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\nimport { MessagePopupService } from '../modal/message-popup/message-popup.service';\n\nexport class ChipButtonItem {\n\tconstructor(public id: number, public name: string, public isChecked = false) {\n\t}\n}\n\n@Component({\n\tselector:    'systelab-chip-button',\n\ttemplateUrl: 'chip-button.component.html',\n})\nexport class ChipButtonComponent {\n\n\t@Output() public changeButton = new EventEmitter();\n\t@Output() public selectButton = new EventEmitter();\n\t@Output() public buttonRemoved = new EventEmitter();\n\t@Output() public buttonAdded = new EventEmitter();\n\n\t@Input()\n\tpublic buttonList: ChipButtonItem[];\n\n\t@Input()\n\tpublic deleteConfirmationTitle: string;\n\n\t@Input()\n\tpublic deleteConfirmationMessage: string;\n\n\t@Input()\n\tpublic showAddButton = true;\n\n\t@Input()\n\tpublic isRemoveEnabled = true;\n\n\t@Input()\n\tpublic disabled = false;\n\n\tprivate lastValue: ChipButtonItem;\n\n\tconstructor(protected messagePopupService: MessagePopupService, protected i18nService: I18nService) {\n\t}\n\n\tpublic onClick(item: ChipButtonItem): void {\n\t\tthis.selectItem(item);\n\t}\n\n\tpublic selectItem(item: ChipButtonItem): void {\n\t\titem.isChecked = true;\n\t\tthis.buttonList.filter(btn => btn !== item)\n\t\t\t.forEach(btn =>\n\t\t\t\tbtn.isChecked = false\n\t\t\t);\n\t\tthis.selectButton.emit(item);\n\t\tthis.lastValue = item;\n\t}\n\n\tpublic removeButtonItem(item: ChipButtonItem, event: Event): void {\n\t\tevent.stopPropagation();\n\t\tif (this.deleteConfirmationMessage) {\n\t\t\tthis.messagePopupService.showYesNoQuestionPopup(this.deleteConfirmationTitle, this.deleteConfirmationMessage)\n\t\t\t\t.subscribe((res) => {\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\tthis.removeElement(item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t} else {\n\t\t\tthis.removeElement(item);\n\t\t}\n\t}\n\n\tpublic addButtonITem(): void {\n\t\tconst maxID = Math.max(...this.buttonList.map(o => o.id), 0);\n\t\tconst item = {name: this.i18nService.instant('COMMON_NEW'), id: maxID + 1, isChecked: false};\n\t\tthis.buttonList.push(item);\n\t\tthis.selectItem(item);\n\t\tthis.buttonAdded.emit(item);\n\t}\n\n\tpublic changeButtonItem(item: ChipButtonItem): void {\n\t\tif (!this.disabled) {\n\t\t\tthis.changeButton.emit(item);\n\t\t}\n\t}\n\n\tprivate removeElement(item: ChipButtonItem): void {\n\t\tlet index = this.buttonList.findIndex(it => it === item);\n\t\tif (index !== -1) {\n\t\t\tthis.buttonList.splice(index, 1);\n\t\t}\n\t\tthis.buttonRemoved.emit(item);\n\t\tlet last;\n\t\tif (this.lastValue.id !== item.id) {\n\t\t\tindex = this.buttonList.findIndex(it => it === this.lastValue);\n\t\t\tlast = this.buttonList[index];\n\t\t} else if (index === this.buttonList.length) {\n\t\t\tlast = this.buttonList[this.buttonList.length - 1];\n\t\t} else {\n\t\t\tlast = this.buttonList[index];\n\t\t}\n\t\tif (last) {\n\t\t\tthis.selectItem(last);\n\t\t}\n\t}\n}\n\n","@for (button of buttonList; track button) {\n    <li class=\"slab-chip-button\" role=\"badge\">\n        <button type=\"button\" id=\"{{button.id}}\" (click)=\"onClick(button)\"\n                [class.slab-is-selected]=\"button.isChecked\"\n                (dblclick)=\"changeButtonItem(button)\">\n            <span class=\"slab-chip-text\">{{button.name}}</span>\n            <span *ngIf=\"isRemoveEnabled && !disabled\" class=\"slab-chip-button-remove\" aria-hidden=\"true\" (click)=\"removeButtonItem(button, $event)\">×</span>\n        </button>\n    </li>\n}\n<button *ngIf=\"showAddButton\" [disabled]=\"disabled\" type=\"button\" class=\"slab-chip-button-add\" (click)=\"addButtonITem()\">+</button>\n","import { Component } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\n\nexport interface IStackedBar {\n\tid: string | number;\n\tvalue: number;\n\tcolor?: string;\n\tcolorClass?: string;\n\ttooltipText?: string;\n}\n\n@Component({\n\tselector:    'systelab-stacked-bar-cell',\n\ttemplateUrl: 'stacked-bar-cell-renderer.component.html',\n\tstyleUrls:   ['stacked-bar-cell-renderer.component.scss']\n})\nexport class StackedBarCellRendererComponent implements AgRendererComponent {\n\tpublic params: any;\n\tpublic barClick: (rowData: any, id: string | number) => void;\n\tpublic total: number;\n\tpublic width: number;\n\tpublic stackedBars: Array<IStackedBar> = [];\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t\tif (params.data) {\n\t\t\tthis.initModel();\n\t\t\tthis.total = this.getTotal();\n\t\t\tthis.width = this.getWidth();\n\t\t\tthis.barClick = (<any>this.params).barClick;\n\t\t}\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n\n\tpublic doBarClick(event: MouseEvent, stackedBar: IStackedBar): void {\n\t\tif (this.barClick) {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.barClick(this.params.data, stackedBar.id);\n\t\t}\n\t}\n\n\tprivate initModel(): void {\n\t\tthis.stackedBars = (<any>this.params).value;\n\t}\n\n\tprivate getMaxValue(): number {\n\t\treturn this.params.colDef.getMaxValue();\n\t}\n\n\tprivate getTotal(): number {\n\t\treturn this.stackedBars\n\t\t\t.map(bar => bar.value)\n\t\t\t.reduce((total, curr) => total + curr, 0);\n\t}\n\n\tprivate getWidth(): number {\n\t\treturn this.total / this.getMaxValue();\n\t}\n\n}\n","<div class=\"h-100 d-flex align-items-center\">\n    <div class=\"slab-stacked-bar-cell d-flex align-items-center\" [style.width.%]=\"width*100\"\n         [style.min-width.px]=\"stackedBars.length*25\">\n        @for (bar of stackedBars; track bar.id; let index = $index) {\n            <div [ngClass]=\"{'rounded-left': index===0, 'rounded-right': index===stackedBars.length - 1, 'slab-stacked-bar-click': !!barClick}\"\n                 class=\"slab-stacked-bar d-inline-block stacked {{bar.colorClass}}\" [style.width.%]=\"bar.value/total*100\"\n                 [style.background-color]=\"bar.color\" systelabTooltip=\"{{bar.tooltipText}}\"\n                 (click)=\" doBarClick($event,bar)\">\n                <div class=\"h-100 d-flex align-items-center justify-content-center\">{{bar.value}}</div>\n            </div>\n        }\n    </div>\n    <div class=\"pl-2\">{{total}}</div>\n</div>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { firstValueFrom, of } from 'rxjs';\nimport { AutoComplete } from 'primeng/autocomplete';\n\n@Component({\n\tselector:    'systelab-chips',\n\ttemplateUrl: 'chips.component.html'\n})\nexport class ChipsComponent {\n\n\t@Output() public filtered = new EventEmitter<Array<string>>();\n\t@ViewChild('autoComplete') autoComplete: AutoComplete;\n\n\t@Input() public texts: Array<string> = [];\n\t@Input() public disabled = false;\n\t@Input() public readonly = false;\n\n\tpublic results: Array<string> = [];\n\n\tprivate newData: string;\n\tprivate _filter: Array<string> = [];\n\n\tget filter(): Array<string> {\n\t\treturn this._filter;\n\t}\n\n\tset filter(event) {\n\t\tthis._filter = event;\n\t\tthis.filtered.emit(event);\n\t}\n\n\tpublic search(event): void {\n\t\tfirstValueFrom(of(this.texts))\n\t\t\t.then(\n\t\t\t\tdata => {\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\tdata = data.filter(x => x.toLowerCase()\n\t\t\t\t\t\t\t.includes(event.query.toLowerCase()));\n\t\t\t\t\t}\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\tthis.newData = event.query;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.newData = null;\n\t\t\t\t\t}\n\t\t\t\t\tthis.results = data;\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tpublic onKeyEnter(event: KeyboardEvent): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.value) {\n\t\t\tthis.filter.push(input.value);\n\t\t\tinput.value = '';\n\t\t}\n\t\tthis.filtered.emit(this.filter);\n\t\tthis.autoComplete.hide();\n\t}\n}\n\n","<p-autoComplete #autoComplete [suggestions]=\"results\" (completeMethod)=\"search($event)\"\n                (keydown.enter)=\"onKeyEnter($event)\"\n                [multiple]=\"true\"\n                [readonly]=\"readonly\"\n                [disabled]=\"disabled\"\n                [(ngModel)]=\"filter\"></p-autoComplete>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { SpyMenuItem } from './spy-menu-item';\n\n@Component({\n\tselector:    'systelab-spy-menu',\n\ttemplateUrl: './spy-menu.component.html'\n})\nexport class SpyMenuComponent implements OnInit {\n\n\t@Input() public items: Array<SpyMenuItem>;\n\t@Input() public sectionSelected: string;\n\n\tconstructor() {\n\t}\n\n\tpublic ngOnInit(): void {\n\t}\n\n\tpublic doClick(item: SpyMenuItem) {\n\t\tif (!this.isItemDisabled(item)) {\n\t\t\tdocument.querySelector('#' + item.id)\n\t\t\t\t.scrollIntoView({\n\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\tblock:    'start',\n\t\t\t\t});\n\t\t\tsetTimeout(() => this.sectionSelected = item.id, 100);\n\t\t}\n\t}\n\n\tpublic isItemDisabled(item: SpyMenuItem): boolean {\n\t\tif (typeof item.disabled === 'function') {\n\t\t\treturn item.disabled();\n\t\t} else {\n\t\t\treturn item.disabled;\n\t\t}\n\t}\n\n\tpublic isItemHidden(item: SpyMenuItem): boolean {\n\t\tif (typeof item.hidden === 'function') {\n\t\t\treturn item.hidden();\n\t\t} else {\n\t\t\treturn item.hidden;\n\t\t}\n\t}\n}\n","<div class=\"spy-menu\">\n    @for (item of items; track item.id) {\n        <ng-container>\n            <div *ngIf=\"!isItemHidden(item)\" (click)=\"doClick(item)\" class=\"spy-menu-item\"\n                 [ngClass]=\"{ 'spy-menu-item--selected': sectionSelected === item.id, 'spy-menu-item--disabled': isItemDisabled(item) }\">\n                <span class=\"item-name\">{{ item.text }}</span>\n            </div>\n        </ng-container>\n    }\n</div>\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Directive({\n  selector: '[scrollSpy]',\n})\nexport class ScrollSpyDirective {\n  @Input() public spiedTags: Array<string> = ['div'];\n  @Input() public querySelector = '[id^=\"section\"]';\n  @Output() public sectionChange = new EventEmitter<string>();\n  private currentSection: string;\n\n  constructor(private _el: ElementRef) {}\n\n  @HostListener('scroll', ['$event'])\n  onScroll(event: any) {\n    let nextSection: string;\n    const children = this._el.nativeElement.querySelectorAll(this.querySelector);\n    const scrollTop = event.target.scrollTop;\n    const parentOffset = event.target.offsetTop;\n    for (let i = 0; i < children.length; i++) {\n      const element = children[i];\n      if (this.spiedTags.some((spiedTag) => spiedTag.toLowerCase() === element.tagName.toLowerCase())) {\n        if (element.offsetTop - parentOffset <= scrollTop) {\n          nextSection = element.id;\n        }\n      }\n    }\n    if (nextSection && nextSection !== this.currentSection) {\n      this.currentSection = nextSection;\n      this.sectionChange.emit(this.currentSection);\n    }\n  }\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport const toastAnimations: {\n\treadonly fadeToast: AnimationTriggerMetadata;\n} = {\n\tfadeToast: trigger('fadeAnimation', [\n\t\tstate('in', style({opacity: 1})),\n\t\ttransition('void => *', [style({opacity: 0}), animate('{{ fadeIn }}ms')]),\n\t\ttransition('default => closing', animate('{{ fadeOut }}ms', style({opacity: 0}))),\n\t]),\n};\n\nexport type ToastAnimationState = 'default' | 'closing';\n","export type ToastType = 'warning' | 'info' | 'success' | 'error';\n\nexport class ToastData {\n  text: string;\n  type: ToastType;\n}\n\nexport enum ToastSize {\n  small = 'small',\n  large = 'large',\n}\n\nexport interface ToastConfig {\n  autoWidth?: boolean;\n  fixedSize?: ToastSize;\n  showCloseButton?: boolean;\n  timeout: number;\n}\n\nexport const DEFAULT_TOAST_CONFIG: ToastConfig = {\n  autoWidth: false,\n  fixedSize: ToastSize.small,\n  showCloseButton: false,\n  timeout: 5000,\n};\n","import { OverlayRef } from '@angular/cdk/overlay';\n\nexport class ToastRef {\n  constructor(private readonly overlay: OverlayRef) {}\n\n  public close() {\n    this.overlay.dispose();\n  }\n\n  public isVisible() {\n    return this.overlay && this.overlay.overlayElement;\n  }\n\n  public getPosition() {\n    return this.overlay.overlayElement.getBoundingClientRect();\n  }\n}\n","import { Inject, Injectable, Injector, Optional } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ToastRef } from './toast-ref';\nimport { DEFAULT_TOAST_CONFIG, ToastConfig, ToastData } from './toast-config';\nimport { ToastComponent } from './toast.component';\nimport { APP_CONFIG } from '../systelab-components.module.config';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ToastService {\n  private _lastToast: ToastRef;\n  private _config: ToastConfig;\n\n  constructor(@Optional() @Inject(APP_CONFIG) private config, private overlay: Overlay, private parentInjector: Injector) {\n    this._config = config?.toast ?? DEFAULT_TOAST_CONFIG;\n  }\n\n  public setConfig(config: ToastConfig): void {\n    this._config = config;\n  }\n\n  public getConfig(): ToastConfig {\n    return this._config;\n  }\n\n  public showError(text: string) {\n    this.show({text, type: 'error' });\n  }\n\n  public showWarning(text: string) {\n    this.show({text, type: 'warning' });\n  }\n\n  public showInformation(text: string) {\n    this.show({text, type: 'info' });\n  }\n\n  public showSuccess(text: string) {\n    this.show({text, type: 'success' });\n  }\n\n  private show(data: ToastData) {\n    const positionStrategy = this.getPositionStrategy();\n    const overlayRef = this.overlay.create({ positionStrategy, panelClass: 'slab-toast-panel' });\n\n    const toastRef = new ToastRef(overlayRef);\n    this._lastToast = toastRef;\n\n    const injector = this.getInjector(data, toastRef, this.parentInjector);\n    const toastPortal = new ComponentPortal(ToastComponent, null, injector);\n\n    overlayRef.attach(toastPortal);\n\n    return toastRef;\n  }\n\n  private getPositionStrategy() {\n    if (!this._lastToast || (this._lastToast && !this._lastToast.isVisible())) {\n      return this.overlay.position().global().bottom(this.getPosition()).centerHorizontally();\n    } else {\n      return this.overlay.position().global().top(this.getPosition()).centerHorizontally();\n    }\n  }\n\n  private getPosition() {\n    const lastToastIsVisible = this._lastToast && this._lastToast.isVisible();\n    let position = 25;\n    if (lastToastIsVisible) {\n      const { height, top } = this._lastToast.getPosition();\n      position = top - height - 25;\n    }\n\n    return position + 'px';\n  }\n\n  private getInjector(data: ToastData, toastRef: ToastRef, parentInjector: Injector) {\n    return Injector.create({\n      parent: parentInjector,\n      providers: [\n        { provide: ToastData, useValue: data },\n        { provide: ToastRef, useValue: toastRef },\n      ]\n    });\n  }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { toastAnimations, ToastAnimationState } from './toast-animation';\nimport { ToastConfig, ToastData, ToastSize } from './toast-config';\nimport { ToastRef } from './toast-ref';\nimport { ToastService } from './toast.service';\n\nconst ICONS = {\n  success: 'icon-check-circle',\n  info: 'icon-info-circle',\n  warning: 'icon-warning',\n  error: 'icon-times-circle',\n};\n\n@Component({\n  selector: 'systelab-toast',\n  templateUrl: './toast.component.html',\n  animations: [toastAnimations.fadeToast],\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n  public iconClass: string;\n  public toastClass: string;\n  public animationState: ToastAnimationState = 'default';\n  public config: ToastConfig;\n\n  private _intervalId: number;\n\n  constructor(readonly data: ToastData, readonly ref: ToastRef, readonly toastService: ToastService) {\n    this.config = this.toastService.getConfig();\n    this.iconClass = `fa ${ICONS[data.type]}`;\n    this.toastClass = `slab-toast slab-toast--${data.type}`;\n    if (this.config.autoWidth) {\n      this.toastClass = `${this.toastClass} slab-toast--auto-width`;\n    } else if (this.config.fixedSize === ToastSize.small) {\n      this.toastClass = `${this.toastClass} slab-toast--fixed-size-small`;\n    } else if (this.config.fixedSize === ToastSize.large) {\n      this.toastClass = `${this.toastClass} slab-toast--fixed-size-large`;\n    }\n    if (this.config.showCloseButton) {\n      this.toastClass = `${this.toastClass} show-close-button`;\n    }\n  }\n\n  public ngOnInit(): void {\n    this._intervalId = window.setTimeout(() => (this.animationState = 'closing'), this.config.timeout);\n  }\n\n  public closeToast(): void {\n    this.close();\n  }\n\n  public onFadeFinished(event: AnimationEvent) {\n    const { toState } = event;\n    const isFadeOut = (toState as ToastAnimationState) === 'closing';\n    const isFinished = this.animationState === 'closing';\n\n    if (isFadeOut && isFinished) {\n      this.close();\n    }\n  }\n\n  public ngOnDestroy() {\n    clearTimeout(this._intervalId);\n  }\n\n  private close(): void {\n    this.ref.close();\n  }\n}\n","<div [ngClass]=\"toastClass\"\n     [@fadeAnimation]=\"{ value: animationState, params: { fadeIn: 1000, fadeOut: 1000 } }\"\n     (@fadeAnimation.done)=\"onFadeFinished($event)\">\n    <i class=\"type\" [ngClass]=\"iconClass\"></i>\n    <div>{{ data.text }}</div>\n    @if (config.showCloseButton) {\n    <i class=\"close\" (click)=\"closeToast()\"></i>\n    }\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface ToggleSelectorOption {\n  id: string;\n  name: string;\n}\n\n@Component({\n  selector: 'systelab-toggle-selector',\n  templateUrl: './toggle-selector.component.html'\n})\nexport class ToggleSelectorComponent {\n  @Input() public options: Array<ToggleSelectorOption> = [];\n\n  @Input() public currentOption: string;\n  @Output() public currentOptionChange = new EventEmitter<string>();\n\n  @Output() public select = new EventEmitter<ToggleSelectorOption>();\n\n  public selectOption(option: ToggleSelectorOption): void {\n    this.currentOption = option.id;\n    this.select.emit(option);\n    this.currentOptionChange.emit(option.id);\n  }\n}\n","<div class=\"slab-toggle-selector\">\n    @for (option of options; track option.id) {\n        <div [id]=\"'id'+option.id\" class=\"slab-option\"\n             [class.slab-selected]=\"currentOption === option.id\"\n             (click)=\"selectOption(option)\">\n            <span>{{ option.name }}</span>\n        </div>\n    }\n</div>\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\n\n@Component({\n\tselector:    'systelab-slider-double-range',\n\ttemplateUrl: 'slider-double-range.component.html'\n})\nexport class SliderDoubleRangeComponent {\n\n\t@Input() public min = 0;\n\t@Input() public max = 100;\n\t@Input() public step = 1;\n\t@Input() public continuous = true;\n\n\t@Input() public minValue = 0;\n\t@Input() public maxValue = 0;\n\t@Output() public minValueChange = new EventEmitter();\n\t@Output() public maxValueChange = new EventEmitter();\n\n\t@ViewChild('firstRange', {static: false}) firstRange: ElementRef;\n\t@ViewChild('secondRange', {static: false}) secondRange: ElementRef;\n\n\tminGap = 0;\n\tclicked = false;\n\n\tpublic firstSliderInputEvent(): void {\n\t\tconst result = Number(this.secondRange.nativeElement.value) - Number(this.firstRange.nativeElement.value);\n\t\tthis.clicked = true;\n\t\tif (result <= this.minGap) {\n\t\t\tthis.minValue = Number(this.secondRange.nativeElement.value);\n\t\t\tthis.firstRange.nativeElement.value = this.minValue;\n\t\t}else{\n\t\t\tthis.minValue = Number(this.firstRange.nativeElement.value);\n\t\t}\n\t\tthis.minValueChange.emit(this.minValue);\n\t}\n\n\tpublic sliderOneChangeEvent(): void {\n\t\tconst value = this.firstRange.nativeElement.value;\n\t\tif (value !== this.minValue) {\n\t\t\tthis.minValue = value;\n\t\t\tthis.minValueChange.emit(this.minValue);\n\t\t}\n\t}\n\n\tpublic secondSliderInputEvent(): void {\n\t\tthis.clicked = true;\n\t\tconst result = Number(this.secondRange.nativeElement.value) - Number(this.firstRange.nativeElement.value);\n\t\tif (result <= this.minGap) {\n\t\t\tthis.maxValue = Number(this.firstRange.nativeElement.value);\n\t\t\tthis.secondRange.nativeElement.value = this.maxValue;\n\t\t}else{\n\t\t\tthis.maxValue = Number(this.secondRange.nativeElement.value);\n\t\t}\n\t\tthis.maxValueChange.emit(this.maxValue);\n\t}\n\n\tpublic sliderTwoChangeEvent(): void {\n\t\tconst value = this.secondRange.nativeElement.value;\n\t\tif (value!== this.maxValue) {\n\t\t\tthis.maxValue = value;\n\t\t\tthis.maxValueChange.emit(this.maxValue);\n\t\t}\n\t}\n}\n","<div class=\"slider-container\">\n  <div class=\"slider-track\" [ngClass]=\"clicked ?'focused':''\"></div>\n  <input #firstRange type=\"range\" min=\"{{ min }}\" max=\"{{ max }}\" value=\"{{ minValue }}\" step=\"{{ step }}\"\n    (input)=\"firstSliderInputEvent()\" (change)=\"sliderOneChangeEvent()\" class=\"slab-slider-double\" id=\"firstRange\" />\n\n  <input #secondRange type=\"range\" min=\"{{ min }}\" max=\"{{ max }}\" value=\"{{ maxValue }}\" step=\"{{ step }}\"\n    (input)=\"secondSliderInputEvent()\" (change)=\"sliderTwoChangeEvent()\" class=\"slab-slider-double\" id=\"secondRange\" />\n</div>","import { Directive, ElementRef, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport interact from 'interactjs';\n\n@Directive({\n\tselector: '[draggable]'\n})\nexport class DraggableDirective implements OnInit {\n\n\t@Input() public model: any;\n\t@Input() public draggableOptions: any;\n\t@Input() public zoom = 1;\n\n\t@Output() public draggableClick = new EventEmitter();\n\t@Output() public finalPosition = new EventEmitter();\n\t@Output() public currentPosition = new EventEmitter();\n\n\tprivate currentlyDragged = false;\n\tprivate currentlyResizing = false;\n\n\tconstructor(private readonly element: ElementRef) {\n\t}\n\n\t@HostListener('click', ['$event'])\n\tpublic onClick(event: any): void {\n\t\tif (!this.currentlyDragged && !this.currentlyResizing) {\n\t\t\tthis.draggableClick.emit(event);\n\t\t}\n\t}\n\n\tpublic ngOnInit(): void {\n\t\tif (this.draggableOptions.restrictParent) {\n\t\t\tthis.draggableOptions.modifiers = [\n\t\t\t\tinteract.modifiers.restrictRect({\n\t\t\t\t\trestriction: 'parent',\n\t\t\t\t\tendOnly:     false\n\t\t\t\t})];\n\n\t\t}\n\t\tinteract(this.element.nativeElement)\n\t\t\t.draggable(Object.assign({}, this.draggableOptions || {}))\n\t\t\t.on('dragmove', event => this.doDragMove(event))\n\t\t\t.on('dragend', event => this.doDragEnd(event))\n\t\t\t.on('resizemove', () => this.doCurrentlyResizingUpdate(true))\n\t\t\t.on('resizeend', () => this.doCurrentlyResizingUpdate(false));\n\t}\n\n\tprivate doCurrentlyResizingUpdate(value: boolean): void {\n\t\tsetTimeout(() => {\n\t\t\tthis.currentlyResizing = value;\n\t\t});\n\t}\n\n\tprivate doDragEnd(event): void {\n\t\tevent.target.classList.remove('getting-dragged');\n\t\tconst target = event.target;\n\t\tthis.finalPosition.emit({x: target.getAttribute('data-x') || 0, y: target.getAttribute('data-y') || 0});\n\t\tsetTimeout(() => {\n\t\t\t(window as any).dragData = null;\n\t\t\tthis.currentlyDragged = false;\n\t\t});\n\t}\n\n\tprivate doDragMove(event): void {\n\t\tconst target = event.target;\n\t\tconst x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx / this.zoom;\n\t\tconst y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy / this.zoom;\n\n\t\ttarget.style.transform = 'translate(' + x + 'px, ' + y + 'px)';\n\t\ttarget.setAttribute('data-x', x);\n\t\ttarget.setAttribute('data-y', y);\n\n\t\ttarget.classList.add('getting-dragged');\n\t\tthis.currentlyDragged = true;\n\t\tthis.currentPosition.emit({x: target.getAttribute('data-x') || 0, y: target.getAttribute('data-y') || 0});\n\t\t(window as any).dragData = this.model;\n\t}\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport interact from 'interactjs';\n\n@Directive({\n\tselector: '[resizable]'\n})\nexport class ResizableDirective implements OnInit {\n\n\t@Input() public model: any;\n\t@Input() public resizableOptions: any;\n\t@Input() public zoom = 1;\n\n\t@Output() public resizeClick = new EventEmitter();\n\t@Output() public finalSize = new EventEmitter();\n\t@Output() public currentSize = new EventEmitter();\n\n\tprivate currentlyDragged = false;\n\tprivate currentlyResizing = false;\n\n\tconstructor(private element: ElementRef) {\n\t}\n\n\t@HostListener('click', ['$event'])\n\tpublic onClick(event: any): void {\n\t\tif (!this.currentlyDragged && !this.currentlyResizing) {\n\t\t\tthis.resizeClick.emit(this.model);\n\t\t}\n\t}\n\n\tpublic ngOnInit(): void {\n\n\t\tinteract(this.element.nativeElement)\n\t\t\t.resizable(Object.assign({}, this.resizableOptions || {}))\n\t\t\t.on('resizemove', (event) => this.doResizeMove(event))\n\t\t\t.on('dragmove', () => this.doCurrentlyDraggedUpdate(true))\n\t\t\t.on('dragend', () => this.doCurrentlyDraggedUpdate(false))\n\t\t\t.on('resizeend', (event) => this.doResizeEnd(event));\n\t}\n\n\tprivate doResizeEnd(event): void {\n\t\tconst target = event.target;\n\t\ttarget.setAttribute('original-w', 0);\n\t\ttarget.setAttribute('original-h', 0);\n\t\tthis.finalSize.emit({x: target.getAttribute('data-x') || 0, y: target.getAttribute('data-y') || 0});\n\t\tsetTimeout(() => {\n\t\t\tthis.currentlyResizing = false;\n\t\t});\n\t}\n\n\tprivate doCurrentlyDraggedUpdate(value: boolean): void {\n\t\tsetTimeout(() => {\n\t\t\tthis.currentlyDragged = value;\n\t\t});\n\t}\n\n\tprivate doResizeMove(event): void {\n\t\tconst target = event.target;\n\t\tthis.currentlyResizing = true;\n\t\tlet x = (parseFloat(target.getAttribute('data-x')) || 0);\n\t\tlet y = (parseFloat(target.getAttribute('data-y')) || 0);\n\t\tlet w = (parseFloat(target.getAttribute('original-w')) || 0);\n\t\tlet h = (parseFloat(target.getAttribute('original-h')) || 0);\n\t\tif (w === 0) {\n\t\t\tw = event.target.offsetWidth;\n\t\t\ttarget.setAttribute('original-w', w);\n\n\t\t}\n\t\tif (h === 0) {\n\t\t\th = event.target.offsetHeight;\n\t\t\ttarget.setAttribute('original-h', h);\n\n\t\t}\n\t\t// update the element's style\n\t\ttarget.style.width = event.rect.width / this.zoom + 'px';\n\t\ttarget.style.height = event.rect.height / this.zoom + 'px';\n\n\t\t// translate when resizing from top or left edges\n\t\tx += event.deltaRect.left / this.zoom;\n\t\ty += event.deltaRect.top / this.zoom;\n\n\t\ttarget.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n\n\t\ttarget.setAttribute('data-x', x);\n\t\ttarget.setAttribute('data-y', y);\n\t\tthis.currentSize.emit({\n\t\t\tw: -w + event.target.offsetWidth || 0,\n\t\t\th: -h + event.target.offsetHeight || 0,\n\t\t\tx: target.getAttribute('data-x'),\n\t\t\ty: target.getAttribute('data-y')\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tHostListener,\n\tInput, OnInit,\n\tOutput,\n\tViewChild\n} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\n\nexport enum ActionButtonType {\n\tBUTTON,\n\tTOGGLE_BUTTON,\n\tDROP_DOWN\n}\n\nexport interface ActionButton {\n\taction: string;\n\tlabel: string;\n\ttooltip?: string;\n\ttype: ActionButtonType;\n\tstate?: { checked?: boolean, disabled: boolean };\n}\n\n@Component({\n\tselector:    'systelab-image-viewer',\n\ttemplateUrl: 'image-viewer.component.html',\n\tstyleUrls:   ['image-viewer.component.scss']\n})\nexport class ImageViewerComponent implements OnInit {\n\n\t@Input() public imageSrc: string;\n\t@Input() public imageTitle: string;\n\t@Input() public overlayText: string;\n\t@Input() public actionButtons: ActionButton[];\n\t@Input() public imageFilters = '';\n\t@Input() public showSaveButton = true;\n\t@Input() public showZoomByAreaButton = false;\n\t@Input() public showAdjustButton = false;\n\t@Input() public showZoomScale = false;\n\t@Input() public showSliderToolTip = false;\n\t@Input() public sliderZoomMin = 100;\n\t@Input() public sliderZoomMax = 200;\n\t@Input() public sliderZoomStep = 1;\n\t@Input() public transparentBackgroundForButtons = false;\n\t@Input() public overlapImageWithButtons = true;\n\t@Input() public allowBorderColor = 'white';\n\n\t@Output() public clickActionButton = new EventEmitter<string>();\n\t@Output() public clickOverlayText = new EventEmitter();\n\n\t@ViewChild('imageViewerWrapper') public imageViewerWrapper: ElementRef;\n\t@ViewChild('imageViewerImg') public imageViewerImg: ElementRef;\n\n\tpublic zoomEnabled = false;\n\tpublic dragEnabled = false;\n\n\tpublic imgParams = {\n\t\tsliderZoomPct: null,\n\t\tfilter:        undefined,\n\t\ttop:           0,\n\t\tleft:          0,\n\t\twidth:         null,\n\t\theight:        null\n\t};\n\n\tpublic zoomSelector = {\n\t\tvisible: false,\n\t\tallow:   true,\n\t\ttop:     null,\n\t\tleft:    null,\n\t\twidth:   null,\n\t\theight:  null\n\t};\n\n\tpublic zoomScale = {\n\t\ttotalWidth: null,\n\t\tsliderThumb:     14,\n\t\tchunks: 8,\n\t\tmarks: [{marginLeft: 0, label: ''}],\n\t};\n\n\tpublic actionButtonType: any = ActionButtonType;\n\tpublic safeHtml: SafeHtml = '';\n\tpublic filteredUrl = '';\n\tpublic imageWidth ='';\n\n\tprivate zoomArea = {\n\t\ttop:          null,\n\t\tleft:         null, //zoomArea\n\t\tscrollTop:    null,\n\t\tscrollLeft:   null,\n\t\tcursorStartX: null,\n\t\tcursorStartY: null, //cursor\n\t\timgStartLeft: null,\n\t\timgStartTop:  null, //image\n\t\tminDragLeft:  null,\n\t\tmaxDragLeft:  null,\n\t\tminDragTop:   null,\n\t\tmaxDragTop:   null\n\t};\n\n\tprivate viewPort: any;\n\tprivate image: any;\n\tprivate wrapper: any;\n\n\tprivate imageClicked = false;\n\n\tconstructor(private readonly chref: ChangeDetectorRef, private readonly elementRef: ElementRef,\n\t\t\t\tprivate readonly sanitizer: DomSanitizer) {\n\t}\n\n\tngOnInit(): void {\n\t\tthis.safeHtml = this.sanitizer.bypassSecurityTrustHtml(this.imageFilters);\n\t\tthis.imageWidth = this.getWidth();\n\t}\n\n\t@HostListener('mousedown', ['$event'])\n\tpublic doMouseDown(event: any): void {\n\t\tif (event.target.id === 'imageViewerImg') {\n\t\t\tevent.preventDefault();\n\n\t\t\tthis.initializeCommonParameters(event.clientX, event.clientY);\n\n\t\t\tif (this.dragEnabled) {\n\t\t\t\tthis.initializeDragAction();\n\n\t\t\t} else if (this.zoomEnabled) {\n\t\t\t\tthis.initializeZoomByAreaAction();\n\t\t\t}\n\t\t}\n\t}\n\n\t@HostListener('mousemove', ['$event'])\n\tpublic doMouseMove(event: MouseEvent): void {\n\t\tif (this.imageClicked) {\n\t\t\tif (this.dragEnabled) {\n\n\t\t\t\tthis.scrollViewport(this.zoomArea.cursorStartX - event.clientX + this.zoomArea.left,\n\t\t\t\t\tthis.zoomArea.cursorStartY - event.clientY + this.zoomArea.top);\n\n\t\t\t} else if (this.zoomEnabled) {\n\t\t\t\tthis.updateZoomSelector(event.clientX, event.clientY);\n\t\t\t}\n\t\t}\n\t}\n\n\t@HostListener('mouseup')\n\tpublic doMouseUp(): void {\n\t\tif (this.imageClicked) {\n\t\t\tif (this.dragEnabled) {\n\t\t\t\tthis.zoomArea.scrollTop = this.viewPort.scrollTop;\n\t\t\t\tthis.zoomArea.scrollLeft = this.viewPort.scrollLeft;\n\n\t\t\t} else if (this.zoomEnabled && this.zoomSelector.allow) {\n\t\t\t\tif (this.zoomSelector.width > 0 && this.zoomSelector.height > 0) {\n\t\t\t\t\tthis.resizeZoomSelectorAndImage();\n\t\t\t\t}\n\t\t\t\tthis.chref.detectChanges();\n\t\t\t\tthis.imgParams.sliderZoomPct = this.getSliderPct();\n\t\t\t}\n\t\t\tthis.deactivateZoomSelector();\n\t\t\tthis.imageClicked = false;\n\t\t} else {\n\t\t\tthis.zoomArea.scrollTop = this.viewPort.scrollTop;\n\t\t\tthis.zoomArea.scrollLeft = this.viewPort.scrollLeft;\n\t\t}\n\t}\n\n\tpublic getWidth(): string {\n\t\tif (this.zoomEnabled) {\n\t\t\treturn this.imgParams.width + 'px';\n\t\t} else {\n\t\t\treturn this.imgParams.sliderZoomPct ? this.image.naturalWidth * this.imgParams.sliderZoomPct / 100 + 'px'\n\t\t\t\t: undefined;\n\t\t}\n\t}\n\n\tpublic getFilter(): string {\n\t\treturn this.imgParams.filter;\n\t}\n\n\tpublic setFilter(filter: string): void {\n\t\tthis.imgParams.filter = filter;\n\t\tthis.filteredUrl = this.getFilterUrl();\n\t}\n\n\tpublic doAdjust(): void {\n\t\tthis.imgParams.sliderZoomPct = this.getInitialZoom();\n\t\tthis.dragEnabled = false;\n\t\tthis.zoomEnabled = false;\n\t\tthis.imageWidth = this.getWidth();\n\t}\n\n\tpublic toggleZoomByArea(): void {\n\t\tif (this.zoomEnabled) {\n\t\t\tthis.zoomEnabled = false;\n\t\t\tthis.dragEnabled = this.imageOverflowViewport();\n\t\t} else {\n\t\t\tthis.scaleImage(1);\n\t\t\tthis.zoomEnabled = true;\n\t\t\tthis.dragEnabled = false;\n\t\t}\n\t\tthis.imageWidth = this.getWidth();\n\t}\n\n\tpublic sliderZoomChanged(): void {\n\t\tthis.dragEnabled = this.imageOverflowViewport();\n\t\tthis.zoomEnabled = false;\n\t\tthis.imageWidth = this.getWidth();\n\t\tthis.scaleImage(1);\n\t}\n\n\tpublic setInitialValues(): void {\n\t\tthis.viewPort = this.elementRef.nativeElement;\n\t\tthis.image = this.imageViewerImg.nativeElement;\n\t\tthis.wrapper = this.imageViewerWrapper.nativeElement;\n\n\t\t// Set zoom scale width and marks\n\t\tthis.zoomScale.totalWidth = this.viewPort.querySelector('input[type=\"range\"]').offsetWidth;\n\n\t\t// Set zoom to fit the image\n\t\tthis.imgParams.sliderZoomPct = this.getInitialZoom();\n\t\t// Min zoom 5% smaller than initial zoom\n\t\tthis.sliderZoomMin = this.imgParams.sliderZoomPct - 5;\n\n\t\t// Calculate ruler marks (100x matches the real size of the image)\n\t\tconst zoomMarkLength = this.sliderZoomMax / this.zoomScale.chunks;\n\t\tthis.zoomScale.marks = [];\n\n\t\tfor (let i = 1; i <= this.zoomScale.chunks; i += 1) {\n\t\t\tconst label = i % 2 ? '' : zoomMarkLength*i/100 + '';\n\t\t\tconst marginLeftValue = this.getSliderMarkMarginByZoomFactor(zoomMarkLength*i)-1;\n\t\t\tif (marginLeftValue > 0) {\n\t\t\t\tthis.zoomScale.marks.push({marginLeft: marginLeftValue, label});\n\t\t\t}\n\t\t}\n\t\tthis.doAdjust();\n\t}\n\n\tpublic isFilterEnabled(action: string): boolean {\n\t\treturn this.imgParams.filter === action;\n\t}\n\n\tpublic getDropMainDownLabel(dropDownLabel: string): string {\n\t\treturn dropDownLabel.substring(0, dropDownLabel.indexOf('|'));\n\t}\n\n\tpublic getDropDownLabels(dropDownLabel: string): string[] {\n\t\treturn dropDownLabel.slice(dropDownLabel.indexOf('|') + 1)\n\t\t\t.split(';');\n\t}\n\n\tpublic getDropDownAction(dropDownActions: string, i: number): string {\n\t\treturn dropDownActions.split(';')[i];\n\t}\n\n\tpublic getFilterUrl(): string {\n\t\treturn this.imgParams.filter ? `url(#${this.imgParams.filter})` : '';\n\t}\n\n\tprivate initializeCommonParameters(xCoord: number, yCoord: number): void {\n\t\tconst viewportOffset =  this.viewPort.getBoundingClientRect();\n\t\tthis.imageClicked = true;\n\t\t//store zoomArea left&top\n\t\tthis.zoomArea.left = viewportOffset.left;\n\t\tthis.zoomArea.top = viewportOffset.top;\n\n\t\t//store starting positions of cursor (relative to zoomArea)\n\t\tthis.zoomArea.cursorStartX = xCoord + this.viewPort.scrollLeft - this.zoomArea.left;\n\t\tthis.zoomArea.cursorStartY = yCoord + this.viewPort.scrollTop - this.zoomArea.top;\n\t}\n\n\tprivate initializeZoomByAreaAction(): void {\n\t\t//set drag boundaries (relative to zoomArea)\n\t\tthis.zoomArea.minDragLeft = 0;\n\t\tthis.zoomArea.maxDragLeft = this.wrapper.width;\n\t\tthis.zoomArea.minDragTop = 0;\n\t\tthis.zoomArea.maxDragTop = this.wrapper.height;\n\n\t\tthis.activateZoomSelector();\n\t}\n\n\tprivate initializeDragAction(): void {\n\t\t//store starting positions of image (relative to zoomArea)\n\t\tthis.zoomArea.imgStartLeft = this.image.offsetLeft;\n\t\tthis.zoomArea.imgStartTop = this.image.offsetTop;\n\n\t\t//set drag boundaries (relative to zoomArea)\n\t\tthis.zoomArea.minDragLeft = this.wrapper.width - this.image.width;\n\t\tthis.zoomArea.maxDragLeft = 0;\n\t\tthis.zoomArea.minDragTop = this.wrapper.height - this.image.height;\n\n\t\tthis.zoomArea.maxDragTop = 0;\n\t}\n\n\tprivate updateZoomSelector(xCoord: number, yCoord: number): void {\n\t\t//calculate selector width and height (relative to zoomArea)\n\t\tlet width = (xCoord + this.viewPort.scrollLeft - this.zoomArea.left) - this.zoomArea.cursorStartX;\n\t\tlet height = (yCoord + this.viewPort.scrollTop - this.zoomArea.top) - this.zoomArea.cursorStartY;\n\n\t\t//prevent dragging in prohibited areas (relative to zoomArea)\n\t\tif (xCoord - this.zoomArea.left <= this.zoomArea.minDragLeft) {\n\t\t\twidth = this.zoomArea.minDragLeft - this.zoomArea.cursorStartX;\n\t\t} else if (xCoord - this.zoomArea.left >= this.zoomArea.maxDragLeft) {\n\t\t\twidth = this.zoomArea.maxDragLeft - this.zoomArea.cursorStartX;\n\t\t}\n\t\tif (yCoord - this.zoomArea.top <= this.zoomArea.minDragTop) {\n\t\t\theight = this.zoomArea.minDragTop - this.zoomArea.cursorStartY;\n\t\t} else if (yCoord - this.zoomArea.top >= this.zoomArea.maxDragTop) {\n\t\t\theight = this.zoomArea.maxDragTop - this.zoomArea.cursorStartY;\n\t\t}\n\t\t//update zoom-selector\n\t\tthis.zoomSelector.width = Math.abs(width);\n\t\tthis.zoomSelector.height = Math.abs(height);\n\t\tif (width < 0) {\n\t\t\tthis.zoomSelector.left = this.zoomArea.cursorStartX - Math.abs(width);\n\t\t}\n\t\tif (height < 0) {\n\t\t\tthis.zoomSelector.top = this.zoomArea.cursorStartY - Math.abs(height);\n\t\t}\n\n\t\t// Prevent zoom factor above the maximum allowed\n\t\tthis.zoomSelector.allow = this.imgParams.width * this.getTargetMagnification() <= this.image.naturalWidth * this.sliderZoomMax / 100;\n\t}\n\n\tprivate resizeZoomSelectorAndImage(): void {\n\t\tconst magnification = this.getTargetMagnification();\n\n\t\tthis.zoomSelector.width *= magnification;\n\t\tthis.zoomSelector.height *= magnification;\n\n\t\t//reposition zoom-selector and image (relative to zoomArea)\n\t\tconst selectorLeft = (this.wrapper.width / 2) - (this.zoomSelector.width / 2);\n\t\tconst selectorTop = (this.wrapper.height / 2) - (this.zoomSelector.height / 2);\n\n\t\tthis.zoomSelector.left = selectorLeft;\n\t\tthis.zoomSelector.top = selectorTop;\n\n\t\tthis.scaleImage(magnification);\n\t\tthis.imageWidth = this.getWidth();\n\n\t\tthis.imgParams.sliderZoomPct = this.getSliderPct();\n\n\t\t//scroll viewport after the image is resized\n\t\tsetTimeout(() => {\n\t\t\tthis.scrollViewport(this.zoomArea.cursorStartX * magnification, this.zoomArea.cursorStartY * magnification);\n\t\t}, 10);\n\t}\n\n\tprivate getTargetMagnification(): number {\n\t\treturn this.zoomSelector.width < this.zoomSelector.height ?\n\t\t\tthis.wrapper.offsetWidth / this.zoomSelector.width\n\t\t\t: this.wrapper.offsetHeight / this.zoomSelector.height; //go for the highest magnification\n\t}\n\n\tprivate getSliderMarkMarginByZoomFactor(zoomFactor: number): number {\n\t\treturn ((zoomFactor) - this.sliderZoomMin) / (this.sliderZoomMax - this.sliderZoomMin)\n\t\t* (this.zoomScale.totalWidth - this.zoomScale.sliderThumb) + this.zoomScale.sliderThumb;\n\t}\n\n\tprivate scrollViewport(scrollLeft: number, scrollTop: number): void {\n\t\tthis.viewPort.scrollLeft = scrollLeft;\n\t\tthis.viewPort.scrollTop = scrollTop;\n\t}\n\n\tprivate deactivateZoomSelector(): void {\n\t\tthis.zoomSelector.visible = false;\n\t\tthis.zoomSelector.top = 0;\n\t\tthis.zoomSelector.left = 0;\n\t\tthis.zoomSelector.width = 0;\n\t\tthis.zoomSelector.height = 0;\n\t}\n\n\tprivate activateZoomSelector(): void {\n\t\tthis.zoomSelector.visible = true;\n\t\tthis.zoomSelector.top = this.zoomArea.cursorStartY;\n\t\tthis.zoomSelector.left = this.zoomArea.cursorStartX;\n\t\tthis.zoomSelector.width = 0;\n\t\tthis.zoomSelector.height = 0;\n\t}\n\n\tprivate getSliderPct(): number {\n\t\treturn Math.round(this.image.offsetWidth / this.image.naturalWidth * 100);\n\t}\n\n\tprivate imageOverflowViewport(): boolean {\n\t\treturn this.image.offsetWidth > this.viewPort.offsetWidth || this.image.offsetHeight > this.viewPort.offsetHeight;\n\t}\n\n\tprivate scaleImage(magnification: number): void {\n\t\tthis.imgParams.width = this.image.offsetWidth * magnification;\n\t\tthis.imgParams.height = this.image.offsetHeight * magnification;\n\t}\n\n\tprivate getInitialZoom(): number {\n\t\t// Calculate initial Zoom of the image to fit the window\n\t\tconst availableWidth = this.viewPort.offsetWidth;\n\t\tconst availableHeight = this.viewPort.offsetHeight;\n\n\t\tconst imageWidth = this.image.naturalWidth;\n\t\tconst imageHeight = this.image.naturalHeight;\n\n\t\tlet newZoom: number;\n\t\tif (imageWidth > imageHeight) {\n\t\t\tif (imageWidth < availableWidth) {\n\t\t\t\tnewZoom = (availableHeight / imageHeight) * 100;\n\t\t\t} else {\n\t\t\t\tnewZoom = (availableWidth / imageWidth) * 100;\n\t\t\t}\n\t\t} else {\n\t\t\tif (imageHeight < availableHeight) {\n\t\t\t\tnewZoom = (availableWidth / imageWidth) * 100;\n\t\t\t} else {\n\t\t\t\tnewZoom = (availableHeight / imageHeight) * 100;\n\t\t\t}\n\t\t}\n\t\treturn Math.min(newZoom, this.sliderZoomMax);\n\t}\n}\n","<svg class=\"d-none\" [innerHTML]=\"safeHtml\"></svg>\n\n<div class=\"d-flex flex-column slab-flex-1\" id=\"imageViewerHeader\"\n     [ngClass]=\"transparentBackgroundForButtons ? 'bg-color-transparent' : 'bg-color-primary'\"\n     data-test-id=\"imageViewerHeader\">\n    <div class=\"d-flex\">\n        <div class=\"ml-1\">\n            @for (actionButton of actionButtons; track actionButton.label) {\n                <ng-container>\n                    <systelab-toggle-button *ngIf=\"actionButton.type===actionButtonType.TOGGLE_BUTTON\" class=\"mr-2\"\n                                            [isChecked]=\"actionButton.state?.checked\"\n                                            [disabled]=\"actionButton.state?.disabled\"\n                                            (click)=\"clickActionButton.emit(actionButton.action)\" [systelabTooltip]=\"actionButton.tooltip\">\n                        {{actionButton.label}}\n                    </systelab-toggle-button>\n                    <systelab-button *ngIf=\"actionButton.type===actionButtonType.BUTTON\" class=\"mr-2\"\n                                     [systelabTooltip]=\"actionButton.tooltip\"\n                                     [disabled]=\"actionButton.state?.disabled\"\n                                     (click)=\"clickActionButton.emit(actionButton.action)\">\n                        {{actionButton.label}}\n                    </systelab-button>\n                    <div *ngIf=\"actionButton.type===actionButtonType.DROP_DOWN\" class=\"dropup slab-button-dropdown\">\n                        <button id=\"ADDropDownButton\" type=\"button\" class=\"btn btn-outline-primary dropdown-toogle\"\n                                data-toggle=\"dropdown\">{{getDropMainDownLabel(actionButton.label)}}\n                            <i class=\"ml-1 icon-chevron-up\"></i>\n                        </button>\n                        <div class=\"dropdown-menu slab-dropdown\">\n                            <ul>\n                                @for (dropDownLabel of getDropDownLabels(actionButton.label); track dropDownLabel; let i = $index) {\n                                    <li>\n                                        <a (click)=\"clickActionButton.emit(getDropDownAction(actionButton.action, i))\">{{ dropDownLabel }}</a>\n                                    </li>\n                                }\n                            </ul>\n                        </div>\n                    </div>\n                </ng-container>\n            }\n        </div>\n        <div class=\"d-flex slab-flex-1\" id=\"OverImageArea\"></div>\n        <div class=\"ml-auto\">\n            <a [href]=\"imageSrc\" download=\"{{imageTitle}}\">\n                <systelab-button *ngIf=\"showSaveButton\" data-test-id=\"SaveBtn\"\n                             systelabTooltip=\"{{ 'COMMON_SAVE' | translate | async }}\">\n                    <i class=\"icon-download1\"></i>\n                </systelab-button>\n            </a>\n            <systelab-toggle-button *ngIf=\"showZoomByAreaButton\" class=\"ml-2\" data-test-id=\"ZoomByAreaBtn\" systelabTooltip=\"{{ 'COMMON_ZOOM_DRAG' | translate | async }}\"\n                                    (click)=\"toggleZoomByArea()\" [isChecked]=\"this.zoomEnabled\">\n                <i class=\"icon-search\"></i>\n            </systelab-toggle-button>\n            <systelab-button *ngIf=\"showAdjustButton\" class=\"ml-2\" data-test-id=\"AdjustBtn\" (click)=\"doAdjust()\" systelabTooltip=\"{{ 'COMMON_ADJUST' | translate | async }}\">\n                <i class=\"icon-enlarge\"></i>\n            </systelab-button>\n        </div>\n        <systelab-slider class=\"m-2 pl-2 bg-primary-track\" id=\"ImageViewerSlider\" data-test-id=\"ImageViewerSlider\"\n                         [systelabTooltip]=\"showSliderToolTip ? (imgParams.sliderZoomPct/100 | number:'1.0-1')+'x' : ''\"\n                         [(value)]=\"imgParams.sliderZoomPct\" (valueChange)=\"sliderZoomChanged()\"\n                         [min]=\"sliderZoomMin\"\n                         [max]=\"sliderZoomMax\"\n                         [step]=\"sliderZoomStep\"></systelab-slider>\n\n    </div>\n    <div class=\"d-flex justify-content-end\" *ngIf=\"showZoomScale\">\n        <div id=\"zoomScale\" class=\"m-2\" [style.width]=\"zoomScale.totalWidth+'px'\">\n            @for (mark of zoomScale.marks; track mark.label) {\n                <div class='zoomScaleMark'\n                     [style.left.px]=\"mark.marginLeft\"\n                     [style.height.px]=\"mark.label !== ''? 10:6\"\n                >{{mark.label | number:'1.0-1'}}</div>\n            }\n        </div>\n    </div>\n</div>\n\n<div *ngIf=\"imageSrc; else noImage\" id=\"imageViewerWrapper\" #imageViewerWrapper [ngClass]=\"{'zooming' : zoomEnabled, 'dragging' : dragEnabled }\">\n\n    <img data-test-id=\"ImageViewerImg\" id=\"imageViewerImg\" #imageViewerImg\n         [ngClass]=\"{'no-overlapping' : !overlapImageWithButtons }\"\n         [src]=\"imageSrc\"\n         (load)=\"setInitialValues()\"\n         [ngStyle]=\"{\n            'filter': filteredUrl,\n            'width': imageWidth,\n            'cursor':zoomSelector.visible && !zoomSelector.allow ? 'not-allowed' : 'inherit'}\"\n         alt=\"{{imageTitle}}\"/>\n\n    <div id=\"selector\" data-test-id=\"ZoomSelector\"\n         [style.display]=\"zoomSelector.visible ? 'block' : 'none'\"\n         [style.borderColor]=\"zoomSelector.allow ? allowBorderColor : 'red'\"\n         [style.top.px]=\"zoomSelector.top\"\n         [style.left.px]=\"zoomSelector.left\"\n         [style.width.px]=\"zoomSelector.width\"\n         [style.height.px]=\"zoomSelector.height\"></div>\n</div>\n<div class=\"mlab-link\" id=\"imageViewerOverlayText\" data-test-id=\"ImageViewerOverlayText\" *ngIf=\"overlayText\"\n     (click)=\"clickOverlayText.emit()\">{{overlayText}}</div>\n\n<ng-template #noImage>\n    <span class=\"slab-flex-1 d-flex justify-content-center align-items-center \" style=\"font-size: 5em; color: lightgrey;\">\n        <i class=\"icon-exclamation\"></i>\n    </span>\n</ng-template>\n","import { I18nService } from 'systelab-translate';\nimport { Injectable } from '@angular/core';\n\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class TranslationHelper {\n\tconstructor(public i18nService: I18nService) {\n\t}\n\n\tpublic getLanguageFromLocale(locale: string): string {\n\t\treturn locale.substring(0, 2);\n\t}\n\n\n}\n","import { Injectable } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\nimport { TranslationHelper } from './translation-helper';\n\n\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class NumberHelper {\n\n\tconstructor(private i18nService: I18nService,\n\t\t\t\tprivate translationHelper: TranslationHelper) {\n\t}\n\n\n\tpublic getStringFromNumber(numberToString: number): string {\n\t\tif (numberToString || numberToString === 0) {\n\t\t\treturn numberToString.toLocaleString(this.translationHelper.getLanguageFromLocale(this.i18nService.getLocale()));\n\t\t}\n\t\treturn '';\n\t}\n\n\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\nimport { NumberHelper } from '../helper/number-helper';\n\n\n@Directive({\n\tselector: '[systelabNumPadDecimalNumericDirective]'\n})\n\nexport class NumpadDecimalNumericDirective {\n\n\tprivate decimalSeparator = ',';\n\n\tconstructor(private el: ElementRef,\n\t\t\t\tprotected i18nService: I18nService,\n\t\t\t\tprivate numberHelper: NumberHelper) { }\n\n\t@HostListener('keyup', ['$event']) keyup(event: KeyboardEvent): void {\n\t\t// get position\n\t\tconst pos = this.el.nativeElement.selectionStart;\n\n\t\tlet val = this.el.nativeElement.value;\n\n\t\tif (event.code === 'NumpadDecimal' && event.key === '.') {\n\t\t\tconst myNumber = 2.3;\n\t\t\tconst stringNumber = this.numberHelper.getStringFromNumber(myNumber);\n\t\t\tthis.decimalSeparator = stringNumber.substring(1, 2);\n\t\t\tval = val.substring(0, pos - 1) + this.decimalSeparator + val.substring( pos) ;\n\t\t\tthis.el.nativeElement.value = val;\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.el.nativeElement.selectionStart = pos;\n\t\t\t\tthis.el.nativeElement.selectionEnd = pos;\n\t\t\t});\n\t\t}\n\t}\n}\n","import { Component } from '@angular/core';\nimport { AgEditorComponent } from 'ag-grid-angular';\n\n@Component({\n\tselector: 'systelab-positive-integer-input-cell-editor',\n\ttemplateUrl: 'positive-integer-input-cell-editor.component.html',\n})\nexport class PositiveIntegerInputCellEditorComponent implements AgEditorComponent {\n\tpublic value: string;\n\tpublic isEditable = true;\n\tpublic params: any;\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t\tthis.value = this.params.value;\n\t}\n\n\tpublic getValue(): any {\n\t\treturn this.value;\n\t}\n\n\t// Only digits and some keys are allowed to enter a positive number\n\tpublic onKeyDown(event: KeyboardEvent): void {\n\t\tconst allowedKeys = ['Backspace', 'Tab', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End', 'Enter'];\n\t\tif (allowedKeys.includes(event.key)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!/^\\d+$/.test(event.key)) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n}\n","<input title=\"input-cell\" type=\"number\" step=\"any\" class=\"w-100 h-100 border-0 bg-transparent\"\n       [disabled]=\"!isEditable\"\n       [(ngModel)]=\"value\"\n       (keydown)=\"onKeyDown($event)\">\n","import { Directive, ElementRef, Inject, Input, OnChanges, Optional, Renderer2 } from '@angular/core';\nimport { APP_CONFIG } from '../systelab-components.module.config';\n\nconst DEFAULT_PRODUCTION_MODE = true;\n@Directive({\n  selector: '[systelabTestId]'\n})\nexport class TestIdDirective implements OnChanges {\n  @Input('systelabTestId') label: string;\n  private readonly productionMode: boolean;\n\n  constructor(@Optional() @Inject(APP_CONFIG) private config, private renderer: Renderer2, private el: ElementRef) {\n    this.productionMode = (config) ? config.productionMode : DEFAULT_PRODUCTION_MODE;\n  }\n\n  ngOnChanges() {\n      this.addE2EAttribute();\n  }\n\n  private addE2EAttribute() {\n    if (this.productionMode) {\n      return;\n    }\n    this.renderer.setAttribute(this.el.nativeElement, 'data-test-id', this.label);\n  }\n\n}\n","import { Component } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\n\n@Component({\n\ttemplateUrl: './searcher-tree-header-renderer.component.html'\n})\nexport class SearcherTreeHeaderRendererComponent implements AgRendererComponent  {\n\n\tpublic params: any;\n\n\tpublic agInit(params: any): void {\n\t\tthis.params = params;\n\t}\n\n\tpublic refresh(params: any): boolean {\n\t\treturn true;\n\t}\n\n\tpublic doClick(event): void {\n\t\tif(this.params.context.componentParent.searcher.parentSelectable) {\n\t\t\tthis.params.context.componentParent.clickRow.emit(event);\n\t\t}\n\t}\n}\n","<div class=\"ag-header-cell-label h-100\" style=\"background-color: #959595; color: white\"\n     (click)=\"doClick(params.data)\">{{params.data.description}}</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { PreferencesService } from 'systelab-preferences';\n\n@Component({\n\tselector:    'systelab-accordion',\n\ttemplateUrl: './accordion.component.html',\n\tstyleUrls: ['./accordion.component.scss']\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class Accordion implements OnInit {\n\t@Input() headerTitle: string = '';\n\t@Input() preferenceName: string;\n\t@Input() contentMaxHeight: number = 300;\n\t@Input() withOverflow: boolean = false;\n\t@Input() headerColor: string;\n\t@Input() iconColor: string;\n\tpublic isCollapsed: boolean = false;\n\tprivate preferenceSuffix: string = 'accordionStatus';\n\n\tconstructor(private readonly preferenceService: PreferencesService) {\n\t}\n\n\tpublic ngOnInit() {\n\t\tif(this.preferenceName) {\n\t\t\tthis.preferenceName = `${this.preferenceName}.${this.preferenceSuffix}`;\n\t\t\tthis.isCollapsed = this.preferenceService.get(this.preferenceName, false);\n\t\t\tthis.preferenceService.put(this.preferenceName, this.isCollapsed);\n\t\t}\n\t}\n}","<div class=\"slab-flex-1 d-flex flex-column\">\n    <div class=\"accordion-header d-flex align-items-center font-weight-bold px-3\" [ngStyle]=\"{'backgroundColor': headerColor}\" (click)=\"isCollapsed = !isCollapsed\">\n        <i class=\"d-flex justify-content-center align-items-center position-relative\" [class.icon-chevron-circle-up]=\"!isCollapsed\" [class.icon-chevron-circle-down]=\"isCollapsed\" [ngClass]=\"{'text-primary': !iconColor}\" [ngStyle]=\"{'color': iconColor}\"></i>\n        <span class=\"d-block ml-3\">{{ headerTitle }}</span>\n    </div>\n    <div class=\"collapsible-content d-flex\" [class.collapsed]=\"isCollapsed\"\n         [ngStyle]=\"{'max-height.px': isCollapsed ? '0' : contentMaxHeight, 'overflow': withOverflow ? 'auto' : 'hidden'}\">\n        <ng-content />\n    </div>\n</div>","import { Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SliderComponent } from './slider/slider.component';\nimport { SwitchComponent } from './switch/switch.component';\nimport { FormsModule } from '@angular/forms';\nimport { ContextMenuComponent } from './contextmenu/context-menu.component';\nimport { DataFilterPipe } from './twolist/datafilter.pipe';\nimport { TwoListComponent } from './twolist/two-list.component';\nimport { GridContextMenuCellRendererComponent } from './grid/contextmenu/grid-context-menu-cell-renderer.component';\nimport { GridHeaderContextMenuComponent } from './grid/contextmenu/grid-header-context-menu-renderer.component';\nimport { GridColumnOptionsDialog } from './grid/options/grid-column-options-dialog.component';\nimport { AgGridAngular, AgGridModule } from 'ag-grid-angular';\nimport { SystelabTranslateModule } from 'systelab-translate';\nimport { StylesUtilService } from './utilities/styles.util.service';\nimport { ColorUtilService } from './utilities/color.util.service';\nimport { ColorComboBox } from './colorpicker/colorpicker.component';\nimport { AllYesNoSelect } from './select/all-yes-no-combobox.component';\nimport { NoYesSelect } from './select/no-yes-combobox-component';\nimport { PeriodSelect } from './select/period-combobox.component';\nimport { GenderSelect } from './select/gender-combobox.component';\nimport { ColorCellRendererComponent } from './colorpicker/color-cell-renderer.component';\nimport { ApplicationHeaderComponent } from './applicationframe/header/app-header.component';\nimport { ApplicationSidebarLargeComponent } from './applicationframe/sidebar/app-sidebar-large.component';\nimport { DatepickerComponent } from './datepicker/datepicker.component';\nimport { DatepickerTimeComponent } from './datepicker/datepicker-time.component';\nimport { TouchspinComponent } from './spinner/spinner.component';\nimport { ModulabSelect } from './select/select.component';\nimport { ApplicationFrameComponent } from './applicationframe/application-frame.component';\nimport { AngularSplitModule, SplitAreaDirective, SplitComponent } from 'angular-split';\nimport { SearcherDialog } from './searcher/searcher.dialog.component';\nimport { SearcherTableComponent } from './searcher/searcher.table.component';\nimport { CalendarHeaderComponent } from './calendar/calendar-header.component';\nimport { CalendarTableComponent } from './calendar/calendar-table.component';\nimport { CalendarDialog } from './calendar/calendar-dialog.component';\nimport { TabsComponent } from './tabs/tabs.component';\nimport { TabComponent } from './tabs/tab.component';\nimport { DialogBottomComponent } from './modal/bottom/dialog-bottom.component';\nimport { LoadingComponent } from './loading/loading.component';\nimport { ToggleButtonComponent } from './toggle-button/toggle-button.component';\nimport { FileSelectorComponent } from './file-selector/file-selector.component';\nimport { ComboBoxInputRendererComponent } from './combobox/renderer/combobox-input-renderer.component';\nimport { TooltipDirective } from './tooltip/tooltip.directive';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { NavbarComponent } from './navbar/navbar.component';\nimport { MessageWithIconComponent } from './modal/message-popup/message-with-icon.component';\nimport { BreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { WeekSelectorComponent } from './week-selector/week-selector.component';\nimport { MonthSelectorComponent } from './month-selector/month-selector.component';\nimport { SignatureCanvasComponent } from './signature-canvas/signature-canvas.component';\nimport { CalendarFooterComponent } from './calendar/calendar-footer.component';\nimport { PercentageCircleComponent } from './percentage-circle/percentage-circle.component';\nimport { LoadingService } from './loading/loading.service';\nimport { TimeUnitSelectComponent } from './select/time-unit-combobox.component';\nimport { CheckboxCellRendererComponent } from './grid/custom-cells/checkbox/checkbox-cell-renderer.component';\nimport { WizardStepsComponent } from './wizard-steps/wizard-steps.component';\nimport { SpinnerCellEditorComponent } from './grid/custom-cells/spinner/spinner-cell-editor.component';\nimport { TwoListSortableListComponent } from './twolist/two-list-sortable-list.component';\nimport { SpinnerCellRendererComponent } from './grid/custom-cells/spinner/spinner-cell-renderer.component';\nimport { InputCellEditorComponent } from './grid/custom-cells/input/input-cell-editor.component';\nimport { CheckboxCellEditorComponent } from './grid/custom-cells/checkbox/checkbox-cell-editor.component';\nimport { DecimalInputCellEditorComponent } from './grid/custom-cells/decimal-input/decimal-input-cell-editor.component';\nimport { AbstractTreeListboxRendererComponent } from './listbox/renderer/abstract-tree-listbox-renderer.component';\nimport { ContextMenuItemComponent } from './contextmenu/context-menu-item.component';\nimport { SystelabGenderListBox } from './listbox/gender-listbox.component';\nimport { NumPadComponent } from './numpad/numpad.component';\nimport { NumPadDialog } from './numpad/numpad.dialog.component';\nimport { ComboboxFavouriteRendererComponent } from './combobox/renderer/combobox-favourite-renderer.component';\nimport { ModulabListBox } from './listbox/listbox.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { GridContextMenuComponent } from './grid/contextmenu/grid-context-menu-component';\nimport { ContextPanelComponent } from './contextpanel/context-panel.component';\nimport { DateRangepicker } from './date-range-picker/date-range-picker.component';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MessagePopupViewComponent } from './modal/message-popup/message-popup-view.component';\nimport { ApplicationSidebarSmallComponent } from './applicationframe/sidebar/app-sidebar-small.component';\nimport { PaginatorComponent } from './paginator/paginator.component';\nimport { PaginatorPageComponent } from './paginator/paginator-page.component';\nimport { CalendarModule } from 'primeng/calendar';\nimport { Tree, TreeModule } from 'primeng/tree';\nimport { ContextMenuModule } from 'primeng/contextmenu';\nimport { ChipButtonComponent } from './chip-button/chip-button.component';\nimport { AutofocusDirective } from './directives/autofocus.directive';\nimport { StackedBarCellRendererComponent } from './grid/custom-cells/stacked-bar/stacked-bar-cell-renderer.component';\nimport { DialogHeaderComponent } from './modal/header/dialog-header.component';\nimport { ChipsComponent } from './chips/chips.component';\nimport { ContextMenuSubmenuItemComponent } from './contextmenu/context-menu-submenu-item.component';\nimport { GridHeaderContextMenu } from './grid/contextmenu/grid-header-context-menu.component';\nimport { SharedModule } from 'primeng/api';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\nimport { SpyMenuComponent } from './spy-menu/spy-menu.component';\nimport { ScrollSpyDirective } from './spy-menu/scroll-spy.directive';\nimport { ToastComponent } from './toast/toast.component';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { KeyupDebounceDirective } from './directives/keyup-debounce.directive';\nimport { ToggleSelectorComponent } from './toggle-selector/toggle-selector.component';\nimport { SliderDoubleRangeComponent } from './slider-double-range/slider-double-range.component';\nimport { ButtonComponent } from './button/button.component';\nimport { DraggableDirective } from './directives/draggable.directive';\nimport { ResizableDirective } from './directives/resizable.directive';\nimport { ImageViewerComponent } from './image-viewer/image-viewer.component';\nimport { NumpadDecimalNumericDirective } from './directives/numpad-decimal-numeric.directive';\nimport { APP_CONFIG, AppConfig } from './systelab-components.module.config';\nimport {\n\tPositiveIntegerInputCellEditorComponent\n} from './grid/custom-cells/positive-integer/positive-integer-input-cell-editor.component';\nimport { TestIdDirective } from './directives/test-id.directive';\nimport { SearcherTreeHeaderRendererComponent } from './grid/custom-cells/searcher-tree-header/searcher-tree-header-renderer.component';\nimport { Accordion } from './accordion/accordion.component';\n\nexport const factory = () => {\n\tconst systelabComponentsModuleCreated = (factory as any)._systelabComponentsModuleCreated || false;\n\tif (systelabComponentsModuleCreated) {\n\t\tthrow new Error('SystelabComponentsModuleCreated.forRoot imported to many times');\n\t}\n\t(factory as any)._systelabComponentsModuleCreated = true;\n};\n\nconst providers = [\n\tStylesUtilService,\n\tColorUtilService,\n\tLoadingService\n];\n\n@NgModule({\n\timports:      [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tSharedModule,\n\t\tCalendarModule,\n\t\tTreeModule,\n\t\tAutoCompleteModule,\n\t\tDragDropModule,\n\t\tOverlayModule,\n\t\tContextMenuModule,\n\t\tAngularSplitModule,\n\t\tSystelabTranslateModule,\n\t\tAgGridModule,\n\t\tCdkTreeModule\n\t],\n\tdeclarations: [\n\t\tSliderComponent,\n\t\tSliderDoubleRangeComponent,\n\t\tSwitchComponent,\n\t\tContextMenuComponent,\n\t\tContextMenuSubmenuItemComponent,\n\t\tContextPanelComponent,\n\t\tMessagePopupViewComponent,\n\t\tDataFilterPipe,\n\t\tTwoListComponent,\n\t\tGridContextMenuComponent,\n\t\tGridContextMenuCellRendererComponent,\n\t\tGridHeaderContextMenuComponent,\n\t\tGridHeaderContextMenu,\n\t\tGridColumnOptionsDialog,\n\t\tColorCellRendererComponent,\n\t\tColorComboBox,\n\t\tApplicationFrameComponent,\n\t\tApplicationHeaderComponent,\n\t\tApplicationSidebarLargeComponent,\n\t\tApplicationSidebarSmallComponent,\n\t\tButtonComponent,\n\t\tToggleButtonComponent,\n\t\tAllYesNoSelect,\n\t\tNoYesSelect,\n\t\tPeriodSelect,\n\t\tTimeUnitSelectComponent,\n\t\tGenderSelect,\n\t\tTouchspinComponent,\n\t\tModulabSelect,\n\t\tDatepickerComponent,\n\t\tDatepickerTimeComponent,\n\t\tSearcherDialog,\n\t\tCalendarDialog,\n\t\tSearcherTableComponent,\n\t\tCalendarHeaderComponent,\n\t\tCalendarTableComponent,\n\t\tCalendarFooterComponent,\n\t\tTabsComponent,\n\t\tTabComponent,\n\t\tDialogHeaderComponent,\n\t\tDialogBottomComponent,\n\t\tLoadingComponent,\n\t\tFileSelectorComponent,\n\t\tTimelineComponent,\n\t\tMessageWithIconComponent,\n\t\tComboBoxInputRendererComponent,\n\t\tTooltipDirective,\n\t\tNavbarComponent,\n\t\tBreadcrumbComponent,\n\t\tWeekSelectorComponent,\n\t\tMonthSelectorComponent,\n\t\tSignatureCanvasComponent,\n\t\tPercentageCircleComponent,\n\t\tCheckboxCellRendererComponent,\n\t\tSpinnerCellEditorComponent,\n\t\tWizardStepsComponent,\n\t\tTwoListSortableListComponent,\n\t\tSpinnerCellRendererComponent,\n\t\tInputCellEditorComponent,\n\t\tDecimalInputCellEditorComponent,\n\t\tCheckboxCellEditorComponent,\n\t\tAbstractTreeListboxRendererComponent,\n\t\tContextMenuItemComponent,\n\t\tNumPadComponent,\n\t\tNumPadDialog,\n\t\tSystelabGenderListBox,\n\t\tComboboxFavouriteRendererComponent,\n\t\tModulabListBox,\n\t\tDateRangepicker,\n\t\tPaginatorComponent,\n\t\tPaginatorPageComponent,\n\t\tChipButtonComponent,\n\t\tAutofocusDirective,\n\t\tStackedBarCellRendererComponent,\n\t\tChipsComponent,\n\t\tSpyMenuComponent,\n\t\tScrollSpyDirective,\n\t\tToastComponent,\n\t\tToggleSelectorComponent,\n\t\tKeyupDebounceDirective,\n\t\tDraggableDirective,\n\t\tResizableDirective,\n\t\tImageViewerComponent,\n\t\tNumpadDecimalNumericDirective,\n\t\tPositiveIntegerInputCellEditorComponent,\n\t\tNumpadDecimalNumericDirective,\n  \t\tTestIdDirective,\n\t\tSearcherTreeHeaderRendererComponent,\n\t\tAccordion,\n\t],\n\texports: [\n\t\tSliderComponent,\n\t\tSliderDoubleRangeComponent,\n\t\tSwitchComponent,\n\t\tContextMenuComponent,\n\t\tContextPanelComponent,\n\t\tTwoListComponent,\n\t\tGridHeaderContextMenuComponent,\n\t\tGridHeaderContextMenu,\n\t\tColorCellRendererComponent,\n\t\tColorComboBox,\n\t\tApplicationHeaderComponent,\n\t\tApplicationSidebarLargeComponent,\n\t\tApplicationSidebarSmallComponent,\n\t\tApplicationFrameComponent,\n\t\tAllYesNoSelect,\n\t\tNoYesSelect,\n\t\tPeriodSelect,\n\t\tTimeUnitSelectComponent,\n\t\tGenderSelect,\n\t\tDatepickerComponent,\n\t\tTouchspinComponent,\n\t\tModulabSelect,\n\t\tDatepickerTimeComponent,\n\t\tSearcherDialog,\n\t\tCalendarDialog,\n\t\tButtonComponent,\n\t\tToggleButtonComponent,\n\t\tSearcherTableComponent,\n\t\tCalendarHeaderComponent,\n\t\tCalendarTableComponent,\n\t\tCalendarFooterComponent,\n\t\tTabsComponent,\n\t\tTabComponent,\n\t\tDialogHeaderComponent,\n\t\tDialogBottomComponent,\n\t\tLoadingComponent,\n\t\tFileSelectorComponent,\n\t\tTimelineComponent,\n\t\tNavbarComponent,\n\t\tMessageWithIconComponent,\n\t\tBreadcrumbComponent,\n\t\tWeekSelectorComponent,\n\t\tMonthSelectorComponent,\n\t\tSignatureCanvasComponent,\n\t\tPercentageCircleComponent,\n\t\tTree,\n\t\tSplitComponent,\n\t\tSplitAreaDirective,\n\t\tComboBoxInputRendererComponent,\n\t\tTooltipDirective,\n\t\tCheckboxCellRendererComponent,\n\t\tSpinnerCellEditorComponent,\n\t\tWizardStepsComponent,\n\t\tTwoListSortableListComponent,\n\t\tDataFilterPipe,\n\t\tSpinnerCellRendererComponent,\n\t\tInputCellEditorComponent,\n\t\tDecimalInputCellEditorComponent,\n\t\tCheckboxCellEditorComponent,\n\t\tAbstractTreeListboxRendererComponent,\n\t\tContextMenuItemComponent,\n\t\tNumPadComponent,\n\t\tNumPadDialog,\n\t\tSystelabGenderListBox,\n\t\tComboboxFavouriteRendererComponent,\n\t\tModulabListBox,\n\t\tGridContextMenuComponent,\n\t\tDateRangepicker,\n\t\tPaginatorComponent,\n\t\tAgGridAngular,\n\t\tChipButtonComponent,\n\t\tAutofocusDirective,\n\t\tStackedBarCellRendererComponent,\n\t\tChipsComponent,\n\t\tSpyMenuComponent,\n\t\tScrollSpyDirective,\n\t\tToastComponent,\n\t\tToggleSelectorComponent,\n\t\tKeyupDebounceDirective,\n\t\tDraggableDirective,\n\t\tResizableDirective,\n\t\tImageViewerComponent,\n\t\tNumpadDecimalNumericDirective,\n\t\tTestIdDirective,\n\t\tNumpadDecimalNumericDirective,\n\t\tPositiveIntegerInputCellEditorComponent,\n\t\tSearcherTreeHeaderRendererComponent,\n\t\tAccordion\n\t],\n})\nexport class SystelabComponentsModule {\n\n\tconstructor(@Inject('SystelabComponentsModuleInstance') instance: any) {\n\t}\n\n\tpublic static forRoot(conf?: AppConfig): ModuleWithProviders<SystelabComponentsModule> {\n\t\treturn {\n\t\t\tngModule: SystelabComponentsModule,\n\t\t\tproviders: [\n\t\t\t\t...providers,\n\t\t\t\t{\n\t\t\t\t\tprovide: 'SystelabComponentsModuleInstance',\n\t\t\t\t\tuseFactory: factory\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: APP_CONFIG, useValue: conf\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n\n\tpublic static forChild(): ModuleWithProviders<SystelabComponentsModule> {\n\t\treturn {\n\t\t\tngModule: SystelabComponentsModule,\n\t\t\tproviders: [],\n\t\t};\n\t}\n}\n","export abstract class AbstractContextMenuOption<T, K> {\n\tpublic actionId: string;\n\tpublic actionText: string;\n\tpublic action?: T;\n\tpublic isActionEnabled?: K;\n\tpublic isDivider?: boolean;\n\tpublic iconClass?: string;\n\tpublic backgroundIconColor?: string;\n\tpublic iconColor?: string;\n\tpublic isIconEnabled?: K;\n\tpublic childrenContextMenuOptions?: Array<AbstractContextMenuOption<T, K>>;\n\tpublic iconFontSize?: string;\n\n\tpublic hasChildren(): boolean {\n\t\treturn this.childrenContextMenuOptions && this.childrenContextMenuOptions.length > 0;\n\t}\n}\n","import { ContextMenuActionData } from './context-menu-action-data';\nimport { AbstractContextMenuOption } from './abstract-context-menu-option';\n\nexport type ContextMenuActionFunction = (data: ContextMenuActionData) => void;\nexport type ContextMenuIsEnabledFunction = (elementId: string, actionId: string) => boolean;\n\nexport class ContextMenuOption extends AbstractContextMenuOption<ContextMenuActionFunction, ContextMenuIsEnabledFunction> {\n\n\tconstructor(public override actionId: string,\n\t            public override actionText: string,\n\t            public override action?: ContextMenuActionFunction,\n\t            public override isActionEnabled?: ContextMenuIsEnabledFunction,\n\t            public override isDivider?: boolean,\n\t            public override iconClass?: string,\n\t            public override backgroundIconColor?: string,\n\t            public override iconColor?: string,\n\t            public override isIconEnabled?: ContextMenuIsEnabledFunction,\n\t            public override childrenContextMenuOptions?: Array<ContextMenuOption>,\n\t            public override iconFontSize?: string) {\n\t\tsuper();\n\t}\n}\n","export class ApplicationSidebarTab {\n\n\tconstructor(public id: string, public name: string, public isSelected: boolean, public subMenu?: ApplicationSidebarTab[], public action?: (id: string) => void, public icon?: string) {\n\t\tsubMenu = [];\n\t}\n}\n\nexport class ApplicationSidebarAction {\n\tconstructor(public name: string, public action: any, public icon?: string) {\n\t}\n}\n\nexport class ApplicationSidebarComponent {\n}\n","import { AbstractSearcher } from './abstract-searcher';\nimport { SystelabModalContext } from '../modal/dialog/modal-context';\n\nexport class SearcherDialogParameters<T> extends SystelabModalContext {\n\tpublic valueToSearch: string;\n\tpublic searcher: AbstractSearcher<T>;\n\tpublic showCloseButton = true;\n\tpublic showSelectedRowsInSubmitButton = false;\n\tpublic isTeeSearcher: boolean = false;\n\tpublic debounceTime: number = 0;\n\tpublic searchByStartWithAsDefault: boolean = false;\n}\n","import { SearcherDialogParameters } from './searcher.dialog.parameters';\nimport { Observable } from 'rxjs';\nimport { IsFullWidthRowParams } from 'ag-grid-community';\nimport { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class AbstractSearcher<T> {\n\n\tpublic id: number | string;\n\tpublic multipleSelectedItemList: Array<T>;\n\tpublic multipleSelection: boolean = false;\n\tpublic treeSearcher: boolean = false;\n\tpublic parentSelectable: boolean = false;\n\tpublic useIdInMultipleSelectionGrid = false\n\n\tprotected constructor() {\n\n\t}\n\n\tpublic abstract getDialogParameters(): SearcherDialogParameters<T>;\n\n\tpublic abstract getData(valueToSearch: string, page: number, pageNumber: number, useCode?: boolean): Observable<Array<T>>;\n\n\tpublic abstract getTotalItems(): number;\n\n\tpublic abstract getColumnDefs(): Array<any>;\n\n\tpublic hideHeader(): boolean {\n\t\treturn false;\n\t}\n\n\tpublic getPropertyToShow(): string {\n\t\treturn this.getDescriptionField();\n\t}\n\n\tpublic abstract getIdField(): string;\n\n\tpublic abstract getCodeField(): string;\n\n\tpublic abstract getDescriptionField(): string;\n\n\tpublic abstract getTextForSearcherLabel(): string;\n\n\tpublic abstract getTitleForDialog(): string;\n\n\tpublic abstract getGridOptionsPreferencesPrefix(): string;\n\n\tpublic getIsFullWidthRow(isFullWidthRowParams: IsFullWidthRowParams): boolean {\n\t\treturn false;\n\t}\n\n\tpublic getFullWidthCellRenderer(): any {\n\t\treturn undefined;\n\t}\n\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DialogService } from '../modal/dialog/dialog.service';\nimport { AbstractSearcher } from './abstract-searcher';\nimport { SearcherDialogParameters } from './searcher.dialog.parameters';\nimport { SearcherDialog } from './searcher.dialog.component';\n\n@Directive()\nexport abstract class AbstractGenericSearcherComponent<T> implements OnInit {\n\tpublic searcherDialogParameters: SearcherDialogParameters<T>;\n\n\t@Input() public multipleSelection = false;\n\t@Input() public isDisabled: boolean;\n\n\tpublic _id: number | string;\n\tprotected _multipleSelectedItemList: Array<T>;\n\n\t@Input()\n\tget multipleSelectedItemList() {\n\t\treturn this._multipleSelectedItemList;\n\t}\n\n\tset multipleSelectedItemList(value: Array<T>) {\n\n\t\tthis._multipleSelectedItemList = value;\n\t\tthis.abstractSearcher.multipleSelectedItemList = this._multipleSelectedItemList;\n\t\tthis._code = '';\n\t\tlet description = '';\n\n\t\tfor (const selectedItem of value) {\n\t\t\tif (this._code !== '') {\n\t\t\t\tthis._code += ', ';\n\t\t\t}\n\t\t\tthis._code += selectedItem[this.abstractSearcher.getCodeField()] ? selectedItem[this.abstractSearcher.getCodeField()] : '';\n\n\t\t\tif (description !== '') {\n\t\t\t\tdescription += '; ';\n\t\t\t}\n\t\t\tdescription += selectedItem[this.abstractSearcher.getDescriptionField()] ? selectedItem[this.abstractSearcher.getDescriptionField()] : '';\n\n\t\t}\n\t\tthis.codeChange.emit(this._code);\n\t\tthis.description = description;\n\t\tthis.multipleSelectedItemListChange.emit(this._multipleSelectedItemList);\n\t}\n\n\t@Output() public multipleSelectedItemListChange = new EventEmitter();\n\n\t@Input()\n\tset id(value: number | string) {\n\t\tthis._id = value;\n\t\tthis.abstractSearcher.id = value;\n\t\tthis.idChange.emit(this._id);\n\t}\n\n\tget id() {\n\t\treturn this._id;\n\t}\n\n\tpublic _description: string;\n\t@Input()\n\tset description(value: string) {\n\t\tthis._description = value;\n\t\tthis.descriptionChange.emit(this._description);\n\t}\n\n\tget description() {\n\t\treturn this._description;\n\t}\n\n\tpublic _code: string;\n\t@Input()\n\tset code(value: string) {\n\t\tthis._code = value;\n\t\tthis.codeChange.emit(this._code);\n\t}\n\n\tget code() {\n\t\treturn this._code;\n\t}\n\n\t@Output() public idChange = new EventEmitter();\n\t@Output() public descriptionChange = new EventEmitter();\n\t@Output() public codeChange = new EventEmitter();\n\t@Output() public selectedHasChanged = new EventEmitter();\n\n\tprotected constructor(public dialogService: DialogService, public abstractSearcher: AbstractSearcher<T>) {\n\t\tthis.searcherDialogParameters = this.abstractSearcher.getDialogParameters();\n\t\tthis.abstractSearcher = abstractSearcher;\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis.abstractSearcher.multipleSelection = this.multipleSelection;\n\t}\n\tpublic openSearchDialog(): void {\n\t\tlet previousMultipleSelectionItemList: Array<T> = [];\n\t\tif (this.multipleSelection && this._multipleSelectedItemList) {\n\t\t\tpreviousMultipleSelectionItemList = [...this._multipleSelectedItemList];\n\t\t}\n\t\tthis.searcherDialogParameters.widthRelative = '66%';\n\t\tthis.searcherDialogParameters.heightRelative = '66%';\n\t\tthis.searcherDialogParameters.searcher = this.abstractSearcher;\n\t\tthis.dialogService.showDialog(SearcherDialog, this.searcherDialogParameters)\n\t\t\t.subscribe(\n\t\t\t\t(v: Array<T>) => {\n\t\t\t\t\tif (v) {\n\t\t\t\t\t\tif (!this.multipleSelection) {\n\t\t\t\t\t\t\tthis.id = (v && v[0]) ? v[0][this.abstractSearcher.getIdField()] : undefined;\n\t\t\t\t\t\t\tthis.description = (v && v[0]) ? v[0][this.abstractSearcher.getDescriptionField()] : undefined;\n\t\t\t\t\t\t\tthis.code = (v && v[0]) ? v[0][this.abstractSearcher.getCodeField()] : undefined;\n\t\t\t\t\t\t\tthis.upDateField(v ? v[0] : undefined);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.multipleSelectedItemList = v ? v : new Array<T>();\n\t\t\t\t\t} else if (this.multipleSelection) {\n\t\t\t\t\t\tthis.multipleSelectedItemList = [...previousMultipleSelectionItemList];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tpublic upDateField(value: T): void {\n\t\tthis.selectedHasChanged.emit(value ? value[this.abstractSearcher.getIdField()] : undefined);\n\t}\n}","import { Directive, ElementRef, Input, ViewChild } from '@angular/core';\nimport { SearcherDialog } from './searcher.dialog.component';\nimport { AbstractSearcher } from './abstract-searcher';\nimport { DialogService } from '../modal/dialog/dialog.service';\nimport { AbstractGenericSearcherComponent } from './abstract-generic.searcher.component';\n\n@Directive()\nexport abstract class AbstractSearcherComponent<T> extends AbstractGenericSearcherComponent<T>{\n\n\t@ViewChild('valueToSearch') public valueToSearch: ElementRef;\n\n\t@Input() public fontFamily: string;\n\t@Input() public fontSize: string;\n\t@Input() public fontWeight: string;\n\t@Input() public fontStyle: string;\n\t@Input() public tabindex: number;\n\n\tpublic searchingValue: string;\n\t@Input() public withButton = true;\n\t@Input() public isManagement = false;\n\t@Input() public height;\n\n\tprotected constructor(public override dialogService: DialogService, public override abstractSearcher: AbstractSearcher<T>) {\n\t\tsuper(dialogService, abstractSearcher)\n\t}\n\n\toverride set description(value: string) {\n\t\tthis.searchingValue = value;\n\t\tsuper.description = value;\n\t}\n\n\tpublic getWidth() {\n\t\tif (this.height) {\n\t\t\treturn {\n\t\t\t\t'width':         this.height.toString() + 'px',\n\t\t\t\t'min-width':     this.height.toString() + 'px',\n\t\t\t\t'line-height':   1,\n\t\t\t\t'padding-left':  0,\n\t\t\t\t'padding-right': 0,\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic getInputHeight() {\n\t\tif (this.height) {\n\t\t\treturn {'height': '100%'};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic getLineHeight() {\n\t\tif (this.height) {\n\t\t\treturn {'line-height': this.height.toString() + 'px'};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic override openSearchDialog(): void {\n\t\tlet previousMultipleSelectionItemList: Array<T> = [];\n\t\tif (this.multipleSelection && this._multipleSelectedItemList) {\n\t\t\tpreviousMultipleSelectionItemList = [...this._multipleSelectedItemList];\n\t\t}\n\t\tthis.searcherDialogParameters.widthRelative = '66%';\n\t\tthis.searcherDialogParameters.heightRelative = '66%';\n\t\tthis.searcherDialogParameters.searcher = this.abstractSearcher;\n\t\tthis.dialogService.showDialog(SearcherDialog, this.searcherDialogParameters)\n\t\t\t.subscribe(\n\t\t\t\t(v: Array<T>) => {\n\t\t\t\t\tif (v) {\n\t\t\t\t\t\tif (!this.multipleSelection) {\n\t\t\t\t\t\t\tthis.id = (v && v[0]) ? v[0][this.abstractSearcher.getIdField()] : undefined;\n\t\t\t\t\t\t\tthis.description = (v && v[0]) ? v[0][this.abstractSearcher.getDescriptionField()] : undefined;\n\t\t\t\t\t\t\tthis.code = (v && v[0]) ? v[0][this.abstractSearcher.getCodeField()] : undefined;\n\t\t\t\t\t\t\tthis.upDateField(v ? v[0] : undefined);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.multipleSelectedItemList = v ? v : new Array<T>();\n\t\t\t\t\t} else if (this.multipleSelection) {\n\t\t\t\t\t\tthis.multipleSelectedItemList = [...previousMultipleSelectionItemList];\n\t\t\t\t\t}\n\t\t\t\t\tthis.valueToSearch.nativeElement.focus();\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tpublic doSearch(): void {\n\t\tif (this.code) {\n\t\t\tthis.abstractSearcher.getData(this.code, 1, this.multipleSelection ? 0 : 1, true)\n\t\t\t\t.subscribe({\n\t\t\t\t\t\tnext:  (response) => {\n\t\t\t\t\t\t\tif (response !== undefined) {\n\t\t\t\t\t\t\t\tif (this.multipleSelection) {\n\t\t\t\t\t\t\t\t\tthis.multipleSelectedItemList = response;\n\t\t\t\t\t\t\t\t\tif (!response?.length) {\n\t\t\t\t\t\t\t\t\t\tthis.openSearchDialog();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (response.length === 1) {\n\t\t\t\t\t\t\t\t\t\tthis.id = response[0][this.abstractSearcher.getIdField()];\n\t\t\t\t\t\t\t\t\t\tthis.description = response[0][this.abstractSearcher.getDescriptionField()];\n\t\t\t\t\t\t\t\t\t\tthis.code = response[0][this.abstractSearcher.getCodeField()];\n\t\t\t\t\t\t\t\t\t\tthis.upDateField(response[0]);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.openSearchDialog();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: (error) => {\n\t\t\t\t\t\t\tconsole.error(`Communication error: ${error}`);\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t} else {\n\t\t\tthis.id = undefined;\n\t\t\tthis.description = undefined;\n\t\t\tthis.code = undefined;\n\t\t\tif (this.multipleSelection) {\n\t\t\t\tthis.multipleSelectedItemList = [];\n\t\t\t}\n\t\t\tthis.upDateField(undefined);\n\t\t}\n\t}\n\n\tpublic override upDateField(value: T): void {\n\t\tsuper.upDateField(value);\n\t\tif (this.description) {\n\t\t\tthis.searchingValue = this.description;\n\t\t}\n\t}\n}\n","import { ChangeDetectorRef, Directive, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\nimport { IGetRowsParams } from 'ag-grid-community';\nimport { AbstractComboBox } from './abstract-combobox.component';\nimport { Observable } from 'rxjs';\nimport { PreferencesService } from 'systelab-preferences';\n\n@Directive()\nexport abstract class AbstractApiComboBox<T> extends AbstractComboBox<T> implements AgRendererComponent, OnInit, OnDestroy {\n\n\tpublic startsWith = '';\n\n\tpublic override params: any;\n\n\tpublic totalItemsLoaded = false;\n\n\tconstructor(public override myRenderer: Renderer2, public chref: ChangeDetectorRef, public override preferencesService?: PreferencesService) {\n\t\tsuper(myRenderer, chref, preferencesService);\n\t}\n\n\t// override\n\tprotected override configGrid() {\n\n\t\tsuper.configGrid();\n\t\tthis.gridOptions.rowModelType = 'infinite';\n\t\tthis.gridOptions.paginationPageSize = 20;\n\t\tthis.gridOptions.cacheBlockSize = 20;\n\t\tthis.gridOptions.cacheOverflowSize = 2;\n\t\tthis.gridOptions.maxConcurrentDatasourceRequests = 1;\n\t\tthis.gridOptions.infiniteInitialRowCount = 0;\n\t\tthis.gridOptions.maxBlocksInCache = 100;\n\n\t}\n\n\tprotected override configGridData() {\n\t\tthis.gridOptions.datasource = null;\n\t}\n\n\tpublic abstract getData(page: number, itemsPerPage: number, startsWithParameter: string): Observable<Array<T>>;\n\n\tpublic abstract getTotalItems(): number;\n\n\tpublic override refresh(params: any): boolean {\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.setDatasource(this);\n\t\t}\n\t\treturn true;\n\t}\n\n\t// override\n\tpublic override loop(): void {\n\t\tlet result = true;\n\n\t\tif (this.isDropDownOpen()) {\n\t\t\t// First time opened we load the table\n\t\t\tif (this.gridOptions.datasource === null) {\n\t\t\t\tthis.gridOptions.datasource = this;\n\t\t\t\tthis.refresh(null);\n\t\t\t}\n\t\t\tif (this.totalItemsLoaded) {\n\t\t\t\tthis.setDropdownHeight();\n\t\t\t\tthis.setDropdownPosition();\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\t\tif (result && this.isDropdownOpened) {\n\t\t\tsetTimeout(() => this.loop(), 10);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t//override\n\tprotected override getTotalItemsInCombo(): number {\n\t\treturn this.getTotalItems();\n\t}\n\n\tpublic override doSearch(event: any) {\n\t\tif (event.shiftKey || event.ctrlKey) {\n\t\t\treturn;\n\t\t}\n\t\tthis.startsWith = event.target.value;\n\t\tthis.refresh(null);\n\t}\n\n\tpublic getRows(params: IGetRowsParams): void {\n\n\t\tconst page: number = params.endRow / this.gridOptions.paginationPageSize;\n\t\tconst pageSize: number = this.gridOptions.paginationPageSize;\n\n\t\tconst emptyElemNumber: number = this.emptyElement ? 1 : 0;\n\t\tconst allNumber: number = this.allElement ? 1 : 0;\n\t\tconst totalItems: number = this.getTotalItems() + emptyElemNumber + allNumber;\n\t\tconst modulus: number = totalItems % pageSize;\n\n\t\tif (page === 1\n\t\t\t|| page <= totalItems / pageSize\n\t\t\t|| modulus > 1\n\t\t\t|| ((modulus === 1 || modulus === 2) && !this.emptyElement && !this.allElement)) {\n\t\t\tthis.getElements(page, pageSize, emptyElemNumber, allNumber, params);\n\t\t} else {\n\t\t\tthis.totalItemsLoaded = false;\n\t\t\tthis.getData(page - 1, this.gridOptions.paginationPageSize, this.startsWith)\n\t\t\t\t.subscribe({\n\t\t\t\t\t\tnext:  (previousPage: Array<T>) => {\n\t\t\t\t\t\t\tconst itemArray: Array<T> = new Array<T>();\n\t\t\t\t\t\t\tconst totItems: number = Number(this.getTotalItems() + emptyElemNumber + allNumber);\n\t\t\t\t\t\t\tif (this.emptyElement === true && this.allElement === true) {\n\t\t\t\t\t\t\t\tconst lastButOneItemFromPreviousPage = previousPage[this.gridOptions.paginationPageSize - 2];\n\t\t\t\t\t\t\t\titemArray.push(lastButOneItemFromPreviousPage);\n\n\t\t\t\t\t\t\t\tconst lastItemFromPreviousPage = previousPage[this.gridOptions.paginationPageSize - 1];\n\t\t\t\t\t\t\t\titemArray.push(lastItemFromPreviousPage);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst lastItemFromPreviousPage = previousPage[this.gridOptions.paginationPageSize - 1];\n\t\t\t\t\t\t\t\titemArray.push(lastItemFromPreviousPage);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.totalItemsLoaded = true;\n\t\t\t\t\t\t\tparams.successCallback(itemArray, totItems);\n\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: () => {\n\t\t\t\t\t\t\tparams.failCallback();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t}\n\t}\n\n\tprivate getElements(page: number, pageSize: number, emptyElemNumber: number, allNumber: number, params: IGetRowsParams) {\n\t\tthis.totalItemsLoaded = false;\n\t\tthis.getData(page, pageSize, this.startsWith)\n\t\t\t.subscribe({\n\t\t\t\t\tnext:  (v: Array<T>) => {\n\t\t\t\t\t\tconst itemArray: Array<T> = new Array<T>();\n\t\t\t\t\t\tconst totalItems: number = Number(this.getTotalItems() + emptyElemNumber + allNumber);\n\n\t\t\t\t\t\tif (this.emptyElement === true || this.allElement === true) {\n\n\t\t\t\t\t\t\tif (page === 1) {\n\t\t\t\t\t\t\t\tif (this.emptyElement === true) {\n\t\t\t\t\t\t\t\t\tconst newElement: T = this.getInstance();\n\t\t\t\t\t\t\t\t\titemArray.push(newElement);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (this.allElement === true) {\n\t\t\t\t\t\t\t\t\tconst allElement: T = this.getAllInstance();\n\t\t\t\t\t\t\t\t\titemArray.push(allElement);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfor (const originalElement of v) {\n\t\t\t\t\t\t\t\t\titemArray.push(originalElement);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tparams.successCallback(itemArray, totalItems);\n\t\t\t\t\t\t\t\tthis.totalItemsLoaded = true;\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.getData(page - 1, this.gridOptions.paginationPageSize, this.startsWith)\n\t\t\t\t\t\t\t\t\t.subscribe({\n\t\t\t\t\t\t\t\t\t\t\tnext:  (previousPage: Array<T>) => {\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.emptyElement === true && this.allElement === true) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst lastButOneItemFromPreviousPage = previousPage[this.gridOptions.paginationPageSize - 2];\n\t\t\t\t\t\t\t\t\t\t\t\t\titemArray.push(lastButOneItemFromPreviousPage);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst lastItemFromPreviousPage = previousPage[this.gridOptions.paginationPageSize - 1];\n\t\t\t\t\t\t\t\t\t\t\t\t\titemArray.push(lastItemFromPreviousPage);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst lastItemFromPreviousPage = previousPage[this.gridOptions.paginationPageSize - 1];\n\t\t\t\t\t\t\t\t\t\t\t\t\titemArray.push(lastItemFromPreviousPage);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tfor (const originalElement of v) {\n\t\t\t\t\t\t\t\t\t\t\t\t\titemArray.push(originalElement);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tthis.totalItemsLoaded = true;\n\t\t\t\t\t\t\t\t\t\t\t\tparams.successCallback(itemArray, totalItems);\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\terror: () => {\n\t\t\t\t\t\t\t\t\t\t\t\tparams.failCallback();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor (const originalElement of v) {\n\t\t\t\t\t\t\t\titemArray.push(originalElement);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.totalItemsLoaded = true;\n\t\t\t\t\t\t\tparams.successCallback(itemArray, totalItems);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\terror: () => {\n\t\t\t\t\t\tparams.failCallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t}\n\n}\n","import { ChangeDetectorRef, Directive, Input, Renderer2 } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\nimport {IGetRowsParams } from 'ag-grid-community';\nimport { AbstractApiComboBox } from '../abstract-api-combobox.component';\nimport { AbstractComboBox } from '../abstract-combobox.component';\nimport { PreferencesService } from 'systelab-preferences';\n\ndeclare const jQuery: any;\n\nexport class KeyName {\n\tstatic readonly backspace = 'Backspace';\n\tstatic readonly enter = 'Enter';\n\tstatic readonly escape = 'Escape';\n\tstatic readonly tab = 'Tab';\n\tstatic readonly arrowUp = 'ArrowUp';\n\tstatic readonly arrowDown = 'ArrowDown';\n\tstatic readonly shift = 'Shift';\n}\n\n@Directive()\nexport abstract class AutocompleteApiComboBox<T> extends AbstractApiComboBox<T> implements AgRendererComponent {\n\n\tpublic override startsWith = '';\n\t@Input() public debounceTime: number = 350;\n\t@Input() public withClearOption: boolean = false;\n\n\tconstructor(\n\t\tpublic override myRenderer: Renderer2,\n\t\tpublic override chref: ChangeDetectorRef,\n\t\tpublic override preferencesService?: PreferencesService\n\t) {\n\t\tsuper(myRenderer, chref, preferencesService);\n\t}\n\n\tpublic override doSearch(event: any): void {\n\t\tif (event.shiftKey || event.ctrlKey || event.key === KeyName.arrowUp || event.key === KeyName.arrowDown || event.key === KeyName.shift) {\n\t\t\treturn;\n\t\t}\n\t\tif (event.key === KeyName.escape || event.key === KeyName.enter || event.key === KeyName.tab) {\n\t\t\tif (this.isDropdownOpened) {\n\t\t\t\tthis.closeDropDown();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.doSearchText(event.target?.value);\n\t\t}\n\t}\n\n\t// Overrides\n\tpublic override setDropdownHeight(): void {\n\t\tlet calculatedHeight = 0;\n\n\t\tcalculatedHeight += AbstractComboBox.ROW_HEIGHT * 10;\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', calculatedHeight + 'px');\n\t}\n\n\tpublic onInputClicked(event: MouseEvent): void {\n\t\tevent.stopPropagation();\n\t\tif (!this.isDisabled) {\n\t\t\tif (!this.isDropdownOpened) {\n\t\t\t\tthis.openDropDown();\n\t\t\t\tthis.doSearchText(this.description);\n\t\t\t}\n\t\t\tthis.inputElement.nativeElement.focus();\n\t\t}\n\t}\n\n\tpublic onInputNavigate(event): void {\n\t\tif (!this.isDisabled) {\n\t\t\tif (!this.isDropdownOpened) {\n\t\t\t\tthis.openDropDown();\n\t\t\t\tthis.doSearchText(this.description);\n\t\t\t}\n\t\t\tthis.chref.detectChanges();\n\t\t\t// sets focus into the first grid cell\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst firstCol = this.gridOptions.columnApi.getAllDisplayedColumns()[0];\n\t\t\t\tthis.gridOptions.api.setFocusedCell(0, firstCol);\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t// Overrides\n\tpublic override onCellKeyDown(e: any): void {\n\t\tif (e.event.key === KeyName.enter) {\n\t\t\te.node.setSelected(true);\n\t\t\tthis.selectedItemChange.emit(e.node.data);\n\t\t\tthis.closeDropDown();\n\t\t\tthis.inputElement.nativeElement.focus();\n\t\t} else if (e.event.key === KeyName.backspace) {\n\t\t\tthis.inputElement.nativeElement.value = this.inputElement.nativeElement.value.slice(0, -1);\n\t\t\tthis.inputElement.nativeElement.focus();\n\t\t} else if (e.event.key.length === 1 && e.event.key.match(/^[a-zA-Z]+|[0-9]/g)) {\n\t\t\tthis.inputElement.nativeElement.value += e.event.key;\n\t\t\tthis.inputElement.nativeElement.focus();\n\t\t} else if (e.event.key === KeyName.tab) {\n\t\t\tthis.closeDropDown();\n\t\t\te.event.stopPropagation();\n\t\t}\n\t\te.event.preventDefault();\n\t}\n\n\t// Overrides\n\tpublic override onComboClicked(event: MouseEvent): void {\n\t\tsuper.onComboClicked(event);\n\t\tthis.doSearchText(this.description);\n\t}\n\n\t// Overrides\n\tpublic override closeDropDown(): void {\n\t\tthis.startsWith = '';\n\t\tconst selectedRow: T = this.getSelectedRow();\n\t\tif (selectedRow) {\n\t\t\tthis.id = selectedRow[this.getIdField()];\n\t\t\tthis.description = selectedRow[this.getDescriptionField()];\n\t\t} else if (!this.id) {\n\t\t\tthis.resetComboSelection();\n\t\t}\n\t\tsuper.closeDropDown();\n\t}\n\n\t// Overrides\n\tpublic override getRows(params: IGetRowsParams): void {\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.showLoadingOverlay();\n\t\t\tconst page: number = params.endRow / this.gridOptions.paginationPageSize;\n\t\t\tthis.totalItemsLoaded = false;\n\t\t\tthis.getData(page, this.gridOptions.paginationPageSize, this.startsWith)\n\t\t\t\t.subscribe({\n\t\t\t\t\t\tnext:  (v: Array<T>) => {\n\t\t\t\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\t\t\t\tthis.totalItemsLoaded = true;\n\t\t\t\t\t\t\tparams.successCallback(v, this.getTotalItems());\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: () => {\n\t\t\t\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\t\t\t\tparams.failCallback();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t}\n\t}\n\n\tprotected doSearchText(text: string): void {\n\t\tif (!this.isDropdownOpened) {\n\t\t\tthis.openDropDown();\n\t\t}\n\t\tthis.startsWith = text;\n\t\tif (!this.startsWith || this.startsWith.length < 1) {\n\t\t\tthis.resetComboSelection();\n\t\t}\n\t\tthis.refresh(null);\n\t}\n\n\tprotected resetComboSelection(): void {\n\t\tthis.id = undefined;\n\t\tthis.code = undefined;\n\t\tthis.description = undefined;\n\t\tthis.currentSelected = undefined;\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.deselectAll();\n\t\t}\n\t\tthis.selectedItemChange.emit(undefined);\n\t}\n\n\tprivate openDropDown(): void {\n\t\tthis.showDropDown();\n\t\tjQuery('#' + this.comboId)\n\t\t\t.dropdown('toggle');\n\t\tthis.isDropdownOpened = true;\n\t}\n\n\tpublic inputIsEmpty(): boolean {\n\t\treturn !this.input || this.input.nativeElement?.value.length === 0;\n\t}\n\n\tpublic clearText(event: MouseEvent): void {\n\t\tthis.input.nativeElement.value = '';\n\t\tthis.doSearchText('');\n\t}\n\n\tpublic onEnterDoSelect(event: KeyboardEvent) {\n\t\tif (this.isDropdownOpened && this.gridOptions.api.getRenderedNodes().length > 0) {\n\t\t\tthis.gridOptions.api.getDisplayedRowAtIndex(0).selectThisNode(true);\n\t\t\tthis.selectedItemChange.emit(this.gridOptions.api.getDisplayedRowAtIndex(0).data);\n\t\t}\n\t}\n\n}\n","import { ChangeDetectorRef, Directive, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\nimport { AbstractComboBox } from '../abstract-combobox.component';\nimport { Observable } from 'rxjs';\nimport { PreferencesService } from 'systelab-preferences';\n\ndeclare var jQuery: any;\n\nexport class ComboTreeNode<T> {\n\tpublic nodeData: T;\n\tpublic level: number;\n\n\tconstructor(pNodeData?: T, pLevel?: number) {\n\t\tthis.nodeData = pNodeData;\n\t\tthis.level = pLevel;\n\t}\n}\n\n@Directive()\nexport abstract class AbstractApiTreeComboBox<T> extends AbstractComboBox<ComboTreeNode<T>> implements AgRendererComponent, OnInit, OnDestroy {\n\n\tpublic static readonly FAVOURITEID = 'favourite';\n\n\t@Input() public isParentSelectable = false;\n\t@Input() public isAllSelectable = true;\n\n\tpublic totalItemsLoaded = false;\n\tpublic isFirstTime = true;\n\tpublic override isTree = true;\n\n\tconstructor(public override myRenderer: Renderer2, public chref: ChangeDetectorRef, public override preferencesService?: PreferencesService) {\n\t\tsuper(myRenderer, chref, preferencesService);\n\t}\n\n\tpublic override ngOnInit(): void {\n\n\t\tthis.setRowHeight();\n\t\tthis.configGrid();\n\t\tthis.initializeFavouriteList();\n\t}\n\n\tprotected override configGrid() {\n\t\tthis.columnDefs = [\n\t\t\t{\n\t\t\t\tcolId:        'itemDescription',\n\t\t\t\tcellRenderer: (params: any) => {\n\t\t\t\t\treturn this.getLabelForLevel(params.data);\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\tthis.gridOptions = {};\n\n\t\tthis.gridOptions.columnDefs = this.columnDefs;\n\n\t\tthis.gridOptions.rowHeight = AbstractComboBox.ROW_HEIGHT;\n\t\tthis.gridOptions.headerHeight = 0;\n\t\tthis.gridOptions.rowSelection = 'single';\n\t}\n\n\tgetInstance(): ComboTreeNode<T> {\n\t\treturn new ComboTreeNode<T>();\n\t}\n\n\tgetDescriptionField(): string {\n\t\treturn '';\n\t}\n\n\tgetCodeField(): string {\n\t\treturn '';\n\t}\n\n\tgetIdField(): string {\n\t\treturn '';\n\t}\n\n\tpublic abstract getData(): Observable<Array<T>>;\n\n\tpublic abstract getTotalItems(): number;\n\n\tpublic abstract getLevelDescriptionField(level: number): string;\n\n\tpublic abstract getLevelIdField(level: number): string;\n\n\tpublic abstract getAllNodeId(): string | number;\n\n\tpublic abstract getAllNodeDescription(): string;\n\n\tpublic abstract getSelectionPrefix(level: number): string;\n\n\tprotected getFavouriteText(): string {\n\t\treturn 'Favourites';\n\t}\n\n\tpublic getLabelForLevel(comboTreeNode: ComboTreeNode<T>): string {\n\t\tif (comboTreeNode.level === 0) {\n\t\t\treturn comboTreeNode.nodeData[this.getLevelDescriptionField(0)];\n\t\t} else if (comboTreeNode.level > 0) {\n\t\t\treturn '<span style=\"padding-left: ' + (20 * comboTreeNode.level) + 'px\">'\n\t\t\t\t+ comboTreeNode.nodeData[this.getLevelDescriptionField(comboTreeNode.level)]\n\t\t\t\t+ '</span>';\n\t\t}\n\t}\n\n\t// override\n\tpublic override closeDropDown() {\n\t\tthis.isFirstTime = true;\n\t\tsuper.closeDropDown();\n\t}\n\n\t// override\n\tpublic override loop(): void {\n\t\tlet result = true;\n\n\t\tif (this.isDropDownOpen()) {\n\t\t\t// First time opened we load the table\n\t\t\tif (this.isFirstTime) {\n\t\t\t\tthis.getRows();\n\t\t\t}\n\n\t\t\tif (this.totalItemsLoaded) {\n\t\t\t\tthis.setDropdownHeight();\n\t\t\t\tthis.setDropdownPosition();\n\t\t\t\tthis.transferFocusToGrid();\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\t\tif (result) {\n\t\t\tsetTimeout(() => this.loop(), 10);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Override\n\tpublic override setDropdownHeight() {\n\t\tlet totalItems = Number(this.gridOptions.api.getDisplayedRowCount());\n\t\tlet calculatedHeight = 0;\n\n\t\tif (this.emptyElement) {\n\t\t\ttotalItems += 1;\n\t\t}\n\n\t\tif (totalItems === 0) {\n\t\t\tcalculatedHeight += 6 + AbstractComboBox.ROW_HEIGHT;\n\t\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', calculatedHeight + 'px');\n\t\t} else if (totalItems < 10) {\n\t\t\tcalculatedHeight = 6 + AbstractComboBox.ROW_HEIGHT * totalItems;\n\t\t} else {\n\t\t\tcalculatedHeight = AbstractComboBox.ROW_HEIGHT * 10;\n\t\t}\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', calculatedHeight + 'px');\n\n\t}\n\n\tpublic getRows(): void {\n\t\tthis.totalItemsLoaded = false;\n\t\tthis.isFirstTime = false;\n\t\tthis.getData()\n\t\t\t.subscribe({\n\t\t\t\t\tnext:  (dataVector: Array<T>) => {\n\t\t\t\t\t\tconst nodeVector: Array<ComboTreeNode<T>> = [];\n\t\t\t\t\t\tlet previousParent: number | string;\n\n\t\t\t\t\t\tif (this.emptyElement) {\n\t\t\t\t\t\t\tconst emptyElement: T = {} as T;\n\t\t\t\t\t\t\temptyElement[this.getLevelIdField(0)] = '';\n\t\t\t\t\t\t\temptyElement[this.getLevelDescriptionField(0)] = '';\n\t\t\t\t\t\t\tconst emptyElementNode: ComboTreeNode<T> = new ComboTreeNode<T>(emptyElement, 0);\n\t\t\t\t\t\t\tnodeVector.push(emptyElementNode);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.withFavourites) {\n\t\t\t\t\t\t\tthis.initializeFavouriteList();\n\t\t\t\t\t\t\tif (this.favouriteList.length > 0) {\n\t\t\t\t\t\t\t\tconst favouriteElement: T = {} as T;\n\t\t\t\t\t\t\t\tfavouriteElement[this.getLevelIdField(0)] = AbstractApiTreeComboBox.FAVOURITEID;\n\t\t\t\t\t\t\t\tfavouriteElement[this.getLevelDescriptionField(0)] = this.getFavouriteText();\n\t\t\t\t\t\t\t\tconst favouriteComboNode: ComboTreeNode<T> = new ComboTreeNode<T>(favouriteElement, 0);\n\t\t\t\t\t\t\t\tnodeVector.push(favouriteComboNode);\n\t\t\t\t\t\t\t\tconst favouriteElements = this.getFavouriteElements(dataVector);\n\t\t\t\t\t\t\t\tfavouriteElements.forEach(currentFavouriteElement => {\n\t\t\t\t\t\t\t\t\tconst currentFavouriteNode: ComboTreeNode<T> = new ComboTreeNode<T>(currentFavouriteElement, 1);\n\t\t\t\t\t\t\t\t\tnodeVector.push(currentFavouriteNode);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.isAllSelectable) {\n\t\t\t\t\t\t\tconst allElement: T = {} as T;\n\t\t\t\t\t\t\tallElement[this.getLevelIdField(0)] = this.getAllNodeId();\n\t\t\t\t\t\t\tallElement[this.getLevelDescriptionField(0)] = this.getAllNodeDescription();\n\t\t\t\t\t\t\tconst allComboNode: ComboTreeNode<T> = new ComboTreeNode<T>(allElement, 0);\n\t\t\t\t\t\t\tnodeVector.push(allComboNode);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataVector.forEach((element: T) => {\n\t\t\t\t\t\t\tif (!previousParent || element[this.getLevelIdField(0)] !== previousParent) {\n\t\t\t\t\t\t\t\tpreviousParent = element[this.getLevelIdField(0)];\n\t\t\t\t\t\t\t\tconst parentComboNode: ComboTreeNode<T> = new ComboTreeNode<T>(element, 0);\n\t\t\t\t\t\t\t\tnodeVector.push(parentComboNode);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst comboNode: ComboTreeNode<T> = new ComboTreeNode<T>(element, 1);\n\t\t\t\t\t\t\tnodeVector.push(comboNode);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.totalItemsLoaded = true;\n\t\t\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\t\t\tthis.gridOptions.api.setRowData(nodeVector);\n\t\t\t\t\t\tthis.gridOptions.api.redrawRows();\n\t\t\t\t\t},\n\t\t\t\t\terror: () => {\n\t\t\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\t// Overrides\n\tprotected override checkIfIsFavourite(id: string | number): void {\n\t\tconst idString = id ? id.toString() : undefined;\n\t\tif (idString && idString.includes(this.getSelectionPrefix(1))) {\n\t\t\tsuper.checkIfIsFavourite(idString.substr(1));\n\t\t} else {\n\t\t\tsuper.checkIfIsFavourite(id);\n\t\t}\n\t}\n\n\t// Overrides\n\tprotected override toggleFavourite(): void {\n\t\tif (this.id.toString()\n\t\t\t.includes(this.getSelectionPrefix(1))) {\n\t\t\tthis.isFavourite = !this.isFavourite;\n\t\t\tif (this.isFavourite) {\n\t\t\t\tthis.favouriteList.push(this.id.toString()\n\t\t\t\t\t.substr(1));\n\t\t\t} else {\n\t\t\t\tthis.favouriteList.splice(this.favouriteList.map(String)\n\t\t\t\t\t.indexOf(this.id.toString()\n\t\t\t\t\t\t.substr(1)), 1);\n\t\t\t}\n\t\t\tthis.preferencesService.put(this.getComboPreferencesPrefix() + '.favourites', this.favouriteList.map(String));\n\t\t} else {\n\t\t\tsuper.toggleFavourite();\n\t\t}\n\t}\n\n\t// Overrides\n\tpublic override onRowSelected(event: any) {\n\t\tif (event.node.selected) {\n\t\t\tif (this.isParentSelectable && event.node.data.nodeData[this.getLevelIdField(0)] !== AbstractApiTreeComboBox.FAVOURITEID) {\n\t\t\t\tjQuery('#' + this.comboId)\n\t\t\t\t\t.dropdown('toggle');\n\t\t\t} else if (this.isAllSelectable && event.node && event.node.data && event.node.data.level === 0) {\n\t\t\t\tif (event.node.data.nodeData[this.getLevelIdField(0)] === this.getAllNodeId()) {\n\t\t\t\t\tjQuery('#' + this.comboId)\n\t\t\t\t\t\t.dropdown('toggle');\n\t\t\t\t} else {\n\t\t\t\t\tevent.node.setSelected(false);\n\t\t\t\t}\n\t\t\t} else if (event.node && event.node.data && event.node.data.level > 0) {\n\t\t\t\tjQuery('#' + this.comboId)\n\t\t\t\t\t.dropdown('toggle');\n\t\t\t} else {\n\t\t\t\tif (event.node) {\n\t\t\t\t\tevent.node.setSelected(false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Overrides\n\tpublic override onSelectionChanged(event: any) {\n\t\tconst selectedRow = this.getSelectedRow();\n\t\tif (selectedRow !== null && selectedRow !== undefined) {\n\t\t\tthis.id = selectedRow.nodeData[this.getLevelIdField(selectedRow.level)];\n\t\t\tthis.description = selectedRow.nodeData[this.getLevelDescriptionField(selectedRow.level)];\n\t\t\tthis.currentSelected = selectedRow.nodeData;\n\t\t\tthis.level = selectedRow.level;\n\t\t\tif (selectedRow.level > 0\n\t\t\t\t|| (this.isAllSelectable && selectedRow.nodeData[this.getLevelIdField(0)] === this.getAllNodeId())\n\t\t\t\t|| this.isParentSelectable) {\n\t\t\t\tthis.change.emit(selectedRow.nodeData);\n\t\t\t\tthis.idChange.emit(this.id);\n\t\t\t\tthis.closeDropDown();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic override refresh(params: any): boolean {\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.getRows();\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tprivate getFavouriteElements(dataVector: Array<T>): Array<T> {\n\t\treturn dataVector.filter((data: T) => this.favouriteList.map(String)\n\t\t\t.includes(data[this.getLevelIdField(1)].toString()));\n\t}\n}\n","import { GridContextMenuActionData } from './grid-context-menu-action-data';\nimport { AbstractContextMenuOption } from '../../contextmenu/abstract-context-menu-option';\n\nexport type GridContextMenuActionFunction<T> = (data: GridContextMenuActionData<T>) => void;\nexport type GridContextMenuIsEnabledFunction<T> = (data: T) => boolean;\n\nexport class GridContextMenuOption<T> extends AbstractContextMenuOption<GridContextMenuActionFunction<T>, GridContextMenuIsEnabledFunction<T>> {\n\n\tconstructor(public override actionId: string,\n\t            public override actionText: string,\n\t            public override action?: GridContextMenuActionFunction<T>,\n\t            public override isActionEnabled?: GridContextMenuIsEnabledFunction<T>,\n\t            public override isDivider?: boolean,\n\t            public override iconClass?: string,\n\t            public override backgroundIconColor?: string,\n\t            public override iconColor?: string,\n\t            public override childrenContextMenuOptions?: Array<GridContextMenuOption<T>>,\n\t            public override iconFontSize?: string) {\n\t\tsuper();\n\t}\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { IDatasource, IGetRowsParams } from 'ag-grid-community';\nimport { Observable } from 'rxjs';\nimport { AbstractListBox } from './abstract-listbox.component';\n\n@Directive()\nexport abstract class AbstractApiListBox<T> extends AbstractListBox<T> implements IDatasource, OnInit {\n\n\tpublic abstract override getInstance(): T;\n\n\tprotected constructor() {\n\t\tsuper();\n\t}\n\n\tpublic override ngOnInit() {\n\n\t\tsuper.ngOnInit();\n\n\t\tthis.gridOptions.rowModelType = 'infinite';\n\t\tthis.gridOptions.paginationPageSize = 50;\n\t\tthis.gridOptions.cacheBlockSize = 50;\n\t\tthis.gridOptions.cacheOverflowSize = 2;\n\t\tthis.gridOptions.maxConcurrentDatasourceRequests = 4;\n\t\tthis.gridOptions.maxBlocksInCache = 15;\n\t\t// this.gridOptions.paginationInitialRowCount = 0;\n\t\tthis.gridOptions.infiniteInitialRowCount = 0;\n\n\t\tthis.gridOptions.datasource = this;\n\t}\n\n\tpublic abstract getTotalItems(): number;\n\n\tprotected abstract getData(page: number, itemsPerPage: number): Observable<Array<T>>;\n\n\tpublic getRows(params: IGetRowsParams): void {\n\n\t\tthis.gridOptions.api.showLoadingOverlay();\n\t\tconst page: number = params.endRow / this.gridOptions.paginationPageSize;\n\t\tconst pageSize: number = this.gridOptions.paginationPageSize;\n\n\t\tconst showAllElementNumber: number = this.showAll ? 1 : 0;\n\t\tconst totalItems: number = this.getTotalItems() + showAllElementNumber;\n\t\tconst modulus: number = totalItems % pageSize;\n\n\t\tif (page === 1 || page <= totalItems / pageSize || modulus > 1 || (modulus === 1 && !this.showAll)) {\n\t\t\tthis.getElements(page, pageSize, showAllElementNumber, params);\n\t\t} else {\n\t\t\tthis.getData(page - 1, this.gridOptions.paginationPageSize)\n\t\t\t\t.subscribe({\n\t\t\t\t\t\tnext:  (previousPage: Array<T>) => {\n\t\t\t\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\t\t\t\tconst itemArray: Array<T> = [];\n\t\t\t\t\t\t\tconst totItems: number = Number(this.getTotalItems() + showAllElementNumber);\n\n\t\t\t\t\t\t\tconst lastItemFromPreviousPage = previousPage[this.gridOptions.paginationPageSize - 1];\n\t\t\t\t\t\t\titemArray.push(lastItemFromPreviousPage);\n\n\t\t\t\t\t\t\tparams.successCallback(itemArray, totItems);\n\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: () => {\n\t\t\t\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\t\t\t\tparams.failCallback();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t}\n\t}\n\n\tprivate getElements(page: number, pageSize: number, emptyElemNumber: number, params: IGetRowsParams) {\n\t\tthis.getData(page, pageSize)\n\t\t\t.subscribe(\n\t\t\t\t{\n\t\t\t\t\tnext:  (v: Array<T>) => {\n\t\t\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\t\t\tconst itemArray: Array<T> = [];\n\t\t\t\t\t\tconst totalItems: number = Number(this.getTotalItems() + emptyElemNumber);\n\n\t\t\t\t\t\tif (this.showAll === true) {\n\n\t\t\t\t\t\t\tif (page === 1) {\n\t\t\t\t\t\t\t\tconst newElement: T = this.getInstance();\n\t\t\t\t\t\t\t\tnewElement[this.getIdField()] = this.getAllFieldID();\n\t\t\t\t\t\t\t\tnewElement[this.getDescriptionField()] = this.getAllFieldDescription();\n\t\t\t\t\t\t\t\titemArray.push(newElement);\n\n\t\t\t\t\t\t\t\tfor (const originalElement of v) {\n\t\t\t\t\t\t\t\t\titemArray.push(originalElement);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tparams.successCallback(itemArray, totalItems);\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.getData(page - 1, this.gridOptions.paginationPageSize)\n\t\t\t\t\t\t\t\t\t.subscribe(\n\t\t\t\t\t\t\t\t\t\t(previousPage: Array<T>) => {\n\t\t\t\t\t\t\t\t\t\t\tconst lastItemFromPreviousPage = previousPage[this.gridOptions.paginationPageSize - 1];\n\t\t\t\t\t\t\t\t\t\t\titemArray.push(lastItemFromPreviousPage);\n\n\t\t\t\t\t\t\t\t\t\t\tfor (const originalElement of v) {\n\t\t\t\t\t\t\t\t\t\t\t\titemArray.push(originalElement);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tparams.successCallback(itemArray, totalItems);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\t\t\t\tparams.failCallback();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (const originalElement of v) {\n\t\t\t\t\t\t\t\titemArray.push(originalElement);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tparams.successCallback(itemArray, totalItems);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\terror: () => {\n\t\t\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\t\t\tparams.failCallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tpublic refresh() {\n\t\tthis.gridOptions.api.setDatasource(this);\n\t}\n\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { AbstractTreeListboxRendererComponent } from './renderer/abstract-tree-listbox-renderer.component';\nimport { StylesUtilService } from '../utilities/styles.util.service';\nimport { AbstractListBox } from './abstract-listbox.component';\nimport { Observable } from 'rxjs';\nimport { GetRowIdParams } from 'ag-grid-community';\n\nexport class TreeListBoxElement<T> {\n\tpublic nodeData: T;\n\tpublic level: number;\n\tpublic selected: boolean;\n\n\tconstructor(pNodeData?: T, pLevel?: number, pSelected?: boolean) {\n\t\tthis.nodeData = pNodeData;\n\t\tthis.level = pLevel;\n\t\tthis.selected = pSelected;\n\t}\n}\n\n@Directive()\nexport abstract class AbstractApiTreeListBox<T> extends AbstractListBox<TreeListBoxElement<T>> implements OnInit, AfterViewInit {\n\t@ViewChild('hidden', {static: true}) public override hiddenElement: ElementRef;\n\n\t@Input() public isParentSelectable = true;\n\t@Input() public updateHierarchy = true;\n\t@Output() public selectedTreeItemChange = new EventEmitter<TreeListBoxElement<T>>();\n\t@Output() public selectedIDListChange = new EventEmitter<string>();\n\n\tpublic columnDefs: Array<any>;\n\tpublic treeValues: Array<TreeListBoxElement<T>> = [];\n\tpublic _selectedTreeItem: TreeListBoxElement<T>;\n\tpublic paddingSingleSelection = 0;\n\n\t@Input()\n\tset selectedTreeItem(value: TreeListBoxElement<T>) {\n\t\tthis._selectedTreeItem = value;\n\t\tthis.selectTreeItemInGrid();\n\t}\n\n\tget selectedTreeItem(): TreeListBoxElement<T> {\n\t\treturn this._selectedTreeItem;\n\t}\n\n\t@Input()\n\tset selectedIDList(value: string) {\n\t\tthis._selectedIDList = value;\n\t\tif (!value) {\n\t\t\tthis.initSelectionList();\n\t\t}\n\t\tthis.selectedIDListChange.emit(this._selectedIDList);\n\t}\n\n\tget selectedIDList(): string {\n\t\tthis._selectedIDList = '';\n\t\tfor (const selectedItem of this.multipleSelectedItemList) {\n\t\t\tif (this._selectedIDList && this._selectedIDList !== '') {\n\t\t\t\tthis._selectedIDList += ',';\n\t\t\t}\n\t\t\tconst level = selectedItem['level'] === 0 ? 0 : 1;\n\t\t\tthis._selectedIDList += this.getSelectionPrefix(level) + selectedItem.nodeData[this.getIdField(level)];\n\t\t}\n\t\treturn this._selectedIDList;\n\t}\n\n\tprotected _selectedIDList: string;\n\n\tprotected constructor() {\n\t\tsuper();\n\t}\n\n\tpublic override ngOnInit(): void {\n\t\tthis.configGrid();\n\t}\n\n\tpublic ngAfterViewInit(): void {\n\t\tthis.getRows();\n\t}\n\n\t// Override\n\tpublic override cleanSelection(): void {\n\t\tthis.treeValues = this.treeValues.map(treeValue => {\n\t\t\ttreeValue.selected = false;\n\t\t\treturn treeValue;\n\t\t});\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.redrawRows();\n\t\t}\n\t}\n\n\t// eslint-disable-next-line  @typescript-eslint/no-explicit-any\n\tpublic override doClick(row: any): void {\n\t\tif (!this.multipleSelection && !this.isDisabled) {\n\t\t\tconst selectionLevel = row.node.data.level;\n\t\t\tif ((selectionLevel === 0 && this.isParentSelectable) || selectionLevel > 0) {\n\t\t\t\tthis.selectedTreeItem = row.node.data;\n\t\t\t\tthis.selectedTreeItemChange.emit(row.node.data);\n\t\t\t}\n\t\t}\n\t}\n\n\t// eslint-disable-next-line  @typescript-eslint/no-explicit-any\n\tpublic changeValues(event: any): void {\n\t\tif (this.multipleSelection) {\n\t\t\tthis.addRemoveToMultipleSelectedItem(event);\n\t\t\tif (this.updateHierarchy) {\n\t\t\t\tif (event.level === 0) {\n\t\t\t\t\tthis.selectUnselectChildTree(event);\n\t\t\t\t} else {\n\t\t\t\t\tthis.selectUnselectParentTree(event);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.selectedIDListChange.emit(this.selectedIDList);\n\t\t}\n\t\tif (this.gridOptions.api) {\n\t\t\tthis.doAutoSizeManagement();\n\t\t}\n\t}\n\n\tpublic addSelectedItem(selected: TreeListBoxElement<T>): void {\n\t\tif (this.containsElement(selected)) {\n\t\t\tthis.removeElement(selected);\n\t\t} else {\n\t\t\tif (!this.multipleSelectedItemList) {\n\t\t\t\tthis.multipleSelectedItemList = [selected];\n\t\t\t} else {\n\t\t\t\tthis.multipleSelectedItemList.push(selected);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeElement(seleccionado: TreeListBoxElement<T>): void {\n\t\tfor (let i = 0; i < this.multipleSelectedItemList.length; i++) {\n\t\t\tconst element = this.multipleSelectedItemList[i];\n\t\t\tif (element.nodeData[this.getIdField(1)] === seleccionado.nodeData[this.getIdField(1)]\n\t\t\t\t&& element['level'] === seleccionado['level']) {\n\t\t\t\tthis.multipleSelectedItemList.splice(i, 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic containsElement(seleccionado: TreeListBoxElement<T>): boolean {\n\t\tif (this.multipleSelectedItemList) {\n\t\t\tfor (const element of this.multipleSelectedItemList) {\n\t\t\t\tif (element.nodeData[this.getIdField(1)] === seleccionado.nodeData[this.getIdField(1)]\n\t\t\t\t\t&& element['level'] === seleccionado['level']) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t// eslint-disable-next-line  @typescript-eslint/no-explicit-any\n\tpublic override onModelUpdated(pEvent: any): void {\n\t}\n\n\tprotected configGrid(): void {\n\t\tthis.paddingSingleSelection = this.multipleSelection ? 0 : 2;\n\t\tthis.gridOptions = {};\n\t\tthis.gridOptions.headerHeight = 0;\n\t\tthis.gridOptions.rowSelection = 'single';\n\t\tconst lineHeight = StylesUtilService.getStyleValue(this.hiddenElement, 'line-height');\n\t\tif (lineHeight) {\n\t\t\tthis.gridOptions.rowHeight = Number(lineHeight);\n\t\t} else {\n\t\t\tthis.gridOptions.rowHeight = Number(26);\n\t\t}\n\t\tthis.gridOptions.suppressCellFocus = true;\n\n\t\tif (this.multipleSelection) {\n\t\t\tthis.gridOptions.suppressRowClickSelection = true;\n\t\t} else {\n\t\t\tthis.gridOptions.suppressRowClickSelection = this.isDisabled;\n\t\t}\n\n\t\tthis.columnDefs = [\n\t\t\t{\n\t\t\t\tcolId:              'id',\n\t\t\t\tcellRenderer:       AbstractTreeListboxRendererComponent,\n\t\t\t\tcellRendererParams: {\n\t\t\t\t\tchangeFunction:         (e) => {\n\t\t\t\t\t\tthis.changeValues(e);\n\t\t\t\t\t},\n\t\t\t\t\tlevel0IDField:          this.getIdField(0),\n\t\t\t\t\tlevel0DescriptionField: this.getDescriptionField(0),\n\t\t\t\t\tlevel1IDField:          this.getIdField(1),\n\t\t\t\t\tlevel1DescriptionField: this.getDescriptionField(1),\n\t\t\t\t\tisDisabled:             this.isDisabled,\n\t\t\t\t\tisMultipleSelection:    this.multipleSelection\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\tthis.gridOptions.getRowId = (item: GetRowIdParams) => this.getRowNodeId(item)\n\t\t\t?.toString();\n\n\t\tthis.gridOptions.columnDefs = this.columnDefs;\n\n\t}\n\n\tprotected override getRowNodeId(item: GetRowIdParams): string | number | undefined {\n\t\tif (item?.data?.nodeData[this.getIdField(1)]) {\n\t\t\treturn item.level + '-' + item.data.nodeData[this.getIdField(1)];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprotected getRows(): void {\n\t\tthis.getData()\n\t\t\t.subscribe({\n\t\t\t\tnext:  (dataVector: Array<T>) => {\n\t\t\t\t\tthis.loadValues(dataVector);\n\t\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\t\tthis.gridOptions.api.setRowData(this.treeValues);\n\t\t\t\t\tthis.gridOptions.api.redrawRows();\n\t\t\t\t\tif (this.multipleSelection) {\n\t\t\t\t\t\tthis.initSelectionList();\n\t\t\t\t\t} else if (this.selectedTreeItem) {\n\t\t\t\t\t\tthis.selectTreeItemInGrid();\n\t\t\t\t\t}\n\t\t\t\t\tthis.doAutoSizeManagement();\n\t\t\t\t},\n\t\t\t\terror: () => {\n\t\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprotected loadValues(dataVector: Array<T>): void {\n\t\tthis.treeValues = [];\n\t\tlet previousParent: number | string;\n\n\t\tdataVector.forEach(element => {\n\t\t\tif (!previousParent || element[this.getIdField(0)] !== previousParent) {\n\t\t\t\tpreviousParent = element[this.getIdField(0)];\n\t\t\t\tconst parentNode = new TreeListBoxElement(element, 0, false);\n\t\t\t\tthis.treeValues.push(parentNode);\n\t\t\t}\n\t\t\tconst node = new TreeListBoxElement(element, 1, false);\n\t\t\tthis.treeValues.push(node);\n\t\t});\n\t}\n\n\tprotected initSelectionList(): void {\n\t\tif (this.multipleSelection) {\n\t\t\tif (this._selectedIDList) {\n\t\t\t\tconst selectedIDStringList: Array<string> = this._selectedIDList.split(',');\n\t\t\t\tselectedIDStringList.forEach(selectedID => {\n\t\t\t\t\tif (selectedID.startsWith(this.getSelectionPrefix(0))) {\n\t\t\t\t\t\tthis.treeValues.forEach(element => {\n\t\t\t\t\t\t\tif (element.level === 0\n\t\t\t\t\t\t\t\t&& ((element.nodeData[this.getIdField(0)] + '') === selectedID.substring(1, selectedID.length))) {\n\t\t\t\t\t\t\t\telement.selected = true;\n\t\t\t\t\t\t\t\tthis.addSelectedItem(element);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tif (selectedID.startsWith(this.getSelectionPrefix(1))) {\n\t\t\t\t\t\tthis.treeValues.forEach(element => {\n\t\t\t\t\t\t\tif (element.level === 1\n\t\t\t\t\t\t\t\t&& ((element.nodeData[this.getIdField(1)] + '') === selectedID.substring(1, selectedID.length))) {\n\t\t\t\t\t\t\t\telement.selected = true;\n\t\t\t\t\t\t\t\tthis.addSelectedItem(element);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.multipleSelectedItemList = [];\n\t\t\t\tthis.cleanSelection();\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected selectTreeItemInGrid(): void {\n\t\tif (this.gridOptions && this.gridOptions.api) {\n\t\t\tthis.gridOptions.api.forEachNode(node => {\n\t\t\t\tif (!this.multipleSelection) {\n\t\t\t\t\tif (!this.selectedTreeItem && this.selectFirstItem) {\n\t\t\t\t\t\tif (node.rowIndex === 0) {\n\t\t\t\t\t\t\tnode.setSelected(true);\n\t\t\t\t\t\t\tthis.selectedTreeItem = node.data;\n\t\t\t\t\t\t\tthis.selectedTreeItemChange.emit(node.data);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (this.selectedTreeItem && this.selectedTreeItem.nodeData) {\n\t\t\t\t\t\tconst level = this.getIdField(this.selectedTreeItem.level);\n\t\t\t\t\t\tif (node.data.nodeData[level] === this.selectedTreeItem.nodeData[level]\n\t\t\t\t\t\t\t&& node.data.level === this.selectedTreeItem.level) {\n\t\t\t\t\t\t\tnode.setSelected(true);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected selectUnselectChildTree(event: any) {\n\t\tthis.treeValues.forEach((value: TreeListBoxElement<T>) => {\n\t\t\tif (value.nodeData[this.getIdField(0)] === event.nodeData[this.getIdField(0)]) {\n\t\t\t\tvalue.selected = event.selected;\n\t\t\t\tthis.addRemoveToMultipleSelectedItem(value);\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected selectUnselectParentTree(event: any) {\n\t\tconst parentID = event.nodeData[this.getIdField(0)];\n\t\tlet allChildSelected = true;\n\t\tlet anyNode = false;\n\t\tthis.treeValues.forEach((value: TreeListBoxElement<T>) => {\n\t\t\tif (value.nodeData[this.getIdField(0)] === parentID) {\n\t\t\t\tanyNode = true;\n\t\t\t\tif (!value.selected && value.level === 1) {\n\t\t\t\t\tallChildSelected = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (anyNode) {\n\t\t\tthis.treeValues.forEach((value: TreeListBoxElement<T>) => {\n\t\t\t\tif (value.level === 0 && value.nodeData[this.getIdField(0)] === parentID) {\n\t\t\t\t\tvalue.selected = allChildSelected;\n\t\t\t\t\tthis.addRemoveToMultipleSelectedItem(value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected addRemoveToMultipleSelectedItem(event: any) {\n\t\tif (this.multipleSelectedItemList) {\n\t\t\tconst elementIndexInSelectedList: number = this.multipleSelectedItemList.findIndex((item) =>\n\t\t\t\t(item.nodeData[this.getIdField(1)] === event.nodeData[this.getIdField(1)] && item['level'] === event['level'])\n\t\t\t);\n\t\t\tif (elementIndexInSelectedList < 0 && event.selected) {\n\t\t\t\tconst newElement = new TreeListBoxElement(event.nodeData, event['level'], event['selected']);\n\t\t\t\tthis.multipleSelectedItemList.push(newElement);\n\t\t\t} else {\n\t\t\t\tif (elementIndexInSelectedList !== -1 && !event.selected) {\n\t\t\t\t\tthis.multipleSelectedItemList.splice(elementIndexInSelectedList, 1);\n\t\t\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList.slice();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.multipleSelectedItemList = [];\n\t\t\tconst newElement = new TreeListBoxElement(event.nodeData, event['level'], event['selected']);\n\t\t\tthis.multipleSelectedItemList.push(newElement);\n\t\t}\n\t}\n\n\tprotected abstract getData(): Observable<Array<T>>;\n\n\tprotected abstract getSelectionPrefix(level: number): string;\n}\n","import { Directive, Input, OnInit } from '@angular/core';\nimport {AbstractSortableListComponent} from '../sortable-list/abstract-sortable-list.component';\n\n@Directive()\nexport abstract class AbstractAddRemoveList<T> extends AbstractSortableListComponent<T> implements OnInit {\n\n\t@Input() public override elementsList: Array<T> = [];\n\t@Input() public buttonsOnBottom = false;\n\t@Input() public isDisabled = false;\n\t@Input() public showChecks = false;\n\t@Input() public showSelectedRowsInRemoveButton = false;\n\tpublic checkId: string = (Math.floor(Math.random() * (999999999999 - 1))).toString();\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tpublic ngOnInit(): void {\n\t}\n\n\tpublic add(): void {\n\t}\n\n\tpublic remove(): void {\n\t}\n\n\tpublic override getDescription(element: T): string {\n\t\treturn element[this.getDescriptionField(element)];\n\t}\n\n\tpublic preventDefault(event) {\n\t\tevent.mouseEvent.preventDefault();\n\t\treturn false;\n\t}\n\n\tpublic getSelectedElements(): string {\n\t\tif (this.showSelectedRowsInRemoveButton) {\n\t\t\tconst selectedElements = this.elementsList.filter(element=> element[this.getSelectionField(element)]).length;\n\t\t\treturn selectedElements > 0 ? `(${selectedElements})` : '';\n\t\t} else {\n\t\t\treturn '';\n\t\t}\n\t}\n\n\tpublic override selectElement(element: T, ev: KeyboardEvent) {\n\t\tif (!this.showChecks) {\n\t\t\tif (!ev.ctrlKey) {\n\t\t\t\tthis.elementsList.forEach(elementInList => {\n\t\t\t\t\telementInList[this.getSelectionField(element)] = false;\n\t\t\t\t});\n\t\t\t}\n\t\t\telement[this.getSelectionField(element)] = !element[this.getSelectionField(element)];\n\t\t}\n\t}\n\n\tpublic selectCheckbox(element: T) {\n\t\telement[this.getSelectionField(element)] = !element[this.getSelectionField(element)];\n\t}\n\n\tpublic abstract override getDescriptionField(element: T): string;\n}\n","export class TreeNode<T = any> {\n\tlabel?: string;\n\tdata?: T;\n\ticon?: string;\n\tstatus?: string;\n\texpandedIcon?: any;\n\tcollapsedIcon?: any;\n\tchildren?: TreeNode<T>[];\n\tparent?: TreeNode<T>;\n\tleaf?: boolean;\n\texpanded?: boolean;\n\tstyleClass?: string;\n\tselectable?: boolean;\n\tisNodeSelected?: boolean;\n\tkey?: string;\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NestedTreeControl } from '@angular/cdk/tree';\nimport { ArrayDataSource } from '@angular/cdk/collections';\nimport { TreeNode } from './tree-node';\n\n@Directive()\nexport abstract class AbstractTree implements OnInit {\n\n\t@Output() public nodeSelected = new EventEmitter<TreeNode>();\n\n\tpublic defaultExpandedIcon = 'icon-angle-down';\n\tpublic defaultCollapsedIcon = 'icon-angle-right';\n\n\tpublic _tree: TreeNode[] = [];\n\tpublic dataSource = new ArrayDataSource(this._tree);\n\n\tpublic treeControl = new NestedTreeControl<TreeNode>(node => node.children);\n\n\tpublic selectedNode: TreeNode;\n\n\t@Input()\n\tpublic get tree(): TreeNode[]  {\n\t\treturn this._tree;\n\t}\n\n\tpublic set tree(newTree: Array<TreeNode>) {\n\t\tthis._tree = newTree;\n\t\tthis.dataSource = new ArrayDataSource(this._processData(this._tree, null));\n\t}\n\n\tconstructor() {\n\t\tthis.treeControl.isExpanded = (node) => node.expanded;\n\t\tthis.treeControl.toggle = (node) => {\n\t\t\tnode.expanded = !node.expanded;\n\t\t};\n\t}\n\n\tpublic ngOnInit() {\n\t\tif (this._tree) {\n\t\t\tthis.dataSource = new ArrayDataSource(this._processData(this._tree, null));\n\t\t}\n\t}\n\n\tpublic hasChild = (_: number, node: TreeNode): boolean => !!node.children?.length;\n\n\tpublic doClick(node: TreeNode): void {\n\t\tif (node.selectable !== false) {\n\t\t\tif (this.selectedNode) {\n\t\t\t\tthis.selectedNode.isNodeSelected = false;\n\t\t\t}\n\t\t\tthis.selectedNode = node;\n\t\t\tnode.isNodeSelected = !node.isNodeSelected;\n\t\t\tthis.nodeSelected.emit(node);\n\t\t}\n\t}\n\n\tprivate _processData(data, parent = null) {\n\t\tdata.forEach(item => {\n\t\t\tif (parent !== null) {\n\t\t\t\titem.parent = parent;\n\t\t\t} else {\n\t\t\t\titem.parent = null;\n\t\t\t}\n\t\t\tif (item.children?.length) {\n\t\t\t\tthis._processData(item.children, item);\n\t\t\t}\n\t\t});\n\t\treturn data;\n\t}\n}\n","export class SpyMenuItem {\n\t public hidden: (() => boolean) | boolean;\n\t public  disabled: (() => boolean) | boolean;\n\n\tconstructor(public id: string, public text: string) {\n\n\t}\n}","import {UntypedFormControl, NG_VALIDATORS,ValidationErrors, Validator} from '@angular/forms';\nimport {Directive} from '@angular/core';\n\nexport const emailValidator = (control: UntypedFormControl): ValidationErrors | null => {\n  const regExp = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/;\n\n  return regExp.test(control.value) ? null : {\n    email: control.value\n  };\n};\n\n@Directive({\n  selector: '[systelab-emailValidator]',\n  providers: [{\n      provide: NG_VALIDATORS,\n      useExisting: EmailValidatorDirective,\n      multi: true\n  }]\n})\nexport class EmailValidatorDirective implements Validator {\n  validate(control: UntypedFormControl): ValidationErrors | null {\n      return emailValidator(control);\n  }\n}\n\n\n\n","import {UntypedFormControl, NG_VALIDATORS,ValidationErrors, Validator} from '@angular/forms';\nimport {Directive} from '@angular/core';\n\nexport const phoneValidator = (control: UntypedFormControl): ValidationErrors | null => {\n  const phoneRegex: RegExp =/^(([+][(]?[0-9]{1,3}[)]?)|([(]?([0]{2})?[0-9]{1,3}[)]?)|\\s*)\\s*[)]?[-\\s\\.]?[(]?[0-9]{0,4}[)]?([-\\s\\.]?[0-9]{2,3})([-\\s\\.]?[0-9]{2,3})([-\\s\\.]?[0-9]{2,3})$/;\n  \n  return  phoneRegex.test(control.value) ? null : {\n    phone: control.value\n  };\n};\n\n@Directive({\n  selector: '[systelab-phoneValidator]',\n  providers: [{\n      provide: NG_VALIDATORS,\n      useExisting: PhoneValidatorDirective,\n      multi: true\n  }]\n})\nexport class PhoneValidatorDirective implements Validator {\n  validate(control: UntypedFormControl): ValidationErrors | null {\n      return phoneValidator(control);\n  }\n}\n\n\n\n","import {UntypedFormControl, NG_VALIDATORS,ValidationErrors, Validator} from '@angular/forms';\nimport {Directive} from '@angular/core';\n\nexport const urlValidator = (control: UntypedFormControl): ValidationErrors | null => {\n  const urlPattern: string = '^((https|http|ftp|rtsp|mms)?://)'\n    + '?(([0-9a-z_!~*\\'().&=+$%-]+: )?[0-9a-z_!~*\\'().&=+$%-]+@)?' //ftp user@\n    + '(([0-9]{1,3}\\.){3}[0-9]{1,3}\" // IP URL- 199.194.52.184'\n    + '|'\n    + '([0-9a-z_!~*\\'()-]+\\.)*' // - www.\n    + '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\.'\n    + '[a-z]{2,6})' // first level domain- .com or .museum\n    + '(:[0-9]{1,4})?' //- :80\n    + '((/?)|' // a slash isn't required if there is no file name\n    + '(/[0-9a-z_!~*\\'().;?:@&=+$,%#-]+)+/?)$';\n\n    const regExp = new RegExp(urlPattern);\n\n    return regExp.test(control.value) ? null : {\n      url: control.value\n  };\n};\n\n@Directive({\n  selector: '[systelab-urlValidator]',\n  providers: [{\n      provide: NG_VALIDATORS,\n      useExisting: UrlValidatorDirective,\n      multi: true\n  }]\n})\nexport class UrlValidatorDirective implements Validator {\n\n  validate(control: UntypedFormControl): ValidationErrors | null {\n      return urlValidator(control);\n  }\n}\n\n\n\n","export const THEMES = {\n\tdefault: {\n\t\t'ag-header-background-color':             'white',\n\t\t'ag-data-color':                          'black',\n\t\t'ag-header-foreground-color':             'black',\n\t\t'ag-background-color':                    'white',\n\t\t'ag-foreground-color':                    'black',\n\t\t'ag-row-hover':                           'rgb(233, 242, 254)',\n\t\t'ag-header-cell-moving-background-color': 'rgb(185, 189, 190)',\n\t\t'slab_table_row_even_background':         '#F4F4F4',\n\t\t'slab_table_row_odd_background':          'rgb(253, 253, 253)',\n\t\t'slab_background_primary':                'white',\n\t\t'slab_foreground_primary':                'black',\n\t\t'slab_modal_header_background':           'rgb(248, 248, 248)',\n\t\t'slab_modal_bottom_background':           'rgb(248, 248, 248)',\n\t\t'slab_component_border_color':            'rgb(185, 189, 190)',\n\t\t'slab_table_border_color':                'rgb(216,216,216)',\n\t\t'slab_table_row_selection_background':    'rgb(233, 242, 254)',\n\t\t'slab_tab_selection_background':          'white',\n\t\t'slab_table_row_hover_background':        'rgb(233, 242, 254)',\n\t\t'slab_table_row_selection_foreground':    'black',\n\t\t'slab_scrollbar_thumb_background':        'rgb(220, 220, 220)',\n\t\t'slab_scrollbar_width':                   '10px',\n\t\t'slab_scrollbar_height':                  '10px',\n\t\t'primary':                                'rgb(21, 143, 239)',\n\t\t'success':                                'rgb(194, 217, 93)',\n\t\t'warning':                                'rgb(255, 210, 54)',\n\t\t'danger':                                 'rgb(255, 73, 68)',\n\t\t'info':                                   'rgb(178, 140, 232)',\n\t\t'secondary':                              'rgb(170, 170, 170)',\n\t\t'primary_light':                          'rgb(112, 187, 245)',\n\t\t'primary_lighter':                        'rgb(165, 208, 255)',\n\t\t'success_light':                          'rgb(200, 221, 109)',\n\t\t'success_lighter':                        'rgb(206, 225, 125)',\n\t\t'warning_light':                          'rgb(255, 214, 74)',\n\t\t'warning_lighter':                        'rgb(255, 219, 94)',\n\t\t'danger_light':                           'rgb(255, 91, 87)',\n\t\t'danger_lighter':                         'rgb(255, 109, 105)',\n\t\t'text-color':                             'rgb(21, 143, 239)',\n\t\t'text-color-secondary':                   'rgb(255, 255, 255)'\n\t},\n\tdark:    {\n\t\t'ag-header-background-color':             'rgb(11, 42, 94)',\n\t\t'ag-data-color':                          'white',\n\t\t'ag-header-foreground-color':             'white',\n\t\t'ag-background-color':                    'rgb(34, 64, 110)',\n\t\t'ag-foreground-color':                    'white',\n\t\t'ag-row-hover':                           'rgb(59, 138, 142)',\n\t\t'ag-header-cell-moving-background-color': 'rgb(59, 138, 142)',\n\t\t'slab_table_row_even_background':         'rgb(46, 76, 122)',\n\t\t'slab_table_row_odd_background':          'rgb(5, 61, 112)',\n\t\t'slab_background_primary':                'rgb(34, 64, 110)',\n\t\t'slab_foreground_primary':                'white',\n\t\t'slab_modal_header_background':           'rgb(12, 31, 62)',\n\t\t'slab_modal_bottom_background':           'rgb(27, 51, 88)',\n\t\t'slab_component_border_color':            'rgb(93, 136, 187)',\n\t\t'slab_table_border_color':                'rgb(59, 96, 142)',\n\t\t'slab_table_row_selection_background':    'rgb(83, 118, 176)',\n\t\t'slab_tab_selection_background':          'rgb(11, 42, 94)',\n\t\t'slab_table_row_hover_background':        'rgb(59, 138, 142)',\n\t\t'slab_table_row_selection_foreground':    'white',\n\t\t'slab_scrollbar_thumb_background':        'rgb(83, 118, 176)',\n\t\t'slab_scrollbar_width':                   '10px',\n\t\t'slab_scrollbar_height':                  '10px',\n\t\t'primary':                                'rgb(80, 115, 175)',\n\t\t'success':                                'rgb(194, 217, 93)',\n\t\t'warning':                                'rgb(255, 210, 54)',\n\t\t'danger':                                 'rgb(255, 73, 68)',\n\t\t'info':                                   'rgb(178, 140, 232)',\n\t\t'secondary':                              'rgb(170, 170, 170)',\n\t\t'primary_light':                          'rgb(75, 122, 180)',\n\t\t'primary_lighter':                        'rgb(93, 136, 187)',\n\t\t'success_light':                          'rgb(200, 221, 109)',\n\t\t'success_lighter':                        'rgb(206, 225, 125)',\n\t\t'warning_light':                          'rgb(255, 214, 74)',\n\t\t'warning_lighter':                        'rgb(255, 219, 94)',\n\t\t'danger_light':                           'rgb(255, 91, 87)',\n\t\t'danger_lighter':                         'rgb(255, 109, 105)',\n\t\t'text-color':                             'rgb(255, 255, 255)',\n\t\t'text-color-secondary':                   'rgb(255, 255, 255)'\n\t}\n};\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { THEMES } from './theme.config';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class ThemeService {\n\tconstructor(@Inject(DOCUMENT) private document: Document) {}\n\n\tpublic setTheme(name = 'default'): void {\n\t\tconst theme = THEMES[name];\n\t\tObject.keys(theme).forEach((key) => {\n\t\t\tthis.document.documentElement.style.setProperty(`--${key}`, theme[key]);\n\t\t});\n\n\t\tif (name==='default') {\n\t\t\tthis.document.styleSheets[0].deleteRule(1);\n\t\t} else {\n\t\t\tthis.document.styleSheets[0].insertRule('::-webkit-scrollbar { width: var(--slab_scrollbar_width); height: var(--slab_scrollbar_height);}',1);\n\t\t}\n\t}\n\n\tpublic getThemes(): Array<string> {\n\t\treturn ['default','dark'];\n\t}\n}\n","/*\n * Public API Surface of systelab-preferences\n */\n\nexport * from './lib/systelab-components.module';\nexport * from './lib/slider/slider.component';\nexport * from './lib/slider-double-range/slider-double-range.component';\nexport * from './lib/switch/switch.component';\nexport * from './lib/contextmenu/context-menu.component';\nexport * from './lib/contextmenu/context-menu-option';\nexport * from './lib/contextmenu/context-menu-action-data';\nexport * from './lib/twolist/two-list.component';\nexport * from './lib/twolist/two-list-utilities';\nexport * from './lib/colorpicker/colorpicker.component';\nexport * from './lib/colorpicker/color-cell-renderer.component';\nexport * from './lib/applicationframe/application-frame.component';\nexport * from './lib/applicationframe/header/app-header.component';\nexport * from './lib/applicationframe/sidebar/app-sidebar-large.component';\nexport * from './lib/applicationframe/sidebar/app-sidebar-small.component';\nexport * from './lib/applicationframe/sidebar/app-sidebar.component';\n\nexport * from './lib/contextpanel/context-panel.component';\nexport * from './lib/select/all-yes-no-combobox.component';\nexport * from './lib/select/gender-combobox.component';\nexport * from './lib/select/no-yes-combobox-component';\nexport * from './lib/select/period-combobox.component';\nexport * from './lib/select/select.component';\nexport * from './lib/select/select.component';\nexport * from './lib/select/time-unit-combobox.component';\nexport * from './lib/datepicker/datepicker.component';\nexport * from './lib/datepicker/datepicker-time.component';\nexport * from './lib/spinner/touch.spin-values';\nexport * from './lib/searcher/searcher.dialog.component';\nexport * from './lib/searcher/searcher.dialog.parameters';\nexport * from './lib/searcher/abstract-searcher.component';\nexport * from './lib/searcher/abstract-searcher';\nexport * from './lib/searcher/abstract-generic.searcher.component'\n\nexport * from './lib/button/button.component';\nexport * from './lib/searcher/searcher.table.component';\nexport * from './lib/toggle-button/toggle-button.component';\nexport * from './lib/calendar/calendar-dialog.component';\nexport * from './lib/calendar/calendar-footer.component';\nexport * from './lib/calendar/calendar-header.component';\nexport * from './lib/calendar/calendar-table.component';\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tab.component';\nexport * from './lib/modal/header/dialog-header.component';\nexport * from './lib/modal/bottom/dialog-bottom.component';\nexport * from './lib/modal/message-popup/message-popup-view.component';\nexport * from './lib/modal/message-popup/message-with-icon.component';\nexport * from './lib/modal/message-popup/message-popup.service';\n\nexport * from './lib/modal/dialog/dialog-ref';\nexport * from './lib/modal/dialog/modal-context';\nexport * from './lib/modal/dialog/dialog.service';\n\nexport * from './lib/loading/loading.component';\nexport * from './lib/loading/loading.service';\nexport * from './lib/spinner/spinner.component';\n\nexport * from './lib/file-selector/file-selector.component';\nexport * from './lib/timeline/timeline.component';\nexport * from './lib/navbar/navbar.component';\nexport * from './lib/breadcrumb/breadcrumb.component';\nexport * from './lib/week-selector/week-selector.component';\nexport * from './lib/month-selector/month-selector.component';\nexport * from './lib/signature-canvas/signature-canvas.component';\nexport * from './lib/image-viewer/image-viewer.component';\nexport * from './lib/percentage-circle/percentage-circle.component';\nexport * from './lib/combobox/abstract-combobox.component';\nexport * from './lib/combobox/abstract-api-combobox.component';\nexport * from './lib/combobox/autocomplete/autocomplete-api-combobox.component';\nexport * from './lib/combobox/renderer/combobox-favourite-renderer.component';\nexport * from './lib/combobox/renderer/combobox-input-renderer.component';\nexport * from './lib/combobox/renderer/combobox-input-renderer';\nexport * from './lib/combobox/tree/abstract-api-tree-combobox.component';\nexport * from './lib/tooltip/tooltip.directive';\nexport * from './lib/grid/abstract-grid.component';\nexport * from './lib/grid/abstract-api-grid.component';\n\nexport * from './lib/grid/custom-cells/spinner/spinner-cell-editor.component';\nexport * from './lib/grid/custom-cells/spinner/spinner-cell-renderer.component';\nexport * from './lib/grid/custom-cells/checkbox/checkbox-cell-editor.component';\nexport * from './lib/grid/custom-cells/checkbox/checkbox-cell-renderer.component';\nexport * from './lib/grid/custom-cells/decimal-input/decimal-input-cell-editor.component';\nexport * from './lib/grid/custom-cells/input/input-cell-editor.component';\nexport * from './lib/grid/custom-cells/stacked-bar/stacked-bar-cell-renderer.component';\nexport * from './lib/grid/custom-cells/positive-integer/positive-integer-input-cell-editor.component';\nexport * from './lib/grid/custom-cells/searcher-tree-header/searcher-tree-header-renderer.component'\nexport * from './lib/grid/contextmenu/grid-header-context-menu-renderer.component';\nexport * from './lib/grid/contextmenu/grid-header-context-menu.component';\nexport * from './lib/grid/contextmenu/grid-context-menu-component';\nexport * from './lib/grid/contextmenu/grid-context-menu-cell-renderer.component';\nexport * from './lib/grid/contextmenu/grid-context-menu-option';\nexport * from './lib/grid/contextmenu/grid-context-menu-action-data';\nexport * from './lib/grid/options/grid-column-options';\n\nexport * from './lib/wizard-steps/wizard-steps.component';\nexport * from './lib/twolist/two-list-sortable-list.component';\nexport * from './lib/twolist/datafilter.pipe';\nexport * from './lib/numpad/numpad.component';\nexport * from './lib/numpad/numpad.dialog.component';\n\nexport * from './lib/date-range-picker/date-range-picker.component';\nexport * from './lib/paginator/paginator.component';\nexport * from './lib/chips/chips.component';\nexport * from './lib/chip-button/chip-button.component';\nexport * from './lib/chips/chips.component';\nexport * from './lib/directives/autofocus.directive';\nexport * from './lib/directives/keyup-debounce.directive';\nexport * from './lib/directives/draggable.directive';\nexport * from './lib/directives/resizable.directive';\nexport * from './lib/directives/numpad-decimal-numeric.directive';\nexport * from './lib/directives/test-id.directive';\n\n\nexport * from './lib/listbox/renderer/abstract-tree-listbox-renderer.component';\nexport * from './lib/contextmenu/context-menu-item.component';\nexport * from './lib/listbox/gender-listbox.component';\nexport * from './lib/listbox/listbox.component';\nexport * from './lib/listbox/abstract-listbox.component';\nexport * from './lib/listbox/abstract-api-listbox.component';\nexport * from './lib/listbox/abstract-api-tree-listbox.component';\nexport * from './lib/sortable-list/abstract-sortable-list.component';\nexport * from './lib/accordion/accordion.component';\nexport * from './lib/add-remove-list/abstract-add-remove-list.component';\nexport * from './lib/tree/tree-node';\nexport * from './lib/tree/abstract-tree.component';\n\nexport * from './lib/toast/toast.service';\nexport * from './lib/toast/toast.component';\n\nexport * from './lib/spy-menu/spy-menu-item';\nexport * from './lib/spy-menu/spy-menu.component';\nexport * from './lib/spy-menu/scroll-spy.directive';\n\nexport * from './lib/toggle-selector/toggle-selector.component';\n\nexport * from './lib/forms/validators/email-validator.directive';\nexport * from './lib/forms/validators/phone-validator.directive';\nexport * from './lib/forms/validators/url-validator.directive';\n\nexport * from './lib/theme/theme.service';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.ContextMenuItemComponent","i2.ContextMenuSubmenuItemComponent","i3.ContextMenuItemComponent","i2","i3.DataFilterPipe","i3.ButtonComponent","i4.TwoListSortableListComponent","i5","i6.DataFilterPipe","i1.DialogRef","i3.TwoListComponent","i4.ButtonComponent","i5.TabsComponent","i6.TabComponent","i7.DialogHeaderComponent","i8.DialogBottomComponent","i9","i3","i4.ComboBoxInputRendererComponent","Element","i5.ComboBoxInputRendererComponent","i1.DialogService","i2.DataTransformerService","i4","i7.ButtonComponent","i5.TouchspinComponent","i6.DatepickerComponent","i6","i2.TooltipDirective","i3.ApplicationHeaderComponent","i4.ApplicationSidebarLargeComponent","i5.ApplicationSidebarSmallComponent","i3.DialogService","i5.GridContextMenuComponent","i6.GridHeaderContextMenu","i5.ButtonComponent","i6.SearcherTableComponent","i9.KeyupDebounceDirective","i2.ButtonComponent","i4.CalendarHeaderComponent","i5.CalendarTableComponent","i6.CalendarFooterComponent","i1.TouchspinComponent","i4.DialogHeaderComponent","i4.AutofocusDirective","i1.DatepickerComponent","i3.SwitchComponent","i5.DialogBottomComponent","i6.MessageWithIconComponent","i7.AutofocusDirective","i8","i2.PaginatorPageComponent","i2.DialogService","i1.MessagePopupService","i1.ToastData","i2.ToastRef","i3.ToastService","i3.SliderComponent","i5.ToggleButtonComponent","i6.TooltipDirective","i7","i2.TranslationHelper","i2.NumberHelper","i2.AbstractSearcher"],"mappings":"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"}