@hi-ui/table 5.0.0-canary.9 → 5.0.0-experimental.0

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 (79) hide show
  1. package/CHANGELOG.md +167 -179
  2. package/lib/cjs/BaseTable.js +76 -40
  3. package/lib/cjs/Table.js +15 -5
  4. package/lib/cjs/TableBody.js +40 -17
  5. package/lib/cjs/TableCell.js +2 -2
  6. package/lib/cjs/TableColumnMenu.js +2 -1
  7. package/lib/cjs/TableSettingMenu.js +1 -0
  8. package/lib/cjs/TbodyContent.js +59 -6
  9. package/lib/cjs/TheadContent.js +12 -3
  10. package/lib/cjs/hooks/use-async-switch.js +21 -18
  11. package/lib/cjs/hooks/use-col-sorter.js +2 -4
  12. package/lib/cjs/hooks/use-col-width.js +73 -52
  13. package/lib/cjs/hooks/use-colgroup.js +1 -1
  14. package/lib/cjs/icons/index.js +3 -1
  15. package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/Children/toArray.js +1 -1
  16. package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/ref.js +1 -1
  17. package/lib/cjs/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/cjs/react-is.development.js +1 -1
  18. package/lib/cjs/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/cjs/react-is.production.min.js +1 -1
  19. package/lib/cjs/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/index.js +3 -3
  20. package/lib/cjs/styles/index.scss.js +1 -1
  21. package/lib/cjs/use-table.js +48 -16
  22. package/lib/cjs/utils/index.js +29 -10
  23. package/lib/esm/BaseTable.js +78 -42
  24. package/lib/esm/Table.js +13 -4
  25. package/lib/esm/TableBody.js +41 -18
  26. package/lib/esm/TableCell.js +2 -2
  27. package/lib/esm/TableColumnMenu.js +2 -1
  28. package/lib/esm/TableSettingMenu.js +1 -0
  29. package/lib/esm/TbodyContent.js +62 -9
  30. package/lib/esm/TheadContent.js +13 -4
  31. package/lib/esm/hooks/use-async-switch.js +21 -18
  32. package/lib/esm/hooks/use-col-sorter.js +2 -4
  33. package/lib/esm/hooks/use-col-width.js +72 -51
  34. package/lib/esm/hooks/use-colgroup.js +1 -1
  35. package/lib/esm/icons/index.js +3 -1
  36. package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/Children/toArray.js +1 -1
  37. package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/ref.js +1 -1
  38. package/lib/esm/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/cjs/react-is.development.js +1 -1
  39. package/lib/esm/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/cjs/react-is.production.min.js +1 -1
  40. package/lib/esm/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/index.js +3 -3
  41. package/lib/esm/styles/index.scss.js +1 -1
  42. package/lib/esm/use-table.js +49 -17
  43. package/lib/esm/utils/index.js +29 -11
  44. package/lib/types/BaseTable.d.ts +9 -2
  45. package/lib/types/SettingDrawer.d.ts +3 -0
  46. package/lib/types/TableBody.d.ts +4 -1
  47. package/lib/types/TableColumnMenu.d.ts +1 -1
  48. package/lib/types/TbodyContent.d.ts +3 -3
  49. package/lib/types/context.d.ts +107 -97
  50. package/lib/types/hooks/use-async-switch.d.ts +3 -3
  51. package/lib/types/hooks/use-check.d.ts +2 -2
  52. package/lib/types/hooks/use-col-hidden.d.ts +1 -2
  53. package/lib/types/hooks/use-col-set.d.ts +1 -1
  54. package/lib/types/hooks/use-col-sorter.d.ts +1 -2
  55. package/lib/types/hooks/use-col-width.d.ts +3 -3
  56. package/lib/types/hooks/use-embed-expand.d.ts +1 -1
  57. package/lib/types/hooks/use-expand.d.ts +2 -2
  58. package/lib/types/hooks/use-pagination.d.ts +2 -2
  59. package/lib/types/index.d.ts +1 -1
  60. package/lib/types/types.d.ts +26 -19
  61. package/lib/types/use-table.d.ts +16 -10
  62. package/lib/types/utils/index.d.ts +2 -0
  63. package/package.json +35 -34
  64. package/lib/cjs/packages/ui/radio/lib/esm/Radio.js +0 -100
  65. package/lib/cjs/packages/ui/radio/lib/esm/RadioGroup.js +0 -104
  66. package/lib/cjs/packages/ui/radio/lib/esm/context.js +0 -37
  67. package/lib/cjs/packages/ui/radio/lib/esm/index.js +0 -33
  68. package/lib/cjs/packages/ui/radio/lib/esm/styles/index.scss.js +0 -35
  69. package/lib/cjs/packages/ui/radio/lib/esm/types.js +0 -34
  70. package/lib/cjs/packages/ui/radio/lib/esm/use-radio-group.js +0 -61
  71. package/lib/cjs/packages/ui/radio/lib/esm/use-radio.js +0 -88
  72. package/lib/esm/packages/ui/radio/lib/esm/Radio.js +0 -88
  73. package/lib/esm/packages/ui/radio/lib/esm/RadioGroup.js +0 -92
  74. package/lib/esm/packages/ui/radio/lib/esm/context.js +0 -31
  75. package/lib/esm/packages/ui/radio/lib/esm/index.js +0 -26
  76. package/lib/esm/packages/ui/radio/lib/esm/styles/index.scss.js +0 -23
  77. package/lib/esm/packages/ui/radio/lib/esm/types.js +0 -27
  78. package/lib/esm/packages/ui/radio/lib/esm/use-radio-group.js +0 -56
  79. package/lib/esm/packages/ui/radio/lib/esm/use-radio.js +0 -83
package/CHANGELOG.md CHANGED
@@ -1,198 +1,186 @@
1
1
  # @hi-ui/table
2
2
 
