vxe-table 4.17.4 → 4.17.6

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 (55) 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/edit/hook.js +13 -11
  6. package/es/table/module/export/hook.js +5 -3
  7. package/es/table/src/cell.js +2 -2
  8. package/es/table/src/table.js +18 -2
  9. package/es/table/style.css +4 -3
  10. package/es/table/style.min.css +1 -1
  11. package/es/toolbar/src/toolbar.js +3 -3
  12. package/es/ui/index.js +1 -1
  13. package/es/ui/src/dom.js +17 -0
  14. package/es/ui/src/log.js +1 -1
  15. package/es/vxe-table/style.css +4 -3
  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 +46 -24
  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/edit/hook.js +13 -11
  24. package/lib/table/module/edit/hook.min.js +1 -1
  25. package/lib/table/module/export/hook.js +5 -3
  26. package/lib/table/module/export/hook.min.js +1 -1
  27. package/lib/table/src/cell.js +2 -2
  28. package/lib/table/src/table.js +4 -3
  29. package/lib/table/src/table.min.js +1 -1
  30. package/lib/table/style/style.css +4 -3
  31. package/lib/table/style/style.min.css +1 -1
  32. package/lib/toolbar/src/toolbar.js +3 -3
  33. package/lib/toolbar/src/toolbar.min.js +1 -1
  34. package/lib/ui/index.js +1 -1
  35. package/lib/ui/index.min.js +1 -1
  36. package/lib/ui/src/dom.js +18 -0
  37. package/lib/ui/src/dom.min.js +1 -1
  38. package/lib/ui/src/log.js +1 -1
  39. package/lib/ui/src/log.min.js +1 -1
  40. package/lib/vxe-table/style/style.css +4 -3
  41. package/lib/vxe-table/style/style.min.css +1 -1
  42. package/package.json +1 -1
  43. package/packages/table/module/edit/hook.ts +13 -11
  44. package/packages/table/module/export/hook.ts +5 -3
  45. package/packages/table/src/cell.ts +2 -2
  46. package/packages/table/src/table.ts +19 -2
  47. package/packages/toolbar/src/toolbar.ts +3 -3
  48. package/packages/ui/src/dom.ts +18 -0
  49. package/styles/components/table.scss +34 -3
  50. /package/es/{iconfont.1761699987872.ttf → iconfont.1761877377602.ttf} +0 -0
  51. /package/es/{iconfont.1761699987872.woff → iconfont.1761877377602.woff} +0 -0
  52. /package/es/{iconfont.1761699987872.woff2 → iconfont.1761877377602.woff2} +0 -0
  53. /package/lib/{iconfont.1761699987872.ttf → iconfont.1761877377602.ttf} +0 -0
  54. /package/lib/{iconfont.1761699987872.woff → iconfont.1761877377602.woff} +0 -0
  55. /package/lib/{iconfont.1761699987872.woff2 → iconfont.1761877377602.woff2} +0 -0
