vxe-table 3.20.1 → 3.20.3

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 (58) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/module/filter/mixin.js +11 -2
  6. package/es/table/module/menu/mixin.js +2 -2
  7. package/es/table/src/body.js +4 -2
  8. package/es/table/src/methods.js +93 -7
  9. package/es/table/src/table.js +16 -1
  10. package/es/table/src/util.js +1 -2
  11. package/es/table/style.css +2 -2
  12. package/es/table/style.min.css +1 -1
  13. package/es/ui/index.js +3 -2
  14. package/es/ui/src/log.js +1 -1
  15. package/es/vxe-table/style.css +2 -2
  16. package/es/vxe-table/style.min.css +1 -1
  17. package/lib/index.css +1 -1
  18. package/lib/index.min.css +1 -1
  19. package/lib/index.umd.js +49 -17
  20. package/lib/index.umd.min.js +1 -1
  21. package/lib/style.css +1 -1
  22. package/lib/style.min.css +1 -1
  23. package/lib/table/module/filter/mixin.js +12 -2
  24. package/lib/table/module/filter/mixin.min.js +1 -1
  25. package/lib/table/module/menu/mixin.js +2 -1
  26. package/lib/table/module/menu/mixin.min.js +1 -1
  27. package/lib/table/src/body.js +5 -2
  28. package/lib/table/src/body.min.js +1 -1
  29. package/lib/table/src/methods.js +7 -7
  30. package/lib/table/src/methods.min.js +1 -1
  31. package/lib/table/src/table.js +18 -0
  32. package/lib/table/src/table.min.js +1 -1
  33. package/lib/table/src/util.js +1 -2
  34. package/lib/table/src/util.min.js +1 -1
  35. package/lib/table/style/style.css +2 -2
  36. package/lib/table/style/style.min.css +1 -1
  37. package/lib/ui/index.js +3 -2
  38. package/lib/ui/index.min.js +1 -1
  39. package/lib/ui/src/log.js +1 -1
  40. package/lib/ui/src/log.min.js +1 -1
  41. package/lib/vxe-table/style/style.css +2 -2
  42. package/lib/vxe-table/style/style.min.css +1 -1
  43. package/package.json +1 -1
  44. package/packages/table/module/filter/mixin.ts +10 -2
  45. package/packages/table/module/menu/mixin.ts +2 -2
  46. package/packages/table/src/body.ts +4 -2
  47. package/packages/table/src/methods.ts +99 -9
  48. package/packages/table/src/table.ts +18 -2
  49. package/packages/table/src/util.ts +2 -2
  50. package/packages/ui/index.ts +2 -1
  51. package/styles/components/table.scss +2 -2
  52. package/styles/theme/base.scss +3 -0
  53. /package/es/{iconfont.1773109164685.ttf → iconfont.1773640262712.ttf} +0 -0
  54. /package/es/{iconfont.1773109164685.woff → iconfont.1773640262712.woff} +0 -0
  55. /package/es/{iconfont.1773109164685.woff2 → iconfont.1773640262712.woff2} +0 -0
  56. /package/lib/{iconfont.1773109164685.ttf → iconfont.1773640262712.ttf} +0 -0
  57. /package/lib/{iconfont.1773109164685.woff → iconfont.1773640262712.woff} +0 -0
  58. /package/lib/{iconfont.1773109164685.woff2 → iconfont.1773640262712.woff2} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "3.20.1",
3
+ "version": "3.20.3",
4
4
  "description": "A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -113,7 +113,7 @@ export default {
113
113
  const tableEl = $xeTable.$refs.refElem as HTMLDivElement
114
114
  const { scrollTop, scrollLeft, visibleHeight, visibleWidth } = getDomNode()
115
115
  const filterOpts = $xeTable.computeFilterOpts
116
- const { transfer } = filterOpts
116
+ const { maxHeight: customMaxHeight, transfer, zIndex } = filterOpts
117
117
  const currEl = btnEl || colEl
118
118
  const tableRect = tableEl.getBoundingClientRect()
119
119
  const filterRender = column ? column.filterRender : null
@@ -167,13 +167,21 @@ export default {
167
167
  }
168
168
  }
169
169
  }
