vxe-table 4.16.0 → 4.16.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 (73) hide show
  1. package/es/grid/src/grid.js +1 -1
  2. package/es/index.css +1 -1
  3. package/es/index.min.css +1 -1
  4. package/es/style.css +1 -1
  5. package/es/style.min.css +1 -1
  6. package/es/table/module/edit/hook.js +55 -17
  7. package/es/table/src/column.js +2 -0
  8. package/es/table/src/columnInfo.js +1 -0
  9. package/es/table/src/emits.js +5 -0
  10. package/es/table/src/header.js +47 -16
  11. package/es/table/src/props.js +11 -3
  12. package/es/table/src/store.js +8 -0
  13. package/es/table/src/table.js +579 -87
  14. package/es/table/src/util.js +70 -2
  15. package/es/table/style.css +11 -17
  16. package/es/table/style.min.css +1 -1
  17. package/es/ui/index.js +2 -2
  18. package/es/ui/src/log.js +1 -1
  19. package/es/vxe-table/style.css +11 -17
  20. package/es/vxe-table/style.min.css +1 -1
  21. package/lib/grid/src/grid.js +1 -1
  22. package/lib/grid/src/grid.min.js +1 -1
  23. package/lib/index.css +1 -1
  24. package/lib/index.min.css +1 -1
  25. package/lib/index.umd.js +265 -65
  26. package/lib/index.umd.min.js +1 -1
  27. package/lib/style.css +1 -1
  28. package/lib/style.min.css +1 -1
  29. package/lib/table/module/edit/hook.js +54 -15
  30. package/lib/table/module/edit/hook.min.js +1 -1
  31. package/lib/table/src/column.js +2 -0
  32. package/lib/table/src/column.min.js +1 -1
  33. package/lib/table/src/columnInfo.js +1 -0
  34. package/lib/table/src/columnInfo.min.js +1 -1
  35. package/lib/table/src/emits.js +1 -1
  36. package/lib/table/src/emits.min.js +1 -1
  37. package/lib/table/src/header.js +62 -13
  38. package/lib/table/src/header.min.js +1 -1
  39. package/lib/table/src/props.js +11 -3
  40. package/lib/table/src/props.min.js +1 -1
  41. package/lib/table/src/store.js +15 -0
  42. package/lib/table/src/store.min.js +1 -0
  43. package/lib/table/src/table.js +45 -25
  44. package/lib/table/src/table.min.js +1 -1
  45. package/lib/table/src/util.js +74 -2
  46. package/lib/table/src/util.min.js +1 -1
  47. package/lib/table/style/style.css +11 -17
  48. package/lib/table/style/style.min.css +1 -1
  49. package/lib/ui/index.js +2 -2
  50. package/lib/ui/index.min.js +1 -1
  51. package/lib/ui/src/log.js +1 -1
  52. package/lib/ui/src/log.min.js +1 -1
  53. package/lib/vxe-table/style/style.css +11 -17
  54. package/lib/vxe-table/style/style.min.css +1 -1
  55. package/package.json +2 -2
  56. package/packages/grid/src/grid.ts +1 -1
  57. package/packages/table/module/edit/hook.ts +55 -19
  58. package/packages/table/src/column.ts +2 -0
  59. package/packages/table/src/columnInfo.ts +1 -0
  60. package/packages/table/src/emits.ts +6 -0
  61. package/packages/table/src/header.ts +49 -17
  62. package/packages/table/src/props.ts +11 -3
  63. package/packages/table/src/store.ts +14 -0
  64. package/packages/table/src/table.ts +583 -83
  65. package/packages/table/src/util.ts +76 -2
  66. package/packages/ui/index.ts +1 -1
  67. package/styles/components/table.scss +33 -55
  68. /package/es/{iconfont.1756083655214.ttf → iconfont.1756452373591.ttf} +0 -0
  69. /package/es/{iconfont.1756083655214.woff → iconfont.1756452373591.woff} +0 -0
  70. /package/es/{iconfont.1756083655214.woff2 → iconfont.1756452373591.woff2} +0 -0
  71. /package/lib/{iconfont.1756083655214.ttf → iconfont.1756452373591.ttf} +0 -0
  72. /package/lib/{iconfont.1756083655214.woff → iconfont.1756452373591.woff} +0 -0
  73. /package/lib/{iconfont.1756083655214.woff2 → iconfont.1756452373591.woff2} +0 -0