3
- ## 5.0.0-canary.9
3
+ ## 5.0.0-experimental.0
4
4
 
5
- ### Patch Changes
6
-
7
- - fix(table): 修复 resizable 模式下列宽计算问题 (5.0)
8
- - Updated dependencies [bf65028e6]
9
- - @hi-ui/button@5.0.0-canary.7
10
- - @hi-ui/popper@5.0.0-canary.4
5
+ ### Major Changes
11
6
 
12
- ## 5.0.0-canary.8
7
+ - 8f3aa85e4: feat: 组件的 package.json 中的 exports 统一加上 types 配置 (5.0)
13
8
 
14
9
  ### Minor Changes
15
10
 
16
- - ca7a945fe: feat(table): TableColumnItem 类型增加 minWidth 参数 (#3216)
17
-
18
- ### Patch Changes
19
-
20
- - Updated dependencies [756473045]
21
- - Updated dependencies [b4cecde83]
22
- - @hi-ui/scrollbar@5.0.0-canary.3
23
- - @hi-ui/button@5.0.0-canary.6
24
-
25
- ## 5.0.0-canary.7
26
-
27
- ### Patch Changes
28
-
29
- - chore: rebase master (5.0)
30
- - Updated dependencies
31
- - @hi-ui/core@5.0.0-canary.2
32
- - @hi-ui/use-cache@5.0.0-canary.2
33
- - @hi-ui/use-check@5.0.0-canary.2
34
- - @hi-ui/use-check-state@5.0.0-canary.2
35
- - @hi-ui/use-drag-sorter@5.0.0-canary.2
36
- - @hi-ui/use-latest@5.0.0-canary.2
37
- - @hi-ui/use-toggle@5.0.0-canary.2
38
- - @hi-ui/use-uncontrolled-state@5.0.0-canary.2
39
- - @hi-ui/use-update-effect@5.0.0-canary.2
40
- - @hi-ui/icons@5.0.0-canary.2
41
- - @hi-ui/button@5.0.0-canary.5
42
- - @hi-ui/checkbox@5.0.0-canary.2
43
- - @hi-ui/drawer@5.0.0-canary.4
44
- - @hi-ui/empty-state@5.0.0-canary.2
45
- - @hi-ui/icon-button@5.0.0-canary.2
46
- - @hi-ui/loading@5.0.0-canary.2
47
- - @hi-ui/pagination@5.0.0-canary.4
48
- - @hi-ui/popper@5.0.0-canary.3
49
- - @hi-ui/scrollbar@5.0.0-canary.2
50
- - @hi-ui/select@5.0.0-canary.7
51
- - @hi-ui/spinner@5.0.0-canary.2
52
- - @hi-ui/array-utils@5.0.0-canary.2
53
- - @hi-ui/classname@5.0.0-canary.2
54
- - @hi-ui/dom-utils@5.0.0-canary.2
55
- - @hi-ui/env@5.0.0-canary.2
56
- - @hi-ui/func-utils@5.0.0-canary.2
57
- - @hi-ui/object-utils@5.0.0-canary.2
58
- - @hi-ui/react-utils@5.0.0-canary.2
59
- - @hi-ui/times@5.0.0-canary.2
60
- - @hi-ui/tree-utils@5.0.0-canary.2
61
- - @hi-ui/type-assertion@5.0.0-canary.2
62
-
63
- ## 5.0.0-canary.6
64
-
65
- ### Patch Changes
66
-
67
- - ba7c324c2: style: 统一调整组件 shadow (5.0)
68
- - 4b09e728b: build: 将 package.json 中 exports 配置中的 types 配置放在最上面 (5.0)
69
- - Updated dependencies [ba7c324c2]
70
- - Updated dependencies [4b09e728b]
71
- - Updated dependencies [ba7c324c2]
72
- - @hi-ui/drawer@5.0.0-canary.3
73
- - @hi-ui/core@5.0.0-canary.1
74
- - @hi-ui/use-cache@5.0.0-canary.1
75
- - @hi-ui/use-check@5.0.0-canary.1
76
- - @hi-ui/use-check-state@5.0.0-canary.1
77
- - @hi-ui/use-drag-sorter@5.0.0-canary.1
78
- - @hi-ui/use-latest@5.0.0-canary.1
79
- - @hi-ui/use-toggle@5.0.0-canary.1
80
- - @hi-ui/use-uncontrolled-state@5.0.0-canary.1
81
- - @hi-ui/use-update-effect@5.0.0-canary.1
82
- - @hi-ui/icons@5.0.0-canary.1
83
- - @hi-ui/button@5.0.0-canary.4
84
- - @hi-ui/checkbox@5.0.0-canary.1
85
- - @hi-ui/empty-state@5.0.0-canary.1
86
- - @hi-ui/icon-button@5.0.0-canary.1
87
- - @hi-ui/loading@5.0.0-canary.1
88
- - @hi-ui/pagination@5.0.0-canary.3
89
- - @hi-ui/popper@5.0.0-canary.2
90
- - @hi-ui/scrollbar@5.0.0-canary.1
91
- - @hi-ui/select@5.0.0-canary.6
92
- - @hi-ui/spinner@5.0.0-canary.1
93
- - @hi-ui/array-utils@5.0.0-canary.1
94
- - @hi-ui/classname@5.0.0-canary.1
95
- - @hi-ui/dom-utils@5.0.0-canary.1
96
- - @hi-ui/env@5.0.0-canary.1
97
- - @hi-ui/func-utils@5.0.0-canary.1
98
- - @hi-ui/object-utils@5.0.0-canary.1
99
- - @hi-ui/react-utils@5.0.0-canary.1
100
- - @hi-ui/times@5.0.0-canary.1
101
- - @hi-ui/tree-utils@5.0.0-canary.1
102
- - @hi-ui/type-assertion@5.0.0-canary.1
103
-
104
- ## 5.0.0-canary.5
105
-
106
- ### Patch Changes
107
-
108
- - a89b3b3ae: fix: 修改组件问题 (5.0)
109
- - Updated dependencies [a89b3b3ae]
110
- - @hi-ui/select@5.0.0-canary.4
111
-
112
- ## 5.0.0-canary.4
113
-
114
- ### Patch Changes
115
-
116
- - c3a7005b0: style: 修改 UI 问题 (5.0)
117
-
118
- ## 5.0.0-canary.3
11
+ - df301c0dc: feat(table): 普通表格支持 scrollTo 方法 (5.0)
12
+ - 95e65eecd: feat(table): 支持远程排序 (5.0)
13
+ - aebefd73e: feat(table): add onScroll api (5.0)
14
+ - 9f4268ee3: feat(table): TableColumnItem 支持泛型 (5.0)
15
+ - d51de8acc: feat(table): add stretchHeight api (5.0)
16
+
17
+ ### Patch Changes
18
+
19
+ - 4a31cea53: style: 统一调整组件 shadow (5.0)
20
+ - 9b34d99bc: chore: 将代码中 v4 改为 v5 (5.0)
21
+ - 1662753e0: style: fix ui bug (5.0)
22
+ - e5964c571: style(table): 修复虚拟表格中多选列没有居中问题 (5.0)
23
+ - d2cdb2537: fix(table): 修复在 stretchHeight 模式下,冻结列表头和单元格层级问题 (5.0)
24
+ - 619e031ab: style(table): update hover and striped row background colors for improved visibility (5.0)
25
+ - 76cfe571b: style(table): 修复虚拟表格下 align 设置无效问题 (5.0)
26
+ - 8c0ee78f0: perf: 优化全局 size 配置,对于组件中没有的 size 值,取最接近的尺寸展示 (5.0)
27
+ - 9b34d99bc: fix: 修复 5.0 UI 问题 (5.0)
28
+ - ea9d00628: fix(table): 修复表头分组数据为空时表头显示异常问题,当 data 为空时,使用双表格 (5.0)
29
+ - be5a59325: style: 修改样式问题 (5.0)
30
+ - fc7f381ff: perf(table): add cell class prefix to TbodyContent and adjust useColWidth debounce timing (5.0)
31
+ - 71fc15e5c: style: 修改样式问题 (5.0)
32
+ - b6a389ac1: perf(table): 优化表格列宽更新逻辑,当内容宽度没有超出时再更新列宽 (5.0)
33
+ - 79ea480f3: feat(global-context): 增加 size api 全局配置 (5.0)
34
+ - e2f69cb62: refactor(table): stretchHeight 模式不再使用双表格结构,使用 sticky 实现 (5.0)
35
+ - 2e56529f7: styles: 主题定制功能完善&&样式变量化写法改造&&兼容 RTL (5.0)
36
+ - eb718e940: fix: 修改组件问题 (5.0)
37
+ - 150e813bf: fix(table): 优化 useColSorter 钩子,移除不必要的 columnsLatestRef 引用,直接使用 columns 进行排序计算 (5.0)
38
+ - ac15c6141: <br />
39
+ - fix(table): 修改表格在外层是 scale 时导致列宽计算有误的问题 (5.0)
40
+ - fix(loading): 修改 loading size 类型,移除 xs 尺寸 (5.0)
41
+ - e2d184e74: style: 修改 UI 问题 (5.0)
42
+ - 6ac7e8eb2: chore(table): export SettingDrawer types (5.0)
43
+ - ded9bb6d6: <br>
44
+ - perf(table): 优化列宽更新逻辑,当 columns 长度和 dataKey、width 发生变化时,重新计算列宽 (5.0)
45
+ - fix(table): 用于计算真实列宽的行节点,考虑单元格合并的场景 (5.0)
46
+ - fix(table): 修复 stretchHeight 模式下高度变化时虚拟表格高度没有更新问题 (5.0)
47
+ - 11b7699f6: <br>
48
+ - fix(table): 标题去掉背景,头部加上边框 (5.0)
49
+ - fix(table): 单元格间距调整 & 设置最小高度 (5.0)
50
+ - fix(table): 不同尺寸修改 (5.0)
51
+ - 33da3144e: build: 将 package.json 中 exports 配置中的 types 配置放在最上面 (5.0)
52
+ - 7f3abee55: style: fix ui bug (5.0)
53
+ - 478b51050: fix(table): 修复标题过长时,列头宽度拉宽后无法缩小的问题 (5.0)
54
+ - a0f0c9d6b: style: 修改 UI 问题 (5.0)
55
+ - e3a854122: refactor(table): 调整列宽计算逻辑,兼容表头分组和单元格合并场景 (5.0)
56
+ - Updated dependencies [20aac2a2f]
57
+ - Updated dependencies [6fb223e3a]
58
+ - Updated dependencies [4a31cea53]
59
+ - Updated dependencies [0f7aac2f3]
60
+ - Updated dependencies [1e226cd66]
61
+ - Updated dependencies [eea29eade]
62
+ - Updated dependencies [b9989e482]
63
+ - Updated dependencies [6167ad50b]
64
+ - Updated dependencies [1662753e0]
65
+ - Updated dependencies [122d1d859]
66
+ - Updated dependencies [f1ab51725]
67
+ - Updated dependencies [cf89262c7]
68
+ - Updated dependencies [8c0ee78f0]
69
+ - Updated dependencies [9b34d99bc]
70
+ - Updated dependencies [8f3aa85e4]
71
+ - Updated dependencies [95dd766b9]
72
+ - Updated dependencies [423aab762]
73
+ - Updated dependencies [fd4c20bbd]
74
+ - Updated dependencies [08b9d0ecf]
75
+ - Updated dependencies [be5a59325]
76
+ - Updated dependencies [71fc15e5c]
77
+ - Updated dependencies [b6a389ac1]
78
+ - Updated dependencies [f8acad4e1]
79
+ - Updated dependencies [79ea480f3]
80
+ - Updated dependencies [2e56529f7]
81
+ - Updated dependencies [eb718e940]
82
+ - Updated dependencies [277c5033a]
83
+ - Updated dependencies [4e0ed3a31]
84
+ - Updated dependencies [95abba983]
85
+ - Updated dependencies [8a92ec660]
86
+ - Updated dependencies [1429eced2]
87
+ - Updated dependencies [ac15c6141]
88
+ - Updated dependencies [976ec929d]
89
+ - Updated dependencies [f1ab51725]
90
+ - Updated dependencies [6dca7795c]
91
+ - Updated dependencies [de8d058dc]
92
+ - Updated dependencies [5210770d9]
93
+ - Updated dependencies [4006b2c8c]
94
+ - Updated dependencies [77d969c2e]
95
+ - Updated dependencies [2f850ad84]
96
+ - Updated dependencies [3457a6f7d]
97
+ - Updated dependencies [4006b2c8c]
98
+ - Updated dependencies [e42e2badf]
99
+ - Updated dependencies [33da3144e]
100
+ - Updated dependencies [0a8cc07a7]
101
+ - Updated dependencies [7f3abee55]
102
+ - Updated dependencies [0a4e90dbd]
103
+ - Updated dependencies [58ad82e94]
104
+ - Updated dependencies [a0f0c9d6b]
105
+ - Updated dependencies [4a31cea53]
106
+ - Updated dependencies [f2be367e9]
107
+ - Updated dependencies [1972fd16a]
108
+ - Updated dependencies [99801c2d1]
109
+ - Updated dependencies [86910f5e2]
110
+ - Updated dependencies [cb7b794d0]
111
+ - Updated dependencies [dd60555d3]
112
+ - Updated dependencies [f9c4afd14]
113
+ - @hi-ui/radio@5.0.0-experimental.0
114
+ - @hi-ui/pagination@5.0.0-experimental.0
115
+ - @hi-ui/drawer@5.0.0-experimental.0
116
+ - @hi-ui/loading@5.0.0-experimental.0
117
+ - @hi-ui/popper@5.0.0-experimental.0
118
+ - @hi-ui/button@5.0.0-experimental.0
119
+ - @hi-ui/select@5.0.0-experimental.0
120
+ - @hi-ui/empty-state@5.0.0-experimental.0
121
+ - @hi-ui/icons@5.0.0-experimental.0
122
+ - @hi-ui/icon-button@5.0.0-experimental.0
123
+ - @hi-ui/core@5.0.0-experimental.0
124
+ - @hi-ui/use-cache@5.0.0-experimental.0
125
+ - @hi-ui/use-check@5.0.0-experimental.0
126
+ - @hi-ui/use-check-state@5.0.0-experimental.0
127
+ - @hi-ui/use-drag-sorter@5.0.0-experimental.0
128
+ - @hi-ui/use-latest@5.0.0-experimental.0
129
+ - @hi-ui/use-toggle@5.0.0-experimental.0
130
+ - @hi-ui/use-uncontrolled-state@5.0.0-experimental.0
131
+ - @hi-ui/use-update-effect@5.0.0-experimental.0
132
+ - @hi-ui/checkbox@5.0.0-experimental.0
133
+ - @hi-ui/scrollbar@5.0.0-experimental.0
134
+ - @hi-ui/spinner@5.0.0-experimental.0
135
+ - @hi-ui/array-utils@5.0.0-experimental.0
136
+ - @hi-ui/classname@5.0.0-experimental.0
137
+ - @hi-ui/dom-utils@5.0.0-experimental.0
138
+ - @hi-ui/env@5.0.0-experimental.0
139
+ - @hi-ui/func-utils@5.0.0-experimental.0
140
+ - @hi-ui/object-utils@5.0.0-experimental.0
141
+ - @hi-ui/react-utils@5.0.0-experimental.0
142
+ - @hi-ui/times@5.0.0-experimental.0
143
+ - @hi-ui/tree-utils@5.0.0-experimental.0
144
+ - @hi-ui/type-assertion@5.0.0-experimental.0
145
+
146
+ ## 4.12.3
147
+
148
+ ### Patch Changes
149
+
150
+ - [#3426](https://github.com/XiaoMi/hiui/pull/3426) [`a8cc00c`](https://github.com/XiaoMi/hiui/commit/a8cc00cc9c5591309049c25a458ffcd41e292eba) Thanks [@zyprepare](https://github.com/zyprepare)! - fix(table): 修复设置 minWidth 无效的问题 (#3425)
151
+
152
+ ## 4.12.2
153
+
154
+ ### Patch Changes
155
+
156
+ - [#3382](https://github.com/XiaoMi/hiui/pull/3382) [`144de50f5`](https://github.com/XiaoMi/hiui/commit/144de50f528c834942d1d04467f7234c1710f758) Thanks [@zyprepare](https://github.com/zyprepare)! - fix(table): 统计行加上表头分组情况的处理 (#3381)
157
+
158
+ - Updated dependencies [[`d5b4363`](https://github.com/XiaoMi/hiui/commit/d5b4363888ebc0869a70482de2eb114326ee4d3c)]:
159
+ - @hi-ui/core@4.0.10
160
+
161
+ ## 4.12.1
162
+
163
+ ### Patch Changes
164
+
165
+ - [#3328](https://github.com/XiaoMi/hiui/pull/3328) [`6e274310f`](https://github.com/XiaoMi/hiui/commit/6e274310f9545a82090ffa586cf31a7c79b305ba) Thanks [@zyprepare](https://github.com/zyprepare)! - fix(table): 优化列宽设置逻辑,确保在列变化时准确计算并更新列宽 (#3327)
166
+
167
+ - [#3330](https://github.com/XiaoMi/hiui/pull/3330) [`df35306`](https://github.com/XiaoMi/hiui/commit/df353062b0d0b0cf3bd4e62280df20ba7e7a4774) Thanks [@zyprepare](https://github.com/zyprepare)! - fix(table): 修复设置 scrollbar 后冻结列失效问题 (#3329)
168
+
169
+ ## 4.12.0
119
170
 
120
171
  ### Minor Changes
121
172
 
122
- - 870279eff: feat(table): add stretchHeight api (5.0)
123
-
124
- ## 5.0.0-canary.2
125
-
126
- ### Patch Changes
127
-
128
- - 3cb3377dc: style: 修改样式问题 (5.0)
129
- - Updated dependencies [3cb3377dc]
130
- - Updated dependencies [df3615e78]
131
- - @hi-ui/button@5.0.0-canary.2
132
- - @hi-ui/pagination@5.0.0-canary.2
133
- - @hi-ui/select@5.0.0-canary.3
173
+ - [#3305](https://github.com/XiaoMi/hiui/pull/3305) [`6316a318e`](https://github.com/XiaoMi/hiui/commit/6316a318efe728b2b9fe21097a5c262ec83bea93) Thanks [@zyprepare](https://github.com/zyprepare)! - feat(table): 添加 fixedToRow 功能,支持设置行固定到顶部或底部 (#3304)
134
174
 
135
- ## 5.0.0-canary.1
175
+ ## 4.11.0
136
176
 
137
- ### Patch Changes
138
-
139
- - 3903bd4ff: chore: 将代码中 v4 改为 v5 (5.0)
140
- - 3903bd4ff: fix: 修复 5.0 UI 问题 (5.0)
141
- - Updated dependencies [3903bd4ff]
142
- - @hi-ui/button@5.0.0-canary.1
143
- - @hi-ui/drawer@5.0.0-canary.1
144
- - @hi-ui/pagination@5.0.0-canary.1
145
-
146
- ## 5.0.0-canary.0
147
-
148
- ### Major Changes
177
+ ### Minor Changes
149
178
 
150
- - 225ebaa51: feat: 组件的 package.json 中的 exports 统一加上 types 配置 (5.0)
179
+ - [#3219](https://github.com/XiaoMi/hiui/pull/3219) [`ca7a945fe`](https://github.com/XiaoMi/hiui/commit/ca7a945fe1eeaf14b3ffb34375ff613781d7bebd) Thanks [@zyprepare](https://github.com/zyprepare)! - feat(table): TableColumnItem 类型增加 minWidth 参数 (#3216)
151
180
 
152
181
  ### Patch Changes
153
182
 
154
- - 4e00fda45: <br>
155
- - fix(table): 标题去掉背景,头部加上边框 (5.0)
156
- - fix(table): 单元格间距调整 & 设置最小高度 (5.0)
157
- - fix(table): 不同尺寸修改 (5.0)
158
- - Updated dependencies [f70601635]
159
- - Updated dependencies [428716024]
160
- - Updated dependencies [225ebaa51]
161
- - Updated dependencies [9d3e4f910]
162
- - Updated dependencies [192de8767]
163
- - Updated dependencies [428716024]
164
- - Updated dependencies [0608199b4]
165
- - @hi-ui/button@5.0.0-canary.0
166
- - @hi-ui/select@5.0.0-canary.0
167
- - @hi-ui/core@5.0.0-canary.0
168
- - @hi-ui/use-cache@5.0.0-canary.0
169
- - @hi-ui/use-check@5.0.0-canary.0
170
- - @hi-ui/use-check-state@5.0.0-canary.0
171
- - @hi-ui/use-drag-sorter@5.0.0-canary.0
172
- - @hi-ui/use-latest@5.0.0-canary.0
173
- - @hi-ui/use-toggle@5.0.0-canary.0
174
- - @hi-ui/use-uncontrolled-state@5.0.0-canary.0
175
- - @hi-ui/use-update-effect@5.0.0-canary.0
176
- - @hi-ui/icons@5.0.0-canary.0
177
- - @hi-ui/checkbox@5.0.0-canary.0
178
- - @hi-ui/drawer@5.0.0-canary.0
179
- - @hi-ui/empty-state@5.0.0-canary.0
180
- - @hi-ui/icon-button@5.0.0-canary.0
181
- - @hi-ui/loading@5.0.0-canary.0
182
- - @hi-ui/pagination@5.0.0-canary.0
183
- - @hi-ui/popper@5.0.0-canary.0
184
- - @hi-ui/scrollbar@5.0.0-canary.0
185
- - @hi-ui/spinner@5.0.0-canary.0
186
- - @hi-ui/array-utils@5.0.0-canary.0
187
- - @hi-ui/classname@5.0.0-canary.0
188
- - @hi-ui/dom-utils@5.0.0-canary.0
189
- - @hi-ui/env@5.0.0-canary.0
190
- - @hi-ui/func-utils@5.0.0-canary.0
191
- - @hi-ui/object-utils@5.0.0-canary.0
192
- - @hi-ui/react-utils@5.0.0-canary.0
193
- - @hi-ui/times@5.0.0-canary.0
194
- - @hi-ui/tree-utils@5.0.0-canary.0
195
- - @hi-ui/type-assertion@5.0.0-canary.0
183
+ - [#3254](https://github.com/XiaoMi/hiui/pull/3254) [`fc1360986`](https://github.com/XiaoMi/hiui/commit/fc136098659d111d5df8a369a5b305e4be71d46e) Thanks [@zyprepare](https://github.com/zyprepare)! - fix(table): 更新 useTable 逻辑以确保滚动位置不超出表格宽度,并添加 @hi-ui/radio 依赖
196
184
 
197
185
  ## 4.10.0
198
186
 
@@ -46,6 +46,7 @@ var EMBED_DATA_KEY = "TABLE_EMBED_DATA_KEY_" + index.uuid();
46
46
  var DEFAULT_COLUMNS = [];
47
47
  var DEFAULT_DATA = [];
48
48
  var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
49
+ var _b;
49
50
  var _a$prefixCls = _a.prefixCls,
50
51
  prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
51
52
  _a$role = _a.role,
@@ -63,8 +64,7 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
63
64
  expandedEmbedRowKeys = _a.expandedEmbedRowKeys,
64
65
  onEmbedExpand = _a.onEmbedExpand,
65
66
  expandedRender = _a.expandedRender,
66
- _a$size = _a.size,
67
- size = _a$size === void 0 ? 'md' : _a$size,
67
+ sizeProp = _a.size,
68
68
  extra = _a.extra,
69
69
  onRow = _a.onRow,
70
70
  stickyFooter = _a.stickyFooter,
@@ -76,7 +76,15 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
76
76
  virtual = _a.virtual,
77
77
  needDoubleTable = _a.needDoubleTable,
78
78
  onResizeStop = _a.onResizeStop,
79
- rest = tslib.__rest(_a, ["prefixCls", "role", "className", "columns", "data", "striped", "bordered", "rowExpandable", "defaultExpandedEmbedRowKeys", "expandedEmbedRowKeys", "onEmbedExpand", "expandedRender", "size", "extra", "onRow", "onHeaderRow", "stickyFooter", "stickyFooterBottom", "fixedColumnTrigger", "emptyContent", "virtual", "needDoubleTable", "onResizeStop"]);
79
+ fixedToRow = _a.fixedToRow,
80
+ onScroll = _a.onScroll,
81
+ rest = tslib.__rest(_a, ["prefixCls", "role", "className", "columns", "data", "striped", "bordered", "rowExpandable", "defaultExpandedEmbedRowKeys", "expandedEmbedRowKeys", "onEmbedExpand", "expandedRender", "size", "extra", "onRow", "onHeaderRow", "stickyFooter", "stickyFooterBottom", "fixedColumnTrigger", "emptyContent", "virtual", "needDoubleTable", "onResizeStop", "fixedToRow", "onScroll"]);
82
+ var _useGlobalContext = core.useGlobalContext(),
83
+ globalSize = _useGlobalContext.size;
84
+ var size = (_b = sizeProp !== null && sizeProp !== void 0 ? sizeProp : globalSize) !== null && _b !== void 0 ? _b : 'md';
85
+ if (size === 'xs') {
86
+ size = 'sm';
87
+ }
80
88
  // ********************** 内嵌式面板 *********************** //
81
89
  var _useEmbedExpand = useEmbedExpand.useEmbedExpand({
82
90
  defaultExpandedEmbedRowKeys: defaultExpandedEmbedRowKeys,
@@ -99,6 +107,7 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
99
107
  dataKey: EMBED_DATA_KEY,
100
108
  title: '',
101
109
  width: 38,
110
+ fixed: true,
102
111
  className: prefixCls + "__embed-col",
103
112
  align: 'center',
104
113
  render: function render(_, rowItem) {
@@ -131,6 +140,8 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
131
140
  }, [embedExpandable, getEmbedPanelColumn, columns]);
132
141
  var i18n = core.useLocaleContext();
133
142
  var _useMemo = React.useMemo(function () {
143
+ var _a;
144
+ // 确保包含 avg 属性,且值为数字类型的字符串
134
145
  // 确保包含 avg 属性,且值为数字类型的字符串
135
146
  var avgRow = {
136
147
  id: 'avg',
@@ -139,9 +150,15 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
139
150
  }
140
151
  };
141
152
  var hasAvgColumn = false;
142
- columns.forEach(function (column, index$1) {
143
- // 行选中模式下,index=0是checkbox列,index=1才是第一列 ; fix issue: https://github.com/XiaoMi/hiui/issues/2863
144
- if (index$1 === 0 || index$1 === 1 && columns[0].dataKey === Table.SELECTION_DATA_KEY) {
153
+ var flattenedColumns = index.flattenColumns(columns);
154
+ // 找第一个非选择框列
155
+ // 找第一个非选择框列
156
+ var firstDataColumnIndex = 0;
157
+ if (((_a = columns[0]) === null || _a === void 0 ? void 0 : _a.dataKey) === Table.SELECTION_DATA_KEY) {
158
+ firstDataColumnIndex = 1;
159
+ }
160
+ flattenedColumns.forEach(function (column, index$1) {
161
+ if (index$1 === firstDataColumnIndex) {
145
162
  // @ts-ignore
146
163
  avgRow.raw[column.dataKey] = i18n.get('table.average');
147
164
  }
@@ -160,6 +177,8 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
160
177
  avgRow = _useMemo.avgRow,
161
178
  hasAvgColumn = _useMemo.hasAvgColumn;
162
179
  var _useMemo2 = React.useMemo(function () {
180
+ var _a;
181
+ // 确保包含total属性,且值为数字类型的字符串
163
182
  // 确保包含total属性,且值为数字类型的字符串
164
183
  var sumRow = {
165
184
  id: 'sum',
@@ -168,16 +187,19 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
168
187
  }
169
188
  };
170
189
  var hasSumColumn = false;
171
- columns.forEach(function (column, index$1) {
172
- if (index$1 === 0 || index$1 === 1 && columns[0].dataKey === Table.SELECTION_DATA_KEY) {
190
+ var flattenedColumns = index.flattenColumns(columns);
191
+ var firstDataColumnIndex = 0;
192
+ if (((_a = columns[0]) === null || _a === void 0 ? void 0 : _a.dataKey) === Table.SELECTION_DATA_KEY) {
193
+ firstDataColumnIndex = 1;
194
+ }
195
+ flattenedColumns.forEach(function (column, index$1) {
196
+ if (index$1 === firstDataColumnIndex) {
173
197
  // @ts-ignore
174
198
  sumRow.raw[column.dataKey] = i18n.get('table.total');
175
199
  }
176
200
  if (index.checkNeedTotalOrEvg(data, column, 'total')) {
177
201
  hasSumColumn = true;
178
- // 获取当前数据最大小数点个数,并设置最后总和值小数点
179
202
  // @ts-ignore
180
- // 获取当前数据最大小数点个数,并设置最后总和值小数点
181
203
  // @ts-ignore
182
204
  sumRow.raw[column.dataKey] = index.getTotalOrEvgRowData(data, column, false);
183
205
  }
@@ -192,7 +214,8 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
192
214
  var providedValue = useTable.useTable(Object.assign(Object.assign({}, rest), {
193
215
  columns: mergedColumns,
194
216
  data: data,
195
- virtual: virtual
217
+ virtual: virtual,
218
+ onScroll: onScroll
196
219
  }));
197
220
  var rootProps = providedValue.rootProps,
198
221
  bordered = providedValue.bordered,
@@ -216,42 +239,52 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
216
239
  var extraHeader = extra && extra.header;
217
240
  var extraFooter = extra && extra.footer;
218
241
  var alwaysFixedColumn = fixedColumnTrigger === 'always';
242
+ var wrapperRef = React__default["default"].useRef(null);
243
+ var isTableContentExceedWrapperHeight = bodyTableRef.current && wrapperRef.current && bodyTableRef.current.offsetHeight > wrapperRef.current.offsetHeight;
219
244
  var renderTable = function renderTable() {
220
- var singleTableContent = /*#__PURE__*/React__default["default"].createElement("div", {
221
- ref: scrollBodyElementRef,
222
- className: prefixCls + "-content",
223
- onScroll: onTableBodyScroll,
224
- style: {
225
- // 表格宽度大于div宽度才出现横向滚动条
226
- overflowX: canScroll ? 'scroll' : undefined
227
- }
228
- }, /*#__PURE__*/React__default["default"].createElement("table", {
245
+ if (needDoubleTable) {
246
+ var _a2 = getTableHeaderProps(),
247
+ style = _a2.style,
248
+ restTableHeaderProps = tslib.__rest(_a2, ["style"]);
249
+ var doubleTableContent = /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", Object.assign({}, restTableHeaderProps, {
250
+ style: Object.assign(Object.assign({}, style), {
251
+ overflow: undefined
252
+ })
253
+ }), /*#__PURE__*/React__default["default"].createElement(TableHeader.TableHeader, null), extraHeader ? ( /*#__PURE__*/React__default["default"].createElement("div", {
254
+ style: {
255
+ position: 'absolute',
256
+ right: 0,
257
+ zIndex: 11,
258
+ bottom: 0,
259
+ top: 0
260
+ }
261
+ }, extraHeader)) : null), /*#__PURE__*/React__default["default"].createElement(TableBody.TableBody, {
262
+ emptyContent: emptyContent
263
+ }));
264
+ return doubleTableContent;
265
+ }
266
+ var tableContent = /*#__PURE__*/React__default["default"].createElement("table", {
229
267
  ref: bodyTableRef,
230
268
  style: {
231
269
  width: canScroll && scrollWidth !== undefined ? scrollWidth : '100%'
232
270
  }
233
271
  }, /*#__PURE__*/React__default["default"].createElement(ColGroupContent.ColGroupContent, null), /*#__PURE__*/React__default["default"].createElement(TheadContent.TheadContent, null), /*#__PURE__*/React__default["default"].createElement(TbodyContent.TbodyContent, {
234
272
  emptyContent: emptyContent
235
- })));
236
- var _a = getTableHeaderProps(),
237
- style = _a.style,
238
- restTableHeaderProps = tslib.__rest(_a, ["style"]);
239
- var doubleTableContent = /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", Object.assign({}, restTableHeaderProps, {
240
- style: Object.assign(Object.assign({}, style), {
241
- overflow: 'unset'
242
- })
243
- }), /*#__PURE__*/React__default["default"].createElement(TableHeader.TableHeader, null), extraHeader ? ( /*#__PURE__*/React__default["default"].createElement("div", {
273
+ }));
274
+ var singleTableContent = /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
275
+ className: prefixCls + "-content"
276
+ }, !scrollbar ? {
277
+ ref: scrollBodyElementRef,
278
+ onScroll: onTableBodyScroll,
244
279
  style: {
245
- position: 'absolute',
246
- right: 0,
247
- zIndex: 11,
248
- bottom: 0,
249
- top: 0
280
+ // 表格宽度大于div宽度才出现横向滚动条
281
+ overflowX: canScroll ? 'scroll' : undefined
250
282
  }
251
- }, extraHeader)) : null), /*#__PURE__*/React__default["default"].createElement(TableBody.TableBody, {
252
- emptyContent: emptyContent
253
- }));
254
- return needDoubleTable ? doubleTableContent : !scrollbar ? singleTableContent : ( /*#__PURE__*/React__default["default"].createElement(Scrollbar__default["default"], Object.assign({}, typeAssertion.isObject(scrollbar) ? scrollbar : null), singleTableContent));
283
+ } : {}), !scrollbar ? tableContent : ( /*#__PURE__*/React__default["default"].createElement(Scrollbar__default["default"], Object.assign({
284
+ ref: scrollBodyElementRef,
285
+ onScroll: onTableBodyScroll
286
+ }, typeAssertion.isObject(scrollbar) ? scrollbar : null), tableContent)));
287
+ return singleTableContent;
255
288
  };
256
289
  var renderFreezeShadow = function renderFreezeShadow() {
257
290
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, (alwaysFixedColumn || scrollSize.scrollLeft > 0) && leftFrozenColKeys.length > 0 ? ( /*#__PURE__*/React__default["default"].createElement("div", {
@@ -279,7 +312,8 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
279
312
  role: role,
280
313
  className: cls
281
314
  }, rootProps), /*#__PURE__*/React__default["default"].createElement("div", {
282
- className: prefixCls + "__wrapper"
315
+ ref: wrapperRef,
316
+ className: classname.cx(prefixCls + "__wrapper", isTableContentExceedWrapperHeight && prefixCls + "--exceed-wrapper-height")
283
317
  }, /*#__PURE__*/React__default["default"].createElement(context.TableProvider, {
284
318
  value: Object.assign(Object.assign({}, providedValue), {
285
319
  striped: striped,
@@ -295,7 +329,9 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
295
329
  sumRow: sumRow,
296
330
  hasSumColumn: hasSumColumn,
297
331
  virtual: virtual,
298
- onResizeStop: onResizeStop
332
+ onScroll: onScroll,
333
+ onResizeStop: onResizeStop,
334
+ fixedToRow: fixedToRow
299
335
  })
300
336
  }, renderTable()), renderFreezeShadow()), tableFooter);
301
337
  });
package/lib/cjs/Table.js CHANGED
@@ -25,7 +25,7 @@ var reactUtils = require('@hi-ui/react-utils');
25
25
  var TableSettingMenu = require('./TableSettingMenu.js');
26
26
  var Loading = require('@hi-ui/loading');
27
27
  var Checkbox = require('@hi-ui/checkbox');
28
- var index$1 = require('./packages/ui/radio/lib/esm/index.js');
28
+ var Radio = require('@hi-ui/radio');
29
29
  var useCheck = require('./hooks/use-check.js');
30
30
  var typeAssertion = require('@hi-ui/type-assertion');
31
31
  var treeUtils = require('@hi-ui/tree-utils');
@@ -41,12 +41,13 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
41
41
  var Pagination__default = /*#__PURE__*/_interopDefaultCompat(Pagination);
42
42
  var Loading__default = /*#__PURE__*/_interopDefaultCompat(Loading);
43
43
  var Checkbox__default = /*#__PURE__*/_interopDefaultCompat(Checkbox);
44
+ var Radio__default = /*#__PURE__*/_interopDefaultCompat(Radio);
44
45
  var _prefix = classname.getPrefixCls('table');
45
46
  /**
46
47
  * 需要使用双表格的场景对应的 API
47
48
  * 这些场景下的功能无法通过单表格实现,故而设计成双表格,即表头和表体分别用一个 table 实现
48
49
  */
49
- var DOUBLE_TABLE_SCENE = ['needDoubleTable', 'maxHeight', 'sticky', 'stickyTop', 'setting', 'virtual', 'stretchHeight'];
50
+ var DOUBLE_TABLE_SCENE = ['needDoubleTable', 'maxHeight', 'sticky', 'stickyTop', 'setting', 'virtual'];
50
51
  var STANDARD_PRESET = {
51
52
  striped: true,
52
53
  bordered: true,
@@ -86,11 +87,13 @@ var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
86
87
  extra = _a.extra,
87
88
  _a$data = _a.data,
88
89
  data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
89
- rest = tslib.__rest(_a, ["prefixCls", "standard", "loading", "dataSource", "pagination", "uniqueId", "columns", "hiddenColKeys", "onHiddenColKeysChange", "sortedColKeys", "onSortedColKeysChange", "checkDisabledColKeys", "onSetColKeysChange", "rowSelection", "fieldKey", "extra", "data"]);
90
+ onScroll = _a.onScroll,
91
+ rest = tslib.__rest(_a, ["prefixCls", "standard", "loading", "dataSource", "pagination", "uniqueId", "columns", "hiddenColKeys", "onHiddenColKeysChange", "sortedColKeys", "onSortedColKeysChange", "checkDisabledColKeys", "onSetColKeysChange", "rowSelection", "fieldKey", "extra", "data", "onScroll"]);
90
92
  // 是否需要双表格
93
+ // 当 data 为空时,如果使用单表格,在表头分组下会导致表头错位(原生 table 特性),故而该情况下也要使用双表格
91
94
  var needDoubleTable = DOUBLE_TABLE_SCENE.some(function (prop) {
92
95
  return !!rest[prop];
93
- });
96
+ }) || data.length === 0;
94
97
  var virtual = rest.virtual;
95
98
  // ************************ 预置标准模式 ************************ //
96
99
  var tableProps = reactUtils.withDefaultProps(rest, standard ? STANDARD_PRESET : undefined);
@@ -205,6 +208,12 @@ var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
205
208
  var rowKey = getRowKeyField(rowItem);
206
209
  var checked = isCheckedRowKey(rowKey);
207
210
  var disabledCheckbox = checkRowIsDisabledCheckbox(rowItem);
211
+ if (rowItem.key === 'avg' || rowItem.key === 'sum') {
212
+ return {
213
+ node: null,
214
+ checked: false
215
+ };
216
+ }
208
217
  return {
209
218
  node: type === 'checkbox' ? ( /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], {
210
219
  checked: checked,
@@ -215,7 +224,7 @@ var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
215
224
  onClick: function onClick(evt) {
216
225
  evt.stopPropagation();
217
226
  }
218
- })) : ( /*#__PURE__*/React__default["default"].createElement(index$1["default"], {
227
+ })) : ( /*#__PURE__*/React__default["default"].createElement(Radio__default["default"], {
219
228
  checked: checked,
220
229
  disabled: disabledCheckbox,
221
230
  onChange: function onChange(evt) {
@@ -297,6 +306,7 @@ var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
297
306
  data: mergedData,
298
307
  fieldKey: fieldKey,
299
308
  virtual: virtual,
309
+ onScroll: onScroll,
300
310
  needDoubleTable: needDoubleTable,
301
311
  extra: Object.assign({
302
312
  header: setting ? ( /*#__PURE__*/React__default["default"].createElement(TableSettingMenu.TableSettingMenu, {