tree.mjs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import { defineComponent, useSlots, provide, getCurrentInstance, openBlock, createElementBlock, normalizeClass, unref, createBlock, withCtx, normalizeStyle, createElementVNode, toDisplayString } from 'vue';
  2. import '../../../hooks/index.mjs';
  3. import '../../../tokens/index.mjs';
  4. import '../../virtual-list/index.mjs';
  5. import { useTree } from './composables/useTree.mjs';
  6. import ElTreeNode from './tree-node.mjs';
  7. import { treeProps, treeEmits, ROOT_TREE_INJECTION_KEY } from './virtual-tree.mjs';
  8. import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
  9. import { formItemContextKey } from '../../../tokens/form.mjs';
  10. import { useLocale } from '../../../hooks/use-locale/index.mjs';
  11. import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
  12. import FixedSizeList from '../../virtual-list/src/components/fixed-size-list.mjs';
  13. const itemSize = 26;
  14. const __default__ = defineComponent({
  15. name: "ElTreeV2"
  16. });
  17. const _sfc_main = /* @__PURE__ */ defineComponent({
  18. ...__default__,
  19. props: treeProps,
  20. emits: treeEmits,
  21. setup(__props, { expose, emit }) {
  22. const props = __props;
  23. const slots = useSlots();
  24. provide(ROOT_TREE_INJECTION_KEY, {
  25. ctx: {
  26. emit,
  27. slots
  28. },
  29. props,
  30. instance: getCurrentInstance()
  31. });
  32. provide(formItemContextKey, void 0);
  33. const { t } = useLocale();
  34. const ns = useNamespace("tree");
  35. const {
  36. flattenTree,
  37. isNotEmpty,
  38. toggleExpand,
  39. isExpanded,
  40. isIndeterminate,
  41. isChecked,
  42. isDisabled,
  43. isCurrent,
  44. isForceHiddenExpandIcon,
  45. handleNodeClick,
  46. handleNodeCheck,
  47. toggleCheckbox,
  48. getCurrentNode,
  49. getCurrentKey,
  50. setCurrentKey,
  51. getCheckedKeys,
  52. getCheckedNodes,
  53. getHalfCheckedKeys,
  54. getHalfCheckedNodes,
  55. setChecked,
  56. setCheckedKeys,
  57. filter,
  58. setData,
  59. getNode,
  60. expandNode,
  61. collapseNode,
  62. setExpandedKeys
  63. } = useTree(props, emit);
  64. expose({
  65. toggleCheckbox,
  66. getCurrentNode,
  67. getCurrentKey,
  68. setCurrentKey,
  69. getCheckedKeys,
  70. getCheckedNodes,
  71. getHalfCheckedKeys,
  72. getHalfCheckedNodes,
  73. setChecked,
  74. setCheckedKeys,
  75. filter,
  76. setData,
  77. getNode,
  78. expandNode,
  79. collapseNode,
  80. setExpandedKeys
  81. });
  82. return (_ctx, _cache) => {
  83. var _a;
  84. return openBlock(), createElementBlock("div", {
  85. class: normalizeClass([unref(ns).b(), { [unref(ns).m("highlight-current")]: _ctx.highlightCurrent }]),
  86. role: "tree"
  87. }, [
  88. unref(isNotEmpty) ? (openBlock(), createBlock(unref(FixedSizeList), {
  89. key: 0,
  90. "class-name": unref(ns).b("virtual-list"),
  91. data: unref(flattenTree),
  92. total: unref(flattenTree).length,
  93. height: _ctx.height,
  94. "item-size": itemSize,
  95. "perf-mode": _ctx.perfMode
  96. }, {
  97. default: withCtx(({ data, index, style }) => [
  98. (openBlock(), createBlock(ElTreeNode, {
  99. key: data[index].key,
  100. style: normalizeStyle(style),
  101. node: data[index],
  102. expanded: unref(isExpanded)(data[index]),
  103. "show-checkbox": _ctx.showCheckbox,
  104. checked: unref(isChecked)(data[index]),
  105. indeterminate: unref(isIndeterminate)(data[index]),
  106. disabled: unref(isDisabled)(data[index]),
  107. current: unref(isCurrent)(data[index]),
  108. "hidden-expand-icon": unref(isForceHiddenExpandIcon)(data[index]),
  109. onClick: unref(handleNodeClick),
  110. onToggle: unref(toggleExpand),
  111. onCheck: unref(handleNodeCheck)
  112. }, null, 8, ["style", "node", "expanded", "show-checkbox", "checked", "indeterminate", "disabled", "current", "hidden-expand-icon", "onClick", "onToggle", "onCheck"]))
  113. ]),
  114. _: 1
  115. }, 8, ["class-name", "data", "total", "height", "perf-mode"])) : (openBlock(), createElementBlock("div", {
  116. key: 1,
  117. class: normalizeClass(unref(ns).e("empty-block"))
  118. }, [
  119. createElementVNode("span", {
  120. class: normalizeClass(unref(ns).e("empty-text"))
  121. }, toDisplayString((_a = _ctx.emptyText) != null ? _a : unref(t)("el.tree.emptyText")), 3)
  122. ], 2))
  123. ], 2);
  124. };
  125. }
  126. });
  127. var TreeV2 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/tree-v2/src/tree.vue"]]);
  128. export { TreeV2 as default };
  129. //# sourceMappingURL=tree.mjs.map