{"version":3,"file":"primeng-picklist.umd.js","sources":["../../src/app/components/picklist/picklist.ts","../../src/app/components/picklist/primeng-picklist.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, AfterContentInit, AfterViewChecked, Input, Output, ContentChildren, QueryList, TemplateRef, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'primeng/button';\nimport {SharedModule,PrimeTemplate,FilterService} from 'primeng/api';\nimport {DomHandler} from 'primeng/dom';\nimport {RippleModule} from 'primeng/ripple';\nimport {ObjectUtils} from 'primeng/utils';\n\n@Component({\n selector: 'p-pickList',\n template: `\n
\n
\n \n \n \n \n
\n
\n
\n
{{sourceHeader}}
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n \n \n
\n
\n
\n
{{targetHeader}}
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n \n \n \n \n
\n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./picklist.css']\n})\nexport class PickList implements AfterViewChecked,AfterContentInit {\n\n @Input() source: any[];\n\n @Input() target: any[];\n\n @Input() sourceHeader: string;\n\n @Input() targetHeader: string;\n\n @Input() responsive: boolean;\n\n @Input() filterBy: string;\n\n @Input() filterLocale: string;\n\n @Input() trackBy: Function = (index: number, item: any) => item;\n\n @Input() sourceTrackBy: Function;\n\n @Input() targetTrackBy: Function;\n\n @Input() showSourceFilter: boolean = true;\n\n @Input() showTargetFilter: boolean = true;\n\n @Input() metaKeySelection: boolean = true;\n\n @Input() dragdrop: boolean;\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() sourceStyle: any;\n\n @Input() targetStyle: any;\n\n @Input() showSourceControls: boolean = true;\n\n @Input() showTargetControls: boolean = true;\n\n @Input() sourceFilterPlaceholder: string;\n\n @Input() targetFilterPlaceholder: string;\n\n @Input() disabled: boolean = false;\n\n @Input() ariaSourceFilterLabel: string;\n\n @Input() ariaTargetFilterLabel: string;\n\n @Input() filterMatchMode: string = \"contains\";\n\n @Output() onMoveToSource: EventEmitter = new EventEmitter();\n\n @Output() onMoveAllToSource: EventEmitter = new EventEmitter();\n\n @Output() onMoveAllToTarget: EventEmitter = new EventEmitter();\n\n @Output() onMoveToTarget: EventEmitter = new EventEmitter();\n\n @Output() onSourceReorder: EventEmitter = new EventEmitter();\n\n @Output() onTargetReorder: EventEmitter = new EventEmitter();\n\n @Output() onSourceSelect: EventEmitter = new EventEmitter();\n\n @Output() onTargetSelect: EventEmitter = new EventEmitter();\n\n @Output() onSourceFilter: EventEmitter = new EventEmitter();\n\n @Output() onTargetFilter: EventEmitter = new EventEmitter();\n\n @ViewChild('sourcelist') listViewSourceChild: ElementRef;\n\n @ViewChild('targetlist') listViewTargetChild: ElementRef;\n\n @ViewChild('sourceFilter') sourceFilterViewChild: ElementRef;\n\n @ViewChild('targetFilter') targetFilterViewChild: ElementRef;\n\n @ContentChildren(PrimeTemplate) templates: QueryList;\n\n public itemTemplate: TemplateRef;\n\n public visibleOptionsSource: any[];\n\n public visibleOptionsTarget: any[];\n\n selectedItemsSource: any[] = [];\n\n selectedItemsTarget: any[] = [];\n\n reorderedListElement: any;\n\n draggedItemIndexSource: number;\n\n draggedItemIndexTarget: number;\n\n dragOverItemIndexSource: number;\n\n dragOverItemIndexTarget: number;\n\n dragging: boolean;\n\n movedUp: boolean;\n\n movedDown: boolean;\n\n itemTouched: boolean;\n\n filterValueSource: string;\n\n filterValueTarget: string;\n\n fromListType: number;\n\n toListType: number;\n\n onListItemDroppoint: boolean;\n\n listHighlightTarget: boolean;\n\n listHighlightSource: boolean;\n\n emptyMessageSourceTemplate: TemplateRef;\n\n emptyMessageTargetTemplate: TemplateRef;\n\n readonly SOURCE_LIST = -1;\n\n readonly TARGET_LIST = 1;\n\n constructor(public el: ElementRef, public cd: ChangeDetectorRef, public filterService: FilterService) {}\n\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch(item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n\n case 'emptymessagesource':\n this.emptyMessageSourceTemplate = item.template;\n break;\n\n case 'emptymessagetarget':\n this.emptyMessageTargetTemplate = item.template;\n break;\n\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n\n ngAfterViewChecked() {\n if (this.movedUp||this.movedDown) {\n let listItems = DomHandler.find(this.reorderedListElement, 'li.p-highlight');\n let listItem;\n\n if (this.movedUp)\n listItem = listItems[0];\n else\n listItem = listItems[listItems.length - 1];\n\n DomHandler.scrollInView(this.reorderedListElement, listItem);\n this.movedUp = false;\n this.movedDown = false;\n this.reorderedListElement = null;\n }\n }\n\n onItemClick(event, item: any, selectedItems: any[], callback: EventEmitter) {\n if (this.disabled) {\n return;\n }\n\n let index = this.findIndexInSelection(item,selectedItems);\n let selected = (index != -1);\n let metaSelection = this.itemTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = (event.metaKey||event.ctrlKey||event.shiftKey);\n\n if (selected && metaKey) {\n selectedItems.splice(index, 1);\n }\n else {\n if (!metaKey) {\n selectedItems.length = 0;\n }\n selectedItems.push(item);\n }\n }\n else {\n if (selected)\n selectedItems.splice(index, 1);\n else\n selectedItems.push(item);\n }\n\n callback.emit({originalEvent: event, items: selectedItems});\n\n this.itemTouched = false;\n }\n\n onSourceItemDblClick() {\n if (this.disabled) {\n return;\n }\n\n this.moveRight();\n }\n\n onTargetItemDblClick() {\n if (this.disabled) {\n return;\n }\n\n this.moveLeft();\n }\n\n onFilter(event: KeyboardEvent, data: any[], listType: number) {\n let query = (( event.target).value.trim() as any).toLocaleLowerCase(this.filterLocale);\n this.filter(query, data, listType);\n }\n\n filter(query: string, data: any[], listType: number) {\n let searchFields = this.filterBy.split(',');\n\n if (listType === this.SOURCE_LIST) {\n this.filterValueSource = query;\n this.visibleOptionsSource = this.filterService.filter(data, searchFields, this.filterValueSource, this.filterMatchMode, this.filterLocale);\n this.onSourceFilter.emit({query: this.filterValueSource, value: this.visibleOptionsSource});\n }\n else if (listType === this.TARGET_LIST) {\n this.filterValueTarget = query;\n this.visibleOptionsTarget = this.filterService.filter(data, searchFields, this.filterValueTarget, this.filterMatchMode, this.filterLocale);\n this.onTargetFilter.emit({query: this.filterValueTarget, value: this.visibleOptionsTarget});\n }\n }\n\n isItemVisible(item: any, listType: number): boolean {\n if (listType == this.SOURCE_LIST)\n return this.isVisibleInList(this.visibleOptionsSource, item, this.filterValueSource);\n else\n return this.isVisibleInList(this.visibleOptionsTarget, item, this.filterValueTarget);\n }\n\n isVisibleInList(data: any[], item: any, filterValue: string): boolean {\n if (filterValue && filterValue.trim().length) {\n for(let i = 0; i < data.length; i++) {\n if (item == data[i]) {\n return true;\n }\n }\n }\n else {\n return true;\n }\n }\n\n onItemTouchEnd(event) {\n if (this.disabled) {\n return;\n }\n\n this.itemTouched = true;\n }\n\n private sortByIndexInList(items: any[], list: any) {\n return items.sort((item1, item2) =>\n this.findIndexInList(item1, list) - this.findIndexInList(item2, list));\n }\n\n moveUp(listElement, list, selectedItems, callback) {\n if (selectedItems && selectedItems.length) {\n selectedItems = this.sortByIndexInList(selectedItems, list);\n for(let i = 0; i < selectedItems.length; i++) {\n let selectedItem = selectedItems[i];\n let selectedItemIndex: number = this.findIndexInList(selectedItem, list);\n\n if (selectedItemIndex != 0) {\n let movedItem = list[selectedItemIndex];\n let temp = list[selectedItemIndex-1];\n list[selectedItemIndex-1] = movedItem;\n list[selectedItemIndex] = temp;\n }\n else {\n break;\n }\n }\n\n this.movedUp = true;\n this.reorderedListElement = listElement;\n callback.emit({items: selectedItems});\n }\n }\n\n moveTop(listElement, list, selectedItems, callback) {\n if (selectedItems && selectedItems.length) {\n selectedItems = this.sortByIndexInList(selectedItems, list);\n for(let i = 0; i < selectedItems.length; i++) {\n let selectedItem = selectedItems[i];\n let selectedItemIndex: number = this.findIndexInList(selectedItem, list);\n\n if (selectedItemIndex != 0) {\n let movedItem = list.splice(selectedItemIndex,1)[0];\n list.unshift(movedItem);\n }\n else {\n break;\n }\n }\n\n listElement.scrollTop = 0;\n callback.emit({items: selectedItems});\n }\n }\n\n moveDown(listElement, list, selectedItems, callback) {\n if (selectedItems && selectedItems.length) {\n selectedItems = this.sortByIndexInList(selectedItems, list);\n for(let i = selectedItems.length - 1; i >= 0; i--) {\n let selectedItem = selectedItems[i];\n let selectedItemIndex: number = this.findIndexInList(selectedItem, list);\n\n if (selectedItemIndex != (list.length - 1)) {\n let movedItem = list[selectedItemIndex];\n let temp = list[selectedItemIndex+1];\n list[selectedItemIndex+1] = movedItem;\n list[selectedItemIndex] = temp;\n }\n else {\n break;\n }\n }\n\n this.movedDown = true;\n this.reorderedListElement = listElement;\n callback.emit({items: selectedItems});\n }\n }\n\n moveBottom(listElement, list, selectedItems, callback) {\n if (selectedItems && selectedItems.length) {\n selectedItems = this.sortByIndexInList(selectedItems, list);\n for(let i = selectedItems.length - 1; i >= 0; i--) {\n let selectedItem = selectedItems[i];\n let selectedItemIndex: number = this.findIndexInList(selectedItem, list);\n\n if (selectedItemIndex != (list.length - 1)) {\n let movedItem = list.splice(selectedItemIndex,1)[0];\n list.push(movedItem);\n }\n else {\n break;\n }\n }\n\n listElement.scrollTop = listElement.scrollHeight;\n callback.emit({items: selectedItems});\n }\n }\n\n moveRight() {\n if (this.selectedItemsSource && this.selectedItemsSource.length) {\n for(let i = 0; i < this.selectedItemsSource.length; i++) {\n let selectedItem = this.selectedItemsSource[i];\n if (this.findIndexInList(selectedItem, this.target) == -1) {\n this.target.push(this.source.splice(this.findIndexInList(selectedItem, this.source),1)[0]);\n }\n }\n this.onMoveToTarget.emit({\n items: this.selectedItemsSource\n });\n this.selectedItemsSource = [];\n\n if (this.filterValueTarget) {\n this.filter(this.filterValueTarget, this.target, this.TARGET_LIST);\n }\n }\n }\n\n moveAllRight() {\n if (this.source) {\n let movedItems = [];\n\n for(let i = 0; i < this.source.length; i++) {\n if (this.isItemVisible(this.source[i], this.SOURCE_LIST)) {\n let removedItem = this.source.splice(i, 1)[0];\n this.target.push(removedItem);\n movedItems.push(removedItem);\n i--;\n }\n }\n\n this.onMoveAllToTarget.emit({\n items: movedItems\n });\n\n this.selectedItemsSource = [];\n\n if (this.filterValueTarget) {\n this.filter(this.filterValueTarget, this.target, this.TARGET_LIST);\n }\n }\n }\n\n moveLeft() {\n if (this.selectedItemsTarget && this.selectedItemsTarget.length) {\n for(let i = 0; i < this.selectedItemsTarget.length; i++) {\n let selectedItem = this.selectedItemsTarget[i];\n if (this.findIndexInList(selectedItem, this.source) == -1) {\n this.source.push(this.target.splice(this.findIndexInList(selectedItem, this.target),1)[0]);\n }\n }\n this.onMoveToSource.emit({\n items: this.selectedItemsTarget\n });\n\n this.selectedItemsTarget = [];\n\n if (this.filterValueSource) {\n this.filter(this.filterValueSource, this.source, this.SOURCE_LIST);\n }\n }\n }\n\n moveAllLeft() {\n if (this.target) {\n let movedItems = [];\n\n for(let i = 0; i < this.target.length; i++) {\n if (this.isItemVisible(this.target[i], this.TARGET_LIST)) {\n let removedItem = this.target.splice(i, 1)[0];\n this.source.push(removedItem);\n movedItems.push(removedItem);\n i--;\n }\n }\n\n this.onMoveAllToSource.emit({\n items: movedItems\n });\n\n this.selectedItemsTarget = [];\n\n if (this.filterValueSource) {\n this.filter(this.filterValueSource, this.source, this.SOURCE_LIST);\n }\n }\n }\n\n isSelected(item: any, selectedItems: any[]) {\n return this.findIndexInSelection(item, selectedItems) != -1;\n }\n\n findIndexInSelection(item: any, selectedItems: any[]): number {\n return this.findIndexInList(item, selectedItems);\n }\n\n findIndexInList(item: any, list: any): number {\n let index: number = -1;\n\n if (list) {\n for(let i = 0; i < list.length; i++) {\n if (list[i] == item) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n onDragStart(event: DragEvent, index: number, listType: number) {\n event.dataTransfer.setData('text', 'b'); // For firefox\n ( event.target).blur();\n this.dragging = true;\n this.fromListType = listType;\n\n if (listType === this.SOURCE_LIST)\n this.draggedItemIndexSource = index;\n else\n this.draggedItemIndexTarget = index;\n }\n\n onDragOver(event: DragEvent, index: number, listType: number) {\n if (this.dragging) {\n if (listType == this.SOURCE_LIST) {\n if (this.draggedItemIndexSource !== index && this.draggedItemIndexSource + 1 !== index || (this.fromListType === this.TARGET_LIST)) {\n this.dragOverItemIndexSource = index;\n event.preventDefault();\n }\n }\n else {\n if (this.draggedItemIndexTarget !== index && this.draggedItemIndexTarget + 1 !== index || (this.fromListType === this.SOURCE_LIST)) {\n this.dragOverItemIndexTarget = index;\n event.preventDefault();\n }\n }\n this.onListItemDroppoint = true;\n }\n }\n\n onDragLeave(event: DragEvent, listType: number) {\n this.dragOverItemIndexSource = null;\n this.dragOverItemIndexTarget = null;\n this.onListItemDroppoint = false;\n }\n\n onDrop(event: DragEvent, index: number, listType: number) {\n if (this.onListItemDroppoint) {\n if (listType === this.SOURCE_LIST) {\n if (this.fromListType === this.TARGET_LIST) {\n this.insert(this.draggedItemIndexTarget, this.target, index, this.source, this.onMoveToSource);\n }\n else {\n ObjectUtils.reorderArray(this.source, this.draggedItemIndexSource, (this.draggedItemIndexSource > index) ? index : (index === 0) ? 0 : index - 1);\n this.onSourceReorder.emit({items: this.source[this.draggedItemIndexSource]});\n }\n\n this.dragOverItemIndexSource = null;\n }\n else {\n if (this.fromListType === this.SOURCE_LIST) {\n this.insert(this.draggedItemIndexSource, this.source, index, this.target, this.onMoveToTarget);\n }\n else {\n ObjectUtils.reorderArray(this.target, this.draggedItemIndexTarget, (this.draggedItemIndexTarget > index) ? index : (index === 0) ? 0 : index - 1);\n this.onTargetReorder.emit({items: this.target[this.draggedItemIndexTarget]});\n }\n\n this.dragOverItemIndexTarget = null;\n }\n\n this.listHighlightTarget = false;\n this.listHighlightSource = false;\n event.preventDefault();\n }\n }\n\n onDragEnd(event: DragEvent) {\n this.dragging = false;\n }\n\n onListDrop(event: DragEvent, listType: number) {\n if (!this.onListItemDroppoint) {\n if (listType === this.SOURCE_LIST) {\n if (this.fromListType === this.TARGET_LIST) {\n this.insert(this.draggedItemIndexTarget, this.target, null, this.source, this.onMoveToSource);\n }\n }\n else {\n if (this.fromListType === this.SOURCE_LIST) {\n this.insert(this.draggedItemIndexSource, this.source, null, this.target, this.onMoveToTarget);\n }\n }\n\n this.listHighlightTarget = false;\n this.listHighlightSource = false;\n event.preventDefault();\n }\n }\n\n insert(fromIndex, fromList, toIndex, toList, callback) {\n const elementtomove = fromList[fromIndex];\n\n if (toIndex === null)\n toList.push(fromList.splice(fromIndex, 1)[0]);\n else\n toList.splice(toIndex, 0, fromList.splice(fromIndex, 1)[0]);\n\n callback.emit({\n items: [elementtomove]\n });\n }\n\n onListMouseMove(event: MouseEvent, listType: number) {\n if (this.dragging) {\n let moveListType = (listType == 0 ? this.listViewSourceChild : this.listViewTargetChild);\n let offsetY = moveListType.nativeElement.getBoundingClientRect().top + document.body.scrollTop;\n let bottomDiff = (offsetY + moveListType.nativeElement.clientHeight) - event.pageY;\n let topDiff = (event.pageY - offsetY);\n\n if (bottomDiff < 25 && bottomDiff > 0)\n moveListType.nativeElement.scrollTop += 15;\n else if (topDiff < 25 && topDiff > 0)\n moveListType.nativeElement.scrollTop -= 15;\n\n if (listType === this.SOURCE_LIST) {\n if (this.fromListType === this.TARGET_LIST)\n this.listHighlightSource = true;\n }\n else {\n if (this.fromListType === this.SOURCE_LIST)\n this.listHighlightTarget = true;\n }\n\n event.preventDefault();\n }\n }\n\n onListDragLeave() {\n this.listHighlightTarget = false;\n this.listHighlightSource = false;\n }\n\n resetFilter() {\n this.visibleOptionsSource = null;\n this.filterValueSource = null;\n this.visibleOptionsTarget = null;\n this.filterValueTarget = null;\n\n ( this.sourceFilterViewChild.nativeElement).value = '';\n ( this.targetFilterViewChild.nativeElement).value = '';\n }\n\n onItemKeydown(event: KeyboardEvent, item: any, selectedItems: any[], callback: EventEmitter) {\n let listItem = event.currentTarget;\n\n switch(event.which) {\n //down\n case 40:\n var nextItem = this.findNextItem(listItem);\n if (nextItem) {\n nextItem.focus();\n }\n\n event.preventDefault();\n break;\n\n //up\n case 38:\n var prevItem = this.findPrevItem(listItem);\n if (prevItem) {\n prevItem.focus();\n }\n\n event.preventDefault();\n break;\n\n //enter\n case 13:\n this.onItemClick(event, item, selectedItems, callback);\n event.preventDefault();\n break;\n }\n }\n\n findNextItem(item) {\n let nextItem = item.nextElementSibling;\n\n if (nextItem)\n return !DomHandler.hasClass(nextItem, 'p-picklist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;\n else\n return null;\n }\n\n findPrevItem(item) {\n let prevItem = item.previousElementSibling;\n\n if (prevItem)\n return !DomHandler.hasClass(prevItem, 'p-picklist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;\n else\n return null;\n }\n}\n\n@NgModule({\n imports: [CommonModule,ButtonModule,SharedModule,RippleModule],\n exports: [PickList,SharedModule],\n declarations: [PickList]\n})\nexport class PickListModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["EventEmitter","DomHandler","ObjectUtils","Component","ChangeDetectionStrategy","ViewEncapsulation","ElementRef","ChangeDetectorRef","FilterService","Input","Output","ViewChild","ContentChildren","PrimeTemplate","NgModule","CommonModule","ButtonModule","SharedModule","RippleModule"],"mappings":"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"}