@@ -312,15 +312,17 @@ hooks.add('tableExportModule', {
312
312
 
313
313
  const getSeq = (cellValue: any, row: any, $rowIndex: number, column: VxeTableDefines.ColumnInfo, $columnIndex: number) => {
314
314
  const seqOpts = computeSeqOpts.value
315
- const seqMethod = seqOpts.seqMethod || (column as any).seqMethod
316
- if (seqMethod) {
317
- return seqMethod({
315
+ const seqMd = seqOpts.seqMethod || (column as any).seqMethod
316
+ if (seqMd) {
317
+ return seqMd({
318
318
  $table: $xeTable,
319
319
  row,
320
320
  rowIndex: $xeTable.getRowIndex(row),
321
+ _rowIndex: $xeTable.getVTRowIndex(row),
321
322
  $rowIndex,
322
323
  column,
323
324
  columnIndex: $xeTable.getColumnIndex(column),
325
+ _columnIndex: $xeTable.getVTColumnIndex(column),
324
326
  $columnIndex
325
327
  })
326
328
  }
@@ -662,9 +662,9 @@ export const Cell = {
662
662
  return renderCellBaseVNs(params, $table.callSlot(defaultSlot, params))
663
663
  }
664
664
  const { seq } = params
665
- const seqMethod = seqOpts.seqMethod
665
+ const seqMd = seqOpts.seqMethod
666
666
  return renderCellBaseVNs(params, [
667
- h('span', `${formatText(seqMethod ? seqMethod(params) : treeConfig ? seq : (seqOpts.startIndex || 0) + (seq as number), 1)}`)
667
+ h('span', `${formatText(seqMd ? seqMd(params) : treeConfig ? seq : (seqOpts.startIndex || 0) + (seq as number), 1)}`)
668
668
  ])
669
669
  },
670
670
  renderDeepIndexCell (params: VxeTableDefines.CellRenderBodyParams & { $table: VxeTableConstructor & VxeTablePrivateMethods }) {
@@ -1,7 +1,7 @@
1
1
  import { h, ComponentPublicInstance, reactive, ref, Ref, provide, inject, nextTick, Teleport, onActivated, onDeactivated, onBeforeUnmount, onUnmounted, watch, computed, onMounted } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
- import { initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, toCssUnit, hasControlKey } from '../../ui/src/dom'
4
+ import { initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, toCssUnit, hasControlKey, checkTargetElement } from '../../ui/src/dom'
5
5
  import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils'
6
6
  import { VxeUI } from '../../ui'
7
7
  import { createInternalData, getRowUniqueId, clearTableAllStatus, getColumnList, toFilters, hasDeepKey, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getCalcHeight, getCellRestHeight, getLastChildColumn } from './util'
@@ -62,6 +62,7 @@ export default defineVxeComponent({
62
62
  const VxeUITooltipComponent = VxeUI.getComponent('VxeTooltip')
63
63
 
64
64
  const $xeTabs = inject<(VxeTabsConstructor & VxeTabsPrivateMethods) | null>('$xeTabs', null)
65
+ const $xeParentTable = inject<(VxeTableConstructor & VxeTablePrivateMethods) | null>('$xeTable', null)
65
66
  const $xeGrid = inject<(VxeGridConstructor & VxeGridPrivateMethods) | null>('$xeGrid', null)
66
67
  const $xeGantt = inject<(VxeGanttConstructor & VxeGanttPrivateMethods) | null>('$xeGantt', null)
67
68
  const $xeGGWrapper = $xeGrid || $xeGantt
@@ -11594,6 +11595,22 @@ export default defineVxeComponent({
11594
11595
  }
11595
11596
  }
11596
11597
 
11598
+ // 展开行处理,如果展开行嵌入表格中
11599
+ if ($xeParentTable) {
11600
+ if (isRollY) {
11601
+ if (checkTargetElement(evnt.target, [leftScrollElem, bodyScrollElem, rightScrollElem], evnt.currentTarget)) {
11602
+ evnt.stopPropagation()
11603
+ return
11604
+ }
11605
+ }
11606
+ if (isRollX) {
11607
+ if (checkTargetElement(evnt.target, [headerScrollElem, bodyScrollElem, footerScrollElem], evnt.currentTarget)) {
11608
+ evnt.stopPropagation()
11609
+ return
11610
+ }
11611
+ }
11612
+ }
11613
+
11597
11614
  if (!(leftFixedWidth || rightFixedWidth || expandColumn)) {
11598
11615
  return
11599
11616
  }
@@ -12850,7 +12867,7 @@ export default defineVxeComponent({
12850
12867
  watch(dataFlag, () => {
12851
12868
  const { initStatus } = internalData
12852
12869
  const value = props.data || []
12853
- if (value && value.length >= 50000) {
12870
+ if (value && value.length >= 20000) {
12854
12871
  warnLog('vxe.error.errLargeData', ['loadData(data), reloadData(data)'])
12855
12872
  }
12856
12873
  loadTableData(value, true).then(() => {
@@ -380,7 +380,7 @@ export default defineVxeComponent({
380
380
  ? h(VxeUIButtonComponent, {
381
381
  key: index,
382
382
  ...Object.assign({}, child, {
383
- content: child.name,
383
+ content: child.content || child.name,
384
384
  options: undefined
385
385
  }),
386
386
  onClick: (eventParams) => isBtn ? btnEvent(eventParams, child) : tolEvent(eventParams, child)
@@ -424,7 +424,7 @@ export default defineVxeComponent({
424
424
  h(VxeUIButtonComponent, {
425
425
  key: `bd${item.code || index}`,
426
426
  ...Object.assign({}, item, {
427
- content: item.name,
427
+ content: item.content || item.name,
428
428
  options: undefined
429
429
  }),
430
430
  onClick: (eventParams) => btnEvent(eventParams, item)
@@ -479,7 +479,7 @@ export default defineVxeComponent({
479
479
  h(VxeUIButtonComponent, {
480
480
  key: tIndex,
481
481
  ...Object.assign({}, item, {
482
- content: item.name,
482
+ content: item.content || item.name,
483
483
  options: undefined
484
484
  }),
485
485
  onClick: (eventParams) => tolEvent(eventParams, item)
@@ -140,6 +140,24 @@ export function updateCellTitle (overflowElem: any, column: any) {
140
140
  }
141
141
  }
142
142
 
143
+ export function checkTargetElement (target: HTMLElement | EventTarget | null, exEls: (HTMLElement | null)[], endEl?: HTMLElement | EventTarget | null) {
144
+ let targetEl = target
145
+ if (!exEls || !exEls.length) {
146
+ return false
147
+ }
148
+ const [exEl1, exEl2, exEl3] = exEls
149
+ while (targetEl) {
150
+ if (exEl1 === targetEl || (exEl2 && targetEl === exEl2) || (exEl3 && targetEl === exEl3)) {
151
+ return true
152
+ }
153
+ if (endEl && targetEl === endEl) {
154
+ return false
155
+ }
156
+ targetEl = (targetEl as HTMLElement).parentElement
157
+ }
158
+ return false
159
+ }
160
+
143
161
  /**
144
162
  * 检查触发源是否属于目标节点
145
163
  */
@@ -2223,16 +2223,28 @@ $btnThemeList: (
2223
2223
  left: 50%;
2224
2224
  font-size: 12px;
2225
2225
  line-height: 1em;
2226
- transform: translate(-50%, -50%);
2226
+ transform: translate(-50%, -2px);
2227
2227
  text-align: left;
2228
2228
  z-index: 4;
2229
2229
  padding: 0 var(--vxe-ui-table-cell-padding-default);
2230
2230
  pointer-events: none;
2231
2231
  }
2232
2232
  .vxe-cell--valid-error-wrapper {
2233
+ position: relative;
2233
2234
  display: inline-block;
2234
2235
  border-radius: var(--vxe-ui-border-radius);
2235
2236
  pointer-events: auto;
2237
+ // &::before {
2238
+ // content: "";
2239
+ // position: absolute;
2240
+ // top: -0.75em;
2241
+ // left: 50%;
2242
+ // bottom: auto;
2243
+ // transform: translateX(-50%);
2244
+ // border-width: 0.5em;
2245
+ // border-style: solid;
2246
+ // border-color: transparent transparent var(--vxe-ui-table-validate-error-color) transparent;
2247
+ // }
2236
2248
  }
2237
2249
  .vxe-cell--valid-error-theme-beautify {
2238
2250
  padding: 0.2em 0.6em 0.25em 0.6em;
@@ -2267,12 +2279,26 @@ $btnThemeList: (
2267
2279
  &:last-child {
2268
2280
  .vxe-cell--valid-error-tip {
2269
2281
  bottom: calc(100%);
2270
- transform: translate(-50%, 50%);
2282
+ transform: translate(-50%, 0);
2283
+ // .vxe-cell--valid-error-wrapper {
2284
+ // &::before {
2285
+ // bottom: -0.75em;
2286
+ // top: auto;
2287
+ // border-color: var(--vxe-ui-table-validate-error-color) transparent transparent transparent;
2288
+ // }
2289
+ // }
2271
2290
  }
2272
2291
  &:first-child {
2273
2292
  .vxe-cell--valid-error-tip {
2274
2293
  bottom: auto;
2275
- transform: translate(-50%, -50%);
2294
+ transform: translate(-50%, -2px);
2295
+ // .vxe-cell--valid-error-wrapper {
2296
+ // &::before {
2297
+ // top: -0.75em;
2298
+ // bottom: auto;
2299
+ // border-color: transparent transparent var(--vxe-ui-table-validate-error-color) transparent;
2300
+ // }
2301
+ // }
2276
2302
  }
2277
2303
  }
2278
2304
  }
@@ -2308,6 +2334,11 @@ $btnThemeList: (
2308
2334
  background-color: #f56c6c;
2309
2335
  pointer-events: auto;
2310
2336
  }
2337
+ // .vxe-cell--valid-error-wrapper {
2338
+ // &::before {
2339
+ // display: none;
2340
+ // }
2341
+ // }
2311
2342
  }
2312
2343
  }
2313
2344
  }