vxe-pc-ui 3.8.0 → 3.8.2

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 (39) hide show
  1. package/es/icon/style.css +1 -1
  2. package/es/style.css +1 -1
  3. package/es/style.min.css +1 -1
  4. package/es/table-select/src/table-select.js +20 -3
  5. package/es/tree/src/tree.js +63 -25
  6. package/es/ui/index.js +1 -1
  7. package/es/ui/src/log.js +1 -1
  8. package/lib/icon/style/style.css +1 -1
  9. package/lib/icon/style/style.min.css +1 -1
  10. package/lib/index.umd.js +91 -32
  11. package/lib/index.umd.min.js +1 -1
  12. package/lib/style.css +1 -1
  13. package/lib/style.min.css +1 -1
  14. package/lib/table-select/src/table-select.js +19 -3
  15. package/lib/table-select/src/table-select.min.js +1 -1
  16. package/lib/tree/src/tree.js +70 -26
  17. package/lib/tree/src/tree.min.js +1 -1
  18. package/lib/ui/index.js +1 -1
  19. package/lib/ui/index.min.js +1 -1
  20. package/lib/ui/src/log.js +1 -1
  21. package/lib/ui/src/log.min.js +1 -1
  22. package/package.json +1 -1
  23. package/packages/table-select/src/table-select.ts +19 -3
  24. package/packages/tree/src/tree.ts +74 -33
  25. package/types/components/column.d.ts +4 -12
  26. package/types/components/table.d.ts +24 -10
  27. package/types/components/tree.d.ts +15 -7
  28. /package/es/icon/{iconfont.1753775375287.ttf → iconfont.1753864721304.ttf} +0 -0
  29. /package/es/icon/{iconfont.1753775375287.woff → iconfont.1753864721304.woff} +0 -0
  30. /package/es/icon/{iconfont.1753775375287.woff2 → iconfont.1753864721304.woff2} +0 -0
  31. /package/es/{iconfont.1753775375287.ttf → iconfont.1753864721304.ttf} +0 -0
  32. /package/es/{iconfont.1753775375287.woff → iconfont.1753864721304.woff} +0 -0
  33. /package/es/{iconfont.1753775375287.woff2 → iconfont.1753864721304.woff2} +0 -0
  34. /package/lib/icon/style/{iconfont.1753775375287.ttf → iconfont.1753864721304.ttf} +0 -0
  35. /package/lib/icon/style/{iconfont.1753775375287.woff → iconfont.1753864721304.woff} +0 -0
  36. /package/lib/icon/style/{iconfont.1753775375287.woff2 → iconfont.1753864721304.woff2} +0 -0
  37. /package/lib/{iconfont.1753775375287.ttf → iconfont.1753864721304.ttf} +0 -0
  38. /package/lib/{iconfont.1753775375287.woff → iconfont.1753864721304.woff} +0 -0
  39. /package/lib/{iconfont.1753775375287.woff2 → iconfont.1753864721304.woff2} +0 -0
@@ -8,7 +8,7 @@ import { getSlotVNs } from '../../ui/src/vn'
8
8
  import { toCssUnit, isScale, getPaddingTopBottomSize } from '../../ui/src/dom'
9
9
  import VxeLoadingComponent from '../../loading/src/loading'
10
10
 
11
- import type { TreeReactData, VxeTreeEmits, VxeTreePropTypes, TreeInternalData, VxeTreeDefines, VxeComponentSizeType, ValueOf } from '../../../types'
11
+ import type { TreeReactData, VxeTreeEmits, VxeTreeConstructor, VxeTreePropTypes, TreeInternalData, VxeTreeDefines, VxeComponentSizeType, ValueOf } from '../../../types'
12
12
 
