primevue 4.4.0 → 4.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/autocomplete/AutoComplete.vue +1 -1
  2. package/autocomplete/index.mjs +1 -1
  3. package/autocomplete/index.mjs.map +1 -1
  4. package/cascadeselect/CascadeSelect.vue +1 -1
  5. package/cascadeselect/index.mjs +1 -1
  6. package/cascadeselect/index.mjs.map +1 -1
  7. package/datatable/ColumnFilter.vue +1 -1
  8. package/datatable/index.mjs +1 -1
  9. package/datatable/index.mjs.map +1 -1
  10. package/datepicker/DatePicker.vue +27 -25
  11. package/datepicker/index.d.ts +19 -3
  12. package/datepicker/index.mjs +46 -37
  13. package/datepicker/index.mjs.map +1 -1
  14. package/drawer/Drawer.vue +1 -1
  15. package/drawer/index.mjs +3 -3
  16. package/drawer/index.mjs.map +1 -1
  17. package/menu/Menu.vue +2 -2
  18. package/menu/index.mjs +1 -1
  19. package/menu/index.mjs.map +1 -1
  20. package/multiselect/MultiSelect.vue +1 -1
  21. package/multiselect/index.mjs +1 -1
  22. package/multiselect/index.mjs.map +1 -1
  23. package/package.json +4 -4
  24. package/password/Password.vue +2 -1
  25. package/password/index.mjs +3 -2
  26. package/password/index.mjs.map +1 -1
  27. package/select/Select.vue +1 -1
  28. package/select/index.mjs +1 -1
  29. package/select/index.mjs.map +1 -1
  30. package/speeddial/SpeedDial.vue +1 -1
  31. package/speeddial/index.mjs +1 -1
  32. package/speeddial/index.mjs.map +1 -1
  33. package/splitbutton/SplitButton.vue +1 -1
  34. package/splitbutton/index.mjs +1 -1
  35. package/splitbutton/index.mjs.map +1 -1
  36. package/tree/BaseTree.vue +5 -1
  37. package/tree/Tree.vue +88 -31
  38. package/tree/TreeNode.vue +103 -33
  39. package/tree/index.d.ts +78 -3
  40. package/tree/index.mjs +229 -96
  41. package/tree/index.mjs.map +1 -1
  42. package/treeselect/TreeSelect.vue +2 -1
  43. package/treeselect/index.mjs +5 -4
  44. package/treeselect/index.mjs.map +1 -1
  45. package/umd/primevue.min.js +1 -1
  46. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/tree/BaseTree.vue","../../src/tree/TreeDragDropService.js","../../src/tree/TreeNode.vue","../../src/tree/TreeNode.vue?vue&type=template&id=82d0f7f4&lang.js","../../src/tree/Tree.vue","../../src/tree/Tree.vue?vue&type=template&id=5a75c0ef&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport TreeStyle from 'primevue/tree/style';\n\nexport default {\n name: 'BaseTree',\n extends: BaseComponent,\n props: {\n value: {\n type: null,\n default: null\n },\n expandedKeys: {\n type: null,\n default: null\n },\n selectionKeys: {\n type: null,\n default: null\n },\n selectionMode: {\n type: String,\n default: null\n },\n metaKeySelection: {\n type: Boolean,\n default: false\n },\n loading: {\n type: Boolean,\n default: false\n },\n loadingIcon: {\n type: String,\n default: undefined\n },\n loadingMode: {\n type: String,\n default: 'mask'\n },\n filter: {\n type: Boolean,\n default: false\n },\n filterBy: {\n type: [String, Function],\n default: 'label'\n },\n filterMode: {\n type: String,\n default: 'lenient'\n },\n filterPlaceholder: {\n type: String,\n default: null\n },\n filterLocale: {\n type: String,\n default: undefined\n },\n highlightOnSelect: {\n type: Boolean,\n default: false\n },\n scrollHeight: {\n type: String,\n default: null\n },\n level: {\n type: Number,\n default: 0\n },\n dragdrop: {\n type: Boolean,\n default: null\n },\n draggableScope: {\n type: [String, Array],\n default: null\n },\n droppableScope: {\n type: [String, Array],\n default: null\n },\n validateDrop: {\n type: Boolean,\n default: false\n },\n ariaLabelledby: {\n type: String,\n default: null\n },\n ariaLabel: {\n type: String,\n default: null\n }\n },\n style: TreeStyle,\n provide() {\n return {\n $pcTree: this,\n $parentInstance: this\n };\n }\n};\n</script>\n","import { reactive } from 'vue';\n\nconst dragState = reactive({\n isDragging: false,\n dragNode: null,\n dragScope: null\n});\n\nconst dragStartHandlers = new Set();\nconst dragStopHandlers = new Set();\n\nexport function useTreeDragDropService() {\n const startDrag = (event) => {\n dragState.isDragging = true;\n dragState.dragNode = event.node;\n dragState.dragScope = event.scope;\n\n dragStartHandlers.forEach((handler) => handler(event));\n };\n\n const stopDrag = (event) => {\n dragState.isDragging = false;\n dragState.dragNode = null;\n dragState.dragScope = null;\n\n dragStopHandlers.forEach((handler) => handler(event));\n };\n\n const onDragStart = (handler) => {\n dragStartHandlers.add(handler);\n\n return () => dragStartHandlers.delete(handler);\n };\n\n const onDragStop = (handler) => {\n dragStopHandlers.add(handler);\n\n return () => dragStopHandlers.delete(handler);\n };\n\n return {\n dragState,\n startDrag,\n stopDrag,\n onDragStart,\n onDragStop\n };\n}\n","<template>\n <li\n ref=\"currentNode\"\n :class=\"cx('node')\"\n role=\"treeitem\"\n :aria-label=\"label(node)\"\n :aria-selected=\"ariaSelected\"\n :aria-expanded=\"expanded\"\n :aria-setsize=\"node.children ? node.children.length : 0\"\n :aria-posinset=\"index + 1\"\n :aria-level=\"level\"\n :aria-checked=\"ariaChecked\"\n :tabindex=\"index === 0 ? 0 : -1\"\n @keydown=\"onKeyDown\"\n v-bind=\"getPTOptions('node')\"\n >\n <div v-if=\"isPrevDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <div\n :class=\"cx('nodeContent')\"\n :style=\"node.style\"\n :draggable=\"isDraggable\"\n @click=\"onClick\"\n @touchend=\"onTouchEnd\"\n @dragstart=\"onNodeDragStart\"\n @dragover=\"onNodeDragOver\"\n @dragleave=\"onNodeDragLeave\"\n @dragend=\"onNodeDragEnd\"\n @drop=\"onNodeDrop\"\n v-bind=\"getPTOptions('nodeContent')\"\n :data-p-selected=\"checkboxMode ? checked : selected\"\n :data-p-selectable=\"selectable\"\n >\n <button v-ripple type=\"button\" :class=\"cx('nodeToggleButton')\" @click=\"toggle\" tabindex=\"-1\" :data-p-leaf=\"leaf\" v-bind=\"getPTOptions('nodeToggleButton')\">\n <template v-if=\"node.loading && loadingMode === 'icon'\">\n <!-- TODO: nodetogglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :is=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n <template v-else>\n <!-- TODO: togglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['togglericon']\" :is=\"templates['nodetoggleicon'] || templates['togglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <component v-else-if=\"expanded\" :is=\"node.expandedIcon ? 'span' : 'ChevronDownIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n <component v-else :is=\"node.collapsedIcon ? 'span' : 'ChevronRightIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n </button>\n <Checkbox\n v-if=\"checkboxMode\"\n :defaultValue=\"checked\"\n :binary=\"true\"\n :indeterminate=\"partialChecked\"\n :class=\"cx('nodeCheckbox')\"\n :tabindex=\"-1\"\n :unstyled=\"unstyled\"\n :pt=\"getPTOptions('pcNodeCheckbox')\"\n :data-p-partialchecked=\"partialChecked\"\n >\n <template #icon=\"slotProps\">\n <component v-if=\"templates['checkboxicon']\" :is=\"templates['checkboxicon']\" :checked=\"slotProps.checked\" :partialChecked=\"partialChecked\" :class=\"slotProps.class\" />\n </template>\n </Checkbox>\n <component v-if=\"templates['nodeicon']\" :is=\"templates['nodeicon']\" :node=\"node\" :class=\"[cx('nodeIcon')]\" v-bind=\"getPTOptions('nodeIcon')\"></component>\n <span v-else :class=\"[cx('nodeIcon'), node.icon]\" v-bind=\"getPTOptions('nodeIcon')\"></span>\n <span :class=\"cx('nodeLabel')\" v-bind=\"getPTOptions('nodeLabel')\" @keydown.stop>\n <component v-if=\"templates[node.type] || templates['default']\" :is=\"templates[node.type] || templates['default']\" :node=\"node\" :expanded=\"expanded\" :selected=\"checkboxMode ? checked : selected\" />\n <template v-else>{{ label(node) }}</template>\n </span>\n </div>\n <div v-if=\"isNextDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <ul v-if=\"hasChildren && expanded\" :class=\"cx('nodeChildren')\" role=\"group\" v-bind=\"ptm('nodeChildren')\">\n <TreeNode\n v-for=\"(childNode, index) of node.children\"\n :key=\"childNode.key\"\n :node=\"childNode\"\n :parentNode=\"node\"\n :rootNodes=\"rootNodes\"\n :templates=\"templates\"\n :level=\"level + 1\"\n :index=\"index\"\n :loadingMode=\"loadingMode\"\n :expandedKeys=\"expandedKeys\"\n @node-toggle=\"onChildNodeToggle\"\n @node-click=\"onChildNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"propagateUp\"\n :draggableScope=\"draggableScope\"\n :dragdrop=\"dragdrop\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"onChildNodeDrop\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n />\n </ul>\n </li>\n</template>\n\n<script>\nimport { find, findSingle, getAttribute, getOuterHeight, getOuterWidth } from '@primeuix/utils';\nimport BaseComponent from '@primevue/core/basecomponent';\nimport CheckIcon from '@primevue/icons/check';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport ChevronRightIcon from '@primevue/icons/chevronright';\nimport MinusIcon from '@primevue/icons/minus';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport Checkbox from 'primevue/checkbox';\nimport Ripple from 'primevue/ripple';\n\nexport default {\n name: 'TreeNode',\n hostName: 'Tree',\n extends: BaseComponent,\n emits: ['node-toggle', 'node-click', 'checkbox-change', 'node-drop'],\n props: {\n node: {\n type: null,\n default: null\n },\n parentNode: {\n type: null,\n default: null\n },\n rootNodes: {\n type: Array,\n default: null\n },\n expandedKeys: {\n type: null,\n default: null\n },\n loadingMode: {\n type: String,\n default: 'mask'\n },\n selectionKeys: {\n type: null,\n default: null\n },\n selectionMode: {\n type: String,\n default: null\n },\n templates: {\n type: null,\n default: null\n },\n level: {\n type: Number,\n default: null\n },\n draggableScope: {\n type: [String, Array],\n default: null\n },\n dragdrop: {\n type: Boolean,\n default: null\n },\n validateDrop: {\n type: Boolean,\n default: false\n },\n index: null\n },\n nodeTouched: false,\n toggleClicked: false,\n inject: {\n $pcTree: {\n default: undefined\n }\n },\n data() {\n return {\n isPrevDropPointHovered: false,\n isNextDropPointHovered: false,\n isNodeDropHovered: false\n };\n },\n mounted() {\n this.setAllNodesTabIndexes();\n },\n methods: {\n toggle() {\n this.$emit('node-toggle', this.node);\n this.toggleClicked = true;\n },\n label(node) {\n return typeof node.label === 'function' ? node.label() : node.label;\n },\n onChildNodeToggle(node) {\n this.$emit('node-toggle', node);\n },\n getPTOptions(key) {\n return this.ptm(key, {\n context: {\n node: this.node,\n index: this.index,\n expanded: this.expanded,\n selected: this.selected,\n checked: this.checked,\n partialChecked: this.partialChecked,\n leaf: this.leaf\n }\n });\n },\n onClick(event) {\n if (this.toggleClicked || getAttribute(event.target, '[data-pc-section=\"nodetogglebutton\"]') || getAttribute(event.target.parentElement, '[data-pc-section=\"nodetogglebutton\"]')) {\n this.toggleClicked = false;\n\n return;\n }\n\n if (this.isCheckboxSelectionMode()) {\n if (this.node.selectable != false) {\n this.toggleCheckbox();\n }\n } else {\n this.$emit('node-click', {\n originalEvent: event,\n nodeTouched: this.nodeTouched,\n node: this.node\n });\n }\n\n this.nodeTouched = false;\n },\n onChildNodeClick(event) {\n this.$emit('node-click', event);\n },\n onTouchEnd() {\n this.nodeTouched = true;\n },\n onKeyDown(event) {\n if (!this.isSameNode(event)) return;\n\n switch (event.code) {\n case 'Tab':\n this.onTabKey(event);\n\n break;\n\n case 'ArrowDown':\n this.onArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n this.onArrowUp(event);\n\n break;\n\n case 'ArrowRight':\n this.onArrowRight(event);\n\n break;\n\n case 'ArrowLeft':\n this.onArrowLeft(event);\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n this.onEnterKey(event);\n\n break;\n\n default:\n break;\n }\n },\n onArrowDown(event) {\n const nodeElement = event.target.getAttribute('data-pc-section') === 'nodetogglebutton' ? event.target.closest('[role=\"treeitem\"]') : event.target;\n const listElement = nodeElement.children[1];\n\n if (listElement) {\n this.focusRowChange(nodeElement, listElement.children[0]);\n } else {\n if (nodeElement.nextElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.nextElementSibling);\n } else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n\n if (nextSiblingAncestor) {\n this.focusRowChange(nodeElement, nextSiblingAncestor);\n }\n }\n }\n\n event.preventDefault();\n },\n onArrowUp(event) {\n const nodeElement = event.target;\n\n if (nodeElement.previousElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.previousElementSibling, this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n this.focusRowChange(nodeElement, parentNodeElement);\n }\n }\n\n event.preventDefault();\n },\n onArrowRight(event) {\n if (this.leaf || this.expanded) return;\n\n event.currentTarget.tabIndex = -1;\n\n this.$emit('node-toggle', this.node);\n this.$nextTick(() => {\n this.onArrowDown(event);\n });\n },\n onArrowLeft(event) {\n const togglerElement = findSingle(event.currentTarget, '[data-pc-section=\"nodetogglebutton\"]');\n\n if (this.level === 0 && !this.expanded) {\n return false;\n }\n\n if (this.expanded && !this.leaf) {\n togglerElement.click();\n\n return false;\n }\n\n const target = this.findBeforeClickableNode(event.currentTarget);\n\n if (target) {\n this.focusRowChange(event.currentTarget, target);\n }\n },\n onEnterKey(event) {\n this.setTabIndexForSelectionMode(event, this.nodeTouched);\n this.onClick(event);\n\n event.preventDefault();\n },\n onTabKey() {\n this.setAllNodesTabIndexes();\n },\n onChildNodeDrop(event) {\n this.$emit('node-click', event);\n },\n insertNodeOnDrop() {\n const { dragNode, dragNodeIndex, dragNodeSubNodes, dragDropService } = this.$pcTree;\n\n if (!this.node || dragNodeIndex == null || !dragNode || !dragNodeSubNodes) {\n return;\n }\n\n const position = this.dropPosition;\n const subNodes = this.subNodes || [];\n const index = this.index || 0;\n const dropIndex = dragNodeSubNodes === subNodes ? (dragNodeIndex > index ? index : index - 1) : index;\n\n dragNodeSubNodes.splice(dragNodeIndex, 1);\n\n if (position < 0) {\n // insert before a Node\n subNodes.splice(dropIndex, 0, dragNode);\n } else if (position > 0) {\n // insert after a Node\n subNodes.splice(dropIndex + 1, 0, dragNode);\n } else {\n // insert as child of a Node\n this.node.children = this.node.children || [];\n this.node.children.push(dragNode);\n }\n\n dragDropService.stopDrag({\n node: dragNode,\n subNodes,\n index: dragNodeIndex\n });\n },\n onNodeDrop(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isDroppable) {\n const { dragNode } = this.$pcTree;\n const position = this.dropPosition;\n const isValidDrop = position !== 0 || (position === 0 && this.isNodeDroppable);\n\n if (isValidDrop) {\n if (this.validateDrop) {\n this.$emit('node-drop', {\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.insertNodeOnDrop();\n }\n });\n } else {\n this.insertNodeOnDrop();\n this.$emit('node-drop', {\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n }\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n },\n onNodeDragStart(event) {\n if (this.isNodeDraggable) {\n event.dataTransfer?.setData('text', 'data');\n\n const target = event.currentTarget;\n const dragEl = target.cloneNode(true);\n const toggler = dragEl.querySelector('[data-pc-section=\"nodetogglebutton\"]');\n const checkbox = dragEl.querySelector('[data-pc-name=\"pcnodecheckbox\"]');\n\n target.setAttribute('data-p-dragging', 'true');\n dragEl.style.width = getOuterWidth(target) + 'px';\n dragEl.style.height = getOuterHeight(target) + 'px';\n dragEl.setAttribute('data-pc-section', 'drag-image');\n toggler.style.visibility = 'hidden';\n checkbox?.remove();\n document.body.appendChild(dragEl);\n event.dataTransfer?.setDragImage(dragEl, 0, 0);\n\n setTimeout(() => document.body.removeChild(dragEl), 0);\n\n this.$pcTree.dragDropService.startDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index,\n scope: this.draggableScope\n });\n } else {\n event.preventDefault();\n }\n },\n onNodeDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n\n if (this.isDroppable) {\n const nodeElement = event.currentTarget;\n const rect = nodeElement.getBoundingClientRect();\n const y = event.clientY - rect.top;\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n\n if (y < rect.height * 0.25) {\n this.isPrevDropPointHovered = true;\n } else if (y > rect.height * 0.75) {\n this.isNextDropPointHovered = true;\n } else if (this.isNodeDroppable) {\n this.isNodeDropHovered = true;\n }\n }\n\n if (this.dragdrop) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n onNodeDragLeave() {\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n },\n onNodeDragEnd(event) {\n event.currentTarget?.removeAttribute('data-p-dragging');\n\n this.$pcTree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index\n });\n },\n setAllNodesTabIndexes() {\n const nodes = find(this.$refs.currentNode.closest('[data-pc-section=\"rootchildren\"]'), '[role=\"treeitem\"]');\n\n const hasSelectedNode = [...nodes].some((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n [...nodes].forEach((node) => {\n node.tabIndex = -1;\n });\n\n if (hasSelectedNode) {\n const selectedNodes = [...nodes].filter((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n selectedNodes[0].tabIndex = 0;\n\n return;\n }\n\n [...nodes][0].tabIndex = 0;\n },\n setTabIndexForSelectionMode(event, nodeTouched) {\n if (this.selectionMode !== null) {\n const elements = [...find(this.$refs.currentNode.parentElement, '[role=\"treeitem\"]')];\n\n event.currentTarget.tabIndex = nodeTouched === false ? -1 : 0;\n\n if (elements.every((element) => element.tabIndex === -1)) {\n elements[0].tabIndex = 0;\n }\n }\n },\n focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant) {\n firstFocusableRow.tabIndex = '-1';\n currentFocusedRow.tabIndex = '0';\n\n this.focusNode(lastVisibleDescendant || currentFocusedRow);\n },\n findBeforeClickableNode(node) {\n const parentListElement = node.closest('ul').closest('li');\n\n if (parentListElement) {\n const prevNodeButton = findSingle(parentListElement, 'button');\n\n if (prevNodeButton && prevNodeButton.style.visibility !== 'hidden') {\n return parentListElement;\n }\n\n return this.findBeforeClickableNode(node.previousElementSibling);\n }\n\n return null;\n },\n toggleCheckbox() {\n let _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n const _check = !this.checked;\n\n this.propagateDown(this.node, _check, _selectionKeys);\n\n this.$emit('checkbox-change', {\n node: this.node,\n check: _check,\n selectionKeys: _selectionKeys\n });\n },\n propagateDown(node, check, selectionKeys) {\n if (check && node.selectable != false) selectionKeys[node.key] = { checked: true, partialChecked: false };\n else delete selectionKeys[node.key];\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, check, selectionKeys);\n }\n }\n },\n propagateUp(event) {\n let check = event.check;\n let _selectionKeys = { ...event.selectionKeys };\n let checkedChildCount = 0;\n let childPartialSelected = false;\n\n for (let child of this.node.children) {\n if (_selectionKeys[child.key] && _selectionKeys[child.key].checked) checkedChildCount++;\n else if (_selectionKeys[child.key] && _selectionKeys[child.key].partialChecked) childPartialSelected = true;\n }\n\n if (check && checkedChildCount === this.node.children.length) {\n _selectionKeys[this.node.key] = { checked: true, partialChecked: false };\n } else {\n if (!check) {\n delete _selectionKeys[this.node.key];\n }\n\n if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== this.node.children.length)) _selectionKeys[this.node.key] = { checked: false, partialChecked: true };\n else delete _selectionKeys[this.node.key];\n }\n\n this.$emit('checkbox-change', {\n node: event.node,\n check: event.check,\n selectionKeys: _selectionKeys\n });\n },\n onChildCheckboxChange(event) {\n this.$emit('checkbox-change', event);\n },\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling) return parentNodeElement.nextElementSibling;\n else return this.findNextSiblingOfAncestor(parentNodeElement);\n } else {\n return null;\n }\n },\n findLastVisibleDescendant(nodeElement) {\n const childrenListElement = nodeElement.children[1];\n\n if (childrenListElement) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n } else {\n return nodeElement;\n }\n },\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement.parentElement;\n\n return getAttribute(parentNodeElement, 'role') === 'treeitem' ? parentNodeElement : null;\n },\n focusNode(element) {\n element.focus();\n },\n isCheckboxSelectionMode() {\n return this.selectionMode === 'checkbox';\n },\n isSameNode(event) {\n return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role=\"treeitem\"]')));\n }\n },\n computed: {\n hasChildren() {\n return this.node.children && this.node.children.length > 0;\n },\n expanded() {\n return this.expandedKeys && this.expandedKeys[this.node.key] === true;\n },\n leaf() {\n return this.node.leaf === false ? false : !(this.node.children && this.node.children.length);\n },\n selectable() {\n return this.node.selectable === false ? false : this.selectionMode != null;\n },\n selected() {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.node.key] === true : false;\n },\n checkboxMode() {\n return this.selectionMode === 'checkbox' && this.node.selectable !== false;\n },\n checked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].checked : false;\n },\n partialChecked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].partialChecked : false;\n },\n ariaChecked() {\n return this.selectionMode === 'single' || this.selectionMode === 'multiple' ? this.selected : undefined;\n },\n ariaSelected() {\n return this.checkboxMode ? this.checked : undefined;\n },\n isPrevDropPointActive() {\n return this.isPrevDropPointHovered && this.isDroppable;\n },\n isNextDropPointActive() {\n return this.isNextDropPointHovered && this.isDroppable;\n },\n dropPosition() {\n return this.isPrevDropPointActive ? -1 : this.isNextDropPointActive ? 1 : 0;\n },\n subNodes() {\n return this.parentNode ? this.parentNode.children : this.rootNodes;\n },\n isDraggable() {\n return this.dragdrop;\n },\n isDroppable() {\n return this.dragdrop && this.$pcTree.allowNodeDrop(this.node);\n },\n isNodeDraggable() {\n return this.node?.draggable !== false && this.isDraggable;\n },\n isNodeDroppable() {\n return this.node?.droppable !== false && this.isDroppable;\n },\n isNodeDropActive() {\n return this.isNodeDropHovered && this.isNodeDroppable;\n }\n },\n components: {\n Checkbox,\n ChevronDownIcon,\n ChevronRightIcon,\n CheckIcon,\n MinusIcon,\n SpinnerIcon\n },\n directives: {\n ripple: Ripple\n }\n};\n</script>\n","<template>\n <li\n ref=\"currentNode\"\n :class=\"cx('node')\"\n role=\"treeitem\"\n :aria-label=\"label(node)\"\n :aria-selected=\"ariaSelected\"\n :aria-expanded=\"expanded\"\n :aria-setsize=\"node.children ? node.children.length : 0\"\n :aria-posinset=\"index + 1\"\n :aria-level=\"level\"\n :aria-checked=\"ariaChecked\"\n :tabindex=\"index === 0 ? 0 : -1\"\n @keydown=\"onKeyDown\"\n v-bind=\"getPTOptions('node')\"\n >\n <div v-if=\"isPrevDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <div\n :class=\"cx('nodeContent')\"\n :style=\"node.style\"\n :draggable=\"isDraggable\"\n @click=\"onClick\"\n @touchend=\"onTouchEnd\"\n @dragstart=\"onNodeDragStart\"\n @dragover=\"onNodeDragOver\"\n @dragleave=\"onNodeDragLeave\"\n @dragend=\"onNodeDragEnd\"\n @drop=\"onNodeDrop\"\n v-bind=\"getPTOptions('nodeContent')\"\n :data-p-selected=\"checkboxMode ? checked : selected\"\n :data-p-selectable=\"selectable\"\n >\n <button v-ripple type=\"button\" :class=\"cx('nodeToggleButton')\" @click=\"toggle\" tabindex=\"-1\" :data-p-leaf=\"leaf\" v-bind=\"getPTOptions('nodeToggleButton')\">\n <template v-if=\"node.loading && loadingMode === 'icon'\">\n <!-- TODO: nodetogglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :is=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n <template v-else>\n <!-- TODO: togglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['togglericon']\" :is=\"templates['nodetoggleicon'] || templates['togglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <component v-else-if=\"expanded\" :is=\"node.expandedIcon ? 'span' : 'ChevronDownIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n <component v-else :is=\"node.collapsedIcon ? 'span' : 'ChevronRightIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n </button>\n <Checkbox\n v-if=\"checkboxMode\"\n :defaultValue=\"checked\"\n :binary=\"true\"\n :indeterminate=\"partialChecked\"\n :class=\"cx('nodeCheckbox')\"\n :tabindex=\"-1\"\n :unstyled=\"unstyled\"\n :pt=\"getPTOptions('pcNodeCheckbox')\"\n :data-p-partialchecked=\"partialChecked\"\n >\n <template #icon=\"slotProps\">\n <component v-if=\"templates['checkboxicon']\" :is=\"templates['checkboxicon']\" :checked=\"slotProps.checked\" :partialChecked=\"partialChecked\" :class=\"slotProps.class\" />\n </template>\n </Checkbox>\n <component v-if=\"templates['nodeicon']\" :is=\"templates['nodeicon']\" :node=\"node\" :class=\"[cx('nodeIcon')]\" v-bind=\"getPTOptions('nodeIcon')\"></component>\n <span v-else :class=\"[cx('nodeIcon'), node.icon]\" v-bind=\"getPTOptions('nodeIcon')\"></span>\n <span :class=\"cx('nodeLabel')\" v-bind=\"getPTOptions('nodeLabel')\" @keydown.stop>\n <component v-if=\"templates[node.type] || templates['default']\" :is=\"templates[node.type] || templates['default']\" :node=\"node\" :expanded=\"expanded\" :selected=\"checkboxMode ? checked : selected\" />\n <template v-else>{{ label(node) }}</template>\n </span>\n </div>\n <div v-if=\"isNextDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <ul v-if=\"hasChildren && expanded\" :class=\"cx('nodeChildren')\" role=\"group\" v-bind=\"ptm('nodeChildren')\">\n <TreeNode\n v-for=\"(childNode, index) of node.children\"\n :key=\"childNode.key\"\n :node=\"childNode\"\n :parentNode=\"node\"\n :rootNodes=\"rootNodes\"\n :templates=\"templates\"\n :level=\"level + 1\"\n :index=\"index\"\n :loadingMode=\"loadingMode\"\n :expandedKeys=\"expandedKeys\"\n @node-toggle=\"onChildNodeToggle\"\n @node-click=\"onChildNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"propagateUp\"\n :draggableScope=\"draggableScope\"\n :dragdrop=\"dragdrop\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"onChildNodeDrop\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n />\n </ul>\n </li>\n</template>\n\n<script>\nimport { find, findSingle, getAttribute, getOuterHeight, getOuterWidth } from '@primeuix/utils';\nimport BaseComponent from '@primevue/core/basecomponent';\nimport CheckIcon from '@primevue/icons/check';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport ChevronRightIcon from '@primevue/icons/chevronright';\nimport MinusIcon from '@primevue/icons/minus';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport Checkbox from 'primevue/checkbox';\nimport Ripple from 'primevue/ripple';\n\nexport default {\n name: 'TreeNode',\n hostName: 'Tree',\n extends: BaseComponent,\n emits: ['node-toggle', 'node-click', 'checkbox-change', 'node-drop'],\n props: {\n node: {\n type: null,\n default: null\n },\n parentNode: {\n type: null,\n default: null\n },\n rootNodes: {\n type: Array,\n default: null\n },\n expandedKeys: {\n type: null,\n default: null\n },\n loadingMode: {\n type: String,\n default: 'mask'\n },\n selectionKeys: {\n type: null,\n default: null\n },\n selectionMode: {\n type: String,\n default: null\n },\n templates: {\n type: null,\n default: null\n },\n level: {\n type: Number,\n default: null\n },\n draggableScope: {\n type: [String, Array],\n default: null\n },\n dragdrop: {\n type: Boolean,\n default: null\n },\n validateDrop: {\n type: Boolean,\n default: false\n },\n index: null\n },\n nodeTouched: false,\n toggleClicked: false,\n inject: {\n $pcTree: {\n default: undefined\n }\n },\n data() {\n return {\n isPrevDropPointHovered: false,\n isNextDropPointHovered: false,\n isNodeDropHovered: false\n };\n },\n mounted() {\n this.setAllNodesTabIndexes();\n },\n methods: {\n toggle() {\n this.$emit('node-toggle', this.node);\n this.toggleClicked = true;\n },\n label(node) {\n return typeof node.label === 'function' ? node.label() : node.label;\n },\n onChildNodeToggle(node) {\n this.$emit('node-toggle', node);\n },\n getPTOptions(key) {\n return this.ptm(key, {\n context: {\n node: this.node,\n index: this.index,\n expanded: this.expanded,\n selected: this.selected,\n checked: this.checked,\n partialChecked: this.partialChecked,\n leaf: this.leaf\n }\n });\n },\n onClick(event) {\n if (this.toggleClicked || getAttribute(event.target, '[data-pc-section=\"nodetogglebutton\"]') || getAttribute(event.target.parentElement, '[data-pc-section=\"nodetogglebutton\"]')) {\n this.toggleClicked = false;\n\n return;\n }\n\n if (this.isCheckboxSelectionMode()) {\n if (this.node.selectable != false) {\n this.toggleCheckbox();\n }\n } else {\n this.$emit('node-click', {\n originalEvent: event,\n nodeTouched: this.nodeTouched,\n node: this.node\n });\n }\n\n this.nodeTouched = false;\n },\n onChildNodeClick(event) {\n this.$emit('node-click', event);\n },\n onTouchEnd() {\n this.nodeTouched = true;\n },\n onKeyDown(event) {\n if (!this.isSameNode(event)) return;\n\n switch (event.code) {\n case 'Tab':\n this.onTabKey(event);\n\n break;\n\n case 'ArrowDown':\n this.onArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n this.onArrowUp(event);\n\n break;\n\n case 'ArrowRight':\n this.onArrowRight(event);\n\n break;\n\n case 'ArrowLeft':\n this.onArrowLeft(event);\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n this.onEnterKey(event);\n\n break;\n\n default:\n break;\n }\n },\n onArrowDown(event) {\n const nodeElement = event.target.getAttribute('data-pc-section') === 'nodetogglebutton' ? event.target.closest('[role=\"treeitem\"]') : event.target;\n const listElement = nodeElement.children[1];\n\n if (listElement) {\n this.focusRowChange(nodeElement, listElement.children[0]);\n } else {\n if (nodeElement.nextElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.nextElementSibling);\n } else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n\n if (nextSiblingAncestor) {\n this.focusRowChange(nodeElement, nextSiblingAncestor);\n }\n }\n }\n\n event.preventDefault();\n },\n onArrowUp(event) {\n const nodeElement = event.target;\n\n if (nodeElement.previousElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.previousElementSibling, this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n this.focusRowChange(nodeElement, parentNodeElement);\n }\n }\n\n event.preventDefault();\n },\n onArrowRight(event) {\n if (this.leaf || this.expanded) return;\n\n event.currentTarget.tabIndex = -1;\n\n this.$emit('node-toggle', this.node);\n this.$nextTick(() => {\n this.onArrowDown(event);\n });\n },\n onArrowLeft(event) {\n const togglerElement = findSingle(event.currentTarget, '[data-pc-section=\"nodetogglebutton\"]');\n\n if (this.level === 0 && !this.expanded) {\n return false;\n }\n\n if (this.expanded && !this.leaf) {\n togglerElement.click();\n\n return false;\n }\n\n const target = this.findBeforeClickableNode(event.currentTarget);\n\n if (target) {\n this.focusRowChange(event.currentTarget, target);\n }\n },\n onEnterKey(event) {\n this.setTabIndexForSelectionMode(event, this.nodeTouched);\n this.onClick(event);\n\n event.preventDefault();\n },\n onTabKey() {\n this.setAllNodesTabIndexes();\n },\n onChildNodeDrop(event) {\n this.$emit('node-click', event);\n },\n insertNodeOnDrop() {\n const { dragNode, dragNodeIndex, dragNodeSubNodes, dragDropService } = this.$pcTree;\n\n if (!this.node || dragNodeIndex == null || !dragNode || !dragNodeSubNodes) {\n return;\n }\n\n const position = this.dropPosition;\n const subNodes = this.subNodes || [];\n const index = this.index || 0;\n const dropIndex = dragNodeSubNodes === subNodes ? (dragNodeIndex > index ? index : index - 1) : index;\n\n dragNodeSubNodes.splice(dragNodeIndex, 1);\n\n if (position < 0) {\n // insert before a Node\n subNodes.splice(dropIndex, 0, dragNode);\n } else if (position > 0) {\n // insert after a Node\n subNodes.splice(dropIndex + 1, 0, dragNode);\n } else {\n // insert as child of a Node\n this.node.children = this.node.children || [];\n this.node.children.push(dragNode);\n }\n\n dragDropService.stopDrag({\n node: dragNode,\n subNodes,\n index: dragNodeIndex\n });\n },\n onNodeDrop(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isDroppable) {\n const { dragNode } = this.$pcTree;\n const position = this.dropPosition;\n const isValidDrop = position !== 0 || (position === 0 && this.isNodeDroppable);\n\n if (isValidDrop) {\n if (this.validateDrop) {\n this.$emit('node-drop', {\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.insertNodeOnDrop();\n }\n });\n } else {\n this.insertNodeOnDrop();\n this.$emit('node-drop', {\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n }\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n },\n onNodeDragStart(event) {\n if (this.isNodeDraggable) {\n event.dataTransfer?.setData('text', 'data');\n\n const target = event.currentTarget;\n const dragEl = target.cloneNode(true);\n const toggler = dragEl.querySelector('[data-pc-section=\"nodetogglebutton\"]');\n const checkbox = dragEl.querySelector('[data-pc-name=\"pcnodecheckbox\"]');\n\n target.setAttribute('data-p-dragging', 'true');\n dragEl.style.width = getOuterWidth(target) + 'px';\n dragEl.style.height = getOuterHeight(target) + 'px';\n dragEl.setAttribute('data-pc-section', 'drag-image');\n toggler.style.visibility = 'hidden';\n checkbox?.remove();\n document.body.appendChild(dragEl);\n event.dataTransfer?.setDragImage(dragEl, 0, 0);\n\n setTimeout(() => document.body.removeChild(dragEl), 0);\n\n this.$pcTree.dragDropService.startDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index,\n scope: this.draggableScope\n });\n } else {\n event.preventDefault();\n }\n },\n onNodeDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n\n if (this.isDroppable) {\n const nodeElement = event.currentTarget;\n const rect = nodeElement.getBoundingClientRect();\n const y = event.clientY - rect.top;\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n\n if (y < rect.height * 0.25) {\n this.isPrevDropPointHovered = true;\n } else if (y > rect.height * 0.75) {\n this.isNextDropPointHovered = true;\n } else if (this.isNodeDroppable) {\n this.isNodeDropHovered = true;\n }\n }\n\n if (this.dragdrop) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n onNodeDragLeave() {\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n },\n onNodeDragEnd(event) {\n event.currentTarget?.removeAttribute('data-p-dragging');\n\n this.$pcTree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index\n });\n },\n setAllNodesTabIndexes() {\n const nodes = find(this.$refs.currentNode.closest('[data-pc-section=\"rootchildren\"]'), '[role=\"treeitem\"]');\n\n const hasSelectedNode = [...nodes].some((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n [...nodes].forEach((node) => {\n node.tabIndex = -1;\n });\n\n if (hasSelectedNode) {\n const selectedNodes = [...nodes].filter((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n selectedNodes[0].tabIndex = 0;\n\n return;\n }\n\n [...nodes][0].tabIndex = 0;\n },\n setTabIndexForSelectionMode(event, nodeTouched) {\n if (this.selectionMode !== null) {\n const elements = [...find(this.$refs.currentNode.parentElement, '[role=\"treeitem\"]')];\n\n event.currentTarget.tabIndex = nodeTouched === false ? -1 : 0;\n\n if (elements.every((element) => element.tabIndex === -1)) {\n elements[0].tabIndex = 0;\n }\n }\n },\n focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant) {\n firstFocusableRow.tabIndex = '-1';\n currentFocusedRow.tabIndex = '0';\n\n this.focusNode(lastVisibleDescendant || currentFocusedRow);\n },\n findBeforeClickableNode(node) {\n const parentListElement = node.closest('ul').closest('li');\n\n if (parentListElement) {\n const prevNodeButton = findSingle(parentListElement, 'button');\n\n if (prevNodeButton && prevNodeButton.style.visibility !== 'hidden') {\n return parentListElement;\n }\n\n return this.findBeforeClickableNode(node.previousElementSibling);\n }\n\n return null;\n },\n toggleCheckbox() {\n let _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n const _check = !this.checked;\n\n this.propagateDown(this.node, _check, _selectionKeys);\n\n this.$emit('checkbox-change', {\n node: this.node,\n check: _check,\n selectionKeys: _selectionKeys\n });\n },\n propagateDown(node, check, selectionKeys) {\n if (check && node.selectable != false) selectionKeys[node.key] = { checked: true, partialChecked: false };\n else delete selectionKeys[node.key];\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, check, selectionKeys);\n }\n }\n },\n propagateUp(event) {\n let check = event.check;\n let _selectionKeys = { ...event.selectionKeys };\n let checkedChildCount = 0;\n let childPartialSelected = false;\n\n for (let child of this.node.children) {\n if (_selectionKeys[child.key] && _selectionKeys[child.key].checked) checkedChildCount++;\n else if (_selectionKeys[child.key] && _selectionKeys[child.key].partialChecked) childPartialSelected = true;\n }\n\n if (check && checkedChildCount === this.node.children.length) {\n _selectionKeys[this.node.key] = { checked: true, partialChecked: false };\n } else {\n if (!check) {\n delete _selectionKeys[this.node.key];\n }\n\n if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== this.node.children.length)) _selectionKeys[this.node.key] = { checked: false, partialChecked: true };\n else delete _selectionKeys[this.node.key];\n }\n\n this.$emit('checkbox-change', {\n node: event.node,\n check: event.check,\n selectionKeys: _selectionKeys\n });\n },\n onChildCheckboxChange(event) {\n this.$emit('checkbox-change', event);\n },\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling) return parentNodeElement.nextElementSibling;\n else return this.findNextSiblingOfAncestor(parentNodeElement);\n } else {\n return null;\n }\n },\n findLastVisibleDescendant(nodeElement) {\n const childrenListElement = nodeElement.children[1];\n\n if (childrenListElement) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n } else {\n return nodeElement;\n }\n },\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement.parentElement;\n\n return getAttribute(parentNodeElement, 'role') === 'treeitem' ? parentNodeElement : null;\n },\n focusNode(element) {\n element.focus();\n },\n isCheckboxSelectionMode() {\n return this.selectionMode === 'checkbox';\n },\n isSameNode(event) {\n return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role=\"treeitem\"]')));\n }\n },\n computed: {\n hasChildren() {\n return this.node.children && this.node.children.length > 0;\n },\n expanded() {\n return this.expandedKeys && this.expandedKeys[this.node.key] === true;\n },\n leaf() {\n return this.node.leaf === false ? false : !(this.node.children && this.node.children.length);\n },\n selectable() {\n return this.node.selectable === false ? false : this.selectionMode != null;\n },\n selected() {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.node.key] === true : false;\n },\n checkboxMode() {\n return this.selectionMode === 'checkbox' && this.node.selectable !== false;\n },\n checked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].checked : false;\n },\n partialChecked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].partialChecked : false;\n },\n ariaChecked() {\n return this.selectionMode === 'single' || this.selectionMode === 'multiple' ? this.selected : undefined;\n },\n ariaSelected() {\n return this.checkboxMode ? this.checked : undefined;\n },\n isPrevDropPointActive() {\n return this.isPrevDropPointHovered && this.isDroppable;\n },\n isNextDropPointActive() {\n return this.isNextDropPointHovered && this.isDroppable;\n },\n dropPosition() {\n return this.isPrevDropPointActive ? -1 : this.isNextDropPointActive ? 1 : 0;\n },\n subNodes() {\n return this.parentNode ? this.parentNode.children : this.rootNodes;\n },\n isDraggable() {\n return this.dragdrop;\n },\n isDroppable() {\n return this.dragdrop && this.$pcTree.allowNodeDrop(this.node);\n },\n isNodeDraggable() {\n return this.node?.draggable !== false && this.isDraggable;\n },\n isNodeDroppable() {\n return this.node?.droppable !== false && this.isDroppable;\n },\n isNodeDropActive() {\n return this.isNodeDropHovered && this.isNodeDroppable;\n }\n },\n components: {\n Checkbox,\n ChevronDownIcon,\n ChevronRightIcon,\n CheckIcon,\n MinusIcon,\n SpinnerIcon\n },\n directives: {\n ripple: Ripple\n }\n};\n</script>\n","<template>\n <div :class=\"cx('root')\" @dragover=\"onDragOver\" @dragenter=\"onDragEnter\" @dragleave=\"onDragLeave\" @drop=\"onDrop\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n <template v-if=\"loading && loadingMode === 'mask'\">\n <div :class=\"cx('mask')\" v-bind=\"ptm('mask')\">\n <slot name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n <i v-if=\"loadingIcon\" :class=\"[cx('loadingIcon'), 'pi-spin', loadingIcon]\" v-bind=\"ptm('loadingIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('loadingIcon')\" v-bind=\"ptm('loadingIcon')\" />\n </slot>\n </div>\n </template>\n <IconField v-if=\"filter\" :unstyled=\"unstyled\" :pt=\"{ ...ptm('pcFilter'), ...ptm('pcFilterContainer') }\" :class=\"cx('pcFilterContainer')\">\n <InputText v-model=\"filterValue\" autocomplete=\"off\" :class=\"cx('pcFilterInput')\" :placeholder=\"filterPlaceholder\" :unstyled=\"unstyled\" @keyup=\"onFilterKeyup\" :pt=\"ptm('pcFilterInput')\" />\n <InputIcon :unstyled=\"unstyled\" :pt=\"ptm('pcFilterIconContainer')\">\n <!--TODO: searchicon deprecated since v4.0-->\n <slot :name=\"$slots.filtericon ? 'filtericon' : 'searchicon'\" :class=\"cx('filterIcon')\">\n <SearchIcon :class=\"cx('filterIcon')\" v-bind=\"ptm('filterIcon')\" />\n </slot>\n </InputIcon>\n </IconField>\n <div :class=\"cx('wrapper')\" :style=\"{ maxHeight: scrollHeight }\" :data-p=\"wrapperDataP\" v-bind=\"ptm('wrapper')\">\n <slot name=\"header\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n <ul v-if=\"!empty\" :class=\"cx('rootChildren')\" role=\"tree\" :aria-labelledby=\"ariaLabelledby\" :aria-label=\"ariaLabel\" v-bind=\"ptm('rootChildren')\">\n <TreeNode\n v-for=\"(node, index) of valueToRender\"\n :key=\"node.key\"\n :node=\"node\"\n :rootNodes=\"valueToRender\"\n :templates=\"$slots\"\n :level=\"level + 1\"\n :index=\"index\"\n :expandedKeys=\"d_expandedKeys\"\n @node-toggle=\"onNodeToggle\"\n @node-click=\"onNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"onCheckboxChange\"\n :loadingMode=\"loadingMode\"\n :draggableScope=\"draggableScope\"\n :dragdrop=\"dragdrop\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"onNodeDrop\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n ></TreeNode>\n </ul>\n <div v-else :class=\"cx('emptyMessage')\" v-bind=\"ptm('emptyMessage')\">\n <slot name=\"empty\">\n {{ emptyMessageText }}\n </slot>\n </div>\n <slot name=\"footer\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { isFunction, resolveFieldData } from '@primeuix/utils/object';\nimport SearchIcon from '@primevue/icons/search';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport BaseTree from './BaseTree.vue';\nimport { useTreeDragDropService } from './TreeDragDropService';\nimport TreeNode from './TreeNode.vue';\n\nexport default {\n name: 'Tree',\n extends: BaseTree,\n inheritAttrs: false,\n emits: ['node-expand', 'node-collapse', 'update:expandedKeys', 'update:selectionKeys', 'node-select', 'node-unselect', 'filter', 'node-drop', 'update:value'],\n data() {\n return {\n d_expandedKeys: this.expandedKeys || {},\n filterValue: null,\n dragNode: null,\n dragNodeSubNodes: null,\n dragNodeIndex: null,\n dragNodeScope: null,\n dragHover: null\n };\n },\n dragDropService: null,\n dragStartCleanup: null,\n dragStopCleanup: null,\n watch: {\n expandedKeys(newValue) {\n this.d_expandedKeys = newValue;\n }\n },\n mounted() {\n if (this.dragdrop) {\n this.dragDropService = useTreeDragDropService();\n\n this.dragStartCleanup = this.dragDropService.onDragStart((event) => {\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n\n this.dragStopCleanup = this.dragDropService.onDragStop(() => {\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n },\n beforeUnmount() {\n if (this.dragStartCleanup) {\n this.dragStartCleanup();\n }\n\n if (this.dragStopCleanup) {\n this.dragStopCleanup();\n }\n },\n methods: {\n onNodeToggle(node) {\n const key = node.key;\n\n if (this.d_expandedKeys[key]) {\n delete this.d_expandedKeys[key];\n this.$emit('node-collapse', node);\n } else {\n this.d_expandedKeys[key] = true;\n this.$emit('node-expand', node);\n }\n\n this.d_expandedKeys = { ...this.d_expandedKeys };\n this.$emit('update:expandedKeys', this.d_expandedKeys);\n },\n onNodeClick(event) {\n if (this.selectionMode != null && event.node.selectable !== false) {\n const metaSelection = event.nodeTouched ? false : this.metaKeySelection;\n const _selectionKeys = metaSelection ? this.handleSelectionWithMetaKey(event) : this.handleSelectionWithoutMetaKey(event);\n\n this.$emit('update:selectionKeys', _selectionKeys);\n }\n },\n onCheckboxChange(event) {\n this.$emit('update:selectionKeys', event.selectionKeys);\n\n if (event.check) this.$emit('node-select', event.node);\n else this.$emit('node-unselect', event.node);\n },\n handleSelectionWithMetaKey(event) {\n const originalEvent = event.originalEvent;\n const node = event.node;\n const metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n }\n\n this.$emit('node-unselect', node);\n } else {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else if (this.isMultipleSelectionMode()) {\n _selectionKeys = !metaKey ? {} : this.selectionKeys ? { ...this.selectionKeys } : {};\n }\n\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n\n return _selectionKeys;\n },\n handleSelectionWithoutMetaKey(event) {\n const node = event.node;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (this.isSingleSelectionMode()) {\n if (selected) {\n _selectionKeys = {};\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = {};\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n } else {\n if (selected) {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n _selectionKeys[node.key] = true;\n\n this.$emit('node-select', node);\n }\n }\n\n return _selectionKeys;\n },\n isSingleSelectionMode() {\n return this.selectionMode === 'single';\n },\n isMultipleSelectionMode() {\n return this.selectionMode === 'multiple';\n },\n isNodeSelected(node) {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[node.key] === true : false;\n },\n isChecked(node) {\n return this.selectionKeys ? this.selectionKeys[node.key] && this.selectionKeys[node.key].checked : false;\n },\n isNodeLeaf(node) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n },\n onFilterKeyup(event) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n event.preventDefault();\n }\n\n this.$emit('filter', { originalEvent: event, value: event.target.value });\n },\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n\n if (node.children) {\n let childNodes = [...node.children];\n\n node.children = [];\n\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n return true;\n }\n }\n },\n isFilterMatched(node, { searchFields, filterText, strict }) {\n let matched = false;\n\n for (let field of searchFields) {\n let fieldValue = String(resolveFieldData(node, field)).toLocaleLowerCase(this.filterLocale);\n\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (strict && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { searchFields, filterText, strict }) || matched;\n }\n\n return matched;\n },\n onNodeDrop(event) {\n this.$emit('node-drop', event);\n },\n allowDrop(dragNode, dropNode, dragNodeScope) {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n } else if (this.isValidDragScope(dragNodeScope)) {\n let allow = true;\n\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n } else {\n let parent = dropNode.parent;\n\n while (parent != null) {\n if (parent === dragNode) {\n allow = false;\n\n break;\n }\n\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n } else {\n return false;\n }\n },\n allowNodeDrop(dropNode) {\n return this.allowDrop(this.dragNode, dropNode, this.dragNodeScope);\n },\n isValidDragScope(dragScope) {\n let dropScope = this.droppableScope;\n\n if (dropScope !== null) {\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string') return dropScope === dragScope;\n else if (Array.isArray(dragScope)) return dragScope.indexOf(dropScope) != -1;\n } else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return 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 onDragOver(event) {\n if (this.dragdrop && (!this.value || this.value.length === 0)) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n },\n onDragEnter() {\n if (this.dragdrop && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n }\n },\n onDragLeave(event) {\n if (this.dragdrop) {\n let rect = event.currentTarget.getBoundingClientRect();\n\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 processTreeDrop(dragNode, dragNodeIndex) {\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n const newValue = [...(this.value || []), dragNode];\n this.$emit('update:value', newValue);\n\n this.dragDropService.stopDrag({\n node: dragNode\n });\n },\n onDrop(event) {\n if (this.dragdrop && (!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\n if (this.validateDrop) {\n this.$emit('node-drop', {\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.$emit('node-drop', {\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 computed: {\n filteredValue() {\n let filteredNodes = [];\n const searchFields = isFunction(this.filterBy) ? [this.filterBy] : this.filterBy.split(',');\n const filterText = this.filterValue.trim().toLocaleLowerCase(this.filterLocale);\n const strict = this.filterMode === 'strict';\n\n for (let node of this.value) {\n let _node = { ...node };\n let paramsWithoutNode = { searchFields, filterText, strict };\n\n if (\n (strict && (this.findFilteredNodes(_node, paramsWithoutNode) || this.isFilterMatched(_node, paramsWithoutNode))) ||\n (!strict && (this.isFilterMatched(_node, paramsWithoutNode) || this.findFilteredNodes(_node, paramsWithoutNode)))\n ) {\n filteredNodes.push(_node);\n }\n }\n\n return filteredNodes;\n },\n valueToRender() {\n if (this.filterValue && this.filterValue.trim().length > 0) return this.filteredValue;\n else return this.value;\n },\n empty() {\n return !this.valueToRender || this.valueToRender.length === 0;\n },\n emptyMessageText() {\n return this.$primevue.config?.locale?.emptyMessage || '';\n },\n containerDataP() {\n return cn({\n loading: this.loading,\n scrollable: this.scrollHeight === 'flex'\n });\n },\n wrapperDataP() {\n return cn({\n scrollable: this.scrollHeight === 'flex'\n });\n }\n },\n components: {\n TreeNode,\n InputText,\n InputIcon,\n IconField,\n SearchIcon,\n SpinnerIcon\n }\n};\n</script>\n","<template>\n <div :class=\"cx('root')\" @dragover=\"onDragOver\" @dragenter=\"onDragEnter\" @dragleave=\"onDragLeave\" @drop=\"onDrop\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n <template v-if=\"loading && loadingMode === 'mask'\">\n <div :class=\"cx('mask')\" v-bind=\"ptm('mask')\">\n <slot name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n <i v-if=\"loadingIcon\" :class=\"[cx('loadingIcon'), 'pi-spin', loadingIcon]\" v-bind=\"ptm('loadingIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('loadingIcon')\" v-bind=\"ptm('loadingIcon')\" />\n </slot>\n </div>\n </template>\n <IconField v-if=\"filter\" :unstyled=\"unstyled\" :pt=\"{ ...ptm('pcFilter'), ...ptm('pcFilterContainer') }\" :class=\"cx('pcFilterContainer')\">\n <InputText v-model=\"filterValue\" autocomplete=\"off\" :class=\"cx('pcFilterInput')\" :placeholder=\"filterPlaceholder\" :unstyled=\"unstyled\" @keyup=\"onFilterKeyup\" :pt=\"ptm('pcFilterInput')\" />\n <InputIcon :unstyled=\"unstyled\" :pt=\"ptm('pcFilterIconContainer')\">\n <!--TODO: searchicon deprecated since v4.0-->\n <slot :name=\"$slots.filtericon ? 'filtericon' : 'searchicon'\" :class=\"cx('filterIcon')\">\n <SearchIcon :class=\"cx('filterIcon')\" v-bind=\"ptm('filterIcon')\" />\n </slot>\n </InputIcon>\n </IconField>\n <div :class=\"cx('wrapper')\" :style=\"{ maxHeight: scrollHeight }\" :data-p=\"wrapperDataP\" v-bind=\"ptm('wrapper')\">\n <slot name=\"header\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n <ul v-if=\"!empty\" :class=\"cx('rootChildren')\" role=\"tree\" :aria-labelledby=\"ariaLabelledby\" :aria-label=\"ariaLabel\" v-bind=\"ptm('rootChildren')\">\n <TreeNode\n v-for=\"(node, index) of valueToRender\"\n :key=\"node.key\"\n :node=\"node\"\n :rootNodes=\"valueToRender\"\n :templates=\"$slots\"\n :level=\"level + 1\"\n :index=\"index\"\n :expandedKeys=\"d_expandedKeys\"\n @node-toggle=\"onNodeToggle\"\n @node-click=\"onNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"onCheckboxChange\"\n :loadingMode=\"loadingMode\"\n :draggableScope=\"draggableScope\"\n :dragdrop=\"dragdrop\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"onNodeDrop\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n ></TreeNode>\n </ul>\n <div v-else :class=\"cx('emptyMessage')\" v-bind=\"ptm('emptyMessage')\">\n <slot name=\"empty\">\n {{ emptyMessageText }}\n </slot>\n </div>\n <slot name=\"footer\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { isFunction, resolveFieldData } from '@primeuix/utils/object';\nimport SearchIcon from '@primevue/icons/search';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport BaseTree from './BaseTree.vue';\nimport { useTreeDragDropService } from './TreeDragDropService';\nimport TreeNode from './TreeNode.vue';\n\nexport default {\n name: 'Tree',\n extends: BaseTree,\n inheritAttrs: false,\n emits: ['node-expand', 'node-collapse', 'update:expandedKeys', 'update:selectionKeys', 'node-select', 'node-unselect', 'filter', 'node-drop', 'update:value'],\n data() {\n return {\n d_expandedKeys: this.expandedKeys || {},\n filterValue: null,\n dragNode: null,\n dragNodeSubNodes: null,\n dragNodeIndex: null,\n dragNodeScope: null,\n dragHover: null\n };\n },\n dragDropService: null,\n dragStartCleanup: null,\n dragStopCleanup: null,\n watch: {\n expandedKeys(newValue) {\n this.d_expandedKeys = newValue;\n }\n },\n mounted() {\n if (this.dragdrop) {\n this.dragDropService = useTreeDragDropService();\n\n this.dragStartCleanup = this.dragDropService.onDragStart((event) => {\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n\n this.dragStopCleanup = this.dragDropService.onDragStop(() => {\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n },\n beforeUnmount() {\n if (this.dragStartCleanup) {\n this.dragStartCleanup();\n }\n\n if (this.dragStopCleanup) {\n this.dragStopCleanup();\n }\n },\n methods: {\n onNodeToggle(node) {\n const key = node.key;\n\n if (this.d_expandedKeys[key]) {\n delete this.d_expandedKeys[key];\n this.$emit('node-collapse', node);\n } else {\n this.d_expandedKeys[key] = true;\n this.$emit('node-expand', node);\n }\n\n this.d_expandedKeys = { ...this.d_expandedKeys };\n this.$emit('update:expandedKeys', this.d_expandedKeys);\n },\n onNodeClick(event) {\n if (this.selectionMode != null && event.node.selectable !== false) {\n const metaSelection = event.nodeTouched ? false : this.metaKeySelection;\n const _selectionKeys = metaSelection ? this.handleSelectionWithMetaKey(event) : this.handleSelectionWithoutMetaKey(event);\n\n this.$emit('update:selectionKeys', _selectionKeys);\n }\n },\n onCheckboxChange(event) {\n this.$emit('update:selectionKeys', event.selectionKeys);\n\n if (event.check) this.$emit('node-select', event.node);\n else this.$emit('node-unselect', event.node);\n },\n handleSelectionWithMetaKey(event) {\n const originalEvent = event.originalEvent;\n const node = event.node;\n const metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n }\n\n this.$emit('node-unselect', node);\n } else {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else if (this.isMultipleSelectionMode()) {\n _selectionKeys = !metaKey ? {} : this.selectionKeys ? { ...this.selectionKeys } : {};\n }\n\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n\n return _selectionKeys;\n },\n handleSelectionWithoutMetaKey(event) {\n const node = event.node;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (this.isSingleSelectionMode()) {\n if (selected) {\n _selectionKeys = {};\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = {};\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n } else {\n if (selected) {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n _selectionKeys[node.key] = true;\n\n this.$emit('node-select', node);\n }\n }\n\n return _selectionKeys;\n },\n isSingleSelectionMode() {\n return this.selectionMode === 'single';\n },\n isMultipleSelectionMode() {\n return this.selectionMode === 'multiple';\n },\n isNodeSelected(node) {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[node.key] === true : false;\n },\n isChecked(node) {\n return this.selectionKeys ? this.selectionKeys[node.key] && this.selectionKeys[node.key].checked : false;\n },\n isNodeLeaf(node) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n },\n onFilterKeyup(event) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n event.preventDefault();\n }\n\n this.$emit('filter', { originalEvent: event, value: event.target.value });\n },\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n\n if (node.children) {\n let childNodes = [...node.children];\n\n node.children = [];\n\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n return true;\n }\n }\n },\n isFilterMatched(node, { searchFields, filterText, strict }) {\n let matched = false;\n\n for (let field of searchFields) {\n let fieldValue = String(resolveFieldData(node, field)).toLocaleLowerCase(this.filterLocale);\n\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (strict && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { searchFields, filterText, strict }) || matched;\n }\n\n return matched;\n },\n onNodeDrop(event) {\n this.$emit('node-drop', event);\n },\n allowDrop(dragNode, dropNode, dragNodeScope) {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n } else if (this.isValidDragScope(dragNodeScope)) {\n let allow = true;\n\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n } else {\n let parent = dropNode.parent;\n\n while (parent != null) {\n if (parent === dragNode) {\n allow = false;\n\n break;\n }\n\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n } else {\n return false;\n }\n },\n allowNodeDrop(dropNode) {\n return this.allowDrop(this.dragNode, dropNode, this.dragNodeScope);\n },\n isValidDragScope(dragScope) {\n let dropScope = this.droppableScope;\n\n if (dropScope !== null) {\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string') return dropScope === dragScope;\n else if (Array.isArray(dragScope)) return dragScope.indexOf(dropScope) != -1;\n } else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return 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 onDragOver(event) {\n if (this.dragdrop && (!this.value || this.value.length === 0)) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n },\n onDragEnter() {\n if (this.dragdrop && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n }\n },\n onDragLeave(event) {\n if (this.dragdrop) {\n let rect = event.currentTarget.getBoundingClientRect();\n\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 processTreeDrop(dragNode, dragNodeIndex) {\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n const newValue = [...(this.value || []), dragNode];\n this.$emit('update:value', newValue);\n\n this.dragDropService.stopDrag({\n node: dragNode\n });\n },\n onDrop(event) {\n if (this.dragdrop && (!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\n if (this.validateDrop) {\n this.$emit('node-drop', {\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.$emit('node-drop', {\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 computed: {\n filteredValue() {\n let filteredNodes = [];\n const searchFields = isFunction(this.filterBy) ? [this.filterBy] : this.filterBy.split(',');\n const filterText = this.filterValue.trim().toLocaleLowerCase(this.filterLocale);\n const strict = this.filterMode === 'strict';\n\n for (let node of this.value) {\n let _node = { ...node };\n let paramsWithoutNode = { searchFields, filterText, strict };\n\n if (\n (strict && (this.findFilteredNodes(_node, paramsWithoutNode) || this.isFilterMatched(_node, paramsWithoutNode))) ||\n (!strict && (this.isFilterMatched(_node, paramsWithoutNode) || this.findFilteredNodes(_node, paramsWithoutNode)))\n ) {\n filteredNodes.push(_node);\n }\n }\n\n return filteredNodes;\n },\n valueToRender() {\n if (this.filterValue && this.filterValue.trim().length > 0) return this.filteredValue;\n else return this.value;\n },\n empty() {\n return !this.valueToRender || this.valueToRender.length === 0;\n },\n emptyMessageText() {\n return this.$primevue.config?.locale?.emptyMessage || '';\n },\n containerDataP() {\n return cn({\n loading: this.loading,\n scrollable: this.scrollHeight === 'flex'\n });\n },\n wrapperDataP() {\n return cn({\n scrollable: this.scrollHeight === 'flex'\n });\n }\n },\n components: {\n TreeNode,\n InputText,\n InputIcon,\n IconField,\n SearchIcon,\n SpinnerIcon\n }\n};\n</script>\n"],"names":["name","BaseComponent","props","value","type","expandedKeys","selectionKeys","selectionMode","String","metaKeySelection","Boolean","loading","loadingIcon","undefined","loadingMode","filter","filterBy","Function","filterMode","filterPlaceholder","filterLocale","highlightOnSelect","scrollHeight","level","Number","dragdrop","draggableScope","Array","droppableScope","validateDrop","ariaLabelledby","ariaLabel","style","TreeStyle","provide","$pcTree","$parentInstance","dragState","reactive","isDragging","dragNode","dragScope","dragStartHandlers","Set","dragStopHandlers","useTreeDragDropService","startDrag","event","node","scope","forEach","handler","stopDrag","onDragStart","add","onDragStop","hostName","emits","parentNode","rootNodes","templates","index","nodeTouched","toggleClicked","inject","data","isPrevDropPointHovered","isNextDropPointHovered","isNodeDropHovered","mounted","setAllNodesTabIndexes","methods","toggle","$emit","label","onChildNodeToggle","getPTOptions","key","ptm","context","expanded","selected","checked","partialChecked","leaf","onClick","getAttribute","target","parentElement","isCheckboxSelectionMode","selectable","toggleCheckbox","originalEvent","onChildNodeClick","onTouchEnd","onKeyDown","isSameNode","code","onTabKey","onArrowDown","onArrowUp","onArrowRight","onArrowLeft","onEnterKey","nodeElement","closest","listElement","children","focusRowChange","nextElementSibling","nextSiblingAncestor","findNextSiblingOfAncestor","preventDefault","previousElementSibling","findLastVisibleDescendant","parentNodeElement","getParentNodeElement","_this","currentTarget","tabIndex","$nextTick","togglerElement","findSingle","click","findBeforeClickableNode","setTabIndexForSelectionMode","onChildNodeDrop","insertNodeOnDrop","_this$$pcTree","dragNodeIndex","dragNodeSubNodes","dragDropService","position","dropPosition","subNodes","dropIndex","splice","push","onNodeDrop","_this2","stopPropagation","isDroppable","isValidDrop","isNodeDroppable","dropNode","accept","onNodeDragStart","isNodeDraggable","_event$dataTransfer","_event$dataTransfer2","dataTransfer","setData","dragEl","cloneNode","toggler","querySelector","checkbox","setAttribute","width","getOuterWidth","height","getOuterHeight","visibility","remove","document","body","appendChild","setDragImage","setTimeout","removeChild","onNodeDragOver","dropEffect","rect","getBoundingClientRect","y","clientY","top","onNodeDragLeave","onNodeDragEnd","_event$currentTarget","removeAttribute","nodes","find","$refs","currentNode","hasSelectedNode","_toConsumableArray","some","selectedNodes","elements","every","element","firstFocusableRow","currentFocusedRow","lastVisibleDescendant","focusNode","parentListElement","prevNodeButton","_selectionKeys","_objectSpread","_check","propagateDown","check","length","_iterator","_createForOfIteratorHelper","_step","s","n","done","child","err","e","f","propagateUp","checkedChildCount","childPartialSelected","_iterator2","_step2","onChildCheckboxChange","childrenListElement","lastChildElement","focus","computed","hasChildren","checkboxMode","ariaChecked","ariaSelected","isPrevDropPointActive","isNextDropPointActive","isDraggable","allowNodeDrop","_this$node","draggable","_this$node2","droppable","isNodeDropActive","components","Checkbox","ChevronDownIcon","ChevronRightIcon","CheckIcon","MinusIcon","SpinnerIcon","directives","ripple","Ripple","_openBlock","_createElementBlock","_mergeProps","ref","_ctx","cx","role","$options","$props","tabindex","onKeydown","apply","arguments","_createElementVNode","onTouchend","onDragstart","onDragover","onDragleave","onDragend","onDrop","_withDirectives","_Fragment","_createBlock","_resolveDynamicComponent","_component_SpinnerIcon","spin","expandedIcon","collapsedIcon","_component_Checkbox","defaultValue","binary","indeterminate","unstyled","pt","icon","_withCtx","slotProps","_normalizeClass","_createTextVNode","_toDisplayString","childNode","_component_TreeNode","onNodeToggle","onNodeClick","onCheckboxChange","BaseTree","inheritAttrs","d_expandedKeys","filterValue","dragNodeScope","dragHover","dragStartCleanup","dragStopCleanup","watch","newValue","beforeUnmount","metaSelection","handleSelectionWithMetaKey","handleSelectionWithoutMetaKey","metaKey","ctrlKey","isNodeSelected","isSingleSelectionMode","isMultipleSelectionMode","isChecked","isNodeLeaf","onFilterKeyup","findFilteredNodes","paramsWithoutNode","matched","childNodes","copyChildNode","isFilterMatched","_ref","searchFields","filterText","strict","field","fieldValue","resolveFieldData","toLocaleLowerCase","indexOf","allowDrop","isValidDragScope","allow","parent","dropScope","isArray","_iterator3","_step3","_step4","_iterator4","ds","onDragOver","onDragEnter","onDragLeave","x","left","processTreeDrop","concat","filteredValue","filteredNodes","isFunction","split","trim","_iterator5","_step5","_node","valueToRender","empty","emptyMessageText","_this$$primevue$confi","$primevue","config","locale","emptyMessage","containerDataP","cn","scrollable","wrapperDataP","TreeNode","InputText","InputIcon","IconField","SearchIcon","onDragenter","ptmi","_renderSlot","$slots","_component_IconField","_createVNode","_component_InputText","$data","$event","autocomplete","placeholder","onKeyup","_component_InputIcon","filtericon","_component_SearchIcon","_renderList"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/tree/BaseTree.vue","../../src/tree/TreeDragDropService.js","../../src/tree/TreeNode.vue","../../src/tree/TreeNode.vue?vue&type=template&id=18d191c2&lang.js","../../src/tree/Tree.vue","../../src/tree/Tree.vue?vue&type=template&id=5875535c&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport TreeStyle from 'primevue/tree/style';\n\nexport default {\n name: 'BaseTree',\n extends: BaseComponent,\n props: {\n value: {\n type: null,\n default: null\n },\n expandedKeys: {\n type: null,\n default: null\n },\n selectionKeys: {\n type: null,\n default: null\n },\n selectionMode: {\n type: String,\n default: null\n },\n metaKeySelection: {\n type: Boolean,\n default: false\n },\n loading: {\n type: Boolean,\n default: false\n },\n loadingIcon: {\n type: String,\n default: undefined\n },\n loadingMode: {\n type: String,\n default: 'mask'\n },\n filter: {\n type: Boolean,\n default: false\n },\n filterBy: {\n type: [String, Function],\n default: 'label'\n },\n filterMode: {\n type: String,\n default: 'lenient'\n },\n filterPlaceholder: {\n type: String,\n default: null\n },\n filterLocale: {\n type: String,\n default: undefined\n },\n highlightOnSelect: {\n type: Boolean,\n default: false\n },\n scrollHeight: {\n type: String,\n default: null\n },\n level: {\n type: Number,\n default: 0\n },\n draggableNodes: {\n type: Boolean,\n default: null\n },\n droppableNodes: {\n type: Boolean,\n default: null\n },\n draggableScope: {\n type: [String, Array],\n default: null\n },\n droppableScope: {\n type: [String, Array],\n default: null\n },\n validateDrop: {\n type: Boolean,\n default: false\n },\n ariaLabelledby: {\n type: String,\n default: null\n },\n ariaLabel: {\n type: String,\n default: null\n }\n },\n style: TreeStyle,\n provide() {\n return {\n $pcTree: this,\n $parentInstance: this\n };\n }\n};\n</script>\n","import { reactive } from 'vue';\n\nconst dragState = reactive({\n isDragging: false,\n dragNode: null,\n dragScope: null\n});\n\nconst dragStartHandlers = new Set();\nconst dragStopHandlers = new Set();\n\nexport function useTreeDragDropService() {\n const startDrag = (event) => {\n dragState.isDragging = true;\n dragState.dragNode = event.node;\n dragState.dragScope = event.scope;\n\n dragStartHandlers.forEach((handler) => handler(event));\n };\n\n const stopDrag = (event) => {\n dragState.isDragging = false;\n dragState.dragNode = null;\n dragState.dragScope = null;\n\n dragStopHandlers.forEach((handler) => handler(event));\n };\n\n const onDragStart = (handler) => {\n dragStartHandlers.add(handler);\n\n return () => dragStartHandlers.delete(handler);\n };\n\n const onDragStop = (handler) => {\n dragStopHandlers.add(handler);\n\n return () => dragStopHandlers.delete(handler);\n };\n\n return {\n dragState,\n startDrag,\n stopDrag,\n onDragStart,\n onDragStop\n };\n}\n","<template>\n <li\n ref=\"currentNode\"\n :class=\"cx('node')\"\n role=\"treeitem\"\n :aria-label=\"label(node)\"\n :aria-selected=\"ariaSelected\"\n :aria-expanded=\"expanded\"\n :aria-setsize=\"node.children ? node.children.length : 0\"\n :aria-posinset=\"index + 1\"\n :aria-level=\"level\"\n :aria-checked=\"ariaChecked\"\n :tabindex=\"index === 0 ? 0 : -1\"\n @keydown=\"onKeyDown\"\n v-bind=\"getPTOptions('node')\"\n >\n <div v-if=\"isPrevDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <div\n :class=\"cx('nodeContent')\"\n :style=\"node.style\"\n :draggable=\"isDraggable\"\n @click=\"onClick\"\n @touchend=\"onTouchEnd\"\n @dragstart=\"onNodeDragStart\"\n @dragover=\"onNodeDragOver\"\n @dragenter=\"onNodeDragEnter\"\n @dragleave=\"onNodeDragLeave\"\n @dragend=\"onNodeDragEnd\"\n @drop=\"onNodeDrop\"\n v-bind=\"getPTOptions('nodeContent')\"\n :data-p-selected=\"checkboxMode ? checked : selected\"\n :data-p-selectable=\"selectable\"\n >\n <button v-ripple type=\"button\" :class=\"cx('nodeToggleButton')\" @click=\"toggle\" tabindex=\"-1\" :data-p-leaf=\"leaf\" v-bind=\"getPTOptions('nodeToggleButton')\">\n <template v-if=\"node.loading && loadingMode === 'icon'\">\n <!-- TODO: nodetogglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :is=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n <template v-else>\n <!-- TODO: togglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['togglericon']\" :is=\"templates['nodetoggleicon'] || templates['togglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <component v-else-if=\"expanded\" :is=\"node.expandedIcon ? 'span' : 'ChevronDownIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n <component v-else :is=\"node.collapsedIcon ? 'span' : 'ChevronRightIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n </button>\n <Checkbox\n v-if=\"checkboxMode\"\n :defaultValue=\"checked\"\n :binary=\"true\"\n :indeterminate=\"partialChecked\"\n :class=\"cx('nodeCheckbox')\"\n :tabindex=\"-1\"\n :unstyled=\"unstyled\"\n :pt=\"getPTOptions('pcNodeCheckbox')\"\n :data-p-partialchecked=\"partialChecked\"\n >\n <template #icon=\"slotProps\">\n <component v-if=\"templates['checkboxicon']\" :is=\"templates['checkboxicon']\" :checked=\"slotProps.checked\" :partialChecked=\"partialChecked\" :class=\"slotProps.class\" />\n </template>\n </Checkbox>\n <component v-if=\"templates['nodeicon']\" :is=\"templates['nodeicon']\" :node=\"node\" :class=\"[cx('nodeIcon')]\" v-bind=\"getPTOptions('nodeIcon')\"></component>\n <span v-else :class=\"[cx('nodeIcon'), node.icon]\" v-bind=\"getPTOptions('nodeIcon')\"></span>\n <span :class=\"cx('nodeLabel')\" v-bind=\"getPTOptions('nodeLabel')\" @keydown.stop>\n <component v-if=\"templates[node.type] || templates['default']\" :is=\"templates[node.type] || templates['default']\" :node=\"node\" :expanded=\"expanded\" :selected=\"checkboxMode ? checked : selected\" />\n <template v-else>{{ label(node) }}</template>\n </span>\n </div>\n <div v-if=\"isNextDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <ul v-if=\"hasChildren && expanded\" :class=\"cx('nodeChildren')\" role=\"group\" v-bind=\"ptm('nodeChildren')\">\n <TreeNode\n v-for=\"(childNode, index) of node.children\"\n :key=\"childNode.key\"\n :node=\"childNode\"\n :parentNode=\"node\"\n :rootNodes=\"rootNodes\"\n :templates=\"templates\"\n :level=\"level + 1\"\n :index=\"index\"\n :loadingMode=\"loadingMode\"\n :expandedKeys=\"expandedKeys\"\n @node-toggle=\"onChildNodeToggle\"\n @node-click=\"onChildNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"propagateUp\"\n :draggableScope=\"draggableScope\"\n :draggableNodes=\"draggableNodes\"\n :droppableNodes=\"droppableNodes\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"$emit('node-drop', $event)\"\n @node-dragenter=\"$emit('node-dragenter', $event)\"\n @node-dragleave=\"$emit('node-dragleave', $event)\"\n @value-change=\"$emit('value-change', $event)\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n />\n </ul>\n </li>\n</template>\n\n<script>\nimport { find, findSingle, getAttribute, getOuterHeight, getOuterWidth } from '@primeuix/utils';\nimport BaseComponent from '@primevue/core/basecomponent';\nimport CheckIcon from '@primevue/icons/check';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport ChevronRightIcon from '@primevue/icons/chevronright';\nimport MinusIcon from '@primevue/icons/minus';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport Checkbox from 'primevue/checkbox';\nimport Ripple from 'primevue/ripple';\n\nexport default {\n name: 'TreeNode',\n hostName: 'Tree',\n extends: BaseComponent,\n emits: ['node-toggle', 'node-click', 'checkbox-change', 'node-drop', 'value-change', 'node-dragenter', 'node-dragleave'],\n props: {\n node: {\n type: null,\n default: null\n },\n parentNode: {\n type: null,\n default: null\n },\n rootNodes: {\n type: Array,\n default: null\n },\n expandedKeys: {\n type: null,\n default: null\n },\n loadingMode: {\n type: String,\n default: 'mask'\n },\n selectionKeys: {\n type: null,\n default: null\n },\n selectionMode: {\n type: String,\n default: null\n },\n templates: {\n type: null,\n default: null\n },\n level: {\n type: Number,\n default: null\n },\n draggableScope: {\n type: [String, Array],\n default: null\n },\n draggableNodes: {\n type: Boolean,\n default: null\n },\n droppableNodes: {\n type: Boolean,\n default: null\n },\n validateDrop: {\n type: Boolean,\n default: false\n },\n index: null\n },\n nodeTouched: false,\n toggleClicked: false,\n inject: {\n $pcTree: {\n default: undefined\n }\n },\n data() {\n return {\n isPrevDropPointHovered: false,\n isNextDropPointHovered: false,\n isNodeDropHovered: false\n };\n },\n mounted() {\n this.setAllNodesTabIndexes();\n },\n methods: {\n toggle() {\n this.$emit('node-toggle', this.node);\n this.toggleClicked = true;\n },\n label(node) {\n return typeof node.label === 'function' ? node.label() : node.label;\n },\n onChildNodeToggle(node) {\n this.$emit('node-toggle', node);\n },\n getPTOptions(key) {\n return this.ptm(key, {\n context: {\n node: this.node,\n index: this.index,\n expanded: this.expanded,\n selected: this.selected,\n checked: this.checked,\n partialChecked: this.partialChecked,\n leaf: this.leaf\n }\n });\n },\n onClick(event) {\n if (this.toggleClicked || getAttribute(event.target, '[data-pc-section=\"nodetogglebutton\"]') || getAttribute(event.target.parentElement, '[data-pc-section=\"nodetogglebutton\"]')) {\n this.toggleClicked = false;\n\n return;\n }\n\n if (this.isCheckboxSelectionMode()) {\n if (this.node.selectable != false) {\n this.toggleCheckbox();\n }\n } else {\n this.$emit('node-click', {\n originalEvent: event,\n nodeTouched: this.nodeTouched,\n node: this.node\n });\n }\n\n this.nodeTouched = false;\n },\n onChildNodeClick(event) {\n this.$emit('node-click', event);\n },\n onTouchEnd() {\n this.nodeTouched = true;\n },\n onKeyDown(event) {\n if (!this.isSameNode(event)) return;\n\n switch (event.code) {\n case 'Tab':\n this.onTabKey(event);\n\n break;\n\n case 'ArrowDown':\n this.onArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n this.onArrowUp(event);\n\n break;\n\n case 'ArrowRight':\n this.onArrowRight(event);\n\n break;\n\n case 'ArrowLeft':\n this.onArrowLeft(event);\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n this.onEnterKey(event);\n\n break;\n\n default:\n break;\n }\n },\n onArrowDown(event) {\n const nodeElement = event.target.getAttribute('data-pc-section') === 'nodetogglebutton' ? event.target.closest('[role=\"treeitem\"]') : event.target;\n const listElement = nodeElement.children[1];\n\n if (listElement) {\n this.focusRowChange(nodeElement, listElement.children[0]);\n } else {\n if (nodeElement.nextElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.nextElementSibling);\n } else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n\n if (nextSiblingAncestor) {\n this.focusRowChange(nodeElement, nextSiblingAncestor);\n }\n }\n }\n\n event.preventDefault();\n },\n onArrowUp(event) {\n const nodeElement = event.target;\n\n if (nodeElement.previousElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.previousElementSibling, this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n this.focusRowChange(nodeElement, parentNodeElement);\n }\n }\n\n event.preventDefault();\n },\n onArrowRight(event) {\n if (this.leaf || this.expanded) return;\n\n event.currentTarget.tabIndex = -1;\n\n this.$emit('node-toggle', this.node);\n this.$nextTick(() => {\n this.onArrowDown(event);\n });\n },\n onArrowLeft(event) {\n const togglerElement = findSingle(event.currentTarget, '[data-pc-section=\"nodetogglebutton\"]');\n\n if (this.level === 0 && !this.expanded) {\n return false;\n }\n\n if (this.expanded && !this.leaf) {\n togglerElement.click();\n\n return false;\n }\n\n const target = this.findBeforeClickableNode(event.currentTarget);\n\n if (target) {\n this.focusRowChange(event.currentTarget, target);\n }\n },\n onEnterKey(event) {\n this.setTabIndexForSelectionMode(event, this.nodeTouched);\n this.onClick(event);\n\n event.preventDefault();\n },\n onTabKey() {\n this.setAllNodesTabIndexes();\n },\n removeNodeFromTree(nodes, nodeToRemove) {\n return nodes.reduce((acc, node) => {\n if (node.key === nodeToRemove.key) {\n return acc;\n }\n if (node.children && node.children.length > 0) {\n const updatedChildren = this.removeNodeFromTree(node.children, nodeToRemove);\n acc.push({ ...node, children: updatedChildren });\n } else {\n acc.push(node);\n }\n\n return acc;\n }, []);\n },\n insertNodeInSiblings(nodes, targetKey, nodeToInsert, offset) {\n const targetIndex = nodes.findIndex((n) => n.key === targetKey);\n\n if (targetIndex !== -1) {\n return nodes.toSpliced(targetIndex + offset, 0, nodeToInsert);\n }\n\n return nodes.map((node) => {\n if (node.children && node.children.length > 0) {\n return { ...node, children: this.insertNodeInSiblings(node.children, targetKey, nodeToInsert, offset) };\n }\n\n return node;\n });\n },\n addNodeAsChild(nodes, parentKey, nodeToInsert) {\n return nodes.map((node) => {\n if (node.key === parentKey) {\n return { ...node, children: [...(node.children || []), nodeToInsert] };\n }\n\n if (node.children && node.children.length > 0) {\n return { ...node, children: this.addNodeAsChild(node.children, parentKey, nodeToInsert) };\n }\n\n return node;\n });\n },\n insertNodeOnDrop() {\n const { dragNode, dragNodeIndex, dragNodeSubNodes, dragDropService } = this.$pcTree;\n\n if (!this.node || dragNodeIndex == null || !dragNode || !dragNodeSubNodes) {\n return null;\n }\n\n const position = this.dropPosition;\n let updatedNodes = this.removeNodeFromTree(this.rootNodes, dragNode);\n\n if (position < 0) {\n // insert before a Node\n updatedNodes = this.insertNodeInSiblings(updatedNodes, this.node.key, dragNode, 0);\n } else if (position > 0) {\n // insert after a Node\n updatedNodes = this.insertNodeInSiblings(updatedNodes, this.node.key, dragNode, 1);\n } else {\n // insert as child of a Node\n updatedNodes = this.addNodeAsChild(updatedNodes, this.node.key, dragNode);\n }\n\n this.$emit('value-change', { nodes: updatedNodes });\n\n dragDropService.stopDrag({\n node: dragNode,\n subNodes: updatedNodes,\n index: dragNodeIndex\n });\n\n return updatedNodes;\n },\n onNodeDrop(event) {\n if (this.isDroppable) {\n event.preventDefault();\n event.stopPropagation();\n\n const { dragNode } = this.$pcTree;\n const position = this.dropPosition;\n const isValidDrop = position !== 0 || (position === 0 && this.isNodeDroppable);\n\n if (isValidDrop) {\n if (this.validateDrop) {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.rootNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n const updatedNodes = this.insertNodeOnDrop();\n\n this.$emit('node-drop', {\n originalEvent: event,\n value: updatedNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n });\n } else {\n const updatedNodes = this.insertNodeOnDrop();\n\n this.$emit('node-drop', {\n originalEvent: event,\n value: updatedNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n }\n },\n onNodeDragStart(event) {\n if (this.isNodeDraggable) {\n event.dataTransfer.effectAllowed = 'all';\n event.dataTransfer.setData('text', 'data');\n\n const target = event.currentTarget;\n const dragEl = target.cloneNode(true);\n const toggler = dragEl.querySelector('[data-pc-section=\"nodetogglebutton\"]');\n const checkbox = dragEl.querySelector('[data-pc-name=\"pcnodecheckbox\"]');\n\n target.setAttribute('data-p-dragging', 'true');\n dragEl.style.width = getOuterWidth(target) + 'px';\n dragEl.style.height = getOuterHeight(target) + 'px';\n dragEl.setAttribute('data-pc-section', 'drag-image');\n toggler.style.visibility = 'hidden';\n checkbox?.remove();\n document.body.appendChild(dragEl);\n event.dataTransfer.setDragImage(dragEl, 0, 0);\n\n setTimeout(() => document.body.removeChild(dragEl), 0);\n\n this.$pcTree.dragDropService.startDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index,\n scope: this.draggableScope\n });\n } else {\n event.preventDefault();\n }\n },\n onNodeDragOver(event) {\n if (this.isDroppable) {\n event.dataTransfer.dropEffect = 'copy';\n const nodeElement = event.currentTarget;\n const rect = nodeElement.getBoundingClientRect();\n const y = event.clientY - rect.top;\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n\n if (y < rect.height * 0.25) {\n this.isPrevDropPointHovered = true;\n } else if (y > rect.height * 0.75) {\n this.isNextDropPointHovered = true;\n } else if (this.isNodeDroppable) {\n this.isNodeDropHovered = true;\n }\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n\n if (this.droppableNodes) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n onNodeDragEnter() {\n this.$emit('node-dragenter', {\n node: this.node\n });\n },\n onNodeDragLeave() {\n this.$emit('node-dragleave', {\n node: this.node\n });\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n },\n onNodeDragEnd(event) {\n event.currentTarget?.removeAttribute('data-p-dragging');\n\n this.$pcTree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index\n });\n },\n setAllNodesTabIndexes() {\n const nodes = find(this.$refs.currentNode.closest('[data-pc-section=\"rootchildren\"]'), '[role=\"treeitem\"]');\n\n const hasSelectedNode = [...nodes].some((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n [...nodes].forEach((node) => {\n node.tabIndex = -1;\n });\n\n if (hasSelectedNode) {\n const selectedNodes = [...nodes].filter((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n selectedNodes[0].tabIndex = 0;\n\n return;\n }\n\n [...nodes][0].tabIndex = 0;\n },\n setTabIndexForSelectionMode(event, nodeTouched) {\n if (this.selectionMode !== null) {\n const elements = [...find(this.$refs.currentNode.parentElement, '[role=\"treeitem\"]')];\n\n event.currentTarget.tabIndex = nodeTouched === false ? -1 : 0;\n\n if (elements.every((element) => element.tabIndex === -1)) {\n elements[0].tabIndex = 0;\n }\n }\n },\n focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant) {\n firstFocusableRow.tabIndex = '-1';\n currentFocusedRow.tabIndex = '0';\n\n this.focusNode(lastVisibleDescendant || currentFocusedRow);\n },\n findBeforeClickableNode(node) {\n const parentListElement = node.closest('ul').closest('li');\n\n if (parentListElement) {\n const prevNodeButton = findSingle(parentListElement, 'button');\n\n if (prevNodeButton && prevNodeButton.style.visibility !== 'hidden') {\n return parentListElement;\n }\n\n return this.findBeforeClickableNode(node.previousElementSibling);\n }\n\n return null;\n },\n toggleCheckbox() {\n let _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n const _check = !this.checked;\n\n this.propagateDown(this.node, _check, _selectionKeys);\n\n this.$emit('checkbox-change', {\n node: this.node,\n check: _check,\n selectionKeys: _selectionKeys\n });\n },\n propagateDown(node, check, selectionKeys) {\n if (check && node.selectable != false) selectionKeys[node.key] = { checked: true, partialChecked: false };\n else delete selectionKeys[node.key];\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, check, selectionKeys);\n }\n }\n },\n propagateUp(event) {\n let check = event.check;\n let _selectionKeys = { ...event.selectionKeys };\n let checkedChildCount = 0;\n let childPartialSelected = false;\n\n for (let child of this.node.children) {\n if (_selectionKeys[child.key] && _selectionKeys[child.key].checked) checkedChildCount++;\n else if (_selectionKeys[child.key] && _selectionKeys[child.key].partialChecked) childPartialSelected = true;\n }\n\n if (check && checkedChildCount === this.node.children.length) {\n _selectionKeys[this.node.key] = { checked: true, partialChecked: false };\n } else {\n if (!check) {\n delete _selectionKeys[this.node.key];\n }\n\n if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== this.node.children.length)) _selectionKeys[this.node.key] = { checked: false, partialChecked: true };\n else delete _selectionKeys[this.node.key];\n }\n\n this.$emit('checkbox-change', {\n node: event.node,\n check: event.check,\n selectionKeys: _selectionKeys\n });\n },\n onChildCheckboxChange(event) {\n this.$emit('checkbox-change', event);\n },\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling) return parentNodeElement.nextElementSibling;\n else return this.findNextSiblingOfAncestor(parentNodeElement);\n } else {\n return null;\n }\n },\n findLastVisibleDescendant(nodeElement) {\n const childrenListElement = nodeElement.children[1];\n\n if (childrenListElement) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n } else {\n return nodeElement;\n }\n },\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement.parentElement;\n\n return getAttribute(parentNodeElement, 'role') === 'treeitem' ? parentNodeElement : null;\n },\n focusNode(element) {\n element.focus();\n },\n isCheckboxSelectionMode() {\n return this.selectionMode === 'checkbox';\n },\n isSameNode(event) {\n return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role=\"treeitem\"]')));\n }\n },\n computed: {\n hasChildren() {\n return this.node.children && this.node.children.length > 0;\n },\n expanded() {\n return this.expandedKeys && this.expandedKeys[this.node.key] === true;\n },\n leaf() {\n return this.node.leaf === false ? false : !(this.node.children && this.node.children.length);\n },\n selectable() {\n return this.node.selectable === false ? false : this.selectionMode != null;\n },\n selected() {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.node.key] === true : false;\n },\n checkboxMode() {\n return this.selectionMode === 'checkbox' && this.node.selectable !== false;\n },\n checked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].checked : false;\n },\n partialChecked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].partialChecked : false;\n },\n ariaChecked() {\n return this.selectionMode === 'single' || this.selectionMode === 'multiple' ? this.selected : undefined;\n },\n ariaSelected() {\n return this.checkboxMode ? this.checked : undefined;\n },\n isPrevDropPointActive() {\n return this.isPrevDropPointHovered && this.isDroppable;\n },\n isNextDropPointActive() {\n return this.isNextDropPointHovered && this.isDroppable;\n },\n dropPosition() {\n return this.isPrevDropPointActive ? -1 : this.isNextDropPointActive ? 1 : 0;\n },\n subNodes() {\n return this.parentNode ? this.parentNode.children : this.rootNodes;\n },\n isDraggable() {\n return this.draggableNodes;\n },\n isDroppable() {\n return this.droppableNodes && this.$pcTree.allowNodeDrop(this.node);\n },\n isNodeDraggable() {\n return this.node?.draggable !== false && this.isDraggable;\n },\n isNodeDroppable() {\n return this.node?.droppable !== false && this.isDroppable;\n },\n isNodeDropActive() {\n return this.isNodeDropHovered && this.isNodeDroppable;\n }\n },\n components: {\n Checkbox,\n ChevronDownIcon,\n ChevronRightIcon,\n CheckIcon,\n MinusIcon,\n SpinnerIcon\n },\n directives: {\n ripple: Ripple\n }\n};\n</script>\n","<template>\n <li\n ref=\"currentNode\"\n :class=\"cx('node')\"\n role=\"treeitem\"\n :aria-label=\"label(node)\"\n :aria-selected=\"ariaSelected\"\n :aria-expanded=\"expanded\"\n :aria-setsize=\"node.children ? node.children.length : 0\"\n :aria-posinset=\"index + 1\"\n :aria-level=\"level\"\n :aria-checked=\"ariaChecked\"\n :tabindex=\"index === 0 ? 0 : -1\"\n @keydown=\"onKeyDown\"\n v-bind=\"getPTOptions('node')\"\n >\n <div v-if=\"isPrevDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <div\n :class=\"cx('nodeContent')\"\n :style=\"node.style\"\n :draggable=\"isDraggable\"\n @click=\"onClick\"\n @touchend=\"onTouchEnd\"\n @dragstart=\"onNodeDragStart\"\n @dragover=\"onNodeDragOver\"\n @dragenter=\"onNodeDragEnter\"\n @dragleave=\"onNodeDragLeave\"\n @dragend=\"onNodeDragEnd\"\n @drop=\"onNodeDrop\"\n v-bind=\"getPTOptions('nodeContent')\"\n :data-p-selected=\"checkboxMode ? checked : selected\"\n :data-p-selectable=\"selectable\"\n >\n <button v-ripple type=\"button\" :class=\"cx('nodeToggleButton')\" @click=\"toggle\" tabindex=\"-1\" :data-p-leaf=\"leaf\" v-bind=\"getPTOptions('nodeToggleButton')\">\n <template v-if=\"node.loading && loadingMode === 'icon'\">\n <!-- TODO: nodetogglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :is=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n <template v-else>\n <!-- TODO: togglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['togglericon']\" :is=\"templates['nodetoggleicon'] || templates['togglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <component v-else-if=\"expanded\" :is=\"node.expandedIcon ? 'span' : 'ChevronDownIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n <component v-else :is=\"node.collapsedIcon ? 'span' : 'ChevronRightIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n </button>\n <Checkbox\n v-if=\"checkboxMode\"\n :defaultValue=\"checked\"\n :binary=\"true\"\n :indeterminate=\"partialChecked\"\n :class=\"cx('nodeCheckbox')\"\n :tabindex=\"-1\"\n :unstyled=\"unstyled\"\n :pt=\"getPTOptions('pcNodeCheckbox')\"\n :data-p-partialchecked=\"partialChecked\"\n >\n <template #icon=\"slotProps\">\n <component v-if=\"templates['checkboxicon']\" :is=\"templates['checkboxicon']\" :checked=\"slotProps.checked\" :partialChecked=\"partialChecked\" :class=\"slotProps.class\" />\n </template>\n </Checkbox>\n <component v-if=\"templates['nodeicon']\" :is=\"templates['nodeicon']\" :node=\"node\" :class=\"[cx('nodeIcon')]\" v-bind=\"getPTOptions('nodeIcon')\"></component>\n <span v-else :class=\"[cx('nodeIcon'), node.icon]\" v-bind=\"getPTOptions('nodeIcon')\"></span>\n <span :class=\"cx('nodeLabel')\" v-bind=\"getPTOptions('nodeLabel')\" @keydown.stop>\n <component v-if=\"templates[node.type] || templates['default']\" :is=\"templates[node.type] || templates['default']\" :node=\"node\" :expanded=\"expanded\" :selected=\"checkboxMode ? checked : selected\" />\n <template v-else>{{ label(node) }}</template>\n </span>\n </div>\n <div v-if=\"isNextDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <ul v-if=\"hasChildren && expanded\" :class=\"cx('nodeChildren')\" role=\"group\" v-bind=\"ptm('nodeChildren')\">\n <TreeNode\n v-for=\"(childNode, index) of node.children\"\n :key=\"childNode.key\"\n :node=\"childNode\"\n :parentNode=\"node\"\n :rootNodes=\"rootNodes\"\n :templates=\"templates\"\n :level=\"level + 1\"\n :index=\"index\"\n :loadingMode=\"loadingMode\"\n :expandedKeys=\"expandedKeys\"\n @node-toggle=\"onChildNodeToggle\"\n @node-click=\"onChildNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"propagateUp\"\n :draggableScope=\"draggableScope\"\n :draggableNodes=\"draggableNodes\"\n :droppableNodes=\"droppableNodes\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"$emit('node-drop', $event)\"\n @node-dragenter=\"$emit('node-dragenter', $event)\"\n @node-dragleave=\"$emit('node-dragleave', $event)\"\n @value-change=\"$emit('value-change', $event)\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n />\n </ul>\n </li>\n</template>\n\n<script>\nimport { find, findSingle, getAttribute, getOuterHeight, getOuterWidth } from '@primeuix/utils';\nimport BaseComponent from '@primevue/core/basecomponent';\nimport CheckIcon from '@primevue/icons/check';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport ChevronRightIcon from '@primevue/icons/chevronright';\nimport MinusIcon from '@primevue/icons/minus';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport Checkbox from 'primevue/checkbox';\nimport Ripple from 'primevue/ripple';\n\nexport default {\n name: 'TreeNode',\n hostName: 'Tree',\n extends: BaseComponent,\n emits: ['node-toggle', 'node-click', 'checkbox-change', 'node-drop', 'value-change', 'node-dragenter', 'node-dragleave'],\n props: {\n node: {\n type: null,\n default: null\n },\n parentNode: {\n type: null,\n default: null\n },\n rootNodes: {\n type: Array,\n default: null\n },\n expandedKeys: {\n type: null,\n default: null\n },\n loadingMode: {\n type: String,\n default: 'mask'\n },\n selectionKeys: {\n type: null,\n default: null\n },\n selectionMode: {\n type: String,\n default: null\n },\n templates: {\n type: null,\n default: null\n },\n level: {\n type: Number,\n default: null\n },\n draggableScope: {\n type: [String, Array],\n default: null\n },\n draggableNodes: {\n type: Boolean,\n default: null\n },\n droppableNodes: {\n type: Boolean,\n default: null\n },\n validateDrop: {\n type: Boolean,\n default: false\n },\n index: null\n },\n nodeTouched: false,\n toggleClicked: false,\n inject: {\n $pcTree: {\n default: undefined\n }\n },\n data() {\n return {\n isPrevDropPointHovered: false,\n isNextDropPointHovered: false,\n isNodeDropHovered: false\n };\n },\n mounted() {\n this.setAllNodesTabIndexes();\n },\n methods: {\n toggle() {\n this.$emit('node-toggle', this.node);\n this.toggleClicked = true;\n },\n label(node) {\n return typeof node.label === 'function' ? node.label() : node.label;\n },\n onChildNodeToggle(node) {\n this.$emit('node-toggle', node);\n },\n getPTOptions(key) {\n return this.ptm(key, {\n context: {\n node: this.node,\n index: this.index,\n expanded: this.expanded,\n selected: this.selected,\n checked: this.checked,\n partialChecked: this.partialChecked,\n leaf: this.leaf\n }\n });\n },\n onClick(event) {\n if (this.toggleClicked || getAttribute(event.target, '[data-pc-section=\"nodetogglebutton\"]') || getAttribute(event.target.parentElement, '[data-pc-section=\"nodetogglebutton\"]')) {\n this.toggleClicked = false;\n\n return;\n }\n\n if (this.isCheckboxSelectionMode()) {\n if (this.node.selectable != false) {\n this.toggleCheckbox();\n }\n } else {\n this.$emit('node-click', {\n originalEvent: event,\n nodeTouched: this.nodeTouched,\n node: this.node\n });\n }\n\n this.nodeTouched = false;\n },\n onChildNodeClick(event) {\n this.$emit('node-click', event);\n },\n onTouchEnd() {\n this.nodeTouched = true;\n },\n onKeyDown(event) {\n if (!this.isSameNode(event)) return;\n\n switch (event.code) {\n case 'Tab':\n this.onTabKey(event);\n\n break;\n\n case 'ArrowDown':\n this.onArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n this.onArrowUp(event);\n\n break;\n\n case 'ArrowRight':\n this.onArrowRight(event);\n\n break;\n\n case 'ArrowLeft':\n this.onArrowLeft(event);\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n this.onEnterKey(event);\n\n break;\n\n default:\n break;\n }\n },\n onArrowDown(event) {\n const nodeElement = event.target.getAttribute('data-pc-section') === 'nodetogglebutton' ? event.target.closest('[role=\"treeitem\"]') : event.target;\n const listElement = nodeElement.children[1];\n\n if (listElement) {\n this.focusRowChange(nodeElement, listElement.children[0]);\n } else {\n if (nodeElement.nextElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.nextElementSibling);\n } else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n\n if (nextSiblingAncestor) {\n this.focusRowChange(nodeElement, nextSiblingAncestor);\n }\n }\n }\n\n event.preventDefault();\n },\n onArrowUp(event) {\n const nodeElement = event.target;\n\n if (nodeElement.previousElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.previousElementSibling, this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n this.focusRowChange(nodeElement, parentNodeElement);\n }\n }\n\n event.preventDefault();\n },\n onArrowRight(event) {\n if (this.leaf || this.expanded) return;\n\n event.currentTarget.tabIndex = -1;\n\n this.$emit('node-toggle', this.node);\n this.$nextTick(() => {\n this.onArrowDown(event);\n });\n },\n onArrowLeft(event) {\n const togglerElement = findSingle(event.currentTarget, '[data-pc-section=\"nodetogglebutton\"]');\n\n if (this.level === 0 && !this.expanded) {\n return false;\n }\n\n if (this.expanded && !this.leaf) {\n togglerElement.click();\n\n return false;\n }\n\n const target = this.findBeforeClickableNode(event.currentTarget);\n\n if (target) {\n this.focusRowChange(event.currentTarget, target);\n }\n },\n onEnterKey(event) {\n this.setTabIndexForSelectionMode(event, this.nodeTouched);\n this.onClick(event);\n\n event.preventDefault();\n },\n onTabKey() {\n this.setAllNodesTabIndexes();\n },\n removeNodeFromTree(nodes, nodeToRemove) {\n return nodes.reduce((acc, node) => {\n if (node.key === nodeToRemove.key) {\n return acc;\n }\n if (node.children && node.children.length > 0) {\n const updatedChildren = this.removeNodeFromTree(node.children, nodeToRemove);\n acc.push({ ...node, children: updatedChildren });\n } else {\n acc.push(node);\n }\n\n return acc;\n }, []);\n },\n insertNodeInSiblings(nodes, targetKey, nodeToInsert, offset) {\n const targetIndex = nodes.findIndex((n) => n.key === targetKey);\n\n if (targetIndex !== -1) {\n return nodes.toSpliced(targetIndex + offset, 0, nodeToInsert);\n }\n\n return nodes.map((node) => {\n if (node.children && node.children.length > 0) {\n return { ...node, children: this.insertNodeInSiblings(node.children, targetKey, nodeToInsert, offset) };\n }\n\n return node;\n });\n },\n addNodeAsChild(nodes, parentKey, nodeToInsert) {\n return nodes.map((node) => {\n if (node.key === parentKey) {\n return { ...node, children: [...(node.children || []), nodeToInsert] };\n }\n\n if (node.children && node.children.length > 0) {\n return { ...node, children: this.addNodeAsChild(node.children, parentKey, nodeToInsert) };\n }\n\n return node;\n });\n },\n insertNodeOnDrop() {\n const { dragNode, dragNodeIndex, dragNodeSubNodes, dragDropService } = this.$pcTree;\n\n if (!this.node || dragNodeIndex == null || !dragNode || !dragNodeSubNodes) {\n return null;\n }\n\n const position = this.dropPosition;\n let updatedNodes = this.removeNodeFromTree(this.rootNodes, dragNode);\n\n if (position < 0) {\n // insert before a Node\n updatedNodes = this.insertNodeInSiblings(updatedNodes, this.node.key, dragNode, 0);\n } else if (position > 0) {\n // insert after a Node\n updatedNodes = this.insertNodeInSiblings(updatedNodes, this.node.key, dragNode, 1);\n } else {\n // insert as child of a Node\n updatedNodes = this.addNodeAsChild(updatedNodes, this.node.key, dragNode);\n }\n\n this.$emit('value-change', { nodes: updatedNodes });\n\n dragDropService.stopDrag({\n node: dragNode,\n subNodes: updatedNodes,\n index: dragNodeIndex\n });\n\n return updatedNodes;\n },\n onNodeDrop(event) {\n if (this.isDroppable) {\n event.preventDefault();\n event.stopPropagation();\n\n const { dragNode } = this.$pcTree;\n const position = this.dropPosition;\n const isValidDrop = position !== 0 || (position === 0 && this.isNodeDroppable);\n\n if (isValidDrop) {\n if (this.validateDrop) {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.rootNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n const updatedNodes = this.insertNodeOnDrop();\n\n this.$emit('node-drop', {\n originalEvent: event,\n value: updatedNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n });\n } else {\n const updatedNodes = this.insertNodeOnDrop();\n\n this.$emit('node-drop', {\n originalEvent: event,\n value: updatedNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n }\n },\n onNodeDragStart(event) {\n if (this.isNodeDraggable) {\n event.dataTransfer.effectAllowed = 'all';\n event.dataTransfer.setData('text', 'data');\n\n const target = event.currentTarget;\n const dragEl = target.cloneNode(true);\n const toggler = dragEl.querySelector('[data-pc-section=\"nodetogglebutton\"]');\n const checkbox = dragEl.querySelector('[data-pc-name=\"pcnodecheckbox\"]');\n\n target.setAttribute('data-p-dragging', 'true');\n dragEl.style.width = getOuterWidth(target) + 'px';\n dragEl.style.height = getOuterHeight(target) + 'px';\n dragEl.setAttribute('data-pc-section', 'drag-image');\n toggler.style.visibility = 'hidden';\n checkbox?.remove();\n document.body.appendChild(dragEl);\n event.dataTransfer.setDragImage(dragEl, 0, 0);\n\n setTimeout(() => document.body.removeChild(dragEl), 0);\n\n this.$pcTree.dragDropService.startDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index,\n scope: this.draggableScope\n });\n } else {\n event.preventDefault();\n }\n },\n onNodeDragOver(event) {\n if (this.isDroppable) {\n event.dataTransfer.dropEffect = 'copy';\n const nodeElement = event.currentTarget;\n const rect = nodeElement.getBoundingClientRect();\n const y = event.clientY - rect.top;\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n\n if (y < rect.height * 0.25) {\n this.isPrevDropPointHovered = true;\n } else if (y > rect.height * 0.75) {\n this.isNextDropPointHovered = true;\n } else if (this.isNodeDroppable) {\n this.isNodeDropHovered = true;\n }\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n\n if (this.droppableNodes) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n onNodeDragEnter() {\n this.$emit('node-dragenter', {\n node: this.node\n });\n },\n onNodeDragLeave() {\n this.$emit('node-dragleave', {\n node: this.node\n });\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n },\n onNodeDragEnd(event) {\n event.currentTarget?.removeAttribute('data-p-dragging');\n\n this.$pcTree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index\n });\n },\n setAllNodesTabIndexes() {\n const nodes = find(this.$refs.currentNode.closest('[data-pc-section=\"rootchildren\"]'), '[role=\"treeitem\"]');\n\n const hasSelectedNode = [...nodes].some((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n [...nodes].forEach((node) => {\n node.tabIndex = -1;\n });\n\n if (hasSelectedNode) {\n const selectedNodes = [...nodes].filter((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n selectedNodes[0].tabIndex = 0;\n\n return;\n }\n\n [...nodes][0].tabIndex = 0;\n },\n setTabIndexForSelectionMode(event, nodeTouched) {\n if (this.selectionMode !== null) {\n const elements = [...find(this.$refs.currentNode.parentElement, '[role=\"treeitem\"]')];\n\n event.currentTarget.tabIndex = nodeTouched === false ? -1 : 0;\n\n if (elements.every((element) => element.tabIndex === -1)) {\n elements[0].tabIndex = 0;\n }\n }\n },\n focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant) {\n firstFocusableRow.tabIndex = '-1';\n currentFocusedRow.tabIndex = '0';\n\n this.focusNode(lastVisibleDescendant || currentFocusedRow);\n },\n findBeforeClickableNode(node) {\n const parentListElement = node.closest('ul').closest('li');\n\n if (parentListElement) {\n const prevNodeButton = findSingle(parentListElement, 'button');\n\n if (prevNodeButton && prevNodeButton.style.visibility !== 'hidden') {\n return parentListElement;\n }\n\n return this.findBeforeClickableNode(node.previousElementSibling);\n }\n\n return null;\n },\n toggleCheckbox() {\n let _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n const _check = !this.checked;\n\n this.propagateDown(this.node, _check, _selectionKeys);\n\n this.$emit('checkbox-change', {\n node: this.node,\n check: _check,\n selectionKeys: _selectionKeys\n });\n },\n propagateDown(node, check, selectionKeys) {\n if (check && node.selectable != false) selectionKeys[node.key] = { checked: true, partialChecked: false };\n else delete selectionKeys[node.key];\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, check, selectionKeys);\n }\n }\n },\n propagateUp(event) {\n let check = event.check;\n let _selectionKeys = { ...event.selectionKeys };\n let checkedChildCount = 0;\n let childPartialSelected = false;\n\n for (let child of this.node.children) {\n if (_selectionKeys[child.key] && _selectionKeys[child.key].checked) checkedChildCount++;\n else if (_selectionKeys[child.key] && _selectionKeys[child.key].partialChecked) childPartialSelected = true;\n }\n\n if (check && checkedChildCount === this.node.children.length) {\n _selectionKeys[this.node.key] = { checked: true, partialChecked: false };\n } else {\n if (!check) {\n delete _selectionKeys[this.node.key];\n }\n\n if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== this.node.children.length)) _selectionKeys[this.node.key] = { checked: false, partialChecked: true };\n else delete _selectionKeys[this.node.key];\n }\n\n this.$emit('checkbox-change', {\n node: event.node,\n check: event.check,\n selectionKeys: _selectionKeys\n });\n },\n onChildCheckboxChange(event) {\n this.$emit('checkbox-change', event);\n },\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling) return parentNodeElement.nextElementSibling;\n else return this.findNextSiblingOfAncestor(parentNodeElement);\n } else {\n return null;\n }\n },\n findLastVisibleDescendant(nodeElement) {\n const childrenListElement = nodeElement.children[1];\n\n if (childrenListElement) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n } else {\n return nodeElement;\n }\n },\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement.parentElement;\n\n return getAttribute(parentNodeElement, 'role') === 'treeitem' ? parentNodeElement : null;\n },\n focusNode(element) {\n element.focus();\n },\n isCheckboxSelectionMode() {\n return this.selectionMode === 'checkbox';\n },\n isSameNode(event) {\n return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role=\"treeitem\"]')));\n }\n },\n computed: {\n hasChildren() {\n return this.node.children && this.node.children.length > 0;\n },\n expanded() {\n return this.expandedKeys && this.expandedKeys[this.node.key] === true;\n },\n leaf() {\n return this.node.leaf === false ? false : !(this.node.children && this.node.children.length);\n },\n selectable() {\n return this.node.selectable === false ? false : this.selectionMode != null;\n },\n selected() {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.node.key] === true : false;\n },\n checkboxMode() {\n return this.selectionMode === 'checkbox' && this.node.selectable !== false;\n },\n checked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].checked : false;\n },\n partialChecked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].partialChecked : false;\n },\n ariaChecked() {\n return this.selectionMode === 'single' || this.selectionMode === 'multiple' ? this.selected : undefined;\n },\n ariaSelected() {\n return this.checkboxMode ? this.checked : undefined;\n },\n isPrevDropPointActive() {\n return this.isPrevDropPointHovered && this.isDroppable;\n },\n isNextDropPointActive() {\n return this.isNextDropPointHovered && this.isDroppable;\n },\n dropPosition() {\n return this.isPrevDropPointActive ? -1 : this.isNextDropPointActive ? 1 : 0;\n },\n subNodes() {\n return this.parentNode ? this.parentNode.children : this.rootNodes;\n },\n isDraggable() {\n return this.draggableNodes;\n },\n isDroppable() {\n return this.droppableNodes && this.$pcTree.allowNodeDrop(this.node);\n },\n isNodeDraggable() {\n return this.node?.draggable !== false && this.isDraggable;\n },\n isNodeDroppable() {\n return this.node?.droppable !== false && this.isDroppable;\n },\n isNodeDropActive() {\n return this.isNodeDropHovered && this.isNodeDroppable;\n }\n },\n components: {\n Checkbox,\n ChevronDownIcon,\n ChevronRightIcon,\n CheckIcon,\n MinusIcon,\n SpinnerIcon\n },\n directives: {\n ripple: Ripple\n }\n};\n</script>\n","<template>\n <div :class=\"cx('root')\" @dragover=\"onDragOver\" @dragenter=\"onDragEnter\" @dragleave=\"onDragLeave\" @drop=\"onDrop\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n <template v-if=\"loading && loadingMode === 'mask'\">\n <div :class=\"cx('mask')\" v-bind=\"ptm('mask')\">\n <slot name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n <i v-if=\"loadingIcon\" :class=\"[cx('loadingIcon'), 'pi-spin', loadingIcon]\" v-bind=\"ptm('loadingIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('loadingIcon')\" v-bind=\"ptm('loadingIcon')\" />\n </slot>\n </div>\n </template>\n <IconField v-if=\"filter\" :unstyled=\"unstyled\" :pt=\"{ ...ptm('pcFilter'), ...ptm('pcFilterContainer') }\" :class=\"cx('pcFilterContainer')\">\n <InputText v-model=\"filterValue\" autocomplete=\"off\" :class=\"cx('pcFilterInput')\" :placeholder=\"filterPlaceholder\" :unstyled=\"unstyled\" @keyup=\"onFilterKeyup\" :pt=\"ptm('pcFilterInput')\" />\n <InputIcon :unstyled=\"unstyled\" :pt=\"ptm('pcFilterIconContainer')\">\n <!--TODO: searchicon deprecated since v4.0-->\n <slot :name=\"$slots.filtericon ? 'filtericon' : 'searchicon'\" :class=\"cx('filterIcon')\">\n <SearchIcon :class=\"cx('filterIcon')\" v-bind=\"ptm('filterIcon')\" />\n </slot>\n </InputIcon>\n </IconField>\n <div :class=\"cx('wrapper')\" :style=\"{ maxHeight: scrollHeight }\" :data-p=\"wrapperDataP\" v-bind=\"ptm('wrapper')\">\n <slot name=\"header\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n <ul v-if=\"!empty\" :class=\"cx('rootChildren')\" role=\"tree\" :aria-labelledby=\"ariaLabelledby\" :aria-label=\"ariaLabel\" v-bind=\"ptm('rootChildren')\">\n <TreeNode\n v-for=\"(node, index) of valueToRender\"\n :key=\"node.key\"\n :node=\"node\"\n :rootNodes=\"valueToRender\"\n :templates=\"$slots\"\n :level=\"level + 1\"\n :index=\"index\"\n :expandedKeys=\"d_expandedKeys\"\n @node-toggle=\"onNodeToggle\"\n @node-click=\"onNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"onCheckboxChange\"\n :loadingMode=\"loadingMode\"\n :draggableNodes=\"draggableNodes\"\n :droppableNodes=\"droppableNodes\"\n :draggableScope=\"draggableScope\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"onNodeDrop\"\n @node-dragenter=\"onNodeDragEnter\"\n @node-dragleave=\"onNodeDragLeave\"\n @value-change=\"onValueChanged\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n ></TreeNode>\n </ul>\n <div v-else-if=\"empty && !$pcTreeSelect\" :class=\"cx('emptyMessage')\" v-bind=\"ptm('emptyMessage')\">\n <slot name=\"empty\">\n {{ emptyMessageText }}\n </slot>\n </div>\n <slot name=\"footer\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { isFunction, resolveFieldData } from '@primeuix/utils/object';\nimport SearchIcon from '@primevue/icons/search';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport BaseTree from './BaseTree.vue';\nimport { useTreeDragDropService } from './TreeDragDropService';\nimport TreeNode from './TreeNode.vue';\n\nexport default {\n name: 'Tree',\n extends: BaseTree,\n inheritAttrs: false,\n emits: ['node-expand', 'node-collapse', 'update:expandedKeys', 'update:selectionKeys', 'node-select', 'node-unselect', 'filter', 'node-drop', 'node-dragenter', 'node-dragleave', 'update:value', 'drag-enter', 'drag-leave'],\n data() {\n return {\n d_expandedKeys: this.expandedKeys || {},\n filterValue: null,\n dragNode: null,\n dragNodeSubNodes: null,\n dragNodeIndex: null,\n dragNodeScope: null,\n dragHover: null\n };\n },\n inject: {\n $pcTreeSelect: { default: null }\n },\n dragDropService: null,\n dragStartCleanup: null,\n dragStopCleanup: null,\n watch: {\n expandedKeys(newValue) {\n this.d_expandedKeys = newValue;\n }\n },\n mounted() {\n if (this.droppableNodes) {\n this.dragDropService = useTreeDragDropService();\n\n this.dragStartCleanup = this.dragDropService.onDragStart((event) => {\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n\n this.dragStopCleanup = this.dragDropService.onDragStop(() => {\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n },\n beforeUnmount() {\n if (this.dragStartCleanup) {\n this.dragStartCleanup();\n }\n\n if (this.dragStopCleanup) {\n this.dragStopCleanup();\n }\n },\n methods: {\n onNodeToggle(node) {\n const key = node.key;\n\n if (this.d_expandedKeys[key]) {\n delete this.d_expandedKeys[key];\n this.$emit('node-collapse', node);\n } else {\n this.d_expandedKeys[key] = true;\n this.$emit('node-expand', node);\n }\n\n this.d_expandedKeys = { ...this.d_expandedKeys };\n this.$emit('update:expandedKeys', this.d_expandedKeys);\n },\n onNodeClick(event) {\n if (this.selectionMode != null && event.node.selectable !== false) {\n const metaSelection = event.nodeTouched ? false : this.metaKeySelection;\n const _selectionKeys = metaSelection ? this.handleSelectionWithMetaKey(event) : this.handleSelectionWithoutMetaKey(event);\n\n this.$emit('update:selectionKeys', _selectionKeys);\n }\n },\n onCheckboxChange(event) {\n this.$emit('update:selectionKeys', event.selectionKeys);\n\n if (event.check) this.$emit('node-select', event.node);\n else this.$emit('node-unselect', event.node);\n },\n handleSelectionWithMetaKey(event) {\n const originalEvent = event.originalEvent;\n const node = event.node;\n const metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n }\n\n this.$emit('node-unselect', node);\n } else {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else if (this.isMultipleSelectionMode()) {\n _selectionKeys = !metaKey ? {} : this.selectionKeys ? { ...this.selectionKeys } : {};\n }\n\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n\n return _selectionKeys;\n },\n handleSelectionWithoutMetaKey(event) {\n const node = event.node;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (this.isSingleSelectionMode()) {\n if (selected) {\n _selectionKeys = {};\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = {};\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n } else {\n if (selected) {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n _selectionKeys[node.key] = true;\n\n this.$emit('node-select', node);\n }\n }\n\n return _selectionKeys;\n },\n isSingleSelectionMode() {\n return this.selectionMode === 'single';\n },\n isMultipleSelectionMode() {\n return this.selectionMode === 'multiple';\n },\n isNodeSelected(node) {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[node.key] === true : false;\n },\n isChecked(node) {\n return this.selectionKeys ? this.selectionKeys[node.key] && this.selectionKeys[node.key].checked : false;\n },\n isNodeLeaf(node) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n },\n onFilterKeyup(event) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n event.preventDefault();\n }\n\n this.$emit('filter', { originalEvent: event, value: event.target.value });\n },\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n\n if (node.children) {\n let childNodes = [...node.children];\n\n node.children = [];\n\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n return true;\n }\n }\n },\n isFilterMatched(node, { searchFields, filterText, strict }) {\n let matched = false;\n\n for (let field of searchFields) {\n let fieldValue = String(resolveFieldData(node, field)).toLocaleLowerCase(this.filterLocale);\n\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (strict && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { searchFields, filterText, strict }) || matched;\n }\n\n return matched;\n },\n onNodeDrop(event) {\n this.$emit('node-drop', event);\n },\n onNodeDragEnter(event) {\n this.$emit('node-dragenter', event);\n },\n onNodeDragLeave(event) {\n this.$emit('node-dragleave', event);\n },\n onValueChanged(event) {\n this.dragNodeSubNodes.splice(this.dragNodeIndex, 1);\n this.$emit('update:value', event.nodes);\n },\n allowDrop(dragNode, dropNode, dragNodeScope) {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n } else if (this.isValidDragScope(dragNodeScope)) {\n let allow = true;\n\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n } else {\n let parent = dropNode.parent;\n\n while (parent != null) {\n if (parent === dragNode) {\n allow = false;\n\n break;\n }\n\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n } else {\n return false;\n }\n },\n allowNodeDrop(dropNode) {\n return this.allowDrop(this.dragNode, dropNode, this.dragNodeScope);\n },\n hasCommonScope(dragScope, dropScope) {\n if (dragScope === null && dropScope === null) {\n return true;\n } else if (dragScope === null || dropScope === null) {\n return false;\n }\n\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string') {\n return dragScope === dropScope;\n } else if (Array.isArray(dragScope)) {\n return dragScope.indexOf(dropScope) !== -1;\n }\n } else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return dropScope.indexOf(dragScope) !== -1;\n } else if (Array.isArray(dragScope)) {\n for (let ds of dragScope) {\n if (dropScope.indexOf(ds) !== -1) {\n return true;\n }\n }\n return false;\n }\n }\n\n return false;\n },\n isValidDragScope(dragScope) {\n if (this.droppableScope === null) {\n return true;\n }\n\n return this.hasCommonScope(dragScope, this.droppableScope);\n },\n isSameTreeScope(dragScope) {\n return this.hasCommonScope(dragScope, this.draggableScope);\n },\n onDragOver(event) {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n event.dataTransfer.dropEffect = 'copy';\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n\n event.preventDefault();\n },\n onDragEnter(event) {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n\n this.$emit('drag-enter', {\n originalEvent: event,\n value: this.value,\n dragNode: this.dragNode,\n dragNodeScope: this.dragNodeScope\n });\n }\n },\n onDragLeave(event) {\n if (this.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n\n if (event.x >= parseInt(rect.right) || event.x <= parseInt(rect.left) || event.y >= parseInt(rect.bottom) || event.y <= parseInt(rect.top)) {\n this.dragHover = false;\n }\n\n this.$emit('drag-leave', {\n originalEvent: event,\n value: this.value,\n dragNode: this.dragNode,\n dragNodeScope: this.dragNodeScope\n });\n }\n },\n processTreeDrop(dragNode, dragNodeIndex) {\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n const newValue = [...(this.value || []), dragNode];\n this.$emit('update:value', newValue);\n\n this.dragDropService.stopDrag({\n node: dragNode\n });\n },\n onDrop(event) {\n if (this.droppableNodes) {\n event.preventDefault();\n let dragNode = this.dragNode;\n\n if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n let dragNodeIndex = this.dragNodeIndex;\n\n if (this.isSameTreeScope(this.dragNodeScope)) {\n this.dragDropService.stopDrag({\n node: dragNode\n });\n\n return;\n }\n\n if (this.validateDrop) {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.value,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex,\n accept: () => {\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n });\n } else {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.value,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex\n });\n\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n }\n }\n }\n },\n computed: {\n filteredValue() {\n let filteredNodes = [];\n const searchFields = isFunction(this.filterBy) ? [this.filterBy] : this.filterBy.split(',');\n const filterText = this.filterValue.trim().toLocaleLowerCase(this.filterLocale);\n const strict = this.filterMode === 'strict';\n\n for (let node of this.value) {\n let _node = { ...node };\n let paramsWithoutNode = { searchFields, filterText, strict };\n\n if (\n (strict && (this.findFilteredNodes(_node, paramsWithoutNode) || this.isFilterMatched(_node, paramsWithoutNode))) ||\n (!strict && (this.isFilterMatched(_node, paramsWithoutNode) || this.findFilteredNodes(_node, paramsWithoutNode)))\n ) {\n filteredNodes.push(_node);\n }\n }\n\n return filteredNodes;\n },\n valueToRender() {\n if (this.filterValue && this.filterValue.trim().length > 0) return this.filteredValue;\n else return this.value;\n },\n empty() {\n return !this.valueToRender || this.valueToRender.length === 0;\n },\n emptyMessageText() {\n return this.$primevue.config?.locale?.emptyMessage || '';\n },\n containerDataP() {\n return cn({\n loading: this.loading,\n scrollable: this.scrollHeight === 'flex'\n });\n },\n wrapperDataP() {\n return cn({\n scrollable: this.scrollHeight === 'flex'\n });\n }\n },\n components: {\n TreeNode,\n InputText,\n InputIcon,\n IconField,\n SearchIcon,\n SpinnerIcon\n }\n};\n</script>\n","<template>\n <div :class=\"cx('root')\" @dragover=\"onDragOver\" @dragenter=\"onDragEnter\" @dragleave=\"onDragLeave\" @drop=\"onDrop\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n <template v-if=\"loading && loadingMode === 'mask'\">\n <div :class=\"cx('mask')\" v-bind=\"ptm('mask')\">\n <slot name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n <i v-if=\"loadingIcon\" :class=\"[cx('loadingIcon'), 'pi-spin', loadingIcon]\" v-bind=\"ptm('loadingIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('loadingIcon')\" v-bind=\"ptm('loadingIcon')\" />\n </slot>\n </div>\n </template>\n <IconField v-if=\"filter\" :unstyled=\"unstyled\" :pt=\"{ ...ptm('pcFilter'), ...ptm('pcFilterContainer') }\" :class=\"cx('pcFilterContainer')\">\n <InputText v-model=\"filterValue\" autocomplete=\"off\" :class=\"cx('pcFilterInput')\" :placeholder=\"filterPlaceholder\" :unstyled=\"unstyled\" @keyup=\"onFilterKeyup\" :pt=\"ptm('pcFilterInput')\" />\n <InputIcon :unstyled=\"unstyled\" :pt=\"ptm('pcFilterIconContainer')\">\n <!--TODO: searchicon deprecated since v4.0-->\n <slot :name=\"$slots.filtericon ? 'filtericon' : 'searchicon'\" :class=\"cx('filterIcon')\">\n <SearchIcon :class=\"cx('filterIcon')\" v-bind=\"ptm('filterIcon')\" />\n </slot>\n </InputIcon>\n </IconField>\n <div :class=\"cx('wrapper')\" :style=\"{ maxHeight: scrollHeight }\" :data-p=\"wrapperDataP\" v-bind=\"ptm('wrapper')\">\n <slot name=\"header\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n <ul v-if=\"!empty\" :class=\"cx('rootChildren')\" role=\"tree\" :aria-labelledby=\"ariaLabelledby\" :aria-label=\"ariaLabel\" v-bind=\"ptm('rootChildren')\">\n <TreeNode\n v-for=\"(node, index) of valueToRender\"\n :key=\"node.key\"\n :node=\"node\"\n :rootNodes=\"valueToRender\"\n :templates=\"$slots\"\n :level=\"level + 1\"\n :index=\"index\"\n :expandedKeys=\"d_expandedKeys\"\n @node-toggle=\"onNodeToggle\"\n @node-click=\"onNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"onCheckboxChange\"\n :loadingMode=\"loadingMode\"\n :draggableNodes=\"draggableNodes\"\n :droppableNodes=\"droppableNodes\"\n :draggableScope=\"draggableScope\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"onNodeDrop\"\n @node-dragenter=\"onNodeDragEnter\"\n @node-dragleave=\"onNodeDragLeave\"\n @value-change=\"onValueChanged\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n ></TreeNode>\n </ul>\n <div v-else-if=\"empty && !$pcTreeSelect\" :class=\"cx('emptyMessage')\" v-bind=\"ptm('emptyMessage')\">\n <slot name=\"empty\">\n {{ emptyMessageText }}\n </slot>\n </div>\n <slot name=\"footer\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { isFunction, resolveFieldData } from '@primeuix/utils/object';\nimport SearchIcon from '@primevue/icons/search';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport BaseTree from './BaseTree.vue';\nimport { useTreeDragDropService } from './TreeDragDropService';\nimport TreeNode from './TreeNode.vue';\n\nexport default {\n name: 'Tree',\n extends: BaseTree,\n inheritAttrs: false,\n emits: ['node-expand', 'node-collapse', 'update:expandedKeys', 'update:selectionKeys', 'node-select', 'node-unselect', 'filter', 'node-drop', 'node-dragenter', 'node-dragleave', 'update:value', 'drag-enter', 'drag-leave'],\n data() {\n return {\n d_expandedKeys: this.expandedKeys || {},\n filterValue: null,\n dragNode: null,\n dragNodeSubNodes: null,\n dragNodeIndex: null,\n dragNodeScope: null,\n dragHover: null\n };\n },\n inject: {\n $pcTreeSelect: { default: null }\n },\n dragDropService: null,\n dragStartCleanup: null,\n dragStopCleanup: null,\n watch: {\n expandedKeys(newValue) {\n this.d_expandedKeys = newValue;\n }\n },\n mounted() {\n if (this.droppableNodes) {\n this.dragDropService = useTreeDragDropService();\n\n this.dragStartCleanup = this.dragDropService.onDragStart((event) => {\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n\n this.dragStopCleanup = this.dragDropService.onDragStop(() => {\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n },\n beforeUnmount() {\n if (this.dragStartCleanup) {\n this.dragStartCleanup();\n }\n\n if (this.dragStopCleanup) {\n this.dragStopCleanup();\n }\n },\n methods: {\n onNodeToggle(node) {\n const key = node.key;\n\n if (this.d_expandedKeys[key]) {\n delete this.d_expandedKeys[key];\n this.$emit('node-collapse', node);\n } else {\n this.d_expandedKeys[key] = true;\n this.$emit('node-expand', node);\n }\n\n this.d_expandedKeys = { ...this.d_expandedKeys };\n this.$emit('update:expandedKeys', this.d_expandedKeys);\n },\n onNodeClick(event) {\n if (this.selectionMode != null && event.node.selectable !== false) {\n const metaSelection = event.nodeTouched ? false : this.metaKeySelection;\n const _selectionKeys = metaSelection ? this.handleSelectionWithMetaKey(event) : this.handleSelectionWithoutMetaKey(event);\n\n this.$emit('update:selectionKeys', _selectionKeys);\n }\n },\n onCheckboxChange(event) {\n this.$emit('update:selectionKeys', event.selectionKeys);\n\n if (event.check) this.$emit('node-select', event.node);\n else this.$emit('node-unselect', event.node);\n },\n handleSelectionWithMetaKey(event) {\n const originalEvent = event.originalEvent;\n const node = event.node;\n const metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n }\n\n this.$emit('node-unselect', node);\n } else {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else if (this.isMultipleSelectionMode()) {\n _selectionKeys = !metaKey ? {} : this.selectionKeys ? { ...this.selectionKeys } : {};\n }\n\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n\n return _selectionKeys;\n },\n handleSelectionWithoutMetaKey(event) {\n const node = event.node;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (this.isSingleSelectionMode()) {\n if (selected) {\n _selectionKeys = {};\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = {};\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n } else {\n if (selected) {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n _selectionKeys[node.key] = true;\n\n this.$emit('node-select', node);\n }\n }\n\n return _selectionKeys;\n },\n isSingleSelectionMode() {\n return this.selectionMode === 'single';\n },\n isMultipleSelectionMode() {\n return this.selectionMode === 'multiple';\n },\n isNodeSelected(node) {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[node.key] === true : false;\n },\n isChecked(node) {\n return this.selectionKeys ? this.selectionKeys[node.key] && this.selectionKeys[node.key].checked : false;\n },\n isNodeLeaf(node) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n },\n onFilterKeyup(event) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n event.preventDefault();\n }\n\n this.$emit('filter', { originalEvent: event, value: event.target.value });\n },\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n\n if (node.children) {\n let childNodes = [...node.children];\n\n node.children = [];\n\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n return true;\n }\n }\n },\n isFilterMatched(node, { searchFields, filterText, strict }) {\n let matched = false;\n\n for (let field of searchFields) {\n let fieldValue = String(resolveFieldData(node, field)).toLocaleLowerCase(this.filterLocale);\n\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (strict && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { searchFields, filterText, strict }) || matched;\n }\n\n return matched;\n },\n onNodeDrop(event) {\n this.$emit('node-drop', event);\n },\n onNodeDragEnter(event) {\n this.$emit('node-dragenter', event);\n },\n onNodeDragLeave(event) {\n this.$emit('node-dragleave', event);\n },\n onValueChanged(event) {\n this.dragNodeSubNodes.splice(this.dragNodeIndex, 1);\n this.$emit('update:value', event.nodes);\n },\n allowDrop(dragNode, dropNode, dragNodeScope) {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n } else if (this.isValidDragScope(dragNodeScope)) {\n let allow = true;\n\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n } else {\n let parent = dropNode.parent;\n\n while (parent != null) {\n if (parent === dragNode) {\n allow = false;\n\n break;\n }\n\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n } else {\n return false;\n }\n },\n allowNodeDrop(dropNode) {\n return this.allowDrop(this.dragNode, dropNode, this.dragNodeScope);\n },\n hasCommonScope(dragScope, dropScope) {\n if (dragScope === null && dropScope === null) {\n return true;\n } else if (dragScope === null || dropScope === null) {\n return false;\n }\n\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string') {\n return dragScope === dropScope;\n } else if (Array.isArray(dragScope)) {\n return dragScope.indexOf(dropScope) !== -1;\n }\n } else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return dropScope.indexOf(dragScope) !== -1;\n } else if (Array.isArray(dragScope)) {\n for (let ds of dragScope) {\n if (dropScope.indexOf(ds) !== -1) {\n return true;\n }\n }\n return false;\n }\n }\n\n return false;\n },\n isValidDragScope(dragScope) {\n if (this.droppableScope === null) {\n return true;\n }\n\n return this.hasCommonScope(dragScope, this.droppableScope);\n },\n isSameTreeScope(dragScope) {\n return this.hasCommonScope(dragScope, this.draggableScope);\n },\n onDragOver(event) {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n event.dataTransfer.dropEffect = 'copy';\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n\n event.preventDefault();\n },\n onDragEnter(event) {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n\n this.$emit('drag-enter', {\n originalEvent: event,\n value: this.value,\n dragNode: this.dragNode,\n dragNodeScope: this.dragNodeScope\n });\n }\n },\n onDragLeave(event) {\n if (this.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n\n if (event.x >= parseInt(rect.right) || event.x <= parseInt(rect.left) || event.y >= parseInt(rect.bottom) || event.y <= parseInt(rect.top)) {\n this.dragHover = false;\n }\n\n this.$emit('drag-leave', {\n originalEvent: event,\n value: this.value,\n dragNode: this.dragNode,\n dragNodeScope: this.dragNodeScope\n });\n }\n },\n processTreeDrop(dragNode, dragNodeIndex) {\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n const newValue = [...(this.value || []), dragNode];\n this.$emit('update:value', newValue);\n\n this.dragDropService.stopDrag({\n node: dragNode\n });\n },\n onDrop(event) {\n if (this.droppableNodes) {\n event.preventDefault();\n let dragNode = this.dragNode;\n\n if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n let dragNodeIndex = this.dragNodeIndex;\n\n if (this.isSameTreeScope(this.dragNodeScope)) {\n this.dragDropService.stopDrag({\n node: dragNode\n });\n\n return;\n }\n\n if (this.validateDrop) {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.value,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex,\n accept: () => {\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n });\n } else {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.value,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex\n });\n\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n }\n }\n }\n },\n computed: {\n filteredValue() {\n let filteredNodes = [];\n const searchFields = isFunction(this.filterBy) ? [this.filterBy] : this.filterBy.split(',');\n const filterText = this.filterValue.trim().toLocaleLowerCase(this.filterLocale);\n const strict = this.filterMode === 'strict';\n\n for (let node of this.value) {\n let _node = { ...node };\n let paramsWithoutNode = { searchFields, filterText, strict };\n\n if (\n (strict && (this.findFilteredNodes(_node, paramsWithoutNode) || this.isFilterMatched(_node, paramsWithoutNode))) ||\n (!strict && (this.isFilterMatched(_node, paramsWithoutNode) || this.findFilteredNodes(_node, paramsWithoutNode)))\n ) {\n filteredNodes.push(_node);\n }\n }\n\n return filteredNodes;\n },\n valueToRender() {\n if (this.filterValue && this.filterValue.trim().length > 0) return this.filteredValue;\n else return this.value;\n },\n empty() {\n return !this.valueToRender || this.valueToRender.length === 0;\n },\n emptyMessageText() {\n return this.$primevue.config?.locale?.emptyMessage || '';\n },\n containerDataP() {\n return cn({\n loading: this.loading,\n scrollable: this.scrollHeight === 'flex'\n });\n },\n wrapperDataP() {\n return cn({\n scrollable: this.scrollHeight === 'flex'\n });\n }\n },\n components: {\n TreeNode,\n InputText,\n InputIcon,\n IconField,\n SearchIcon,\n SpinnerIcon\n }\n};\n</script>\n"],"names":["name","BaseComponent","props","value","type","expandedKeys","selectionKeys","selectionMode","String","metaKeySelection","Boolean","loading","loadingIcon","undefined","loadingMode","filter","filterBy","Function","filterMode","filterPlaceholder","filterLocale","highlightOnSelect","scrollHeight","level","Number","draggableNodes","droppableNodes","draggableScope","Array","droppableScope","validateDrop","ariaLabelledby","ariaLabel","style","TreeStyle","provide","$pcTree","$parentInstance","dragState","reactive","isDragging","dragNode","dragScope","dragStartHandlers","Set","dragStopHandlers","useTreeDragDropService","startDrag","event","node","scope","forEach","handler","stopDrag","onDragStart","add","onDragStop","hostName","emits","parentNode","rootNodes","templates","index","nodeTouched","toggleClicked","inject","data","isPrevDropPointHovered","isNextDropPointHovered","isNodeDropHovered","mounted","setAllNodesTabIndexes","methods","toggle","$emit","label","onChildNodeToggle","getPTOptions","key","ptm","context","expanded","selected","checked","partialChecked","leaf","onClick","getAttribute","target","parentElement","isCheckboxSelectionMode","selectable","toggleCheckbox","originalEvent","onChildNodeClick","onTouchEnd","onKeyDown","isSameNode","code","onTabKey","onArrowDown","onArrowUp","onArrowRight","onArrowLeft","onEnterKey","nodeElement","closest","listElement","children","focusRowChange","nextElementSibling","nextSiblingAncestor","findNextSiblingOfAncestor","preventDefault","previousElementSibling","findLastVisibleDescendant","parentNodeElement","getParentNodeElement","_this","currentTarget","tabIndex","$nextTick","togglerElement","findSingle","click","findBeforeClickableNode","setTabIndexForSelectionMode","removeNodeFromTree","nodes","nodeToRemove","_this2","reduce","acc","length","updatedChildren","push","_objectSpread","insertNodeInSiblings","targetKey","nodeToInsert","offset","_this3","targetIndex","findIndex","n","toSpliced","map","addNodeAsChild","parentKey","_this4","concat","_toConsumableArray","insertNodeOnDrop","_this$$pcTree","dragNodeIndex","dragNodeSubNodes","dragDropService","position","dropPosition","updatedNodes","subNodes","onNodeDrop","_this5","isDroppable","stopPropagation","isValidDrop","isNodeDroppable","dropNode","accept","onNodeDragStart","isNodeDraggable","dataTransfer","effectAllowed","setData","dragEl","cloneNode","toggler","querySelector","checkbox","setAttribute","width","getOuterWidth","height","getOuterHeight","visibility","remove","document","body","appendChild","setDragImage","setTimeout","removeChild","onNodeDragOver","dropEffect","rect","getBoundingClientRect","y","clientY","top","onNodeDragEnter","onNodeDragLeave","onNodeDragEnd","_event$currentTarget","removeAttribute","find","$refs","currentNode","hasSelectedNode","some","selectedNodes","elements","every","element","firstFocusableRow","currentFocusedRow","lastVisibleDescendant","focusNode","parentListElement","prevNodeButton","_selectionKeys","_check","propagateDown","check","_iterator","_createForOfIteratorHelper","_step","s","done","child","err","e","f","propagateUp","checkedChildCount","childPartialSelected","_iterator2","_step2","onChildCheckboxChange","childrenListElement","lastChildElement","focus","computed","hasChildren","checkboxMode","ariaChecked","ariaSelected","isPrevDropPointActive","isNextDropPointActive","isDraggable","allowNodeDrop","_this$node","draggable","_this$node2","droppable","isNodeDropActive","components","Checkbox","ChevronDownIcon","ChevronRightIcon","CheckIcon","MinusIcon","SpinnerIcon","directives","ripple","Ripple","_openBlock","_createElementBlock","_mergeProps","ref","_ctx","cx","role","$options","$props","tabindex","onKeydown","apply","arguments","_createElementVNode","onTouchend","onDragstart","onDragover","onDragenter","onDragleave","onDragend","onDrop","_withDirectives","_Fragment","_createBlock","_resolveDynamicComponent","_component_SpinnerIcon","spin","expandedIcon","collapsedIcon","_component_Checkbox","defaultValue","binary","indeterminate","unstyled","pt","icon","_withCtx","slotProps","_normalizeClass","_createTextVNode","_toDisplayString","childNode","_component_TreeNode","onNodeToggle","onNodeClick","onCheckboxChange","_cache","$event","onNodeDragenter","onNodeDragleave","onValueChange","BaseTree","inheritAttrs","d_expandedKeys","filterValue","dragNodeScope","dragHover","$pcTreeSelect","dragStartCleanup","dragStopCleanup","watch","newValue","beforeUnmount","metaSelection","handleSelectionWithMetaKey","handleSelectionWithoutMetaKey","metaKey","ctrlKey","isNodeSelected","isSingleSelectionMode","isMultipleSelectionMode","isChecked","isNodeLeaf","onFilterKeyup","findFilteredNodes","paramsWithoutNode","matched","childNodes","copyChildNode","isFilterMatched","_ref","searchFields","filterText","strict","field","fieldValue","resolveFieldData","toLocaleLowerCase","indexOf","onValueChanged","splice","allowDrop","isValidDragScope","allow","parent","hasCommonScope","dropScope","isArray","_iterator3","_step3","ds","isSameTreeScope","onDragOver","onDragEnter","onDragLeave","x","parseInt","right","left","bottom","processTreeDrop","filteredValue","filteredNodes","isFunction","split","trim","_iterator4","_step4","_node","valueToRender","empty","emptyMessageText","_this$$primevue$confi","$primevue","config","locale","emptyMessage","containerDataP","cn","scrollable","wrapperDataP","TreeNode","InputText","InputIcon","IconField","SearchIcon","ptmi","_renderSlot","$slots","_component_IconField","_createVNode","_component_InputText","$data","autocomplete","placeholder","onKeyup","_component_InputIcon","filtericon","_component_SearchIcon","_renderList"],"mappings":"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"}