hy-virtual-tree 1.1.51 → 1.1.52

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,12 @@
1
1
  ## Changelog
2
2
 
3
+ ### 1.1.52
4
+
5
+ _2025-12-18_
6
+
7
+ - 扩展[VirtualTree] 功能
8
+ (1)优化树父节点的选中逻辑
9
+
3
10
  ### 1.1.51
4
11
 
5
12
  _2025-12-12_
package/dist/index.js CHANGED
@@ -1503,6 +1503,51 @@ function useCheck(props, tree) {
1503
1503
  updateCheckedKeys();
1504
1504
  }
1505
1505
  }
1506
+ // 获取切换选中后的值
1507
+ function getSwitchCheckedValue(node) {
1508
+ if (!isIndeterminate(node) || props.rowSelection.checkStrictly || !node.children?.length)
1509
+ return !isChecked(node);
1510
+ const { isAllSelect } = getNodeCheckInfo(node.children || []);
1511
+ console.log('isAllSelect', isAllSelect);
1512
+ return !isAllSelect;
1513
+ }
1514
+ // 获取当前项选中信息
1515
+ function getNodeCheckInfo(children) {
1516
+ const { checkStrictly } = props.rowSelection;
1517
+ let isAllDisabled = true;
1518
+ let isCanAllSelect = true;
1519
+ let isAllSelect = true;
1520
+ for (const node of children) {
1521
+ if (isChecked(node))
1522
+ continue;
1523
+ // 严格模式 或 非严格模式下没有子元素
1524
+ if (checkStrictly || (!checkStrictly && !node.children?.length)) {
1525
+ if (getDisabled(props, node)) {
1526
+ isCanAllSelect = false;
1527
+ }
1528
+ else if (!isChecked(node)) {
1529
+ isAllSelect = false;
1530
+ isAllDisabled = false;
1531
+ }
1532
+ if (!isAllDisabled && !isCanAllSelect && !isAllSelect) {
1533
+ break;
1534
+ }
1535
+ }
1536
+ // 递归子元素
1537
+ if (node.children?.length) {
1538
+ const checkInfo = getNodeCheckInfo(node.children);
1539
+ if (!checkStrictly) {
1540
+ isAllDisabled = checkInfo.isAllDisabled && isAllDisabled;
1541
+ isCanAllSelect = checkInfo.isCanAllSelect && isCanAllSelect;
1542
+ isAllSelect = checkInfo.isAllSelect && isAllSelect;
1543
+ }
1544
+ }
1545
+ if (!isAllDisabled && !isCanAllSelect && !isAllSelect) {
1546
+ break;
1547
+ }
1548
+ }
1549
+ return { isAllDisabled, isCanAllSelect, isAllSelect };
1550
+ }
1506
1551
  return {
1507
1552
  checkedKeys,
1508
1553
  updateCheckedKeys,
@@ -1518,7 +1563,8 @@ function useCheck(props, tree) {
1518
1563
  getHalfCheckedNodes,
1519
1564
  setChecked,
1520
1565
  setCheckedKeys,
1521
- setCheckedNodes
1566
+ setCheckedNodes,
1567
+ getSwitchCheckedValue,
1522
1568
  };
1523
1569
  }
1524
1570
 
@@ -9091,7 +9137,7 @@ class VirtualTree {
9091
9137
  getCheckedKeys, getCheckedNodes,
9092
9138
  // getHalfCheckedKeys,
9093
9139
  // getHalfCheckedNodes,
9094
- setChecked, setCheckedKeys, setCheckedNodes } = useCheck(config, this._tree);
9140
+ setChecked, setCheckedKeys, setCheckedNodes, getSwitchCheckedValue, } = useCheck(config, this._tree);
9095
9141
  this._updateCheckedKeys = updateCheckedKeys;
9096
9142
  this.getChecked = getChecked;
9097
9143
  this.getCheckedKeys = getCheckedKeys;
@@ -9230,11 +9276,7 @@ class VirtualTree {
9230
9276
  onClick: () => {
9231
9277
  if (getDisabled(config, item))
9232
9278
  return;
9233
- item.checkedMark = item.children?.length ? !(isChecked(item) || item.checkedMark) : !isChecked(item);
9234
- toggleCheckbox(item, item.checkedMark, true, true, false, this._hiddenNodeKeySet);
9235
- if (isChecked(item) || isIndeterminate(item)) {
9236
- item.checkedMark = true;
9237
- }
9279
+ toggleCheckbox(item, getSwitchCheckedValue(item), true, true, false, this._hiddenNodeKeySet);
9238
9280
  this.refresh();
9239
9281
  }
9240
9282
  }).mount(el);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hy-virtual-tree",
3
- "version": "1.1.51",
3
+ "version": "1.1.52",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",