13
13
  /**
14
14
  * 生成节点的唯一主键
@@ -29,6 +29,36 @@ function handleSetExpand (nodeid: string, expanded: boolean, expandedMaps: Recor
29
29
  }
30
30
  }
31
31
 
32
+ function handleScrollTo ($xeTree: VxeTreeConstructor, scrollLeft: { top?: number | null; left?: number | null; } | number | null | undefined, scrollTop?: number | null) {
33
+ const reactData = $xeTree.reactData
34
+
35
+ const scrollBodyElem = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
36
+ if (scrollLeft) {
37
+ if (!XEUtils.isNumber(scrollLeft)) {
38
+ scrollTop = scrollLeft.top
39
+ scrollLeft = scrollLeft.left
40
+ }
41
+ }
42
+ if (scrollBodyElem) {
43
+ if (XEUtils.isNumber(scrollLeft)) {
44
+ scrollBodyElem.scrollLeft = scrollLeft
45
+ }
46
+ if (XEUtils.isNumber(scrollTop)) {
47
+ scrollBodyElem.scrollTop = scrollTop
48
+ }
49
+ }
50
+ if (reactData.scrollYLoad) {
51
+ return new Promise<void>(resolve => {
52
+ setTimeout(() => {
53
+ $xeTree.$nextTick(() => {
54
+ resolve()
55
+ })
56
+ }, 50)
57
+ })
58
+ }
59
+ return $xeTree.$nextTick()
60
+ }
61
+
32
62
  export default /* define-vxe-component start */ defineVxeComponent({
33
63
  name: 'VxeTree',
34
64
  mixins: [
@@ -852,33 +882,44 @@ export default /* define-vxe-component start */ defineVxeComponent({
852
882
  */
853
883
  scrollTo (scrollLeft: { top?: number | null; left?: number | null; } | number | null | undefined, scrollTop?: number | null) {
854
884
  const $xeTree = this
855
- const reactData = $xeTree.reactData
856
885
 
886
+ return handleScrollTo($xeTree, scrollLeft, scrollTop)
887
+ },
888
+ scrollToNode (node: any) {
889
+ const $xeTree = this
890
+
891
+ return $xeTree.scrollToNodeId($xeTree.getNodeId(node))
892
+ },
893
+ scrollToNodeId (nodeid: string | number | null) {
894
+ const $xeTree = this
895
+ const props = $xeTree
896
+ const internalData = $xeTree.internalData
897
+
898
+ const { transform } = props
899
+ const { scrollYStore, afterTreeList } = internalData
900
+ const childrenField = $xeTree.computeChildrenField
901
+ const mapChildrenField = $xeTree.computeMapChildrenField
857
902
  const scrollBodyElem = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
858
- if (scrollLeft) {
859
- if (!XEUtils.isNumber(scrollLeft)) {
860
- scrollTop = scrollLeft.top
861
- scrollLeft = scrollLeft.left
862
- }
863
- }
864
- if (scrollBodyElem) {
865
- if (XEUtils.isNumber(scrollLeft)) {
866
- scrollBodyElem.scrollLeft = scrollLeft
867
- }
868
- if (XEUtils.isNumber(scrollTop)) {
869
- scrollBodyElem.scrollTop = scrollTop
870
- }
871
- }
872
- if (reactData.scrollYLoad) {
873
- return new Promise<void>(resolve => {
874
- setTimeout(() => {
875
- $xeTree.$nextTick(() => {
876
- resolve()
903
+ if (nodeid && scrollBodyElem) {
904
+ if (transform) {
905
+ const matchObj = XEUtils.findTree(afterTreeList, item => $xeTree.getNodeId(item) === nodeid, { children: transform ? mapChildrenField : childrenField })
906
+ if (matchObj) {
907
+ return $xeTree.setExpandNode(matchObj.nodes, true).then(() => {
908
+ const itemIndex = XEUtils.findIndexOf(internalData.afterVisibleList, item => $xeTree.getNodeId(item) === nodeid)
909
+ if (itemIndex > -1) {
910
+ const targetTop = Math.max(0, (itemIndex - 1) * scrollYStore.rowHeight)
911
+ return handleScrollTo($xeTree, scrollBodyElem.scrollLeft, targetTop)
912
+ }
877
913
  })
878
- }, 50)
879
- })
914
+ }
915
+ } else {
916
+ const itemEl = scrollBodyElem.querySelector<HTMLDivElement>(`.vxe-tree--node-wrapper[nodeid="${nodeid}"]`)
917
+ if (itemEl) {
918
+ return handleScrollTo($xeTree, scrollBodyElem.scrollLeft, itemEl.offsetTop)
919
+ }
920
+ }
880
921
  }
881
- return $xeTree.$nextTick()
922
+ return $xeTree.recalculate()
882
923
  },
883
924
  /**
884
925
  * 刷新滚动条
@@ -1403,13 +1444,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
1403
1444
  }
1404
1445
  return null
1405
1446
  },
1406
- setCurrentNodeId (nodeKey: any) {
1447
+ setCurrentNodeId (nodeKey: string | number | null) {
1407
1448
  const $xeTree = this
1408
1449
  const reactData = $xeTree.reactData
1409
1450
  const internalData = $xeTree.internalData
1410
1451
 
1411
1452
  const { nodeMaps } = internalData
1412
- const nodeItem = nodeMaps[nodeKey]
1453
+ const nodeItem = nodeMaps[`${nodeKey}`]
1413
1454
  reactData.currentNode = nodeItem ? nodeItem.item : null
1414
1455
  return $xeTree.$nextTick()
1415
1456
  },
@@ -1448,7 +1489,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1448
1489
  }
1449
1490
  return null
1450
1491
  },
1451
- setRadioNodeId (nodeKey: any) {
1492
+ setRadioNodeId (nodeKey: string | number | null) {
1452
1493
  const $xeTree = this
1453
1494
  const reactData = $xeTree.reactData
1454
1495
 
@@ -1534,7 +1575,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1534
1575
  $xeTree.handleData()
1535
1576
  return $xeTree.recalculate()
1536
1577
  },
1537
- setExpandByNodeId (nodeids: any, expanded: boolean) {
1578
+ setExpandByNodeId (nodeids: string | number | (string | number | null)[] | null, expanded: boolean) {
1538
1579
  const $xeTree = this
1539
1580
  const reactData = $xeTree.reactData
1540
1581
  const internalData = $xeTree.internalData
@@ -1544,8 +1585,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
1544
1585
  if (!XEUtils.isArray(nodeids)) {
1545
1586
  nodeids = [nodeids]
1546
1587
  }
1547
- nodeids.forEach((nodeid: string) => {
1548
- handleSetExpand(nodeid, expanded, treeExpandedMaps)
1588
+ nodeids.forEach((nodeid) => {
1589
+ handleSetExpand(`${nodeid}`, expanded, treeExpandedMaps)
1549
1590
  })
1550
1591
  reactData.updateExpandedFlag++
1551
1592
  }
@@ -1594,7 +1635,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1594
1635
  $xeTree.handleData()
1595
1636
  return $xeTree.recalculate()
1596
1637
  },
1597
- toggleExpandByNodeId (nodeids: any) {
1638
+ toggleExpandByNodeId (nodeids: string | number | null | (string | number | null)[]) {
1598
1639
  const $xeTree = this
1599
1640
  const reactData = $xeTree.reactData
1600
1641
  const internalData = $xeTree.internalData
@@ -1604,8 +1645,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
1604
1645
  if (!XEUtils.isArray(nodeids)) {
1605
1646
  nodeids = [nodeids]
1606
1647
  }
1607
- nodeids.forEach((nodeid: string) => {
1608
- handleSetExpand(nodeid, !treeExpandedMaps[nodeid], treeExpandedMaps)
1648
+ nodeids.forEach((nodeid) => {
1649
+ handleSetExpand(`${nodeid}`, !treeExpandedMaps[`${nodeid}`], treeExpandedMaps)
1609
1650
  })
1610
1651
  reactData.updateExpandedFlag++
1611
1652
  }
@@ -35,9 +35,9 @@ export namespace VxeColumnPropTypes {
35
35
  export type ShowOverflow = VxeTablePropTypes.ShowOverflow
36
36
  export type ShowHeaderOverflow = ShowOverflow
37
37
  export type ShowFooterOverflow = ShowOverflow
38
- export type ClassName<D = any> = string | ((params: VxeGlobalRendererHandles.RenderCellParams<D>) => string | any[] | { [key: string]: boolean })
39
- export type HeaderClassName<D = any> = string | ((params: VxeGlobalRendererHandles.RenderHeaderParams<D>) => string | any[] | { [key: string]: boolean })
40
- export type FooterClassName<D = any> = string | ((params: VxeGlobalRendererHandles.RenderFooterParams<D>) => string | any[] | { [key: string]: boolean })
38
+ export type ClassName<D = any> = string | ((params: VxeGlobalRendererHandles.RenderTableCellParams<D>) => string | any[] | { [key: string]: boolean })
39
+ export type HeaderClassName<D = any> = string | ((params: VxeGlobalRendererHandles.RenderTableHeaderParams<D>) => string | any[] | { [key: string]: boolean })
40
+ export type FooterClassName<D = any> = string | ((params: VxeGlobalRendererHandles.RenderTableFooterParams<D>) => string | any[] | { [key: string]: boolean })
41
41
  export type Padding = boolean
42
42
  export type VerticalAlign = '' | 'top' | 'center' | null
43
43
 
@@ -144,7 +144,7 @@ export namespace VxeColumnPropTypes {
144
144
  */
145
145
  export type RowGroupNode = boolean
146
146
  /**
147
- * 设置为拖拽排序
147
+ * 设置为树节点
148
148
  */
149
149
  export type TreeNode = boolean
150
150
  /**
@@ -507,14 +507,6 @@ export interface VxeColumnProps<D = any> {
507
507
  * 自定义筛选方法
508
508
  */
509
509
  filterMethod?: VxeColumnPropTypes.FilterMethod<D>
510
- /**
511
- * 筛选重置方法
512
- */
513
- filterResetMethod?: VxeColumnPropTypes.FilterResetMethod<D>
514
- /**
515
- * 筛选复原方法
516
- */
517
- filterRecoverMethod?: VxeColumnPropTypes.FilterRecoverMethod<D>
518
510
  /**
519
511
  * 筛选模板配置项
520
512
  */
@@ -882,7 +882,7 @@ export namespace VxeTablePropTypes {
882
882
  updateStore?(params: {
883
883
  $table: VxeTableConstructor<D>
884
884
  id: string
885
- type: 'reset' | 'confirm' | 'update:width' | 'update:fixed' | 'update:sort' | 'update:visible' | 'update:rowGroup' | 'update:aggFunc'
885
+ type: 'reset' | 'confirm' | 'update:width' | 'update:fixed' | 'update:sort' | 'update:visible' | 'update:aggGroup' | 'update:aggFunc'
886
886
  storeData: VxeTableDefines.CustomStoreData
887
887
  }): Promise<any>
888
888
  mode?: 'default' | 'modal' | 'drawer' | 'simple' | 'popup' | '' | null
@@ -5333,7 +5333,7 @@ export namespace VxeTableDefines {
5333
5333
  /**
5334
5334
  * @private
5335
5335
  */
5336
- parentId: string
5336
+ parentId: string | null
5337
5337
  /**
5338
5338
  * @private
5339
5339
  */
@@ -5346,6 +5346,10 @@ export namespace VxeTableDefines {
5346
5346
  * @private
5347
5347
  */
5348
5348
  colSpan: number
5349
+ /**
5350
+ * @private
5351
+ */
5352
+ defaultParentId: string | null
5349
5353
  /**
5350
5354
  * @private
5351
5355
  */
@@ -5358,6 +5362,10 @@ export namespace VxeTableDefines {
5358
5362
  * @private
5359
5363
  */
5360
5364
  defaultFixed: VxeColumnPropTypes.Fixed | undefined
5365
+ /**
5366
+ * @private
5367
+ */
5368
+ defaultAggGroup: boolean
5361
5369
  /**
5362
5370
  * @private
5363
5371
  */
@@ -5908,37 +5916,43 @@ export namespace VxeTableDefines {
5908
5916
  oldVisibleMaps: Record<string, boolean>
5909
5917
  }
5910
5918
 
5919
+ export type CustomSortStoreObj = {
5920
+ k: string
5921
+ c?: CustomSortStoreObj[]
5922
+ }
5923
+
5911
5924
  export interface CustomStoreData {
5912
5925
  resizableData?: Record<string, number>
5913
- sortData?: Record<string, number>
5926
+ sortData?: CustomSortStoreObj[]
5914
5927
  visibleData?: Record<string, boolean>
5915
5928
  fixedData?: Record<string, VxeColumnPropTypes.Fixed>
5929
+ aggGroupData?: Record<string, boolean>
5916
5930
  aggFuncData?: Record<string, VxeColumnPropTypes.AggFunc>
5917
5931
  }
5918
5932
 
5919
5933
  export interface VxeTableCustomStorageObj {
5920
5934
  /**
5921
- * 显示/隐藏列状态
5935
+ * 保存列可视状态
5922
5936
  */
5923
5937
  visible?: boolean
5924
5938
  /**
5925
- * 列拖拽调整顺序
5939
+ * 保存列宽调整状态
5926
5940
  */
5927
5941
  resizable?: boolean
5928
5942
  /**
5929
- * 冻结列状态
5943
+ * 保存列冻结状态
5930
5944
  */
5931
5945
  fixed?: boolean
5932
5946
  /**
5933
- * 列顺序
5947
+ * 保存列顺序状态
5934
5948
  */
5935
5949
  sort?: boolean
5936
5950
  /**
5937
- * 聚合分组字段
5951
+ * 保存列的聚合分组状态
5938
5952
  */
5939
- // rowGroup?: boolean
5953
+ aggGroup?: boolean
5940
5954
  /**
5941
- * 聚合函数
5955
+ * 保存列聚合函数状态
5942
5956
  */
5943
5957
  aggFunc?: boolean
5944
5958
  }
@@ -298,7 +298,7 @@ export interface TreeMethods<D = any> {
298
298
  /**
299
299
  * 根据主键设置当前节点是否被选中
300
300
  */
301
- setCurrentNodeId(nodeKey: string | number): Promise<any>
301
+ setCurrentNodeId(nodeKey: string | number | null): Promise<any>
302
302
  /**
303
303
  * 根据节点设置当前节点是否被选中
304
304
  */
@@ -318,7 +318,7 @@ export interface TreeMethods<D = any> {
318
318
  /**
319
319
  * 只对 show-radio 有效,通过键值设置节点是否被选中
320
320
  */
321
- setRadioNodeId(nodeKey: string | number): Promise<any>
321
+ setRadioNodeId(nodeKey: string | number | null): Promise<any>
322
322
  /**
323
323
  * 用于 showRadio 单选框,设置指定节点为选中状态
324
324
  */
@@ -350,7 +350,7 @@ export interface TreeMethods<D = any> {
350
350
  /**
351
351
  * 用于 showCheckbox 复选框,设置指定节点 key 为选中状态,第二个参数为选中与否
352
352
  */
353
- setCheckboxByNodeId(nodeKeys: any | any[], checked: boolean): Promise<any>
353
+ setCheckboxByNodeId(nodeKeys: string | number | null | (string | number | null)[], checked: boolean): Promise<any>
354
354
  /**
355
355
  * 已废弃,请使用 clearAllExpandNode
356
356
  * @deprecated
@@ -363,7 +363,7 @@ export interface TreeMethods<D = any> {
363
363
  /**
364
364
  * 设置指定节点 key 为展开状态,第二个参数为选中与否
365
365
  */
366
- setExpandByNodeId(nodeKeys: any | any[], expanded: boolean): Promise<any>
366
+ setExpandByNodeId(nodeKeys: string | number | null | (string | number | null)[], expanded: boolean): Promise<any>
367
367
  /**
368
368
  * 设置指定节点为展开状态
369
369
  */
@@ -371,7 +371,7 @@ export interface TreeMethods<D = any> {
371
371
  /**
372
372
  * 根据节点主键切换指定节点为展开状态
373
373
  */
374
- toggleExpandByNodeId(nodeKeys: any | any[]): Promise<any>
374
+ toggleExpandByNodeId(nodeKeys: string | number | null | (string | number | null)[]): Promise<any>
375
375
  /**
376
376
  * 切换指定节点为展开状态
377
377
  */
@@ -404,7 +404,7 @@ export interface TreeMethods<D = any> {
404
404
  /**
405
405
  * 用于 show-radio,根据节点主键判断指定节点是否为选中状态
406
406
  */
407
- isCheckedByRadioNodeId(nodeKey: any): boolean
407
+ isCheckedByRadioNodeId(nodeKey: string | number | null): boolean
408
408
  /**
409
409
  * 用于 show-radio,判断指定节点是否为选中状态
410
410
  */
@@ -412,7 +412,7 @@ export interface TreeMethods<D = any> {
412
412
  /**
413
413
  * 用于 show-checkbox,根据节点主键判断指定节点是否为选中状态
414
414
  */
415
- isCheckedByCheckboxNodeId(nodeKey: any): boolean
415
+ isCheckedByCheckboxNodeId(nodeKey: string | number | null): boolean
416
416
  /**
417
417
  * 用于 show-checkbox,判断指定节点是否为半选状态
418
418
  */
@@ -437,6 +437,14 @@ export interface TreeMethods<D = any> {
437
437
  top?: number | null
438
438
  left?: number | null
439
439
  } | number | null | undefined, y?: number | null): Promise<void>
440
+ /**
441
+ * 如果有滚动条,则滚动到指定的节点位置
442
+ */
443
+ scrollToNode(node: any): Promise<void>
444
+ /**
445
+ * 如果有滚动条,则根据节点主键滚动到对应的节点位置
446
+ */
447
+ scrollToNodeId(nodeKey: string | number | null): Promise<void>
440
448
 
441
449
  /**
442
450
  * 手动清除滚动相关信息,还原到初始状态