vxe-table 4.19.13 → 4.19.15
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.
- package/dist/all.esm.js +278 -99
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/locale/lang/ar-EG.js +7 -0
- package/es/locale/lang/de-DE.js +7 -0
- package/es/locale/lang/en-US.js +7 -0
- package/es/locale/lang/es-ES.js +7 -0
- package/es/locale/lang/fr-FR.js +7 -0
- package/es/locale/lang/hu-HU.js +7 -0
- package/es/locale/lang/hy-AM.js +7 -0
- package/es/locale/lang/id-ID.js +7 -0
- package/es/locale/lang/it-IT.js +7 -0
- package/es/locale/lang/ja-JP.js +7 -0
- package/es/locale/lang/ko-KR.js +7 -0
- package/es/locale/lang/ms-MY.js +7 -0
- package/es/locale/lang/nb-NO.js +7 -0
- package/es/locale/lang/pt-BR.js +7 -0
- package/es/locale/lang/ru-RU.js +7 -0
- package/es/locale/lang/th-TH.js +7 -0
- package/es/locale/lang/ug-CN.js +7 -0
- package/es/locale/lang/uk-UA.js +7 -0
- package/es/locale/lang/uz-UZ.js +7 -0
- package/es/locale/lang/vi-VN.js +7 -0
- package/es/locale/lang/zh-CHT.js +7 -0
- package/es/locale/lang/zh-CN.js +7 -0
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/edit/hook.js +5 -5
- package/es/table/render/index.js +46 -18
- package/es/table/src/table.js +216 -72
- package/es/table/style.css +10 -5
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +10 -5
- package/es/vxe-table/style.min.css +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +93 -30
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +7 -0
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/ar-EG.umd.js +7 -0
- package/lib/locale/lang/de-DE.js +7 -0
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/de-DE.umd.js +7 -0
- package/lib/locale/lang/en-US.js +7 -0
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +7 -0
- package/lib/locale/lang/es-ES.js +7 -0
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +7 -0
- package/lib/locale/lang/fr-FR.js +7 -0
- package/lib/locale/lang/fr-FR.min.js +1 -1
- package/lib/locale/lang/fr-FR.umd.js +7 -0
- package/lib/locale/lang/hu-HU.js +7 -0
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +7 -0
- package/lib/locale/lang/hy-AM.js +7 -0
- package/lib/locale/lang/hy-AM.min.js +1 -1
- package/lib/locale/lang/hy-AM.umd.js +7 -0
- package/lib/locale/lang/id-ID.js +7 -0
- package/lib/locale/lang/id-ID.min.js +1 -1
- package/lib/locale/lang/id-ID.umd.js +7 -0
- package/lib/locale/lang/it-IT.js +7 -0
- package/lib/locale/lang/it-IT.min.js +1 -1
- package/lib/locale/lang/it-IT.umd.js +7 -0
- package/lib/locale/lang/ja-JP.js +7 -0
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +7 -0
- package/lib/locale/lang/ko-KR.js +7 -0
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +7 -0
- package/lib/locale/lang/ms-MY.js +7 -0
- package/lib/locale/lang/ms-MY.min.js +1 -1
- package/lib/locale/lang/ms-MY.umd.js +7 -0
- package/lib/locale/lang/nb-NO.js +7 -0
- package/lib/locale/lang/nb-NO.min.js +1 -1
- package/lib/locale/lang/nb-NO.umd.js +7 -0
- package/lib/locale/lang/pt-BR.js +7 -0
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +7 -0
- package/lib/locale/lang/ru-RU.js +7 -0
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +7 -0
- package/lib/locale/lang/th-TH.js +7 -0
- package/lib/locale/lang/th-TH.min.js +1 -1
- package/lib/locale/lang/th-TH.umd.js +7 -0
- package/lib/locale/lang/ug-CN.js +7 -0
- package/lib/locale/lang/ug-CN.min.js +1 -1
- package/lib/locale/lang/ug-CN.umd.js +7 -0
- package/lib/locale/lang/uk-UA.js +7 -0
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +7 -0
- package/lib/locale/lang/uz-UZ.js +7 -0
- package/lib/locale/lang/uz-UZ.min.js +1 -1
- package/lib/locale/lang/uz-UZ.umd.js +7 -0
- package/lib/locale/lang/vi-VN.js +7 -0
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/vi-VN.umd.js +7 -0
- package/lib/locale/lang/zh-CHT.js +7 -0
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CHT.umd.js +7 -0
- package/lib/locale/lang/zh-CN.js +7 -0
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +7 -0
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/edit/hook.js +5 -0
- package/lib/table/module/edit/hook.min.js +1 -1
- package/lib/table/render/index.js +62 -18
- package/lib/table/render/index.min.js +1 -1
- package/lib/table/src/table.js +18 -11
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +10 -5
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-table/style/style.css +10 -5
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/locale/lang/ar-EG.ts +7 -0
- package/packages/locale/lang/de-DE.ts +7 -0
- package/packages/locale/lang/en-US.ts +7 -0
- package/packages/locale/lang/es-ES.ts +7 -0
- package/packages/locale/lang/fr-FR.ts +7 -0
- package/packages/locale/lang/hu-HU.ts +7 -0
- package/packages/locale/lang/hy-AM.ts +7 -0
- package/packages/locale/lang/id-ID.ts +7 -0
- package/packages/locale/lang/it-IT.ts +7 -0
- package/packages/locale/lang/ja-JP.ts +7 -0
- package/packages/locale/lang/ko-KR.ts +7 -0
- package/packages/locale/lang/ms-MY.ts +7 -0
- package/packages/locale/lang/nb-NO.ts +7 -0
- package/packages/locale/lang/pt-BR.ts +7 -0
- package/packages/locale/lang/ru-RU.ts +7 -0
- package/packages/locale/lang/th-TH.ts +7 -0
- package/packages/locale/lang/ug-CN.ts +7 -0
- package/packages/locale/lang/uk-UA.ts +7 -0
- package/packages/locale/lang/uz-UZ.ts +7 -0
- package/packages/locale/lang/vi-VN.ts +7 -0
- package/packages/locale/lang/zh-CHT.ts +7 -0
- package/packages/locale/lang/zh-CN.ts +7 -0
- package/packages/table/module/edit/hook.ts +5 -5
- package/packages/table/render/index.ts +46 -18
- package/packages/table/src/table.ts +218 -72
- package/styles/components/table.scss +8 -4
- /package/es/{iconfont.1781229243647.ttf → iconfont.1781675408206.ttf} +0 -0
- /package/es/{iconfont.1781229243647.woff → iconfont.1781675408206.woff} +0 -0
- /package/es/{iconfont.1781229243647.woff2 → iconfont.1781675408206.woff2} +0 -0
- /package/lib/{iconfont.1781229243647.ttf → iconfont.1781675408206.ttf} +0 -0
- /package/lib/{iconfont.1781229243647.woff → iconfont.1781675408206.woff} +0 -0
- /package/lib/{iconfont.1781229243647.woff2 → iconfont.1781675408206.woff2} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
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
|
-
import XEUtils from 'xe-utils'
|
|
3
|
+
import XEUtils, { isNaN } from 'xe-utils'
|
|
4
4
|
import { initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, wheelScrollTopTo, wheelScrollLeftTo, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, toCssUnit, hasControlKey, checkTargetElement, hasEventInputTarget } from '../../ui/src/dom'
|
|
5
5
|
import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils'
|
|
6
6
|
import { VxeUI } from '../../ui'
|
|
@@ -686,22 +686,32 @@ export default defineVxeComponent({
|
|
|
686
686
|
const { tableFullColumn } = internalData
|
|
687
687
|
const { updateColFlag } = reactData
|
|
688
688
|
const editDirtyOpts = computeEditDirtyOpts.value
|
|
689
|
-
const { includeFields, excludeFields } = editDirtyOpts
|
|
689
|
+
const { extraFields, includeFields, excludeFields } = editDirtyOpts
|
|
690
690
|
const kpFields: string[] = []
|
|
691
691
|
if (updateColFlag) {
|
|
692
692
|
if (includeFields && includeFields.length) {
|
|
693
693
|
return includeFields
|
|
694
694
|
}
|
|
695
|
-
const
|
|
695
|
+
const excludeFdMaps: Record<string, number> = {}
|
|
696
696
|
if (excludeFields && excludeFields.length) {
|
|
697
697
|
excludeFields.forEach(field => {
|
|
698
|
-
|
|
698
|
+
excludeFdMaps[field] = 1
|
|
699
|
+
})
|
|
700
|
+
}
|
|
701
|
+
const addFdMaps: Record<string, number> = {}
|
|
702
|
+
if (extraFields && extraFields.length) {
|
|
703
|
+
extraFields.forEach(field => {
|
|
704
|
+
if (!addFdMaps[field]) {
|
|
705
|
+
addFdMaps[field] = 1
|
|
706
|
+
kpFields.push(field)
|
|
707
|
+
}
|
|
699
708
|
})
|
|
700
709
|
}
|
|
701
710
|
for (let i = 0; i < tableFullColumn.length; i++) {
|
|
702
711
|
const column = tableFullColumn[i]
|
|
703
712
|
const { field, type, editRender, cellRender } = column
|
|
704
|
-
if (field && !type && (editRender || cellRender) && !
|
|
713
|
+
if (field && !type && (editRender || cellRender) && !addFdMaps[field] && !excludeFdMaps[field]) {
|
|
714
|
+
addFdMaps[field] = 1
|
|
705
715
|
kpFields.push(field)
|
|
706
716
|
}
|
|
707
717
|
}
|
|
@@ -2204,25 +2214,62 @@ export default defineVxeComponent({
|
|
|
2204
2214
|
}
|
|
2205
2215
|
}
|
|
2206
2216
|
|
|
2217
|
+
const updateAfterTreeIndex = () => {
|
|
2218
|
+
const { fullDataRowIdData, fullAllDataRowIdData, afterFullData, afterTreeFullData } = internalData
|
|
2219
|
+
const treeOpts = computeTreeOpts.value
|
|
2220
|
+
const { transform, mapChildrenField } = treeOpts
|
|
2221
|
+
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
2222
|
+
const fullMaps: Record<string, any> = {}
|
|
2223
|
+
let rowNum = 0
|
|
2224
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
2225
|
+
XEUtils.eachTree(afterTreeFullData, (row, index, items, path) => {
|
|
2226
|
+
const rowid = handleGetRowId(row)
|
|
2227
|
+
const rowRest = fullAllDataRowIdData[rowid]
|
|
2228
|
+
const seq = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('')
|
|
2229
|
+
if (rowRest) {
|
|
2230
|
+
rowRest.seq = seq
|
|
2231
|
+
rowRest._seq = rowNum
|
|
2232
|
+
rowRest.treeIndex = index
|
|
2233
|
+
rowRest._tIndex = rowNum
|
|
2234
|
+
} else {
|
|
2235
|
+
const rest = { row, rowid, _seq: rowNum, seq, index: -1, $index: -1, _index: -1, treeIndex: -1, _tIndex: rowNum, items: [], parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }
|
|
2236
|
+
fullAllDataRowIdData[rowid] = rest
|
|
2237
|
+
fullDataRowIdData[rowid] = rest
|
|
2238
|
+
}
|
|
2239
|
+
rowNum++
|
|
2240
|
+
fullMaps[rowid] = row
|
|
2241
|
+
}, { children: transform ? mapChildrenField : childrenField })
|
|
2242
|
+
if (transform) {
|
|
2243
|
+
afterFullData.forEach((row, index) => {
|
|
2244
|
+
const rowid = handleGetRowId(row)
|
|
2245
|
+
const rowRest = fullAllDataRowIdData[rowid]
|
|
2246
|
+
if (rowRest) {
|
|
2247
|
+
rowRest._index = index
|
|
2248
|
+
}
|
|
2249
|
+
})
|
|
2250
|
+
}
|
|
2251
|
+
internalData.afterFullRowMaps = fullMaps
|
|
2252
|
+
}
|
|
2253
|
+
|
|
2207
2254
|
const updateAfterListIndex = () => {
|
|
2208
|
-
const { treeConfig } = props
|
|
2209
2255
|
const { afterFullData, fullDataRowIdData, fullAllDataRowIdData } = internalData
|
|
2210
2256
|
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
2211
2257
|
const fullMaps: Record<string, any> = {}
|
|
2258
|
+
let rowNum = 0
|
|
2212
2259
|
afterFullData.forEach((row, index) => {
|
|
2213
2260
|
const rowid = handleGetRowId(row)
|
|
2214
2261
|
const rowRest = fullAllDataRowIdData[rowid]
|
|
2215
2262
|
const seq = index + 1
|
|
2216
2263
|
if (rowRest) {
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
}
|
|
2264
|
+
rowRest.seq = seq
|
|
2265
|
+
rowRest._seq = rowNum
|
|
2220
2266
|
rowRest._index = index
|
|
2221
2267
|
} else {
|
|
2222
|
-
const rest = { row, rowid, seq, index: -1, $index: -1, _index: index, treeIndex: -1, _tIndex: -1, items: [], parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }
|
|
2268
|
+
const rest = { row, rowid, _seq: rowNum, seq, index: -1, $index: -1, _index: index, treeIndex: -1, _tIndex: -1, items: [], parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }
|
|
2223
2269
|
fullAllDataRowIdData[rowid] = rest
|
|
2224
2270
|
fullDataRowIdData[rowid] = rest
|
|
2225
2271
|
}
|
|
2272
|
+
rowNum++
|
|
2226
2273
|
fullMaps[rowid] = row
|
|
2227
2274
|
})
|
|
2228
2275
|
internalData.afterFullRowMaps = fullMaps
|
|
@@ -2234,44 +2281,8 @@ export default defineVxeComponent({
|
|
|
2234
2281
|
*/
|
|
2235
2282
|
const updateAfterDataIndex = () => {
|
|
2236
2283
|
const { treeConfig } = props
|
|
2237
|
-
const { fullDataRowIdData, fullAllDataRowIdData, afterFullData, afterTreeFullData } = internalData
|
|
2238
|
-
const treeOpts = computeTreeOpts.value
|
|
2239
|
-
const { transform } = treeOpts
|
|
2240
|
-
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
2241
|
-
const fullMaps: Record<string, any> = {}
|
|
2242
2284
|
if (treeConfig) {
|
|
2243
|
-
|
|
2244
|
-
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
2245
|
-
XEUtils.eachTree(afterTreeFullData, (row, index, items, path) => {
|
|
2246
|
-
const rowid = handleGetRowId(row)
|
|
2247
|
-
const rowRest = fullAllDataRowIdData[rowid]
|
|
2248
|
-
const seq = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('')
|
|
2249
|
-
if (rowRest) {
|
|
2250
|
-
rowRest.seq = seq
|
|
2251
|
-
rowRest.treeIndex = index
|
|
2252
|
-
rowRest._tIndex = _treeIndex
|
|
2253
|
-
} else {
|
|
2254
|
-
const rest = { row, rowid, seq, index: -1, $index: -1, _index: -1, treeIndex: -1, _tIndex: _treeIndex, items: [], parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }
|
|
2255
|
-
fullAllDataRowIdData[rowid] = rest
|
|
2256
|
-
fullDataRowIdData[rowid] = rest
|
|
2257
|
-
}
|
|
2258
|
-
_treeIndex++
|
|
2259
|
-
fullMaps[rowid] = row
|
|
2260
|
-
}, { children: transform ? treeOpts.mapChildrenField : childrenField })
|
|
2261
|
-
if (transform) {
|
|
2262
|
-
afterFullData.forEach((row, index) => {
|
|
2263
|
-
const rowid = handleGetRowId(row)
|
|
2264
|
-
const rowRest = fullAllDataRowIdData[rowid]
|
|
2265
|
-
const seq = index + 1
|
|
2266
|
-
if (rowRest) {
|
|
2267
|
-
if (!treeConfig) {
|
|
2268
|
-
rowRest.seq = seq
|
|
2269
|
-
}
|
|
2270
|
-
rowRest._index = index
|
|
2271
|
-
}
|
|
2272
|
-
})
|
|
2273
|
-
}
|
|
2274
|
-
internalData.afterFullRowMaps = fullMaps
|
|
2285
|
+
updateAfterTreeIndex()
|
|
2275
2286
|
} else {
|
|
2276
2287
|
updateAfterListIndex()
|
|
2277
2288
|
}
|
|
@@ -3493,9 +3504,12 @@ export default defineVxeComponent({
|
|
|
3493
3504
|
})
|
|
3494
3505
|
}
|
|
3495
3506
|
|
|
3496
|
-
const
|
|
3507
|
+
const defaultMinRunDelay = 50
|
|
3497
3508
|
|
|
3498
|
-
const handleLazyRecalculate = (reFull: boolean, reWidth: boolean, reHeight: boolean
|
|
3509
|
+
const handleLazyRecalculate = (reFull: boolean, reWidth: boolean, reHeight: boolean, options?: {
|
|
3510
|
+
minRunDelay?: number // 多少毫秒内至少执行一次
|
|
3511
|
+
}) => {
|
|
3512
|
+
const minRunDelay = (options ? options.minRunDelay : defaultMinRunDelay) || defaultMinRunDelay
|
|
3499
3513
|
return new Promise<void>(resolve => {
|
|
3500
3514
|
const $xeGanttView = internalData.xeGanttView
|
|
3501
3515
|
const { customStore } = reactData
|
|
@@ -3521,6 +3535,7 @@ export default defineVxeComponent({
|
|
|
3521
3535
|
}
|
|
3522
3536
|
if (rceTimeout) {
|
|
3523
3537
|
clearTimeout(rceTimeout)
|
|
3538
|
+
// 多少毫秒内至少执行一次
|
|
3524
3539
|
if (rceRunTime && rceRunTime + minRunDelay < Date.now()) {
|
|
3525
3540
|
resolve(
|
|
3526
3541
|
handleRecalculateStyle(reFull, reWidth, reHeight)
|
|
@@ -3548,17 +3563,17 @@ export default defineVxeComponent({
|
|
|
3548
3563
|
})
|
|
3549
3564
|
}
|
|
3550
3565
|
|
|
3551
|
-
let resizePending = false
|
|
3552
|
-
|
|
3553
3566
|
const handleResizeEvent = () => {
|
|
3554
|
-
if (
|
|
3567
|
+
if (internalData.rsePending) {
|
|
3555
3568
|
return
|
|
3556
3569
|
}
|
|
3557
|
-
|
|
3558
|
-
handleLazyRecalculate(true, true, true
|
|
3559
|
-
|
|
3570
|
+
internalData.rsePending = true
|
|
3571
|
+
handleLazyRecalculate(true, true, true, {
|
|
3572
|
+
minRunDelay: 200
|
|
3573
|
+
}).then(() => {
|
|
3574
|
+
internalData.rsePending = false
|
|
3560
3575
|
}).catch(() => {
|
|
3561
|
-
|
|
3576
|
+
internalData.rsePending = false
|
|
3562
3577
|
})
|
|
3563
3578
|
}
|
|
3564
3579
|
|
|
@@ -5181,7 +5196,7 @@ export default defineVxeComponent({
|
|
|
5181
5196
|
XEUtils.eachTree(rows, (childRow, index, items, path, parentItem, nodes) => {
|
|
5182
5197
|
const rowid = getRowid($xeTable, childRow)
|
|
5183
5198
|
const parentRow = parentItem || parentRest.row
|
|
5184
|
-
const rest = { row: childRow, rowid, seq: -1, index, _index: -1, $index: -1, treeIndex: -1, _tIndex: -1, items, parent: parentRow, level: parentLevel + nodes.length, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }
|
|
5199
|
+
const rest = { row: childRow, rowid, _seq: -1, seq: -1, index, _index: -1, $index: -1, treeIndex: -1, _tIndex: -1, items, parent: parentRow, level: parentLevel + nodes.length, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }
|
|
5185
5200
|
fullDataRowIdData[rowid] = rest
|
|
5186
5201
|
fullAllDataRowIdData[rowid] = rest
|
|
5187
5202
|
}, { children: childrenField })
|
|
@@ -9566,19 +9581,21 @@ export default defineVxeComponent({
|
|
|
9566
9581
|
|
|
9567
9582
|
const idMaps: Record<string, boolean> = {}
|
|
9568
9583
|
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable)
|
|
9584
|
+
let rowNum = 0
|
|
9569
9585
|
const handleRowCache = (row: any, index: number, items: any, currIndex: number, parentRow: any, rowid: string, level: number, seq: string | number) => {
|
|
9570
9586
|
let rowRest = fullAllDataRowIdMaps[rowid]
|
|
9571
9587
|
if (idMaps[rowid]) {
|
|
9572
9588
|
errLog('vxe.error.repeatKey', [currKeyField, rowid])
|
|
9573
9589
|
}
|
|
9574
9590
|
if (!rowRest) {
|
|
9575
|
-
rowRest = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, _tIndex: -1, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }
|
|
9591
|
+
rowRest = { row, rowid, _seq: -1, seq, index: -1, _index: -1, $index: -1, treeIndex: index, _tIndex: -1, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }
|
|
9576
9592
|
fullDataRowIdMaps[rowid] = rowRest
|
|
9577
9593
|
fullAllDataRowIdMaps[rowid] = rowRest
|
|
9578
9594
|
}
|
|
9579
9595
|
rowRest.treeLoaded = false
|
|
9580
9596
|
rowRest.expandLoaded = false
|
|
9581
9597
|
|
|
9598
|
+
rowRest._seq = rowNum++
|
|
9582
9599
|
rowRest.row = row
|
|
9583
9600
|
rowRest.items = items
|
|
9584
9601
|
rowRest.parent = parentRow
|
|
@@ -9594,6 +9611,7 @@ export default defineVxeComponent({
|
|
|
9594
9611
|
rowExpandedMaps[rowid] = row
|
|
9595
9612
|
}
|
|
9596
9613
|
|
|
9614
|
+
rowNum++
|
|
9597
9615
|
idMaps[rowid] = true
|
|
9598
9616
|
fullDataRowIdMaps[rowid] = rowRest
|
|
9599
9617
|
fullAllDataRowIdMaps[rowid] = rowRest
|
|
@@ -10875,31 +10893,162 @@ export default defineVxeComponent({
|
|
|
10875
10893
|
const { treeConfig } = props
|
|
10876
10894
|
const { row } = params
|
|
10877
10895
|
const { isRowGroupStatus } = reactData
|
|
10878
|
-
const { afterFullData } = internalData
|
|
10896
|
+
const { fullAllDataRowIdData, afterFullData, afterTreeFullData, afterGroupFullData } = internalData
|
|
10879
10897
|
const checkboxOpts = computeCheckboxOpts.value
|
|
10880
|
-
const
|
|
10898
|
+
const aggregateOpts = computeAggregateOpts.value
|
|
10899
|
+
const treeOpts = computeTreeOpts.value
|
|
10900
|
+
const { checkMethod, trigger, checkStrictly } = checkboxOpts
|
|
10881
10901
|
if (trigger === 'manual') {
|
|
10882
10902
|
return
|
|
10883
10903
|
}
|
|
10884
10904
|
evnt.stopPropagation()
|
|
10885
|
-
|
|
10905
|
+
|
|
10906
|
+
if (checkboxOpts.isShiftKey && evnt.shiftKey) {
|
|
10907
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable)
|
|
10886
10908
|
const checkboxRecords = $xeTable.getCheckboxRecords()
|
|
10887
|
-
|
|
10888
|
-
|
|
10889
|
-
|
|
10890
|
-
|
|
10891
|
-
|
|
10909
|
+
let currSeq = -1
|
|
10910
|
+
let currRow: any = null
|
|
10911
|
+
const currRowid = handleGetRowId(row)
|
|
10912
|
+
const rowRest = fullAllDataRowIdData[currRowid]
|
|
10913
|
+
if (rowRest) {
|
|
10914
|
+
currRow = rowRest.row
|
|
10915
|
+
currSeq = rowRest._seq
|
|
10916
|
+
}
|
|
10917
|
+
if (currRow && checkboxRecords.length) {
|
|
10918
|
+
let rangeRows: any[] = []
|
|
10919
|
+
let firstSeq = -1
|
|
10920
|
+
let firstRow: any = null
|
|
10921
|
+
let firstRowid = ''
|
|
10922
|
+
let lastSeq = -1
|
|
10923
|
+
let lastRow: any = null
|
|
10924
|
+
let lastRowid = ''
|
|
10925
|
+
// 根据序号取出范围最小/最大的行
|
|
10926
|
+
const selectMaps: Record<string, any> = {}
|
|
10927
|
+
checkboxRecords.forEach(item => {
|
|
10928
|
+
const rowid = handleGetRowId(item)
|
|
10929
|
+
const rowRest = fullAllDataRowIdData[rowid]
|
|
10930
|
+
if (rowRest) {
|
|
10931
|
+
if (!firstRow || firstSeq > rowRest._seq) {
|
|
10932
|
+
firstRowid = rowRest.rowid
|
|
10933
|
+
firstRow = rowRest.row
|
|
10934
|
+
firstSeq = rowRest._seq
|
|
10935
|
+
}
|
|
10936
|
+
if (!lastRow || lastSeq < rowRest._seq) {
|
|
10937
|
+
lastRowid = rowRest.rowid
|
|
10938
|
+
lastRow = rowRest.row
|
|
10939
|
+
lastSeq = rowRest._seq
|
|
10940
|
+
}
|
|
10941
|
+
}
|
|
10942
|
+
selectMaps[rowid] = item
|
|
10943
|
+
})
|
|
10944
|
+
// 如果已选只有一条并选择当前则跳过
|
|
10945
|
+
if (firstRow && lastRow && (checkboxRecords.length > 1 || currRowid !== firstRowid) && (Math.abs(firstSeq - lastSeq) > 1 || Math.abs(currSeq - firstSeq) > 1 || Math.abs(currSeq - lastSeq) > 1)) {
|
|
10946
|
+
// 树与分组
|
|
10947
|
+
if (treeConfig || isRowGroupStatus) {
|
|
10948
|
+
const { transform } = treeOpts
|
|
10949
|
+
const childrenField = treeOpts.children || treeOpts.childrenField
|
|
10950
|
+
const iteratorChildField = treeConfig ? (transform ? treeOpts.mapChildrenField : childrenField) : aggregateOpts.mapChildrenField as string
|
|
10951
|
+
let isMatchFirst = false
|
|
10952
|
+
let matchStartRowid = ''
|
|
10953
|
+
let matchEndRowid = ''
|
|
10954
|
+
|
|
10955
|
+
const handleGetChildRowid = (rowid: string, isLast: 0 | 1): string => {
|
|
10956
|
+
const rowRest = fullAllDataRowIdData[rowid]
|
|
10957
|
+
if (rowRest) {
|
|
10958
|
+
const item = rowRest.row
|
|
10959
|
+
const childList = item[iteratorChildField]
|
|
10960
|
+
if (childList && childList.length) {
|
|
10961
|
+
const targetRow = isLast ? XEUtils.last(childList) : XEUtils.first(childList)
|
|
10962
|
+
return handleGetChildRowid(handleGetRowId(targetRow), isLast)
|
|
10963
|
+
}
|
|
10964
|
+
}
|
|
10965
|
+
return rowid
|
|
10966
|
+
}
|
|
10967
|
+
|
|
10968
|
+
const handleGetSelectParentRowid = (rowid: string): string => {
|
|
10969
|
+
const rowRest = fullAllDataRowIdData[rowid]
|
|
10970
|
+
if (rowRest) {
|
|
10971
|
+
const parentItem = rowRest.parent
|
|
10972
|
+
if (parentItem) {
|
|
10973
|
+
const parentRowid = handleGetRowId(parentItem)
|
|
10974
|
+
if (selectMaps[parentRowid]) {
|
|
10975
|
+
return handleGetSelectParentRowid(parentRowid)
|
|
10976
|
+
}
|
|
10977
|
+
}
|
|
10978
|
+
}
|
|
10979
|
+
return rowid
|
|
10980
|
+
}
|
|
10981
|
+
|
|
10982
|
+
const handleGetRootRow = (row: string): VxeTableDefines.RowCacheItem | null => {
|
|
10983
|
+
const rowid = handleGetRowId(row)
|
|
10984
|
+
if (rowid) {
|
|
10985
|
+
const rest = fullAllDataRowIdData[rowid]
|
|
10986
|
+
if (rest) {
|
|
10987
|
+
return rest.parent ? handleGetRootRow(rest.parent) : rest
|
|
10988
|
+
}
|
|
10989
|
+
}
|
|
10990
|
+
return null
|
|
10991
|
+
}
|
|
10992
|
+
|
|
10993
|
+
if (currSeq < firstSeq) {
|
|
10994
|
+
matchStartRowid = handleGetChildRowid(currRowid, 0)
|
|
10995
|
+
matchEndRowid = handleGetChildRowid(firstRowid, 1)
|
|
10996
|
+
} else {
|
|
10997
|
+
if (currSeq > lastSeq) {
|
|
10998
|
+
matchStartRowid = handleGetSelectParentRowid(lastRowid)
|
|
10999
|
+
} else {
|
|
11000
|
+
matchStartRowid = handleGetChildRowid(firstRowid, 0)
|
|
11001
|
+
}
|
|
11002
|
+
matchEndRowid = handleGetChildRowid(currRowid, 1)
|
|
11003
|
+
}
|
|
11004
|
+
|
|
11005
|
+
const handleRangeRow = (item: any) => {
|
|
11006
|
+
const rowid = handleGetRowId(item)
|
|
11007
|
+
const childList = item[iteratorChildField]
|
|
11008
|
+
if (!isMatchFirst && rowid === matchStartRowid) {
|
|
11009
|
+
isMatchFirst = true
|
|
11010
|
+
}
|
|
11011
|
+
// 如果是父子关联,则排除父节点
|
|
11012
|
+
if (isMatchFirst && (checkStrictly || !childList || !childList.length)) {
|
|
11013
|
+
rangeRows.push(item)
|
|
11014
|
+
}
|
|
11015
|
+
// break
|
|
11016
|
+
return rowid === matchEndRowid
|
|
11017
|
+
}
|
|
11018
|
+
if (treeConfig) {
|
|
11019
|
+
const matchStartRowRest = fullAllDataRowIdData[matchStartRowid]
|
|
11020
|
+
const firstRootRowRest = matchStartRowRest ? handleGetRootRow(matchStartRowRest.row) : null
|
|
11021
|
+
if (firstRootRowRest) {
|
|
11022
|
+
// 优化查找复杂度
|
|
11023
|
+
XEUtils.findTree(afterTreeFullData.slice(firstRootRowRest.treeIndex), handleRangeRow, { children: iteratorChildField })
|
|
11024
|
+
} else {
|
|
11025
|
+
XEUtils.findTree(afterTreeFullData, handleRangeRow, { children: iteratorChildField })
|
|
11026
|
+
}
|
|
11027
|
+
} else {
|
|
11028
|
+
XEUtils.findTree(afterGroupFullData, handleRangeRow, { children: iteratorChildField })
|
|
11029
|
+
}
|
|
11030
|
+
} else {
|
|
11031
|
+
const _currRowIndex = $xeTable.getVTRowIndex(currRow)
|
|
11032
|
+
const _firstRowIndex = $xeTable.getVTRowIndex(firstRow)
|
|
11033
|
+
const _lastRowIndex = $xeTable.getVTRowIndex(lastRow)
|
|
11034
|
+
if (_currRowIndex < _firstRowIndex) {
|
|
11035
|
+
rangeRows = afterFullData.slice(_currRowIndex, _firstRowIndex + 1)
|
|
11036
|
+
} else if (_currRowIndex > _lastRowIndex) {
|
|
11037
|
+
rangeRows = afterFullData.slice(_lastRowIndex, _currRowIndex + 1)
|
|
11038
|
+
} else {
|
|
11039
|
+
rangeRows = afterFullData.slice(_firstRowIndex, _currRowIndex + 1)
|
|
11040
|
+
}
|
|
11041
|
+
}
|
|
10892
11042
|
$xeTable.setAllCheckboxRow(false)
|
|
10893
|
-
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1)
|
|
10894
11043
|
nextTick(() => {
|
|
10895
11044
|
handleCheckedCheckboxRow(rangeRows, true, false)
|
|
10896
11045
|
})
|
|
10897
11046
|
dispatchEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt)
|
|
10898
|
-
return
|
|
10899
11047
|
}
|
|
10900
11048
|
}
|
|
10901
11049
|
}
|
|
10902
|
-
|
|
11050
|
+
|
|
11051
|
+
if (!checkMethod || checkMethod({ $table: $xeTable, row })) {
|
|
10903
11052
|
$xeTable.handleBatchSelectRows([row], checked)
|
|
10904
11053
|
$xeTable.checkSelectionStatus()
|
|
10905
11054
|
dispatchEvent('checkbox-change', Object.assign({
|
|
@@ -14474,9 +14623,6 @@ export default defineVxeComponent({
|
|
|
14474
14623
|
if (props.editConfig && editOpts.activeMethod) {
|
|
14475
14624
|
warnLog('vxe.error.delProp', ['edit-config.activeMethod', 'edit-config.beforeEditMethod'])
|
|
14476
14625
|
}
|
|
14477
|
-
if (props.treeConfig && checkboxOpts.isShiftKey) {
|
|
14478
|
-
errLog('vxe.error.reqSupportProp', ['tree-config', 'checkbox-config.isShiftKey=false'])
|
|
14479
|
-
}
|
|
14480
14626
|
if (checkboxOpts.halfField) {
|
|
14481
14627
|
warnLog('vxe.error.delProp', ['checkbox-config.halfField', 'checkbox-config.indeterminateField'])
|
|
14482
14628
|
}
|
|
@@ -213,7 +213,8 @@ $btnThemeList: (
|
|
|
213
213
|
.vxe-date-picker,
|
|
214
214
|
.vxe-date-range-picker,
|
|
215
215
|
.vxe-number-input,
|
|
216
|
-
.vxe-ico-picker
|
|
216
|
+
.vxe-ico-picker,
|
|
217
|
+
.vxe-cascader {
|
|
217
218
|
width: 100%;
|
|
218
219
|
}
|
|
219
220
|
}
|
|
@@ -236,7 +237,8 @@ $btnThemeList: (
|
|
|
236
237
|
& > .vxe-date-picker,
|
|
237
238
|
& > .vxe-date-range-picker,
|
|
238
239
|
& > .vxe-number-input,
|
|
239
|
-
& > .vxe-ico-picker
|
|
240
|
+
& > .vxe-ico-picker,
|
|
241
|
+
.vxe-cascader {
|
|
240
242
|
width: 100%;
|
|
241
243
|
}
|
|
242
244
|
& > .vxe-row-group--tree-node,
|
|
@@ -251,7 +253,8 @@ $btnThemeList: (
|
|
|
251
253
|
.vxe-date-picker,
|
|
252
254
|
.vxe-date-range-picker,
|
|
253
255
|
.vxe-number-input,
|
|
254
|
-
.vxe-ico-picker
|
|
256
|
+
.vxe-ico-picker,
|
|
257
|
+
.vxe-cascader {
|
|
255
258
|
width: 100%;
|
|
256
259
|
}
|
|
257
260
|
}
|
|
@@ -272,7 +275,8 @@ $btnThemeList: (
|
|
|
272
275
|
& > .vxe-date-picker,
|
|
273
276
|
& > .vxe-date-range-picker,
|
|
274
277
|
& > .vxe-number-input,
|
|
275
|
-
& > .vxe-ico-picker
|
|
278
|
+
& > .vxe-ico-picker,
|
|
279
|
+
& > .vxe-cascader {
|
|
276
280
|
width: 100%;
|
|
277
281
|
}
|
|
278
282
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|