优化渲染
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "vxe-table",
|
||||
"version": "4.5.0-beta.8",
|
||||
"version": "4.5.0-beta.10",
|
||||
"description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器等...",
|
||||
"scripts": {
|
||||
"update": "npm install --legacy-peer-deps",
|
||||
|
||||
@@ -31,7 +31,7 @@ export const formItemProps = {
|
||||
default: null
|
||||
},
|
||||
showTitle: {
|
||||
type: Boolean,
|
||||
type: Boolean as PropType<VxeFormItemPropTypes.ShowTitle>,
|
||||
default: true
|
||||
},
|
||||
className: [String, Function] as PropType<VxeFormItemPropTypes.ClassName>,
|
||||
|
||||
@@ -460,7 +460,9 @@ export default defineComponent({
|
||||
|
||||
const validateField = (fieldOrItem: VxeFormItemPropTypes.Field | VxeFormItemPropTypes.Field[] | VxeFormDefines.ItemInfo | VxeFormDefines.ItemInfo[], callback: any) => {
|
||||
let fields: any[] = []
|
||||
if (!XEUtils.isArray(fieldOrItem)) {
|
||||
if (XEUtils.isArray(fieldOrItem)) {
|
||||
fields = fieldOrItem
|
||||
} else {
|
||||
fields = [fieldOrItem]
|
||||
}
|
||||
return beginValidate(fields.map(field => handleFieldOrItem($xeform, field) as VxeFormDefines.ItemInfo), '', callback)
|
||||
|
||||
@@ -2296,6 +2296,12 @@ export default defineComponent({
|
||||
reactData.isActivated = false
|
||||
return nextTick()
|
||||
},
|
||||
select () {
|
||||
const inputElem = refInputTarget.value
|
||||
inputElem.select()
|
||||
reactData.isActivated = false
|
||||
return nextTick()
|
||||
},
|
||||
showPanel,
|
||||
hidePanel,
|
||||
updatePlacement
|
||||
|
||||
@@ -1840,12 +1840,12 @@ export default defineComponent({
|
||||
const handleCheckedAllCheckboxRow = (value: boolean, isForce?: boolean) => {
|
||||
const { treeConfig } = props
|
||||
const { selectCheckboxRows } = reactData
|
||||
const { afterFullData, checkboxReserveRowMap } = internalData
|
||||
const { afterFullData, afterFullRowMaps, checkboxReserveRowMap } = internalData
|
||||
const treeOpts = computeTreeOpts.value
|
||||
const checkboxOpts = computeCheckboxOpts.value
|
||||
const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts
|
||||
let selectRows: any[] = []
|
||||
const beforeSelection = treeConfig ? [] : selectCheckboxRows.filter((row) => $xetable.findRowIndexOf(afterFullData, row) === -1)
|
||||
const beforeSelection = treeConfig ? [] : selectCheckboxRows.filter((row) => !afterFullRowMaps[getRowid($xetable, row)])
|
||||
if (checkStrictly) {
|
||||
reactData.isAllSelected = value
|
||||
} else {
|
||||
@@ -2897,7 +2897,7 @@ export default defineComponent({
|
||||
*/
|
||||
revertData (rows: any, field) {
|
||||
const { keepSource } = props
|
||||
const { tableSourceData, tableFullData } = internalData
|
||||
const { tableSourceData, sourceDataRowIdData } = internalData
|
||||
if (!keepSource) {
|
||||
if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
|
||||
warnLog('vxe.error.reqProp', ['keep-source'])
|
||||
@@ -2915,8 +2915,8 @@ export default defineComponent({
|
||||
if (targetRows.length) {
|
||||
targetRows.forEach((row: any) => {
|
||||
if (!tableMethods.isInsertByRow(row)) {
|
||||
const rowIndex = $xetable.findRowIndexOf(tableFullData, row)
|
||||
const oRow = tableSourceData[rowIndex]
|
||||
const rowid = getRowid($xetable, row)
|
||||
const oRow = sourceDataRowIdData[rowid]
|
||||
if (oRow && row) {
|
||||
if (field) {
|
||||
XEUtils.set(row, field, XEUtils.clone(XEUtils.get(oRow, field), true))
|
||||
@@ -2993,9 +2993,8 @@ export default defineComponent({
|
||||
if (!fullDataRowIdData[rowid]) {
|
||||
return false
|
||||
}
|
||||
const oldRest = sourceDataRowIdData[rowid]
|
||||
if (oldRest) {
|
||||
const oRow = oldRest.row
|
||||
const oRow = sourceDataRowIdData[rowid]
|
||||
if (oRow) {
|
||||
if (arguments.length > 1) {
|
||||
return !eqCellValue(oRow, row, field as string)
|
||||
}
|
||||
@@ -4944,10 +4943,7 @@ export default defineComponent({
|
||||
rowid = getRowUniqueId()
|
||||
XEUtils.set(row, rowkey, rowid)
|
||||
}
|
||||
sourceDataRowIdData[rowid] = {
|
||||
row,
|
||||
rowid
|
||||
}
|
||||
sourceDataRowIdData[rowid] = row
|
||||
}
|
||||
// 源数据缓存
|
||||
if (treeConfig && !treeOpts.transform) {
|
||||
|
||||
@@ -47,8 +47,7 @@ const GlobalConfig: VXETableGlobalConfig = {
|
||||
enterable: true
|
||||
},
|
||||
validConfig: {
|
||||
showMessage: true,
|
||||
message: 'default'
|
||||
showMessage: true
|
||||
},
|
||||
columnConfig: {
|
||||
maxFixedSize: 4
|
||||
|
||||
4
types/input.d.ts
vendored
4
types/input.d.ts
vendored
@@ -152,6 +152,10 @@ export interface InputMethods {
|
||||
* 失去焦点
|
||||
*/
|
||||
blur(): Promise<any>
|
||||
/**
|
||||
* 选中内容
|
||||
*/
|
||||
select(): Promise<any>
|
||||
/**
|
||||
* 弹出面板,用于带下拉面板的功能,
|
||||
*/
|
||||
|
||||
7
types/table.d.ts
vendored
7
types/table.d.ts
vendored
@@ -1073,12 +1073,7 @@ export interface TableInternalData<D = VxeTableDataRow> {
|
||||
}
|
||||
}
|
||||
}
|
||||
sourceDataRowIdData: {
|
||||
[key: string]: {
|
||||
row: D
|
||||
rowid: string
|
||||
}
|
||||
}
|
||||
sourceDataRowIdData: Record<string, D>
|
||||
fullDataRowIdData: {
|
||||
[key: string]: {
|
||||
row: D
|
||||
|
||||
Reference in New Issue
Block a user