170
- filterStore.style = {
170
+ const fStys: Record<string, any> = {
171
171
  top: toCssUnit(top),
172
172
  left: toCssUnit(left)
173
173
  }
174
+ if (zIndex) {
175
+ fStys.zIndex = zIndex
176
+ }
177
+ filterStore.style = fStys
174
178
  // 筛选面板是自适应表格高度
175
179
  if (compConf ? !compConf.tableFilterAutoHeight : false) {
176
180
  maxHeight = 0
181
+ } else {
182
+ if (customMaxHeight) {
183
+ maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight
184
+ }
177
185
  }
178
186
  // 判断面板不能大于表格高度
179
187
  filterStore.maxHeight = maxHeight
@@ -173,7 +173,7 @@ export default {
173
173
  const isContentMenu = $xeTable.computeIsContentMenu
174
174
  const menuOpts = $xeTable.computeMenuOpts
175
175
  const config = menuOpts[type]
176
- const { transfer, visibleMethod } = menuOpts
176
+ const { zIndex, transfer, visibleMethod } = menuOpts
177
177
  if (config) {
178
178
  const { options, disabled } = config
179
179
  if (disabled) {
@@ -204,7 +204,7 @@ export default {
204
204
  selectChild: null,
205
205
  showChild: false,
206
206
  style: {
207
- zIndex: internalData.tZindex,
207
+ zIndex: zIndex || internalData.tZindex,
208
208
  top: `${top}px`,
209
209
  left: `${left}px`
210
210
  }
@@ -17,10 +17,12 @@ const renderType = 'body'
17
17
  const isVMScrollProcess = ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) => {
18
18
  const tableProps = $xeTable
19
19
  const tableReactData = $xeTable as unknown as TableReactData
20
+ const tableInternalData = $xeTable as unknown as TableInternalData
20
21
 
21
22
  const { delayHover } = tableProps
22
- const { lastScrollTime, isDragResize } = tableReactData
23
- return !!(isDragResize || (lastScrollTime && Date.now() < lastScrollTime + (delayHover as number)))
23
+ const { isDragResize } = tableReactData
24
+ const { lastSTime } = tableInternalData
25
+ return !!(isDragResize || (lastSTime && Date.now() < lastSTime + (delayHover as number)))
24
26
  }
25
27
 
26
28
  function renderLine (h: CreateElement, $xeTable : VxeTableConstructor & VxeTablePrivateMethods, rowid: string, params: VxeTableDefines.CellRenderBodyParams, cellHeight: number): VxeComponentSlotType[] {
@@ -3495,7 +3495,7 @@ function loadTableData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods,
3495
3495
  if (reactData.expandColumn && expandOpts.mode !== 'fixed') {
3496
3496
  errLog('vxe.error.notConflictProp', ['column.type="expand', 'expand-config.mode="fixed"'])
3497
3497
  }
3498
- if (virtualYOpts.mode === 'scroll' && expandOpts.mode === 'fixed') {
3498
+ if (virtualYOpts.mode === 'scroll' && reactData.expandColumn && expandOpts.mode === 'fixed') {
3499
3499
  warnLog('vxe.error.notConflictProp', ['virtual-y-config.mode=scroll', 'expand-config.mode=inside'])
3500
3500
  }
3501
3501
  // if (showOverflow) {
@@ -4023,7 +4023,7 @@ function handleSyncScroll ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
4023
4023
  return Promise.all([
4024
4024
  xRest,
4025
4025
  yRest,
4026
- $xeTable.updateCellAreas()
4026
+ scrollXLoad || scrollYLoad ? $xeTable.updateCellAreas() : null
4027
4027
  ])
4028
4028
  }
4029
4029
 
@@ -5267,7 +5267,7 @@ const tableMethods: any = {
5267
5267
  const cellValue = getCellValue(row, column)
5268
5268
  let cellLabel = cellValue
5269
5269
  if (formatter || tcFormatter) {
5270
- let formatData
5270
+ let formatData: Record<string, VxeTableDefines.RowCacheFormatObj> | undefined
5271
5271
  const { fullAllDataRowIdData } = internalData
5272
5272
  const rowid = getRowid($xeTable, row)
5273
5273
  const colid = column.id
@@ -5312,6 +5312,50 @@ const tableMethods: any = {
5312
5312
  }
5313
5313
  return cellLabel
5314
5314
  },
5315
+ updateCellLabel (row: any, fieldOrColumn: string | VxeTableDefines.ColumnInfo) {
5316
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
5317
+ const internalData = $xeTable as unknown as TableInternalData
5318
+
5319
+ const column = handleFieldOrColumn($xeTable, fieldOrColumn)
5320
+ if (!column) {
5321
+ return null
5322
+ }
5323
+ const { fullAllDataRowIdData } = internalData
5324
+ const rowid = getRowid($xeTable, row)
5325
+ if (rowid) {
5326
+ const colid = column.id
5327
+ const rowid = getRowid($xeTable, row)
5328
+ const rowRest = fullAllDataRowIdData[rowid]
5329
+ if (rowRest) {
5330
+ const formatData = rowRest.formatData
5331
+ if (formatData) {
5332
+ delete formatData[colid]
5333
+ }
5334
+ }
5335
+ }
5336
+ return $xeTable.getFooterCellLabel(row, column)
5337
+ },
5338
+ clearFormatterCache (isUpdate?: boolean) {
5339
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
5340
+ const reactData = $xeTable as unknown as TableReactData
5341
+ const internalData = $xeTable as unknown as TableInternalData
5342
+
5343
+ const { tableData, tableColumn } = reactData
5344
+ const { fullAllDataRowIdData } = internalData
5345
+ XEUtils.each(fullAllDataRowIdData, (rowRest: VxeTableDefines.FooterRowCacheItem) => {
5346
+ if (rowRest.formatData) {
5347
+ rowRest.formatData = undefined
5348
+ }
5349
+ })
5350
+ if (isUpdate) {
5351
+ tableData.forEach(row => {
5352
+ tableColumn.forEach(column => {
5353
+ $xeTable.getCellLabel(row, column)
5354
+ })
5355
+ })
5356
+ }
5357
+ return $xeTable.$nextTick()
5358
+ },
5315
5359
  getFooterCellLabel (row: any, fieldOrColumn: string | VxeTableDefines.ColumnInfo) {
5316
5360
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
5317
5361
  const reactData = $xeTable as unknown as TableReactData
@@ -5332,7 +5376,7 @@ const tableMethods: any = {
5332
5376
  }
5333
5377
  let cellLabel: any = itemValue
5334
5378
  if (footerFormatter) {
5335
- let formatData
5379
+ let formatData: Record<string, VxeTableDefines.RowCacheFormatObj> | undefined
5336
5380
  const { footerTableData } = reactData
5337
5381
  const { footerFullDataRowData } = internalData
5338
5382
  const colid = column.id
@@ -5381,6 +5425,49 @@ const tableMethods: any = {
5381
5425
  }
5382
5426
  return cellLabel
5383
5427
  },
5428
+ updateFooterCellLabel (row: any, fieldOrColumn: string | VxeTableDefines.ColumnInfo) {
5429
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
5430
+ const reactData = $xeTable as unknown as TableReactData
5431
+ const internalData = $xeTable as unknown as TableInternalData
5432
+
5433
+ const column = handleFieldOrColumn($xeTable, fieldOrColumn)
5434
+ if (!column) {
5435
+ return null
5436
+ }
5437
+ const { footerTableData } = reactData
5438
+ const { footerFullDataRowData } = internalData
5439
+ const colid = column.id
5440
+ const $rowIndex = footerTableData.indexOf(row)
5441
+ const rowRest = footerFullDataRowData[$rowIndex]
5442
+ if (rowRest) {
5443
+ const formatData = rowRest.formatData
5444
+ if (formatData) {
5445
+ delete formatData[colid]
5446
+ }
5447
+ }
5448
+ return $xeTable.getFooterCellLabel(row, column)
5449
+ },
5450
+ clearFooterFormatterCache (isUpdate?: boolean) {
5451
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
5452
+ const reactData = $xeTable as unknown as TableReactData
5453
+ const internalData = $xeTable as unknown as TableInternalData
5454
+
5455
+ const { tableData, tableColumn } = reactData
5456
+ const { footerFullDataRowData } = internalData
5457
+ XEUtils.each(footerFullDataRowData, (rowRest: VxeTableDefines.FooterRowCacheItem) => {
5458
+ if (rowRest.formatData) {
5459
+ rowRest.formatData = undefined
5460
+ }
5461
+ })
5462
+ if (isUpdate) {
5463
+ tableData.forEach(row => {
5464
+ tableColumn.forEach(column => {
5465
+ $xeTable.getFooterCellLabel(row, column)
5466
+ })
5467
+ })
5468
+ }
5469
+ return $xeTable.$nextTick()
5470
+ },
5384
5471
  /**
5385
5472
  * 检查是否为临时行数据
5386
5473
  */
@@ -11435,7 +11522,6 @@ const tableMethods: any = {
11435
11522
  handleScrollEvent (evnt: Event, isRollY: boolean, isRollX: boolean, scrollTop: number, scrollLeft: number, params: any) {
11436
11523
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11437
11524
  const props = $xeTable
11438
- const reactData = $xeTable as unknown as TableReactData
11439
11525
  const internalData = $xeTable as unknown as TableInternalData
11440
11526
 
11441
11527
  const { highlightHoverRow } = props
@@ -11500,7 +11586,7 @@ const tableMethods: any = {
11500
11586
  }
11501
11587
  internalData.lastScrollTop = scrollTop
11502
11588
  }
11503
- reactData.lastScrollTime = Date.now()
11589
+ internalData.lastSTime = Date.now()
11504
11590
  const evntParams = {
11505
11591
  source: sourceType,
11506
11592
  scrollTop,
@@ -11766,7 +11852,7 @@ const tableMethods: any = {
11766
11852
  return
11767
11853
  }
11768
11854
 
11769
- const wheelSpeed = getWheelSpeed(reactData.lastScrollTime)
11855
+ const wheelSpeed = getWheelSpeed(internalData.lastSTime)
11770
11856
  const deltaTop = shiftKey ? 0 : (deltaY * wheelSpeed)
11771
11857
  const deltaLeft = (shiftKey ? (deltaX || deltaY) : deltaX) * wheelSpeed
11772
11858
 
@@ -12274,14 +12360,18 @@ const tableMethods: any = {
12274
12360
  setScrollLeft(bodyScrollElem, scrollLeft)
12275
12361
  setScrollLeft(headerScrollElem, scrollLeft)
12276
12362
  setScrollLeft(footerScrollElem, scrollLeft)
12277
- loadScrollXData($xeTable)
12363
+ if (reactData.scrollXLoad) {
12364
+ loadScrollXData($xeTable)
12365
+ }
12278
12366
  }
12279
12367
  if (XEUtils.isNumber(scrollTop)) {
12280
12368
  setScrollTop(yHandleEl, scrollTop)
12281
12369
  setScrollTop(bodyScrollElem, scrollTop)
12282
12370
  setScrollTop(leftScrollElem, scrollTop)
12283
12371
  setScrollTop(rightScrollElem, scrollTop)
12284
- loadScrollYData($xeTable)
12372
+ if (reactData.scrollYLoad) {
12373
+ loadScrollYData($xeTable)
12374
+ }
12285
12375
  }
12286
12376
  return new Promise<void>(resolve => {
12287
12377
  setTimeout(() => {
@@ -1,7 +1,7 @@
1
1
  import { CreateElement } from 'vue'
2
2
  import XEUtils from 'xe-utils'
3
3
  import { getFuncText, isEnableConf } from '../../ui/src/utils'
4
- import { initTpImg } from '../../ui/src/dom'
4
+ import { initTpImg, toCssUnit } from '../../ui/src/dom'
5
5
  import { createReactData, createInternalData, createHandleGetRowId, getCalcHeight, hasDeepKey } from './util'
6
6
  import { VxeUI } from '../../ui'
7
7
  import methods from './methods'
@@ -26,7 +26,7 @@ import keyboardMixin from '../module/keyboard/mixin'
26
26
  import validatorMixin from '../module/validator/mixin'
27
27
  import customMixin from '../module/custom/mixin'
28
28
 
29
- import type { VxeTabsConstructor, VxeTabsPrivateMethods } from 'vxe-pc-ui'
29
+ import type { VxeTabsConstructor, VxeTabsPrivateMethods, VxeComponentStyleType } from 'vxe-pc-ui'
30
30
  import type { VxeTableConstructor, VxeTablePrivateMethods, VxeTablePropTypes, TableInternalData, TableReactData, VxeTableDefines } from '../../../types'
31
31
 
32
32
  const { getConfig, getIcon, getI18n, renderer, globalResize, globalEvents, globalMixins, renderEmptyElement } = VxeUI
@@ -1232,6 +1232,20 @@ export default {
1232
1232
  }
1233
1233
  return ''
1234
1234
  },
1235
+ computeTableStyle () {
1236
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
1237
+
1238
+ const scrollbarOpts = $xeTable.computeScrollbarOpts
1239
+ const { width, height } = scrollbarOpts
1240
+ const tStys: VxeComponentStyleType = {}
1241
+ if (width) {
1242
+ tStys['--vxe-ui-table-view-scrollbar-width'] = toCssUnit(width)
1243
+ }
1244
+ if (height) {
1245
+ tStys['--vxe-ui-table-view-scrollbar-height'] = toCssUnit(height)
1246
+ }
1247
+ return tStys
1248
+ },
1235
1249
  computeTableRowExpandedList () {
1236
1250
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
1237
1251
  const reactData = $xeTable as unknown as TableReactData
@@ -2077,6 +2091,7 @@ export default {
2077
2091
  footer: slots.footerTooltip || slots['footer-tooltip']
2078
2092
  }
2079
2093
  const currTooltipSlot = tooltipStore.visible && tooltipStore.type ? tipSlots[tooltipStore.type] : null
2094
+ const tableStyle = ($xeTable as any).computeTableStyle as VxeComponentStyleType
2080
2095
  const rowDragOpts = $xeTable.computeRowDragOpts
2081
2096
  const tableTipConfig = $xeTable.computeTableTipConfig
2082
2097
  const validTipConfig = $xeTable.computeValidTipConfig
@@ -2148,6 +2163,7 @@ export default {
2148
2163
  'is--virtual-x': scrollXLoad,
2149
2164
  'is--virtual-y': scrollYLoad
2150
2165
  }],
2166
+ style: tableStyle,
2151
2167
  attrs: {
2152
2168
  spellcheck: false
2153
2169
  },
@@ -137,6 +137,8 @@ export function createInternalData (): TableInternalData {
137
137
  teleportToWrapperElem: null,
138
138
  popupToWrapperElem: null,
139
139
 
140
+ lastSTime: 0,
141
+
140
142
  inited: false,
141
143
  tooltipTimeout: null,
142
144
  initStatus: false,
@@ -167,8 +169,6 @@ export function createReactData (): TableReactData {
167
169
  scrollbarWidth: 0,
168
170
  // 横向滚动条的高度
169
171
  scrollbarHeight: 0,
170
- // 最后滚动时间戳
171
- lastScrollTime: 0,
172
172
  // 行高
173
173
  rowHeight: 0,
174
174
  // 表格父容器的高度
@@ -161,7 +161,8 @@ VxeUI.setConfig({
161
161
  // transfer: false,
162
162
  destroyOnClose: true,
163
163
  multiple: true,
164
- showIcon: true
164
+ showIcon: true,
165
+ maxHeight: 280
165
166
  },
166
167
  floatingFilterConfig: {
167
168
  // enabled: false
@@ -912,7 +912,7 @@ $btnThemeList: (
912
912
  .vxe-table--scroll-x-handle {
913
913
  overflow-y: hidden;
914
914
  overflow-x: scroll;
915
- height: 18px;
915
+ height: var(--vxe-ui-table-view-scrollbar-height);
916
916
  }
917
917
  .vxe-table--scroll-y-handle,
918
918
  .vxe-table--scroll-y-wrapper {
@@ -924,7 +924,7 @@ $btnThemeList: (
924
924
  .vxe-table--scroll-y-handle {
925
925
  overflow-y: scroll;
926
926
  overflow-x: hidden;
927
- width: 18px;
927
+ width: var(--vxe-ui-table-view-scrollbar-width);
928
928
  height: 100%;
929
929
  }
930
930
  .vxe-table--scroll-x-space {
@@ -78,6 +78,9 @@
78
78
 
79
79
  --vxe-ui-table-menu-item-width: 198px;
80
80
 
81
+ --vxe-ui-table-view-scrollbar-width: 18px;
82
+ --vxe-ui-table-view-scrollbar-height: 18px;
83
+
81
84
  --vxe-ui-table-validate-error-color: #f56c6c;
82
85
  --vxe-ui-table-validate-error-cell-background-color: rgba(245, 108,108, 0.1);
83
86
  --vxe-ui-table-validate-error-theme-normal-background-color: var(--vxe-ui-layout-background-color);