UNPKG

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.

796 lines 102 kB
import { Directive, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core'; import { StylesUtilService } from '../utilities/styles.util.service'; import { ComboboxFavouriteRendererComponent } from './renderer/combobox-favourite-renderer.component'; import { AutosizeGridHelper, initializeCalculatedGridState } from '../helper/autosize-grid-helper'; import * as i0 from "@angular/core"; import * as i1 from "systelab-preferences"; export class AbstractComboBox { static { this.ROW_HEIGHT = -1; } static { this.DROPDOWN_MENU_MARGIN = 16; } getAllFieldIDValue() { return '0'; } getAllFieldDescriptionValue() { return ''; } getAllCodeFieldValue() { return ''; } getAllInstance() { const instance = this.getInstance(); instance[this.getIdField()] = this.getAllFieldIDValue(); instance[this.getDescriptionField()] = this.getAllFieldDescriptionValue(); instance[this.getCodeField()] = this.getAllCodeFieldValue(); return instance; } set values(newValues) { if (newValues) { if (this.withEmptyValue) { newValues.unshift({ description: '', id: undefined }); } } this._values = newValues; if (this.gridOptions) { this.gridOptions.rowData = this._values; } this.setCodeDescriptionById(); } get values() { return this._values; } set id(value) { this._id = value; this.idChange.emit(value); this.setCodeDescriptionById(); this.checkIfIsFavourite(value); } get id() { return this._id; } set description(value) { this._description = value; if (this.id && this.values) { const item = this.values.find(it => it[this.getIdField()] === this.id); if (item) { this._description = item[this.getDescriptionField()]; } } this.descriptionChange.emit(this._description); this.fieldToShow = this._description; } get description() { return this._description; } set level(value) { this._level = value; this.levelChange.emit(this._level); } get level() { return this._level; } set fieldToShow(value) { this._fieldToShow = value; this.fieldToShowChange.emit(this._fieldToShow); } get fieldToShow() { return this._fieldToShow; } set code(value) { this._code = value; if (this.id != null && this.values) { const item = this.values.find(it => it[this.getIdField()] === this.id); if (item) { this._code = item[this.getCodeField()]; } } this.codeChange.emit(this._code); } get code() { return this._code; } set multipleSelectedItemList(value) { this._multipleSelectedItemList = value; this.setDescriptionAndCodeWhenMultiple(value); this.multipleSelectedItemListChange.emit(this._multipleSelectedItemList); this.multipleSelectedIDListChange.emit(this.selectionItemListToIDList()); } get multipleSelectedItemList() { return this._multipleSelectedItemList; } constructor(myRenderer, chRef, preferencesService) { this.myRenderer = myRenderer; this.chRef = chRef; this.preferencesService = preferencesService; this.comboId = (Math.floor(Math.random() * (999999999999 - 1))).toString(); this.filter = false; this.multipleSelection = false; this.listSelectedValues = false; this.allElement = false; this.deleteIconClass = 'icon-close'; this.expandToParentContainerHeight = false; this.change = new EventEmitter(); this.idChange = new EventEmitter(); this.descriptionChange = new EventEmitter(); this.levelChange = new EventEmitter(); this.allowEditInput = false; this.emptyElement = false; this.selectDeselectAll = false; this.withFavourites = false; this.isFavourite = false; this.favouriteList = []; this.isTree = false; this.fieldToShowChange = new EventEmitter(); this.codeChange = new EventEmitter(); this._multipleSelectedItemList = []; this.multipleSelectedItemListChange = new EventEmitter(); this.multipleSelectedIDListChange = new EventEmitter(); this.selectedItemChange = new EventEmitter(); this.filterValue = ''; this.currentSelected = {}; this.selectionChanged = false; this.top = 0; this.left = 0; this.windowResized = false; this.isDropdownOpened = false; this.calculatedGridState = initializeCalculatedGridState(); } ngOnInit() { this.setRowHeight(); this.setStyle('font-family', this.fontFamily); this.setStyle('font-size', this.fontSize); this.setStyle('font-weight', this.fontWeight); this.setStyle('font-style', this.fontStyle); jQuery(this.comboboxElement.nativeElement) .on('hide.bs.dropdown', this.closeDropDown.bind(this)); this.initializeFavouriteList(); this.configGrid(); } setStyle(styleName, styleValue) { if (styleValue) { this.myRenderer.setStyle(this.dropdownElement.nativeElement, styleName, styleValue); } } setDescriptionAndCodeWhenMultiple(value) { this._description = ''; this._code = ''; for (const selectedItem of value) { if (this._code !== '') { this._code += '; '; } this._code += selectedItem[this.getCodeField()]; if (this._description !== '') { this._description += '; '; } this._description += selectedItem[this.getDescriptionField()]; } } initializeFavouriteList() { const favouriteListPreference = (this.preferencesService) ? this.preferencesService.get(this.preferenceName + '.favourites') : undefined; if (this.withFavourites && favouriteListPreference && favouriteListPreference.length > 0) { this.favouriteList = favouriteListPreference; if (this.id != null) { this.checkIfIsFavourite(this.id.toString()); } } } configGrid() { this.columnDefs = (this.withFavourites) ? [ { colId: 'itemDescription', id: this.getIdField(), field: this.getDescriptionField(), tooltipField: this.getDescriptionField(), checkboxSelection: this.multipleSelection, cellRenderer: ComboboxFavouriteRendererComponent, cellRendererParams: { favouriteList: this.favouriteList } } ] : [ { colId: 'itemDescription', field: this.getDescriptionField(), tooltipField: this.getDescriptionField(), checkboxSelection: this.multipleSelection, } ]; this.gridOptions = {}; this.gridOptions.columnDefs = this.columnDefs; this.gridOptions.rowHeight = AbstractComboBox.ROW_HEIGHT; this.gridOptions.headerHeight = 0; this.gridOptions.suppressCellFocus = false; if (this.multipleSelection) { this.gridOptions.rowSelection = 'multiple'; this.gridOptions.suppressRowClickSelection = true; } else { this.gridOptions.rowSelection = 'single'; } this.gridOptions.getRowId = (item) => this.getRowNodeId(item) ?.toString(); this.configGridData(); this.gridOptions.enableBrowserTooltips = true; } getRowNodeId(item) { if (item) { if (item[this.getIdField()] != null) { return item[this.getIdField()]; } return item.data?.[this.getIdField()] ?? ''; } return ''; } configGridData() { this.gridOptions.rowData = this.values; } setRowHeight() { const lineHeight = StylesUtilService.getStyleValue(this.hiddenElement, 'line-height'); AbstractComboBox.ROW_HEIGHT = Number(lineHeight ? lineHeight : 26); } refresh(params) { return true; } agInit(params) { this.params = params; } getInputHeight() { return this.expandToParentContainerHeight ? { 'height': '100%' } : undefined; } getComboPreferencesPrefix() { return this.preferenceName || this.constructor.name; } doToggleFavourite(event) { event.stopPropagation(); this.toggleFavourite(); } deleteValueSelected(event) { event.stopPropagation(); if (this.multipleSelection) { if (this.multipleSelectedItemList && this.multipleSelectedItemList.length > 0) { this.multipleSelectedItemList = []; } } else { this.id = this.defaultIdValue ? this.defaultIdValue : undefined; this._description = this.defaultDescription ? this.defaultDescription : undefined; this._code = this.defaultCode ? this.defaultCode : undefined; } } onComboClicked(event) { if (this.isDisabled || (this.allowEditInput && event.target.className.indexOf('input') > -1)) { event.stopPropagation(); } else { if (!this.isDropDownOpen()) { this.isDropdownOpened = true; this.showDropDown(); } else { // close this.checkMultipleSelectionClosed(); } } } onComboKeyArrowDown(event) { if (!this.isDropDownOpen()) { this.isDropdownOpened = true; this.showDropDown(); } else { // close this.checkMultipleSelectionClosed(); } } onComboKeyArrowUp(event) { event.preventDefault(); event.stopPropagation(); } toggleFavourite() { this.isFavourite = !this.isFavourite; if (this.isFavourite) { this.favouriteList.push(this.id.toString()); } else { this.favouriteList.splice(this.favouriteList.map(String) .indexOf(this.id.toString()), 1); } this.preferencesService.put(this.getComboPreferencesPrefix() + '.favourites', this.favouriteList.map(String)); } setDropdownWidth() { const parentWidth = this.comboboxElement.nativeElement.offsetWidth; this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'width', parentWidth + 'px'); this.setGridSize(); } isDropDownOpen() { return this.comboboxElement.nativeElement.className.includes('show'); } closeDropDown() { this.isDropdownOpened = false; this.removeWindowScrollHandler(); this.removeGridScrollHandler(); this.resetDropDownPositionAndHeight(); if (this.isDropDownOpen()) { this.myRenderer.removeClass(this.comboboxElement.nativeElement, 'show'); this.myRenderer.removeClass(this.dropdownMenuElement.nativeElement, 'show'); } this.chRef.detectChanges(); this.checkMultipleSelectionClosed(); this.input.nativeElement.focus(); } resetDropDownPositionAndHeight() { this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'top', null); this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'left', null); this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', '0px'); } loop() { let result = true; if (this.isDropDownOpen()) { this.setDropdownHeight(); this.setDropdownPosition(); this.transferFocusToGrid(); result = false; } if (result && this.isDropdownOpened) { setTimeout(() => this.loop(), 10); } else { if (this.filter === true) { this.filterInput.nativeElement.focus(); } return; } } transferFocusToGrid() { // scrolls to the first row this.gridOptions.api.ensureIndexVisible(0); // scrolls to the first column const firstCol = this.gridOptions.columnApi.getAllDisplayedColumns()[0]; this.gridOptions.api.ensureColumnVisible(firstCol); // sets focus into the first grid cell this.gridOptions.api.setFocusedCell(0, firstCol); } onCellKeyDown(e) { if (e.event.key === 'Enter') { if (this.multipleSelection && e.node.selected) { e.node.setSelected(false); } else { e.node.setSelected(true); } e.event.preventDefault(); } if (e.event.key === 'Tab') { this.closeDropDown(); e.event.preventDefault(); e.event.stopPropagation(); } } showDropDown() { this.addWindowScrollHandler(); this.setDropdownWidth(); if (!this.isDropDownOpen()) { setTimeout(() => this.loop(), 10); } } clickDropDownMenu(e) { e.stopPropagation(); } setDropdownHeight() { let calculatedHeight = 0; const totalItems = this.getTotalItemsForDropdownHeight(); if (this.selectDeselectAll === true) { calculatedHeight += AbstractComboBox.ROW_HEIGHT + 10; } if (this.filter === true) { calculatedHeight += AbstractComboBox.ROW_HEIGHT + 5; } if (totalItems === 0) { calculatedHeight += 8 + AbstractComboBox.ROW_HEIGHT; this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', calculatedHeight + 'px'); } else if (totalItems < 10) { calculatedHeight += 8 + AbstractComboBox.ROW_HEIGHT * totalItems; this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', calculatedHeight + 'px'); } else { calculatedHeight += AbstractComboBox.ROW_HEIGHT * 10; this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', calculatedHeight + 'px'); } } getTotalItemsInCombo() { return Number(this.values ? this.values.length : 0); } getTotalItemsForDropdownHeight() { let totalItems = this.getTotalItemsInCombo(); if (this.emptyElement) { totalItems += 1; } if (this.allElement) { totalItems += 1; } return totalItems; } setDropdownPosition() { this.myRenderer.setStyle(this.dropdownMenuElement.nativeElement, 'position', 'fixed'); const dropdownParentRect = this.inputElement.nativeElement.getBoundingClientRect(); this.top = dropdownParentRect.top; this.left = dropdownParentRect.left; // Trick for positioning in IE11 if (!!window.MSInputMethodContext && !!window.document.documentMode) { this.top = dropdownParentRect.top + this.inputElement.nativeElement.offsetHeight; } if (this.top + this.dropdownElement.nativeElement.offsetHeight > window.innerHeight) { this.top = this.top - this.dropdownElement.nativeElement.offsetHeight - this.inputElement.nativeElement.offsetHeight - AbstractComboBox.DROPDOWN_MENU_MARGIN; } this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'top', this.top + 'px'); this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'left', this.left + 'px'); } getSelectedRow() { if (this.gridOptions && this.gridOptions.api) { const selectedRow = this.gridOptions.api.getSelectedRows(); if (selectedRow !== null) { return selectedRow[0]; } } return undefined; } doSearch(event) { this.filterValue = event.target.value; this.doFilter(); } doFilter() { const auxListArray = this.values.filter(element => element.description.toLowerCase() .indexOf(this.filterValue.toLowerCase()) > -1); this.gridOptions.api.setRowData(auxListArray); } doSelectAll() { this.gridOptions.api.selectAll(); } doDeselectAll() { this.gridOptions.api.deselectAll(); } onSelectionChanged(event) { if (!this.multipleSelection) { const selectedRow = this.getSelectedRow(); if (selectedRow !== null && selectedRow !== undefined) { this.id = selectedRow[this.getIdField()]; this.code = selectedRow[this.getCodeField()]; this.description = selectedRow[this.getDescriptionField()]; this.currentSelected = selectedRow; this.change.emit(selectedRow); this.selectedItemChange.emit(selectedRow); this.closeDropDown(); if (selectedRow[this.getIdField()]) { this.checkIfIsFavourite(selectedRow[this.getIdField()].toString()); } } } else { this.selectionChanged = true; } } checkIfIsFavourite(id) { if (id != null) { const idString = id.toString(); this.isFavourite = this.favouriteList.map(String) .includes(idString); } else { this.isFavourite = false; } } onModelUpdated() { this.addGridScrollHandler(); if (this.multipleSelection) { if (this.multipleSelectedItemList && this.multipleSelectedItemList.length > 0) { this.gridOptions.api.forEachNode(node => { if (this.multipleSelectedItemList.some((item) => (item !== undefined && node.data !== undefined && item[this.getIdField()] === this.getRowNodeId(node.data)))) { node.selectThisNode(true); } }); } } else if (this._id) { this.gridOptions.api.forEachNode(node => { if (this.getRowNodeId(node.data) === this._id) { this.currentSelected = node.data; node.selectThisNode(true); } }); } } setGridSize() { this.gridOptions.rowHeight = AbstractComboBox.ROW_HEIGHT; if (this.gridOptions.api && this.columnDefs) { if (this.windowResized) { setTimeout(() => { AutosizeGridHelper.sizeColumnsToFit(this.gridOptions); this.windowResized = false; }, 5); } else { AutosizeGridHelper.sizeColumnsToFit(this.gridOptions); } } } // overrides onRowSelected(event) { if (!this.multipleSelection) { } else if (event.node && event.node.data && event.node.data[this.getIdField()] !== undefined) { if (this.multipleSelectedItemList) { const elementIndexInSelectedList = this.multipleSelectedItemList.findIndex((item) => { return item[this.getIdField()] === event.node.data[this.getIdField()]; }); if (event.node.selected) { if (elementIndexInSelectedList < 0) { if (this.allElement) { // if the selectedNode is "all" if (event.node.data[this.getIdField()] === this.getAllFieldIDValue()) { this.multipleSelectedItemList = []; this.unselectAllNodesInGridOptions(); } else { // the selectedNode is NOT "all: was "all" node already selected? const elementAllInSelectedList = this.multipleSelectedItemList.findIndex((item) => { return item[this.getIdField()] === this.getAllFieldIDValue(); }); // yes, it was => unselect "all" node and empty the multipleSelectedItemList if (elementAllInSelectedList !== -1) { this.multipleSelectedItemList = []; this.unselectNodeAllInGridOptions(); } } } // Regardless the value of allElement, we have to add the newElement using the selectedNode this.multipleSelectedItemList.push(event.node.data); this.multipleSelectedItemList = this.multipleSelectedItemList.slice(); } } else { if (elementIndexInSelectedList !== -1) { this.multipleSelectedItemList.splice(elementIndexInSelectedList, 1); this.multipleSelectedItemList = this.multipleSelectedItemList.slice(); } } } else { this.multipleSelectedItemList = []; this.multipleSelectedItemList.push(event.node.data); this.multipleSelectedItemList = this.multipleSelectedItemList.slice(); } this.setDescriptionAndCodeWhenMultiple(this.multipleSelectedItemList); } } unselectAllNodesInGridOptions() { if (this.gridOptions && this.gridOptions.api) { this.gridOptions.api.forEachNode(node => { if (node && this.getRowNodeId(node.data) !== this.getAllFieldIDValue()) { node.selectThisNode(false); } }); } } unselectNodeAllInGridOptions() { if (this.gridOptions && this.gridOptions.api) { this.gridOptions.api.forEachNode(node => { if (node && this.getRowNodeId(node.data) === this.getAllFieldIDValue()) { node.selectThisNode(false); } }); } } setCodeDescriptionById() { if (this.id !== undefined && this.values) { const item = this.values.find(it => it[this.getIdField()] === this.id); if (item) { this.description = item[this.getDescriptionField()]; this.code = item[this.getCodeField()]; } } else if (this.id === undefined) { this.description = undefined; this.code = undefined; } } onResize() { if (this.isDropDownOpen()) { this.closeDropDown(); } const parentWidth = this.comboboxElement.nativeElement.offsetWidth; this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'width', parentWidth + 'px'); this.windowResized = true; } isComboBoxScrolling(element) { if (element.id === this.dropdownElement.nativeElement.id) { return true; } else if (element.parentElement) { return this.isComboBoxScrolling(element.parentElement); } return false; } scroll(event) { if (!this.isComboBoxScrolling(event.target)) { this.closeDropDown(); } } addWindowScrollHandler() { this.windowScrollHandler = this.scroll.bind(this); window.addEventListener('scroll', this.windowScrollHandler, true); } removeWindowScrollHandler() { window.removeEventListener('scroll', this.windowScrollHandler, true); } addGridScrollHandler() { if (this.gridOptions.api) { this.gridOptions.api.removeEventListener('bodyScroll', this.onBodyScroll.bind(this)); this.calculatedGridState = initializeCalculatedGridState(); this.onBodyScroll(undefined); this.gridOptions.api.addEventListener('bodyScroll', this.onBodyScroll.bind(this)); } } removeGridScrollHandler() { if (this.gridOptions.api) { this.gridOptions.api.removeEventListener('bodyScroll', this.onBodyScroll.bind(this)); } } ngOnDestroy() { this.removeWindowScrollHandler(); this.removeGridScrollHandler(); this.chRef.detach(); } removeItem(item) { const index = this.multipleSelectedItemList.findIndex(it => it[this.getIdField()] === item[this.getIdField()]); if (index !== -1) { this.multipleSelectedItemList.splice(index, 1); this.multipleSelectedItemList = this.multipleSelectedItemList; } } selectionItemListToIDList() { return this.multipleSelectedItemList.map(item => item[this.getIdField()]); } checkMultipleSelectionClosed() { if (this.selectionChanged) { this.change.emit(this.multipleSelectedItemList); this.selectedItemChange.emit(this.multipleSelectedItemList); this.multipleSelectedItemListChange.emit(this.multipleSelectedItemList); this.multipleSelectedIDListChange.emit(this.selectionItemListToIDList()); } } doGridReady() { if (this.filterValue && this.filter === true) { this.doFilter(); } } onBodyScroll(event) { clearTimeout(this.scrollTimeout); this.scrollTimeout = setTimeout(() => { this.doAutoSizeManagement(event); }, 150); } doAutoSizeManagement(event) { AutosizeGridHelper.doAutoSizeManagement(this.calculatedGridState, this.gridOptions, event); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbstractComboBox, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PreferencesService }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: AbstractComboBox, inputs: { customInputRenderer: "customInputRenderer", initialParams: "initialParams", filter: "filter", multipleSelection: "multipleSelection", listSelectedValues: "listSelectedValues", allElement: "allElement", fontFamily: "fontFamily", fontSize: "fontSize", fontWeight: "fontWeight", fontStyle: "fontStyle", withIcon: "withIcon", withDeleteOption: "withDeleteOption", defaultIdValue: "defaultIdValue", defaultDescription: "defaultDescription", defaultCode: "defaultCode", iconClass: "iconClass", inputColor: "inputColor", iconColor: "iconColor", tabindex: "tabindex", deleteIconClass: "deleteIconClass", withEmptyValue: "withEmptyValue", values: "values", isDisabled: "isDisabled", expandToParentContainerHeight: "expandToParentContainerHeight", allowEditInput: "allowEditInput", emptyElement: "emptyElement", selectDeselectAll: "selectDeselectAll", withFavourites: "withFavourites", preferenceName: "preferenceName", id: "id", description: "description", level: "level", fieldToShow: "fieldToShow", code: "code", multipleSelectedItemList: "multipleSelectedItemList" }, outputs: { change: "change", idChange: "idChange", descriptionChange: "descriptionChange", levelChange: "levelChange", fieldToShowChange: "fieldToShowChange", codeChange: "codeChange", multipleSelectedItemListChange: "multipleSelectedItemListChange", multipleSelectedIDListChange: "multipleSelectedIDListChange", selectedItemChange: "selectedItemChange" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "comboboxElement", first: true, predicate: ["combobox"], descendants: true, static: true }, { propertyName: "dropdownToogleElement", first: true, predicate: ["dropdowntoogle"], descendants: true }, { propertyName: "dropdownMenuElement", first: true, predicate: ["dropdownmenu"], descendants: true }, { propertyName: "dropdownElement", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }, { propertyName: "hiddenElement", first: true, predicate: ["hidden"], descendants: true, static: true }], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbstractComboBox, decorators: [{ type: Directive }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PreferencesService }], propDecorators: { input: [{ type: ViewChild, args: ['input', { static: false }] }], filterInput: [{ type: ViewChild, args: ['filterInput', { static: false }] }], customInputRenderer: [{ type: Input }], initialParams: [{ type: Input }], filter: [{ type: Input }], multipleSelection: [{ type: Input }], listSelectedValues: [{ type: Input }], allElement: [{ type: Input }], fontFamily: [{ type: Input }], fontSize: [{ type: Input }], fontWeight: [{ type: Input }], fontStyle: [{ type: Input }], withIcon: [{ type: Input }], withDeleteOption: [{ type: Input }], defaultIdValue: [{ type: Input }], defaultDescription: [{ type: Input }], defaultCode: [{ type: Input }], iconClass: [{ type: Input }], inputColor: [{ type: Input }], iconColor: [{ type: Input }], tabindex: [{ type: Input }], deleteIconClass: [{ type: Input }], withEmptyValue: [{ type: Input }], values: [{ type: Input }], isDisabled: [{ type: Input }], expandToParentContainerHeight: [{ type: Input }], change: [{ type: Output }], idChange: [{ type: Output }], descriptionChange: [{ type: Output }], levelChange: [{ type: Output }], allowEditInput: [{ type: Input }], emptyElement: [{ type: Input }], selectDeselectAll: [{ type: Input }], withFavourites: [{ type: Input }], preferenceName: [{ type: Input }], id: [{ type: Input }], description: [{ type: Input }], level: [{ type: Input }], fieldToShow: [{ type: Input }], fieldToShowChange: [{ type: Output }], code: [{ type: Input }], codeChange: [{ type: Output }], multipleSelectedItemList: [{ type: Input }], multipleSelectedItemListChange: [{ type: Output }], multipleSelectedIDListChange: [{ type: Output }], selectedItemChange: [{ type: Output }], comboboxElement: [{ type: ViewChild, args: ['combobox', { static: true }] }], dropdownToogleElement: [{ type: ViewChild, args: ['dropdowntoogle', { static: false }] }], dropdownMenuElement: [{ type: ViewChild, args: ['dropdownmenu', { static: false }] }], dropdownElement: [{ type: ViewChild, args: ['dropdown', { static: true }] }], inputElement: [{ type: ViewChild, args: ['input', { static: false }] }], hiddenElement: [{ type: ViewChild, args: ['hidden', { static: true }] }], onResize: [{ type: HostListener, args: ['window:resize', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3lzdGVsYWItY29tcG9uZW50cy9zcmMvbGliL2NvbWJvYm94L2Fic3RyYWN0LWNvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3SixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUV0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQXVCLDZCQUE2QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztBQUt4SCxNQUFNLE9BQWdCLGdCQUFnQjthQUV2QixlQUFVLEdBQUcsQ0FBQyxDQUFDLEFBQUwsQ0FBTTthQUNoQix5QkFBb0IsR0FBRyxFQUFFLEFBQUwsQ0FBTTtJQStCakMsa0JBQWtCO1FBQ3hCLE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUVNLDJCQUEyQjtRQUNqQyxPQUFPLEVBQUUsQ0FBQztJQUNYLENBQUM7SUFFTSxvQkFBb0I7UUFDMUIsT0FBTyxFQUFFLENBQUM7SUFDWCxDQUFDO0lBRU0sY0FBYztRQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFcEMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hELFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQzFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxF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