ngx-dropdown-list 1.2.0 → 21.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/{fesm2020 → fesm2022}/ngx-dropdown-list.mjs +783 -721
  2. package/fesm2022/ngx-dropdown-list.mjs.map +1 -0
  3. package/ngx-dropdown-list-21.0.1.tgz +0 -0
  4. package/package.json +10 -18
  5. package/{src/ngx-dropdown-list/dropdown-list.component.d.ts → types/ngx-dropdown-list.d.ts} +109 -106
  6. package/esm2020/ngx-dropdown-list.mjs +0 -5
  7. package/esm2020/public_api.mjs +0 -2
  8. package/esm2020/src/ngx-dropdown-list/anchor/anchor.component.mjs +0 -149
  9. package/esm2020/src/ngx-dropdown-list/dropdown/dropdown.component.mjs +0 -252
  10. package/esm2020/src/ngx-dropdown-list/dropdown-list.component.mjs +0 -233
  11. package/esm2020/src/ngx-dropdown-list/dropdown-list.module.mjs +0 -38
  12. package/esm2020/src/ngx-dropdown-list/filter/input-filter.component.mjs +0 -44
  13. package/esm2020/src/ngx-dropdown-list/group-item/group-item.component.mjs +0 -25
  14. package/esm2020/src/ngx-dropdown-list/index.mjs +0 -3
  15. package/esm2020/src/ngx-dropdown-list/item/item.component.mjs +0 -77
  16. package/esm2020/src/ngx-dropdown-list/types/index.mjs +0 -3
  17. package/esm2020/src/ngx-dropdown-list/types/selection-group-items.types.mjs +0 -2
  18. package/esm2020/src/ngx-dropdown-list/types/selection-item.types.mjs +0 -2
  19. package/esm2020/src/ngx-dropdown-list/utils/util.mjs +0 -59
  20. package/fesm2015/ngx-dropdown-list.mjs +0 -854
  21. package/fesm2015/ngx-dropdown-list.mjs.map +0 -1
  22. package/fesm2020/ngx-dropdown-list.mjs.map +0 -1
  23. package/ngx-dropdown-list.d.ts +0 -5
  24. package/public_api.d.ts +0 -1
  25. package/src/ngx-dropdown-list/anchor/anchor.component.d.ts +0 -85
  26. package/src/ngx-dropdown-list/dropdown/dropdown.component.d.ts +0 -120
  27. package/src/ngx-dropdown-list/dropdown-list.module.d.ts +0 -14
  28. package/src/ngx-dropdown-list/filter/input-filter.component.d.ts +0 -26
  29. package/src/ngx-dropdown-list/group-item/group-item.component.d.ts +0 -14
  30. package/src/ngx-dropdown-list/index.d.ts +0 -2
  31. package/src/ngx-dropdown-list/item/item.component.d.ts +0 -43
  32. package/src/ngx-dropdown-list/types/index.d.ts +0 -2
  33. package/src/ngx-dropdown-list/types/selection-group-items.types.d.ts +0 -8
  34. package/src/ngx-dropdown-list/types/selection-item.types.d.ts +0 -9
  35. package/src/ngx-dropdown-list/utils/util.d.ts +0 -21
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-dropdown-list.mjs","sources":["../../src/ngx-dropdown-list/utils/util.ts","../../src/ngx-dropdown-list/anchor/anchor.component.ts","../../src/ngx-dropdown-list/filter/input-filter.component.ts","../../src/ngx-dropdown-list/item/item.component.ts","../../src/ngx-dropdown-list/group-item/group-item.component.ts","../../src/ngx-dropdown-list/dropdown/dropdown.component.ts","../../src/ngx-dropdown-list/dropdown-list.component.ts","../../ngx-dropdown-list.ts"],"sourcesContent":["/**\r\n * check whether the provided items contains group\r\n */\r\nexport function hasGroup(items): boolean {\r\n return items ? (items.find(item => item.group) != null) : false;\r\n}\r\n\r\n/**\r\n * clear all selections from the provide items.\r\n * @param items the dropdown items, can be group or item\r\n */\r\nexport function clearAllSelection(items: any): void {\r\n if (hasGroup(items)) {\r\n for (const groupItem of items) {\r\n if (groupItem.items) {\r\n groupItem.items.filter(item => item.selected).forEach(item => item.selected = false);\r\n }\r\n }\r\n } else {\r\n // clear the selection of previous selected item\r\n items.filter(item => item.selected).forEach(item => item.selected = false);\r\n }\r\n}\r\n\r\n/**\r\n * stop all propagation and default actions\r\n */\r\nexport function stopPropagationAndDefault(event: Event): void {\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n}\r\n\r\n/**\r\n * check whether the provided value is number of not\r\n */\r\nexport function isNumber(value: any): boolean {\r\n return !(value == null || isNaN(value) || value.length === 0);\r\n}\r\n\r\n/**\r\n * get the selected item from the items list (including item and group)\r\n */\r\nexport function getFirstSelectedItem(items: any): any {\r\n if (!items) {\r\n return undefined;\r\n }\r\n let selectedItem;\r\n if (hasGroup(items)) {\r\n for (const item of items) {\r\n selectedItem = item.items ? item.items.find(subItem => subItem.selected) : undefined;\r\n if (selectedItem) {\r\n break;\r\n }\r\n }\r\n } else {\r\n selectedItem = items ? items.find(item => item.selected) : undefined;\r\n }\r\n return selectedItem;\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport {stopPropagationAndDefault, isNumber} from '../utils/util';\r\nimport {CommonModule, DecimalPipe} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anchor',\r\n template: `\r\n <span #anchor tabindex=\"2\" [ngClass]=\"anchorClass\" (window:resize)=\"onResize()\"\r\n (mousedown)=\"onAnchorClick($event)\" (blur)=\"onAnchorBlur($event)\"> {{anchorDisplayText}}\r\n <span #selectionClearance class=\"selection-clearance\" (mousedown)=\"onClearanceClick($event)\" *ngIf=\"showClearanceFlag\">&times;</span>\r\n </span>\r\n `,\r\n styleUrls: ['./anchor.component.scss'],\r\n imports: [CommonModule],\r\n providers: [DecimalPipe]\r\n})\r\n\r\nexport class AnchorComponent {\r\n /**\r\n * Child element reference of anchor\r\n */\r\n @ViewChild('anchor', { read: ElementRef }) anchorRef: ElementRef;\r\n\r\n /**\r\n * bind to [placeHolder] for displaying the place holder string of the anchor.\r\n */\r\n @Input() placeHolder: string;\r\n /**\r\n * bind to [checkbox] for checking whether the clearance flag should be shown or not.\r\n */\r\n @Input() checkbox = false;\r\n /**\r\n * bind to [suffixText] for displaying the suffix of the selected text of anchor\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)\r\n */\r\n @Input() allowClear = true;\r\n /**\r\n * bind to [formatNumber] for show formatted number text\r\n */\r\n @Input() formatNumber: boolean;\r\n /**\r\n * bind to [selectedText] for displaying the selected text on anchor\r\n */\r\n @Input() selectedText: any;\r\n /**\r\n * bind to [openStatus], it's the visibility status of dropdown, for showing the arrow on anchor\r\n */\r\n @Input() openStatus = false;\r\n /**\r\n * bind to [disabled] for disabling the anchor\r\n */\r\n @Input() disabled = false;\r\n /**\r\n * will be triggered when clicking the anchor\r\n */\r\n @Output() anchorClick = new EventEmitter<any>();\r\n /**\r\n * will be triggered when clicking the clearance\r\n */\r\n @Output() clearanceClick = new EventEmitter<any>();\r\n\r\n /**\r\n * length of anchor element, used for calculate the string length of the anchor displayed text.\r\n */\r\n anchorLength: number;\r\n\r\n constructor(private _decimalPipe: DecimalPipe) {}\r\n\r\n /**\r\n * flag for showing the clearance flag\r\n */\r\n get showClearanceFlag(): boolean {\r\n return !this.checkbox && this.selectedText && this.allowClear;\r\n }\r\n\r\n /**\r\n * the text displays on anchor\r\n */\r\n get anchorDisplayText(): string {\r\n let anchorDisplayText = this.selectedText ? (this.formatNumber ? (isNumber(this.selectedText) ?\r\n this._decimalPipe.transform(this.selectedText, '1.0-2') : this.selectedText) :\r\n this.selectedText) + (this.suffixText ? this.suffixText : '') : this.placeHolder;\r\n\r\n let charLength = 1;\r\n if (this.showClearanceFlag && this.anchorLength > 0) {\r\n charLength = Math.floor((this.anchorLength - 50) / 7);\r\n } else {\r\n charLength = Math.floor((this.anchorLength - 50) / 7);\r\n }\r\n\r\n if (anchorDisplayText.length > charLength) {\r\n anchorDisplayText = anchorDisplayText.slice(0, charLength - 2) + '...';\r\n }\r\n return anchorDisplayText;\r\n }\r\n\r\n /**\r\n * anchor CSS class\r\n */\r\n get anchorClass(): string {\r\n let anchorClassStatusPart;\r\n let anchorClassFontColor;\r\n if (this.disabled) {\r\n anchorClassStatusPart = 'selection-anchor-disabled';\r\n anchorClassFontColor = 'place-holder';\r\n } else {\r\n if (this.openStatus) {\r\n anchorClassStatusPart = 'selection-anchor-open';\r\n } else {\r\n anchorClassStatusPart = 'selection-anchor-close';\r\n }\r\n if (this.selectedText != null) {\r\n anchorClassFontColor = 'selected-item';\r\n } else {\r\n anchorClassFontColor = 'place-holder';\r\n }\r\n }\r\n return `${anchorClassStatusPart} ${anchorClassFontColor}`;\r\n }\r\n\r\n /**\r\n * triggered when clicking the anchor\r\n */\r\n onAnchorClick(event: Event): void {\r\n this.anchorClick.emit(event);\r\n }\r\n\r\n /**\r\n * triggered with (blur) of anchor\r\n */\r\n onAnchorBlur(event: Event): void {\r\n stopPropagationAndDefault(event);\r\n }\r\n\r\n /**\r\n * triggered when clicking the clearance\r\n */\r\n onClearanceClick(event: Event): void {\r\n this.clearanceClick.emit(event);\r\n }\r\n\r\n /**\r\n * triggered when resizing, get the clientWidth of anchor\r\n */\r\n onResize() {\r\n this.anchorLength = this.anchorRef ? this.anchorRef.nativeElement ? this.anchorRef.nativeElement.clientWidth : 0 : 0;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'input-filter',\r\n template: `\r\n <input type=\"text\" class=\"filter-box\" [(ngModel)]=\"filterValue\" (input)=\"onChange()\" (blur)=\"onFilterTextBlur($event)\">\r\n `,\r\n styleUrls: ['./input-filter.component.scss'],\r\n imports: [ FormsModule ]\r\n})\r\n\r\nexport class InputFilterComponent {\r\n /**\r\n * bind to [filterValue], the value of the filter\r\n */\r\n @Input() filterValue: string;\r\n /**\r\n * bind to [inputFilterBlur], emits with (blur) of filter input box\r\n */\r\n @Output() inputFilterBlur = new EventEmitter<string>();\r\n /**\r\n * bind to [filterValueChange], for 2-way binding of filterValue\r\n */\r\n @Output() filterValueChange = new EventEmitter<string>();\r\n\r\n /**\r\n * triggers with (blur) event, emits the (inputFilterBlur) event\r\n */\r\n onFilterTextBlur(event) {\r\n this.inputFilterBlur.emit(event);\r\n }\r\n\r\n /**\r\n * triggers with (input) event, emits the (filterValueChange) event for 2-way binding of filterValue\r\n */\r\n onChange() {\r\n this.filterValueChange.emit(this.filterValue);\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {SelectionItem} from '../types';\r\nimport {isNumber} from '../utils/util';\r\nimport { CommonModule, DecimalPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'item',\r\n template: `\r\n <label [class.container-checkbox]=\"checkbox\"\r\n [class.container-selection]=\"!checkbox && !item.selected\"\r\n [class.container-selection-selected]=\"!checkbox && item.selected\"\r\n [id]=\"item.id\" (mousedown)=\"onItemClick(item)\">\r\n {{needFormatNumber(item.text)? (item.text | number:'1.0-2') : item.text}}{{suffixText? suffixText : ''}}\r\n <ng-container *ngIf=\"checkbox\">\r\n <input type='checkbox' [id]=\"'checkbox-'+item.text\" (change)=\"onCheckStatusChange(item)\" [checked]=\"item.selected\">\r\n <span class=\"checkmark\" [id]=\"'checkmark-'+item.text\"></span>\r\n </ng-container>\r\n </label>`,\r\n styleUrls: ['./item.component.scss'],\r\n imports: [ DecimalPipe, CommonModule ]\r\n\r\n})\r\n\r\nexport class ItemComponent {\r\n /**\r\n * bind to [checkbox], the flag of checkbox mode\r\n */\r\n @Input() checkbox: boolean;\r\n /**\r\n * bind to [item], the dropdown option item\r\n */\r\n @Input() item: SelectionItem;\r\n /**\r\n * bind to [formatNumber], the flag for formatting the number\r\n */\r\n @Input() formatNumber = false;\r\n /**\r\n * bind to [suffixText], the suffixText that will be displayed in the dropdown\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [itemClick] event, triggers when clicking the item of dropdown\r\n */\r\n @Output() itemClick = new EventEmitter<string>();\r\n /**\r\n * bind to [checkStatusChange] event, triggers when check status is changed in checkbox mode.\r\n */\r\n @Output() checkStatusChange = new EventEmitter<string>();\r\n\r\n /**\r\n * check whether needs to format number for the provided text\r\n */\r\n needFormatNumber(value: any): boolean {\r\n return isNumber(value) && this.formatNumber;\r\n }\r\n\r\n /**\r\n * triggered when clicking the item, emits the [itemClick] event\r\n */\r\n onItemClick(item) {\r\n this.itemClick.emit(item);\r\n }\r\n\r\n /**\r\n * triggered when checking status changed in checkbox mode, emits the [checkStatusChange] event\r\n */\r\n onCheckStatusChange(item) {\r\n this.checkStatusChange.emit(item);\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {SelectionGroupItems} from '../types';\r\n\r\n@Component({\r\n selector: 'group-item',\r\n template: `\r\n <label class=\"dropdown-item dropdown-item-group\" (mousedown)=\"onItemGroupClick($event)\">{{item.group}}</label>\r\n `,\r\n styleUrls: ['./group-item.component.scss']\r\n})\r\n\r\nexport class GroupItemComponent {\r\n /**\r\n * bind to [item], the group item of dropdown\r\n */\r\n @Input() item: SelectionGroupItems;\r\n\r\n /**\r\n * prevent all clicking event from happening\r\n */\r\n onItemGroupClick(event) {\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild} from '@angular/core';\r\nimport {clearAllSelection, getFirstSelectedItem, hasGroup, stopPropagationAndDefault} from '../utils/util';\r\nimport { CommonModule } from '@angular/common';\r\nimport { InputFilterComponent } from '../filter/input-filter.component';\r\nimport { ItemComponent } from '../item/item.component';\r\nimport { GroupItemComponent } from '../group-item/group-item.component';\r\n\r\n@Component({\r\n selector: 'dropdown',\r\n template: `\r\n <span #dropdown class=\"dropdown\" tabindex=\"3\" (mousedown)=\"onItemsClick($event)\" (blur)=\"onItemsBlur($event)\" *ngIf=\"!disabled\" >\r\n <input-filter #filterInput tabindex=\"4\" *ngIf=\"filterBox && !checkbox\" [(filterValue)]=\"filterValue\" (inputFilterBlur)=\"onFilterTextBlur($event)\"></input-filter>\r\n <span #selectionOptions [ngClass]=\"optionsClass\">\r\n <ng-container *ngFor=\"let item of itemsValues\" >\r\n <ng-container *ngIf=\"item && item.group\">\r\n <group-item [item]=\"item\"></group-item>\r\n <item *ngFor=\"let subItem of item.items\" (itemClick)=\"onItemClick(subItem)\" (checkStatusChange)=\"toggleSelection(subItem)\"\r\n [item]=\"subItem\" [checkbox]=\"checkbox\" [formatNumber]=\"formatNumber\" [suffixText]=\"suffixText\">\r\n </item>\r\n </ng-container>\r\n <ng-container *ngIf=\"item && !item.group\">\r\n <item (itemClick)=\"onItemClick(item)\" (checkStatusChange)=\"toggleSelection(item)\"\r\n [item]=\"item\" [checkbox]=\"checkbox\" [formatNumber]=\"formatNumber\" [suffixText]=\"suffixText\">\r\n </item>\r\n </ng-container>\r\n </ng-container>\r\n </span>\r\n </span>\r\n `,\r\n styleUrls: ['./dropdown.component.scss'],\r\n imports: [ CommonModule, InputFilterComponent, ItemComponent, GroupItemComponent ]\r\n\r\n})\r\n\r\nexport class DropdownComponent implements OnChanges {\r\n /**\r\n * Child element reference of dropdown\r\n */\r\n @ViewChild('dropdown', { read: ElementRef }) dropdownRef: ElementRef;\r\n /**\r\n * Child element reference of filter input text\r\n */\r\n @ViewChild('filterInput', { read: ElementRef }) filterInputRef: ElementRef;\r\n /**\r\n * bind to [placeHolder] for displaying the place holder string of the anchor.\r\n */\r\n @Input() placeHolder: string;\r\n /**\r\n * bind to [items] for the options/groups in the dropdown\r\n */\r\n @Input() items: any[];\r\n /**\r\n * bind to [checkbox], the flag for multi-select (checkbox) mode.\r\n */\r\n @Input() checkbox = false;\r\n /**\r\n * bind to [selectedValue] for the value of the selected option from dropdown\r\n */\r\n @Input() selectedValue: any;\r\n /**\r\n * bind to [filterBox] for displaying the filter input text box\r\n */\r\n @Input() filterBox = false;\r\n /**\r\n * bind to [suffixText] for displaying the suffix of the selected text of anchor\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [disabled] for disabling the dropdown\r\n */\r\n @Input() disabled: boolean;\r\n /**\r\n * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)\r\n */\r\n @Input() allowClear = true;\r\n /**\r\n * bind to [formatNumber] for show formatted number text\r\n */\r\n @Input() formatNumber = false;\r\n /**\r\n * for 2-way binding of [selectedValue]\r\n */\r\n @Output() selectedValueChange = new EventEmitter<string>(true);\r\n /**\r\n * [selectionChange] event that will be triggered when changing of the selection\r\n */\r\n @Output() selectionChange = new EventEmitter<any>(true);\r\n /**\r\n * [dropdownBlur] event that will be triggered with (blur) of dropdown\r\n */\r\n @Output() dropdownBlur = new EventEmitter<any>();\r\n /**\r\n * [itemClick] event that will be triggered when clicking the option of dropdown\r\n */\r\n @Output() itemClick = new EventEmitter<any>();\r\n /**\r\n * filter value\r\n */\r\n filterValue: string;\r\n /**\r\n * flag of clicking dropdown. It's to prevent (blur) of dropdown from happening in checkbox mode.\r\n */\r\n private _clickedItems = false;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['items']) {\r\n this._checkSelectionChange(changes['items'].previousValue, changes['items'].currentValue);\r\n }\r\n }\r\n\r\n /**\r\n * triggered when clicking the dropdown\r\n */\r\n onItemsClick(event: any): void {\r\n if (event.offsetX > (event.target.clientWidth + event.target.clientLeft)) {\r\n stopPropagationAndDefault(event);\r\n return;\r\n }\r\n // should ignore clicking on filter\r\n if (this.checkbox && event.target.type !== 'text') {\r\n this._clickedItems = true;\r\n }\r\n }\r\n\r\n /**\r\n * triggered when clicking the item\r\n */\r\n onItemClick(currentItem): void {\r\n if (!this.checkbox) {\r\n this.selectedValue = this._getItemValue(currentItem); // currentItem.value != null ? currentItem.value : currentItem.text;\r\n clearAllSelection(this.items);\r\n // set the selection of current one\r\n currentItem.selected = true;\r\n this.itemClick.emit(currentItem);\r\n this._onSelectionChange(this.selectedValue);\r\n }\r\n }\r\n\r\n /**\r\n * triggers with (blur) event of filter input box\r\n */\r\n onFilterTextBlur(event): void {\r\n this.dropdownBlur.emit(event);\r\n }\r\n\r\n /**\r\n * triggers with (blur) event of dropdown\r\n */\r\n onItemsBlur(event): void {\r\n if (this.checkbox) {\r\n if (this._clickedItems) {\r\n // in checkbox mode, this blur event will be ignored when clicking the dropdown (check the checkbox)\r\n event.target.focus();\r\n this._clickedItems = false;\r\n return;\r\n }\r\n }\r\n this.dropdownBlur.emit(event);\r\n }\r\n\r\n /**\r\n * toggle the selection when checking status changed (in checkbox mode)\r\n */\r\n toggleSelection(item: {id: string, value?: any, text: any, selected?: boolean}): void {\r\n item.selected = !item.selected;\r\n this.selectionChange.emit(this._getItemValue(item)); // item.value != null ? item.value : item.text);\r\n }\r\n\r\n /**\r\n * items values list after applying the filter\r\n */\r\n get itemsValues(): any[] {\r\n let filter;\r\n if (this.filterValue) {\r\n filter = this.filterValue.toUpperCase();\r\n }\r\n\r\n if (filter == null) {\r\n return this.items;\r\n }\r\n if (!this.items || this.items.length === 0) {\r\n return [];\r\n }\r\n if (hasGroup(this.items)) {\r\n const items = [];\r\n this.items.forEach(groupItem => {\r\n if (groupItem.group != null && groupItem.group.toString().toUpperCase().includes(filter)) {\r\n // if groupItem contains the filters, the groupItem needs to be displayed as well\r\n items.push(groupItem);\r\n } else {\r\n const filteredItems = groupItem.items.filter(item => item.text != null && item.text.toString().toUpperCase().includes(filter));\r\n if (filteredItems && filteredItems.length > 0) {\r\n items.push({group: groupItem.group, items: filteredItems});\r\n }\r\n }\r\n });\r\n return items;\r\n } else {\r\n return this.items.filter(item => (item.text != null && item.text.toString().toUpperCase().includes(filter)));\r\n }\r\n }\r\n /**\r\n * options CSS class\r\n */\r\n get optionsClass(): string {\r\n if (this.filterBox && !this.checkbox) {\r\n return 'options with-filter';\r\n } else {\r\n return 'options no-filter';\r\n }\r\n }\r\n\r\n /**\r\n * get item value. Return text if value is not available\r\n */\r\n private _getItemValue(item): any {\r\n return item ? item.value != null ? item.value : item.text : undefined;\r\n }\r\n\r\n /**\r\n * selection changed, emits events: (selectedValueChange) and (selectionChange);\r\n */\r\n private _onSelectionChange(value) {\r\n this.selectedValueChange.emit(value);\r\n this.selectionChange.emit(value);\r\n }\r\n\r\n /**\r\n * check whether the selection is changed. Emits relative events when if changed.\r\n */\r\n private _checkSelectionChange(previousValue, currentValue) {\r\n const curSelectedItem = getFirstSelectedItem(currentValue);\r\n const lastSelectedItem = getFirstSelectedItem(previousValue);\r\n const curSelectedItemId = curSelectedItem ? curSelectedItem.id : undefined;\r\n const lastSelectedItemId = lastSelectedItem ? lastSelectedItem.id : undefined;\r\n if (curSelectedItemId !== lastSelectedItemId && !this.checkbox) {\r\n this._onSelectionChange(this._getItemValue(curSelectedItem));\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport {clearAllSelection, getFirstSelectedItem, stopPropagationAndDefault} from './utils/util';\r\nimport { AnchorComponent } from './anchor/anchor.component';\r\nimport { DropdownComponent } from './dropdown/dropdown.component';\r\n\r\n@Component({\r\n selector: 'ngx-dropdown-list',\r\n template: `\r\n <span class=\"ngx-select\">\r\n <anchor (anchorClick)=\"onAnchorClick($event)\" (clearanceClick)=\"onClearanceClick($event)\"\r\n [checkbox]=\"multiSelection\"\r\n [formatNumber]=\"formatNumber\"\r\n [suffixText]=\"suffixText\"\r\n [placeHolder]=\"placeHolder\"\r\n [allowClear]=\"allowClear\"\r\n [openStatus]=\"dropdownVisibility\"\r\n [selectedText]=\"selectedText\"\r\n [disabled]=\"disabled\">\r\n </anchor>\r\n <dropdown #dropdown (dropdownBlur) = \"onItemsBlur()\" (selectionChange)=\"onSelectionChange($event)\"\r\n [items]=\"items\"\r\n [checkbox]=\"multiSelection\"\r\n [filterBox]=\"filterBox\"\r\n [formatNumber]=\"formatNumber\"\r\n [suffixText]=\"suffixText\"\r\n [(selectedValue)]=\"selectedValue\"\r\n (itemClick) = \"onItemClick()\"\r\n [disabled]=\"disabled\">\r\n </dropdown>\r\n </span>\r\n `,\r\n styleUrls: ['./dropdown-list.component.scss'],\r\n imports:[AnchorComponent, DropdownComponent]\r\n})\r\n\r\nexport class DropdownListComponent {\r\n @ViewChild('dropdown', { read: ElementRef }) dropdownRef: ElementRef;\r\n\r\n /**\r\n * bind to [placeHolder] for displaying the place holder string of the anchor.\r\n */\r\n @Input() placeHolder: string;\r\n /**\r\n * bind to [items] for the options/groups in the dropdown\r\n */\r\n @Input() items: any[];\r\n /**\r\n * bind to [multiSelection], the flag for multi-select (checkbox) mode.\r\n */\r\n @Input() multiSelection = false;\r\n /**\r\n * bind to [selectedValue] for the value of the selected option from dropdown\r\n */\r\n @Input() selectedValue: any;\r\n /**\r\n * bind to [filterBox] for displaying the filter input text box\r\n */\r\n @Input() filterBox = false;\r\n /**\r\n * bind to [suffixText] for displaying the suffix of the selected text of anchor\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [disabled] for disabling the dropdown\r\n */\r\n @Input() disabled: boolean;\r\n /**\r\n * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)\r\n */\r\n @Input() allowClear = true;\r\n /**\r\n * bind to [formatNumber] for show formatted number text\r\n */\r\n @Input() formatNumber = false;\r\n /**\r\n * for 2-way binding of [selectedValue], using async event to\r\n * prevent \"ExpressionChangedAfterItHasBeenCheckedError\".\r\n */\r\n @Output() selectedValueChange = new EventEmitter<string>(true);\r\n /**\r\n * [selectionChange] event that will be triggered when changing of the selection.\r\n * Using async event to prevent \"ExpressionChangedAfterItHasBeenCheckedError\".\r\n */\r\n @Output() selectionChange = new EventEmitter<any>(true);\r\n\r\n /**\r\n * visibility flag of drop down\r\n */\r\n dropdownVisibility = false;\r\n\r\n /**\r\n * current selected text\r\n */\r\n get selectedText(): any {\r\n if (!this.multiSelection) {\r\n const selectedItem = getFirstSelectedItem(this.items);\r\n return selectedItem ? selectedItem.text : undefined;\r\n }\r\n }\r\n\r\n /**\r\n * triggered with (selectionChange) event, emits (selectedValueChange) and (selectionChange)\r\n */\r\n onSelectionChange(event) {\r\n this.selectedValueChange.emit(event);\r\n this.selectionChange.emit(event);\r\n }\r\n\r\n /**\r\n * triggered with (anchorClick) event, controlling the \"open\" and \"close\" of the dropdown\r\n */\r\n onAnchorClick(event: Event): void {\r\n if (this.disabled) {\r\n stopPropagationAndDefault(event);\r\n return;\r\n }\r\n if (this._isSelectionOpen()) {\r\n this._hideItemList();\r\n } else {\r\n this._showItemsList();\r\n }\r\n stopPropagationAndDefault(event);\r\n }\r\n\r\n /**\r\n * triggered with (itemClick) event, closes the dropdown in non-checkbox mode\r\n */\r\n onItemClick(): void {\r\n if (!this.multiSelection) {\r\n this._hideItemList();\r\n }\r\n }\r\n\r\n /**\r\n * triggered with (clearanceClick) event, clearing all selections\r\n * and emits (selectedValueChange) and (selectionChange) event for empty value\r\n */\r\n onClearanceClick(event: Event): void {\r\n if (!this.multiSelection) {\r\n this.selectedValue = void 0;\r\n this.selectedValueChange.emit(undefined);\r\n this.selectionChange.emit(undefined);\r\n clearAllSelection(this.items);\r\n }\r\n stopPropagationAndDefault(event);\r\n }\r\n\r\n /**\r\n * triggered with (dropdownBlur) event, closes the dropdown\r\n */\r\n onItemsBlur(): void {\r\n if (this._isSelectionOpen()) {\r\n this._hideItemList();\r\n }\r\n }\r\n\r\n /**\r\n * close the dropdown\r\n */\r\n private _hideItemList(): void {\r\n // hide the dropdown element (has some problem for using CSS directly, using this as a workaround)\r\n this._dropdownElement.classList.remove('visible');\r\n this._dropdownElement.style.display = 'none';\r\n this.dropdownVisibility = false;\r\n }\r\n\r\n /**\r\n * open the dropdown\r\n */\r\n private _showItemsList(): void {\r\n // display the dropdown element (has some problem for using CSS directly, using this as a workaround)\r\n this._dropdownElement.classList.add('visible');\r\n this._dropdownElement.style.display = 'block';\r\n\r\n this.dropdownVisibility = true;\r\n\r\n // scrolling to the selected item\r\n if (this._selectedElement) {\r\n this._selectedElement.scrollIntoView({ behavior: 'auto', block: 'center' });\r\n }\r\n\r\n // setting the focus\r\n if (this.filterBox && !this.multiSelection) {\r\n this._filterInputElement.focus();\r\n } else {\r\n this._dropdownElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * visibility status of dropdown\r\n */\r\n private _isSelectionOpen(): boolean {\r\n return this.dropdownVisibility;\r\n }\r\n\r\n /**\r\n * get the real dropdown element (for focusing and visibility controlling), the <span> not the <dropdown>\r\n */\r\n private get _dropdownElement(): any {\r\n return this.dropdownRef ? this.dropdownRef.nativeElement ? this.dropdownRef.nativeElement.firstElementChild : null : null;\r\n }\r\n\r\n /**\r\n * get the real filter element (for focusing), the <input> not the <input-filter>\r\n */\r\n private get _filterInputElement(): any {\r\n return this._dropdownElement ?\r\n this._dropdownElement.firstElementChild ? this._dropdownElement.firstElementChild.firstElementChild : null : null;\r\n }\r\n\r\n /**\r\n * get the HTMLElement of selected item, for doing (scrollIntoView) scrolling to the selected item\r\n */\r\n private get _selectedElement(): HTMLElement {\r\n const selectedItem = getFirstSelectedItem(this.items);\r\n return selectedItem ? document.getElementById(selectedItem.id) as HTMLElement : undefined;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1"],"mappings":"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"}
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-dropdown-list",
3
- "version": "1.2.0",
3
+ "version": "21.0.1",
4
4
  "private": false,
5
5
  "author": {
6
6
  "name": "Kuang Cheng",
@@ -41,29 +41,21 @@
41
41
  "url": "https://github.com/ckyycc/ngx-dropdown-list/issues"
42
42
  },
43
43
  "peerDependencies": {
44
- "@angular/common": "^13.3.9",
45
- "@angular/core": "^13.3.9",
46
- "@angular/forms": "^13.3.9",
47
- "@angular/platform-browser": "^13.3.9",
48
- "zone.js": "^0.11.5"
44
+ "@angular/common": "^21.1.1",
45
+ "@angular/core": "^21.1.1",
46
+ "@angular/forms": "^21.1.1",
47
+ "@angular/platform-browser": "^21.1.1",
48
+ "zone.js": "^0.16.0"
49
49
  },
50
- "module": "fesm2015/ngx-dropdown-list.mjs",
51
- "es2020": "fesm2020/ngx-dropdown-list.mjs",
52
- "esm2020": "esm2020/ngx-dropdown-list.mjs",
53
- "fesm2020": "fesm2020/ngx-dropdown-list.mjs",
54
- "fesm2015": "fesm2015/ngx-dropdown-list.mjs",
55
- "typings": "ngx-dropdown-list.d.ts",
50
+ "module": "fesm2022/ngx-dropdown-list.mjs",
51
+ "typings": "types/ngx-dropdown-list.d.ts",
56
52
  "exports": {
57
53
  "./package.json": {
58
54
  "default": "./package.json"
59
55
  },
60
56
  ".": {
61
- "types": "./ngx-dropdown-list.d.ts",
62
- "esm2020": "./esm2020/ngx-dropdown-list.mjs",
63
- "es2020": "./fesm2020/ngx-dropdown-list.mjs",
64
- "es2015": "./fesm2015/ngx-dropdown-list.mjs",
65
- "node": "./fesm2015/ngx-dropdown-list.mjs",
66
- "default": "./fesm2020/ngx-dropdown-list.mjs"
57
+ "types": "./types/ngx-dropdown-list.d.ts",
58
+ "default": "./fesm2022/ngx-dropdown-list.mjs"
67
59
  }
68
60
  },
69
61
  "sideEffects": false,
@@ -1,106 +1,109 @@
1
- import { ElementRef, EventEmitter } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class DropdownListComponent {
4
- dropdownRef: ElementRef;
5
- /**
6
- * bind to [placeHolder] for displaying the place holder string of the anchor.
7
- */
8
- placeHolder: string;
9
- /**
10
- * bind to [items] for the options/groups in the dropdown
11
- */
12
- items: any[];
13
- /**
14
- * bind to [multiSelection], the flag for multi-select (checkbox) mode.
15
- */
16
- multiSelection: boolean;
17
- /**
18
- * bind to [selectedValue] for the value of the selected option from dropdown
19
- */
20
- selectedValue: any;
21
- /**
22
- * bind to [filterBox] for displaying the filter input text box
23
- */
24
- filterBox: boolean;
25
- /**
26
- * bind to [suffixText] for displaying the suffix of the selected text of anchor
27
- */
28
- suffixText: string;
29
- /**
30
- * bind to [disabled] for disabling the dropdown
31
- */
32
- disabled: boolean;
33
- /**
34
- * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)
35
- */
36
- allowClear: boolean;
37
- /**
38
- * bind to [formatNumber] for show formatted number text
39
- */
40
- formatNumber: boolean;
41
- /**
42
- * for 2-way binding of [selectedValue], using async event to
43
- * prevent "ExpressionChangedAfterItHasBeenCheckedError".
44
- */
45
- selectedValueChange: EventEmitter<string>;
46
- /**
47
- * [selectionChange] event that will be triggered when changing of the selection.
48
- * Using async event to prevent "ExpressionChangedAfterItHasBeenCheckedError".
49
- */
50
- selectionChange: EventEmitter<any>;
51
- /**
52
- * visibility flag of drop down
53
- */
54
- dropdownVisibility: boolean;
55
- /**
56
- * current selected text
57
- */
58
- get selectedText(): any;
59
- /**
60
- * triggered with (selectionChange) event, emits (selectedValueChange) and (selectionChange)
61
- */
62
- onSelectionChange(event: any): void;
63
- /**
64
- * triggered with (anchorClick) event, controlling the "open" and "close" of the dropdown
65
- */
66
- onAnchorClick(event: Event): void;
67
- /**
68
- * triggered with (itemClick) event, closes the dropdown in non-checkbox mode
69
- */
70
- onItemClick(): void;
71
- /**
72
- * triggered with (clearanceClick) event, clearing all selections
73
- * and emits (selectedValueChange) and (selectionChange) event for empty value
74
- */
75
- onClearanceClick(event: Event): void;
76
- /**
77
- * triggered with (dropdownBlur) event, closes the dropdown
78
- */
79
- onItemsBlur(): void;
80
- /**
81
- * close the dropdown
82
- */
83
- private _hideItemList;
84
- /**
85
- * open the dropdown
86
- */
87
- private _showItemsList;
88
- /**
89
- * visibility status of dropdown
90
- */
91
- private _isSelectionOpen;
92
- /**
93
- * get the real dropdown element (for focusing and visibility controlling), the <span> not the <dropdown>
94
- */
95
- private get _dropdownElement();
96
- /**
97
- * get the real filter element (for focusing), the <input> not the <input-filter>
98
- */
99
- private get _filterInputElement();
100
- /**
101
- * get the HTMLElement of selected item, for doing (scrollIntoView) scrolling to the selected item
102
- */
103
- private get _selectedElement();
104
- static ɵfac: i0.ɵɵFactoryDeclaration<DropdownListComponent, never>;
105
- static ɵcmp: i0.ɵɵComponentDeclaration<DropdownListComponent, "ngx-dropdown-list", never, { "placeHolder": "placeHolder"; "items": "items"; "multiSelection": "multiSelection"; "selectedValue": "selectedValue"; "filterBox": "filterBox"; "suffixText": "suffixText"; "disabled": "disabled"; "allowClear": "allowClear"; "formatNumber": "formatNumber"; }, { "selectedValueChange": "selectedValueChange"; "selectionChange": "selectionChange"; }, never, never>;
106
- }
1
+ import * as i0 from '@angular/core';
2
+ import { ElementRef, EventEmitter } from '@angular/core';
3
+
4
+ declare class DropdownListComponent {
5
+ dropdownRef: ElementRef;
6
+ /**
7
+ * bind to [placeHolder] for displaying the place holder string of the anchor.
8
+ */
9
+ placeHolder: string;
10
+ /**
11
+ * bind to [items] for the options/groups in the dropdown
12
+ */
13
+ items: any[];
14
+ /**
15
+ * bind to [multiSelection], the flag for multi-select (checkbox) mode.
16
+ */
17
+ multiSelection: boolean;
18
+ /**
19
+ * bind to [selectedValue] for the value of the selected option from dropdown
20
+ */
21
+ selectedValue: any;
22
+ /**
23
+ * bind to [filterBox] for displaying the filter input text box
24
+ */
25
+ filterBox: boolean;
26
+ /**
27
+ * bind to [suffixText] for displaying the suffix of the selected text of anchor
28
+ */
29
+ suffixText: string;
30
+ /**
31
+ * bind to [disabled] for disabling the dropdown
32
+ */
33
+ disabled: boolean;
34
+ /**
35
+ * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)
36
+ */
37
+ allowClear: boolean;
38
+ /**
39
+ * bind to [formatNumber] for show formatted number text
40
+ */
41
+ formatNumber: boolean;
42
+ /**
43
+ * for 2-way binding of [selectedValue], using async event to
44
+ * prevent "ExpressionChangedAfterItHasBeenCheckedError".
45
+ */
46
+ selectedValueChange: EventEmitter<string>;
47
+ /**
48
+ * [selectionChange] event that will be triggered when changing of the selection.
49
+ * Using async event to prevent "ExpressionChangedAfterItHasBeenCheckedError".
50
+ */
51
+ selectionChange: EventEmitter<any>;
52
+ /**
53
+ * visibility flag of drop down
54
+ */
55
+ dropdownVisibility: boolean;
56
+ /**
57
+ * current selected text
58
+ */
59
+ get selectedText(): any;
60
+ /**
61
+ * triggered with (selectionChange) event, emits (selectedValueChange) and (selectionChange)
62
+ */
63
+ onSelectionChange(event: any): void;
64
+ /**
65
+ * triggered with (anchorClick) event, controlling the "open" and "close" of the dropdown
66
+ */
67
+ onAnchorClick(event: Event): void;
68
+ /**
69
+ * triggered with (itemClick) event, closes the dropdown in non-checkbox mode
70
+ */
71
+ onItemClick(): void;
72
+ /**
73
+ * triggered with (clearanceClick) event, clearing all selections
74
+ * and emits (selectedValueChange) and (selectionChange) event for empty value
75
+ */
76
+ onClearanceClick(event: Event): void;
77
+ /**
78
+ * triggered with (dropdownBlur) event, closes the dropdown
79
+ */
80
+ onItemsBlur(): void;
81
+ /**
82
+ * close the dropdown
83
+ */
84
+ private _hideItemList;
85
+ /**
86
+ * open the dropdown
87
+ */
88
+ private _showItemsList;
89
+ /**
90
+ * visibility status of dropdown
91
+ */
92
+ private _isSelectionOpen;
93
+ /**
94
+ * get the real dropdown element (for focusing and visibility controlling), the <span> not the <dropdown>
95
+ */
96
+ private get _dropdownElement();
97
+ /**
98
+ * get the real filter element (for focusing), the <input> not the <input-filter>
99
+ */
100
+ private get _filterInputElement();
101
+ /**
102
+ * get the HTMLElement of selected item, for doing (scrollIntoView) scrolling to the selected item
103
+ */
104
+ private get _selectedElement();
105
+ static ɵfac: i0.ɵɵFactoryDeclaration<DropdownListComponent, never>;
106
+ static ɵcmp: i0.ɵɵComponentDeclaration<DropdownListComponent, "ngx-dropdown-list", never, { "placeHolder": { "alias": "placeHolder"; "required": false; }; "items": { "alias": "items"; "required": false; }; "multiSelection": { "alias": "multiSelection"; "required": false; }; "selectedValue": { "alias": "selectedValue"; "required": false; }; "filterBox": { "alias": "filterBox"; "required": false; }; "suffixText": { "alias": "suffixText"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "allowClear": { "alias": "allowClear"; "required": false; }; "formatNumber": { "alias": "formatNumber"; "required": false; }; }, { "selectedValueChange": "selectedValueChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
107
+ }
108
+
109
+ export { DropdownListComponent };
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3Bkb3duLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9uZ3gtZHJvcGRvd24tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
@@ -1,2 +0,0 @@
1
- export * from './src/ngx-dropdown-list/index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL25neC1kcm9wZG93bi1saXN0L2luZGV4JztcclxuIl19
@@ -1,149 +0,0 @@
1
- import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { stopPropagationAndDefault, isNumber } from '../utils/util';
3
- import { DecimalPipe } from '@angular/common';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- export class AnchorComponent {
7
- constructor(_decimalPipe) {
8
- this._decimalPipe = _decimalPipe;
9
- /**
10
- * bind to [checkbox] for checking whether the clearance flag should be shown or not.
11
- */
12
- this.checkbox = false;
13
- /**
14
- * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)
15
- */
16
- this.allowClear = true;
17
- /**
18
- * bind to [openStatus], it's the visibility status of dropdown, for showing the arrow on anchor
19
- */
20
- this.openStatus = false;
21
- /**
22
- * bind to [disabled] for disabling the anchor
23
- */
24
- this.disabled = false;
25
- /**
26
- * will be triggered when clicking the anchor
27
- */
28
- this.anchorClick = new EventEmitter();
29
- /**
30
- * will be triggered when clicking the clearance
31
- */
32
- this.clearanceClick = new EventEmitter();
33
- }
34
- /**
35
- * flag for showing the clearance flag
36
- */
37
- get showClearanceFlag() {
38
- return !this.checkbox && this.selectedText && this.allowClear;
39
- }
40
- /**
41
- * the text displays on anchor
42
- */
43
- get anchorDisplayText() {
44
- let anchorDisplayText = this.selectedText ? (this.formatNumber ? (isNumber(this.selectedText) ?
45
- this._decimalPipe.transform(this.selectedText, '1.0-2') : this.selectedText) :
46
- this.selectedText) + (this.suffixText ? this.suffixText : '') : this.placeHolder;
47
- let charLength = 1;
48
- if (this.showClearanceFlag && this.anchorLength > 0) {
49
- charLength = Math.floor((this.anchorLength - 50) / 7);
50
- }
51
- else {
52
- charLength = Math.floor((this.anchorLength - 50) / 7);
53
- }
54
- if (anchorDisplayText.length > charLength) {
55
- anchorDisplayText = anchorDisplayText.slice(0, charLength - 2) + '...';
56
- }
57
- return anchorDisplayText;
58
- }
59
- /**
60
- * anchor CSS class
61
- */
62
- get anchorClass() {
63
- let anchorClassStatusPart;
64
- let anchorClassFontColor;
65
- if (this.disabled) {
66
- anchorClassStatusPart = 'selection-anchor-disabled';
67
- anchorClassFontColor = 'place-holder';
68
- }
69
- else {
70
- if (this.openStatus) {
71
- anchorClassStatusPart = 'selection-anchor-open';
72
- }
73
- else {
74
- anchorClassStatusPart = 'selection-anchor-close';
75
- }
76
- if (this.selectedText != null) {
77
- anchorClassFontColor = 'selected-item';
78
- }
79
- else {
80
- anchorClassFontColor = 'place-holder';
81
- }
82
- }
83
- return `${anchorClassStatusPart} ${anchorClassFontColor}`;
84
- }
85
- /**
86
- * triggered when clicking the anchor
87
- */
88
- onAnchorClick(event) {
89
- this.anchorClick.emit(event);
90
- }
91
- /**
92
- * triggered with (blur) of anchor
93
- */
94
- onAnchorBlur(event) {
95
- stopPropagationAndDefault(event);
96
- }
97
- /**
98
- * triggered when clicking the clearance
99
- */
100
- onClearanceClick(event) {
101
- this.clearanceClick.emit(event);
102
- }
103
- /**
104
- * triggered when resizing, get the clientWidth of anchor
105
- */
106
- onResize() {
107
- this.anchorLength = this.anchorRef ? this.anchorRef.nativeElement ? this.anchorRef.nativeElement.clientWidth : 0 : 0;
108
- }
109
- }
110
- AnchorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AnchorComponent, deps: [{ token: i1.DecimalPipe }], target: i0.ɵɵFactoryTarget.Component });
111
- AnchorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AnchorComponent, selector: "anchor", inputs: { placeHolder: "placeHolder", checkbox: "checkbox", suffixText: "suffixText", allowClear: "allowClear", formatNumber: "formatNumber", selectedText: "selectedText", openStatus: "openStatus", disabled: "disabled" }, outputs: { anchorClick: "anchorClick", clearanceClick: "clearanceClick" }, providers: [DecimalPipe], viewQueries: [{ propertyName: "anchorRef", first: true, predicate: ["anchor"], descendants: true, read: ElementRef }], ngImport: i0, template: `
112
- <span #anchor tabindex="2" [ngClass]="anchorClass" (window:resize)="onResize()"
113
- (mousedown)="onAnchorClick($event)" (blur)="onAnchorBlur($event)"> {{anchorDisplayText}}
114
- <span #selectionClearance class="selection-clearance" (mousedown)="onClearanceClick($event)" *ngIf="showClearanceFlag">&times;</span>
115
- </span>
116
- `, isInline: true, styles: ["@charset \"UTF-8\";*,*:before,*:after{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.vertical-center,.selection-anchor-close:after,.selection-anchor-open:after,.selection-anchor-disabled:after{position:absolute;top:50%;transform:translateY(-50%)}.hover-box,.selection-anchor-close:hover{outline:0;box-shadow:0 0 6px #23adff;border-radius:4px}.anchor-box,.selection-anchor-disabled,.selection-anchor,.selection-anchor-close,.selection-anchor-open{height:100%;border-radius:4px;width:100%;position:relative;display:inline-block;padding:8px 12px 5px;border:1px solid;outline:0;box-shadow:inset 0 1px 1px #00000013;box-sizing:border-box;white-space:nowrap}.selection-anchor,.selection-anchor-close,.selection-anchor-open{cursor:pointer}.selection-anchor .selection-clearance,.selection-anchor-close .selection-clearance,.selection-anchor-open .selection-clearance{position:absolute;right:35px;font-weight:700}.selection-anchor .selection-clearance:hover,.selection-anchor-close .selection-clearance:hover,.selection-anchor-open .selection-clearance:hover{color:#000}.selection-anchor:focus,.selection-anchor-close:focus,.selection-anchor-open:focus{box-shadow:inset 0 1px 1px #00000013,0 0 8px #66afe999;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;border-color:#66afe9}.selection-anchor-disabled{border-color:#ccc;cursor:default;pointer-events:none;background:#f8f8f8;filter:opacity(50%)}.selection-anchor-disabled:after{font-size:9px;content:\"\\25bc\";right:10px;padding-bottom:3px}.selection-anchor-open{border-bottom:none;border-bottom-right-radius:0;border-bottom-left-radius:0;border-color:#66afe9}.selection-anchor-open:after{font-size:9px;content:\"\\25b2\";right:10px;padding-bottom:3px}.selection-anchor-close{border-color:#ccc}.selection-anchor-close:after{font-size:9px;content:\"\\25bc\";right:10px;padding-bottom:3px}.place-holder{color:#999}.selected-item{color:#495057}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AnchorComponent, decorators: [{
118
- type: Component,
119
- args: [{ selector: 'anchor', template: `
120
- <span #anchor tabindex="2" [ngClass]="anchorClass" (window:resize)="onResize()"
121
- (mousedown)="onAnchorClick($event)" (blur)="onAnchorBlur($event)"> {{anchorDisplayText}}
122
- <span #selectionClearance class="selection-clearance" (mousedown)="onClearanceClick($event)" *ngIf="showClearanceFlag">&times;</span>
123
- </span>
124
- `, providers: [DecimalPipe], styles: ["@charset \"UTF-8\";*,*:before,*:after{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.vertical-center,.selection-anchor-close:after,.selection-anchor-open:after,.selection-anchor-disabled:after{position:absolute;top:50%;transform:translateY(-50%)}.hover-box,.selection-anchor-close:hover{outline:0;box-shadow:0 0 6px #23adff;border-radius:4px}.anchor-box,.selection-anchor-disabled,.selection-anchor,.selection-anchor-close,.selection-anchor-open{height:100%;border-radius:4px;width:100%;position:relative;display:inline-block;padding:8px 12px 5px;border:1px solid;outline:0;box-shadow:inset 0 1px 1px #00000013;box-sizing:border-box;white-space:nowrap}.selection-anchor,.selection-anchor-close,.selection-anchor-open{cursor:pointer}.selection-anchor .selection-clearance,.selection-anchor-close .selection-clearance,.selection-anchor-open .selection-clearance{position:absolute;right:35px;font-weight:700}.selection-anchor .selection-clearance:hover,.selection-anchor-close .selection-clearance:hover,.selection-anchor-open .selection-clearance:hover{color:#000}.selection-anchor:focus,.selection-anchor-close:focus,.selection-anchor-open:focus{box-shadow:inset 0 1px 1px #00000013,0 0 8px #66afe999;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;border-color:#66afe9}.selection-anchor-disabled{border-color:#ccc;cursor:default;pointer-events:none;background:#f8f8f8;filter:opacity(50%)}.selection-anchor-disabled:after{font-size:9px;content:\"\\25bc\";right:10px;padding-bottom:3px}.selection-anchor-open{border-bottom:none;border-bottom-right-radius:0;border-bottom-left-radius:0;border-color:#66afe9}.selection-anchor-open:after{font-size:9px;content:\"\\25b2\";right:10px;padding-bottom:3px}.selection-anchor-close{border-color:#ccc}.selection-anchor-close:after{font-size:9px;content:\"\\25bc\";right:10px;padding-bottom:3px}.place-holder{color:#999}.selected-item{color:#495057}\n"] }]
125
- }], ctorParameters: function () { return [{ type: i1.DecimalPipe }]; }, propDecorators: { anchorRef: [{
126
- type: ViewChild,
127
- args: ['anchor', { read: ElementRef }]
128
- }], placeHolder: [{
129
- type: Input
130
- }], checkbox: [{
131
- type: Input
132
- }], suffixText: [{
133
- type: Input
134
- }], allowClear: [{
135
- type: Input
136
- }], formatNumber: [{
137
- type: Input
138
- }], selectedText: [{
139
- type: Input
140
- }], openStatus: [{
141
- type: Input
142
- }], disabled: [{
143
- type: Input
144
- }], anchorClick: [{
145
- type: Output
146
- }], clearanceClick: [{
147
- type: Output
148
- }] } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9uZ3gtZHJvcGRvd24tbGlzdC9hbmNob3IvYW5jaG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFDLHlCQUF5QixFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0saUJBQWlCLENBQUM7OztBQWM1QyxNQUFNLE9BQU8sZUFBZTtJQW9EMUIsWUFBb0IsWUFBeUI7UUFBekIsaUJBQVksR0FBWixZQUFZLENBQWE7UUExQzdDOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUsxQjs7V0FFRztRQUNNLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFTM0I7O1dBRUc7UUFDTSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQjs7V0FFRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNoRDs7V0FFRztRQUNPLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQU9ILENBQUM7SUFFakQ7O09BRUc7SUFDSCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxpQkFBaUI7UUFDbkIsSUFBSSxpQkFBaUIsR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFD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LGFBRVUsQ0FBQyxXQUFXLENBQUM7a0dBT21CLFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLaEMsV0FBVztzQkFBbkIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlJLFdBQVc7c0JBQXBCLE1BQU07Z0JBSUcsY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7c3RvcFByb3BhZ2F0aW9uQW5kRGVmYXVsdCwgaXNOdW1iZXJ9IGZyb20gJy4uL3V0aWxzL3V0aWwnO1xyXG5pbXBvcnQge0RlY2ltYWxQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbmNob3InLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8c3BhbiAjYW5jaG9yIHRhYmluZGV4PVwiMlwiIFtuZ0NsYXNzXT1cImFuY2hvckNsYXNzXCIgKHdpbmRvdzpyZXNpemUpPVwib25SZXNpemUoKVwiXHJcbiAgICAgICAgICAobW91c2Vkb3duKT1cIm9uQW5jaG9yQ2xpY2soJGV2ZW50KVwiIChibHVyKT1cIm9uQW5jaG9yQmx1cigkZXZlbnQpXCI+IHt7YW5jaG9yRGlzcGxheVRleHR9fVxyXG4gICAgICA8c3BhbiAjc2VsZWN0aW9uQ2xlYXJhbmNlIGNsYXNzPVwic2VsZWN0aW9uLWNsZWFyYW5jZVwiIChtb3VzZWRvd24pPVwib25DbGVhcmFuY2VDbGljaygkZXZlbnQpXCIgKm5nSWY9XCJzaG93Q2xlYXJhbmNlRmxhZ1wiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbiAgYCxcclxuICBzdHlsZVVybHM6IFsnLi9hbmNob3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtEZWNpbWFsUGlwZV1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBBbmNob3JDb21wb25lbnQge1xyXG4gIC8qKlxyXG4gICAqIENoaWxkIGVsZW1lbnQgcmVmZXJlbmNlIG9mIGFuY2hvclxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2FuY2hvcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBhbmNob3JSZWY6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW3BsYWNlSG9sZGVyXSBmb3IgZGlzcGxheWluZyB0aGUgcGxhY2UgaG9sZGVyIHN0cmluZyBvZiB0aGUgYW5jaG9yLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBsYWNlSG9sZGVyOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbY2hlY2tib3hdIGZvciBjaGVja2luZyB3aGV0aGVyIHRoZSBjbGVhcmFuY2UgZmxhZyBzaG91bGQgYmUgc2hvd24gb3Igbm90LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNoZWNrYm94ID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbc3VmZml4VGV4dF0gZm9yIGRpc3BsYXlpbmcgdGhlIHN1ZmZpeCBvZiB0aGUgc2VsZWN0ZWQgdGV4dCBvZiBhbmNob3JcclxuICAgKi9cclxuICBASW5wdXQoKSBzdWZmaXhUZXh0OiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbYWxsb3dDbGVhcl0gZm9yIGVuYWJsaW5nIHRoZSBjbGVhcmFuY2UgKGNsZWFyYW5jZSBpcyBub3QgYXZhaWFibGUgd2hlbiBjaGVja2JveCBpcyBlbmFibGVkKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFsbG93Q2xlYXIgPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW2Zvcm1hdE51bWJlcl0gZm9yIHNob3cgZm9ybWF0dGVkIG51bWJlciB0ZXh0XHJcbiAgICovXHJcbiAgQElucHV0KCkgZm9ybWF0TnVtYmVyOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW3NlbGVjdGVkVGV4dF0gZm9yIGRpc3BsYXlpbmcgdGhlIHNlbGVjdGVkIHRleHQgb24gYW5jaG9yXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRUZXh0OiBhbnk7XHJcbiAgLyoqXHJcbiAgICogYmluZCB0byBbb3BlblN0YXR1c10sIGl0J3MgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIGRyb3Bkb3duLCBmb3Igc2hvd2luZyB0aGUgYXJyb3cgb24gYW5jaG9yXHJcbiAgICovXHJcbiAgQElucHV0KCkgb3BlblN0YXR1cyA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW2Rpc2FibGVkXSBmb3IgZGlzYWJsaW5nIHRoZSBhbmNob3JcclxuICAgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gY2xpY2tpbmcgdGhlIGFuY2hvclxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBhbmNob3JDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIC8qKlxyXG4gICAqIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gY2xpY2tpbmcgdGhlIGNsZWFyYW5jZVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBjbGVhcmFuY2VDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiBsZW5ndGggb2YgYW5jaG9yIGVsZW1lbnQsIHVzZWQgZm9yIGNhbGN1bGF0ZSB0aGUgc3RyaW5nIGxlbmd0aCBvZiB0aGUgYW5jaG9yIGRpc3BsYXllZCB0ZXh0LlxyXG4gICAqL1xyXG4gIGFuY2hvckxlbmd0aDogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIGZsYWcgZm9yIHNob3dpbmcgdGhlIGNsZWFyYW5jZSBmbGFnXHJcbiAgICovXHJcbiAgZ2V0IHNob3dDbGVhcmFuY2VGbGFnKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmNoZWNrYm94ICYmIHRoaXMuc2VsZWN0ZWRUZXh0ICYmIHRoaXMuYWxsb3dDbGVhcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHRoZSB0ZXh0IGRpc3BsYXlzIG9uIGFuY2hvclxyXG4gICAqL1xyXG4gIGdldCBhbmNob3JEaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGFuY2hvckRpc3BsYXlUZXh0ID0gIHRoaXMuc2VsZWN0ZWRUZXh0ID8gKHRoaXMuZm9ybWF0TnVtYmVyID8gKGlzTnVtYmVyKHRoaXMuc2VsZWN0ZWRUZXh0KSA/XHJcbiAgICAgIHRoaXMuX2RlY2ltYWxQaXBlLnRyYW5zZm9ybSh0aGlzLnNlbGVjdGVkVGV4dCwgJzEuMC0yJykgOiB0aGlzLnNlbGVjdGVkVGV4dCkgOlxyXG4gICAgICB0aGlzLnNlbGVjdGVkVGV4dCkgKyAodGhpcy5zdWZmaXhUZXh0ID8gdGhpcy5zdWZmaXhUZXh0IDogJycpIDogdGhpcy5wbGFjZUhvbGRlcjtcclxuXHJcbiAgICBsZXQgY2hhckxlbmd0aCA9IDE7XHJcbiAgICBpZiAodGhpcy5zaG93Q2xlYXJhbmNlRmxhZyAmJiB0aGlzLmFuY2hvckxlbmd0aCA+IDApIHtcclxuICAgICAgY2hhckxlbmd0aCA9IE1hdGguZmxvb3IoKHRoaXMuYW5jaG9yTGVuZ3RoIC0gNTApIC8gNyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGFyTGVuZ3RoID0gTWF0aC5mbG9vcigodGhpcy5hbmNob3JMZW5ndGggLSA1MCkgLyA3KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYW5jaG9yRGlzcGxheVRleHQubGVuZ3RoID4gY2hhckxlbmd0aCkge1xyXG4gICAgICBhbmNob3JEaXNwbGF5VGV4dCA9IGFuY2hvckRpc3BsYXlUZXh0LnNsaWNlKDAsIGNoYXJMZW5ndGggLSAyKSArICcuLi4nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFuY2hvckRpc3BsYXlUZXh0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogYW5jaG9yIENTUyBjbGFzc1xyXG4gICAqL1xyXG4gIGdldCBhbmNob3JDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgbGV0IGFuY2hvckNsYXNzU3RhdHVzUGFydDtcclxuICAgIGxldCBhbmNob3JDbGFzc0ZvbnRDb2xvcjtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGFuY2hvckNsYXNzU3RhdHVzUGFydCA9ICdzZWxlY3Rpb24tYW5jaG9yLWRpc2FibGVkJztcclxuICAgICAgYW5jaG9yQ2xhc3NGb250Q29sb3IgPSAncGxhY2UtaG9sZGVyJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5TdGF0dXMpIHtcclxuICAgICAgICBhbmNob3JDbGFzc1N0YXR1c1BhcnQgPSAnc2VsZWN0aW9uLWFuY2hvci1vcGVuJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhbmNob3JDbGFzc1N0YXR1c1BhcnQgPSAnc2VsZWN0aW9uLWFuY2hvci1jbG9zZSc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUZXh0ICE9IG51bGwpIHtcclxuICAgICAgICBhbmNob3JDbGFzc0ZvbnRDb2xvciA9ICdzZWxlY3RlZC1pdGVtJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhbmNob3JDbGFzc0ZvbnRDb2xvciA9ICdwbGFjZS1ob2xkZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7YW5jaG9yQ2xhc3NTdGF0dXNQYXJ0fSAke2FuY2hvckNsYXNzRm9udENvbG9yfWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0cmlnZ2VyZWQgd2hlbiBjbGlja2luZyB0aGUgYW5jaG9yXHJcbiAgICovXHJcbiAgb25BbmNob3JDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuYW5jaG9yQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0cmlnZ2VyZWQgd2l0aCAoYmx1cikgb2YgYW5jaG9yXHJcbiAgICovXHJcbiAgb25BbmNob3JCbHVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgc3RvcFByb3BhZ2F0aW9uQW5kRGVmYXVsdChldmVudCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0cmlnZ2VyZWQgd2hlbiBjbGlja2luZyB0aGUgY2xlYXJhbmNlXHJcbiAgICovXHJcbiAgb25DbGVhcmFuY2VDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJhbmNlQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0cmlnZ2VyZWQgd2hlbiByZXNpemluZywgZ2V0IHRoZSBjbGllbnRXaWR0aCBvZiBhbmNob3JcclxuICAgKi9cclxuICBvblJlc2l6ZSgpIHtcclxuICAgIHRoaXMuYW5jaG9yTGVuZ3RoID0gdGhpcy5hbmNob3JSZWYgPyB0aGlzLmFuY2hvclJlZi5uYXRpdmVFbGVtZW50ID8gdGhpcy5hbmNob3JSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA6IDAgOiAwO1xyXG4gIH1cclxufVxyXG4iXX0=