From ad99b6784d3ef2b1160468c7bb7b11526ed4e018 Mon Sep 17 00:00:00 2001 From: xuliangzhan Date: Thu, 7 Nov 2024 17:30:00 +0800 Subject: [PATCH] releases 4.8.5 --- package.json | 4 +- packages/grid/src/grid.ts | 2 +- packages/table/module/custom/hook.ts | 139 ++++++++- packages/table/module/custom/panel.ts | 336 ++++++++++----------- packages/table/src/table.ts | 36 +-- styles/components/table-module/custom.scss | 26 +- 6 files changed, 325 insertions(+), 218 deletions(-) diff --git a/package.json b/package.json index b61bd0bfb6..634534afc1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vxe-table", - "version": "4.8.4", + "version": "4.8.5", "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...", "scripts": { "update": "npm install --legacy-peer-deps", @@ -28,7 +28,7 @@ "style": "lib/style.css", "typings": "types/index.d.ts", "dependencies": { - "vxe-pc-ui": "^4.2.44" + "vxe-pc-ui": "^4.2.45" }, "devDependencies": { "@types/resize-observer-browser": "^0.1.11", diff --git a/packages/grid/src/grid.ts b/packages/grid/src/grid.ts index e4ec465bf9..6024429242 100644 --- a/packages/grid/src/grid.ts +++ b/packages/grid/src/grid.ts @@ -810,7 +810,7 @@ export default defineComponent({ $xeTable.openExport(btnParams) break case 'reset_custom': - return $xeTable.resetColumn(true) + return $xeTable.resetCustom(true) case '_init': case 'reload': case 'query': { diff --git a/packages/table/module/custom/hook.ts b/packages/table/module/custom/hook.ts index 558cc52a05..704f89d512 100644 --- a/packages/table/module/custom/hook.ts +++ b/packages/table/module/custom/hook.ts @@ -4,7 +4,7 @@ import XEUtils from 'xe-utils' import type { TableCustomMethods, TableCustomPrivateMethods, VxeColumnPropTypes, VxeTableDefines } from '../../../../types' -const tableCustomMethodKeys: (keyof TableCustomMethods)[] = ['openCustom', 'closeCustom'] +const tableCustomMethodKeys: (keyof TableCustomMethods)[] = ['openCustom', 'closeCustom', 'saveCustom', 'cancelCustom', 'resetCustom', 'toggleCustomAllCheckbox', 'setCustomAllCheckbox'] VxeUI.hooks.add('tableCustomModule', { setupTable ($xeTable) { @@ -22,7 +22,7 @@ VxeUI.hooks.add('tableCustomModule', { if (el) { tableHeight = el.clientHeight - 28 } - customStore.maxHeight = Math.max(4, tableHeight) + customStore.maxHeight = Math.max(88, tableHeight) } const openCustom = () => { @@ -63,9 +63,142 @@ VxeUI.hooks.add('tableCustomModule', { return nextTick() } + const saveCustom = () => { + const { customColumnList } = reactData + const customOpts = computeCustomOpts.value + const { allowVisible, allowSort, allowFixed, allowResizable } = customOpts + XEUtils.eachTree(customColumnList, (column, index, items, path, parent) => { + if (parent) { + // 更新子列信息 + column.fixed = parent.fixed + } else { + if (allowSort) { + const sortIndex = index + 1 + column.renderSortNumber = sortIndex + } + if (allowFixed) { + column.fixed = column.renderFixed + } + } + if (allowResizable) { + if (column.renderVisible && (!column.children || column.children.length)) { + if (column.renderResizeWidth !== column.renderWidth) { + column.resizeWidth = column.renderResizeWidth + column.renderWidth = column.renderResizeWidth + } + } + } + if (allowVisible) { + column.visible = column.renderVisible + } + }) + return $xeTable.saveCustomStore('confirm') + } + + const cancelCustom = () => { + const { customColumnList, customStore } = reactData + const { oldSortMaps, oldFixedMaps, oldVisibleMaps } = customStore + const customOpts = computeCustomOpts.value + const { allowVisible, allowSort, allowFixed, allowResizable } = customOpts + XEUtils.eachTree(customColumnList, column => { + const colid = column.getKey() + const visible = !!oldVisibleMaps[colid] + const fixed = oldFixedMaps[colid] || '' + if (allowVisible) { + column.renderVisible = visible + column.visible = visible + } + if (allowFixed) { + column.renderFixed = fixed + column.fixed = fixed + } + if (allowSort) { + column.renderSortNumber = oldSortMaps[colid] || 0 + } + if (allowResizable) { + column.renderResizeWidth = column.renderWidth + } + }, { children: 'children' }) + return nextTick() + } + + const setCustomAllCheckbox = (checked: boolean) => { + const { customStore } = reactData + const { customColumnList } = reactData + const customOpts = computeCustomOpts.value + const { checkMethod, visibleMethod } = customOpts + const isAll = !!checked + if (customOpts.immediate) { + XEUtils.eachTree(customColumnList, (column) => { + if (visibleMethod && !visibleMethod({ column })) { + return + } + if (checkMethod && !checkMethod({ column })) { + return + } + column.visible = isAll + column.renderVisible = isAll + column.halfVisible = false + }) + customStore.isAll = isAll + $xeTable.handleCustom() + $xeTable.saveCustomStore('update:visible') + } else { + XEUtils.eachTree(customColumnList, (column) => { + if (visibleMethod && !visibleMethod({ column })) { + return + } + if (checkMethod && !checkMethod({ column })) { + return + } + column.renderVisible = isAll + column.halfVisible = false + }) + customStore.isAll = isAll + } + $xeTable.checkCustomStatus() + return nextTick() + } + const customMethods: TableCustomMethods = { openCustom, - closeCustom + closeCustom, + saveCustom, + cancelCustom, + resetCustom (options) { + const { collectColumn } = internalData + const customOpts = computeCustomOpts.value + const { checkMethod } = customOpts + const opts: VxeTableDefines.VxeTableCustomStorageObj = Object.assign({ + visible: true, + resizable: options === true, + fixed: options === true, + sort: options === true + }, options) + XEUtils.eachTree(collectColumn, (column) => { + if (opts.resizable) { + column.resizeWidth = 0 + } + if (opts.fixed) { + column.fixed = column.defaultFixed + } + if (opts.sort) { + column.renderSortNumber = column.sortNumber + } + if (!checkMethod || checkMethod({ column })) { + column.visible = column.defaultVisible + } + column.renderResizeWidth = column.renderWidth + }) + $xeTable.saveCustomStore('reset') + return $xeTable.handleCustom() + }, + toggleCustomAllCheckbox () { + const { customStore } = reactData + const isAll = !customStore.isAll + return setCustomAllCheckbox(isAll) + }, + setCustomAllCheckbox } const checkCustomStatus = () => { diff --git a/packages/table/module/custom/panel.ts b/packages/table/module/custom/panel.ts index d9b9417d9f..5e5fd61628 100644 --- a/packages/table/module/custom/panel.ts +++ b/packages/table/module/custom/panel.ts @@ -8,7 +8,7 @@ import XEUtils from 'xe-utils' import type { VxeModalComponent, VxeDrawerComponent, VxeButtonComponent, VxeRadioGroupComponent, VxeTooltipComponent, VxeInputComponent, VxeButtonEvents } from 'vxe-pc-ui' import type { VxeTableDefines, VxeTablePrivateMethods, VxeTableConstructor, VxeTableMethods, VxeColumnPropTypes } from '../../../../types' -const { getI18n, getIcon } = VxeUI +const { getI18n, getIcon, renderEmptyElement } = VxeUI export default defineComponent({ name: 'TableCustomPanel', @@ -56,37 +56,9 @@ export default defineComponent({ } const confirmCustomEvent: VxeButtonEvents.Click = ({ $event }) => { - const { customColumnList } = reactData - const customOpts = computeCustomOpts.value - const { allowVisible, allowSort, allowFixed, allowResizable } = customOpts - XEUtils.eachTree(customColumnList, (column, index, items, path, parent) => { - if (parent) { - // 更新子列信息 - column.fixed = parent.fixed - } else { - if (allowSort) { - const sortIndex = index + 1 - column.renderSortNumber = sortIndex - } - if (allowFixed) { - column.fixed = column.renderFixed - } - } - if (allowResizable) { - if (column.renderVisible && (!column.children || column.children.length)) { - if (column.renderResizeWidth !== column.renderWidth) { - column.resizeWidth = column.renderResizeWidth - column.renderWidth = column.renderResizeWidth - } - } - } - if (allowVisible) { - column.visible = column.renderVisible - } - }) + $xeTable.saveCustom() $xeTable.closeCustom() $xeTable.emitCustomEvent('confirm', $event) - $xeTable.saveCustomStore('confirm') } const cancelCloseEvent: VxeButtonEvents.Click = ({ $event }) => { @@ -95,36 +67,13 @@ export default defineComponent({ } const cancelCustomEvent: VxeButtonEvents.Click = ({ $event }) => { - const { customStore } = props - const { customColumnList } = reactData - const { oldSortMaps, oldFixedMaps, oldVisibleMaps } = customStore - const customOpts = computeCustomOpts.value - const { allowVisible, allowSort, allowFixed, allowResizable } = customOpts - XEUtils.eachTree(customColumnList, column => { - const colid = column.getKey() - const visible = !!oldVisibleMaps[colid] - const fixed = oldFixedMaps[colid] || '' - if (allowVisible) { - column.renderVisible = visible - column.visible = visible - } - if (allowFixed) { - column.renderFixed = fixed - column.fixed = fixed - } - if (allowSort) { - column.renderSortNumber = oldSortMaps[colid] || 0 - } - if (allowResizable) { - column.renderResizeWidth = column.renderWidth - } - }, { children: 'children' }) + $xeTable.cancelCustom() $xeTable.closeCustom() $xeTable.emitCustomEvent('cancel', $event) } const handleResetCustomEvent = (evnt: Event) => { - $xeTable.resetColumn(true) + $xeTable.resetCustom(true) $xeTable.closeCustom() $xeTable.emitCustomEvent('reset', evnt) } @@ -214,40 +163,7 @@ export default defineComponent({ } const allOptionEvent = () => { - const { customStore } = props - const { customColumnList } = reactData - const customOpts = computeCustomOpts.value - const { checkMethod, visibleMethod } = customOpts - const isAll = !customStore.isAll - if (customOpts.immediate) { - XEUtils.eachTree(customColumnList, (column) => { - if (visibleMethod && !visibleMethod({ column })) { - return - } - if (checkMethod && !checkMethod({ column })) { - return - } - column.visible = isAll - column.renderVisible = isAll - column.halfVisible = false - }) - customStore.isAll = isAll - $xeTable.handleCustom() - $xeTable.saveCustomStore('update:visible') - } else { - XEUtils.eachTree(customColumnList, (column) => { - if (visibleMethod && !visibleMethod({ column })) { - return - } - if (checkMethod && !checkMethod({ column })) { - return - } - column.renderVisible = isAll - column.halfVisible = false - }) - customStore.isAll = isAll - } - $xeTable.checkCustomStatus() + $xeTable.toggleCustomAllCheckbox() } const sortMousedownEvent = (evnt: DragEvent) => { @@ -259,6 +175,7 @@ export default defineComponent({ trEl.draggable = true dragColumnRef.value = column addClass(trEl, 'active--drag-origin') + updateDropHint(evnt) } const sortMouseupEvent = (evnt: MouseEvent) => { @@ -373,13 +290,29 @@ export default defineComponent({ const { maxHeight } = customStore const { checkMethod, visibleMethod, allowVisible, allowSort, allowFixed, trigger, placement } = customOpts const isMaxFixedColumn = computeIsMaxFixedColumn.value + const slots = customOpts.slots || {} + const headerSlot = slots.header + const topSlot = slots.top + const bottomSlot = slots.bottom + const defaultSlot = slots.default + const footerSlot = slots.footer const colVNs: VNode[] = [] const customWrapperOns: any = {} + const isAllChecked = customStore.isAll + const isAllIndeterminate = customStore.isIndeterminate + const dragColumn = dragColumnRef.value // hover 触发 if (trigger === 'hover') { customWrapperOns.onMouseenter = handleWrapperMouseenterEvent customWrapperOns.onMouseleave = handleWrapperMouseleaveEvent } + const params = { + $table: $xeTable, + $grid: $xeTable.xegrid, + columns: customColumnList, + isAllChecked, + isAllIndeterminate + } XEUtils.eachTree(customColumnList, (column, index, items, path, parent) => { const isVisible = visibleMethod ? visibleMethod({ column }) : true if (isVisible) { @@ -486,9 +419,6 @@ export default defineComponent({ ) } }) - const isAllChecked = customStore.isAll - const isAllIndeterminate = customStore.isIndeterminate - const dragColumn = dragColumnRef.value return h('div', { ref: refElem, key: 'simple', @@ -502,45 +432,65 @@ export default defineComponent({ : {} }, customStore.visible ? [ - h('ul', { + h('div', { class: 'vxe-table-custom--header' - }, [ - h('li', { - class: 'vxe-table-custom--option' - }, [ - allowVisible - ? h('div', { - class: ['vxe-table-custom--checkbox-option', { - 'is--checked': isAllChecked, - 'is--indeterminate': isAllIndeterminate - }], - title: getI18n('vxe.table.allTitle'), - onClick: allOptionEvent + }, headerSlot + ? $xeTable.callSlot(headerSlot, params) + : [ + h('ul', { + class: 'vxe-table-custom--panel-list' }, [ - h('span', { - class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)] - }), - h('span', { - class: 'vxe-checkbox--label' - }, getI18n('vxe.toolbar.customAll')) + h('li', { + class: 'vxe-table-custom--option' + }, [ + allowVisible + ? h('div', { + class: ['vxe-table-custom--checkbox-option', { + 'is--checked': isAllChecked, + 'is--indeterminate': isAllIndeterminate + }], + title: getI18n('vxe.table.allTitle'), + onClick: allOptionEvent + }, [ + h('span', { + class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)] + }), + h('span', { + class: 'vxe-checkbox--label' + }, getI18n('vxe.toolbar.customAll')) + ]) + : h('span', { + class: 'vxe-checkbox--label' + }, getI18n('vxe.table.customTitle')) + ]) ]) - : h('span', { - class: 'vxe-checkbox--label' - }, getI18n('vxe.table.customTitle')) - ]) - ]), + ]), h('div', { ref: bodyElemRef, - class: 'vxe-table-custom--list-wrapper' + class: 'vxe-table-custom--body' }, [ - h(TransitionGroup, { - class: 'vxe-table-custom--body', - name: 'vxe-table-custom--list', - tag: 'ul', - ...customWrapperOns - }, { - default: () => colVNs - }), + topSlot + ? h('div', { + class: 'vxe-table-custom--panel-top' + }, $xeTable.callSlot(topSlot, params)) + : renderEmptyElement($xeTable), + defaultSlot + ? h('div', { + class: 'vxe-table-custom--panel-body' + }, $xeTable.callSlot(defaultSlot, params)) + : h(TransitionGroup, { + class: 'vxe-table-custom--panel-list', + name: 'vxe-table-custom--list', + tag: 'ul', + ...customWrapperOns + }, { + default: () => colVNs + }), + bottomSlot + ? h('div', { + class: 'vxe-table-custom--panel-bottom' + }, $xeTable.callSlot(bottomSlot, params)) + : renderEmptyElement($xeTable), h('div', { ref: dragHintElemRef, class: 'vxe-table-custom-popup--drag-hint' @@ -549,40 +499,46 @@ export default defineComponent({ customOpts.showFooter ? h('div', { class: 'vxe-table-custom--footer' - }, [ - VxeUIButtonComponent - ? h(VxeUIButtonComponent, { - mode: 'text', - content: customOpts.resetButtonText || getI18n('vxe.table.customRestore'), - onClick: resetCustomEvent - }) - : createCommentVNode(), - customOpts.immediate - ? (VxeUIButtonComponent - ? h(VxeUIButtonComponent, { - mode: 'text', - content: customOpts.closeButtonText || getI18n('vxe.table.customClose'), - onClick: cancelCloseEvent - }) - : createCommentVNode()) - : (VxeUIButtonComponent - ? h(VxeUIButtonComponent, { - mode: 'text', - content: customOpts.cancelButtonText || getI18n('vxe.table.customCancel'), - onClick: cancelCustomEvent - }) - : createCommentVNode()), - customOpts.immediate - ? createCommentVNode() - : (VxeUIButtonComponent - ? h(VxeUIButtonComponent, { - mode: 'text', - status: 'primary', - content: customOpts.confirmButtonText || getI18n('vxe.table.customConfirm'), - onClick: confirmCustomEvent - }) - : createCommentVNode()) - ]) + }, footerSlot + ? $xeTable.callSlot(footerSlot, params) + : [ + h('div', { + class: 'vxe-table-custom--footer-buttons' + }, [ + VxeUIButtonComponent + ? h(VxeUIButtonComponent, { + mode: 'text', + content: customOpts.resetButtonText || getI18n('vxe.table.customRestore'), + onClick: resetCustomEvent + }) + : createCommentVNode(), + customOpts.immediate + ? (VxeUIButtonComponent + ? h(VxeUIButtonComponent, { + mode: 'text', + content: customOpts.closeButtonText || getI18n('vxe.table.customClose'), + onClick: cancelCloseEvent + }) + : createCommentVNode()) + : (VxeUIButtonComponent + ? h(VxeUIButtonComponent, { + mode: 'text', + content: customOpts.cancelButtonText || getI18n('vxe.table.customCancel'), + onClick: cancelCustomEvent + }) + : createCommentVNode()), + customOpts.immediate + ? createCommentVNode() + : (VxeUIButtonComponent + ? h(VxeUIButtonComponent, { + mode: 'text', + status: 'primary', + content: customOpts.confirmButtonText || getI18n('vxe.table.customConfirm'), + onClick: confirmCustomEvent + }) + : createCommentVNode()) + ]) + ]) : null ] : []) @@ -599,7 +555,23 @@ export default defineComponent({ const modalOpts = Object.assign({}, modalOptions) const drawerOpts = Object.assign({}, drawerOptions) const isMaxFixedColumn = computeIsMaxFixedColumn.value + const slots = customOpts.slots || {} + const headerSlot = slots.header + const topSlot = slots.top + const bottomSlot = slots.bottom + const defaultSlot = slots.default + const footerSlot = slots.footer const trVNs: VNode[] = [] + const isAllChecked = customStore.isAll + const isAllIndeterminate = customStore.isIndeterminate + const dragColumn = dragColumnRef.value + const params = { + $table: $xeTable, + $grid: $xeTable.xegrid, + columns: customColumnList, + isAllChecked, + isAllIndeterminate + } XEUtils.eachTree(customColumnList, (column, index, items, path, parent) => { const isVisible = visibleMethod ? visibleMethod({ column }) : true if (isVisible) { @@ -732,15 +704,20 @@ export default defineComponent({ ) } }) - const isAllChecked = customStore.isAll - const isAllIndeterminate = customStore.isIndeterminate - const dragColumn = dragColumnRef.value - const scopedSlots = { + const scopedSlots: Record = { default: () => { + if (defaultSlot) { + return $xeTable.callSlot(defaultSlot, params) + } return h('div', { ref: bodyElemRef, class: 'vxe-table-custom-popup--body' }, [ + topSlot + ? h('div', { + class: 'vxe-table-custom-popup--table-top' + }, $xeTable.callSlot(topSlot, params)) + : renderEmptyElement($xeTable), h('div', { class: 'vxe-table-custom-popup--table-wrapper' }, [ @@ -748,35 +725,25 @@ export default defineComponent({ h('colgroup', {}, [ allowVisible ? h('col', { - style: { - width: '80px' - } + class: 'vxe-table-custom-popup--table-col-seq' }) : createCommentVNode(), allowSort ? h('col', { - style: { - width: '80px' - } + class: 'vxe-table-custom-popup--table-col-sort' }) : createCommentVNode(), h('col', { - style: { - minWidth: '120px' - } + class: 'vxe-table-custom-popup--table-col-title' }), allowResizable ? h('col', { - style: { - width: '140px' - } + class: 'vxe-table-custom-popup--table-col-width' }) : createCommentVNode(), allowFixed ? h('col', { - style: { - width: '200px' - } + class: 'vxe-table-custom-popup--table-col-fixed' }) : createCommentVNode() ]), @@ -831,7 +798,7 @@ export default defineComponent({ ]) ]), h(TransitionGroup, { - class: 'vxe-table-custom--body', + class: 'vxe-table-custom--panel-list', tag: 'tbody', name: 'vxe-table-custom--list' }, { @@ -839,6 +806,11 @@ export default defineComponent({ }) ]) ]), + bottomSlot + ? h('div', { + class: 'vxe-table-custom-popup--table-bottom' + }, $xeTable.callSlot(bottomSlot, params)) + : renderEmptyElement($xeTable), h('div', { ref: dragHintElemRef, class: 'vxe-table-custom-popup--drag-hint' @@ -846,6 +818,9 @@ export default defineComponent({ ]) }, footer: () => { + if (footerSlot) { + return $xeTable.callSlot(footerSlot, params) + } return h('div', { class: 'vxe-table-custom-popup--footer' }, [ @@ -871,6 +846,9 @@ export default defineComponent({ ]) } } + if (headerSlot) { + scopedSlots.header = () => $xeTable.callSlot(headerSlot, params) + } if (mode === 'drawer') { return VxeUIDrawerComponent ? h(VxeUIDrawerComponent, { diff --git a/packages/table/src/table.ts b/packages/table/src/table.ts index 613185847c..d757dcfd5a 100644 --- a/packages/table/src/table.ts +++ b/packages/table/src/table.ts @@ -2271,7 +2271,9 @@ export default defineComponent({ Promise.resolve( loadMethod({ $table: $xeTable, row }) ).then((childRecords: any) => { - rowRest.treeLoaded = true + if (rowRest) { + rowRest.treeLoaded = true + } if (treeExpandLazyLoadedMaps[rowid]) { delete treeExpandLazyLoadedMaps[rowid] } @@ -2297,7 +2299,9 @@ export default defineComponent({ } }).catch(() => { const { treeExpandLazyLoadedMaps } = reactData - rowRest.treeLoaded = false + if (rowRest) { + rowRest.treeLoaded = false + } if (treeExpandLazyLoadedMaps[rowid]) { delete treeExpandLazyLoadedMaps[rowid] } @@ -3721,32 +3725,8 @@ export default defineComponent({ * 如果已关联工具栏,则会同步更新 */ resetColumn (options) { - const { collectColumn } = internalData - const customOpts = computeCustomOpts.value - const { checkMethod } = customOpts - const opts: VxeTableDefines.VxeTableCustomStorageObj = Object.assign({ - visible: true, - resizable: options === true, - fixed: options === true, - sort: options === true - }, options) - XEUtils.eachTree(collectColumn, (column) => { - if (opts.resizable) { - column.resizeWidth = 0 - } - if (opts.fixed) { - column.fixed = column.defaultFixed - } - if (opts.sort) { - column.renderSortNumber = column.sortNumber - } - if (!checkMethod || checkMethod({ column })) { - column.visible = column.defaultVisible - } - column.renderResizeWidth = column.renderWidth - }) - $xeTable.saveCustomStore('reset') - return tablePrivateMethods.handleCustom() + warnLog('vxe.error.delFunc', ['resetColumn', 'resetCustom']) + return $xeTable.resetCustom(options) }, /** * 刷新列信息 diff --git a/styles/components/table-module/custom.scss b/styles/components/table-module/custom.scss index ffaea3c474..fccca837e0 100644 --- a/styles/components/table-module/custom.scss +++ b/styles/components/table-module/custom.scss @@ -94,15 +94,14 @@ } } -.vxe-table-custom--list-wrapper { +.vxe-table-custom--body { display: block; flex-grow: 1; overflow-x: hidden; overflow-y: auto; } -.vxe-table-custom--header, -.vxe-table-custom--body { +.vxe-table-custom--panel-list { list-style-type: none; margin: 0; padding: 0; @@ -130,7 +129,7 @@ user-select: none; } -.vxe-table-custom--body { +.vxe-table-custom--panel-list { padding: 0.2em 0; .vxe-table-custom--checkbox-option { &:hover { @@ -139,7 +138,8 @@ } } -.vxe-table-custom--footer { +.vxe-table-custom--footer-buttons { + width: 100%; display: flex; flex-direction: row; flex-shrink: 0; @@ -390,3 +390,19 @@ margin-left: 5px; cursor: help; } + +.vxe-table-custom-popup--table-col-seq { + width: 80px; +} +.vxe-table-custom-popup--table-col-sort { + width: 80px; +} +.vxe-table-custom-popup--table-col-title { + min-width: 120px; +} +.vxe-table-custom-popup--table-col-width { + width: 140px; +} +.vxe-table-custom-popup--table-col-fixed { + width: 200px; +} \ No newline at end of file