{"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.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/lib.config.ts","../../../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/toast/toast-ref.ts","../../../projects/systelab-components/src/lib/toast/toast.service.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    selector: 'systelab-slider',\n    templateUrl: 'slider.component.html',\n    standalone: false,\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\n    #range\n    type=\"range\"\n    [min]=\"min\"\n    [max]=\"max\"\n    [value]=\"value\"\n    [step]=\"step\"\n    (change)=\"sliderChangeEvent($event)\"\n    (input)=\"sliderInputEvent($event)\"\n    class=\"slab-slider\"/>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Component({\n    selector: 'systelab-switch',\n    templateUrl: 'switch.component.html',\n    standalone: false\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.myRenderer.setStyle(this.dropdownMenuElement.nativeElement, 'backgroundColor', 'transparent');\n\t\t\tthis.myRenderer.setStyle(this.dropdownMenuElement.nativeElement, 'border', '0');\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    selector: 'systelab-context-menu-item',\n    templateUrl: 'context-menu-item.component.html',\n    standalone: false\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","@if (hasIcons && isIconEnabled) {\n  <div\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}\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@if (hasChildren) {\n  <span class=\"pl-3 slab-menu-caret icon-chevron-right small mt-1\" ></span>\n}\n@if (action.isDivider && isEnabled) {\n  <div class=\"dropdown-divider\"></div>\n}","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    selector: 'systelab-context-menu-submenu-item',\n    templateUrl: 'context-menu-submenu-item.component.html',\n    standalone: false\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    @if (isEnabled) {\n      <div 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        @if (childAction.hasChildren()) {\n          <ul #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        }\n      </div>\n    }\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    selector: 'systelab-context-menu',\n    templateUrl: 'context-menu.component.html',\n    standalone: false\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      @if (isOpened) {\n        <div>\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                @if (isEnabled(elementID, action.actionId)) {\n                  <div 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                    @if (action.hasChildren()) {\n                      <ul #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                    }\n                  </div>\n                }\n              </li>\n            }\n          </ul>\n        </div>\n      }\n    </div>\n  </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'datafilter',\n    standalone: false\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    selector: 'systelab-button',\n    templateUrl: 'button.component.html',\n    styles: [`\n      :host {\n          display: inline-block;\n      }`],\n    standalone: false\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    selector: 'systelab-two-list-sortable-list',\n    templateUrl: '../sortable-list/abstract-sortable-list.component.html',\n    standalone: false\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    @for (element of (elementsList| datafilter:secondListSearch); track element; let i = $index) {\n      <div [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        @if (showIcon) {\n          <i class=\"mr-1 text-primary\" [ngClass]=\"getIcon(element)\"></i>\n          }{{getDescription(element)}}\n        </div>\n      }\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    selector: 'systelab-two-list',\n    templateUrl: 'two-list.component.html',\n    styles: [`\n        :host {\n            width: 100%;\n            height: 100%;\n        }\n\t`],\n    standalone: false\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          @for (item of (available | datafilter:firstListSearch); track item; let i = $index) {\n            <li [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          }\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    selector: 'systelab-grid-context-menu-cell-renderer',\n    templateUrl: 'grid-context-menu-cell-renderer.component.html',\n    standalone: false\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 || params.node.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\t\tthis.container?.popupmenu?.closeDropDown();\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.gridApi.deselectAll();\n\t\t\tif (event.ctrlKey) {\n\t\t\t\tthis.container.gridApi.getDisplayedRowAtIndex(this.rowIndex).setSelected(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","@if (data) {\n  <div class=\"slab-context-menu\" (click)=\"dotsClicked($event)\">\n    <i class=\"icon-context-menu\" [style.font-size]=\"fontSize\" [style.color]=\"fontColor\"></i>\n  </div>\n}\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    selector: 'systelab-grid-header-context-menu-cell-renderer',\n    templateUrl: 'grid-header-context-menu-renderer.component.html',\n    standalone: false\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    selector: 'systelab-tab',\n    template: `\n                  <div class=\"d-flex slab-flex-1 slab-overflow-container\">\n                      <ng-content></ng-content>\n                  </div>\n\t\t\t  `,\n    styles: [`\n        :host {\n            flex: 1;\n            display: flex;\n            flex-direction: column;\n        }\n\t`],\n    standalone: false\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    selector: 'systelab-tabs',\n    template: `\n                <ul class=\"nav nav-tabs\" [class.hideTabBackground]=\"!showTabBackground\" [class.slab-tabs-shrink]=\"shrink\" role=\"tablist\">\n                  @for (tab of tabs; track tab.id) {\n                    <li class=\"nav-item\" [class.hideTabBackground]=\"!showTabBackground\"\n                      (click)=\"doSelectTab(tab)\">\n                      <div class=\"nav-link nav-single-tab d-flex align-items-center justify-content-center\"\n                        [class.active]=\"tab.active\" [class.slab-tabs-shrink]=\"shrink\" data-toggle=\"tab\" role=\"tab\" [attr.aria-controls]=\"tab.id\" id=\"tab-{{tab.id}}\"\n                        [tabindex]=\"paintFocus?0:-1\" (keydown)=\"doKeyDown($event,tab)\">\n                        @if (tab.titleHtml) {\n                          <span [innerHTML]=\"tab.titleHtml\" class=\"d-flex align-items-center\"></span>\n                        }\n                        @if (tab.title) {\n                          <span class=\"d-flex align-items-center\">{{tab.title}}</span>\n                        }\n                        @if (tab.warning) {\n                          <i class=\"text-warning icon-warning ml-3\"></i>\n                        }\n                      </div>\n                    </li>\n                  }\n                </ul>\n                <div class=\"slab-flex-1 d-flex slab-overflow-container\">\n                  <ng-content></ng-content>\n                </div>\n                \n                `,\n    styles: [`\n      :host {\n          width: 100%;\n          display: flex;\n          flex-direction: column;\n      }\n\n\n\t`],\n    standalone: false\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    selector: 'systelab-dialog-header',\n    templateUrl: 'dialog-header.component.html',\n    styles: [`\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    standalone: false\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    @if (withHome) {\n      <div class=\"slab-dialog-header-button slab-dialog-home mr-1\" (click)=\"doHome()\"></div>\n    }\n    @if (withMinimize) {\n      <div class=\"slab-dialog-header-button slab-dialog-minimize mr-1\" (click)=\"doMinimize()\"></div>\n    }\n    @if (withInfo) {\n      <div class=\"slab-dialog-header-button slab-dialog-info mr-1\" (click)=\"doInfo()\"></div>\n    }\n    @if (withClose) {\n      <div class=\"slab-dialog-header-button slab-dialog-close\" (click)=\"doClose()\"></div>\n    }\n  </div>\n</ng-template>\n\n@if (withDrag) {\n  <div 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}\n@if (!withDrag) {\n  <div class=\"slab-dialog-header d-flex justify-content-between\">\n    <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n  </div>\n}\n\n@if ((withProgressBar || withTextProgressBar) && progress) {\n  <div 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    @if (withTextProgressBar) {\n      <span class=\"slab-dialog-header-progress-bar-text h-100 d-flex align-items-center justify-content-center\">{{textProgress}}</span>\n    }\n  </div>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'systelab-dialog-bottom',\n    templateUrl: 'dialog-bottom.component.html',\n    styles: [`\n\t\t\t:host {\n      width: 100%;\n  \t}\n\t`],\n    standalone: false\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    selector: 'grid-column-options-dialog',\n    templateUrl: 'grid-column-options-dialog.component.html',\n    standalone: false\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    selector: 'combobox-favourite-renderer',\n    templateUrl: 'combobox-favourite-renderer.component.html',\n    standalone: false\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\tif(params.data[params.colDef.id]) {\n\t\t\tthis.isFavourite = this.favouriteList.map(String)\n\t\t\t\t.includes(params.data[params.colDef.id].toString());\n\t\t}\n\t}\n}\n","<div class=\"ag-header-cell-label d-flex align-items-center\">\n  @if (isFavourite) {\n    <i class=\"icon-star pr-2 text-primary\"></i>\n  }\n  <span [class.pl-4]=\"!isFavourite && favouriteList.length > 0\">{{label}}</span>\n</div>\n","import { Column, GridApi } 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, gridApi: GridApi) {\n\t\tlet previouslyCalculated = false;\n\t\tif (event?.direction === 'vertical') {\n\t\t\tpreviouslyCalculated = this.itWasVerticallyCalculated(gridState, gridApi, event);\n\t\t} else if (event?.direction === 'horizontal') {\n\t\t\tpreviouslyCalculated = this.itWasHorizontallyCalculated(gridState, gridApi);\n\t\t}\n\t\treturn previouslyCalculated;\n\t}\n\n\tprivate static itWasVerticallyCalculated(gridState: CalculatedGridState, gridApi: GridApi, 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 <= gridApi.getLastDisplayedRowIndex()) {\n\t\t\tpreviouslyCalculated = true;\n\t\t}\n\n\t\t//Scrolling down\n\t\tif (event.top >= gridState.top && gridState.maxRow >= gridApi.getLastDisplayedRowIndex()) {\n\t\t\tpreviouslyCalculated = true;\n\t\t}\n\n\t\tgridState.top = event.top;\n\t\tgridState.minRow = gridApi.getLastDisplayedRowIndex();\n\t\tgridState.maxRow = gridApi.getLastDisplayedRowIndex();\n\n\t\treturn previouslyCalculated;\n\t}\n\n\tprivate static itWasHorizontallyCalculated(gridState: CalculatedGridState, gridApi: GridApi) {\n\t\tconst displayedColumns: Column[] = gridApi.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, gridApi: GridApi, event?: any) {\n\t\tif(!gridApi || gridApi.isDestroyed()) {\n\t\t\treturn\n\t\t}\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, gridApi);\n\t\t\tif (!previouslyCalculated && !!gridApi.getColumns()) {\n\t\t\t\tgridApi.autoSizeColumns(gridApi.getColumns().filter(col => !col.getColDef().suppressSizeToFit), true);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.sizeColumnsToFit(gridApi);\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(gridApi: GridApi) {\n\t\tif(!gridApi.isDestroyed()) {\n\t\t\tgridApi.sizeColumnsToFit();\n\t\t\tconst cols: Column[] = gridApi.getColumns() || [];\n\t\t\tfor(let i: number = cols.length - 1; i >= 0; i--) {\n\t\t\t\tconst col: Column = cols[i];\n\t\t\t\tif(!col.getColDef().suppressSizeToFit && col.getActualWidth() > 1) {\n\t\t\t\t\tgridApi.setColumnWidths([{key:col, newWidth: col.getActualWidth() - 1}])\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHostListener,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tRenderer2,\n\tViewChild\n} from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\nimport {\n\tGetRowIdParams,\n\tGridApi,\n\tGridOptions,\n\tGridReadyEvent,\n\tRowSelectedEvent,\n\tRowSelectionOptions\n} 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';\nimport { ComboTreeNode } from './tree/abstract-api-tree-combobox.component';\n\ndeclare let 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\t@Input() public filter = false;\n\t@Input() public multipleSelection = false;\n\t@Input() public listSelectedValues = false;\n\t@Input() public allElement = false;\n\t@Input() public rowData\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\t@Input() public iconSide = 'right';\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\tthis.rowData = this._values;\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 gridApi: GridApi;\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\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\tcellStyle: () => this.multipleSelection ? ({ paddingLeft: '0px' }) : null\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\t\tthis.gridOptions.rowSelection = {\n\t\t\tcheckboxes: this.multipleSelection,\n\t\t\tmode: this.multipleSelection ? 'multiRow' : 'singleRow',\n\t\t\tenableClickSelection: !this.multipleSelection\n\t\t} as RowSelectionOptions;\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 | ComboTreeNode<T>): string | number | undefined {\n\t\tconst id = this.getIdField();\n\t\tif (item) {\n\t\t\tif (item[id] != null) {\n\t\t\t\treturn item[id];\n\t\t\t}\n\t\t\tif ('data' in item) {\n\t\t\t\treturn id === '' ? '' : item.data ? item.data?.[id] : '';\n\t\t\t} else {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\t\treturn '';\n\t}\n\n\tprotected configGridData() {\n\t\tthis.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// remove previous selection\n\t\tif (!this.multipleSelection) {\n\t\t\tthis.gridApi?.deselectAll();\n\n\t\t\t// Find the row index of the currently selected item\n\t\t\tlet rowIndexToFocus = 0;\n\t\t\tif (this._id) {\n\t\t\t\tthis.gridApi?.forEachNodeAfterFilterAndSort((node, index) => {\n\t\t\t\t\tif (this.getRowNodeId(node.data) === this._id) {\n\t\t\t\t\t\trowIndexToFocus = index;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.gridApi?.getDisplayedRowCount() > 0) {\n\t\t\t\t// scrolls to the selected row\n\t\t\t\tthis.gridApi?.ensureIndexVisible(rowIndexToFocus);\n\t\t\t}\n\n\t\t\t// scrolls to the first column\n\t\t\tconst firstCol = this.gridApi?.getColumns()\n\t\t\t\t?.filter(col => col.isVisible())[0];\n\t\t\tthis.gridApi?.ensureColumnVisible(firstCol);\n\n\t\t\t// sets focus into the selected grid cell\n\t\t\tthis.gridApi?.setFocusedCell(rowIndexToFocus, firstCol);\n\t\t}\n\t}\n\n\tpublic onCellKeyDown(e: any) {\n\t\tif (e.event.key === 'Enter') {\n\t\t\tif (this.multipleSelection && e.node.isSelected()) {\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() && !this.isTree) {\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\tconst selectedRow: Array<T> = this.gridApi?.getSelectedRows();\n\t\tif (selectedRow != null) {\n\t\t\treturn selectedRow[0];\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.rowData = auxListArray\n\t}\n\n\tpublic doSelectAll() {\n\t\tthis.gridApi.selectAll();\n\t}\n\n\tpublic doDeselectAll() {\n\t\tthis.gridApi.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\tevent.source === 'rowClicked' && this.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.gridApi?.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.setSelected(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.gridApi?.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.setSelected(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.gridApi && this.columnDefs) {\n\t\t\tif (this.windowResized) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tAutosizeGridHelper.sizeColumnsToFit(this.gridApi);\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.gridApi);\n\t\t\t}\n\t\t}\n\t}\n\n\t// overrides\n\tpublic onRowSelected(event: RowSelectedEvent) {\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.isSelected()) {\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\tthis.gridApi?.forEachNode(node => {\n\t\t\tif (node && this.getRowNodeId(node.data) !== this.getAllFieldIDValue()) {\n\t\t\t\tnode.setSelected(false);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate unselectNodeAllInGridOptions() {\n\t\tthis.gridApi?.forEachNode(node => {\n\t\t\tif (node && this.getRowNodeId(node.data) === this.getAllFieldIDValue()) {\n\t\t\t\tnode.setSelected(false);\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')\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.gridApi && !this.gridApi.isDestroyed()) {\n\t\t\tthis.gridApi.removeEventListener('bodyScroll', this.onBodyScroll.bind(this));\n\n\t\t\tthis.calculatedGridState = initializeCalculatedGridState();\n\t\t\tthis.onBodyScroll(undefined);\n\n\t\t\tthis.gridApi.addEventListener('bodyScroll', this.onBodyScroll.bind(this));\n\t\t}\n\t}\n\n\tprotected removeGridScrollHandler() {\n\t\tif(this.gridApi) {\n\t\t\tthis.gridApi.removeEventListener('bodyScroll', this.onBodyScroll.bind(this));\n\t\t}\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis.removeWindowScrollHandler();\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(event: GridReadyEvent) {\n\t\tthis.gridApi = event.api;\n\t\tif (this.filterValue && this.filter === true) {\n\t\t\tthis.doFilter();\n\t\t}\n\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.gridApi, 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    selector: 'systelab-cell-colorpicker',\n    templateUrl: 'color-renderer.component.html',\n    standalone: false\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    selector: 'combobox-input-renderer',\n    template: `\n                  <div #target></div>`,\n    standalone: false\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    selector: 'systelab-colorpicker',\n    templateUrl: '../combobox/abstract-combobox.component.html',\n    standalone: false\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    @if (iconSide === 'left') {\n      @if (withIcon && id) {\n        <button class=\"slab-combo-button border-right-0 rounded-0 {{iconClass}}\"\n        [style.color]=\"iconColor\" tabindex=\"-1\"></button>\n      }\n    }\n    @if (!customInputRenderer) {\n      <input #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    }\n    @if (customInputRenderer) {\n      <div #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    }\n    @if (withDeleteOption && id && (id !== defaultIdValue)) {\n      <button type=\"button\" #deleteButton\n        class=\"slab-combo-button border-right-0 rounded-0 {{deleteIconClass}}\" (click)=\"deleteValueSelected($event)\"\n      tabindex=\"-1\"></button>\n    }\n    @if (iconSide === 'right') {\n      @if (withIcon && id) {\n        <button class=\"slab-combo-button border-right-0 rounded-0 {{iconClass}}\"\n        [style.color]=\"iconColor\" tabindex=\"-1\"></button>\n      }\n    }\n    @if (withFavourites && id!==null && (!isTree || (isTree && level))) {\n      <button type=\"button\" #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    }\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      @if (filter) {\n        <div 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      }\n      @if (selectDeselectAll) {\n        <div 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      }\n      <div #hidden class=\"height-hidden\"></div>\n      <div class=\"slab-flex-1 position-relative\">\n        @if (isDropdownOpened) {\n          <ag-grid-angular #grid id=\"agGrid\" #agGrid style=\"width: 100%; height: 100%;\"\n            [rowData]=\"rowData\"\n            [style.font-family]=\"fontFamily\"\n            [style.font-size.px]=\"fontSize\" [style.font-weight]=\"fontWeight\"\n            [style.font-style]=\"fontStyle\" class=\"ag-theme-alpine\"\n            [gridOptions]=\"gridOptions\" (selectionChanged)=\"onSelectionChanged($event)\"\n            (modelUpdated)=\"onModelUpdated()\"\n            (rowSelected)=\"onRowSelected($event)\" (gridReady)=\"doGridReady($event)\"\n            (cellKeyDown)=\"onCellKeyDown($event)\">\n          </ag-grid-angular>\n        }\n      </div>\n    </div>\n  </div>\n</div>\n\n@if (listSelectedValues && multipleSelection) {\n  <div>\n    @if (multipleSelectedItemList.length < 8) {\n      <ul class=\"ml-1 mt-2 mb-0 pl-0\">\n        @for (item of multipleSelectedItemList; track item) {\n          <li class=\"slab-combo-badge badge badge-primary mr-1 p-2\" role=\"badge\"\n            ><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      }\n    </ul>\n  }\n  @if (multipleSelectedItemList.length > 7) {\n    <ul class=\"ml-1 mt-2 pl-0\">\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  }\n</div>\n}\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    selector: 'systelab-all-yes-no-select',\n    templateUrl: '../combobox/abstract-combobox.component.html',\n    standalone: false\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    selector: 'systelab-no-yes-select',\n    templateUrl: '../combobox/abstract-combobox.component.html',\n    standalone: false\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    selector: 'systelab-period-select',\n    templateUrl: '../combobox/abstract-combobox.component.html',\n    standalone: false\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    selector: 'systelab-gender-select',\n    templateUrl: '../combobox/abstract-combobox.component.html',\n    standalone: false\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    selector: 'systelab-app-header',\n    templateUrl: 'app-header.component.html',\n    standalone: false\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    @if (title) {\n      <label class=\"slab-app-header-title text-truncate\">{{title}}</label>\n    }\n    @if (userFullName) {\n      <small id=\"username\" class=\"d-block text-truncate\">{{userFullName}}\n      </small>\n    }\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    @if (menu.length > 0 || userName) {\n      <div class=\"dropdown-toggle\" data-toggle=\"dropdown\" data-boundary=\"window\">\n        @if (!menuBars) {\n          <button 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        }\n        @if (menuBars) {\n          <button 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        }\n        @if (!menuBars) {\n          <label class=\"text-truncate align-middle\">{{userName}}</label>\n        }\n        @if (menu.length > 0) {\n          <div class=\"dropdown-menu dropdown-menu-right slab-dropdown\">\n            <ul>\n              @for (menuEntry of menu; track menuEntry.action) {\n                <li (click)=\"menuEntry.action()\">{{menuEntry.optionName}}\n                  @if (menuEntry.isDivider) {\n                    <div class=\"dropdown-divider\"></div>\n                  }\n                </li>\n              }\n            </ul>\n          </div>\n        }\n      </div>\n    }\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    selector: 'systelab-app-sidebar-large',\n    templateUrl: 'app-sidebar-large.component.html',\n    standalone: false\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        @if (tab.subMenu) {\n          <ul 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        }\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        @if (action.icon) {\n          <i class=\"{{action.icon}}\"></i>\n          } {{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 { AfterViewInit, Component, DoCheck, ElementRef, EventEmitter, Input, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\nimport { addDays } from 'date-fns';\nimport { DatePicker } from 'primeng/datepicker';\nimport { I18nService } from 'systelab-translate';\nimport { DataTransformerService } from './date-transformer.service';\nimport { PrimeNG } from 'primeng/config';\n\n@Component({\n\tselector:    'systelab-datepicker',\n\ttemplateUrl: 'datepicker.component.html',\n\tproviders:   [DataTransformerService],\n\tstandalone:  false\n})\nexport class DatepickerComponent implements OnInit, AfterViewInit, DoCheck {\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\t@Input() public keepInvalid = false;\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: DatePicker;\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\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: PrimeNG) {\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\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\tif (!this.inline) {\n\t\t\tthis.addIconToDatepicker();\n\t\t}\n\n\t\tif (this.currentCalendar && this.autofocus) {\n\t\t\tconst inputElement = this.currentCalendar.el.nativeElement.querySelector('input');\n\t\t\tif (inputElement) {\n\t\t\t\tinputElement.focus();\n\t\t\t}\n\t\t}\n\n\t\tif (this.currentCalendar) {\n\t\t\tconst inputElement = this.currentCalendar.el.nativeElement.querySelector('input');\n\t\t\tif (inputElement) {\n\t\t\t\tconst tabindexValue = this.tabindex ?? 0;\n\t\t\t\tinputElement.setAttribute('tabindex', tabindexValue.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate addIconToDatepicker(): void {\n\t\tif (!this.currentCalendar) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst datepickerElement = this.currentCalendar.el.nativeElement;\n\n\t\t// Función que intenta agregar el icono\n\t\tconst attemptAddIcon = (): boolean => {\n\t\t\tconst inputElement = datepickerElement.querySelector('input');\n\t\t\tif (!inputElement || !inputElement.parentElement) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst parentWrapper = inputElement.parentElement;\n\n\t\t\t// Verificar si ya existe un icono\n\t\t\tif (parentWrapper.querySelector('i.icon-calendar, i.icon-clock')) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Crear y configurar el icono\n\t\t\tconst iconElement = document.createElement('i');\n\t\t\ticonElement.className = this.onlyTime ? 'icon-clock' : 'icon-calendar';\n\n\t\t\t// Configurar el contenedor\n\t\t\tparentWrapper.classList.add('slab-form-icon', 'w-100');\n\t\t\tparentWrapper.style.position = 'relative';\n\t\t\tparentWrapper.appendChild(iconElement);\n\n\t\t\treturn true;\n\t\t};\n\n\t\t// Intentar agregar el icono inmediatamente\n\t\tif (attemptAddIcon()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Si no funciona, usar MutationObserver para esperar cambios en el DOM\n\t\tconst observer = new MutationObserver((mutations) => {\n\t\t\tfor (const mutation of mutations) {\n\t\t\t\tif (mutation.type === 'childList' || mutation.type === 'attributes') {\n\t\t\t\t\tif (attemptAddIcon()) {\n\t\t\t\t\t\tobserver.disconnect();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Observar cambios en el elemento datepicker\n\t\tobserver.observe(datepickerElement, {\n\t\t\tchildList:  true,\n\t\t\tsubtree:    true,\n\t\t\tattributes: true\n\t\t});\n\n\t\t// Desconectar el observer después de 5 segundos como medida de seguridad\n\t\tsetTimeout(() => observer.disconnect(), 5000);\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 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\tconst inputElement = this.currentCalendar?.el.nativeElement.querySelector('input');\n\t\tif (inputElement?.value !== undefined) {\n\t\t\tconst dateStr = inputElement.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\tconst inputElement = this.currentCalendar.el.nativeElement.querySelector('input');\n\t\t\tinputElement.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\tthis.currentCalendar.navForward(null);\n\t\t}\n\t}\n\n\tpublic prevMonth(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tthis.currentCalendar.navBackward(null);\n\t\t}\n\t}\n\n\tpublic nextYear(): void {\n\t\tif (this.currentCalendar) {\n\t\t\t// En PrimeNG 20, navegar un año adelante\n\t\t\tfor (let i = 0; i < 12; i++) {\n\t\t\t\tthis.currentCalendar.navForward(null);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic prevYear(): void {\n\t\tif (this.currentCalendar) {\n\t\t\t// En PrimeNG 20, navegar un año atrás\n\t\t\tfor (let i = 0; i < 12; i++) {\n\t\t\t\tthis.currentCalendar.navBackward(null);\n\t\t\t}\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.clear();\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.hideOverlay();\n\t\t\tthis.currentCalendar.el.nativeElement.blur();\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 \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","<p-datepicker #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              [autofocus]=\"autofocus\"\n  [maxDate]=\"maxDate\"\n  [inline]=\"inline\"\n  [keepInvalid]=\"keepInvalid\"\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  @if (!onlyTime) {\n    <ng-template pTemplate=\"header\">\n      <div id=\"{{datepickerId}}\" class=\"slab-datepicker-header\">\n        <div class=\"left-buttons\">\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        </div>\n        <div class=\"p-datepicker-title d-flex align-items-center justify-content-center\">\n          <span class=\"p-datepicker-year\">{{ currentCalendar.currentYear }}</span>\n          <span class=\"p-datepicker-month\">{{ language.translations.monthNames[currentCalendar.currentMonth] }}</span>\n        </div>\n        <div class=\"right-buttons\">\n          <a id=\"nextMonth\" class=\"icon-angle-right slab-icon-medium\" (click)=\"nextMonth()\"></a>\n          <a id=\"nextYear\" class=\"icon-angle-double-right slab-icon-medium\" (click)=\"nextYear()\"></a>\n        </div>\n      </div>\n    </ng-template>\n  }\n  <ng-template pTemplate=\"footer\">\n    @if (!inline) {\n      <div class=\"p-3 d-flex border-top\">\n        @if (showTodayButton) {\n          <systelab-button id=\"today\" size=\"small\" class=\"mr-auto\"\n          (click)=\"setTodayDate()\">{{ 'COMMON_TODAY' | translate | async }}</systelab-button>\n        }\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    }\n  </ng-template>\n</p-datepicker>\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    selector: 'systelab-spinner',\n    templateUrl: 'spinner.component.html',\n    standalone: false\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\" class=\"btn pt-0 pb-0 pl-1 pr-1 spinner-button-minus\" [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\" class=\"btn pt-0 pb-0 pl-1 pr-1 spinner-button-plus\" [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 { PrimeNG } from 'primeng/config';\n\n@Component({\n    selector: 'systelab-date-time',\n    templateUrl: 'datepicker-time.component.html',\n    providers: [DataTransformerService],\n    standalone: false\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: PrimeNG) {\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  @if (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      [keepInvalid]=\"keepInvalid\"\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  }\n\n  @if (!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  }\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    selector: 'systelab-select',\n    templateUrl: '../combobox/abstract-combobox.component.html',\n    standalone: false\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 {\n    ChangeDetectionStrategy, Component, ComponentRef, Directive, ElementRef,\n    HostListener, Input, OnChanges, OnDestroy, SimpleChanges, ViewEncapsulation\n} from '@angular/core';\nimport { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\ntype TooltipPlacement = 'top' | 'right' | 'bottom' | 'left';\n\nconst TOOLTIP_POSITIONS: Record<TooltipPlacement, ConnectedPosition[]> = {\n    top:    [{ originX: 'center', originY: 'top',    overlayX: 'center', overlayY: 'bottom', offsetY: -6 }],\n    bottom: [{ originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top',    offsetY: 6 }],\n    left:   [{ originX: 'start',  originY: 'center', overlayX: 'end',    overlayY: 'center', offsetX: -6 }],\n    right:  [{ originX: 'end',    originY: 'center', overlayX: 'start',  overlayY: 'center', offsetX: 6 }],\n};\n\n@Component({\n    standalone: false,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        role: 'tooltip',\n        '[class]': '\"tooltip bs-tooltip-\" + placement + \" show\"',\n    },\n    template: `<div class=\"arrow\"></div><div class=\"tooltip-inner\" [innerHTML]=\"content\"></div>`,\n})\nexport class TooltipContentComponent {\n    @Input() content = '';\n    @Input() placement: TooltipPlacement = 'top';\n}\n\n@Directive({\n    selector: '[systelabTooltip],[systelabTooltipHtml]',\n    standalone: false,\n})\nexport class TooltipDirective implements OnDestroy, OnChanges {\n\n    public static readonly DEFAULT_PLACEMENT: TooltipPlacement = 'top';\n    public static readonly DEFAULT_DELAY = 1000;\n\n    @Input() public systelabTooltip: string | undefined;\n    @Input() public systelabTooltipHtml: string | undefined;\n    @Input() public systelabTooltipPlacement: TooltipPlacement | undefined;\n    @Input() public systelabTooltipDelay: number = TooltipDirective.DEFAULT_DELAY;\n    @Input() public systelabTooltipHideDelay: number = TooltipDirective.DEFAULT_DELAY;\n    @Input() public systelabTooltipOnFocus = true;\n\n    private overlayRef: OverlayRef | null = null;\n    private tooltipRef: ComponentRef<TooltipContentComponent> | null = null;\n    private showTimeout: ReturnType<typeof setTimeout> | null = null;\n    private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n    private scrollListener: (() => void) | null = null;\n\n    constructor(private readonly el: ElementRef, private readonly overlay: Overlay) {}\n\n    @HostListener('mouseenter') onMouseEnter(): void { \n\t\tthis.scheduleShow(); \n\t}\n    @HostListener('mouseleave') onMouseLeave(): void { \n\t\tthis.scheduleHide(); \n\t}\n    @HostListener('focus')      onFocus(): void      { \n\t\tif (this.systelabTooltipOnFocus) { \n\t\t\tthis.scheduleShow(); \n\t\t} \n\t}\n    @HostListener('blur')       onBlur(): void       { \n\t\tif (this.systelabTooltipOnFocus) { \n\t\t\tthis.scheduleHide();\n\t\t} \n\t}\n\n    ngOnChanges(_changes: SimpleChanges): void {\n        this.updateContent();\n    }\n\n    ngOnDestroy(): void {\n        this.clearTimeouts();\n        this.disposeOverlay();\n    }\n\n    private scheduleShow(): void {\n        this.clearHideTimeout();\n        const delay = this.systelabTooltipDelay ?? TooltipDirective.DEFAULT_DELAY;\n        this.showTimeout = setTimeout(() => this.show(), delay);\n    }\n\n    private scheduleHide(): void {\n        this.clearShowTimeout();\n        const delay = this.systelabTooltipHideDelay ?? TooltipDirective.DEFAULT_DELAY;\n        this.hideTimeout = setTimeout(() => this.disposeOverlay(), delay);\n    }\n\n    private show(): void {\n        const content = this.systelabTooltipHtml ?? this.systelabTooltip;\n        if (!content || this.overlayRef?.hasAttached()) return;\n\n        const placement = this.systelabTooltipPlacement ?? TooltipDirective.DEFAULT_PLACEMENT;\n\n        this.overlayRef = this.overlay.create({\n            panelClass: 'slab-tooltip-pane',\n            positionStrategy: this.overlay\n                .position()\n                .flexibleConnectedTo(this.el)\n                .withPositions(TOOLTIP_POSITIONS[placement])\n                .withViewportMargin(8),\n        });\n\n        this.scrollListener = () => this.disposeOverlay();\n        window.addEventListener('scroll', this.scrollListener, { passive: true, capture: true });\n\n        this.tooltipRef = this.overlayRef.attach(new ComponentPortal(TooltipContentComponent));\n        this.updateContent();\n    }\n\n    private updateContent(): void {\n        if (!this.tooltipRef) return;\n        const content = this.systelabTooltipHtml ?? this.systelabTooltip ?? '';\n        const placement = this.systelabTooltipPlacement ?? TooltipDirective.DEFAULT_PLACEMENT;\n        this.tooltipRef.setInput('content', content);\n        this.tooltipRef.setInput('placement', placement);\n    }\n\n    private disposeOverlay(): void {\n        if (this.scrollListener) {\n            window.removeEventListener('scroll', this.scrollListener, { capture: true });\n            this.scrollListener = null;\n        }\n        this.overlayRef?.dispose();\n        this.overlayRef = null;\n        this.tooltipRef = null;\n    }\n\n    private clearShowTimeout(): void {\n        if (this.showTimeout !== null) { \n\t\t\tclearTimeout(this.showTimeout); this.showTimeout = null; \n\t\t}\n    }\n\n    private clearHideTimeout(): void {\n        if (this.hideTimeout !== null) { \n\t\t\tclearTimeout(this.hideTimeout); this.hideTimeout = null; \n\t\t}\n    }\n\n    private clearTimeouts(): void {\n        this.clearShowTimeout();\n        this.clearHideTimeout();\n    }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ApplicationSidebarAction, ApplicationSidebarTab } from './app-sidebar.component';\n\n\n@Component({\n    selector: 'systelab-app-sidebar-small',\n    templateUrl: 'app-sidebar-small.component.html',\n    standalone: false\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        @if (tab.isSelected) {\n          <div class=\"arrow-left w-100\"></div>\n        }\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    selector: 'systelab-app-frame',\n    templateUrl: 'application-frame.component.html',\n    standalone: false\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    @if (showSideBar) {\n      <div [ngClass]=\"{'slab-side-bar-container-large': largeSideBar,'slab-side-bar-container-small': !largeSideBar }\">\n        @if (largeSideBar) {\n          <systelab-app-sidebar-large #sidebarLarge [tabs]=\"tabs\" [actions]=\"actions\" (selected)=\"doSelect($event)\"></systelab-app-sidebar-large>\n        }\n        @if (!largeSideBar) {\n          <systelab-app-sidebar-small #sidebarSmall [tabs]=\"tabs\" [actions]=\"actions\" (selected)=\"doSelect($event)\"></systelab-app-sidebar-small>\n        }\n      </div>\n    }\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 { BodyScrollEvent, ColDef, Column, GridApi, GridOptions, IsFullWidthRowParams, RowModelType, RowSelectionOptions } 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 = 'ag-Grid-SelectionColumn';\n\tpublic static readonly clientSideRowModelType: RowModelType = 'clientSide';\n\tpublic gridOptions: GridOptions;\n\tpublic gridApi: GridApi;\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()\n\tset rowData(value: Array<T>) {\n\t\tif(value) {\n\t\t\tthis._rowData = [...value];\n\t\t}\n\t}\n\n\tget rowData(): Array<T> {\n\t\treturn this._rowData;\n\t}\n\t@Input() public noRowsText;\n\t@Input() public loadingText;\n\t@Input() public removeSelectionOnOpenContextMenu = false;\n\t@Input() public autoSizeColumnsToContent = false;\n\t@Input() public autoResizableScroll = 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\tpublic allowRowManaged: boolean = true;\n\tprotected firstSizeToFitExecuted = false;\n\tprivate calculatedGridState: CalculatedGridState;\n\tprivate scrollTimeout;\n\tprivate _rowData: Array<T>;\n\tprotected savedRowIndex: number = 0;\n\tprotected savedRowCount: number = 0;\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\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\tif(this.gridOptions.rowModelType === AbstractGrid.clientSideRowModelType && this._rowData == undefined) {\n\t\t\tthis._rowData = new Array<T>();\n\t\t}\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\t\toptions.columnDefs = this.getColumnDefsWithOptions();\n\t\toptions.selectionColumnDef = this.getCheckColumnDef(this.getCheckColumnWidth());\n\t\toptions.rowSelection = this.getRowSelectionType();\n\t\toptions.rowModelType = 'clientSide';\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.stopEditingWhenCellsLoseFocus = true;\n\t\toptions.singleClickEdit = true;\n\t\toptions.defaultColDef = {\n\t\t\tresizable: this.isColResizeEnabled(),\n\t\t\tsortable: false\n\t\t};\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\toptions.suppressScrollOnNewData = this.autoResizableScroll;\n\n\t\tif (this.hideHeader()) {\n\t\t\toptions.headerHeight = 0;\n\t\t}\n\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\tif (this.gridApi?.getEditingCells().length > 1) {\n\t\t\tthis.gridApi.stopEditing();\n\t\t\tevent.api.startEditingCell({rowIndex: event.rowIndex, colKey: event.column});\n\t\t}\n\t}\n\n\tpublic onModelUpdated(event: any) {\n\t\tif(this.gridApi) {\n\t\t\tthis.doAutoSizeManagement();\n\t\t\tif (this.autoResizableScroll) {\n\t\t\t\tthis.restoreScrollPosition();\n\t\t\t}\n\t\t}\n\t\treturn event;\n\t}\n\n\tprivate calculateVisibleRows(scrollableHeight: any, rowHeight: number): number {\n\t\treturn Math.ceil((scrollableHeight.bottom - scrollableHeight.top) / rowHeight);\n\t}\n\n\tprivate isViewingBottom(savedRowIndex: number, visibleRows: number, savedRowCount: number): boolean {\n\t\treturn savedRowIndex + visibleRows >= savedRowCount;\n\t}\n\n\tprivate restoreForAddedRows(currentRowCount: number, visibleRows: number): void {\n\t\tthis.gridApi.ensureIndexVisible(currentRowCount - 1, 'bottom');\n\t\tthis.savedRowIndex = Math.max(0, currentRowCount - visibleRows);\n\t}\n\n\tprivate restoreForDeletedRows(currentRowCount: number, visibleRows: number): void {\n\t\tconst wasViewingBottom = this.isViewingBottom(this.savedRowIndex, visibleRows, this.savedRowCount);\n\n\t\tif (wasViewingBottom) {\n\t\t\tthis.gridApi.ensureIndexVisible(currentRowCount - 1, 'bottom');\n\t\t\tthis.savedRowIndex = Math.max(0, currentRowCount - visibleRows);\n\t\t} else {\n\t\t\tconst newIndex = Math.min(this.savedRowIndex, currentRowCount - 1);\n\t\t\tif (newIndex >= 0 && newIndex < currentRowCount) {\n\t\t\t\tthis.gridApi.ensureIndexVisible(newIndex, 'top');\n\t\t\t}\n\t\t\tthis.savedRowIndex = newIndex;\n\t\t}\n\t}\n\n\tpublic restoreScrollPosition(): void {\n\t\tif (!this.gridApi || !this.autoResizableScroll) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentRowCount = this.gridApi.getDisplayedRowCount();\n\n\t\tif (this.savedRowCount === 0) {\n\t\t\tthis.savedRowCount = currentRowCount;\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollableHeight = this.gridApi.getVerticalPixelRange();\n\t\tconst rowHeight = this.gridApi.getSizesForCurrentTheme().rowHeight;\n\t\tconst visibleRows = this.calculateVisibleRows(scrollableHeight, rowHeight);\n\n\t\tif (currentRowCount === this.savedRowCount) {\n\t\t\tif (rowHeight > 0 && scrollableHeight) {\n\t\t\t\tconst currentScrollIndex = Math.floor(scrollableHeight.top / rowHeight);\n\t\t\t\tconst indexToRestore = this.savedRowIndex >= 0 ? this.savedRowIndex : currentScrollIndex;\n\t\t\t\tconst wasViewingBottom = this.isViewingBottom(this.savedRowIndex, visibleRows, this.savedRowCount);\n\n\t\t\t\tif (wasViewingBottom) {\n\t\t\t\t\tthis.gridApi.ensureIndexVisible(currentRowCount - 1, 'bottom');\n\t\t\t\t} else if (indexToRestore >= 0 && indexToRestore < currentRowCount) {\n\t\t\t\t\tthis.gridApi.ensureIndexVisible(indexToRestore, 'top');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.savedRowIndex === 0) {\n\t\t\tif (rowHeight > 0 && scrollableHeight) {\n\t\t\t\tthis.savedRowIndex = Math.floor(scrollableHeight.top / rowHeight);\n\t\t\t}\n\t\t}\n\n\t\tconst rowsAdded = currentRowCount > this.savedRowCount;\n\t\tconst rowsDeleted = currentRowCount < this.savedRowCount;\n\n\t\tif (rowsAdded) {\n\t\t\tthis.restoreForAddedRows(currentRowCount, visibleRows);\n\t\t} else if (rowsDeleted) {\n\t\t\tthis.restoreForDeletedRows(currentRowCount, visibleRows);\n\t\t}\n\n\t\tthis.savedRowCount = currentRowCount;\n\t}\n\n\tpublic doGridReady(event: any): void {\n\t\tthis.gridApi = event.api;\n\t\tthis.loadColumnsStateFromPreferences();\n\n\t\tif(this.autoSizeColumnsToContent || this.autoResizableScroll) {\n\t\t\tthis.gridApi.addEventListener('bodyScroll', this.onBodyScroll.bind(this));\n\t\t} else {\n\t\t\tthis.doAutoSizeManagement();\n\t\t}\n\t\tthis.gridApi.addEventListener('columnMoved', this.saveColumnsStateInPreferences.bind(this));\n\n\t\tif (this.autoResizableScroll) {\n\t\t\tthis.updateSavedScrollState(event.top);\n\t\t}\n\n\t}\n\n\tprotected saveColumnsStateInPreferences(): void {\n\t\tif (this.firstSizeToFitExecuted) {\n\t\t\tthis.preferencesService.put(this.getGridOptionsPreferencesPrefix(), this.gridApi.getColumnState());\n\t\t}\n\t}\n\n\tprotected loadColumnsStateFromPreferences(): void {\n\t\tthis.loadColumnsState(this.getGridOptionsPreferencesPrefix(), this.gridApi);\n\t}\n\n\tpublic onSortChanged(): void {\n\t\tthis.saveColumnsStateInPreferences();\n\t}\n\n\tprivate loadColumnsState(prefix: string, gridApi: GridApi): 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 => gridApi.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\tgridApi.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\t'sortable': column.isSortable()\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(gridApi, 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\tgridApi.applyColumnState({state: filteredGridOptionsPreferences, applyOrder: true});\n\t\t}\n\t}\n\n\tprivate setColumnWidthToFitContent(gridApi: GridApi, 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\tgridApi.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): ColDef {\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} as ColDef;\n\t}\n\n\tprivate getCheckColumnDef(width: number): ColDef {\n\t\treturn {\n\t\t\ttype: 'selection',\n\t\t\tcellClass: 'checkbox-cell',\n\t\t\theaderName:        '',\n\t\t\tpinned:            'left',\n\t\t\tmaxWidth: width,\n\t\t\tsuppressSizeToFit: true,\n\t\t\tresizable:         false,\n\t\t\tsuppressMovable:   true\n\t\t} as ColDef;\n\t}\n\n\tprotected abstract getColumnDefs(): Array<any>;\n\n\tprotected getColumnDefsWithOptions(): Array<ColDef> {\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\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.gridApi.getDisplayedRowAtIndex(rowId).data;\n\t\tconst rowsSelected: Array<T> = this.gridApi.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.gridApi.getDisplayedRowAtIndex(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(): RowSelectionOptions {\n\t\treturn {\n\t\t\tmode: this.multipleSelection ? 'multiRow' : 'singleRow',\n\t\t\tcheckboxes: this.showChecks,\n\t\t\theaderCheckbox: this.headerCheckboxSelection,\n\t\t\tenableClickSelection: !(this.showChecks && this.multipleSelection),\n\t\t} as RowSelectionOptions;\n\t}\n\n\tpublic getSelectedRows(): Array<T> {\n\t\treturn this.gridApi.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.gridApi.ensureIndexVisible(index);\n\t\ttimer(200)\n\t\t\t.subscribe(() => this.gridApi.getDisplayedRowAtIndex(index).setSelected(true));\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 === AbstractGrid.selectionColId) {\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.gridApi) {\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.gridApi, 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.gridApi, 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(gridApi: GridApi, columnDefs: Array<any>): GridColumnsOptions {\n\t\tconst options = new GridColumnsOptions();\n\n\t\toptions.available = gridApi.getColumns()\n\t\t\t.filter(column => !gridApi.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 = gridApi.getColumns()\n\t\t\t.map(column => new TwoListItem(column.getColDef().headerName, column.getColDef().colId, false, false));\n\n\t\toptions.visible = gridApi.getAllDisplayedColumns()\n\t\t\t.filter(column => column.getColId() !== 'contextMenu' && column.getColId() !== AbstractGrid.selectionColId)\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(gridApi: GridApi, columnOptions: GridColumnsOptions): void {\n\t\tlet numberOfFixedInitialColumns = (gridApi.getColumn('contextMenu') !== null) ? 1 : 0;\n\t\tnumberOfFixedInitialColumns += this.showChecks ? 1 : 0;\n\t\tconst columns: Map<string, Column> = new Map<string, Column>(gridApi.getColumns().map(col => [col.getColId(), col]));\n\t\tconst colsToApplyGridOptions: Column[] = [];\n\t\tcolumnOptions.visible.forEach((tlp, index) => {\n\t\t\tconst col: Column = columns.get(tlp.colId)\n\t\t\tif(col) {\n\t\t\t\tcolsToApplyGridOptions.push(col);\n\t\t\t\tgridApi.moveColumns([col], index + numberOfFixedInitialColumns);\n\t\t\t}\n\t\t});\n\t\tgridApi.setColumnsVisible(colsToApplyGridOptions, true);\n\t\tgridApi.setColumnsVisible(gridApi.getColumns()\n\t\t\t.filter(col => col.getColId() !== 'contextMenu' && col.getColId() !== AbstractGrid.selectionColId)\n\t\t\t.filter(col => !columnOptions.visible.some(tlp => tlp.colId === col.getColDef().colId)), false);\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: BodyScrollEvent): void {\n\t\tif (this.autoResizableScroll && event.direction === 'vertical') {\n\t\t\tthis.updateSavedScrollState(event.top);\n\t\t}\n\t\tif(this.autoSizeColumnsToContent) {\n\t\t\tclearTimeout(this.scrollTimeout);\n\t\t\tthis.scrollTimeout = setTimeout(() => {\n\t\t\t\tthis.doAutoSizeManagement(event);\n\t\t\t}, 150);\n\t\t}\n\t}\n\n\tprivate doAutoSizeManagement(event?: any) {\n\t\tthis.firstSizeToFitExecuted = true; \n\t\tAutosizeGridHelper.doAutoSizeManagement(this.calculatedGridState, this.gridApi, event);\n\t}\n\n\tprivate updateSavedScrollState(scrollTop: number): void {\n\t\tconst rowHeight = this.gridApi.getSizesForCurrentTheme().rowHeight;\n\t\tif (rowHeight > 0) {\n\t\t\tthis.savedRowIndex = Math.floor(scrollTop / rowHeight);\n\t\t}\n\t\tthis.savedRowCount = this.gridApi.getDisplayedRowCount();\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 {\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\tthis.allowRowManaged = false;\n\t}\n\n\tprotected override getInitialGridOptions(): GridOptions {\n\t\tconst options: GridOptions = {\n\t\t\t...super.getInitialGridOptions(),\n\t\t\trowModelType: 'infinite',\n\t\t\tpaginationPageSize: 50,\n\t\t\tcacheBlockSize: 50,\n\t\t\tcacheOverflowSize: 2,\n\t\t\tmaxConcurrentDatasourceRequests: 4,\n\t\t\tmaxBlocksInCache: 15,\n\t\t\tdatasource: this,\n\t\t\tloading: false\n\t\t};\n\t\treturn options;\n\t}\n\n\tpublic abstract getTotalItems(): number;\n\n\tpublic override doGridReady(event: any) {\n\t\tsuper.doGridReady(event);\n\t}\n\n\tprotected abstract getData(page: number, itemsPerPage: number): Observable<Array<T>>;\n\n\tpublic getRows(params: IGetRowsParams): void {\n\t\tthis.gridApi.updateGridOptions({loading: true});\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\tparams.successCallback(page, totalItems);\n\t\tif (page.length === 0) {\n\t\t\tthis.gridApi.updateGridOptions({loading: false});\n\t\t\tthis.gridApi.showNoRowsOverlay();\n\t\t}\n\t\tthis.gridApi.updateGridOptions({loading: false});\n\t}\n\n\tpublic refresh(): void {\n\t\t// the ? is to avoid errors in tests\n\t\tthis.gridApi?.updateGridOptions({datasource: 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    selector: 'systelab-grid-context-menu',\n    templateUrl: '../../contextmenu/context-menu.component.html',\n    standalone: false\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    selector: 'systelab-grid-header-context-menu',\n    templateUrl: '../../contextmenu/context-menu.component.html',\n    standalone: false\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, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PreferencesService } from 'systelab-preferences';\nimport { I18nService } from 'systelab-translate';\nimport { CellKeyDownEvent, IsFullWidthRowParams, RowSelectedEvent } 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    selector: 'systelab-internal-searcher-table',\n    templateUrl: '../grid/abstract-grid.component.html',\n    standalone: false\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\t@Output() public gridReady: EventEmitter<boolean> = new EventEmitter<boolean>();\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\tpublic override doGridReady(event: any) {\n\t\tsuper.doGridReady(event);\n\t\tthis.gridReady.emit(true);\n\t}\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\tif(this.gridApi) {\n\t\t\tthis.refresh();\n\t\t}\n\t}\n\n\tpublic focusFirstRow(): void {\n\t\tthis.gridApi.setFocusedCell(0, this.gridApi.getColumns()[0].getColId());\n\t}\n\n\tpublic getSelectedElements(): Array<T> {\n\t\treturn this.gridApi.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.gridApi?.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.setSelected(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.gridApi.forEachNode(node => {\n\t\t\t\tif (node.data && node.data[this.searcher.getIdField()] === this.searcher.id) {\n\t\t\t\t\tnode.setSelected(true);\n\t\t\t\t\tthis.gridApi.ensureNodeVisible(node);\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: RowSelectedEvent): 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.isSelected() && !element) {\n\t\t\t\t\t\tthis.addElementToMultipleSelectedItemList(event.node.data);\n\t\t\t\t\t} else if (!event.node.isSelected() && 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-alpine\"\n                 theme=\"legacy\"\n                 [gridOptions]=\"gridOptions\"\n                 (gridReady)=\"doGridReady($event)\"\n                 (gridSizeChanged)=\"doGridSizeChanged($event)\"\n                 (cellClicked)=\"doClick($event)\"\n                 [rowDragManaged]=\"allowRowManaged\"\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                 (sortChanged)=\"onSortChanged()\"\n                 (modelUpdated)=\"onModelUpdated($event)\"\n                 [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    selector: '[keyup-debounce]',\n    standalone: false\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    selector: 'systelab-searcher-dialog',\n\ttemplateUrl: 'searcher.dialog.component.html',\n    standalone: false\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                                            (gridReady)=\"refreshSearch()\"\n          (clickRow)=\"selectOnClick($event)\"></systelab-internal-searcher-table>\n        </div>\n      </div>\n      @if (multipleSelection) {\n        <systelab-dialog-bottom 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      }\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { I18nService } from 'systelab-translate';\n\n@Component({\n    selector: 'systelab-calendar-header',\n    templateUrl: 'calendar-header.component.html',\n    styleUrls: ['calendar-header.component.scss'],\n    standalone: false\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    selector: 'systelab-calendar-table',\n    templateUrl: 'calendar-table.component.html',\n    styleUrls: ['calendar-table.component.scss'],\n    standalone: false\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              @if (daySlot.date) {\n                <div class=\"slab-custom-calendar-cell\">\n                  <ng-container *ngTemplateOutlet=\"templateRef; context: { daySlot: daySlot }\"></ng-container>\n                </div>\n              }\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    selector: 'systelab-calendar-footer',\n    templateUrl: 'calendar-footer.component.html',\n    standalone: false\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    templateUrl: 'calendar-dialog.component.html',\n    styleUrls: ['calendar-dialog.component.scss'],\n    standalone: false\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      @if (!daySlot.isHoliday) {\n        <div class=\"slab-calendar-buttons\">\n          <button type=\"button\" class=\"slab-calendar-button1\" (click)=\"doSomething(daySlot)\"></button>\n        </div>\n      }\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    selector: 'systelab-loading',\n    templateUrl: 'loading.component.html',\n    styleUrls: ['loading.component.scss', 'loading-alternative.component.scss'],\n    standalone: false\n})\nexport class LoadingComponent {\n\n\t@Input() public useClassic = false;\n}\n","\n@if (useClassic) {\n  <div  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}\n@if (!useClassic) {\n  <div class=\"application-loader-spinner\">\n    <div class=\"double-bounce1\"></div>\n    <div class=\"double-bounce2\"></div>\n  </div>\n}\n\n","import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n    selector: 'systelab-toggle-button',\n    templateUrl: 'toggle-button.component.html',\n    styles: [`\n      :host {\n          background-color: transparent;\n      }`],\n    standalone: false\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    selector: 'systelab-file-selector',\n    templateUrl: 'file-selector.component.html',\n    standalone: false\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    selector: 'systelab-timeline',\n    templateUrl: 'timeline.component.html',\n    standalone: false\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          @if (event.extraText) {\n            <p>{{event.extraText}}</p>\n          }\n          @if (event.richExtraText) {\n            <p [innerHTML]=\"event.richExtraText\"></p>\n          }\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    selector: 'systelab-navbar',\n    templateUrl: 'navbar.component.html',\n    standalone: false\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            @if (nav.image) {\n              <i [class]=\"nav.image\" [class.slab-icon-float-image]=\"nav.floatImage\"\n              [class.slab-icon-vertical-image]=\"!nav.floatImage\"></i>\n            }\n            @if (nav.text) {\n              <span [ngClass]=\"{'ml-2': nav.image}\">{{nav.text}}</span>\n            }\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    selector: 'systelab-message-with-icon',\n    templateUrl: 'message-with-icon.component.html',\n    styleUrls: ['message-with-icon.component.scss'],\n    standalone: false\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 \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    selector: 'systelab-breadcrumb',\n    templateUrl: './breadcrumb.component.html',\n    standalone: false\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      @if (bread.isActive) {\n        <a [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      }\n      @if (!bread.isActive) {\n        <label [style.max-width]=\"itemMaxWidth\">{{bread.text}}</label>\n      }\n      @if (bread.subItems) {\n        <button 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      }\n      @if (bread.subItems) {\n        <ul 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      }\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    selector: 'systelab-week-selector',\n    templateUrl: './week-selector.component.html',\n    standalone: false\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    @if (isOpened) {\n      <div 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    }\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    selector: 'systelab-month-selector',\n    templateUrl: './month-selector.component.html',\n    standalone: false\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    @if (isOpened) {\n      <div 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    }\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    selector: 'systelab-signature-canvas',\n    templateUrl: './signature-canvas.component.html',\n    standalone: false\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  @if (!verificationActive) {\n    <div class=\"mb-2\">\n      {{ 'SIGN_TEXT_EXPLANATION' | translate | async }}\n    </div>\n  }\n  <canvas class=\"border rounded\" #signature></canvas>\n  @if (!verificationActive) {\n    <div class=\"d-flex justify-content-end mt-2\" [style.width.px]=\"width\">\n      <systelab-button class=\"mr-1\" (click)=\"cleanCanvas()\">{{ 'SIGN_CLEAN' | translate | async }}</systelab-button>\n      @if (isDownloadable) {\n        <a href=\"#\" 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      }\n      <systelab-button type=\"primary\" [disabled]=\"isCanvasEmpty\" (click)=\"finishDrawing()\">{{ 'SIGN_FINISH' | translate | async }}</systelab-button>\n    </div>\n  }\n  @if (verificationActive) {\n    <div class=\"align-content-center p-3\" [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            @if (isIncorrectCode) {\n              <div class=\"alert alert-danger alert-sm text-center mt-3\">\n                <a>{{ 'SIGN_ERROR_ENTERED_CODE' | translate | async }}</a>\n              </div>\n            }\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    }\n  </div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n    selector: 'systelab-percentage-circle',\n    templateUrl: 'percentage-circle.component.html',\n    standalone: false\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    selector: 'systelab-time-unit-select',\n    templateUrl: '../combobox/abstract-combobox.component.html',\n    standalone: false\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\tstandalone: false\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    selector: 'systelab-wizard-steps',\n    templateUrl: './wizard-steps.component.html',\n    standalone: false\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        @if (step.optionalText) {\n          <p class=\"slab-step-optional-text\">{{step.optionalText}}</p>\n        }\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    selector: 'systelab-spinner-cell-editor',\n    templateUrl: 'spinner-cell-editor.component.html',\n    standalone: false\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    selector: 'systelab-spinner-cell-renderer',\n    template: `<span class=\"slab-flex-1 text-center\">{{params.value?.value}}</span>`,\n    standalone: false\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    selector: 'systelab-input-cell-editor',\n    templateUrl: 'input-cell-editor.component.html',\n    standalone: false\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    selector: 'systelab-checkbox-cell',\n    templateUrl: 'checkbox-cell-editor.component.html',\n    standalone: false\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    selector: 'systelab-decimal-input-cell-editor',\n    templateUrl: 'decimal-input-cell-editor.component.html',\n    standalone: false\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    selector: 'abstract-listbox-renderer',\n    templateUrl: 'abstract-tree-listbox-renderer.component.html',\n    standalone: false\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  @if (isMultipleSelection) {\n    <div>\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    }\n    @if (!isMultipleSelection) {\n      <div 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    }\n  </div>\n","import { Directive, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { StylesUtilService } from '../utilities/styles.util.service';\nimport { ColDef, Column, GetRowIdParams, GridApi, GridOptions, RowSelectedEvent, RowSelectionOptions } from 'ag-grid-community';\nimport { AutosizeGridHelper, CalculatedGridState, initializeCalculatedGridState } from '../helper/autosize-grid-helper';\n\n@Directive()\nexport abstract class AbstractListBox<T> implements OnInit {\n\t@Input() public rowData\n\tpublic gridOptions: GridOptions;\n\tpublic gridApi: GridApi;\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\tthis.rowData = this._values;\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\t\tthis.gridOptions = this.getInitialGridOptions();\n\t}\n\n\tprotected getInitialGridOptions(): GridOptions {\n\t\tconst rowHeight = StylesUtilService.getStyleValue(this.hiddenElement, 'line-height');\n\t\tconst options: GridOptions = {};\n\t\toptions.columnDefs = this.getColumnDefsWithOptions();\n\t\tif (this.multipleSelection && !this.hideChecks) {\n\t\t\toptions.selectionColumnDef = this.getSelectionColumnDefs();\n\t\t\toptions.rowSelection = {enableClickSelection: false, checkboxes: true, headerCheckbox: this.showAll, selectAll: 'all'} as RowSelectionOptions;\n\t\t\toptions.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\toptions.rowSelection = {enableClickSelection: !this.isDisabled, checkboxes: false, headerCheckbox: false} as RowSelectionOptions;\n\t\t}\n\n\t\toptions.rowHeight = Number(rowHeight);\n\t\toptions.suppressDragLeaveHidesColumns = true;\n\t\toptions.suppressCellFocus = true;\n\t\toptions.defaultColDef = {};\n\t\toptions.defaultColDef.resizable = false;\n\t\t(options.rowSelection as RowSelectionOptions).mode = this.multipleSelection ? 'multiRow' : 'singleRow';\n\t\t(options.rowSelection as RowSelectionOptions).enableClickSelection = !this.isDisabled;\n\t\toptions.context = {componentParent: this};\n\n\t\toptions.headerHeight = 0;\n\t\toptions.getRowId = (item: GetRowIdParams) => this.getRowNodeId(item)\n\t\t\t?.toString();\n\n\t\toptions.enableBrowserTooltips = true;\n\t\treturn options;\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\tprivate getSelectionColumnDefs(): ColDef {\n\n\t\treturn {\n\t\t\ttype: \t\t   'selection',\n\t\t\theaderName:        '',\n\t\t\twidth:             this.getCheckColumnWidth(),\n\t\t\tsuppressSizeToFit: true,\n\t\t\tresizable:         false,\n\t\t\tsuppressMovable:   true,\n\t\t\tpinned:            'left',\n\t\t\tcellStyle: this.isDisabled ? {'pointer-events': 'none'} : ''\n\t\t} as ColDef;\n\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\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(columnDef =>columnDef.suppressSizeToFit = !columnDef.width);\n\t}\n\n\tpublic doGridReady(event: any) {\n\t\tthis.gridApi = event.api;\n\t\tthis.gridApi.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.gridApi, event);\n\t}\n\n\tpublic doGridSizeChanged(event: any) {\n\t\tif (this.gridApi) {\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: RowSelectedEvent) {\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.isSelected()) {\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\tthis.gridApi?.forEachNode(node => {\n\t\t\tif (node.data) {\n\t\t\t\tif (this.multipleSelection) {\n\t\t\t\t\tif (this.multipleSelectedItemList && this.multipleSelectedItemList.length > 0) {\n\t\t\t\t\t\tif (this.multipleSelectedItemList\n\t\t\t\t\t\t\t.filter((selectedItem) => {\n\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}).length > 0) {\n\t\t\t\t\t\t\tnode.setSelected(true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.setSelected(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode.setSelected(false);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!this.selectedItem && 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.selectedItem = node.data;\n\t\t\t\t\t\t\tthis.selectedItemChange.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.selectedItem) {\n\t\t\t\t\t\tif (this.getRowNodeId(node.data) === this.selectedItem[this.getIdField()]) {\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\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\tthis.gridApi?.forEachNode(node => {\n\t\t\tif (node && this.getRowNodeId(node.data) !== this.getAllFieldID()) {\n\t\t\t\tnode.setSelected(false);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate unselectNodeAll() {\n\t\tthis.gridApi?.forEachNode(node => {\n\t\t\tif (node && this.getRowNodeId(node.data) === this.getAllFieldID()) {\n\t\t\t\tnode.setSelected(false);\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    selector: 'systelab-gender-listbox',\n    templateUrl: 'abstract-listbox.component.html',\n    standalone: false\n})\nexport class SystelabGenderListBox extends AbstractListBox<Element> {\n\n\t@Input() override showAll = false;\n\n\tconstructor(public i18nService: I18nService) {\n\t\tsuper();\n\t}\n\n\tpublic override ngOnInit() {\n\t\tsuper.ngOnInit();\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-alpine border rounded\" [ngClass]=\"{'disabled': isDisabled}\"\n                     [rowData]=\"rowData\"\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    templateUrl: 'numpad.dialog.component.html',\n    standalone: false\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          @if (!isPassword) {\n            <input [autofocus]=\"true\" #inputElement id=\"numpadField\" type=\"text\" class=\"form-control slab-numpad-input\" name=\"numpadField\"\n              [(ngModel)]=\"value\">\n          }\n          @if (isPassword) {\n            <input [autofocus]=\"true\" #inputElement id=\"numpadFieldPwd\" type=\"password\" class=\"form-control slab-numpad-input\" name=\"numpadFieldPwd\"\n              [(ngModel)]=\"value\">\n          }\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    selector: '[autoFocus]',\n    standalone: false\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    selector: 'systelab-numpad',\n    templateUrl: 'numpad.component.html',\n    standalone: false\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  @if (isPassword) {\n    <input #input (click)=\"doSelectValue()\" class=\"form-control\" id=\"numpaddialogPwd\" type=\"password\" name=\"numpaddialog\" [placeholder]=\"placeholder\" [autoFocus]=\"autofocus\" [(ngModel)]=\"value\" (keyup.enter)=\"doEnter()\">\n  }\n  @if (!isPassword) {\n    <input #input (click)=\"doSelectValue()\" class=\"form-control\" id=\"numpaddialog\" type=\"text\" name=\"numpaddialog\" [placeholder]=\"placeholder\" [autoFocus]=\"autofocus\" [(ngModel)]=\"value\" (keyup.enter)=\"doEnter()\">\n  }\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    selector: 'systelab-listbox',\n    templateUrl: 'abstract-listbox.component.html',\n    standalone: false\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    selector: 'systelab-context-panel',\n    templateUrl: 'context-panel.component.html',\n    standalone: false\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      @if (isOpened) {\n        <div>\n          <div #ngcontent (click)=\"ngContentStopPropagation($event)\">\n            <ng-content select=\".main-content\"></ng-content>\n          </div>\n        </div>\n      }\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n    selector: 'systelab-date-range-picker',\n    templateUrl: 'date-range-picker.component.html',\n    standalone: false\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    selector: 'dialog-view',\n    templateUrl: 'message-popup-view.component.html',\n    styleUrls: ['message-popup-view.component.scss'],\n    standalone: false\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@if (parameters.askAgain) {\n  <div 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}\n<systelab-dialog-bottom>\n  @if (parameters.buttons?.length>0) {\n    <div class=\"ml-auto\">\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  }\n  @if (parameters.buttons?.length===0) {\n    <div class=\"ml-auto\">\n      <button type=\"button\" class=\"btn btn-primary\" (click)=\"close()\" [autoFocus]=\"true\">{{ 'COMMON_CLOSE' | translate | async }}</button>\n    </div>\n  }\n</systelab-dialog-bottom>\n\n","import { Component, Input } from '@angular/core';\n\n@Component({\n    selector: 'systelab-paginator-page',\n    templateUrl: 'paginator-page.component.html',\n    standalone: false\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    selector: 'systelab-paginator',\n    templateUrl: 'paginator.component.html',\n    standalone: false\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  @if (showFirstLastButtons) {\n    <systelab-paginator-page [icon]=\"'icon-angle-double-left'\" [disabled]=\"page===1\" (click)=\"goFirst()\"></systelab-paginator-page>\n  }\n  @if (showNextPreviousButtons) {\n    <systelab-paginator-page [icon]=\"'icon-angle-left'\" [disabled]=\"page===1\"\n    (click)=\"goPrevious()\"></systelab-paginator-page>\n  }\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  @if (showNextPreviousButtons) {\n    <systelab-paginator-page [icon]=\"'icon-angle-right'\" [disabled]=\"page===totalPages\"\n    (click)=\"goNext()\"></systelab-paginator-page>\n  }\n  @if (showFirstLastButtons) {\n    <systelab-paginator-page [icon]=\"'icon-angle-double-right'\" [disabled]=\"page===totalPages\"\n    (click)=\"goLast()\"></systelab-paginator-page>\n  }\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    selector: 'systelab-chip-button',\n    templateUrl: 'chip-button.component.html',\n    standalone: false\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      @if (isRemoveEnabled && !disabled) {\n        <span class=\"slab-chip-button-remove\" aria-hidden=\"true\" (click)=\"removeButtonItem(button, $event)\">×</span>\n      }\n    </button>\n  </li>\n}\n@if (showAddButton) {\n  <button [disabled]=\"disabled\" type=\"button\" class=\"slab-chip-button-add\" (click)=\"addButtonITem()\">+</button>\n}\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    selector: 'systelab-stacked-bar-cell',\n    templateUrl: 'stacked-bar-cell-renderer.component.html',\n    styleUrls: ['stacked-bar-cell-renderer.component.scss'],\n    standalone: false\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    selector: 'systelab-chips',\n    templateUrl: 'chips.component.html',\n    standalone: false\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 } from '@angular/core';\nimport { SpyMenuItem } from './spy-menu-item';\n\n@Component({\n    selector: 'systelab-spy-menu',\n    templateUrl: './spy-menu.component.html',\n    standalone: false\n})\nexport class SpyMenuComponent {\n\n\t@Input() public items: Array<SpyMenuItem>;\n\t@Input() public sectionSelected: string;\n\n\tpublic doClick(item: SpyMenuItem) {\n\t\tconst element = document.querySelector(`#${item.id}`);\n\t\tif (element) {\n\t\t\tnew IntersectionObserver((entries, observer) => {\n\t\t\t\tif (entries[0].isIntersecting) {\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t\tthis.sectionSelected = item.id\n\t\t\t\t}\n\t\t\t}).observe(element);\n\t\t\telement.scrollIntoView({\n\t\t\t\tbehavior: 'smooth',\n\t\t\t\tblock: 'start',\n\t\t\t});\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      @if (!isItemHidden(item)) {\n        <div (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      }\n    </ng-container>\n  }\n</div>\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';\n\n@Directive({\n    selector: '[scrollSpy]',\n    standalone: false\n})\nexport class ScrollSpyDirective implements AfterViewInit {\n  @Input() public spiedTags: Array<string> = ['div'];\n  @Input() public querySelector = '[id^=\"section\"]';\n  @Output() public sectionChange = new EventEmitter<string>();\n\n  private currentSection: string;\n\tprivate observer: IntersectionObserver;\n\n  constructor(private readonly _el: ElementRef) { }\n\n  public ngOnDestroy(): void {\n      this.observer?.disconnect();\n  }\n\n  public ngAfterViewInit(): void {\n    const options: IntersectionObserverInit = {\n      root: this._el.nativeElement, \n      threshold: 0.6, \n    };\n\n    this.observer = new IntersectionObserver(this.handleIntersect.bind(this), options);\n    const children = this._el.nativeElement.querySelectorAll(this.querySelector);\n\n    children.forEach(element => {\n      const tagName = element.tagName.toLowerCase();\n      if (this.spiedTags.includes(tagName)) {\n        this.observer.observe(element);\n      }\n    });\n  }\n\n  private handleIntersect(entries: IntersectionObserverEntry[]): void {\n    for (const entry of entries) {\n      if (entry.isIntersecting) {\n        const sectionId = (entry.target as HTMLElement).id;\n        if (sectionId && sectionId !== this.currentSection) {\n          this.currentSection = sectionId;\n          this.sectionChange.emit(this.currentSection);\n        }\n      }\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 enum ToastPosition {\n  topCenter = 'top-center',\n  bottomCenter = 'bottom-center',\n  topEnd = 'top-end',\n  bottomEnd = 'bottom-end',\n}\n\nexport interface ToastAction {\n  label: string;\n  callback: () => void;\n}\n\nexport class ToastData {\n  // Legacy support - if only text is provided, it will be used as title\n  text?: string;\n  \n  // New structure\n  title?: string;\n  body?: string;\n  type: ToastType;\n  action?: ToastAction;\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  position?: ToastPosition;\n  maxWidth?: number;\n  maxHeight?: number;\n  maxSimultaneousToasts?: number;\n}\n\nexport const DEFAULT_TOAST_CONFIG: ToastConfig = {\n  autoWidth: false,\n  fixedSize: ToastSize.small,\n  showCloseButton: false,\n  timeout: 5000,\n  position: ToastPosition.bottomCenter,\n  maxWidth: 530,\n  maxHeight: 72,\n  maxSimultaneousToasts: 5,\n};\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { toastAnimations, ToastAnimationState } from './toast-animation';\nimport { ToastConfig, ToastData, ToastSize } from './toast-config';\n\nconst ICONS = {\n  success: 'icon-check-circle',\n  info: 'icon-info-circle',\n  warning: 'icon-warning',\n  error: 'icon-times-circle',\n};\n\ninterface ToastItem {\n  id: string;\n  data: ToastData;\n  iconClass: string;\n  toastClass: string;\n  title: string;\n  body: string;\n  hasAction: boolean;\n  showClose: boolean;\n  animationState: ToastAnimationState;\n  timerId?: number;\n  onClose?: () => void;\n}\n\n@Component({\n    selector: 'systelab-toast',\n    templateUrl: './toast.component.html',\n    animations: [toastAnimations.fadeToast],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class ToastComponent {\n  public items: ToastItem[] = [];\n  public onEmpty?: () => void;\n\n  constructor(private readonly _cdr: ChangeDetectorRef) {}\n\n  public addToast(data: ToastData, config: ToastConfig, onClose?: () => void): string {\n    const id = `ti-${Date.now()}-${Math.floor(Math.random() * 1e6)}`;\n    const title = data.title || data.text || '';\n    const body = data.body || '';\n    const hasAction = !!data.action;\n\n    let toastClass = `slab-toast slab-toast--${data.type}`;\n    if (config.autoWidth) {\n      toastClass += ' slab-toast--auto-width';\n    } else if (config.fixedSize === ToastSize.large) {\n      toastClass += ' slab-toast--fixed-size-large';\n    }\n    if (config.showCloseButton) { toastClass += ' show-close-button'; }\n    if (hasAction) { toastClass += ' has-action'; }\n    if (body) { toastClass += ' has-body'; }\n\n    const item: ToastItem = {\n      id, data, title, body, hasAction, onClose,\n      iconClass: `fa ${ICONS[data.type]}`,\n      toastClass,\n      showClose: !!config.showCloseButton,\n      animationState: 'default',\n    };\n\n    item.timerId = window.setTimeout(() => this._startClose(id), config.timeout);\n    this.items = [...this.items, item];\n    this._cdr.detectChanges();\n    return id;\n  }\n\n  public removeToast(id: string): void {\n    const item = this.items.find(i => i.id === id);\n    if (item) {\n      clearTimeout(item.timerId);\n      this._remove(id);\n    }\n  }\n\n  public closeToast(item: ToastItem): void {\n    clearTimeout(item.timerId);\n    this._remove(item.id);\n  }\n\n  public onActionClick(item: ToastItem): void {\n    if (item.data.action) {\n      item.data.action.callback();\n      clearTimeout(item.timerId);\n      this._remove(item.id);\n    }\n  }\n\n  public onFadeFinished(event: AnimationEvent, item: ToastItem): void {\n    const isFadeOut = (event.toState as ToastAnimationState) === 'closing';\n    if (isFadeOut && item.animationState === 'closing') {\n      this._remove(item.id);\n    }\n  }\n\n  private _startClose(id: string): void {\n    const item = this.items.find(i => i.id === id);\n    if (item && item.animationState !== 'closing') {\n      item.animationState = 'closing';\n      this._cdr.detectChanges();\n    }\n  }\n\n  private _remove(id: string): void {\n    const item = this.items.find(i => i.id === id);\n    this.items = this.items.filter(i => i.id !== id);\n    this._cdr.detectChanges();\n    if (item?.onClose) { item.onClose(); }\n    if (this.items.length === 0) { this.onEmpty?.(); }\n  }\n}\n","@for (item of items; track item.id) {\n    <div [ngClass]=\"item.toastClass\"\n         [@fadeAnimation]=\"{ value: item.animationState, params: { fadeIn: 300, fadeOut: 300 } }\"\n         (@fadeAnimation.done)=\"onFadeFinished($event, item)\">\n        <i class=\"type\" [ngClass]=\"item.iconClass\"></i>\n        <div class=\"slab-toast__content\">\n            <div class=\"slab-toast__title\">{{ item.title }}</div>\n            @if (item.body) {\n                <div class=\"slab-toast__body\">{{ item.body }}</div>\n            }\n        </div>\n        @if (item.hasAction) {\n            <button class=\"slab-toast__action\" (click)=\"onActionClick(item)\" type=\"button\">\n                {{ item.data.action.label }}\n            </button>\n        }\n        @if (item.showClose) {\n            <i class=\"slab-toast__close\" (click)=\"closeToast(item)\" role=\"button\" tabindex=\"0\"\n               (keydown.enter)=\"closeToast(item)\"\n               (keydown.space)=\"closeToast(item)\"></i>\n        }\n    </div>\n}\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    standalone: false\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    selector: 'systelab-slider-double-range',\n    templateUrl: 'slider-double-range.component.html',\n    standalone: false\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    selector: '[draggable]',\n    standalone: false\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    selector: '[resizable]',\n    standalone: false\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    selector: 'systelab-image-viewer',\n    templateUrl: 'image-viewer.component.html',\n    styleUrls: ['image-viewer.component.scss'],\n    standalone: false\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\tconst newZoom = Math.min(availableWidth / imageWidth, availableHeight / imageHeight) * 100;\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 align-items-center\">\n    <div class=\"d-flex ml-1\">\n      @for (actionButton of actionButtons; track actionButton.label) {\n        <ng-container>\n          @if (actionButton.type===actionButtonType.TOGGLE_BUTTON) {\n            <systelab-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          }\n          @if (actionButton.type===actionButtonType.BUTTON) {\n            <systelab-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          }\n          @if (actionButton.type===actionButtonType.DROP_DOWN) {\n            <div 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          }\n        </ng-container>\n      }\n    </div>\n    <div class=\"d-flex slab-flex-1\" id=\"OverImageArea\"></div>\n    <div class=\"d-flex ml-auto\">\n      <a [href]=\"imageSrc\" download=\"{{imageTitle}}\">\n        <a [href]=\"imageSrc\" download=\"{{imageTitle}}\" ></a>\n        @if (showSaveButton) {\n          <systelab-button data-test-id=\"SaveBtn\"\n            systelabTooltip=\"{{ 'COMMON_SAVE' | translate | async }}\">\n            <i class=\"icon-download1\"></i>\n          </systelab-button>\n        }\n      </a>\n      @if (showZoomByAreaButton) {\n        <systelab-toggle-button 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      }\n      @if (showAdjustButton) {\n        <systelab-button class=\"ml-2\" data-test-id=\"AdjustBtn\" (click)=\"doAdjust()\" systelabTooltip=\"{{ 'COMMON_ADJUST' | translate | async }}\">\n          <i class=\"icon-enlarge\"></i>\n        </systelab-button>\n      }\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  </div>\n  @if (showZoomScale) {\n    <div class=\"d-flex justify-content-end\">\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  }\n</div>\n\n@if (imageSrc) {\n  <div id=\"imageViewerWrapper\" #imageViewerWrapper [ngClass]=\"{'zooming' : zoomEnabled, 'dragging' : dragEnabled }\">\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      <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  } @else {\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  }\n  @if (overlayText) {\n    <div class=\"mlab-link\" id=\"imageViewerOverlayText\" data-test-id=\"ImageViewerOverlayText\"\n    (click)=\"clickOverlayText.emit()\">{{overlayText}}</div>\n  }\n\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    selector: '[systelabNumPadDecimalNumericDirective]',\n    standalone: false\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    selector: 'systelab-positive-integer-input-cell-editor',\n    templateUrl: 'positive-integer-input-cell-editor.component.html',\n    standalone: false\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    standalone: false\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\tstandalone: false\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\tstandalone: false\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 { ApplicationConfig } from '@angular/core';\nimport { provideAnimationsAsync } from '@angular/platform-browser/animations/async';\nimport { providePrimeNG } from 'primeng/config';\nimport Aura from '@primeng/themes/aura' ;\n\nexport const libConfig: ApplicationConfig = {\n    providers: [\n        provideAnimationsAsync(),\n        providePrimeNG({\n            ripple: true,\n            theme: {\n                preset: Aura,\n                options: {\n                    darkModeSelector: false\n                }\n            }\n        })\n    ]\n};","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, 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 { TooltipContentComponent, 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 { DatePickerModule } from 'primeng/datepicker';\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 { 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';\nimport { AllCommunityModule, ModuleRegistry, provideGlobalGridOptions } from 'ag-grid-community';\nimport { libConfig } from './lib.config';\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\t...libConfig.providers,\n\tStylesUtilService,\n\tColorUtilService,\n\tLoadingService\n];\n\n@NgModule({\n\timports:      [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tDatePickerModule,\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\tTooltipDirective,\n\t\tTooltipContentComponent,\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\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\tSplitComponent,\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\n\tpublic static forRoot(conf?: AppConfig): ModuleWithProviders<SystelabComponentsModule> {\n\t\tModuleRegistry.registerModules([ AllCommunityModule ]);\n\n\t\tprovideGlobalGridOptions({\n\t\t\ttheme: 'legacy'\n\t\t});\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.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\tthis.gridApi?.setGridOption('datasource', this);\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\tconst firstCol = this.gridApi?.getAllDisplayedColumns()[0];\n\t\t\tthis.gridApi?.setFocusedCell(0, firstCol);\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.gridApi && !this.gridApi.isDestroyed()) {\n\t\t\tthis.gridApi.setGridOption(\"loading\", true);\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.gridApi.setGridOption(\"loading\", false);\n\t\t\t\t\t\t\tthis.gridApi.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.gridApi.setGridOption(\"loading\", false);\n\t\t\t\t\t\t\tthis.gridApi.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.gridApi && !this.gridApi.isDestroyed()) {\n\t\t\tthis.gridApi.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.doSearch(event);\n\t}\n\n\tpublic onEnterDoSelect(event: KeyboardEvent) {\n\t\tif (this.isDropdownOpened) {\n\t\t\tthis.gridApi.getDisplayedRowAtIndex(0).setSelected(true);\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 { map, Observable } from 'rxjs';\nimport { PreferencesService } from 'systelab-preferences';\nimport { GetRowIdParams, GridOptions, GridReadyEvent } from 'ag-grid-community';\n\ndeclare var jQuery: any;\n\nexport class ComboTreeNode<T> {\n\tpublic nodeData: T;\n\tpublic level: number;\n\tpublic description?: string;\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\tpublic totalItemsLoaded = false;\n\tpublic isFirstTime = true;\n\tpublic override isTree = true;\n\tpublic modelUpdated = false;\n\n\tprotected constructor(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\t\tsuper.ngOnInit();\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\tcellStyle:    () => this.multipleSelection ? ({paddingLeft: '0px'}) : null,\n\t\t\t\twidth:        '100%'\n\t\t\t}\n\t\t];\n\n\t\tthis.gridOptions = {} as 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 = {\n\t\t\tcheckboxes:           this.multipleSelection,\n\t\t\tmode:                 this.multipleSelection ? 'multiRow' : 'singleRow',\n\t\t\tenableClickSelection: !this.multipleSelection\n\t\t};\n\t}\n\n\tgetInstance(): ComboTreeNode<T> {\n\t\treturn new ComboTreeNode<T>();\n\t}\n\n\tgetDescriptionField(level?): string {\n\t\treturn '';\n\t}\n\n\tgetCodeField(level?): string {\n\t\treturn '';\n\t}\n\n\tgetIdField(level?): 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\tconst style: string = comboTreeNode.level > 0 ? `style=\"padding-left: ${(20 * comboTreeNode.level)}px\"` : '';\n\t\tconst description: string = comboTreeNode.nodeData[this.getLevelDescriptionField(comboTreeNode.level)];\n\t\treturn `<span title=\"${description}\" ${style}>${description}</span>`;\n\t}\n\n\t// override\n\tpublic override closeDropDown() {\n\t\tthis.isFirstTime = true;\n\t\tsuper.closeDropDown();\n\t}\n\n\tpublic override doGridReady(event: GridReadyEvent) {\n\t\tsuper.doGridReady(event);\n\t\tthis.getRows()\n\t\t\t.subscribe({\n\t\t\t\tnext:  (nodeVector) => {\n\t\t\t\t\tif (this.multipleSelection) {\n\t\t\t\t\t\tthis.isAllSelectable = false;\n\t\t\t\t\t\tthis.allElement = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis.gridApi.hideOverlay();\n\t\t\t\t\tthis.rowData = nodeVector;\n\t\t\t\t\tthis.gridApi.redrawRows();\n\t\t\t\t\tif (this.totalItemsLoaded) {\n\t\t\t\t\t\tthis.setDropdownHeight(nodeVector.length);\n\t\t\t\t\t\tthis.setDropdownPosition();\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis.transferFocusToGrid();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: () => {\n\t\t\t\t\tthis.gridApi.hideOverlay();\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tpublic override onModelUpdated(): void {\n\t\tif (this.multipleSelection) {\n\t\t\tif (this.multipleSelectedItemList && this.multipleSelectedItemList.length > 0) {\n\t\t\t\tthis.gridApi?.forEachNode(node => {\n\t\t\t\t\tif (this.multipleSelectedItemList.some((item) =>\n\t\t\t\t\t\t(item !== undefined && node.data.nodeData !== undefined && item[this.getIdField(1)] === node.data.nodeData[this.getIdField(1)]))) {\n\t\t\t\t\t\tnode.setSelected(true);\n\t\t\t\t\t\tthis.modelUpdated = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Override\n\tpublic override setDropdownHeight(items?: number) {\n\t\tlet totalItems = items ?? Number(this.gridApi.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(): Observable<ComboTreeNode<T>[]> {\n\t\tthis.totalItemsLoaded = false;\n\t\tthis.isFirstTime = false;\n\t\treturn this.getData()\n\t\t\t.pipe(\n\t\t\t\tmap((dataVector: Array<T>) => {\n\t\t\t\t\tconst nodeVector: Array<ComboTreeNode<T>> = [];\n\t\t\t\t\tlet previousParent: number | string;\n\n\t\t\t\t\tif (this.emptyElement) {\n\t\t\t\t\t\tconst emptyElement: T = {} as T;\n\t\t\t\t\t\temptyElement[this.getLevelIdField(0)] = '';\n\t\t\t\t\t\temptyElement[this.getLevelDescriptionField(0)] = '';\n\t\t\t\t\t\tconst emptyElementNode: ComboTreeNode<T> = new ComboTreeNode<T>(emptyElement, 0);\n\t\t\t\t\t\tnodeVector.push(emptyElementNode);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.withFavourites) {\n\t\t\t\t\t\tthis.initializeFavouriteList();\n\t\t\t\t\t\tif (this.favouriteList.length > 0) {\n\t\t\t\t\t\t\tconst favouriteElement: T = {} as T;\n\t\t\t\t\t\t\tfavouriteElement[this.getLevelIdField(0)] = AbstractApiTreeComboBox.FAVOURITEID;\n\t\t\t\t\t\t\tfavouriteElement[this.getLevelDescriptionField(0)] = this.getFavouriteText();\n\t\t\t\t\t\t\tconst favouriteComboNode: ComboTreeNode<T> = new ComboTreeNode<T>(favouriteElement, 0);\n\t\t\t\t\t\t\tnodeVector.push(favouriteComboNode);\n\t\t\t\t\t\t\tconst favouriteElements = this.getFavouriteElements(dataVector);\n\t\t\t\t\t\t\tif(favouriteElements?.length > 0) {favouriteElements.forEach(currentFavouriteElement => {\n\t\t\t\t\t\t\t\tconst currentFavouriteNode: ComboTreeNode<T> = new ComboTreeNode<T>(currentFavouriteElement, 1);\n\t\t\t\t\t\t\t\tnodeVector.push(currentFavouriteNode);});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnodeVector.pop();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.isAllSelectable) {\n\t\t\t\t\t\tconst allElement: T = {} as T;\n\t\t\t\t\t\tallElement[this.getLevelIdField(0)] = this.getAllNodeId();\n\t\t\t\t\t\tallElement[this.getLevelDescriptionField(0)] = this.getAllNodeDescription();\n\t\t\t\t\t\tconst allComboNode: ComboTreeNode<T> = new ComboTreeNode<T>(allElement, 0);\n\t\t\t\t\t\tnodeVector.push(allComboNode);\n\t\t\t\t\t}\n\n\t\t\t\t\tdataVector.forEach((element: T) => {\n\t\t\t\t\t\tif (!previousParent || element[this.getLevelIdField(0)] !== previousParent) {\n\t\t\t\t\t\t\tpreviousParent = element[this.getLevelIdField(0)];\n\t\t\t\t\t\t\tconst parentComboNode: ComboTreeNode<T> = new ComboTreeNode<T>(element, 0);\n\t\t\t\t\t\t\tnodeVector.push(parentComboNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst comboNode: ComboTreeNode<T> = new ComboTreeNode<T>(element, 1);\n\t\t\t\t\t\tnodeVector.push(comboNode);\n\t\t\t\t\t});\n\t\t\t\t\tthis.totalItemsLoaded = true;\n\t\t\t\t\treturn nodeVector;\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 (this.multipleSelection) {\n\t\t\tif (this.modelUpdated && event.source === 'api') {\n\t\t\t\treturn;\n\t\t\t} else if (event.source !== 'api') {\n\t\t\t\tthis.modelUpdated = false;\n\t\t\t}\n\n\t\t\tthis.addRemoveToMultipleSelectedItem(event);\n\n\t\t\tif (event.source === 'api') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (event.node.data.level === 0) {\n\t\t\t\tthis.selectUnselectChildTree(event);\n\t\t\t} else {\n\t\t\t\tthis.selectUnselectParentTree(event);\n\t\t\t}\n\n\t\t} else if (event.node.selected) {\n\t\t\tconst isParent = this.isParentSelectable && event.node.data.nodeData[this.getLevelIdField(0)] !== AbstractApiTreeComboBox.FAVOURITEID;\n\t\t\tconst isAll = this.isAllSelectable && event.node.data.level === 0 && event.node.data.nodeData[this.getLevelIdField(0)] === this.getAllNodeId();\n\t\t\tconst isChild = event.node.data.level > 0;\n\n\t\t\tif (isParent || isAll || isChild) {\n\t\t\t\tjQuery('#' + this.comboId)\n\t\t\t\t\t.dropdown('toggle');\n\t\t\t} else {\n\t\t\t\tevent.node.setSelected(false);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected addRemoveToMultipleSelectedItem(event: any) {\n\t\tconst elementIndexInSelectedList: number = this.multipleSelectedItemList.findIndex((item) => {\n\t\t\treturn item[this.getIdField(1)] === event.node.data.nodeData[this.getIdField(1)];\n\t\t});\n\t\tif (event.node.isSelected()) {\n\t\t\tif (elementIndexInSelectedList < 0) {\n\t\t\t\tthis.multipleSelectedItemList.push(event.node.data.nodeData);\n\t\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList.slice();\n\t\t\t}\n\t\t} else if (elementIndexInSelectedList >= 0) {\n\t\t\tthis.multipleSelectedItemList.splice(elementIndexInSelectedList, 1);\n\t\t\tthis.multipleSelectedItemList = this.multipleSelectedItemList.slice();\n\t\t}\n\n\t}\n\n\tprotected selectUnselectChildTree(event: any) {\n\t\tthis.gridApi?.forEachNode(node => {\n\t\t\tif (node?.data.level === 1 && node.data.nodeData[this.getIdField(0)] === event.node.data.nodeData[this.getIdField(0)]) {\n\t\t\t\tnode.setSelected(event.node.isSelected());\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected selectUnselectParentTree(event: any) {\n\t\tconst parentId = event.node?.data?.nodeData[this.getIdField(0)];\n\t\tlet allChildrenSelected = true;\n\n\t\tthis.gridApi?.forEachNode(node => {\n\t\t\tif (\n\t\t\t\tnode?.data.level === 1 &&\n\t\t\t\tnode.data.nodeData[this.getIdField(0)] === parentId\n\t\t\t) {\n\t\t\t\tif (!node.isSelected()) {\n\t\t\t\t\tallChildrenSelected = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.gridApi?.forEachNode(node => {\n\t\t\tif (\n\t\t\t\tnode?.data.level === 0 &&\n\t\t\t\tnode.data.nodeData[this.getIdField(1)] === parentId\n\t\t\t) {\n\t\t\t\tif (node.isSelected() !== allChildrenSelected) {\n\t\t\t\t\tnode.setSelected(allChildrenSelected);\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\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.nodeData[this.getLevelIdField(selectedRow.level)];\n\t\t\t\tthis.description = selectedRow.nodeData[this.getLevelDescriptionField(selectedRow.level)];\n\t\t\t\tthis.currentSelected = selectedRow.nodeData;\n\t\t\t\tthis.level = selectedRow.level;\n\t\t\t\tif (selectedRow.level > 0\n\t\t\t\t\t|| (this.isAllSelectable && selectedRow.nodeData[this.getLevelIdField(0)] === this.getAllNodeId())\n\t\t\t\t\t|| this.isParentSelectable) {\n\t\t\t\t\tthis.change.emit(selectedRow.nodeData);\n\t\t\t\t\tthis.idChange.emit(this.id);\n\t\t\t\t\tthis.closeDropDown();\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\tpublic override refresh(params: any): boolean {\n\t\tif (this.gridApi) {\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\tprotected override getRowNodeId(item: GetRowIdParams | ComboTreeNode<ComboTreeNode<T>>): string | number | undefined {\n\n\t\tif ('nodeData' in item) {\n\t\t\tconst id = this.getLevelIdField(item.level);\n\n\t\t\tif (item[id] != null) {\n\t\t\t\treturn item[id];\n\t\t\t}\n\n\t\t\treturn id === ''\n\t\t\t\t? ''\n\t\t\t\t: item.nodeData?.[id] ?? '';\n\t\t}\n\n\t\treturn '';\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 { GridOptions, 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 {\n\n\tpublic abstract override getInstance(): T;\n\n\tprotected constructor() {\n\t\tsuper();\n\t\tthis.values = null;\n\t\tthis.rowData = null;\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.datasource = this;\n\t\toptions.loading = false;\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.gridApi.updateGridOptions({ loading: true });\n\t\tconst page: number = params.endRow / this.gridOptions.paginationPageSize;\n\t\tconst pageSize: number = this.gridOptions.paginationPageSize;\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\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.gridApi.updateGridOptions({ loading: false });\n\t\t\t\t\t\t\tthis.gridApi.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\t\t\t\t\t\t},\n\t\t\t\t\t\terror: () => {\n\t\t\t\t\t\t\tthis.gridApi.updateGridOptions({loading: false});\n\t\t\t\t\t\t\tthis.gridApi.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.gridApi.updateGridOptions({ loading: false });\n\t\t\t\t\t\tthis.gridApi.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.gridApi.updateGridOptions({ loading: false });\n\t\t\t\t\t\tthis.gridApi.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.gridApi?.updateGridOptions({datasource: 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, RowSelectionOptions } 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 {\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 override doGridReady(event: any) {\n\t\tsuper.doGridReady(event);\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\tthis.gridApi?.redrawRows();\n\t}\n\n\t \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 \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.gridApi) {\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 \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 = {\n\t\t\tmode: 'singleRow',\n\t\t\tcheckboxes: false\n\t\t} as RowSelectionOptions;\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.rowSelection.enableClickSelection = false;\n\t\t} else {\n\t\t\tthis.gridOptions.rowSelection.enableClickSelection = !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\t\tthis.addSuppressSizeToFitToColumnsWithWidthDefined(this.columnDefs);\n\t\tthis.gridOptions.columnDefs = this.columnDefs;\n\t}\n\n\tprotected override getRowNodeId(item: GetRowIdParams): string | number | undefined {\n\t\tif (item?.data?.nodeData[this.getIdField(item?.data?.level)]) {\n\t\t\treturn item.level + '-' + item.data.nodeData[this.getIdField(item?.data?.level)];\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.gridApi.hideOverlay();\n\t\t\t\t\tthis.rowData = [...this.treeValues];\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.gridApi.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\tthis.gridApi?.forEachNode(node => {\n\t\t\tif (!this.multipleSelection) {\n\t\t\t\tif (!this.selectedTreeItem && this.selectFirstItem) {\n\t\t\t\t\tif (node.rowIndex === 0) {\n\t\t\t\t\t\tnode.setSelected(true);\n\t\t\t\t\t\tthis.selectedTreeItem = node.data;\n\t\t\t\t\t\tthis.selectedTreeItemChange.emit(node.data);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else if (this.selectedTreeItem && this.selectedTreeItem.nodeData) {\n\t\t\t\t\tconst level = this.getIdField(this.selectedTreeItem.level);\n\t\t\t\t\tif (node.data.nodeData[level] === this.selectedTreeItem.nodeData[level]\n\t\t\t\t\t\t&& node.data.level === this.selectedTreeItem.level) {\n\t\t\t\t\t\tnode.setSelected(true);\n\t\t\t\t\t\treturn;\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","let nextId = 0;\n\nexport class ToastRef {\n  public readonly id: string;\n  private readonly _dismiss: () => void;\n\n  constructor(dismissFn: () => void) {\n    this.id = `toast-${nextId++}`;\n    this._dismiss = dismissFn;\n  }\n\n  public close(): void {\n    this._dismiss();\n  }\n}\n","import { ComponentRef, Inject, Injectable, Injector, Optional } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ToastRef } from './toast-ref';\nimport { DEFAULT_TOAST_CONFIG, ToastConfig, ToastData, ToastAction } from './toast-config';\nimport { ToastComponent } from './toast.component';\nimport { APP_CONFIG } from '../systelab-components.module.config';\n\nexport interface ShowToastOptions {\n  title: string;\n  body?: string;\n  action?: ToastAction;\n  config?: Partial<ToastConfig>;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ToastService {\n  private _activeToasts: ToastRef[] = [];\n  private _config: ToastConfig;\n  private readonly _containers = new Map<string, { overlayRef: OverlayRef; containerRef: ComponentRef<ToastComponent> }>();\n\n  constructor(\n    @Optional() @Inject(APP_CONFIG) private readonly appConfig: any,\n    private readonly overlay: Overlay,\n    private readonly parentInjector: Injector,\n  ) {\n    this._config = this.appConfig?.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  // Legacy methods - backward compatible\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  // New enhanced methods\n  public showErrorMessage(options: ShowToastOptions | string): ToastRef {\n    if (typeof options === 'string') {\n      return this.show({ text: options, type: 'error' });\n    }\n    return this.show({ title: options.title, body: options.body, type: 'error', action: options.action }, options.config);\n  }\n\n  public showWarningMessage(options: ShowToastOptions | string): ToastRef {\n    if (typeof options === 'string') {\n      return this.show({ text: options, type: 'warning' });\n    }\n    return this.show({ title: options.title, body: options.body, type: 'warning', action: options.action }, options.config);\n  }\n\n  public showInformationMessage(options: ShowToastOptions | string): ToastRef {\n    if (typeof options === 'string') {\n      return this.show({ text: options, type: 'info' });\n    }\n    return this.show({ title: options.title, body: options.body, type: 'info', action: options.action }, options.config);\n  }\n\n  public showSuccessMessage(options: ShowToastOptions | string): ToastRef {\n    if (typeof options === 'string') {\n      return this.show({ text: options, type: 'success' });\n    }\n    return this.show({ title: options.title, body: options.body, type: 'success', action: options.action }, options.config);\n  }\n\n  // Toast management methods\n  public dismissAll(): void {\n    this._containers.forEach(({ overlayRef }) => overlayRef.dispose());\n    this._containers.clear();\n    this._activeToasts = [];\n  }\n\n  public dismiss(id: string): void {\n    const toast = this._activeToasts.find(t => t.id === id);\n    toast?.close();\n  }\n\n  public getActiveToasts(): ToastRef[] {\n    return [...this._activeToasts];\n  }\n\n  private show(data: ToastData, customConfig?: Partial<ToastConfig>): ToastRef {\n    const config = { ...this._config, ...customConfig };\n\n    this.validateContent(data);\n\n    const container = this._getOrCreateContainer(config);\n\n    const maxToasts = config.maxSimultaneousToasts ?? DEFAULT_TOAST_CONFIG.maxSimultaneousToasts;\n    if (container.items.length >= maxToasts) {\n      container.removeToast(container.items[0].id);\n    }\n\n    let toastRef: ToastRef;\n    const toastItemId = container.addToast(data, config, () => {\n      this._activeToasts = this._activeToasts.filter(t => t !== toastRef);\n    });\n\n    toastRef = new ToastRef(() => container.removeToast(toastItemId));\n    this._activeToasts.push(toastRef);\n    return toastRef;\n  }\n\n  private validateContent(data: ToastData): void {\n    const title = data.title || data.text || '';\n    const body = data.body || '';\n\n    if (title.split('.').length > 2) {\n      console.warn('Toast title should be limited to one sentence for better readability.');\n    }\n    if (body.split('.').filter(s => s.trim()).length > 3) {\n      console.warn('Toast body should be limited to two sentences for better readability.');\n    }\n    if (data.action && data.action.label.split(' ').length > 2) {\n      console.warn('Toast action label should be limited to one or two words.');\n    }\n  }\n\n  private _getOrCreateContainer(config: ToastConfig): ToastComponent {\n    const positionKey = config.position ?? DEFAULT_TOAST_CONFIG.position;\n    const existing = this._containers.get(positionKey);\n\n    if (existing?.overlayRef.hasAttached()) {\n      return existing.containerRef.instance;\n    }\n\n    if (existing) {\n      this._containers.delete(positionKey);\n    }\n\n    const positionStrategy = this.createPositionStrategy(config, '25px');\n    const overlayRef = this.overlay.create({ positionStrategy, panelClass: ['slab-toast-panel', `slab-toast-panel--${positionKey}`] });\n    const portal = new ComponentPortal(ToastComponent, null, this.parentInjector);\n    const containerRef = overlayRef.attach(portal);\n\n    containerRef.instance.onEmpty = () => {\n      overlayRef.dispose();\n      this._containers.delete(positionKey);\n    };\n\n    this._containers.set(positionKey, { overlayRef, containerRef });\n    return containerRef.instance;\n  }\n\n  private createPositionStrategy(config: ToastConfig, offset: string) {\n    const position = this.overlay.position().global();\n\n    switch (config.position) {\n      case 'top-center':\n        return position.top(offset).centerHorizontally();\n      case 'bottom-center':\n        return position.bottom(offset).centerHorizontally();\n      case 'top-end':\n        return position.top(offset).right('25px');\n      case 'bottom-end':\n        return position.bottom(offset).right('25px');\n      default:\n        return position.bottom(offset).centerHorizontally();\n    }\n  }\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    standalone: false\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    standalone: false\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    standalone: false\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","\nimport { Inject, Injectable, DOCUMENT } 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', agGridTheme = 'ag-theme-alpine'): void {\n\t\tconst theme = THEMES[name];\n\t\tconst gridVars: string[] = [];\n\t\tObject.keys(theme).forEach((key) => {\n\t\t\tif(key.startsWith('ag')) {\n\t\t\t\tgridVars.push(key);\n\t\t\t} else {\n\t\t\t\tthis.document.documentElement.style.setProperty(`--${key}`, theme[key]);\n\t\t\t}\n\t\t});\n\n\t\tthis.setGridTheme(theme, agGridTheme, gridVars);\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\tprivate setGridTheme(systelabTheme, agGridTheme: string, agGridVars: string[]): void {\n\t\tconst oldStyle = this.document.getElementById(`${agGridTheme}-vars`);\n\t\t!!oldStyle && oldStyle.remove();\n\t\tconst style = this.document.createElement('style');\n\t\tstyle.id = `${agGridTheme}-vars`;\n\n\t\tlet css = `.${agGridTheme} {\\n`;\n\t\tagGridVars.forEach((agGridVar) => {\n\t\t\tcss += `  --${agGridVar}: ${systelabTheme[agGridVar]};\\n`;\n\t\t});\n\t\tcss += `}`;\n\n\t\tstyle.innerHTML = css;\n\t\tthis.document.head.appendChild(style);\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';\nexport * from './lib/toast/toast-config';\nexport * from './lib/toast/toast-ref';\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","i1.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","i8.ButtonComponent","i4.TouchspinComponent","i5.DatepickerComponent","i6","i2.TooltipDirective","i3.ApplicationHeaderComponent","i4.ApplicationSidebarLargeComponent","i5.ApplicationSidebarSmallComponent","i3.DialogService","i5.GridContextMenuComponent","i6.GridHeaderContextMenu","i5.SearcherTableComponent","i6.DialogHeaderComponent","i7.DialogBottomComponent","i8.KeyupDebounceDirective","i2.ButtonComponent","i4.CalendarHeaderComponent","i5.CalendarTableComponent","i6.CalendarFooterComponent","i1.TouchspinComponent","i3.DialogHeaderComponent","i3.AutofocusDirective","i1.DatepickerComponent","i2.SwitchComponent","i4.DialogBottomComponent","i5.MessageWithIconComponent","i6.AutofocusDirective","i7","i8","i1.PaginatorPageComponent","i2.DialogService","i1.MessagePopupService","i3.TooltipDirective","i4.SliderComponent","i5.ButtonComponent","i6.ToggleButtonComponent","i2.TranslationHelper","i2.NumberHelper","i2.AbstractSearcher"],"mappings":"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"}