1
0
mirror of synced 2025-12-08 22:58:56 +08:00

优化渲染

This commit is contained in:
xuliangzhan
2023-07-18 08:25:22 +08:00
parent e801ee3bc9
commit 6b5f2816c5
8 changed files with 25 additions and 23 deletions

View File

@@ -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",

View File

@@ -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>,

View File

@@ -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)

View File

@@ -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

View File

@@ -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) {

View File

@@ -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
View File

@@ -152,6 +152,10 @@ export interface InputMethods {
* 失去焦点
*/
blur(): Promise<any>
/**
* 选中内容
*/
select(): Promise<any>
/**
* 弹出面板,用于带下拉面板的功能,
*/

7
types/table.d.ts vendored
View File

@@ -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