tree.js 4.9 KB

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