@@ -73,6 +73,7 @@ export function createInternalData (): TableInternalData {
73
73
  tableFullColumn: [],
74
74
  // 渲染所有列
75
75
  visibleColumn: [],
76
+
76
77
  // 全量数据集(包括当前和已删除)
77
78
  fullAllDataRowIdData: {},
78
79
  // 数据集(仅当前)
@@ -84,16 +85,22 @@ export function createInternalData (): TableInternalData {
84
85
  fullColumnIdData: {},
85
86
  fullColumnFieldData: {},
86
87
 
88
+ // 合并表头单元格的数据
89
+ mergeHeaderList: [],
90
+ mergeHeaderMaps: {},
91
+ // 已合并单元格数据集合
92
+ mergeHeaderCellMaps: {},
87
93
  // 合并单元格的数据
88
94
  mergeBodyList: [],
89
95
  mergeBodyMaps: {},
96
+ // 已合并单元格数据集合
97
+ mergeBodyCellMaps: {},
90
98
  // 合并表尾的数据
91
99
  mergeFooterList: [],
92
100
  mergeFooterMaps: {},
93
- // 已合并单元格数据集合
94
- mergeBodyCellMaps: {},
95
101
  // 已合并表尾数据集合
96
102
  mergeFooterCellMaps: {},
103
+
97
104
  // 已展开的行集合
98
105
  rowExpandedMaps: {},
99
106
  // 懒加载中的展开行的集合
@@ -194,6 +201,73 @@ export const convertHeaderColumnToRows = (originColumns: any): any[][] => {
194
201
  return rows
195
202
  }
196
203
 
204
+ export function convertHeaderToGridRows (spanColumns: VxeTableDefines.ColumnInfo[][]) {
205
+ const rSize = spanColumns.length
206
+ const cSize = spanColumns[0].reduce((sum, cell) => sum + cell.colSpan, 0)
207
+
208
+ const occupiedRows: boolean[][] = []
209
+ const fullRows: any[][] = []
210
+ for (let rIndex = 0; rIndex < rSize; rIndex++) {
211
+ const oCols: boolean[] = []
212
+ const dCols: string[] = []
213
+ for (let cIndex = 0; cIndex < cSize; cIndex++) {
214
+ oCols.push(false)
215
+ dCols.push('')
216
+ }
217
+ occupiedRows.push(oCols)
218
+ fullRows.push(dCols)
219
+ }
220
+
221
+ for (let rIndex = 0; rIndex < rSize; rIndex++) {
222
+ let currColIndex = 0
223
+ for (const column of spanColumns[rIndex]) {
224
+ const { colSpan, rowSpan } = column
225
+ let startColIndex = -1
226
+ for (let ccIndex = currColIndex; ccIndex <= cSize - colSpan; ccIndex++) {
227
+ let oFlag = true
228
+ for (let csIndex = 0; csIndex < colSpan; csIndex++) {
229
+ if (occupiedRows[rIndex][ccIndex + csIndex]) {
230
+ oFlag = false
231
+ break
232
+ }
233
+ }
234
+ if (oFlag) {
235
+ startColIndex = ccIndex
236
+ break
237
+ }
238
+ }
239
+ if (startColIndex === -1) {
240
+ for (let j = 0; j <= cSize - colSpan; j++) {
241
+ let oFlag = true
242
+ for (let k = 0; k < colSpan; k++) {
243
+ if (occupiedRows[rIndex][j + k]) {
244
+ oFlag = false
245
+ break
246
+ }
247
+ }
248
+ if (oFlag) {
249
+ startColIndex = j
250
+ break
251
+ }
252
+ }
253
+ if (startColIndex === -1) {
254
+ // error
255
+ break
256
+ }
257
+ }
258
+
259
+ for (let srIndex = rIndex; srIndex < rIndex + rowSpan; srIndex++) {
260
+ for (let scIndex = startColIndex; scIndex < startColIndex + colSpan; scIndex++) {
261
+ occupiedRows[srIndex][scIndex] = true
262
+ fullRows[srIndex][scIndex] = column
263
+ }
264
+ }
265
+ currColIndex = startColIndex + colSpan
266
+ }
267
+ }
268
+ return fullRows
269
+ }
270
+
197
271
  export function restoreScrollLocation ($xeTable: VxeTableConstructor, scrollLeft: number, scrollTop: number) {
198
272
  const internalData = $xeTable.internalData
199
273
 
@@ -17,7 +17,7 @@ VxeUI.setConfig({
17
17
  animat: true,
18
18
  delayHover: 250,
19
19
  autoResize: true,
20
- minHeight: 144,
20
+ // minHeight: null,
21
21
  // keepSource: false,
22
22
  // showOverflow: null,
23
23
  // showHeaderOverflow: null,
@@ -645,9 +645,6 @@ $btnThemeList: (
645
645
  overflow-x: scroll;
646
646
  height: 18px;
647
647
  }
648
- .vxe-table--scroll-x-wrapper {
649
- height: 100%;
650
- }
651
648
  .vxe-table--scroll-y-handle,
652
649
  .vxe-table--scroll-y-wrapper {
653
650
  width: 100%;
@@ -891,13 +888,6 @@ $btnThemeList: (
891
888
  right: auto;
892
889
  left: -0.3em;
893
890
  }
894
- .vxe-header--column {
895
- &:last-child {
896
- & > .vxe-cell--col-resizable {
897
- left: 0;
898
- }
899
- }
900
- }
901
891
  }
902
892
 
903
893
  .vxe-body--column {
@@ -1415,32 +1405,25 @@ $btnThemeList: (
1415
1405
  .vxe-table--scroll-y-bottom-corner {
1416
1406
  border-top: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
1417
1407
  }
1418
- .vxe-table--scroll-x-wrapper {
1419
- &::after {
1420
- content: "";
1421
- position: absolute;
1422
- left: 0;
1423
- width: 100%;
1424
- height: 100%;
1425
- z-index: 1;
1426
- pointer-events: none;
1427
- }
1408
+ .vxe-table--scroll-x-handle-appearance {
1409
+ position: absolute;
1410
+ left: 0;
1411
+ width: 100%;
1412
+ height: 100%;
1413
+ z-index: 1;
1414
+ pointer-events: none;
1428
1415
  }
1429
1416
  &.sx-pos--top {
1430
- .vxe-table--scroll-x-wrapper {
1431
- &::after {
1432
- top: 0;
1433
- border-bottom: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
1434
- }
1417
+ .vxe-table--scroll-x-handle-appearance {
1418
+ top: 0;
1419
+ border-bottom: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
1435
1420
  }
1436
1421
  }
1437
1422
  &.sx-pos--bottom {
1438
- .vxe-table--scroll-x-wrapper {
1439
- &::after {
1440
- bottom: 0;
1441
- height: calc(100% + var(--vxe-ui-table-border-width));
1442
- border-top: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
1443
- }
1423
+ .vxe-table--scroll-x-handle-appearance {
1424
+ bottom: 0;
1425
+ height: calc(100% + var(--vxe-ui-table-border-width));
1426
+ border-top: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
1444
1427
  }
1445
1428
  }
1446
1429
  }
@@ -1514,32 +1497,25 @@ $btnThemeList: (
1514
1497
  }
1515
1498
  }
1516
1499
  }
1517
- .vxe-table--scroll-y-wrapper {
1518
- &::after {
1519
- content: "";
1520
- position: absolute;
1521
- top: 0;
1522
- width: 100%;
1523
- height: 100%;
1524
- z-index: 1;
1525
- pointer-events: none;
1526
- }
1500
+ .vxe-table--scroll-y-handle-appearance {
1501
+ position: absolute;
1502
+ top: 0;
1503
+ width: 100%;
1504
+ height: 100%;
1505
+ z-index: 1;
1506
+ pointer-events: none;
1527
1507
  }
1528
1508
  &.sy-pos--left {
1529
- .vxe-table--scroll-y-wrapper {
1530
- &::after {
1531
- left: 0;
1532
- border-right: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
1533
- }
1509
+ .vxe-table--scroll-y-handle-appearance {
1510
+ left: 0;
1511
+ border-right: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
1534
1512
  }
1535
1513
  }
1536
1514
  &.sy-pos--right {
1537
- .vxe-table--scroll-y-wrapper {
1538
- &::after {
1539
- right: 0;
1540
- width: calc(100% + var(--vxe-ui-table-border-width));
1541
- border-left: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
1542
- }
1515
+ .vxe-table--scroll-y-handle-appearance {
1516
+ right: 0;
1517
+ width: calc(100% + var(--vxe-ui-table-border-width));
1518
+ border-left: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
1543
1519
  }
1544
1520
  }
1545
1521
  }
@@ -2159,8 +2135,8 @@ $btnThemeList: (
2159
2135
  position: absolute;
2160
2136
  left: 50%;
2161
2137
  font-size: 12px;
2162
- line-height: 1.2em;
2163
- transform: translateX(-50%);
2138
+ line-height: 1em;
2139
+ transform: translate(-50%, -50%);
2164
2140
  text-align: left;
2165
2141
  z-index: 4;
2166
2142
  padding: 0 var(--vxe-ui-table-cell-padding-default);
@@ -2172,7 +2148,7 @@ $btnThemeList: (
2172
2148
  pointer-events: auto;
2173
2149
  }
2174
2150
  .vxe-cell--valid-error-theme-beautify {
2175
- padding: 0.2em 0.6em 0.3em 0.6em;
2151
+ padding: 0.2em 0.6em 0.25em 0.6em;
2176
2152
  color: #fff;
2177
2153
  background-color: var(--vxe-ui-table-validate-error-color);
2178
2154
  .vxe-cell--valid-error-msg {
@@ -2204,10 +2180,12 @@ $btnThemeList: (
2204
2180
  &:last-child {
2205
2181
  .vxe-cell--valid-error-tip {
2206
2182
  bottom: calc(100%);
2183
+ transform: translate(-50%, 50%);
2207
2184
  }
2208
2185
  &:first-child {
2209
2186
  .vxe-cell--valid-error-tip {
2210
2187
  bottom: auto;
2188
+ transform: translate(-50%, -50%);
2211
2189
  }
2212
2190
  }
2213
2191
  }