primeng 15.4.21-lts → 15.4.23-lts

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 (56) hide show
  1. package/button/button.d.ts +0 -1
  2. package/esm2020/button/button.mjs +4 -4
  3. package/esm2020/inputnumber/inputnumber.mjs +9 -7
  4. package/esm2020/keyfilter/keyfilter.mjs +4 -2
  5. package/esm2020/multiselect/multiselect.mjs +3 -3
  6. package/esm2020/overlay/overlay.mjs +7 -3
  7. package/esm2020/scroller/scroller.mjs +3 -1
  8. package/esm2020/splitter/splitter.mjs +7 -5
  9. package/esm2020/table/table.mjs +5 -9
  10. package/esm2020/tooltip/tooltip.mjs +18 -13
  11. package/esm2020/tree/tree.mjs +7 -3
  12. package/fesm2015/primeng-button.mjs +3 -3
  13. package/fesm2015/primeng-button.mjs.map +1 -1
  14. package/fesm2015/primeng-inputnumber.mjs +9 -7
  15. package/fesm2015/primeng-inputnumber.mjs.map +1 -1
  16. package/fesm2015/primeng-keyfilter.mjs +3 -1
  17. package/fesm2015/primeng-keyfilter.mjs.map +1 -1
  18. package/fesm2015/primeng-multiselect.mjs +2 -2
  19. package/fesm2015/primeng-multiselect.mjs.map +1 -1
  20. package/fesm2015/primeng-overlay.mjs +6 -2
  21. package/fesm2015/primeng-overlay.mjs.map +1 -1
  22. package/fesm2015/primeng-scroller.mjs +2 -0
  23. package/fesm2015/primeng-scroller.mjs.map +1 -1
  24. package/fesm2015/primeng-splitter.mjs +6 -4
  25. package/fesm2015/primeng-splitter.mjs.map +1 -1
  26. package/fesm2015/primeng-table.mjs +4 -8
  27. package/fesm2015/primeng-table.mjs.map +1 -1
  28. package/fesm2015/primeng-tooltip.mjs +17 -12
  29. package/fesm2015/primeng-tooltip.mjs.map +1 -1
  30. package/fesm2015/primeng-tree.mjs +6 -2
  31. package/fesm2015/primeng-tree.mjs.map +1 -1
  32. package/fesm2020/primeng-button.mjs +3 -3
  33. package/fesm2020/primeng-button.mjs.map +1 -1
  34. package/fesm2020/primeng-inputnumber.mjs +8 -6
  35. package/fesm2020/primeng-inputnumber.mjs.map +1 -1
  36. package/fesm2020/primeng-keyfilter.mjs +3 -1
  37. package/fesm2020/primeng-keyfilter.mjs.map +1 -1
  38. package/fesm2020/primeng-multiselect.mjs +2 -2
  39. package/fesm2020/primeng-multiselect.mjs.map +1 -1
  40. package/fesm2020/primeng-overlay.mjs +6 -2
  41. package/fesm2020/primeng-overlay.mjs.map +1 -1
  42. package/fesm2020/primeng-scroller.mjs +2 -0
  43. package/fesm2020/primeng-scroller.mjs.map +1 -1
  44. package/fesm2020/primeng-splitter.mjs +6 -4
  45. package/fesm2020/primeng-splitter.mjs.map +1 -1
  46. package/fesm2020/primeng-table.mjs +4 -8
  47. package/fesm2020/primeng-table.mjs.map +1 -1
  48. package/fesm2020/primeng-tooltip.mjs +17 -12
  49. package/fesm2020/primeng-tooltip.mjs.map +1 -1
  50. package/fesm2020/primeng-tree.mjs +6 -2
  51. package/fesm2020/primeng-tree.mjs.map +1 -1
  52. package/inputnumber/inputnumber.d.ts +1 -0
  53. package/package.json +1 -1
  54. package/resources/components/splitter/splitter.css +4 -0
  55. package/splitter/splitter.d.ts +1 -1
  56. package/tooltip/tooltip.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"primeng-tree.mjs","sources":["../../src/app/components/tree/tree.ts","../../src/app/components/tree/primeng-tree.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n NgModule,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { BlockableUI, LicenseManager, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeDragDropService, TreeNode } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { CheckIcon } from 'primeng/icons/check';\nimport { ChevronDownIcon } from 'primeng/icons/chevrondown';\nimport { ChevronRightIcon } from 'primeng/icons/chevronright';\nimport { MinusIcon } from 'primeng/icons/minus';\nimport { SearchIcon } from 'primeng/icons/search';\nimport { SpinnerIcon } from 'primeng/icons/spinner';\nimport { RippleModule } from 'primeng/ripple';\nimport { Scroller, ScrollerModule, ScrollerOptions } from 'primeng/scroller';\nimport { ObjectUtils } from 'primeng/utils';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'p-treeNode',\n template: `\n <ng-template [ngIf]=\"node\">\n <li\n *ngIf=\"tree.droppableNodes\"\n class=\"p-treenode-droppoint\"\n [ngClass]=\"{ 'p-treenode-droppoint-active': draghoverPrev }\"\n (drop)=\"onDropPoint($event, -1)\"\n (dragover)=\"onDropPointDragOver($event)\"\n (dragenter)=\"onDropPointDragEnter($event, -1)\"\n (dragleave)=\"onDropPointDragLeave($event)\"\n ></li>\n <li *ngIf=\"!tree.horizontal\" [ngClass]=\"['p-treenode', node.styleClass || '', isLeaf() ? 'p-treenode-leaf' : '']\" [ngStyle]=\"{ height: itemSize + 'px' }\" [style]=\"node.style\">\n <div\n class=\"p-treenode-content\"\n [style.paddingLeft]=\"level * indentation + 'rem'\"\n (click)=\"onNodeClick($event)\"\n (contextmenu)=\"onNodeRightClick($event)\"\n (touchend)=\"onNodeTouchEnd()\"\n (drop)=\"onDropNode($event)\"\n (dragover)=\"onDropNodeDragOver($event)\"\n (dragenter)=\"onDropNodeDragEnter($event)\"\n (dragleave)=\"onDropNodeDragLeave($event)\"\n [draggable]=\"tree.draggableNodes\"\n (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragStop($event)\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"{ 'p-treenode-selectable': tree.selectionMode && node.selectable !== false, 'p-treenode-dragover': draghoverNode, 'p-highlight': isSelected() }\"\n role=\"treeitem\"\n (keydown)=\"onKeyDown($event)\"\n [attr.aria-posinset]=\"this.index + 1\"\n [attr.aria-expanded]=\"this.node.expanded\"\n [attr.aria-selected]=\"isSelected()\"\n [attr.aria-label]=\"node.label\"\n [attr.data-id]=\"node.key\"\n >\n <button type=\"button\" [attr.aria-label]=\"tree.togglerAriaLabel\" class=\"p-tree-toggler p-link\" (click)=\"toggle($event)\" pRipple tabindex=\"-1\">\n <ng-container *ngIf=\"!tree.togglerIconTemplate\">\n <ChevronRightIcon *ngIf=\"!node.expanded\" [styleClass]=\"'p-tree-toggler-icon'\" />\n <ChevronDownIcon *ngIf=\"node.expanded\" [styleClass]=\"'p-tree-toggler-icon'\" />\n </ng-container>\n <span *ngIf=\"tree.togglerIconTemplate\" class=\"p-tree-toggler-icon\">\n <ng-template *ngTemplateOutlet=\"tree.togglerIconTemplate; context: { $implicit: node.expanded }\"></ng-template>\n </span>\n </button>\n <div class=\"p-checkbox p-component\" [ngClass]=\"{ 'p-checkbox-disabled': node.selectable === false }\" *ngIf=\"tree.selectionMode == 'checkbox'\" [attr.aria-checked]=\"isSelected()\">\n <div class=\"p-checkbox-box\" [ngClass]=\"{ 'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected }\">\n <ng-container *ngIf=\"!tree.checkboxIconTemplate\">\n <CheckIcon *ngIf=\"isSelected()\" [styleClass]=\"'p-checkbox-icon'\" />\n <MinusIcon *ngIf=\"node.partialSelected\" [styleClass]=\"'p-checkbox-icon'\" />\n </ng-container>\n <ng-template *ngTemplateOutlet=\"tree.checkboxIconTemplate; context: { $implicit: isSelected(), partialSelected: node.partialSelected }\"></ng-template>\n </div>\n </div>\n <span [class]=\"getIcon()\" *ngIf=\"node.icon || node.expandedIcon || node.collapsedIcon\"></span>\n <span class=\"p-treenode-label\">\n <span *ngIf=\"!tree.getTemplateForNode(node)\">{{ node.label }}</span>\n <span *ngIf=\"tree.getTemplateForNode(node)\">\n <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: { $implicit: node }\"></ng-container>\n </span>\n </span>\n </div>\n <ul class=\"p-treenode-children\" style=\"display: none;\" *ngIf=\"!tree.virtualScroll && node.children && node.expanded\" [style.display]=\"node.expanded ? 'block' : 'none'\" role=\"group\">\n <p-treeNode\n *ngFor=\"let childNode of node.children; let firstChild = first; let lastChild = last; let index = index; trackBy: tree.trackBy\"\n [node]=\"childNode\"\n [parentNode]=\"node\"\n [firstChild]=\"firstChild\"\n [lastChild]=\"lastChild\"\n [index]=\"index\"\n [itemSize]=\"itemSize\"\n [level]=\"level + 1\"\n ></p-treeNode>\n </ul>\n </li>\n <li\n *ngIf=\"tree.droppableNodes && lastChild\"\n class=\"p-treenode-droppoint\"\n [ngClass]=\"{ 'p-treenode-droppoint-active': draghoverNext }\"\n (drop)=\"onDropPoint($event, 1)\"\n (dragover)=\"onDropPointDragOver($event)\"\n (dragenter)=\"onDropPointDragEnter($event, 1)\"\n (dragleave)=\"onDropPointDragLeave($event)\"\n ></li>\n <table *ngIf=\"tree.horizontal\" [class]=\"node.styleClass\">\n <tbody>\n <tr>\n <td class=\"p-treenode-connector\" *ngIf=\"!root\">\n <table class=\"p-treenode-connector-table\">\n <tbody>\n <tr>\n <td [ngClass]=\"{ 'p-treenode-connector-line': !firstChild }\"></td>\n </tr>\n <tr>\n <td [ngClass]=\"{ 'p-treenode-connector-line': !lastChild }\"></td>\n </tr>\n </tbody>\n </table>\n </td>\n <td class=\"p-treenode\" [ngClass]=\"{ 'p-treenode-collapsed': !node.expanded }\">\n <div\n class=\"p-treenode-content\"\n tabindex=\"0\"\n [ngClass]=\"{ 'p-treenode-selectable': tree.selectionMode, 'p-highlight': isSelected() }\"\n (click)=\"onNodeClick($event)\"\n (contextmenu)=\"onNodeRightClick($event)\"\n (touchend)=\"onNodeTouchEnd()\"\n (keydown)=\"onNodeKeydown($event)\"\n >\n <span *ngIf=\"!isLeaf()\" [ngClass]=\"'p-tree-toggler'\" (click)=\"toggle($event)\">\n <ng-container *ngIf=\"!tree.togglerIconTemplate\">\n <PlusIcon *ngIf=\"!node.expanded\" [styleClass]=\"'p-tree-toggler-icon'\" [ariaLabel]=\"tree.togglerAriaLabel\" />\n <MinusIcon *ngIf=\"node.expanded\" [styleClass]=\"'p-tree-toggler-icon'\" [ariaLabel]=\"tree.togglerAriaLabel\" />\n </ng-container>\n <span *ngIf=\"tree.togglerIconTemplate\" class=\"p-tree-toggler-icon\">\n <ng-template *ngTemplateOutlet=\"tree.togglerIconTemplate; context: { $implicit: node.expanded }\"></ng-template>\n </span>\n </span>\n <span [class]=\"getIcon()\" *ngIf=\"node.icon || node.expandedIcon || node.collapsedIcon\"></span>\n <span class=\"p-treenode-label\">\n <span *ngIf=\"!tree.getTemplateForNode(node)\">{{ node.label }}</span>\n <span *ngIf=\"tree.getTemplateForNode(node)\">\n <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: { $implicit: node }\"></ng-container>\n </span>\n </span>\n </div>\n </td>\n <td class=\"p-treenode-children-container\" *ngIf=\"node.children && node.expanded\" [style.display]=\"node.expanded ? 'table-cell' : 'none'\">\n <div class=\"p-treenode-children\">\n <p-treeNode *ngFor=\"let childNode of node.children; let firstChild = first; let lastChild = last; trackBy: tree.trackBy\" [node]=\"childNode\" [firstChild]=\"firstChild\" [lastChild]=\"lastChild\"></p-treeNode>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n})\nexport class UITreeNode implements OnInit {\n static ICON_CLASS: string = 'p-treenode-icon ';\n\n @Input() rowNode: any;\n\n @Input() node: TreeNode;\n\n @Input() parentNode: TreeNode;\n\n @Input() root: boolean;\n\n @Input() index: number;\n\n @Input() firstChild: boolean;\n\n @Input() lastChild: boolean;\n\n @Input() level: number;\n\n @Input() indentation: number;\n\n @Input() itemSize: number;\n\n tree: Tree;\n\n timeout: any;\n\n constructor(@Inject(forwardRef(() => Tree)) tree) {\n this.tree = tree as Tree;\n }\n\n draghoverPrev: boolean;\n\n draghoverNext: boolean;\n\n draghoverNode: boolean;\n\n ngOnInit() {\n this.node.parent = this.parentNode;\n if (this.parentNode) {\n this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));\n }\n }\n\n getIcon() {\n let icon: string;\n\n if (this.node.icon) icon = this.node.icon;\n else icon = this.node.expanded && this.node.children && this.node.children.length ? this.node.expandedIcon : this.node.collapsedIcon;\n\n return UITreeNode.ICON_CLASS + ' ' + icon;\n }\n\n isLeaf() {\n return this.tree.isNodeLeaf(this.node);\n }\n\n toggle(event: Event) {\n if (this.node.expanded) this.collapse(event);\n else this.expand(event);\n\n event.stopPropagation();\n }\n\n expand(event: Event) {\n this.node.expanded = true;\n if (this.tree.virtualScroll) {\n this.tree.updateSerializedValue();\n this.focusVirtualNode();\n }\n this.tree.onNodeExpand.emit({ originalEvent: event, node: this.node });\n }\n\n collapse(event: Event) {\n this.node.expanded = false;\n if (this.tree.virtualScroll) {\n this.tree.updateSerializedValue();\n this.focusVirtualNode();\n }\n this.tree.onNodeCollapse.emit({ originalEvent: event, node: this.node });\n }\n\n onNodeClick(event: MouseEvent) {\n this.tree.onNodeClick(event, this.node);\n }\n\n onNodeKeydown(event: KeyboardEvent) {\n if (event.which === 13) {\n this.tree.onNodeClick(event, this.node);\n }\n }\n\n onNodeTouchEnd() {\n this.tree.onNodeTouchEnd();\n }\n\n onNodeRightClick(event: MouseEvent) {\n this.tree.onNodeRightClick(event, this.node);\n }\n\n isSelected() {\n return this.tree.isSelected(this.node);\n }\n\n onDropPoint(event: Event, position: number) {\n event.preventDefault();\n let dragNode = this.tree.dragNode;\n let dragNodeIndex = this.tree.dragNodeIndex;\n let dragNodeScope = this.tree.dragNodeScope;\n let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? position === 1 || dragNodeIndex !== this.index - 1 : true;\n\n if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {\n let dropParams = { ...this.createDropPointEventMetadata(position) };\n\n if (this.tree.validateDrop) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.processPointDrop(dropParams);\n }\n });\n } else {\n this.processPointDrop(dropParams);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n\n this.draghoverPrev = false;\n this.draghoverNext = false;\n }\n\n processPointDrop(event) {\n let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;\n event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);\n let dropIndex = this.index;\n\n if (event.position < 0) {\n dropIndex = event.dragNodeSubNodes === newNodeList ? (event.dragNodeIndex > event.index ? event.index : event.index - 1) : event.index;\n newNodeList.splice(dropIndex, 0, event.dragNode);\n } else {\n dropIndex = newNodeList.length;\n newNodeList.push(event.dragNode);\n }\n\n this.tree.dragDropService.stopDrag({\n node: event.dragNode,\n subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n index: event.dragNodeIndex\n });\n }\n\n createDropPointEventMetadata(position) {\n return {\n dragNode: this.tree.dragNode,\n dragNodeIndex: this.tree.dragNodeIndex,\n dragNodeSubNodes: this.tree.dragNodeSubNodes,\n dropNode: this.node,\n index: this.index,\n position: position\n };\n }\n\n onDropPointDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n\n onDropPointDragEnter(event: Event, position: number) {\n if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n if (position < 0) this.draghoverPrev = true;\n else this.draghoverNext = true;\n }\n }\n\n onDropPointDragLeave(event: Event) {\n this.draghoverPrev = false;\n this.draghoverNext = false;\n }\n\n onDragStart(event) {\n if (this.tree.draggableNodes && this.node.draggable !== false) {\n event.dataTransfer.setData('text', 'data');\n\n this.tree.dragDropService.startDrag({\n tree: this,\n node: this.node,\n subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n index: this.index,\n scope: this.tree.draggableScope\n });\n } else {\n event.preventDefault();\n }\n }\n\n onDragStop(event) {\n this.tree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n index: this.index\n });\n }\n\n onDropNodeDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n if (this.tree.droppableNodes) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n onDropNode(event) {\n if (this.tree.droppableNodes && this.node.droppable !== false) {\n let dragNode = this.tree.dragNode;\n\n if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {\n let dropParams = { ...this.createDropNodeEventMetadata() };\n\n if (this.tree.validateDrop) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.processNodeDrop(dropParams);\n }\n });\n } else {\n this.processNodeDrop(dropParams);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.draghoverNode = false;\n }\n\n createDropNodeEventMetadata() {\n return {\n dragNode: this.tree.dragNode,\n dragNodeIndex: this.tree.dragNodeIndex,\n dragNodeSubNodes: this.tree.dragNodeSubNodes,\n dropNode: this.node\n };\n }\n\n processNodeDrop(event) {\n let dragNodeIndex = event.dragNodeIndex;\n event.dragNodeSubNodes.splice(dragNodeIndex, 1);\n\n if (event.dropNode.children) event.dropNode.children.push(event.dragNode);\n else event.dropNode.children = [event.dragNode];\n\n this.tree.dragDropService.stopDrag({\n node: event.dragNode,\n subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n index: dragNodeIndex\n });\n }\n\n onDropNodeDragEnter(event) {\n if (this.tree.droppableNodes && this.node.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n this.draghoverNode = true;\n }\n }\n\n onDropNodeDragLeave(event) {\n if (this.tree.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {\n this.draghoverNode = false;\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n const nodeElement = (<HTMLDivElement>event.target).parentElement.parentElement;\n\n if (nodeElement.nodeName !== 'P-TREENODE' || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild.nativeElement.style.display === 'block')) {\n return;\n }\n\n switch (event.which) {\n //down arrow\n case 40:\n const listElement = this.tree.droppableNodes ? nodeElement.children[1].children[1] : nodeElement.children[0].children[1];\n if (listElement && listElement.children.length > 0) {\n this.focusNode(listElement.children[0]);\n } else {\n const nextNodeElement = nodeElement.nextElementSibling;\n if (nextNodeElement) {\n this.focusNode(nextNodeElement);\n } else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n if (nextSiblingAncestor) {\n this.focusNode(nextSiblingAncestor);\n }\n }\n }\n event.preventDefault();\n break;\n\n //up arrow\n case 38:\n if (nodeElement.previousElementSibling) {\n this.focusNode(this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n this.focusNode(parentNodeElement);\n }\n }\n\n event.preventDefault();\n break;\n\n //right arrow\n case 39:\n if (!this.node.expanded && !this.tree.isNodeLeaf(this.node)) {\n this.expand(event);\n }\n event.preventDefault();\n break;\n\n //left arrow\n case 37:\n if (this.node.expanded) {\n this.collapse(event);\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n this.focusNode(parentNodeElement);\n }\n }\n\n event.preventDefault();\n break;\n\n //enter\n case 13:\n this.tree.onNodeClick(event, this.node);\n event.preventDefault();\n break;\n\n default:\n //no op\n break;\n }\n }\n\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling) return parentNodeElement.nextElementSibling;\n else return this.findNextSiblingOfAncestor(parentNodeElement);\n } else {\n return null;\n }\n }\n\n findLastVisibleDescendant(nodeElement) {\n const listElement = <HTMLElement>Array.from(nodeElement.children).find((el) => DomHandler.hasClass(el, 'p-treenode'));\n const childrenListElement = listElement.children[1];\n if (childrenListElement && childrenListElement.children.length > 0) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n } else {\n return nodeElement;\n }\n }\n\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement.parentElement.parentElement;\n\n return parentNodeElement.tagName === 'P-TREENODE' ? parentNodeElement : null;\n }\n\n focusNode(element) {\n if (this.tree.droppableNodes) element.children[1].children[0].focus();\n else element.children[0].children[0].focus();\n }\n\n focusVirtualNode() {\n this.timeout = setTimeout(() => {\n let node = DomHandler.findSingle(document.body, `[data-id=\"${this.node.key ?? this.node.data}\"]`);\n DomHandler.focus(node);\n }, 1);\n }\n}\n\n@Component({\n selector: 'p-tree',\n template: `\n <div\n [ngClass]=\"{ 'p-tree p-component': true, 'p-tree-selectable': selectionMode, 'p-treenode-dragover': dragHover, 'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex' }\"\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n *ngIf=\"!horizontal\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragenter)=\"onDragEnter()\"\n (dragleave)=\"onDragLeave($event)\"\n >\n <div class=\"p-tree-loading-overlay p-component-overlay\" *ngIf=\"loading\">\n <i *ngIf=\"loadingIcon\" [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n <ng-container *ngIf=\"!loadingIcon\">\n <SpinnerIcon *ngIf=\"!loadingIconTemplate\" [spin]=\"true\" [styleClass]=\"'p-tree-loading-icon'\" />\n <span *ngIf=\"loadingIconTemplate\" class=\"p-tree-loading-icon\">\n <ng-template *ngTemplateOutlet=\"loadingIconTemplate\"></ng-template>\n </span>\n </ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <div *ngIf=\"filter\" class=\"p-tree-filter-container\">\n <input #filter type=\"text\" autocomplete=\"off\" class=\"p-tree-filter p-inputtext p-component\" [attr.placeholder]=\"filterPlaceholder\" (keydown.enter)=\"$event.preventDefault()\" (input)=\"_filter($event.target.value)\" />\n <SearchIcon *ngIf=\"!filterIconTemplate\" [styleClass]=\"'p-tree-filter-icon'\" />\n <span *ngIf=\"filterIconTemplate\" class=\"p-tree-filter-icon\">\n <ng-template *ngTemplateOutlet=\"filterIconTemplate\"></ng-template>\n </span>\n </div>\n\n <p-scroller\n #scroller\n *ngIf=\"virtualScroll\"\n [items]=\"serializedValue\"\n [tabindex]=\"-1\"\n styleClass=\"p-tree-wrapper\"\n [style]=\"{ height: scrollHeight !== 'flex' ? scrollHeight : undefined }\"\n [scrollHeight]=\"scrollHeight !== 'flex' ? undefined : '100%'\"\n [itemSize]=\"virtualScrollItemSize || _virtualNodeHeight\"\n [lazy]=\"lazy\"\n (onScroll)=\"onScroll.emit($event)\"\n (onScrollIndexChange)=\"onScrollIndexChange.emit($event)\"\n (onLazyLoad)=\"onLazyLoad.emit($event)\"\n [options]=\"virtualScrollOptions\"\n >\n <ng-template pTemplate=\"content\" let-items let-scrollerOptions=\"options\">\n <ul *ngIf=\"items\" class=\"p-tree-container\" [ngClass]=\"scrollerOptions.contentStyleClass\" [style]=\"scrollerOptions.contentStyle\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n <p-treeNode\n #treeNode\n *ngFor=\"let rowNode of items; let firstChild = first; let lastChild = last; let index = index; trackBy: trackBy\"\n [level]=\"rowNode.level\"\n [rowNode]=\"rowNode\"\n [node]=\"rowNode.node\"\n [firstChild]=\"firstChild\"\n [lastChild]=\"lastChild\"\n [index]=\"getIndex(scrollerOptions, index)\"\n [itemSize]=\"scrollerOptions.itemSize\"\n [indentation]=\"indentation\"\n ></p-treeNode>\n </ul>\n </ng-template>\n <ng-container *ngIf=\"loaderTemplate\">\n <ng-template pTemplate=\"loader\" let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"loaderTemplate; context: { options: scrollerOptions }\"></ng-container>\n </ng-template>\n </ng-container>\n </p-scroller>\n <ng-container *ngIf=\"!virtualScroll\">\n <div #wrapper class=\"p-tree-wrapper\" [style.max-height]=\"scrollHeight\">\n <ul class=\"p-tree-container\" *ngIf=\"getRootNode()\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n <p-treeNode\n *ngFor=\"let node of getRootNode(); let firstChild = first; let lastChild = last; let index = index; trackBy: trackBy\"\n [node]=\"node\"\n [firstChild]=\"firstChild\"\n [lastChild]=\"lastChild\"\n [index]=\"index\"\n [level]=\"0\"\n ></p-treeNode>\n </ul>\n </div>\n </ng-container>\n\n <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (getRootNode() == null || getRootNode().length === 0)\">\n <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n {{ emptyMessageLabel }}\n </ng-container>\n <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n <div [ngClass]=\"{ 'p-tree p-tree-horizontal p-component': true, 'p-tree-selectable': selectionMode }\" [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"horizontal\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <div class=\"p-tree-loading-mask p-component-overlay\" *ngIf=\"loading\">\n <i *ngIf=\"loadingIcon\" [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n <ng-container *ngIf=\"!loadingIcon\">\n <SpinnerIcon *ngIf=\"!loadingIconTemplate\" [spin]=\"true\" [styleClass]=\"'p-tree-loading-icon'\" />\n <span *ngIf=\"loadingIconTemplate\" class=\"p-tree-loading-icon\">\n <ng-template *ngTemplateOutlet=\"loadingIconTemplate\"></ng-template>\n </span>\n </ng-container>\n </div>\n <table *ngIf=\"value && value[0]\">\n <p-treeNode [node]=\"value[0]\" [root]=\"true\"></p-treeNode>\n </table>\n <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (getRootNode() == null || getRootNode().length === 0)\">\n <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n {{ emptyMessageLabel }}\n </ng-container>\n <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./tree.css'],\n host: {\n class: 'p-element'\n }\n})\nexport class Tree implements OnInit, AfterContentInit, OnChanges, OnDestroy, BlockableUI, AfterViewInit {\n @Input() value: TreeNode[];\n\n @Input() selectionMode: string;\n\n @Input() selection: any;\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() contextMenu: any;\n\n @Input() layout: string = 'vertical';\n\n @Input() draggableScope: any;\n\n @Input() droppableScope: any;\n\n @Input() draggableNodes: boolean;\n\n @Input() droppableNodes: boolean;\n\n @Input() metaKeySelection: boolean = true;\n\n @Input() propagateSelectionUp: boolean = true;\n\n @Input() propagateSelectionDown: boolean = true;\n\n @Input() loading: boolean;\n\n @Input() loadingIcon: string;\n\n @Input() emptyMessage: string = '';\n\n @Input() ariaLabel: string;\n\n @Input() togglerAriaLabel: string;\n\n @Input() ariaLabelledBy: string;\n\n @Input() validateDrop: boolean;\n\n @Input() filter: boolean;\n\n @Input() filterBy: string = 'label';\n\n @Input() filterMode: string = 'lenient';\n\n @Input() filterPlaceholder: string;\n\n @Input() filteredNodes: TreeNode[];\n\n @Input() filterLocale: string;\n\n @Input() scrollHeight: string;\n\n @Input() lazy: boolean = false;\n\n @Input() virtualScroll: boolean;\n\n @Input() virtualScrollItemSize: number;\n\n @Input() virtualScrollOptions: ScrollerOptions;\n\n @Input() indentation: number = 1.5;\n\n @Input() _templateMap: any;\n\n @Input() trackBy: Function = (index: number, item: any) => item;\n\n @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeDrop: EventEmitter<any> = new EventEmitter();\n\n @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n @Output() onScroll: EventEmitter<any> = new EventEmitter();\n\n @Output() onScrollIndexChange: EventEmitter<any> = new EventEmitter();\n\n @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n @ViewChild('filter') filterViewChild: ElementRef;\n\n @ViewChild('scroller') scroller: Scroller;\n\n @ViewChild('wrapper') wrapperViewChild: ElementRef;\n\n /* @deprecated */\n _virtualNodeHeight: number;\n @Input() get virtualNodeHeight(): number {\n return this._virtualNodeHeight;\n }\n set virtualNodeHeight(val: number) {\n this._virtualNodeHeight = val;\n console.warn('The virtualNodeHeight property is deprecated, use virtualScrollItemSize property instead.');\n }\n\n serializedValue: any[];\n\n headerTemplate: TemplateRef<any>;\n\n footerTemplate: TemplateRef<any>;\n\n loaderTemplate: TemplateRef<any>;\n\n emptyMessageTemplate: TemplateRef<any>;\n\n togglerIconTemplate: TemplateRef<any>;\n\n checkboxIconTemplate: TemplateRef<any>;\n\n loadingIconTemplate: TemplateRef<any>;\n\n filterIconTemplate: TemplateRef<any>;\n\n public nodeTouched: boolean;\n\n public dragNodeTree: Tree;\n\n public dragNode: TreeNode;\n\n public dragNodeSubNodes: TreeNode[];\n\n public dragNodeIndex: number;\n\n public dragNodeScope: any;\n\n public dragHover: boolean;\n\n public dragStartSubscription: Subscription;\n\n public dragStopSubscription: Subscription;\n\n constructor(public el: ElementRef, @Optional() public dragDropService: TreeDragDropService, public config: PrimeNGConfig, private cd: ChangeDetectorRef) {}\n\n ngOnInit() {\n if (this.droppableNodes) {\n this.dragStartSubscription = this.dragDropService.dragStart$.subscribe((event) => {\n this.dragNodeTree = event.tree;\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n\n this.dragStopSubscription = this.dragDropService.dragStop$.subscribe((event) => {\n this.dragNodeTree = null;\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n }\n\n ngOnChanges(simpleChange: SimpleChanges) {\n if (simpleChange.value) {\n this.updateSerializedValue();\n }\n }\n\n get horizontal(): boolean {\n return this.layout == 'horizontal';\n }\n\n get emptyMessageLabel(): string {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n\n ngAfterContentInit() {\n if (this.templates.length) {\n this._templateMap = {};\n }\n\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n\n case 'empty':\n this.emptyMessageTemplate = item.template;\n break;\n\n case 'footer':\n this.footerTemplate = item.template;\n break;\n\n case 'loader':\n this.loaderTemplate = item.template;\n break;\n\n case 'togglericon':\n this.togglerIconTemplate = item.template;\n break;\n\n case 'checkboxicon':\n this.checkboxIconTemplate = item.template;\n break;\n\n case 'loadingicon':\n this.loadingIconTemplate = item.template;\n break;\n\n case 'filtericon':\n this.filterIconTemplate = item.template;\n break;\n\n default:\n this._templateMap[item.name] = item.template;\n break;\n }\n });\n }\n\n ngAfterViewInit() {\n LicenseManager.check();\n }\n\n updateSerializedValue() {\n this.serializedValue = [];\n this.serializeNodes(null, this.getRootNode(), 0, true);\n }\n\n serializeNodes(parent, nodes, level, visible) {\n if (nodes && nodes.length) {\n for (let node of nodes) {\n node.parent = parent;\n const rowNode = {\n node: node,\n parent: parent,\n level: level,\n visible: visible && (parent ? parent.expanded : true)\n };\n this.serializedValue.push(rowNode);\n\n if (rowNode.visible && node.expanded) {\n this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n }\n }\n }\n }\n\n onNodeClick(event, node: TreeNode) {\n let eventTarget = <Element>event.target;\n if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {\n return;\n } else if (this.selectionMode) {\n if (node.selectable === false) {\n return;\n }\n\n if (this.hasFilteredNodes()) {\n node = this.getNodeWithKey(<string>node.key, <TreeNode<any>[]>this.filteredNodes) as TreeNode;\n\n if (!node) {\n return;\n }\n }\n\n let index = this.findIndexInSelection(node);\n let selected = index >= 0;\n\n if (this.isCheckboxSelectionMode()) {\n if (selected) {\n if (this.propagateSelectionDown) this.propagateDown(node, false);\n else this.selection = this.selection.filter((val, i) => i != index);\n\n if (this.propagateSelectionUp && node.parent) {\n this.propagateUp(node.parent, false);\n }\n\n this.selectionChange.emit(this.selection);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n if (this.propagateSelectionDown) this.propagateDown(node, true);\n else this.selection = [...(this.selection || []), node];\n\n if (this.propagateSelectionUp && node.parent) {\n this.propagateUp(node.parent, true);\n }\n\n this.selectionChange.emit(this.selection);\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n } else {\n let metaSelection = this.nodeTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = event.metaKey || event.ctrlKey;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this.selectionChange.emit(null);\n } else {\n this.selection = this.selection.filter((val, i) => i != index);\n this.selectionChange.emit(this.selection);\n }\n\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n if (this.isSingleSelectionMode()) {\n this.selectionChange.emit(node);\n } else if (this.isMultipleSelectionMode()) {\n this.selection = !metaKey ? [] : this.selection || [];\n this.selection = [...this.selection, node];\n this.selectionChange.emit(this.selection);\n }\n\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n } else {\n if (this.isSingleSelectionMode()) {\n if (selected) {\n this.selection = null;\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n this.selection = node;\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n } else {\n if (selected) {\n this.selection = this.selection.filter((val, i) => i != index);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n this.selection = [...(this.selection || []), node];\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n }\n\n this.selectionChange.emit(this.selection);\n }\n }\n }\n\n this.nodeTouched = false;\n }\n\n onNodeTouchEnd() {\n this.nodeTouched = true;\n }\n\n onNodeRightClick(event: MouseEvent, node: TreeNode) {\n if (this.contextMenu) {\n let eventTarget = <Element>event.target;\n\n if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {\n return;\n } else {\n let index = this.findIndexInSelection(node);\n let selected = index >= 0;\n\n if (!selected) {\n if (this.isSingleSelectionMode()) this.selectionChange.emit(node);\n else this.selectionChange.emit([node]);\n }\n\n this.contextMenu.show(event);\n this.onNodeContextMenuSelect.emit({ originalEvent: event, node: node });\n }\n }\n }\n\n findIndexInSelection(node: TreeNode) {\n let index: number = -1;\n\n if (this.selectionMode && this.selection) {\n if (this.isSingleSelectionMode()) {\n let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;\n index = areNodesEqual ? 0 : -1;\n } else {\n for (let i = 0; i < this.selection.length; i++) {\n let selectedNode = this.selection[i];\n let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n if (areNodesEqual) {\n index = i;\n break;\n }\n }\n }\n }\n\n return index;\n }\n\n syncNodeOption(node, parentNodes, option, value?: any) {\n // to synchronize the node option between the filtered nodes and the original nodes(this.value)\n const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;\n if (_node) {\n _node[option] = value || node[option];\n }\n }\n\n hasFilteredNodes() {\n return this.filter && this.filteredNodes && this.filteredNodes.length;\n }\n\n getNodeWithKey(key: string, nodes: TreeNode[]) {\n for (let node of nodes) {\n if (node.key === key) {\n return node;\n }\n\n if (node.children) {\n let matchedNode = this.getNodeWithKey(key, node.children);\n if (matchedNode) {\n return matchedNode;\n }\n }\n }\n }\n\n propagateUp(node: TreeNode, select: boolean) {\n if (node.children && node.children.length) {\n let selectedCount: number = 0;\n let childPartialSelected: boolean = false;\n for (let child of node.children) {\n if (this.isSelected(child)) {\n selectedCount++;\n } else if (child.partialSelected) {\n childPartialSelected = true;\n }\n }\n\n if (select && selectedCount == node.children.length) {\n this.selection = [...(this.selection || []), node];\n node.partialSelected = false;\n } else {\n if (!select) {\n let index = this.findIndexInSelection(node);\n if (index >= 0) {\n this.selection = this.selection.filter((val, i) => i != index);\n }\n }\n\n if (childPartialSelected || (selectedCount > 0 && selectedCount != node.children.length)) node.partialSelected = true;\n else node.partialSelected = false;\n }\n\n this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n }\n\n let parent = node.parent;\n if (parent) {\n this.propagateUp(parent, select);\n }\n }\n\n propagateDown(node: TreeNode, select: boolean) {\n let index = this.findIndexInSelection(node);\n\n if (select && index == -1) {\n this.selection = [...(this.selection || []), node];\n } else if (!select && index > -1) {\n this.selection = this.selection.filter((val, i) => i != index);\n }\n\n node.partialSelected = false;\n\n this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, select);\n }\n }\n }\n\n isSelected(node: TreeNode) {\n return this.findIndexInSelection(node) != -1;\n }\n\n isSingleSelectionMode() {\n return this.selectionMode && this.selectionMode == 'single';\n }\n\n isMultipleSelectionMode() {\n return this.selectionMode && this.selectionMode == 'multiple';\n }\n\n isCheckboxSelectionMode() {\n return this.selectionMode && this.selectionMode == 'checkbox';\n }\n\n isNodeLeaf(node) {\n return node.leaf == false ? false : !(node.children && node.children.length);\n }\n\n getRootNode() {\n return this.filteredNodes ? this.filteredNodes : this.value;\n }\n\n getTemplateForNode(node: TreeNode): TemplateRef<any> {\n if (this._templateMap) return node.type ? this._templateMap[node.type] : this._templateMap['default'];\n else return null;\n }\n\n onDragOver(event) {\n if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n }\n\n onDrop(event) {\n if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n event.preventDefault();\n let dragNode = this.dragNode;\n\n if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n let dragNodeIndex = this.dragNodeIndex;\n this.value = this.value || [];\n\n if (this.validateDrop) {\n this.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex,\n accept: () => {\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n });\n } else {\n this.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex\n });\n\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n }\n }\n }\n\n processTreeDrop(dragNode, dragNodeIndex) {\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n this.value.push(dragNode);\n this.dragDropService.stopDrag({\n node: dragNode\n });\n }\n\n onDragEnter() {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n }\n }\n\n onDragLeave(event) {\n if (this.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {\n this.dragHover = false;\n }\n }\n }\n\n allowDrop(dragNode: TreeNode, dropNode: TreeNode, dragNodeScope: any): boolean {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n } else if (this.isValidDragScope(dragNodeScope)) {\n let allow: boolean = true;\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n } else {\n let parent = dropNode.parent;\n while (parent != null) {\n if (parent === dragNode) {\n allow = false;\n break;\n }\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n } else {\n return false;\n }\n }\n\n isValidDragScope(dragScope: any): boolean {\n let dropScope = this.droppableScope;\n\n if (dropScope) {\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string') return dropScope === dragScope;\n else if (Array.isArray(dragScope)) return (<Array<any>>dragScope).indexOf(dropScope) != -1;\n } else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return (<Array<any>>dropScope).indexOf(dragScope) != -1;\n } else if (Array.isArray(dragScope)) {\n for (let s of dropScope) {\n for (let ds of dragScope) {\n if (s === ds) {\n return true;\n }\n }\n }\n }\n }\n return false;\n } else {\n return true;\n }\n }\n\n public _filter(value) {\n let filterValue = value;\n if (filterValue === '') {\n this.filteredNodes = null;\n } else {\n this.filteredNodes = [];\n const searchFields: string[] = this.filterBy.split(',');\n const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);\n const isStrictMode = this.filterMode === 'strict';\n for (let node of this.value) {\n let copyNode = { ...node };\n let paramsWithoutNode = { searchFields, filterText, isStrictMode };\n if (\n (isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))\n ) {\n this.filteredNodes.push(copyNode);\n }\n }\n }\n\n this.updateSerializedValue();\n this.onFilter.emit({\n filter: filterValue,\n filteredValue: this.filteredNodes\n });\n }\n\n public resetFilter() {\n this.filteredNodes = null;\n\n if (this.filterViewChild && this.filterViewChild.nativeElement) {\n this.filterViewChild.nativeElement.value = '';\n }\n }\n\n public scrollToVirtualIndex(index: number) {\n this.virtualScroll && this.scroller.scrollToIndex(index);\n }\n\n public scrollTo(options) {\n if (this.virtualScroll) {\n this.scroller.scrollTo(options);\n } else if (this.wrapperViewChild && this.wrapperViewChild.nativeElement) {\n if (this.wrapperViewChild.nativeElement.scrollTo) {\n this.wrapperViewChild.nativeElement.scrollTo(options);\n } else {\n this.wrapperViewChild.nativeElement.scrollLeft = options.left;\n this.wrapperViewChild.nativeElement.scrollTop = options.top;\n }\n }\n }\n\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n if (node.children) {\n let childNodes = [...node.children];\n node.children = [];\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n node.expanded = true;\n return true;\n }\n }\n }\n\n isFilterMatched(node, { searchFields, filterText, isStrictMode }) {\n let matched = false;\n for (let field of searchFields) {\n let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { searchFields, filterText, isStrictMode }) || matched;\n }\n\n return matched;\n }\n\n getIndex(options, index) {\n const getItemOptions = options['getItemOptions'];\n return getItemOptions ? getItemOptions(index).index : index;\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n ngOnDestroy() {\n if (this.dragStartSubscription) {\n this.dragStartSubscription.unsubscribe();\n }\n\n if (this.dragStopSubscription) {\n this.dragStopSubscription.unsubscribe();\n }\n }\n}\n@NgModule({\n imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, CheckIcon, ChevronDownIcon, ChevronRightIcon, MinusIcon, SearchIcon, SpinnerIcon],\n exports: [Tree, SharedModule, ScrollerModule],\n declarations: [Tree, UITreeNode]\n})\nexport class TreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primeng-tree.mjs","sources":["../../src/app/components/tree/tree.ts","../../src/app/components/tree/primeng-tree.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n NgModule,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { BlockableUI, LicenseManager, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeDragDropService, TreeNode } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { CheckIcon } from 'primeng/icons/check';\nimport { ChevronDownIcon } from 'primeng/icons/chevrondown';\nimport { ChevronRightIcon } from 'primeng/icons/chevronright';\nimport { MinusIcon } from 'primeng/icons/minus';\nimport { SearchIcon } from 'primeng/icons/search';\nimport { SpinnerIcon } from 'primeng/icons/spinner';\nimport { RippleModule } from 'primeng/ripple';\nimport { Scroller, ScrollerModule, ScrollerOptions } from 'primeng/scroller';\nimport { ObjectUtils } from 'primeng/utils';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'p-treeNode',\n template: `\n <ng-template [ngIf]=\"node\">\n <li\n *ngIf=\"tree.droppableNodes\"\n class=\"p-treenode-droppoint\"\n [ngClass]=\"{ 'p-treenode-droppoint-active': draghoverPrev }\"\n (drop)=\"onDropPoint($event, -1)\"\n (dragover)=\"onDropPointDragOver($event)\"\n (dragenter)=\"onDropPointDragEnter($event, -1)\"\n (dragleave)=\"onDropPointDragLeave($event)\"\n ></li>\n <li *ngIf=\"!tree.horizontal\" [ngClass]=\"['p-treenode', node.styleClass || '', isLeaf() ? 'p-treenode-leaf' : '']\" [ngStyle]=\"{ height: itemSize + 'px' }\" [style]=\"node.style\">\n <div\n class=\"p-treenode-content\"\n [style.paddingLeft]=\"level * indentation + 'rem'\"\n (click)=\"onNodeClick($event)\"\n (contextmenu)=\"onNodeRightClick($event)\"\n (touchend)=\"onNodeTouchEnd()\"\n (drop)=\"onDropNode($event)\"\n (dragover)=\"onDropNodeDragOver($event)\"\n (dragenter)=\"onDropNodeDragEnter($event)\"\n (dragleave)=\"onDropNodeDragLeave($event)\"\n [draggable]=\"tree.draggableNodes\"\n (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragStop($event)\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"{ 'p-treenode-selectable': tree.selectionMode && node.selectable !== false, 'p-treenode-dragover': draghoverNode, 'p-highlight': isSelected() }\"\n role=\"treeitem\"\n (keydown)=\"onKeyDown($event)\"\n [attr.aria-posinset]=\"this.index + 1\"\n [attr.aria-expanded]=\"this.node.expanded\"\n [attr.aria-selected]=\"isSelected()\"\n [attr.aria-label]=\"node.label\"\n [attr.data-id]=\"node.key\"\n >\n <button type=\"button\" [attr.aria-label]=\"tree.togglerAriaLabel\" class=\"p-tree-toggler p-link\" (click)=\"toggle($event)\" pRipple tabindex=\"-1\">\n <ng-container *ngIf=\"!tree.togglerIconTemplate\">\n <ChevronRightIcon *ngIf=\"!node.expanded\" [styleClass]=\"'p-tree-toggler-icon'\" />\n <ChevronDownIcon *ngIf=\"node.expanded\" [styleClass]=\"'p-tree-toggler-icon'\" />\n </ng-container>\n <span *ngIf=\"tree.togglerIconTemplate\" class=\"p-tree-toggler-icon\">\n <ng-template *ngTemplateOutlet=\"tree.togglerIconTemplate; context: { $implicit: node.expanded }\"></ng-template>\n </span>\n </button>\n <div class=\"p-checkbox p-component\" [ngClass]=\"{ 'p-checkbox-disabled': node.selectable === false }\" *ngIf=\"tree.selectionMode == 'checkbox'\" [attr.aria-checked]=\"isSelected()\">\n <div class=\"p-checkbox-box\" [ngClass]=\"{ 'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected }\">\n <ng-container *ngIf=\"!tree.checkboxIconTemplate\">\n <CheckIcon *ngIf=\"isSelected()\" [styleClass]=\"'p-checkbox-icon'\" />\n <MinusIcon *ngIf=\"node.partialSelected\" [styleClass]=\"'p-checkbox-icon'\" />\n </ng-container>\n <ng-template *ngTemplateOutlet=\"tree.checkboxIconTemplate; context: { $implicit: isSelected(), partialSelected: node.partialSelected }\"></ng-template>\n </div>\n </div>\n <span [class]=\"getIcon()\" *ngIf=\"node.icon || node.expandedIcon || node.collapsedIcon\"></span>\n <span class=\"p-treenode-label\">\n <span *ngIf=\"!tree.getTemplateForNode(node)\">{{ node.label }}</span>\n <span *ngIf=\"tree.getTemplateForNode(node)\">\n <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: { $implicit: node }\"></ng-container>\n </span>\n </span>\n </div>\n <ul class=\"p-treenode-children\" style=\"display: none;\" *ngIf=\"!tree.virtualScroll && node.children && node.expanded\" [style.display]=\"node.expanded ? 'block' : 'none'\" role=\"group\">\n <p-treeNode\n *ngFor=\"let childNode of node.children; let firstChild = first; let lastChild = last; let index = index; trackBy: tree.trackBy\"\n [node]=\"childNode\"\n [parentNode]=\"node\"\n [firstChild]=\"firstChild\"\n [lastChild]=\"lastChild\"\n [index]=\"index\"\n [itemSize]=\"itemSize\"\n [level]=\"level + 1\"\n ></p-treeNode>\n </ul>\n </li>\n <li\n *ngIf=\"tree.droppableNodes && lastChild\"\n class=\"p-treenode-droppoint\"\n [ngClass]=\"{ 'p-treenode-droppoint-active': draghoverNext }\"\n (drop)=\"onDropPoint($event, 1)\"\n (dragover)=\"onDropPointDragOver($event)\"\n (dragenter)=\"onDropPointDragEnter($event, 1)\"\n (dragleave)=\"onDropPointDragLeave($event)\"\n ></li>\n <table *ngIf=\"tree.horizontal\" [class]=\"node.styleClass\">\n <tbody>\n <tr>\n <td class=\"p-treenode-connector\" *ngIf=\"!root\">\n <table class=\"p-treenode-connector-table\">\n <tbody>\n <tr>\n <td [ngClass]=\"{ 'p-treenode-connector-line': !firstChild }\"></td>\n </tr>\n <tr>\n <td [ngClass]=\"{ 'p-treenode-connector-line': !lastChild }\"></td>\n </tr>\n </tbody>\n </table>\n </td>\n <td class=\"p-treenode\" [ngClass]=\"{ 'p-treenode-collapsed': !node.expanded }\">\n <div\n class=\"p-treenode-content\"\n tabindex=\"0\"\n [ngClass]=\"{ 'p-treenode-selectable': tree.selectionMode, 'p-highlight': isSelected() }\"\n (click)=\"onNodeClick($event)\"\n (contextmenu)=\"onNodeRightClick($event)\"\n (touchend)=\"onNodeTouchEnd()\"\n (keydown)=\"onNodeKeydown($event)\"\n >\n <span *ngIf=\"!isLeaf()\" [ngClass]=\"'p-tree-toggler'\" (click)=\"toggle($event)\">\n <ng-container *ngIf=\"!tree.togglerIconTemplate\">\n <PlusIcon *ngIf=\"!node.expanded\" [styleClass]=\"'p-tree-toggler-icon'\" [ariaLabel]=\"tree.togglerAriaLabel\" />\n <MinusIcon *ngIf=\"node.expanded\" [styleClass]=\"'p-tree-toggler-icon'\" [ariaLabel]=\"tree.togglerAriaLabel\" />\n </ng-container>\n <span *ngIf=\"tree.togglerIconTemplate\" class=\"p-tree-toggler-icon\">\n <ng-template *ngTemplateOutlet=\"tree.togglerIconTemplate; context: { $implicit: node.expanded }\"></ng-template>\n </span>\n </span>\n <span [class]=\"getIcon()\" *ngIf=\"node.icon || node.expandedIcon || node.collapsedIcon\"></span>\n <span class=\"p-treenode-label\">\n <span *ngIf=\"!tree.getTemplateForNode(node)\">{{ node.label }}</span>\n <span *ngIf=\"tree.getTemplateForNode(node)\">\n <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: { $implicit: node }\"></ng-container>\n </span>\n </span>\n </div>\n </td>\n <td class=\"p-treenode-children-container\" *ngIf=\"node.children && node.expanded\" [style.display]=\"node.expanded ? 'table-cell' : 'none'\">\n <div class=\"p-treenode-children\">\n <p-treeNode *ngFor=\"let childNode of node.children; let firstChild = first; let lastChild = last; trackBy: tree.trackBy\" [node]=\"childNode\" [firstChild]=\"firstChild\" [lastChild]=\"lastChild\"></p-treeNode>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n})\nexport class UITreeNode implements OnInit {\n static ICON_CLASS: string = 'p-treenode-icon ';\n\n @Input() rowNode: any;\n\n @Input() node: TreeNode;\n\n @Input() parentNode: TreeNode;\n\n @Input() root: boolean;\n\n @Input() index: number;\n\n @Input() firstChild: boolean;\n\n @Input() lastChild: boolean;\n\n @Input() level: number;\n\n @Input() indentation: number;\n\n @Input() itemSize: number;\n\n tree: Tree;\n\n timeout: any;\n\n constructor(@Inject(forwardRef(() => Tree)) tree) {\n this.tree = tree as Tree;\n }\n\n draghoverPrev: boolean;\n\n draghoverNext: boolean;\n\n draghoverNode: boolean;\n\n ngOnInit() {\n this.node.parent = this.parentNode;\n if (this.parentNode) {\n this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));\n }\n }\n\n getIcon() {\n let icon: string;\n\n if (this.node.icon) icon = this.node.icon;\n else icon = this.node.expanded && this.node.children && this.node.children.length ? this.node.expandedIcon : this.node.collapsedIcon;\n\n return UITreeNode.ICON_CLASS + ' ' + icon;\n }\n\n isLeaf() {\n return this.tree.isNodeLeaf(this.node);\n }\n\n toggle(event: Event) {\n if (this.node.expanded) this.collapse(event);\n else this.expand(event);\n\n event.stopPropagation();\n }\n\n expand(event: Event) {\n this.node.expanded = true;\n if (this.tree.virtualScroll) {\n this.tree.updateSerializedValue();\n this.focusVirtualNode();\n }\n this.tree.onNodeExpand.emit({ originalEvent: event, node: this.node });\n }\n\n collapse(event: Event) {\n this.node.expanded = false;\n if (this.tree.virtualScroll) {\n this.tree.updateSerializedValue();\n this.focusVirtualNode();\n }\n this.tree.onNodeCollapse.emit({ originalEvent: event, node: this.node });\n }\n\n onNodeClick(event: MouseEvent) {\n this.tree.onNodeClick(event, this.node);\n }\n\n onNodeKeydown(event: KeyboardEvent) {\n if (event.which === 13) {\n this.tree.onNodeClick(event, this.node);\n }\n }\n\n onNodeTouchEnd() {\n this.tree.onNodeTouchEnd();\n }\n\n onNodeRightClick(event: MouseEvent) {\n this.tree.onNodeRightClick(event, this.node);\n }\n\n isSelected() {\n return this.tree.isSelected(this.node);\n }\n\n onDropPoint(event: Event, position: number) {\n event.preventDefault();\n let dragNode = this.tree.dragNode;\n let dragNodeIndex = this.tree.dragNodeIndex;\n let dragNodeScope = this.tree.dragNodeScope;\n let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? position === 1 || dragNodeIndex !== this.index - 1 : true;\n\n if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {\n let dropParams = { ...this.createDropPointEventMetadata(position) };\n\n if (this.tree.validateDrop) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.processPointDrop(dropParams);\n }\n });\n } else {\n this.processPointDrop(dropParams);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n\n this.draghoverPrev = false;\n this.draghoverNext = false;\n }\n\n processPointDrop(event) {\n let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;\n event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);\n let dropIndex = this.index;\n\n if (event.position < 0) {\n dropIndex = event.dragNodeSubNodes === newNodeList ? (event.dragNodeIndex > event.index ? event.index : event.index - 1) : event.index;\n newNodeList.splice(dropIndex, 0, event.dragNode);\n } else {\n dropIndex = newNodeList.length;\n newNodeList.push(event.dragNode);\n }\n\n this.tree.dragDropService.stopDrag({\n node: event.dragNode,\n subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n index: event.dragNodeIndex\n });\n }\n\n createDropPointEventMetadata(position) {\n return {\n dragNode: this.tree.dragNode,\n dragNodeIndex: this.tree.dragNodeIndex,\n dragNodeSubNodes: this.tree.dragNodeSubNodes,\n dropNode: this.node,\n index: this.index,\n position: position\n };\n }\n\n onDropPointDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n\n onDropPointDragEnter(event: Event, position: number) {\n if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n if (position < 0) this.draghoverPrev = true;\n else this.draghoverNext = true;\n }\n }\n\n onDropPointDragLeave(event: Event) {\n this.draghoverPrev = false;\n this.draghoverNext = false;\n }\n\n onDragStart(event) {\n if (this.tree.draggableNodes && this.node.draggable !== false) {\n event.dataTransfer.setData('text', 'data');\n\n this.tree.dragDropService.startDrag({\n tree: this,\n node: this.node,\n subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n index: this.index,\n scope: this.tree.draggableScope\n });\n } else {\n event.preventDefault();\n }\n }\n\n onDragStop(event) {\n this.tree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n index: this.index\n });\n }\n\n onDropNodeDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n if (this.tree.droppableNodes) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n onDropNode(event) {\n if (this.tree.droppableNodes && this.node.droppable !== false) {\n let dragNode = this.tree.dragNode;\n\n if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {\n let dropParams = { ...this.createDropNodeEventMetadata() };\n\n if (this.tree.validateDrop) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.processNodeDrop(dropParams);\n }\n });\n } else {\n this.processNodeDrop(dropParams);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.draghoverNode = false;\n }\n\n createDropNodeEventMetadata() {\n return {\n dragNode: this.tree.dragNode,\n dragNodeIndex: this.tree.dragNodeIndex,\n dragNodeSubNodes: this.tree.dragNodeSubNodes,\n dropNode: this.node\n };\n }\n\n processNodeDrop(event) {\n let dragNodeIndex = event.dragNodeIndex;\n event.dragNodeSubNodes.splice(dragNodeIndex, 1);\n\n if (event.dropNode.children) event.dropNode.children.push(event.dragNode);\n else event.dropNode.children = [event.dragNode];\n\n this.tree.dragDropService.stopDrag({\n node: event.dragNode,\n subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n index: dragNodeIndex\n });\n }\n\n onDropNodeDragEnter(event) {\n if (this.tree.droppableNodes && this.node.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n this.draghoverNode = true;\n }\n }\n\n onDropNodeDragLeave(event) {\n if (this.tree.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {\n this.draghoverNode = false;\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n const nodeElement = (<HTMLDivElement>event.target).parentElement.parentElement;\n\n if (nodeElement.nodeName !== 'P-TREENODE' || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild.nativeElement.style.display === 'block')) {\n return;\n }\n\n switch (event.which) {\n //down arrow\n case 40:\n const listElement = this.tree.droppableNodes ? nodeElement.children[1].children[1] : nodeElement.children[0].children[1];\n if (listElement && listElement.children.length > 0) {\n this.focusNode(listElement.children[0]);\n } else {\n const nextNodeElement = nodeElement.nextElementSibling;\n if (nextNodeElement) {\n this.focusNode(nextNodeElement);\n } else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n if (nextSiblingAncestor) {\n this.focusNode(nextSiblingAncestor);\n }\n }\n }\n event.preventDefault();\n break;\n\n //up arrow\n case 38:\n if (nodeElement.previousElementSibling) {\n this.focusNode(this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n this.focusNode(parentNodeElement);\n }\n }\n\n event.preventDefault();\n break;\n\n //right arrow\n case 39:\n if (!this.node.expanded && !this.tree.isNodeLeaf(this.node)) {\n this.expand(event);\n }\n event.preventDefault();\n break;\n\n //left arrow\n case 37:\n if (this.node.expanded) {\n this.collapse(event);\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n this.focusNode(parentNodeElement);\n }\n }\n\n event.preventDefault();\n break;\n\n //enter\n case 13:\n this.tree.onNodeClick(event, this.node);\n event.preventDefault();\n break;\n\n default:\n //no op\n break;\n }\n }\n\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling) return parentNodeElement.nextElementSibling;\n else return this.findNextSiblingOfAncestor(parentNodeElement);\n } else {\n return null;\n }\n }\n\n findLastVisibleDescendant(nodeElement) {\n const listElement = <HTMLElement>Array.from(nodeElement.children).find((el) => DomHandler.hasClass(el, 'p-treenode'));\n const childrenListElement = listElement.children[1];\n if (childrenListElement && childrenListElement.children.length > 0) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n } else {\n return nodeElement;\n }\n }\n\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement.parentElement.parentElement;\n\n return parentNodeElement.tagName === 'P-TREENODE' ? parentNodeElement : null;\n }\n\n focusNode(element) {\n if (this.tree.droppableNodes) element.children[1].children[0].focus();\n else element.children[0].children[0].focus();\n }\n\n focusVirtualNode() {\n this.timeout = setTimeout(() => {\n let node = DomHandler.findSingle(document.body, `[data-id=\"${this.node.key ?? this.node.data}\"]`);\n DomHandler.focus(node);\n }, 1);\n }\n}\n\n@Component({\n selector: 'p-tree',\n template: `\n <div\n [ngClass]=\"{ 'p-tree p-component': true, 'p-tree-selectable': selectionMode, 'p-treenode-dragover': dragHover, 'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex' }\"\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n *ngIf=\"!horizontal\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragenter)=\"onDragEnter()\"\n (dragleave)=\"onDragLeave($event)\"\n >\n <div class=\"p-tree-loading-overlay p-component-overlay\" *ngIf=\"loading\">\n <i *ngIf=\"loadingIcon\" [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n <ng-container *ngIf=\"!loadingIcon\">\n <SpinnerIcon *ngIf=\"!loadingIconTemplate\" [spin]=\"true\" [styleClass]=\"'p-tree-loading-icon'\" />\n <span *ngIf=\"loadingIconTemplate\" class=\"p-tree-loading-icon\">\n <ng-template *ngTemplateOutlet=\"loadingIconTemplate\"></ng-template>\n </span>\n </ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <div *ngIf=\"filter\" class=\"p-tree-filter-container\">\n <input #filter type=\"text\" autocomplete=\"off\" class=\"p-tree-filter p-inputtext p-component\" [attr.placeholder]=\"filterPlaceholder\" (keydown.enter)=\"$event.preventDefault()\" (input)=\"_filter($event.target.value)\" />\n <SearchIcon *ngIf=\"!filterIconTemplate\" [styleClass]=\"'p-tree-filter-icon'\" />\n <span *ngIf=\"filterIconTemplate\" class=\"p-tree-filter-icon\">\n <ng-template *ngTemplateOutlet=\"filterIconTemplate\"></ng-template>\n </span>\n </div>\n\n <p-scroller\n #scroller\n *ngIf=\"virtualScroll\"\n [items]=\"serializedValue\"\n [tabindex]=\"-1\"\n styleClass=\"p-tree-wrapper\"\n [style]=\"{ height: scrollHeight !== 'flex' ? scrollHeight : undefined }\"\n [scrollHeight]=\"scrollHeight !== 'flex' ? undefined : '100%'\"\n [itemSize]=\"virtualScrollItemSize || _virtualNodeHeight\"\n [lazy]=\"lazy\"\n (onScroll)=\"onScroll.emit($event)\"\n (onScrollIndexChange)=\"onScrollIndexChange.emit($event)\"\n (onLazyLoad)=\"onLazyLoad.emit($event)\"\n [options]=\"virtualScrollOptions\"\n >\n <ng-template pTemplate=\"content\" let-items let-scrollerOptions=\"options\">\n <ul *ngIf=\"items\" class=\"p-tree-container\" [ngClass]=\"scrollerOptions.contentStyleClass\" [style]=\"scrollerOptions.contentStyle\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n <p-treeNode\n #treeNode\n *ngFor=\"let rowNode of items; let firstChild = first; let lastChild = last; let index = index; trackBy: trackBy\"\n [level]=\"rowNode.level\"\n [rowNode]=\"rowNode\"\n [node]=\"rowNode.node\"\n [firstChild]=\"firstChild\"\n [lastChild]=\"lastChild\"\n [index]=\"getIndex(scrollerOptions, index)\"\n [itemSize]=\"scrollerOptions.itemSize\"\n [indentation]=\"indentation\"\n ></p-treeNode>\n </ul>\n </ng-template>\n <ng-container *ngIf=\"loaderTemplate\">\n <ng-template pTemplate=\"loader\" let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"loaderTemplate; context: { options: scrollerOptions }\"></ng-container>\n </ng-template>\n </ng-container>\n </p-scroller>\n <ng-container *ngIf=\"!virtualScroll\">\n <div #wrapper class=\"p-tree-wrapper\" [style.max-height]=\"scrollHeight\">\n <ul class=\"p-tree-container\" *ngIf=\"getRootNode()\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n <p-treeNode\n *ngFor=\"let node of getRootNode(); let firstChild = first; let lastChild = last; let index = index; trackBy: trackBy\"\n [node]=\"node\"\n [firstChild]=\"firstChild\"\n [lastChild]=\"lastChild\"\n [index]=\"index\"\n [level]=\"0\"\n ></p-treeNode>\n </ul>\n </div>\n </ng-container>\n\n <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (getRootNode() == null || getRootNode().length === 0)\">\n <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n {{ emptyMessageLabel }}\n </ng-container>\n <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n <div [ngClass]=\"{ 'p-tree p-tree-horizontal p-component': true, 'p-tree-selectable': selectionMode }\" [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"horizontal\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <div class=\"p-tree-loading-mask p-component-overlay\" *ngIf=\"loading\">\n <i *ngIf=\"loadingIcon\" [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n <ng-container *ngIf=\"!loadingIcon\">\n <SpinnerIcon *ngIf=\"!loadingIconTemplate\" [spin]=\"true\" [styleClass]=\"'p-tree-loading-icon'\" />\n <span *ngIf=\"loadingIconTemplate\" class=\"p-tree-loading-icon\">\n <ng-template *ngTemplateOutlet=\"loadingIconTemplate\"></ng-template>\n </span>\n </ng-container>\n </div>\n <table *ngIf=\"value && value[0]\">\n <p-treeNode [node]=\"value[0]\" [root]=\"true\"></p-treeNode>\n </table>\n <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (getRootNode() == null || getRootNode().length === 0)\">\n <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n {{ emptyMessageLabel }}\n </ng-container>\n <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./tree.css'],\n host: {\n class: 'p-element'\n }\n})\nexport class Tree implements OnInit, AfterContentInit, OnChanges, OnDestroy, BlockableUI, AfterViewInit {\n @Input() value: TreeNode[];\n\n @Input() selectionMode: string;\n\n @Input() selection: any;\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() contextMenu: any;\n\n @Input() layout: string = 'vertical';\n\n @Input() draggableScope: any;\n\n @Input() droppableScope: any;\n\n @Input() draggableNodes: boolean;\n\n @Input() droppableNodes: boolean;\n\n @Input() metaKeySelection: boolean = true;\n\n @Input() propagateSelectionUp: boolean = true;\n\n @Input() propagateSelectionDown: boolean = true;\n\n @Input() loading: boolean;\n\n @Input() loadingIcon: string;\n\n @Input() emptyMessage: string = '';\n\n @Input() ariaLabel: string;\n\n @Input() togglerAriaLabel: string;\n\n @Input() ariaLabelledBy: string;\n\n @Input() validateDrop: boolean;\n\n @Input() filter: boolean;\n\n @Input() filterBy: string = 'label';\n\n @Input() filterMode: string = 'lenient';\n\n @Input() filterPlaceholder: string;\n\n @Input() filteredNodes: TreeNode[];\n\n @Input() filterLocale: string;\n\n @Input() scrollHeight: string;\n\n @Input() lazy: boolean = false;\n\n @Input() virtualScroll: boolean;\n\n @Input() virtualScrollItemSize: number;\n\n @Input() virtualScrollOptions: ScrollerOptions;\n\n @Input() indentation: number = 1.5;\n\n @Input() _templateMap: any;\n\n @Input() trackBy: Function = (index: number, item: any) => item;\n\n @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onNodeDrop: EventEmitter<any> = new EventEmitter();\n\n @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n @Output() onScroll: EventEmitter<any> = new EventEmitter();\n\n @Output() onScrollIndexChange: EventEmitter<any> = new EventEmitter();\n\n @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n @ViewChild('filter') filterViewChild: ElementRef;\n\n @ViewChild('scroller') scroller: Scroller;\n\n @ViewChild('wrapper') wrapperViewChild: ElementRef;\n\n /* @deprecated */\n _virtualNodeHeight: number;\n @Input() get virtualNodeHeight(): number {\n return this._virtualNodeHeight;\n }\n set virtualNodeHeight(val: number) {\n this._virtualNodeHeight = val;\n console.warn('The virtualNodeHeight property is deprecated, use virtualScrollItemSize property instead.');\n }\n\n serializedValue: any[];\n\n headerTemplate: TemplateRef<any>;\n\n footerTemplate: TemplateRef<any>;\n\n loaderTemplate: TemplateRef<any>;\n\n emptyMessageTemplate: TemplateRef<any>;\n\n togglerIconTemplate: TemplateRef<any>;\n\n checkboxIconTemplate: TemplateRef<any>;\n\n loadingIconTemplate: TemplateRef<any>;\n\n filterIconTemplate: TemplateRef<any>;\n\n public nodeTouched: boolean;\n\n public dragNodeTree: Tree;\n\n public dragNode: TreeNode;\n\n public dragNodeSubNodes: TreeNode[];\n\n public dragNodeIndex: number;\n\n public dragNodeScope: any;\n\n public dragHover: boolean;\n\n public dragStartSubscription: Subscription;\n\n public dragStopSubscription: Subscription;\n\n constructor(public el: ElementRef, @Optional() public dragDropService: TreeDragDropService, public config: PrimeNGConfig, private cd: ChangeDetectorRef) {}\n\n ngOnInit() {\n if (this.droppableNodes) {\n this.dragStartSubscription = this.dragDropService.dragStart$.subscribe((event) => {\n this.dragNodeTree = event.tree;\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n\n this.dragStopSubscription = this.dragDropService.dragStop$.subscribe((event) => {\n this.dragNodeTree = null;\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n }\n\n ngOnChanges(simpleChange: SimpleChanges) {\n if (simpleChange.value) {\n this.updateSerializedValue();\n }\n }\n\n get horizontal(): boolean {\n return this.layout == 'horizontal';\n }\n\n get emptyMessageLabel(): string {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n\n ngAfterContentInit() {\n if (this.templates.length) {\n this._templateMap = {};\n }\n\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n\n case 'empty':\n this.emptyMessageTemplate = item.template;\n break;\n\n case 'footer':\n this.footerTemplate = item.template;\n break;\n\n case 'loader':\n this.loaderTemplate = item.template;\n break;\n\n case 'togglericon':\n this.togglerIconTemplate = item.template;\n break;\n\n case 'checkboxicon':\n this.checkboxIconTemplate = item.template;\n break;\n\n case 'loadingicon':\n this.loadingIconTemplate = item.template;\n break;\n\n case 'filtericon':\n this.filterIconTemplate = item.template;\n break;\n\n default:\n this._templateMap[item.name] = item.template;\n break;\n }\n });\n }\n\n ngAfterViewInit() {\n LicenseManager.check();\n }\n\n updateSerializedValue() {\n this.serializedValue = [];\n this.serializeNodes(null, this.getRootNode(), 0, true);\n }\n\n serializeNodes(parent, nodes, level, visible) {\n if (nodes && nodes.length) {\n for (let node of nodes) {\n node.parent = parent;\n const rowNode = {\n node: node,\n parent: parent,\n level: level,\n visible: visible && (parent ? parent.expanded : true)\n };\n this.serializedValue.push(rowNode);\n\n if (rowNode.visible && node.expanded) {\n this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n }\n }\n }\n }\n\n onNodeClick(event, node: TreeNode) {\n let eventTarget = <Element>event.target;\n if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {\n return;\n } else if (this.selectionMode) {\n if (node.selectable === false) {\n return;\n }\n\n if (this.hasFilteredNodes()) {\n node = this.getNodeWithKey(<string>node.key, <TreeNode<any>[]>this.filteredNodes) as TreeNode;\n\n if (!node) {\n return;\n }\n }\n\n let index = this.findIndexInSelection(node);\n let selected = index >= 0;\n\n if (this.isCheckboxSelectionMode()) {\n if (selected) {\n if (this.propagateSelectionDown) this.propagateDown(node, false);\n else this.selection = this.selection.filter((val, i) => i != index);\n\n if (this.propagateSelectionUp && node.parent) {\n this.propagateUp(node.parent, false);\n }\n\n this.selectionChange.emit(this.selection);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n if (this.propagateSelectionDown) this.propagateDown(node, true);\n else this.selection = [...(this.selection || []), node];\n\n if (this.propagateSelectionUp && node.parent) {\n this.propagateUp(node.parent, true);\n }\n\n this.selectionChange.emit(this.selection);\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n } else {\n let metaSelection = this.nodeTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = event.metaKey || event.ctrlKey;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this.selectionChange.emit(null);\n } else {\n this.selection = this.selection.filter((val, i) => i != index);\n this.selectionChange.emit(this.selection);\n }\n\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n if (this.isSingleSelectionMode()) {\n this.selectionChange.emit(node);\n } else if (this.isMultipleSelectionMode()) {\n this.selection = !metaKey ? [] : this.selection || [];\n this.selection = [...this.selection, node];\n this.selectionChange.emit(this.selection);\n }\n\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n } else {\n if (this.isSingleSelectionMode()) {\n if (selected) {\n this.selection = null;\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n this.selection = node;\n setTimeout(() => {\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n });\n }\n } else {\n if (selected) {\n this.selection = this.selection.filter((val, i) => i != index);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n this.selection = [...(this.selection || []), node];\n setTimeout(() => {\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n });\n }\n }\n\n this.selectionChange.emit(this.selection);\n }\n }\n }\n\n this.nodeTouched = false;\n }\n\n onNodeTouchEnd() {\n this.nodeTouched = true;\n }\n\n onNodeRightClick(event: MouseEvent, node: TreeNode) {\n if (this.contextMenu) {\n let eventTarget = <Element>event.target;\n\n if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {\n return;\n } else {\n let index = this.findIndexInSelection(node);\n let selected = index >= 0;\n\n if (!selected) {\n if (this.isSingleSelectionMode()) this.selectionChange.emit(node);\n else this.selectionChange.emit([node]);\n }\n\n this.contextMenu.show(event);\n this.onNodeContextMenuSelect.emit({ originalEvent: event, node: node });\n }\n }\n }\n\n findIndexInSelection(node: TreeNode) {\n let index: number = -1;\n\n if (this.selectionMode && this.selection) {\n if (this.isSingleSelectionMode()) {\n let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;\n index = areNodesEqual ? 0 : -1;\n } else {\n for (let i = 0; i < this.selection.length; i++) {\n let selectedNode = this.selection[i];\n let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n if (areNodesEqual) {\n index = i;\n break;\n }\n }\n }\n }\n\n return index;\n }\n\n syncNodeOption(node, parentNodes, option, value?: any) {\n // to synchronize the node option between the filtered nodes and the original nodes(this.value)\n const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;\n if (_node) {\n _node[option] = value || node[option];\n }\n }\n\n hasFilteredNodes() {\n return this.filter && this.filteredNodes && this.filteredNodes.length;\n }\n\n getNodeWithKey(key: string, nodes: TreeNode[]) {\n for (let node of nodes) {\n if (node.key === key) {\n return node;\n }\n\n if (node.children) {\n let matchedNode = this.getNodeWithKey(key, node.children);\n if (matchedNode) {\n return matchedNode;\n }\n }\n }\n }\n\n propagateUp(node: TreeNode, select: boolean) {\n if (node.children && node.children.length) {\n let selectedCount: number = 0;\n let childPartialSelected: boolean = false;\n for (let child of node.children) {\n if (this.isSelected(child)) {\n selectedCount++;\n } else if (child.partialSelected) {\n childPartialSelected = true;\n }\n }\n\n if (select && selectedCount == node.children.length) {\n this.selection = [...(this.selection || []), node];\n node.partialSelected = false;\n } else {\n if (!select) {\n let index = this.findIndexInSelection(node);\n if (index >= 0) {\n this.selection = this.selection.filter((val, i) => i != index);\n }\n }\n\n if (childPartialSelected || (selectedCount > 0 && selectedCount != node.children.length)) node.partialSelected = true;\n else node.partialSelected = false;\n }\n\n this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n }\n\n let parent = node.parent;\n if (parent) {\n this.propagateUp(parent, select);\n }\n }\n\n propagateDown(node: TreeNode, select: boolean) {\n let index = this.findIndexInSelection(node);\n\n if (select && index == -1) {\n this.selection = [...(this.selection || []), node];\n } else if (!select && index > -1) {\n this.selection = this.selection.filter((val, i) => i != index);\n }\n\n node.partialSelected = false;\n\n this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, select);\n }\n }\n }\n\n isSelected(node: TreeNode) {\n return this.findIndexInSelection(node) != -1;\n }\n\n isSingleSelectionMode() {\n return this.selectionMode && this.selectionMode == 'single';\n }\n\n isMultipleSelectionMode() {\n return this.selectionMode && this.selectionMode == 'multiple';\n }\n\n isCheckboxSelectionMode() {\n return this.selectionMode && this.selectionMode == 'checkbox';\n }\n\n isNodeLeaf(node) {\n return node.leaf == false ? false : !(node.children && node.children.length);\n }\n\n getRootNode() {\n return this.filteredNodes ? this.filteredNodes : this.value;\n }\n\n getTemplateForNode(node: TreeNode): TemplateRef<any> {\n if (this._templateMap) return node.type ? this._templateMap[node.type] : this._templateMap['default'];\n else return null;\n }\n\n onDragOver(event) {\n if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n }\n\n onDrop(event) {\n if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n event.preventDefault();\n let dragNode = this.dragNode;\n\n if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n let dragNodeIndex = this.dragNodeIndex;\n this.value = this.value || [];\n\n if (this.validateDrop) {\n this.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex,\n accept: () => {\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n });\n } else {\n this.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex\n });\n\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n }\n }\n }\n\n processTreeDrop(dragNode, dragNodeIndex) {\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n this.value.push(dragNode);\n this.dragDropService.stopDrag({\n node: dragNode\n });\n }\n\n onDragEnter() {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n }\n }\n\n onDragLeave(event) {\n if (this.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {\n this.dragHover = false;\n }\n }\n }\n\n allowDrop(dragNode: TreeNode, dropNode: TreeNode, dragNodeScope: any): boolean {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n } else if (this.isValidDragScope(dragNodeScope)) {\n let allow: boolean = true;\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n } else {\n let parent = dropNode.parent;\n while (parent != null) {\n if (parent === dragNode) {\n allow = false;\n break;\n }\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n } else {\n return false;\n }\n }\n\n isValidDragScope(dragScope: any): boolean {\n let dropScope = this.droppableScope;\n\n if (dropScope) {\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string') return dropScope === dragScope;\n else if (Array.isArray(dragScope)) return (<Array<any>>dragScope).indexOf(dropScope) != -1;\n } else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return (<Array<any>>dropScope).indexOf(dragScope) != -1;\n } else if (Array.isArray(dragScope)) {\n for (let s of dropScope) {\n for (let ds of dragScope) {\n if (s === ds) {\n return true;\n }\n }\n }\n }\n }\n return false;\n } else {\n return true;\n }\n }\n\n public _filter(value) {\n let filterValue = value;\n if (filterValue === '') {\n this.filteredNodes = null;\n } else {\n this.filteredNodes = [];\n const searchFields: string[] = this.filterBy.split(',');\n const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);\n const isStrictMode = this.filterMode === 'strict';\n for (let node of this.value) {\n let copyNode = { ...node };\n let paramsWithoutNode = { searchFields, filterText, isStrictMode };\n if (\n (isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))\n ) {\n this.filteredNodes.push(copyNode);\n }\n }\n }\n\n this.updateSerializedValue();\n this.onFilter.emit({\n filter: filterValue,\n filteredValue: this.filteredNodes\n });\n }\n\n public resetFilter() {\n this.filteredNodes = null;\n\n if (this.filterViewChild && this.filterViewChild.nativeElement) {\n this.filterViewChild.nativeElement.value = '';\n }\n }\n\n public scrollToVirtualIndex(index: number) {\n this.virtualScroll && this.scroller.scrollToIndex(index);\n }\n\n public scrollTo(options) {\n if (this.virtualScroll) {\n this.scroller.scrollTo(options);\n } else if (this.wrapperViewChild && this.wrapperViewChild.nativeElement) {\n if (this.wrapperViewChild.nativeElement.scrollTo) {\n this.wrapperViewChild.nativeElement.scrollTo(options);\n } else {\n this.wrapperViewChild.nativeElement.scrollLeft = options.left;\n this.wrapperViewChild.nativeElement.scrollTop = options.top;\n }\n }\n }\n\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n if (node.children) {\n let childNodes = [...node.children];\n node.children = [];\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n node.expanded = true;\n return true;\n }\n }\n }\n\n isFilterMatched(node, { searchFields, filterText, isStrictMode }) {\n let matched = false;\n for (let field of searchFields) {\n let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { searchFields, filterText, isStrictMode }) || matched;\n }\n\n return matched;\n }\n\n getIndex(options, index) {\n const getItemOptions = options['getItemOptions'];\n return getItemOptions ? getItemOptions(index).index : index;\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n ngOnDestroy() {\n if (this.dragStartSubscription) {\n this.dragStartSubscription.unsubscribe();\n }\n\n if (this.dragStopSubscription) {\n this.dragStopSubscription.unsubscribe();\n }\n }\n}\n@NgModule({\n imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, CheckIcon, ChevronDownIcon, ChevronRightIcon, MinusIcon, SearchIcon, SpinnerIcon],\n exports: [Tree, SharedModule, ScrollerModule],\n declarations: [Tree, UITreeNode]\n})\nexport class TreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -109,6 +109,7 @@ export declare class InputNumber implements OnInit, AfterContentInit, OnChanges,
109
109
  getCurrencyExpression(): RegExp;
110
110
  getPrefixExpression(): RegExp;
111
111
  getSuffixExpression(): RegExp;
112
+ get isBlurUpdateOnMode(): boolean;
112
113
  formatValue(value: any): any;
113
114
  parseValue(text: any): any;
114
115
  repeat(event: any, interval: any, dir: any): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "primeng",
3
- "version": "15.4.21-lts",
3
+ "version": "15.4.23-lts",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/primefaces/primeng"
@@ -59,4 +59,8 @@
59
59
  .p-splitter-vertical > .p-splitter-gutter > .p-splitter-gutter-handle {
60
60
  width: 24px;
61
61
  height: 100%;
62
+ }
63
+
64
+ .p-splitter-resizing .p-splitter-panel {
65
+ pointer-events: none;
62
66
  }
@@ -50,7 +50,7 @@ export declare class Splitter implements AfterViewInit {
50
50
  onGutterMouseDown(event: any, index: any): void;
51
51
  onGutterTouchStart(event: any, index: any): void;
52
52
  onGutterTouchEnd(event: any): void;
53
- validateResize(newPrevPanelSize: any, newNextPanelSize: any): boolean;
53
+ validateResize(newPrevPanelSize: number, newNextPanelSize: number): boolean;
54
54
  bindMouseListeners(): void;
55
55
  bindTouchListeners(): void;
56
56
  unbindMouseListeners(): void;
@@ -62,6 +62,7 @@ export declare class Tooltip implements AfterViewInit, OnDestroy {
62
62
  blurListener: Function;
63
63
  scrollHandler: any;
64
64
  resizeListener: any;
65
+ interactionInProgress: boolean;
65
66
  constructor(platformId: any, el: ElementRef, zone: NgZone, config: PrimeNGConfig, renderer: Renderer2, changeDetector: ChangeDetectorRef);
66
67
  ngAfterViewInit(): void;
67
68
  ngOnChanges(simpleChange: SimpleChanges): void;