hy-virtual-tree 2.2.0 → 2.3.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  ## Changelog
2
2
 
3
+ ### 2.3.1
4
+
5
+ _2026-06-24_
6
+
7
+ (1)renderLabel 自定义节点文本内容可传element元素
8
+
9
+ ### 2.3.0
10
+
11
+ _2026-06-01_
12
+
13
+ (1)新增 renderLabel 自定义节点文本内容
14
+
3
15
  ### 2.2.0
4
16
 
5
17
  _2026-06-01_
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /* hy-virtual-tree v2.2.0 */
1
+ /* hy-virtual-tree v2.3.1 */
2
2
  import './svg_bundle.js';
3
3
  const isString = (e) => typeof e === 'string';
4
4
  const isNumber = (e) => typeof e === 'number';
@@ -9079,14 +9079,33 @@ const useIcon = (config, data, node) => {
9079
9079
  return new Icon({ svgName: 'hy-tree-personnel', width: 16, height: 16 });
9080
9080
  }
9081
9081
  };
9082
+ // 获取节点文本处理
9083
+ const getLabelHandler = (data, node, config) => {
9084
+ if (config.renderLabel && isFunction(config.renderLabel)) {
9085
+ const value = config.renderLabel(data, node);
9086
+ if (isBoolean(value) && value) {
9087
+ return node.label || '';
9088
+ }
9089
+ else {
9090
+ return value || '';
9091
+ }
9092
+ }
9093
+ return node.label || '';
9094
+ };
9082
9095
  // 生成内容节点
9083
- const useContent = (data, node) => {
9096
+ const useContent = (data, node, config) => {
9084
9097
  return createVNode('div', (vnode) => {
9085
- vnode.el.innerHTML = node.label || '';
9086
- if (node.label) {
9098
+ const label = getLabelHandler(data, node, config);
9099
+ if (isElement(label)) {
9100
+ vnode.el.appendChild(label);
9101
+ }
9102
+ else {
9103
+ vnode.el.innerHTML = label;
9104
+ }
9105
+ if (label) {
9087
9106
  const tooltip = new Tooltip({
9088
9107
  bind: vnode.el,
9089
- content: node.label,
9108
+ content: vnode.el.textContent,
9090
9109
  placement: 'top',
9091
9110
  trigger: 'hover-overflow'
9092
9111
  });
@@ -9108,11 +9127,11 @@ const generateTotalStats = (data, node) => {
9108
9127
  };
9109
9128
  // 自定义渲染元素
9110
9129
  const customRender = (options) => {
9111
- const { fn, node, parent, className, defaultFn } = options || {};
9130
+ const { fn, node, parent, className, config, defaultFn } = options || {};
9112
9131
  let value;
9113
9132
  // 没有传入的自定义函数则使用默认函数
9114
9133
  if (!fn || !isFunction(fn)) {
9115
- value = defaultFn && isFunction(defaultFn) ? defaultFn(node.data, node) : undefined;
9134
+ value = defaultFn && isFunction(defaultFn) ? defaultFn(node.data, node, config) : undefined;
9116
9135
  }
9117
9136
  // 自定义函数处理
9118
9137
  else {
@@ -9131,7 +9150,7 @@ const customRender = (options) => {
9131
9150
  return value;
9132
9151
  }
9133
9152
  if (isBoolean(value) && value) {
9134
- value = defaultFn && isFunction(defaultFn) ? defaultFn(node.data, node) : undefined;
9153
+ value = defaultFn && isFunction(defaultFn) ? defaultFn(node.data, node, config) : undefined;
9135
9154
  if (value) {
9136
9155
  className && value.el.classList.add(className);
9137
9156
  parent && value.mount(parent);
@@ -9854,13 +9873,14 @@ class VirtualTree {
9854
9873
  fn: config.renderStatus,
9855
9874
  node: item,
9856
9875
  className: 'hy-tree-node__status',
9876
+ config,
9857
9877
  defaultFn: (data, node) => {
9858
9878
  return useStatus(config, data);
9859
9879
  }
9860
9880
  });
9861
9881
  }
9862
9882
  // 右侧内容
9863
- rightSlot = customRender({ fn: config.renderRight, node: item, className: 'hy-tree-node__right-content' });
9883
+ rightSlot = customRender({ fn: config.renderRight, node: item, className: 'hy-tree-node__right-content', config });
9864
9884
  if (!statusSlot && !rightSlot)
9865
9885
  return;
9866
9886
  return createVNode('div', (vnode) => {
@@ -9976,17 +9996,18 @@ class VirtualTree {
9976
9996
  node: item,
9977
9997
  parent: contentContainer,
9978
9998
  className: 'hy-tree-node__node-content',
9979
- defaultFn: (data, node) => {
9999
+ config,
10000
+ defaultFn: (data, node, config) => {
9980
10001
  // 图标
9981
- customRender({ fn: config.renderIcon, node, parent: contentContainer, className: 'hy-tree-icon', defaultFn: generateIcon });
10002
+ customRender({ fn: config.renderIcon, node, parent: contentContainer, className: 'hy-tree-icon', config, defaultFn: generateIcon });
9982
10003
  // 内容
9983
- customRender({ fn: config.renderContent, node, parent: contentContainer, className: 'hy-tree-node__content', defaultFn: useContent });
10004
+ customRender({ fn: config.renderContent, node, parent: contentContainer, className: 'hy-tree-node__content', config, defaultFn: useContent });
9984
10005
  // 统计
9985
10006
  if (isShowCount(this._props.showCount, item)) {
9986
- customRender({ fn: config.renderStats, node, parent: contentContainer, className: 'hy-tree-node__statistics', defaultFn: this._props.statsModel === 'total' ? generateTotalStats : generateStats });
10007
+ customRender({ fn: config.renderStats, node, parent: contentContainer, className: 'hy-tree-node__statistics', config, defaultFn: this._props.statsModel === 'total' ? generateTotalStats : generateStats });
9987
10008
  }
9988
10009
  // 右侧内容
9989
- customRender({ fn: generateRight, node, parent: contentContainer });
10010
+ customRender({ fn: generateRight, node, parent: contentContainer, config });
9990
10011
  }
9991
10012
  });
9992
10013
  // 挂载内容容器
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hy-virtual-tree",
3
- "version": "2.2.0",
3
+ "version": "2.3.1",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",