systelab-components
Version:
systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.
1 lines • 898 kB
Source Map (JSON)
{"version":3,"file":"systelab-components.mjs","sources":["../../../projects/systelab-components/src/lib/slider/slider.component.ts","../../../projects/systelab-components/src/lib/slider/slider.component.html","../../../projects/systelab-components/src/lib/switch/switch.component.ts","../../../projects/systelab-components/src/lib/switch/switch.component.html","../../../projects/systelab-components/src/lib/contextmenu/context-menu-action-data.ts","../../../projects/systelab-components/src/lib/contextmenu/abstract-context.component.ts","../../../projects/systelab-components/src/lib/contextmenu/abstract-context-menu.component.ts","../../../projects/systelab-components/src/lib/contextmenu/context-menu-item.component.ts","../../../projects/systelab-components/src/lib/contextmenu/context-menu-item.component.html","../../../projects/systelab-components/src/lib/contextmenu/context-menu-submenu-item.component.ts","../../../projects/systelab-components/src/lib/contextmenu/context-menu-submenu-item.component.html","../../../projects/systelab-components/src/lib/contextmenu/context-menu.component.ts","../../../projects/systelab-components/src/lib/contextmenu/context-menu.component.html","../../../projects/systelab-components/src/lib/twolist/datafilter.pipe.ts","../../../projects/systelab-components/src/lib/twolist/two-list-utilities.ts","../../../projects/systelab-components/src/lib/button/button.component.ts","../../../projects/systelab-components/src/lib/button/button.component.html","../../../projects/systelab-components/src/lib/sortable-list/abstract-sortable-list.component.ts","../../../projects/systelab-components/src/lib/twolist/two-list-sortable-list.component.ts","../../../projects/systelab-components/src/lib/sortable-list/abstract-sortable-list.component.html","../../../projects/systelab-components/src/lib/twolist/two-list.component.ts","../../../projects/systelab-components/src/lib/twolist/two-list.component.html","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-context-menu-cell-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-context-menu-cell-renderer.component.html","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-header-context-menu-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-header-context-menu-renderer.component.html","../../../projects/systelab-components/src/lib/grid/options/grid-column-options.ts","../../../projects/systelab-components/src/lib/modal/dialog/modal-context.ts","../../../projects/systelab-components/src/lib/modal/dialog/dialog-ref.ts","../../../projects/systelab-components/src/lib/tabs/tab.component.ts","../../../projects/systelab-components/src/lib/tabs/tabs.component.ts","../../../projects/systelab-components/src/lib/systelab-components.module.config.ts","../../../projects/systelab-components/src/lib/modal/systelab-dialog-config.ts","../../../projects/systelab-components/src/lib/modal/header/dialog-header.component.ts","../../../projects/systelab-components/src/lib/modal/header/dialog-header.component.html","../../../projects/systelab-components/src/lib/modal/bottom/dialog-bottom.component.ts","../../../projects/systelab-components/src/lib/modal/bottom/dialog-bottom.component.html","../../../projects/systelab-components/src/lib/grid/options/grid-column-options-dialog.component.ts","../../../projects/systelab-components/src/lib/grid/options/grid-column-options-dialog.component.html","../../../projects/systelab-components/src/lib/utilities/styles.util.service.ts","../../../projects/systelab-components/src/lib/utilities/color.util.service.ts","../../../projects/systelab-components/src/lib/combobox/renderer/combobox-favourite-renderer.component.ts","../../../projects/systelab-components/src/lib/combobox/renderer/combobox-favourite-renderer.component.html","../../../projects/systelab-components/src/lib/helper/autosize-grid-helper.ts","../../../projects/systelab-components/src/lib/combobox/abstract-combobox.component.ts","../../../projects/systelab-components/src/lib/combobox/renderer/combobox-input-renderer.ts","../../../projects/systelab-components/src/lib/colorpicker/color-cell-renderer.component.ts","../../../projects/systelab-components/src/lib/colorpicker/color-renderer.component.html","../../../projects/systelab-components/src/lib/combobox/renderer/combobox-input-renderer.component.ts","../../../projects/systelab-components/src/lib/colorpicker/colorpicker.component.ts","../../../projects/systelab-components/src/lib/combobox/abstract-combobox.component.html","../../../projects/systelab-components/src/lib/select/all-yes-no-combobox.component.ts","../../../projects/systelab-components/src/lib/select/no-yes-combobox-component.ts","../../../projects/systelab-components/src/lib/select/period-combobox.component.ts","../../../projects/systelab-components/src/lib/select/gender-combobox.component.ts","../../../projects/systelab-components/src/lib/modal/dialog/dialog.service.ts","../../../projects/systelab-components/src/lib/applicationframe/header/app-header.component.ts","../../../projects/systelab-components/src/lib/applicationframe/header/app-header.component.html","../../../projects/systelab-components/src/lib/applicationframe/sidebar/app-sidebar-large.component.ts","../../../projects/systelab-components/src/lib/applicationframe/sidebar/app-sidebar-large.component.html","../../../projects/systelab-components/src/lib/datepicker/date-transformer.service.ts","../../../projects/systelab-components/src/lib/datepicker/datepicker.component.ts","../../../projects/systelab-components/src/lib/datepicker/datepicker.component.html","../../../projects/systelab-components/src/lib/spinner/touch.spin-values.ts","../../../projects/systelab-components/src/lib/spinner/spinner.component.ts","../../../projects/systelab-components/src/lib/spinner/spinner.component.html","../../../projects/systelab-components/src/lib/datepicker/datepicker-time.component.ts","../../../projects/systelab-components/src/lib/datepicker/datepicker-time.component.html","../../../projects/systelab-components/src/lib/select/select.component.ts","../../../projects/systelab-components/src/lib/tooltip/tooltip.directive.ts","../../../projects/systelab-components/src/lib/applicationframe/sidebar/app-sidebar-small.component.ts","../../../projects/systelab-components/src/lib/applicationframe/sidebar/app-sidebar-small.component.html","../../../projects/systelab-components/src/lib/applicationframe/application-frame.component.ts","../../../projects/systelab-components/src/lib/applicationframe/application-frame.component.html","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-context-menu-action-data.ts","../../../projects/systelab-components/src/lib/grid/abstract-grid.component.ts","../../../projects/systelab-components/src/lib/grid/abstract-api-grid.component.ts","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-context-menu-component.ts","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-header-context-menu.component.ts","../../../projects/systelab-components/src/lib/searcher/searcher.table.component.ts","../../../projects/systelab-components/src/lib/grid/abstract-grid.component.html","../../../projects/systelab-components/src/lib/directives/keyup-debounce.directive.ts","../../../projects/systelab-components/src/lib/searcher/searcher.dialog.component.ts","../../../projects/systelab-components/src/lib/searcher/searcher.dialog.component.html","../../../projects/systelab-components/src/lib/calendar/calendar-header.component.ts","../../../projects/systelab-components/src/lib/calendar/calendar-header.component.html","../../../projects/systelab-components/src/lib/calendar/calendar-table.component.ts","../../../projects/systelab-components/src/lib/calendar/calendar-table.component.html","../../../projects/systelab-components/src/lib/calendar/calendar-footer.component.ts","../../../projects/systelab-components/src/lib/calendar/calendar-footer.component.html","../../../projects/systelab-components/src/lib/calendar/calendar-dialog.component.ts","../../../projects/systelab-components/src/lib/calendar/calendar-dialog.component.html","../../../projects/systelab-components/src/lib/loading/loading.component.ts","../../../projects/systelab-components/src/lib/loading/loading.component.html","../../../projects/systelab-components/src/lib/toggle-button/toggle-button.component.ts","../../../projects/systelab-components/src/lib/toggle-button/toggle-button.component.html","../../../projects/systelab-components/src/lib/file-selector/file-selector.component.ts","../../../projects/systelab-components/src/lib/file-selector/file-selector.component.html","../../../projects/systelab-components/src/lib/timeline/timeline.component.ts","../../../projects/systelab-components/src/lib/timeline/timeline.component.html","../../../projects/systelab-components/src/lib/navbar/navbar.component.ts","../../../projects/systelab-components/src/lib/navbar/navbar.component.html","../../../projects/systelab-components/src/lib/modal/message-popup/message-with-icon.component.ts","../../../projects/systelab-components/src/lib/modal/message-popup/message-with-icon.component.html","../../../projects/systelab-components/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/systelab-components/src/lib/breadcrumb/breadcrumb.component.html","../../../projects/systelab-components/src/lib/week-selector/week-selector.component.ts","../../../projects/systelab-components/src/lib/week-selector/week-selector.component.html","../../../projects/systelab-components/src/lib/month-selector/month-selector.component.ts","../../../projects/systelab-components/src/lib/month-selector/month-selector.component.html","../../../projects/systelab-components/src/lib/signature-canvas/signature-canvas.component.ts","../../../projects/systelab-components/src/lib/signature-canvas/signature-canvas.component.html","../../../projects/systelab-components/src/lib/percentage-circle/percentage-circle.component.ts","../../../projects/systelab-components/src/lib/percentage-circle/percentage-circle.component.html","../../../projects/systelab-components/src/lib/loading/loading.service.ts","../../../projects/systelab-components/src/lib/select/time-unit-combobox.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/checkbox/checkbox-cell-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/checkbox/checkbox-cell-renderer.component.html","../../../projects/systelab-components/src/lib/wizard-steps/wizard-steps.component.ts","../../../projects/systelab-components/src/lib/wizard-steps/wizard-steps.component.html","../../../projects/systelab-components/src/lib/grid/custom-cells/spinner/spinner-cell-editor.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/spinner/spinner-cell-editor.component.html","../../../projects/systelab-components/src/lib/grid/custom-cells/spinner/spinner-cell-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/input/input-cell-editor.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/input/input-cell-editor.component.html","../../../projects/systelab-components/src/lib/grid/custom-cells/checkbox/checkbox-cell-editor.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/checkbox/checkbox-cell-editor.component.html","../../../projects/systelab-components/src/lib/grid/custom-cells/decimal-input/decimal-input-cell-editor.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/decimal-input/decimal-input-cell-editor.component.html","../../../projects/systelab-components/src/lib/listbox/renderer/abstract-tree-listbox-renderer.component.ts","../../../projects/systelab-components/src/lib/listbox/renderer/abstract-tree-listbox-renderer.component.html","../../../projects/systelab-components/src/lib/listbox/abstract-listbox.component.ts","../../../projects/systelab-components/src/lib/listbox/gender-listbox.component.ts","../../../projects/systelab-components/src/lib/listbox/abstract-listbox.component.html","../../../projects/systelab-components/src/lib/numpad/numpad.dialog.component.ts","../../../projects/systelab-components/src/lib/numpad/numpad.dialog.component.html","../../../projects/systelab-components/src/lib/directives/autofocus.directive.ts","../../../projects/systelab-components/src/lib/numpad/numpad.component.ts","../../../projects/systelab-components/src/lib/numpad/numpad.component.html","../../../projects/systelab-components/src/lib/listbox/listbox.component.ts","../../../projects/systelab-components/src/lib/contextpanel/context-panel.component.ts","../../../projects/systelab-components/src/lib/contextpanel/context-panel.component.html","../../../projects/systelab-components/src/lib/date-range-picker/date-range-picker.component.ts","../../../projects/systelab-components/src/lib/date-range-picker/date-range-picker.component.html","../../../projects/systelab-components/src/lib/modal/message-popup/message-popup-view.component.ts","../../../projects/systelab-components/src/lib/modal/message-popup/message-popup-view.component.html","../../../projects/systelab-components/src/lib/paginator/paginator-page.component.ts","../../../projects/systelab-components/src/lib/paginator/paginator-page.component.html","../../../projects/systelab-components/src/lib/paginator/paginator.component.ts","../../../projects/systelab-components/src/lib/paginator/paginator.component.html","../../../projects/systelab-components/src/lib/modal/message-popup/message-popup.service.ts","../../../projects/systelab-components/src/lib/chip-button/chip-button.component.ts","../../../projects/systelab-components/src/lib/chip-button/chip-button.component.html","../../../projects/systelab-components/src/lib/grid/custom-cells/stacked-bar/stacked-bar-cell-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/stacked-bar/stacked-bar-cell-renderer.component.html","../../../projects/systelab-components/src/lib/chips/chips.component.ts","../../../projects/systelab-components/src/lib/chips/chips.component.html","../../../projects/systelab-components/src/lib/spy-menu/spy-menu.component.ts","../../../projects/systelab-components/src/lib/spy-menu/spy-menu.component.html","../../../projects/systelab-components/src/lib/spy-menu/scroll-spy.directive.ts","../../../projects/systelab-components/src/lib/toast/toast-animation.ts","../../../projects/systelab-components/src/lib/toast/toast-config.ts","../../../projects/systelab-components/src/lib/toast/toast-ref.ts","../../../projects/systelab-components/src/lib/toast/toast.service.ts","../../../projects/systelab-components/src/lib/toast/toast.component.ts","../../../projects/systelab-components/src/lib/toast/toast.component.html","../../../projects/systelab-components/src/lib/toggle-selector/toggle-selector.component.ts","../../../projects/systelab-components/src/lib/toggle-selector/toggle-selector.component.html","../../../projects/systelab-components/src/lib/slider-double-range/slider-double-range.component.ts","../../../projects/systelab-components/src/lib/slider-double-range/slider-double-range.component.html","../../../projects/systelab-components/src/lib/directives/draggable.directive.ts","../../../projects/systelab-components/src/lib/directives/resizable.directive.ts","../../../projects/systelab-components/src/lib/image-viewer/image-viewer.component.ts","../../../projects/systelab-components/src/lib/image-viewer/image-viewer.component.html","../../../projects/systelab-components/src/lib/helper/translation-helper.ts","../../../projects/systelab-components/src/lib/helper/number-helper.ts","../../../projects/systelab-components/src/lib/directives/numpad-decimal-numeric.directive.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/positive-integer/positive-integer-input-cell-editor.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/positive-integer/positive-integer-input-cell-editor.component.html","../../../projects/systelab-components/src/lib/directives/test-id.directive.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/searcher-tree-header/searcher-tree-header-renderer.component.ts","../../../projects/systelab-components/src/lib/grid/custom-cells/searcher-tree-header/searcher-tree-header-renderer.component.html","../../../projects/systelab-components/src/lib/accordion/accordion.component.ts","../../../projects/systelab-components/src/lib/accordion/accordion.component.html","../../../projects/systelab-components/src/lib/systelab-components.module.ts","../../../projects/systelab-components/src/lib/contextmenu/abstract-context-menu-option.ts","../../../projects/systelab-components/src/lib/contextmenu/context-menu-option.ts","../../../projects/systelab-components/src/lib/applicationframe/sidebar/app-sidebar.component.ts","../../../projects/systelab-components/src/lib/searcher/searcher.dialog.parameters.ts","../../../projects/systelab-components/src/lib/searcher/abstract-searcher.ts","../../../projects/systelab-components/src/lib/searcher/abstract-generic.searcher.component.ts","../../../projects/systelab-components/src/lib/searcher/abstract-searcher.component.ts","../../../projects/systelab-components/src/lib/combobox/abstract-api-combobox.component.ts","../../../projects/systelab-components/src/lib/combobox/autocomplete/autocomplete-api-combobox.component.ts","../../../projects/systelab-components/src/lib/combobox/tree/abstract-api-tree-combobox.component.ts","../../../projects/systelab-components/src/lib/grid/contextmenu/grid-context-menu-option.ts","../../../projects/systelab-components/src/lib/listbox/abstract-api-listbox.component.ts","../../../projects/systelab-components/src/lib/listbox/abstract-api-tree-listbox.component.ts","../../../projects/systelab-components/src/lib/add-remove-list/abstract-add-remove-list.component.ts","../../../projects/systelab-components/src/lib/tree/tree-node.ts","../../../projects/systelab-components/src/lib/tree/abstract-tree.component.ts","../../../projects/systelab-components/src/lib/spy-menu/spy-menu-item.ts","../../../projects/systelab-components/src/lib/forms/validators/email-validator.directive.ts","../../../projects/systelab-components/src/lib/forms/validators/phone-validator.directive.ts","../../../projects/systelab-components/src/lib/forms/validators/url-validator.directive.ts","../../../projects/systelab-components/src/lib/theme/theme.config.ts","../../../projects/systelab-components/src/lib/theme/theme.service.ts","../../../projects/systelab-components/src/public-api.ts","../../../projects/systelab-components/src/systelab-components.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\n\n@Component({\n 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 #range type=\"range\" min=\"{{ min }}\" max=\"{{ max }}\" value=\"{{ value }}\" step=\"{{ step }}\"\n (change)=\"sliderChangeEvent($event)\" (input)=\"sliderInputEvent($event)\" class=\"slab-slider\" id=\"myRange\" />","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Component({\n 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.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, GridOptions } from 'ag-grid-community';\n\nexport interface CalculatedGridState {\n\tminRow: number;\n\tmaxRow: number;\n\ttop: number | undefined;\n\tcalculatedDisplayedCols: string[];\n\tautoSizeColumnsToContent: boolean;\n}\n\nexport function initializeCalculatedGridState(autoSizeColumnsToContent: boolean = true): CalculatedGridState {\n\treturn {\n\t\tminRow: -1,\n\t\tmaxRow: -1,\n\t\ttop: undefined,\n\t\tcalculatedDisplayedCols: [],\n\t\tautoSizeColumnsToContent: autoSizeColumnsToContent\n\t};\n}\n\nexport class AutosizeGridHelper {\n\n\tprivate static itWasPreviouslyCalculated(event: any, gridState: CalculatedGridState, 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 { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\nimport { GetRowIdParams, GridApi, GridOptions, GridReadyEvent, RowSelectedEvent, RowSelectionOptions } from 'ag-grid-community';\nimport { StylesUtilService } from '../utilities/styles.util.service';\nimport { ComboboxFavouriteRendererComponent } from './renderer/combobox-favourite-renderer.component';\nimport { PreferencesService } from 'systelab-preferences';\nimport { AutosizeGridHelper, CalculatedGridState, initializeCalculatedGridState } from '../helper/autosize-grid-helper';\n\ndeclare var jQuery: any;\n\n@Directive()\nexport abstract class AbstractComboBox<T> implements AgRendererComponent, OnInit, OnDestroy {\n\n\tpublic static ROW_HEIGHT = -1;\n\tpublic static DROPDOWN_MENU_MARGIN = 16;\n\n\t@ViewChild('input', {static: false}) public input: ElementRef;\n\t@ViewChild('filterInput', {static: false}) public filterInput: ElementRef;\n\n\tpublic comboId: string = (Math.floor(Math.random() * (999999999999 - 1))).toString();\n\n\t@Input() public customInputRenderer: any;\n\t@Input() public initialParams: any;\n\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}\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): string | number | undefined {\n\t\tconst id = this.getIdField();\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 this.getIdField() === '' ? '' : item.data ? item.data?.[this.getIdField()] : '';\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\t\t\tif(this.gridApi?.getDisplayedRowCount() > 0) {\n\t\t\t\t// scrolls to the first row\n\t\t\t\tthis.gridApi?.ensureIndexVisible(0);\n\t\t\t}\n\n\t\t\t// scrolls to the first column\n\t\t\tconst firstCol = this.gridApi?.getColumns()?.filter(col => col.isVisible())[0];\n\t\t\tthis.gridApi?.ensureColumnVisible(firstCol);\n\n\t\t\t// sets focus into the first grid cell\n\t\t\tthis.gridApi?.setFocusedCell(0, 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', ['$event'])\n\tpublic onResize() {\n\t\tif (this.isDropDownOpen()) {\n\t\t\tthis.closeDropDown();\n\t\t}\n\t\tconst parentWidth = this.comboboxElement.nativeElement.offsetWidth;\n\t\tthis.myRenderer.setStyle(this.dropdownElement.nativeElement, 'width', parentWidth + 'px');\n\t\tthis.windowResized = true;\n\t}\n\n\tprotected isComboBoxScrolling(element: HTMLElement): boolean {\n\t\tif (element.id === this.dropdownElement.nativeElement.id) {\n\t\t\treturn true;\n\t\t} else if (element.parentElement) {\n\t\t\treturn this.isComboBoxScrolling(element.parentElement);\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected scroll(event) {\n\t\tif (!this.isComboBoxScrolling(event.target)) {\n\t\t\tthis.closeDropDown();\n\t\t}\n\t}\n\n\tprotected addWindowScrollHandler() {\n\t\tthis.windowScrollHandler = this.scroll.bind(this);\n\t\twindow.addEventListener('scroll', this.windowScrollHandler, true);\n\t}\n\n\tprotected removeWindowScrollHandler() {\n\t\twindow.removeEventListener('scroll', this.windowScrollHandler, true);\n\t}\n\n\tprotected addGridScrollHandler() {\n\t\tif(this.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\">×</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 {\n\tAfterViewInit,\n\tComponent,\n\tDoCheck,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tRenderer2,\n\tViewChild\n} from '@angular/core';\nimport { addDays } from 'date-fns';\nimport { PrimeNGConfig } from 'primeng/api';\nimport { Calendar } from 'primeng/calendar';\nimport { I18nService } from 'systelab-translate';\nimport { DataTransformerService } from './date-transformer.service';\n\n@Component({\n selector: 'systelab-datepicker',\n templateUrl: 'datepicker.component.html',\n providers: [DataTransformerService],\n standalone: false\n})\nexport class DatepickerComponent implements OnInit, AfterViewInit, DoCheck, OnDestroy {\n\n\t@Input() public disabled = false;\n\t@Input() public error = false;\n\t@Input() public required = false;\n\t@Input() public inputExpandHeight: boolean;\n\t@Input() public markPreviousAfterDate = false;\n\t@Input() public inputFontSize: number;\n\t@Input() public showTodayButton = false;\n\t@Input() public inline = false;\n\t@Input() public minDate: Date;\n\t@Input() public maxDate: Date;\n\t@Input() public warnDaysBefore: number;\n\t@Input() public warnDaysAfter: number;\n\t@Input() public autofocus = false;\n\t@Input() public fromDateForRelativeDates: Date;\n\t@Input() public tabindex: number;\n\t@Input() public withIntegratedTime = false;\n\t@Input() public onlyTime = false;\n\t@Input() public showOtherMonths = true;\n\t@Input() public selectOtherMonths = false;\n\t@Input() public dateFormat: string;\n\n\t@Input()\n\tget currentDate(): Date {\n\t\treturn this._currentDate;\n\t}\n\n\tset currentDate(value: Date) {\n\t\tthis._currentDate = value;\n\t\tif (this.markPreviousAfterDate || (this.warnDaysBefore && this.warnDaysBefore > 0)) {\n\n\t\t\tif (!this.warnDaysBefore) {\n\t\t\t\tthis.warnDaysBefore = 1;\n\t\t\t}\n\n\t\t\tthis.checkPreviousAfterDate();\n\t\t}\n\t\tif (this.warnDaysAfter && this.warnDaysAfter > 0) {\n\t\t\tthis.checkTooFarDate();\n\t\t}\n\t}\n\n\t@Output() public currentDateChange = new EventEmitter<Date>();\n\n\t@ViewChild('calendar', {static: true}) public currentCalendar: Calendar;\n\n\tpublic inputChanged = false;\n\tprotected _currentDate: Date;\n\tpublic previousAfterDate = false;\n\tpublic tooFarDate = false;\n\tpublic language: any;\n\n\tpublic currentDocSize: number;\n\tpublic currentLanguage: string;\n\t// eslint-disable-next-line @typescript-eslint/ban-types\n\tpublic destroyWheelListener: Function;\n\t// eslint-disable-next-line @typescript-eslint/ban-types\n\tpublic destroyKeyListener: Function;\n\tpublic inputElement: ElementRef;\n\tpublic focusEvt: FocusEvent;\n\tpublic isTablet = false;\n\tpublic datepickerId: string = (Math.random() * (999999999999 - 1)).toString();\n\tpublic formatError: boolean;\n\n\tprivate headerElement: any = document.getElementById(this.datepickerId);\n\n\tconstructor(protected myRenderer: Renderer2, protected i18nService: I18nService, protected dataTransformerService: DataTransformerService, protected config: PrimeNGConfig) {\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis.getLanguage();\n\n\t\tthis.currentDocSize = window.innerWidth;\n\t\tthis.currentLanguage = this.i18nService.getCurrentLanguage();\n\n\t\tthis.addListeners();\n\t\tif (navigator.userAgent.indexOf('iPad') > -1 || navigator.userAgent.indexOf('Android') > -1) {\n\t\t\tthis.isTablet = true;\n\t\t}\n\t}\n\n\tpublic ngAfterViewInit() {\n\t\tconst newElement = document.createElement('i');\n\t\tif (!this.inline) {\n\t\t\tnewElement.className = this.onlyTime ? 'icon-clock' : 'icon-calendar';\n\t\t\tif (this.currentCalendar) {\n\t\t\t\tif (this.autofocus) {\n\t\t\t\t\tthis.currentCalendar.el.nativeElement.querySelector('input')\n\t\t\t\t\t\t.focus();\n\t\t\t\t}\n\t\t\t\tthis.currentCalendar.el.nativeElement.childNodes[0].className = 'p-calendar slab-form-icon w-100';\n\t\t\t\tthis.currentCalendar.el.nativeElement.childNodes[0].appendChild(newElement);\n\t\t\t}\n\t\t}\n\t\tif (this.tabindex) {\n\t\t\tthis.currentCalendar.el.nativeElement.querySelector('input')\n\t\t\t\t.setAttribute('tabindex', this.tabindex);\n\t\t}\n\n\t}\n\n\tpublic ngDoCheck() {\n\t\tif (window.innerWidth !== this.currentDocSize) {\n\t\t\tthis.currentDocSize = window.innerWidth;\n\t\t\tthis.closeDatepicker();\n\t\t}\n\n\t\tif (this.headerElement !== document.getElementById(this.datepickerId)) {\n\t\t\tthis.headerElement = document.getElementById(this.datepickerId);\n\t\t\tif (this.headerElement) {\n\t\t\t\tthis.repositionateCalendar(new ElementRef(this.headerElement.parentElement.parentElement));\n\t\t\t}\n\t\t}\n\n\t\tif (this.currentLanguage !== this.i18nService.getCurrentLanguage()) {\n\t\t\tthis.currentLanguage = this.i18nService.getCurrentLanguage();\n\t\t\tthis.getLanguage();\n\t\t}\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis.destroyKeyListener?.();\n\t\tthis.destroyWheelListener?.();\n\t}\n\n\tpublic selectDate(): void {\n\t\tthis.formatError = false;\n\t\tthis.currentDateChange.emit(this.currentDate);\n\t\tthis.inputChanged = false;\n\t}\n\n\tpublic changeDate(): void {\n\t\tthis.formatError = false;\n\t\tif (this.currentCalendar?.inputfieldViewChild.nativeElement.value !== undefined) {\n\t\t\tconst dateStr = this.currentCalendar.inputfieldViewChild.nativeElement.value.trim()\n\t\t\t\t.toLowerCase();\n\t\t\tif (this.inputChanged) {\n\t\t\t\tif (dateStr.length >= 2) {\n\t\t\t\t\tconst transformedDate = this.dataTransformerService.processShortcuts(dateStr, this.fromDateForRelativeDates);\n\t\t\t\t\tif (transformedDate) {\n\t\t\t\t\t\tthis.currentDate = transformedDate;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.onlyTime || this.withIntegratedTime) {\n\t\t\t\t\t\t\tconst splitDateByHours = dateStr.split(':');\n\t\t\t\t\t\t\tif (!this.onlyTime) {\n\t\t\t\t\t\t\t\tswitch (splitDateByHours.length) {\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tthis.infereDate(dateStr);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tconst hourPosition = splitDateByHours[0].length-2;\n\t\t\t\t\t\t\t\t\t\tconst dateString = splitDateByHours[0].substring(0, hourPosition);\n\t\t\t\t\t\t\t\t\t\tthis.infereDate(dateString);\n\t\t\t\t\t\t\t\t\t\tthis.parseTime(+splitDateByHours[0].substring(hourPosition), +splitDateByHours[1]);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthis.formatError = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst hour = +splitDateByHours[0];\n\t\t\t\t\t\t\t\tconst minute = +splitDateByHours[1];\n\t\t\t\t\t\t\t\tthis.currentDate = new Date();\n\t\t\t\t\t\t\t\tthis.parseTime(hour, minute);\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.infereDate(dateStr);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.currentDateChange.emit(this.currentDate);\n\t\t\t\tthis.inputChanged = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate parseTime(hour: number, minute: number): void {\n\t\tconst isValidHour = hour >= 0 && hour <= 23;\n\t\tconst isValidMinute = minute >= 0 && minute <= 59;\n\t\tif (!isValidHour || !isValidMinute) {\n\t\t\tthis.formatError = true;\n\t\t} else {\n\t\t\tthis.currentDate.setHours(hour, minute);\n\t\t}\n\t}\n\n\tprivate infereDate(dateStr: string): void {\n\t\tconst inferedDate = this.dataTransformerService.infereDate(dateStr, this.i18nService.getDateFormatForDatePicker());\n\t\tif (inferedDate) {\n\t\t\tthis.currentDate = inferedDate;\n\t\t} else {\n\t\t\tthis.formatError = true;\n\t\t}\n\t}\n\n\tpublic onInput(event: KeyboardEvent) {\n\t\tif (event.code === 'Enter' || event.code === 'Tab') {\n\t\t\tthis.currentCalendar.inputfieldViewChild.nativeElement.blur();\n\t\t\tthis.currentCalendar.onBlur.emit(event);\n\t\t\tthis.closeDatepicker();\n\t\t} else {\n\t\t\tthis.inputChanged = true;\n\t\t}\n\t}\n\n\tpublic saveEventOnFocus(evt: FocusEvent): void {\n\t\tthis.inputElement = new ElementRef(evt.target);\n\t\tthis.focusEvt = evt;\n\t}\n\n\tpublic repositionateCalendar(element?: ElementRef): void {\n\n\t\ttry {\n\t\t\tconst { inputElementTop, inputElementHeight, datepickerElementHeight } = this.inputElement.nativeElement.getBoundingClientRect();\n\t\t\tif (inputElementTop + inputElementHeight + datepickerElementHeight > window.innerHeight) {\n\t\t\t\tconst newTop: number = inputElementTop + inputElementHeight - (datepickerElementHeight + inputElementHeight + 10);\n\t\t\t\tthis.myRenderer.setAttribute(element.nativeElement, 'top', newTop + 'px');\n\t\t\t}\n\t\t} catch (ex) {\n\t\t}\n\t}\n\n\tpublic nextMonth(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tlet month = this.currentCalendar.currentMonth;\n\t\t\tif (month < 11) {\n\t\t\t\tmonth++;\n\t\t\t\tthis.currentCalendar.onMonthDropdownChange(month.toString());\n\t\t\t} else {\n\t\t\t\tmonth = 0;\n\t\t\t\tlet year = this.currentCalendar.currentYear;\n\t\t\t\tyear++;\n\t\t\t\tthis.currentCalendar.onMonthDropdownChange(month.toString());\n\t\t\t\tthis.currentCalendar.onYearDropdownChange(year.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic prevMonth(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tlet month = this.currentCalendar.currentMonth;\n\t\t\tif (month > 0) {\n\t\t\t\tmonth--;\n\t\t\t\tthis.currentCalendar.onMonthDropdownChange(month.toString());\n\t\t\t} else {\n\t\t\t\tmonth = 11;\n\t\t\t\tlet year = this.currentCalendar.currentYear;\n\t\t\t\tyear--;\n\t\t\t\tthis.currentCalendar.onMonthDropdownChange(month.toString());\n\t\t\t\tthis.currentCalendar.onYearDropdownChange(year.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic nextYear(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tconst currentYear = this.currentCalendar.currentYear + 1;\n\t\t\tthis.currentCalendar.onYearDropdownChange(currentYear.toString());\n\t\t}\n\t}\n\n\tpublic prevYear(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tconst currentYear = this.currentCalendar.currentYear - 1;\n\t\t\tthis.currentCalendar.onYearDropdownChange(currentYear.toString());\n\t\t}\n\t}\n\n\tpublic clearDate(event): void {\n\t\tif (this.currentCalendar) {\n\t\t\tthis.currentDate = null;\n\t\t\tthis.currentCalendar.onClearButtonClick(event);\n\t\t\tthis.currentDateChange.emit(this.currentDate);\n\t\t\tthis.inputChanged = false;\n\t\t}\n\t}\n\n\tpublic setTodayDate(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tthis.currentDate = new Date();\n\t\t\tthis.currentDateChange.emit(this.currentDate);\n\t\t\tthis.inputChanged = false;\n\t\t}\n\t}\n\n\tpublic closeDatepicker(): void {\n\t\tif (this.currentCalendar) {\n\t\t\tthis.currentCalendar.focus = false;\n\t\t\tthis.currentCalendar.overlayVisible = false;\n\t\t}\n\t}\n\n\tprivate checkPreviousAfterDate(): void {\n\t\tif (this._currentDate) {\n\t\t\tthis._currentDate.setHours(0, 0, 0, 0);\n\t\t\tconst pastDate = addDays(new Date(), this.warnDaysBefore * -1);\n\t\t\tpastDate.setHours(0, 0, 0, 0);\n\t\t\tthis.previousAfterDate = this._currentDate.getTime() <= pastDate.getTime();\n\t\t} else {\n\t\t\tthis.previousAfterDate = false;\n\t\t}\n\t}\n\n\tprivate checkTooFarDate() {\n\t\tif (this._currentDate) {\n\t\t\tthis._currentDate.setHours(0, 0, 0, 0);\n\t\t\tconst futureDate = addDays(new Date(), this.warnDaysAfter);\n\t\t\tthis.tooFarDate = this._currentDate.getTime() >= futureDate.getTime();\n\t\t} else {\n\t\t\tthis.tooFarDate = false;\n\t\t}\n\t}\n\n\tprivate getLanguage(): void {\n\n\t\tconst weekDaysNames: Array<string> = [];\n\t\tconst weekDaysNamesShort: Array<string> = [];\n\t\tconst monthNames: Array<string> = [];\n\t\tconst monthNamesShort: Array<string> = [];\n\t\t/* eslint-disable max-len */\n\t\tthis.i18nService.get(['COMMON_SUNDAY', 'COMMON_MONDAY', 'COMMON_TUESDAY', 'COMMON_WEDNESDAY', 'COMMON_THURSDAY', 'COMMON_FRIDAY', 'COMMON_SATURDAY'])\n\t\t\t.subscribe((res) => {\n\t\t\t\tweekDaysNames.push(res.COMMON_SUNDAY, res.COMMON_MONDAY, res.COMMON_TUESDAY, res.COMMON_WEDNESDAY, res.COMMON_THURSDAY, res.COMMON_FRIDAY, res.COMMON_SATURDAY);\n\t\t\t});\n\n\t\tthis.i18nService.get(['COMMON_SEVENTH_DAY', 'COMMON_FIRST_DAY', 'COMMON_SECOND_DAY', 'COMMON_THIRD_DAY', 'COMMON_FOURTH_DAY', 'COMMON_FIFTH_DAY', 'COMMON_SIXTH_DAY'])\n\t\t\t.subscribe((res) => {\n\t\t\t\tweekDaysNamesShort.push(res.COMMON_SEVENTH_DAY, res.COMMON_FIRST_DAY, res.COMMON_SECOND_DAY, res.COMMON_THIRD_DAY, res.COMMON_FOURTH_DAY, res.COMMON_FIFTH_DAY, res.COMMON_SIXTH_DAY);\n\t\t\t});\n\n\t\tthis.i18nService.get(['COMMON_JANUARY', 'COMMON_FEBRUARY', 'COMMON_MARCH', 'COMMON_APRIL', 'COMMON_MAY', 'COMMON_JUNE', 'COMMON_JULY', 'COMMON_AUGUST', 'COMMON_SEPTEMBER', 'COMMON_OCTOBER', 'COMMON_NOVEMBER', 'COMMON_DECEMBER'])\n\t\t\t.subscribe((res) => {\n\t\t\t\tmonthNames.push(res.COMMON_JANUARY, res.COMMON_FEBRUARY, res.COMMON_MARCH, res.COMMON_APRIL, res.COMMON_MAY, res.COMMON_JUNE, res.COMMON_JULY, res.COMMON_AUGUST, res.COMMON_SEPTEMBER, res.COMMON_OCTOBER, res.COMMON_NOVEMBER, res.COMMON_DECEMBER);\n\t\t\t});\n\n\t\tthis.i18nService.get(['JOB_MONTHS_1', 'JOB_MONTHS_2', 'JOB_MONTHS_3', 'JOB_MONTHS_4', 'JOB_MONTHS_5', 'JOB_MONTHS_6', 'JOB_MONTHS_7', 'JOB_MONTHS_8', 'JOB_MONTHS_9', 'JOB_MONTHS_10', 'JOB_MONTHS_11', 'JOB_MONTHS_12'])\n\t\t\t.subscribe((res) => {\n\t\t\t\tmonthNamesShort.push(res.JOB_MONTHS_1, res.JOB_MONTHS_2, res.JOB_MONTHS_3, res.JOB_MONTHS_4, res.JOB_MONTHS_5, res.JOB_MONTHS_6, res.JOB_MONTHS_7, res.JOB_MONTHS_8, res.JOB_MONTHS_9, res.JOB_MONTHS_10, res.JOB_MONTHS_11, res.JOB_MONTHS_12);\n\t\t\t});\n\n\t\tthis.language = {\n\t\t\ttranslations: {\n\t\t\t\tdayNames: weekDaysNames,\n\t\t\t\tdayNamesShort: weekDaysNamesShort,\n\t\t\t\tdayNamesMin: weekDaysNamesShort,\n\t\t\t\tmonthNames: monthNames,\n\t\t\t\tmonthNamesShort: monthNamesShort\n\t\t\t}\n\t\t};\n\n\t\tthis.language.firstDayOfWeek = this.i18nService.getFirstDayOfWeek();\n\n\t\tthis.language.dateFormatValue = this.dateFormat ? this.dateFormat : this.i18nService.getDateFormatForDatePicker(true);\n\t\tif (this.currentCalendar) {\n\t\t\tthis.currentCalendar.dateFormat = this.dateFormat || this.language.dateFormatValue;\n\t\t}\n\n\t\tthis.config.setTranslation(this.language.translations);\n\t}\n\n\tprivate addListeners(): void {\n\t\tthis.destroyWheelListener = this.myRenderer.listen('window', 'wheel', () => {\n\t\t\tthis.closeDatepicker();\n\t\t});\n\n\t\tthis.destroyKeyListener = this.myRenderer.listen('document', 'keydown', (evt: KeyboardEvent) => {\n\t\t\tif (evt.key === 'Escape' || evt.key === 'Tab') {\n\t\t\t\tthis.closeDatepicker();\n\t\t\t}\n\t\t});\n\t}\n}\n","<p-calendar #calendar [(ngModel)]=\"currentDate\" [showIcon]=\"false\"\n [dateFormat]=\"language.dateFormatValue\"\n [firstDayOfWeek]=\"language.firstDayOfWeek\"\n (onFocus)=\"saveEventOnFocus($event)\"\n (onBlur)=\"changeDate()\"\n (onSelect)=\"selectDate()\"\n (onInput)=\"onInput($event)\"\n [showOtherMonths]=\"showOtherMonths\"\n [selectOtherMonths]=\"selectOtherMonths\"\n [minDate]=\"minDate\"\n [focusTrap]=\"false\"\n [maxDate]=\"maxDate\"\n [inline]=\"inline\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonlyInput]=\"isTablet\"\n [style.font-size.px]=\"inputFontSize\"\n [showTime]=\"withIntegratedTime\"\n [timeOnly]=\"onlyTime\"\n [showTransitionOptions]=\"'1ms linear'\"\n [hideTransitionOptions]=\"'1ms linear'\"\n appendTo=\"body\"\n [tabindex]=\"tabindex\"\n [ngClass]=\"{'date-error': formatError || error || (required && !currentDate), 'is-disabled': disabled, 'warning-date': tooFarDate || previousAfterDate, 'input-expand-height':inputExpandHeight}\">\n @if (!onlyTime) {\n <ng-template pTemplate=\"header\">\n <div id=\"{{datepickerId}}\" class=\"slab-datepicker-header\">\n <a id=\"previousYear\" class=\"icon-angle-double-left slab-icon-medium\" (click)=\"prevYear()\"></a>\n <a id=\"previousMonth\" class=\"icon-angle-left slab-icon-medium\" (click)=\"prevMonth()\"></a>\n <a id=\"nextYear\" class=\"icon-angle-double-right slab-icon-medium\" (click)=\"nextYear()\"></a>\n <a id=\"nextMonth\" class=\"icon-angle-right slab-icon-medium\" (click)=\"nextMonth()\"></a>\n <div class=\"p-datepicker-title d-flex align-items-center justify-content-center\">\n <span class=\"p-datepicker-month\">{{ language.translations.monthNames[currentCalendar.currentMonth] }} </span>\n <span class=\"p-datepicker-year\">{{ currentCalendar.currentYear }}</span>\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-calendar>\n\n","export class TouchSpinValues {\n\n\tconstructor( public value: number, public min: number, public max: number, public step: number = 1, public isDecimal: boolean = true, public precision = 2 ) {\n\t}\n\n\tpublic getPrecision(): number {\n\t\treturn (this.isDecimal) ? this.precision : 0;\n\t}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TouchSpinValues } from './touch.spin-values';\n\n@Component({\n 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 { PrimeNGConfig } from 'primeng/api';\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: PrimeNGConfig) {\n\t\tsuper(myRenderer, i18nService, dataTransformerService, config);\n\n\t\tthis.touchSpinHourValues = new TouchSpinValues(0, 0, 23, 1);\n\t\tthis.touchSpinMinutesValues = new TouchSpinValues(0, 0, 59, 1);\n\t}\n\n\toverride set currentDate(value: Date) {\n\t\tthis._currentDate = value;\n\t\tif(this.withIntegratedTime){\n\t\t\tthis.currentDateChange.emit(this._currentDate);\n\t\t} else if (this._currentDate) {\n\t\t\tif (this.resetTimeWhenChangingCurrentDate) {\n\t\t\t\tthis.touchSpinHourValues.value = this._currentDate.getHours();\n\t\t\t\tthis.touchSpinMinutesValues.value = this._currentDate.getMinutes();\n\t\t\t} else {\n\t\t\t\tif (this._currentDate.getHours() === 0 || this.touchSpinHourValues.value !== 0) {\n\t\t\t\t\tthis._currentDate.setHours(this.touchSpinHourValues.value);\n\t\t\t\t} else {\n\t\t\t\t\tthis.touchSpinHourValues.value = this._currentDate.getHours();\n\t\t\t\t}\n\t\t\t\tif (this._currentDate.getMinutes() === 0 || this.touchSpinMinutesValues.value !== 0) {\n\t\t\t\t\tthis._currentDate.setMinutes(this.touchSpinMinutesValues.value);\n\t\t\t\t} else {\n\t\t\t\t\tthis.touchSpinMinutesValues.value = this._currentDate.getMinutes();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.touchSpinHourValues.value = 0;\n\t\t\tthis.touchSpinMinutesValues.value = 0;\n\t\t\tthis.currentHoursChanged(0);\n\t\t\tthis.currentMinutesChanged(0);\n\t\t}\n\t}\n\n\tpublic currentHoursChanged(value: number) {\n\t\tif (this._currentDate) {\n\t\t\tthis._currentDate.setHours(value);\n\t\t\tthis.currentDateChange.emit(this._currentDate);\n\t\t}\n\t}\n\n\tpublic currentMinutesChanged(value: number) {\n\t\tif (this._currentDate) {\n\t\t\tthis._currentDate.setMinutes(value);\n\t\t\tthis.currentDateChange.emit(this._currentDate);\n\t\t}\n\t}\n}\n","<div class=\"d-flex\">\n @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 [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 { AfterViewInit, Directive, ElementRef, Input, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';\n\ndeclare var jQuery: any;\n\n@Directive({\n selector: '[systelabTooltip],[systelabTooltipHtml]',\n standalone: false\n})\nexport class TooltipDirective implements AfterViewInit, OnDestroy, OnChanges {\n\n\tpublic static readonly DEFAULT_PLACEMENT = 'top';\n\tpublic static readonly DEFAULT_DELAY = 1000;\n\n\t@Input() public systelabTooltip: string;\n\t@Input() public systelabTooltipHtml: string;\n\t@Input() public systelabTooltipPlacement: undefined | 'top' | 'right' | 'bottom' | 'left';\n\t@Input() public systelabTooltipDelay: number;\n\t@Input() public systelabTooltipHideDelay: number;\n\t@Input() public systelabTooltipOnFocus = true;\n\n\tconstructor(private el: ElementRef, private renderer: Renderer2) {\n\t}\n\n\tngAfterViewInit() {\n\t\tjQuery(this.el.nativeElement)\n\t\t\t.tooltip();\n\t}\n\n\tngOnDestroy() {\n\t\tjQuery(this.el.nativeElement)\n\t\t\t.tooltip('dispose');\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tthis.ngOnDestroy();\n\t\tthis.initializeTooltip();\n\t\tthis.ngAfterViewInit();\n\t}\n\n\tprivate initializeTooltip(): void {\n\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-toogle', 'tooltip');\n\t\tif (!this.systelabTooltipOnFocus) {\n\t\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-trigger', 'hover');\n\t\t}\n\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-boundary', 'viewport');\n\t\tif (this.systelabTooltipHtml) {\n\t\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-html', 'true');\n\t\t}\n\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-placement',\n\t\t\t(this.systelabTooltipPlacement) ? this.systelabTooltipPlacement : TooltipDirective.DEFAULT_PLACEMENT);\n\n\t\tconst tooltipShowDelay = `\"show\":${((this.systelabTooltipDelay) ? this.systelabTooltipDelay : TooltipDirective.DEFAULT_DELAY)}`;\n\t\tconst tooltipHideDelay = `\"hide\":${((this.systelabTooltipHideDelay) ? this.systelabTooltipHideDelay : TooltipDirective.DEFAULT_DELAY)}`;\n\t\tconst tooltipDelay = `{${tooltipShowDelay}, ${tooltipHideDelay}}`;\n\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-delay', tooltipDelay);\n\n\t\tthis.renderer.setAttribute(this.el.nativeElement, 'title', (this.systelabTooltipHtml) ? this.systelabTooltipHtml : (this.systelabTooltip ? this.systelabTooltip : ''));\n\n\t\tif (!this.systelabTooltipHtml && !this.systelabTooltip) {\n\t\t\tthis.renderer.setAttribute(this.el.nativeElement, 'title', '');\n\t\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-original-title', '');\n\t\t\tthis.renderer.setAttribute(this.el.nativeElement, 'data-html', 'false');\n\t\t}\n\t}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ApplicationSidebarAction, ApplicationSidebarTab } from './app-sidebar.component';\n\n\n@Component({\n 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 { ColDef, Column, GridApi, GridOptions, IsFullWidthRowParams, 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 = 'selectCol';\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() public rowData: Array<T> = [];\n\t@Input() public noRowsText;\n\t@Input() public loadingText;\n\t@Input() public removeSelectionOnOpenContextMenu = false;\n\t@Input() public autoSizeColumnsToContent = false;\n\n\t@Output() public action = new EventEmitter();\n\t@Output() public clickRow = new EventEmitter();\n\t@Output() public rowDragEnd = new EventEmitter();\n\t@Output() public viewportChanged = new EventEmitter();\n\t@Output() public rowSelected = new EventEmitter();\n\n\t@ViewChild('hidden', {static: true}) public hiddenElement: ElementRef;\n\t@ViewChild('popupmenu', {static: false}) public popupmenu: GridContextMenuComponent<T>;\n\t@ViewChild('headerpopupmenu', {static: false}) public headerPopupMenu: GridHeaderContextMenu<Object>;\n\n\tprotected firstSizeToFitExecuted = false;\n\tprivate calculatedGridState: CalculatedGridState;\n\tprivate scrollTimeout;\n\n\tprotected constructor(protected preferencesService: PreferencesService, protected i18nService: I18nService,\n\t\t\t\t\t\t protected dialogService: DialogService) {\n\t}\n\n\tpublic ngOnInit(): void {\n\n\t\tthis.gridOptions = this.getInitialGridOptions();\n\n\t\tif (this.noRowsText) {\n\t\t\tthis.overlayNoRowsTemplate = this.noRowsText;\n\t\t\tthis.overlayLoadingTemplate = this.loadingText;\n\t\t}\n\t\tthis.calculatedGridState = initializeCalculatedGridState(this.autoSizeColumnsToContent);\n\t}\n\n\tprotected getInitialGridOptions(): GridOptions {\n\t\tconst rowHeight = StylesUtilService.getStyleValue(this.hiddenElement, 'line-height');\n\t\tconst headerHeight = StylesUtilService.getStyleValue(this.hiddenElement, 'height');\n\n\t\tconst options: GridOptions = {};\n\t\toptions.columnDefs = this.getColumnDefsWithOptions();\n\t\toptions.selectionColumnDef = this.getCheckColumnDef(this.getCheckColumnWidth());\n\t\toptions.rowSelection = this.getRowSelectionType();\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};\n\t\toptions.localeText = {\n\t\t\tnoRowsToShow: this.i18nService.instant('COMMON_NO_ROWS_TO_SHOW'),\n\t\t\tloadingOoo: this.i18nService.instant('COMMON_LOADING')\n\t\t};\n\n\t\tif (this.hideHeader()) {\n\t\t\toptions.headerHeight = 0;\n\t\t}\n\n\t\toptions.isFullWidthRow = (isFullWidthRowParams: IsFullWidthRowParams) => this.getIsFullWidthRow(isFullWidthRowParams);\n\t\toptions.fullWidthCellRenderer = this.getFullWidthCellRenderer();\n\t\toptions.context = {componentParent: this};\n\t\toptions.onCellEditingStarted = (event) => this.onCellEditingStarted(event);\n\n\t\treturn options;\n\t}\n\n\tprotected onCellEditingStarted(event: any): void {\n\t\tthis.startCellEditorWithTab = event.event?.key === 'Tab';\n\t}\n\n\tpublic onModelUpdated(event: any) {\n\t\tif(this.gridApi) {\n\t\t\tthis.doAutoSizeManagement();\n\t\t}\n\t\treturn event;\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) {\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\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};\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\tcolId: AbstractGrid.selectionColId,\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 === 'selectCol') {\n\t\t\t\tevent.node.setSelected(!event.node.isSelected());\n\t\t\t} else {\n\t\t\t\tif (!event.column.isCellEditable(event.node)) {\n\t\t\t\t\tconst value = (event.event.ctrlKey && this.multipleSelection && !this.showChecks) ? event.event : event.data;\n\t\t\t\t\tthis.clickRow.emit(value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic doColumnResized(event: any): void {\n\t\tthis.saveColumnsStateInPreferences();\n\t}\n\n\tpublic doViewportChanged(): void {\n\t\tthis.viewportChanged.emit();\n\t}\n\n\tpublic doGridSizeChanged(event: any): void {\n\t\tif (this.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() !== 'selectCol')\n\t\t\t.map(column => new TwoListItem(column.getColDef().headerName, column.getColDef().colId, false, true));\n\n\t\toptions.defaultVisibleColumns = columnDefs.filter(column => !column.hide)\n\t\t\t.map(column => new TwoListItem(column.headerName, column.colId, false, true));\n\n\t\toptions.defaultHiddenColumns = columnDefs.filter(column => column.hide)\n\t\t\t.map(column => new TwoListItem(column.headerName, column.colId, false, false));\n\t\treturn options;\n\t}\n\n\tprotected applyGridColumnOptions(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() !== 'selectCol')\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: any): void {\n\t\tclearTimeout(this.scrollTimeout);\n\t\tthis.scrollTimeout = setTimeout(() => {\n\t\t\tthis.doAutoSizeManagement(event);\n\t\t}, 150);\n\t}\n\n\tprivate doAutoSizeManagement(event?: any) {\n\t\tthis.firstSizeToFitExecuted = true; \n\t\tAutosizeGridHelper.doAutoSizeManagement(this.calculatedGridState, this.gridApi, event);\n\t}\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { AbstractGrid } from './abstract-grid.component';\nimport { Observable } from 'rxjs';\nimport { GridOptions, IDatasource, IGetRowsParams } from 'ag-grid-community';\nimport { PreferencesService } from 'systelab-preferences';\nimport { I18nService } from 'systelab-translate';\nimport { DialogService } from '../modal/dialog/dialog.service';\n\n@Directive()\nexport abstract class AbstractApiGrid<T> extends AbstractGrid<T> implements IDatasource, OnInit {\n\n\tconstructor(protected override preferencesService: PreferencesService, protected override i18nService: I18nService,\n\t\t\t\tprotected override dialogService: DialogService) {\n\t\tsuper(preferencesService, i18nService, dialogService);\n\t\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.infiniteInitialRowCount = 1;\n\t\toptions.datasource = this;\n\t\treturn options;\n\t}\n\n\tpublic abstract getTotalItems(): number;\n\n\tprotected abstract getData(page: number, itemsPerPage: number): Observable<Array<T>>;\n\n\tpublic getRows(params: IGetRowsParams): void {\n\t\tthis.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\tthis.gridApi.updateGridOptions({loading: false});\n\t\tparams.successCallback(page, totalItems);\n\t\tif (page.length === 0) {\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\tthis.gridApi.updateGridOptions({datasource: this, loading: true});\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, Input, OnInit } 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\n\tconstructor(protected override preferencesService: PreferencesService, protected override i18nService: I18nService,\n\t\t\t\tprotected override dialogService: DialogService) {\n\t\tsuper(preferencesService, i18nService, dialogService);\n\t}\n\n\tpublic override ngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tthis.gridOptions.enableBrowserTooltips = true;\n\t\tthis.gridOptions.suppressCellFocus = false;\n\t\tthis.gridOptions.onCellKeyDown = this.onEnterPressedCallback()\n\t}\n\n\tprotected getColumnDefs(): Array<any> {\n\t\treturn this.searcher.getColumnDefs();\n\t}\n\n\tprotected override hideHeader(): boolean {\n\t\treturn this.searcher.hideHeader();\n\t}\n\n\n\tprotected override getIsFullWidthRow(isFullWidthRowParams: IsFullWidthRowParams): boolean {\n\t\treturn this.searcher.getIsFullWidthRow(isFullWidthRowParams);\n\t}\n\n\tpublic override getFullWidthCellRenderer(): any {\n\t\treturn this.searcher.getFullWidthCellRenderer();\n\t}\n\n\tprotected getContextMenuOptions(): Array<any> {\n\t\treturn new Array<any>();\n\t}\n\n\tpublic getTotalItems() {\n\t\treturn this.searcher.getTotalItems();\n\t}\n\n\tprotected getData(page: number, itemsPerPage: number): Observable<Array<T>> {\n\t\tlet searchText: string;\n\t\tif (this.valueForSearch) {\n\t\t\tsearchText = (this.searchForContain) ? '%' + this.valueForSearch : this.valueForSearch;\n\t\t}\n\t\treturn this.searcher.getData(searchText, page, itemsPerPage);\n\t}\n\n\tpublic refreshTable(): void {\n\t\tthis.refresh();\n\t}\n\n\tpublic focusFirstRow(): void {\n\t\tthis.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]=\"true\"\n [animateRows]=\"true\"\n (rowDragEnd)=\"onRowDragEnd($event)\"\n (columnResized)=\"doColumnResized($event)\"\n (viewportChanged)=\"doViewportChanged()\"\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\n [overlayLoadingTemplate]=\"overlayLoadingTemplate\"\n (rowSelected)=\"onRowSelected($event)\"\n (sortChanged)=\"onSortChanged()\"\n (modelUpdated)=\"onModelUpdated($event)\" [rowData]=\"rowData\">\n</ag-grid-angular>\n<systelab-grid-context-menu #popupmenu [style.position]=\"'fixed'\" [isEmbedded]=\"true\"></systelab-grid-context-menu>\n<systelab-grid-header-context-menu #headerpopupmenu [style.position]=\"'fixed'\" [isEmbedded]=\"true\"></systelab-grid-header-context-menu>\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n 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 (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// eslint-disable-next-line max-len\n\tconstructor(public id: string, public text: string, public isActive: boolean, public action: any, public subItems?: BreadcrumbSubItem[], public url?: string) {\n\t}\n}\n\n@Component({\n 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 <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\n\t\tconst rowHeight = StylesUtilService.getStyleValue(this.hiddenElement, 'line-height');\n\n\t\tthis.gridOptions = {};\n\n\t\tthis.gridOptions.columnDefs = this.getColumnDefsWithOptions();\n\t\tif (this.multipleSelection && !this.hideChecks) {\n\t\t\tthis.gridOptions.selectionColumnDef = this.getSelectionColumnDefs();\n\t\t\tthis.gridOptions.rowSelection = {enableClickSelection: false, checkboxes: true, headerCheckbox: this.showAll, selectAll: 'all'} as RowSelectionOptions;\n\t\t\tthis.gridOptions.rowClassRules = {\n\t\t\t\t'ag-row-disabled': (params) => {\n\t\t\t\t\treturn this.isDisabled;\n\t\t\t\t},\n\t\t\t};\n\t\t} else {\n\t\t\tthis.gridOptions.rowSelection = {enableClickSelection: !this.isDisabled, checkboxes: false, headerCheckbox: false} as RowSelectionOptions;\n\t\t}\n\n\t\tthis.gridOptions.rowHeight = Number(rowHeight);\n\t\tthis.gridOptions.suppressDragLeaveHidesColumns = true;\n\t\tthis.gridOptions.suppressCellFocus = true;\n\t\tthis.gridOptions.defaultColDef = {};\n\t\tthis.gridOptions.defaultColDef.resizable = false;\n\t\t(this.gridOptions.rowSelection as RowSelectionOptions).mode = this.multipleSelection ? 'multiRow' : 'singleRow';\n\t\t(this.gridOptions.rowSelection as RowSelectionOptions).enableClickSelection = !this.isDisabled;\n\t\tthis.gridOptions.context = {componentParent: this};\n\n\t\tthis.gridOptions.headerHeight = 0;\n\t\tthis.gridOptions.getRowId = (item: GetRowIdParams) => this.getRowNodeId(item)\n\t\t\t?.toString();\n\n\t\tthis.rowData = this.values;\n\n\t\tthis.gridOptions.enableBrowserTooltips = true;\n\t}\n\n\tprotected getRowNodeId(item: GetRowIdParams): string | number | undefined {\n\t\tif (item) {\n\t\t\tif (item[this.getIdField()] != null) {\n\t\t\t\treturn item[this.getIdField()];\n\t\t\t}\n\t\t\treturn item?.data[this.getIdField()] ?? '';\n\t\t}\n\t\treturn '';\n\t}\n\n\tprivate getSelectionColumnDefs(): ColDef {\n\n\t\treturn {\n\t\t\ttype: \t\t 'selection',\n\t\t\tcolId: 'selectCol',\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(function(columnDef: ColDef) {\n\t\t\tif (columnDef.width) {\n\t\t\t\tcolumnDef.suppressSizeToFit = true;\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic doGridReady(event: any) {\n\t\tthis.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 {\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 class ToastData {\n text: string;\n type: ToastType;\n}\n\nexport enum ToastSize {\n small = 'small',\n large = 'large',\n}\n\nexport interface ToastConfig {\n autoWidth?: boolean;\n fixedSize?: ToastSize;\n showCloseButton?: boolean;\n timeout: number;\n}\n\nexport const DEFAULT_TOAST_CONFIG: ToastConfig = {\n autoWidth: false,\n fixedSize: ToastSize.small,\n showCloseButton: false,\n timeout: 5000,\n};\n","import { OverlayRef } from '@angular/cdk/overlay';\n\nexport class ToastRef {\n constructor(private readonly overlay: OverlayRef) {}\n\n public close() {\n this.overlay.dispose();\n }\n\n public isVisible() {\n return this.overlay && this.overlay.overlayElement;\n }\n\n public getPosition() {\n return this.overlay.overlayElement.getBoundingClientRect();\n }\n}\n","import { Inject, Injectable, Injector, Optional } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ToastRef } from './toast-ref';\nimport { DEFAULT_TOAST_CONFIG, ToastConfig, ToastData } from './toast-config';\nimport { ToastComponent } from './toast.component';\nimport { APP_CONFIG } from '../systelab-components.module.config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n private _lastToast: ToastRef;\n private _config: ToastConfig;\n\n constructor(@Optional() @Inject(APP_CONFIG) private config, private overlay: Overlay, private parentInjector: Injector) {\n this._config = config?.toast ?? DEFAULT_TOAST_CONFIG;\n }\n\n public setConfig(config: ToastConfig): void {\n this._config = config;\n }\n\n public getConfig(): ToastConfig {\n return this._config;\n }\n\n public showError(text: string) {\n this.show({text, type: 'error' });\n }\n\n public showWarning(text: string) {\n this.show({text, type: 'warning' });\n }\n\n public showInformation(text: string) {\n this.show({text, type: 'info' });\n }\n\n public showSuccess(text: string) {\n this.show({text, type: 'success' });\n }\n\n private show(data: ToastData) {\n const positionStrategy = this.getPositionStrategy();\n const overlayRef = this.overlay.create({ positionStrategy, panelClass: 'slab-toast-panel' });\n\n const toastRef = new ToastRef(overlayRef);\n this._lastToast = toastRef;\n\n const injector = this.getInjector(data, toastRef, this.parentInjector);\n const toastPortal = new ComponentPortal(ToastComponent, null, injector);\n\n overlayRef.attach(toastPortal);\n\n return toastRef;\n }\n\n private getPositionStrategy() {\n if (!this._lastToast || (this._lastToast && !this._lastToast.isVisible())) {\n return this.overlay.position().global().bottom(this.getPosition()).centerHorizontally();\n } else {\n return this.overlay.position().global().top(this.getPosition()).centerHorizontally();\n }\n }\n\n private getPosition() {\n const lastToastIsVisible = this._lastToast && this._lastToast.isVisible();\n let position = 25;\n if (lastToastIsVisible) {\n const { height, top } = this._lastToast.getPosition();\n position = top - height - 25;\n }\n\n return position + 'px';\n }\n\n private getInjector(data: ToastData, toastRef: ToastRef, parentInjector: Injector) {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: ToastData, useValue: data },\n { provide: ToastRef, useValue: toastRef },\n ]\n });\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { toastAnimations, ToastAnimationState } from './toast-animation';\nimport { ToastConfig, ToastData, ToastSize } from './toast-config';\nimport { ToastRef } from './toast-ref';\nimport { ToastService } from './toast.service';\n\nconst ICONS = {\n success: 'icon-check-circle',\n info: 'icon-info-circle',\n warning: 'icon-warning',\n error: 'icon-times-circle',\n};\n\n@Component({\n selector: 'systelab-toast',\n templateUrl: './toast.component.html',\n animations: [toastAnimations.fadeToast],\n standalone: false\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n public iconClass: string;\n public toastClass: string;\n public animationState: ToastAnimationState = 'default';\n public config: ToastConfig;\n\n private _intervalId: number;\n\n constructor(readonly data: ToastData, readonly ref: ToastRef, readonly toastService: ToastService) {\n this.config = this.toastService.getConfig();\n this.iconClass = `fa ${ICONS[data.type]}`;\n this.toastClass = `slab-toast slab-toast--${data.type}`;\n if (this.config.autoWidth) {\n this.toastClass = `${this.toastClass} slab-toast--auto-width`;\n } else if (this.config.fixedSize === ToastSize.small) {\n this.toastClass = `${this.toastClass} slab-toast--fixed-size-small`;\n } else if (this.config.fixedSize === ToastSize.large) {\n this.toastClass = `${this.toastClass} slab-toast--fixed-size-large`;\n }\n if (this.config.showCloseButton) {\n this.toastClass = `${this.toastClass} show-close-button`;\n }\n }\n\n public ngOnInit(): void {\n this._intervalId = window.setTimeout(() => (this.animationState = 'closing'), this.config.timeout);\n }\n\n public closeToast(): void {\n this.close();\n }\n\n public onFadeFinished(event: AnimationEvent) {\n const { toState } = event;\n const isFadeOut = (toState as ToastAnimationState) === 'closing';\n const isFinished = this.animationState === 'closing';\n\n if (isFadeOut && isFinished) {\n this.close();\n }\n }\n\n public ngOnDestroy() {\n clearTimeout(this._intervalId);\n }\n\n private close(): void {\n this.ref.close();\n }\n}\n","<div [ngClass]=\"toastClass\"\n [@fadeAnimation]=\"{ value: animationState, params: { fadeIn: 1000, fadeOut: 1000 } }\"\n (@fadeAnimation.done)=\"onFadeFinished($event)\">\n <i class=\"type\" [ngClass]=\"iconClass\"></i>\n <div>{{ data.text }}</div>\n @if (config.showCloseButton) {\n <i class=\"close\" (click)=\"closeToast()\"></i>\n }\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface ToggleSelectorOption {\n id: string;\n name: string;\n}\n\n@Component({\n selector: 'systelab-toggle-selector',\n templateUrl: './toggle-selector.component.html',\n 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\tlet newZoom: number;\n\t\tif (imageWidth > imageHeight) {\n\t\t\tif (imageWidth < availableWidth) {\n\t\t\t\tnewZoom = (availableHeight / imageHeight) * 100;\n\t\t\t} else {\n\t\t\t\tnewZoom = (availableWidth / imageWidth) * 100;\n\t\t\t}\n\t\t} else {\n\t\t\tif (imageHeight < availableHeight) {\n\t\t\t\tnewZoom = (availableWidth / imageWidth) * 100;\n\t\t\t} else {\n\t\t\t\tnewZoom = (availableHeight / imageHeight) * 100;\n\t\t\t}\n\t\t}\n\t\treturn Math.min(newZoom, this.sliderZoomMax);\n\t}\n}\n","<svg class=\"d-none\" [innerHTML]=\"safeHtml\"></svg>\n\n<div class=\"d-flex flex-column slab-flex-1\" id=\"imageViewerHeader\"\n [ngClass]=\"transparentBackgroundForButtons ? 'bg-color-transparent' : 'bg-color-primary'\"\n data-test-id=\"imageViewerHeader\">\n <div class=\"d-flex 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 { 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 { TooltipDirective } from './tooltip/tooltip.directive';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { NavbarComponent } from './navbar/navbar.component';\nimport { MessageWithIconComponent } from './modal/message-popup/message-with-icon.component';\nimport { BreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { WeekSelectorComponent } from './week-selector/week-selector.component';\nimport { MonthSelectorComponent } from './month-selector/month-selector.component';\nimport { SignatureCanvasComponent } from './signature-canvas/signature-canvas.component';\nimport { CalendarFooterComponent } from './calendar/calendar-footer.component';\nimport { PercentageCircleComponent } from './percentage-circle/percentage-circle.component';\nimport { LoadingService } from './loading/loading.service';\nimport { TimeUnitSelectComponent } from './select/time-unit-combobox.component';\nimport { CheckboxCellRendererComponent } from './grid/custom-cells/checkbox/checkbox-cell-renderer.component';\nimport { WizardStepsComponent } from './wizard-steps/wizard-steps.component';\nimport { SpinnerCellEditorComponent } from './grid/custom-cells/spinner/spinner-cell-editor.component';\nimport { TwoListSortableListComponent } from './twolist/two-list-sortable-list.component';\nimport { SpinnerCellRendererComponent } from './grid/custom-cells/spinner/spinner-cell-renderer.component';\nimport { InputCellEditorComponent } from './grid/custom-cells/input/input-cell-editor.component';\nimport { CheckboxCellEditorComponent } from './grid/custom-cells/checkbox/checkbox-cell-editor.component';\nimport { DecimalInputCellEditorComponent } from './grid/custom-cells/decimal-input/decimal-input-cell-editor.component';\nimport { AbstractTreeListboxRendererComponent } from './listbox/renderer/abstract-tree-listbox-renderer.component';\nimport { ContextMenuItemComponent } from './contextmenu/context-menu-item.component';\nimport { SystelabGenderListBox } from './listbox/gender-listbox.component';\nimport { NumPadComponent } from './numpad/numpad.component';\nimport { NumPadDialog } from './numpad/numpad.dialog.component';\nimport { ComboboxFavouriteRendererComponent } from './combobox/renderer/combobox-favourite-renderer.component';\nimport { ModulabListBox } from './listbox/listbox.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { GridContextMenuComponent } from './grid/contextmenu/grid-context-menu-component';\nimport { ContextPanelComponent } from './contextpanel/context-panel.component';\nimport { DateRangepicker } from './date-range-picker/date-range-picker.component';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MessagePopupViewComponent } from './modal/message-popup/message-popup-view.component';\nimport { ApplicationSidebarSmallComponent } from './applicationframe/sidebar/app-sidebar-small.component';\nimport { PaginatorComponent } from './paginator/paginator.component';\nimport { PaginatorPageComponent } from './paginator/paginator-page.component';\nimport { CalendarModule } from 'primeng/calendar';\nimport { Tree, TreeModule } from 'primeng/tree';\nimport { ContextMenuModule } from 'primeng/contextmenu';\nimport { ChipButtonComponent } from './chip-button/chip-button.component';\nimport { AutofocusDirective } from './directives/autofocus.directive';\nimport { StackedBarCellRendererComponent } from './grid/custom-cells/stacked-bar/stacked-bar-cell-renderer.component';\nimport { DialogHeaderComponent } from './modal/header/dialog-header.component';\nimport { ChipsComponent } from './chips/chips.component';\nimport { ContextMenuSubmenuItemComponent } from './contextmenu/context-menu-submenu-item.component';\nimport { GridHeaderContextMenu } from './grid/contextmenu/grid-header-context-menu.component';\nimport { SharedModule } from 'primeng/api';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\nimport { SpyMenuComponent } from './spy-menu/spy-menu.component';\nimport { ScrollSpyDirective } from './spy-menu/scroll-spy.directive';\nimport { ToastComponent } from './toast/toast.component';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { KeyupDebounceDirective } from './directives/keyup-debounce.directive';\nimport { ToggleSelectorComponent } from './toggle-selector/toggle-selector.component';\nimport { SliderDoubleRangeComponent } from './slider-double-range/slider-double-range.component';\nimport { ButtonComponent } from './button/button.component';\nimport { DraggableDirective } from './directives/draggable.directive';\nimport { ResizableDirective } from './directives/resizable.directive';\nimport { ImageViewerComponent } from './image-viewer/image-viewer.component';\nimport { NumpadDecimalNumericDirective } from './directives/numpad-decimal-numeric.directive';\nimport { APP_CONFIG, AppConfig } from './systelab-components.module.config';\nimport {\n\tPositiveIntegerInputCellEditorComponent\n} from './grid/custom-cells/positive-integer/positive-integer-input-cell-editor.component';\nimport { TestIdDirective } from './directives/test-id.directive';\nimport { SearcherTreeHeaderRendererComponent } from './grid/custom-cells/searcher-tree-header/searcher-tree-header-renderer.component';\nimport { Accordion } from './accordion/accordion.component';\nimport { CellStyleModule, ClientSideRowModelModule, ColumnApiModule, ColumnAutoSizeModule, CustomEditorModule, EventApiModule, InfiniteRowModelModule, LocaleModule, ModuleRegistry, provideGlobalGridOptions, RowApiModule, RowDragModule, RowSelectionModule, RowStyleModule, TooltipModule, ValidationModule } from 'ag-grid-community';\n\nexport const factory = () => {\n\tconst systelabComponentsModuleCreated = (factory as any)._systelabComponentsModuleCreated || false;\n\tif (systelabComponentsModuleCreated) {\n\t\tthrow new Error('SystelabComponentsModuleCreated.forRoot imported to many times');\n\t}\n\t(factory as any)._systelabComponentsModuleCreated = true;\n};\n\nconst providers = [\n\tStylesUtilService,\n\tColorUtilService,\n\tLoadingService\n];\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tSharedModule,\n\t\tCalendarModule,\n\t\tTreeModule,\n\t\tAutoCompleteModule,\n\t\tDragDropModule,\n\t\tOverlayModule,\n\t\tContextMenuModule,\n\t\tAngularSplitModule,\n\t\tSystelabTranslateModule,\n\t\tAgGridModule,\n\t\tCdkTreeModule\n\t],\n\tdeclarations: [\n\t\tSliderComponent,\n\t\tSliderDoubleRangeComponent,\n\t\tSwitchComponent,\n\t\tContextMenuComponent,\n\t\tContextMenuSubmenuItemComponent,\n\t\tContextPanelComponent,\n\t\tMessagePopupViewComponent,\n\t\tDataFilterPipe,\n\t\tTwoListComponent,\n\t\tGridContextMenuComponent,\n\t\tGridContextMenuCellRendererComponent,\n\t\tGridHeaderContextMenuComponent,\n\t\tGridHeaderContextMenu,\n\t\tGridColumnOptionsDialog,\n\t\tColorCellRendererComponent,\n\t\tColorComboBox,\n\t\tApplicationFrameComponent,\n\t\tApplicationHeaderComponent,\n\t\tApplicationSidebarLargeComponent,\n\t\tApplicationSidebarSmallComponent,\n\t\tButtonComponent,\n\t\tToggleButtonComponent,\n\t\tAllYesNoSelect,\n\t\tNoYesSelect,\n\t\tPeriodSelect,\n\t\tTimeUnitSelectComponent,\n\t\tGenderSelect,\n\t\tTouchspinComponent,\n\t\tModulabSelect,\n\t\tDatepickerComponent,\n\t\tDatepickerTimeComponent,\n\t\tSearcherDialog,\n\t\tCalendarDialog,\n\t\tSearcherTableComponent,\n\t\tCalendarHeaderComponent,\n\t\tCalendarTableComponent,\n\t\tCalendarFooterComponent,\n\t\tTabsComponent,\n\t\tTabComponent,\n\t\tDialogHeaderComponent,\n\t\tDialogBottomComponent,\n\t\tLoadingComponent,\n\t\tFileSelectorComponent,\n\t\tTimelineComponent,\n\t\tMessageWithIconComponent,\n\t\tComboBoxInputRendererComponent,\n\t\tTooltipDirective,\n\t\tNavbarComponent,\n\t\tBreadcrumbComponent,\n\t\tWeekSelectorComponent,\n\t\tMonthSelectorComponent,\n\t\tSignatureCanvasComponent,\n\t\tPercentageCircleComponent,\n\t\tCheckboxCellRendererComponent,\n\t\tSpinnerCellEditorComponent,\n\t\tWizardStepsComponent,\n\t\tTwoListSortableListComponent,\n\t\tSpinnerCellRendererComponent,\n\t\tInputCellEditorComponent,\n\t\tDecimalInputCellEditorComponent,\n\t\tCheckboxCellEditorComponent,\n\t\tAbstractTreeListboxRendererComponent,\n\t\tContextMenuItemComponent,\n\t\tNumPadComponent,\n\t\tNumPadDialog,\n\t\tSystelabGenderListBox,\n\t\tComboboxFavouriteRendererComponent,\n\t\tModulabListBox,\n\t\tDateRangepicker,\n\t\tPaginatorComponent,\n\t\tPaginatorPageComponent,\n\t\tChipButtonComponent,\n\t\tAutofocusDirective,\n\t\tStackedBarCellRendererComponent,\n\t\tChipsComponent,\n\t\tSpyMenuComponent,\n\t\tScrollSpyDirective,\n\t\tToastComponent,\n\t\tToggleSelectorComponent,\n\t\tKeyupDebounceDirective,\n\t\tDraggableDirective,\n\t\tResizableDirective,\n\t\tImageViewerComponent,\n\t\tNumpadDecimalNumericDirective,\n\t\tPositiveIntegerInputCellEditorComponent,\n\t\tNumpadDecimalNumericDirective,\n \t\tTestIdDirective,\n\t\tSearcherTreeHeaderRendererComponent,\n\t\tAccordion,\n\t],\n\texports: [\n\t\tSliderComponent,\n\t\tSliderDoubleRangeComponent,\n\t\tSwitchComponent,\n\t\tContextMenuComponent,\n\t\tContextPanelComponent,\n\t\tTwoListComponent,\n\t\tGridHeaderContextMenuComponent,\n\t\tGridHeaderContextMenu,\n\t\tColorCellRendererComponent,\n\t\tColorComboBox,\n\t\tApplicationHeaderComponent,\n\t\tApplicationSidebarLargeComponent,\n\t\tApplicationSidebarSmallComponent,\n\t\tApplicationFrameComponent,\n\t\tAllYesNoSelect,\n\t\tNoYesSelect,\n\t\tPeriodSelect,\n\t\tTimeUnitSelectComponent,\n\t\tGenderSelect,\n\t\tDatepickerComponent,\n\t\tTouchspinComponent,\n\t\tModulabSelect,\n\t\tDatepickerTimeComponent,\n\t\tSearcherDialog,\n\t\tCalendarDialog,\n\t\tButtonComponent,\n\t\tToggleButtonComponent,\n\t\tSearcherTableComponent,\n\t\tCalendarHeaderComponent,\n\t\tCalendarTableComponent,\n\t\tCalendarFooterComponent,\n\t\tTabsComponent,\n\t\tTabComponent,\n\t\tDialogHeaderComponent,\n\t\tDialogBottomComponent,\n\t\tLoadingComponent,\n\t\tFileSelectorComponent,\n\t\tTimelineComponent,\n\t\tNavbarComponent,\n\t\tMessageWithIconComponent,\n\t\tBreadcrumbComponent,\n\t\tWeekSelectorComponent,\n\t\tMonthSelectorComponent,\n\t\tSignatureCanvasComponent,\n\t\tPercentageCircleComponent,\n\t\tTree,\n\t\tSplitComponent,\n\t\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([ InfiniteRowModelModule,\n\t\t\tClientSideRowModelModule, ValidationModule, EventApiModule, RowApiModule, ColumnApiModule,\n\t\t\tRowSelectionModule, TooltipModule, ColumnAutoSizeModule, RowDragModule, RowStyleModule,\n\t\t\tLocaleModule, CustomEditorModule, CellStyleModule ]);\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.infiniteInitialRowCount = 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 { 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\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}\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: false,\n\t\t\tmode: 'singleRow',\n\t\t\tenableClickSelection: true\n\t\t};\n\t}\n\n\tgetInstance(): ComboTreeNode<T> {\n\t\treturn new ComboTreeNode<T>();\n\t}\n\n\tgetDescriptionField(): string {\n\t\treturn '';\n\t}\n\n\tgetCodeField(): string {\n\t\treturn '';\n\t}\n\n\tgetIdField(): string {\n\t\treturn '';\n\t}\n\n\tpublic abstract getData(): Observable<Array<T>>;\n\n\tpublic abstract getTotalItems(): number;\n\n\tpublic abstract getLevelDescriptionField(level: number): string;\n\n\tpublic abstract getLevelIdField(level: number): string;\n\n\tpublic abstract getAllNodeId(): string | number;\n\n\tpublic abstract getAllNodeDescription(): string;\n\n\tpublic abstract getSelectionPrefix(level: number): string;\n\n\tprotected getFavouriteText(): string {\n\t\treturn 'Favourites';\n\t}\n\n\tpublic getLabelForLevel(comboTreeNode: ComboTreeNode<T>): string {\n\t\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().subscribe({\n\t\t\tnext: (nodeVector) => {\n\t\t\t\tthis.gridApi.hideOverlay();\n\t\t\t\tthis.rowData = nodeVector;\n\t\t\t\tthis.gridApi.redrawRows();\n\t\t\t\tif (this.totalItemsLoaded) {\n\t\t\t\t\tthis.setDropdownHeight(nodeVector.length);\n\t\t\t\t\tthis.setDropdownPosition();\n\t\t\t\t\tthis.transferFocusToGrid();\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: () => {\n\t\t\t\tthis.gridApi.hideOverlay();\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().pipe(\n\t\t\tmap((dataVector: Array<T>) => {\n\t\t\t\tconst nodeVector: Array<ComboTreeNode<T>> = [];\n\t\t\t\tlet previousParent: number | string;\n\n\t\t\t\tif (this.emptyElement) {\n\t\t\t\t\tconst emptyElement: T = {} as T;\n\t\t\t\t\temptyElement[this.getLevelIdField(0)] = '';\n\t\t\t\t\temptyElement[this.getLevelDescriptionField(0)] = '';\n\t\t\t\t\tconst emptyElementNode: ComboTreeNode<T> = new ComboTreeNode<T>(emptyElement, 0);\n\t\t\t\t\tnodeVector.push(emptyElementNode);\n\t\t\t\t}\n\n\t\t\t\tif (this.withFavourites) {\n\t\t\t\t\tthis.initializeFavouriteList();\n\t\t\t\t\tif (this.favouriteList.length > 0) {\n\t\t\t\t\t\tconst favouriteElement: T = {} as T;\n\t\t\t\t\t\tfavouriteElement[this.getLevelIdField(0)] = AbstractApiTreeComboBox.FAVOURITEID;\n\t\t\t\t\t\tfavouriteElement[this.getLevelDescriptionField(0)] = this.getFavouriteText();\n\t\t\t\t\t\tconst favouriteComboNode: ComboTreeNode<T> = new ComboTreeNode<T>(favouriteElement, 0);\n\t\t\t\t\t\tnodeVector.push(favouriteComboNode);\n\t\t\t\t\t\tconst favouriteElements = this.getFavouriteElements(dataVector);\n\t\t\t\t\t\tfavouriteElements.forEach(currentFavouriteElement => {\n\t\t\t\t\t\t\tconst currentFavouriteNode: ComboTreeNode<T> = new ComboTreeNode<T>(currentFavouriteElement, 1);\n\t\t\t\t\t\t\tnodeVector.push(currentFavouriteNode);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.isAllSelectable) {\n\t\t\t\t\tconst allElement: T = {} as T;\n\t\t\t\t\tallElement[this.getLevelIdField(0)] = this.getAllNodeId();\n\t\t\t\t\tallElement[this.getLevelDescriptionField(0)] = this.getAllNodeDescription();\n\t\t\t\t\tconst allComboNode: ComboTreeNode<T> = new ComboTreeNode<T>(allElement, 0);\n\t\t\t\t\tnodeVector.push(allComboNode);\n\t\t\t\t}\n\n\t\t\t\tdataVector.forEach((element: T) => {\n\t\t\t\t\tif (!previousParent || element[this.getLevelIdField(0)] !== previousParent) {\n\t\t\t\t\t\tpreviousParent = element[this.getLevelIdField(0)];\n\t\t\t\t\t\tconst parentComboNode: ComboTreeNode<T> = new ComboTreeNode<T>(element, 0);\n\t\t\t\t\t\tnodeVector.push(parentComboNode);\n\t\t\t\t\t}\n\t\t\t\t\tconst comboNode: ComboTreeNode<T> = new ComboTreeNode<T>(element, 1);\n\t\t\t\t\tnodeVector.push(comboNode);\n\t\t\t\t});\n\t\t\t\tthis.totalItemsLoaded = true;\n\t\t\t\treturn nodeVector;\n\t\t\t})\n\t\t)\n\t}\n\n\t// Overrides\n\tprotected override checkIfIsFavourite(id: string | number): void {\n\t\tconst idString = id ? id.toString() : undefined;\n\t\tif (idString && idString.includes(this.getSelectionPrefix(1))) {\n\t\t\tsuper.checkIfIsFavourite(idString.substr(1));\n\t\t} else {\n\t\t\tsuper.checkIfIsFavourite(id);\n\t\t}\n\t}\n\n\t// Overrides\n\tprotected override toggleFavourite(): void {\n\t\tif (this.id.toString()\n\t\t\t.includes(this.getSelectionPrefix(1))) {\n\t\t\tthis.isFavourite = !this.isFavourite;\n\t\t\tif (this.isFavourite) {\n\t\t\t\tthis.favouriteList.push(this.id.toString()\n\t\t\t\t\t.substr(1));\n\t\t\t} else {\n\t\t\t\tthis.favouriteList.splice(this.favouriteList.map(String)\n\t\t\t\t\t.indexOf(this.id.toString()\n\t\t\t\t\t\t.substr(1)), 1);\n\t\t\t}\n\t\t\tthis.preferencesService.put(this.getComboPreferencesPrefix() + '.favourites', this.favouriteList.map(String));\n\t\t} else {\n\t\t\tsuper.toggleFavourite();\n\t\t}\n\t}\n\n\t// Overrides\n\tpublic override onRowSelected(event: any) {\n\t\tif (event.node.selected) {\n\t\t\tif (this.isParentSelectable && event.node.data.nodeData[this.getLevelIdField(0)] !== AbstractApiTreeComboBox.FAVOURITEID) {\n\t\t\t\tjQuery('#' + this.comboId)\n\t\t\t\t\t.dropdown('toggle');\n\t\t\t} else if (this.isAllSelectable && event.node && event.node.data && event.node.data.level === 0) {\n\t\t\t\tif (event.node.data.nodeData[this.getLevelIdField(0)] === this.getAllNodeId()) {\n\t\t\t\t\tjQuery('#' + this.comboId)\n\t\t\t\t\t\t.dropdown('toggle');\n\t\t\t\t} else {\n\t\t\t\t\tevent.node.setSelected(false);\n\t\t\t\t}\n\t\t\t} else if (event.node && event.node.data && event.node.data.level > 0) {\n\t\t\t\tjQuery('#' + this.comboId)\n\t\t\t\t\t.dropdown('toggle');\n\t\t\t} else {\n\t\t\t\tif (event.node) {\n\t\t\t\t\tevent.node.setSelected(false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Overrides\n\tpublic override onSelectionChanged(event: any) {\n\t\tconst selectedRow = this.getSelectedRow();\n\t\tif (selectedRow !== null && selectedRow !== undefined) {\n\t\t\tthis.id = selectedRow.nodeData[this.getLevelIdField(selectedRow.level)];\n\t\t\tthis.description = selectedRow.nodeData[this.getLevelDescriptionField(selectedRow.level)];\n\t\t\tthis.currentSelected = selectedRow.nodeData;\n\t\t\tthis.level = selectedRow.level;\n\t\t\tif (selectedRow.level > 0\n\t\t\t\t|| (this.isAllSelectable && selectedRow.nodeData[this.getLevelIdField(0)] === this.getAllNodeId())\n\t\t\t\t|| this.isParentSelectable) {\n\t\t\t\tthis.change.emit(selectedRow.nodeData);\n\t\t\t\tthis.idChange.emit(this.id);\n\t\t\t\tthis.closeDropDown();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic override refresh(params: any): boolean {\n\t\tif (this.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","import { GridContextMenuActionData } from './grid-context-menu-action-data';\nimport { AbstractContextMenuOption } from '../../contextmenu/abstract-context-menu-option';\n\nexport type GridContextMenuActionFunction<T> = (data: GridContextMenuActionData<T>) => void;\nexport type GridContextMenuIsEnabledFunction<T> = (data: T) => boolean;\n\nexport class GridContextMenuOption<T> extends AbstractContextMenuOption<GridContextMenuActionFunction<T>, GridContextMenuIsEnabledFunction<T>> {\n\n\tconstructor(public override actionId: string,\n\t public override actionText: string,\n\t public override action?: GridContextMenuActionFunction<T>,\n\t public override isActionEnabled?: GridContextMenuIsEnabledFunction<T>,\n\t public override isDivider?: boolean,\n\t public override iconClass?: string,\n\t public override backgroundIconColor?: string,\n\t public override iconColor?: string,\n\t public override childrenContextMenuOptions?: Array<GridContextMenuOption<T>>,\n\t public override iconFontSize?: string) {\n\t\tsuper();\n\t}\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { IDatasource, IGetRowsParams } from 'ag-grid-community';\nimport { Observable } from 'rxjs';\nimport { AbstractListBox } from './abstract-listbox.component';\n\n@Directive()\nexport abstract class AbstractApiListBox<T> extends AbstractListBox<T> implements IDatasource, OnInit {\n\n\tpublic abstract override getInstance(): T;\n\n\tprotected constructor() {\n\t\tsuper();\n\t}\n\n\tpublic override ngOnInit() {\n\n\t\tsuper.ngOnInit();\n\n\t\tthis.gridOptions.rowModelType = 'infinite';\n\t\tthis.gridOptions.paginationPageSize = 50;\n\t\tthis.gridOptions.cacheBlockSize = 50;\n\t\tthis.gridOptions.cacheOverflowSize = 2;\n\t\tthis.gridOptions.maxConcurrentDatasourceRequests = 4;\n\t\tthis.gridOptions.maxBlocksInCache = 15;\n\t\t// this.gridOptions.paginationInitialRowCount = 0;\n\t\tthis.gridOptions.infiniteInitialRowCount = 0;\n\n\t\tthis.gridOptions.datasource = this;\n\t}\n\n\tpublic abstract getTotalItems(): number;\n\n\tprotected abstract getData(page: number, itemsPerPage: number): Observable<Array<T>>;\n\n\tpublic getRows(params: IGetRowsParams): void {\n\n\t\tthis.gridApi.setGridOption(\"loading\", true);\n\t\tconst page: number = params.endRow / this.gridOptions.paginationPageSize;\n\t\tconst pageSize: number = this.gridOptions.paginationPageSize;\n\n\t\tconst showAllElementNumber: number = this.showAll ? 1 : 0;\n\t\tconst totalItems: number = this.getTotalItems() + showAllElementNumber;\n\t\tconst modulus: number = totalItems % pageSize;\n\n\t\tif (page === 1 || page <= totalItems / pageSize || modulus > 1 || (modulus === 1 && !this.showAll)) {\n\t\t\tthis.getElements(page, pageSize, showAllElementNumber, params);\n\t\t} else {\n\t\t\tthis.getData(page - 1, this.gridOptions.paginationPageSize)\n\t\t\t\t.subscribe({\n\t\t\t\t\t\tnext: (previousPage: Array<T>) => {\n\t\t\t\t\t\t\tthis.gridApi.setGridOption(\"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\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\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.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.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.setGridOption('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// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpublic override doClick(row: any): void {\n\t\tif (!this.multipleSelection && !this.isDisabled) {\n\t\t\tconst selectionLevel = row.node.data.level;\n\t\t\tif ((selectionLevel === 0 && this.isParentSelectable) || selectionLevel > 0) {\n\t\t\t\tthis.selectedTreeItem = row.node.data;\n\t\t\t\tthis.selectedTreeItemChange.emit(row.node.data);\n\t\t\t}\n\t\t}\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpublic changeValues(event: any): void {\n\t\tif (this.multipleSelection) {\n\t\t\tthis.addRemoveToMultipleSelectedItem(event);\n\t\t\tif (this.updateHierarchy) {\n\t\t\t\tif (event.level === 0) {\n\t\t\t\t\tthis.selectUnselectChildTree(event);\n\t\t\t\t} else {\n\t\t\t\t\tthis.selectUnselectParentTree(event);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.selectedIDListChange.emit(this.selectedIDList);\n\t\t}\n\t\tif (this.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// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpublic override onModelUpdated(pEvent: any): void {\n\t}\n\n\tprotected configGrid(): void {\n\t\tthis.paddingSingleSelection = this.multipleSelection ? 0 : 2;\n\t\tthis.gridOptions = {};\n\t\tthis.gridOptions.headerHeight = 0;\n\t\tthis.gridOptions.rowSelection = {\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\n\t\tthis.gridOptions.columnDefs = this.columnDefs;\n\n\t}\n\n\tprotected override getRowNodeId(item: GetRowIdParams): string | number | undefined {\n\t\tif (item?.data?.nodeData[this.getIdField(1)]) {\n\t\t\treturn item.level + '-' + item.data.nodeData[this.getIdField(1)];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprotected getRows(): void {\n\t\tthis.getData()\n\t\t\t.subscribe({\n\t\t\t\tnext: (dataVector: Array<T>) => {\n\t\t\t\t\tthis.loadValues(dataVector);\n\t\t\t\t\tthis.gridApi.hideOverlay();\n\t\t\t\t\tthis.rowData = this.treeValues;\n\t\t\t\t\tthis.gridApi.redrawRows();\n\t\t\t\t\tif (this.multipleSelection) {\n\t\t\t\t\t\tthis.initSelectionList();\n\t\t\t\t\t} else if (this.selectedTreeItem) {\n\t\t\t\t\t\tthis.selectTreeItemInGrid();\n\t\t\t\t\t}\n\t\t\t\t\tthis.doAutoSizeManagement();\n\t\t\t\t},\n\t\t\t\terror: () => {\n\t\t\t\t\tthis.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","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';\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","i7.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","i1.ToastData","i2.ToastRef","i3.ToastService","i3.SliderComponent","i5.ToggleButtonComponent","i6.TooltipDirective","i2.TranslationHelper","i2.NumberHelper","i2.AbstractSearcher"],"mappings":"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"}