diff --git a/examples/views/icon/Icon.vue b/examples/views/icon/Icon.vue
index d0c0af68b..c19e1f2f6 100644
--- a/examples/views/icon/Icon.vue
+++ b/examples/views/icon/Icon.vue
@@ -25,7 +25,7 @@ export default defineComponent({
setup () {
return {
prefixClass: 'vxe-icon-',
- iconList: ['time', 'feedback', 'lightning', 'cloudy', 'heavy-rain', 'moon', 'sunny', 'location', 'location-fill', 'microphone-fill', 'microphone', 'share', 'share-fill', 'flag', 'flag-fill', 'platform', 'goods-fill', 'goods', 'funnel-clear', 'envelope', 'envelope-open-fill', 'envelope-open', 'envelope-fill', 'message-fill', 'chat', 'chat-fill', 'send', 'send-fill', 'user', 'user-fill', 'wechat', 'alipay', 'indicator', 'file-excel', 'file-pdf', 'file-image', 'file-markdown', 'file-ppt', 'file-word', 'file-zip', 'file-txt', 'refresh', 'checkbox-unchecked', 'information', 'info-circle-fill', 'info-circle', 'chart-radar', 'chart-bar-x', 'repeat', 'voice-fill', 'voice', 'flow-branch', 'comment', 'folder', 'folder-open', 'picture', 'picture-fill', 'bell', 'bell-fill', 'undo', 'home', 'home-fill', 'checkbox-checked', 'checkbox-indeterminate', 'fullscreen', 'minimize', 'print', 'upload', 'download', 'cloud-upload', 'cloud-download', 'spinner', 'close', 'custom-column', 'edit', 'zoom-in', 'caret-down', 'caret-up', 'caret-right', 'caret-left', 'square-checked-fill', 'square-close', 'square-down', 'square-left', 'square-caret-right', 'square-minus', 'square-plus', 'square-right', 'square-up', 'square-checked', 'square-down-fill', 'square-minus-fill', 'square-close-fill', 'square-left-fill', 'square-caret-right-fill', 'square-up-fill', 'square-right-fill', 'square-plus-fill', 'square-plus-square', 'square-fill', 'square-square', 'sort-alpha-desc', 'sort-alpha-asc', 'sort-numeric-asc', 'sort-numeric-desc', 'star-fill', 'star', 'star-half', 'lock-fill', 'unlock-fill', 'question', 'exclamation', 'ellipsis-h', 'ellipsis-v', 'save', 'setting', 'setting-fill', 'link', 'sort', 'chart-pie', 'chart-line', 'swap', 'num-list', 'copy', 'company', 'swap-right', 'swap-left', 'table', 'merge-cells', 'paste', 'cut', 'lock', 'unlock', 'chart-bar-y', 'fixed-left-fill', 'fixed-left', 'fixed-right-fill', 'fixed-right', 'swap-down', 'swap-up', 'square', 'check', 'question-circle-fill', 'error-circle-fill', 'delete', 'dot', 'success-circle', 'delete-fill', 'minus', 'maximize', 'question-circle', 'warning-circle', 'warnion-circle-fill', 'eye-fill', 'search', 'funnel', 'eye-fill-close', 'search-zoom-in', 'arrow-right', 'arrow-left', 'arrow-up', 'calendar', 'arrow-down', 'warning-triangle', 'add', 'arrow-double-left', 'arrow-double-right', 'menu', 'warning-triangle-fill', 'error-circle', 'zoom-out', 'success-circle-fill', 'radio-checked', 'radio-unchecked'],
+ iconList: ['end-page', 'home-page', 'time', 'feedback', 'lightning', 'cloudy', 'heavy-rain', 'moon', 'sunny', 'location', 'location-fill', 'microphone-fill', 'microphone', 'share', 'share-fill', 'flag', 'flag-fill', 'platform', 'goods-fill', 'goods', 'funnel-clear', 'envelope', 'envelope-open-fill', 'envelope-open', 'envelope-fill', 'message-fill', 'chat', 'chat-fill', 'send', 'send-fill', 'user', 'user-fill', 'wechat', 'alipay', 'indicator', 'file-excel', 'file-pdf', 'file-image', 'file-markdown', 'file-ppt', 'file-word', 'file-zip', 'file-txt', 'refresh', 'checkbox-unchecked', 'information', 'info-circle-fill', 'info-circle', 'chart-radar', 'chart-bar-x', 'repeat', 'voice-fill', 'voice', 'flow-branch', 'comment', 'folder', 'folder-open', 'picture', 'picture-fill', 'bell', 'bell-fill', 'undo', 'home', 'home-fill', 'checkbox-checked', 'checkbox-indeterminate', 'fullscreen', 'minimize', 'print', 'upload', 'download', 'cloud-upload', 'cloud-download', 'spinner', 'close', 'custom-column', 'edit', 'zoom-in', 'caret-down', 'caret-up', 'caret-right', 'caret-left', 'square-checked-fill', 'square-close', 'square-down', 'square-left', 'square-caret-right', 'square-minus', 'square-plus', 'square-right', 'square-up', 'square-checked', 'square-down-fill', 'square-minus-fill', 'square-close-fill', 'square-left-fill', 'square-caret-right-fill', 'square-up-fill', 'square-right-fill', 'square-plus-fill', 'square-plus-square', 'square-fill', 'square-square', 'sort-alpha-desc', 'sort-alpha-asc', 'sort-numeric-asc', 'sort-numeric-desc', 'star-fill', 'star', 'star-half', 'lock-fill', 'unlock-fill', 'question', 'exclamation', 'ellipsis-h', 'ellipsis-v', 'save', 'setting', 'setting-fill', 'link', 'sort', 'chart-pie', 'chart-line', 'swap', 'num-list', 'copy', 'company', 'swap-right', 'swap-left', 'table', 'merge-cells', 'paste', 'cut', 'lock', 'unlock', 'chart-bar-y', 'fixed-left-fill', 'fixed-left', 'fixed-right-fill', 'fixed-right', 'swap-down', 'swap-up', 'square', 'check', 'question-circle-fill', 'error-circle-fill', 'delete', 'dot', 'success-circle', 'delete-fill', 'minus', 'maximize', 'question-circle', 'warning-circle', 'warnion-circle-fill', 'eye-fill', 'search', 'funnel', 'eye-fill-close', 'search-zoom-in', 'arrow-right', 'arrow-left', 'arrow-up', 'calendar', 'arrow-down', 'warning-triangle', 'add', 'arrow-double-left', 'arrow-double-right', 'menu', 'warning-triangle-fill', 'error-circle', 'zoom-out', 'success-circle-fill', 'radio-checked', 'radio-unchecked'],
demoCodes: [
`
diff --git a/examples/views/pager/Pager.vue b/examples/views/pager/Pager.vue
index 87f272411..5e5b11446 100644
--- a/examples/views/pager/Pager.vue
+++ b/examples/views/pager/Pager.vue
@@ -67,7 +67,7 @@
v-model:page-size="page6.pageSize"
:total="page6.totalResult"
:page-sizes="[10, 20, 100, {label: '大量数据', value: 1000}, {label: '全量数据', value: -1}]"
- :layouts="['PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total']">
+ :layouts="['Home', 'PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'End', 'Sizes', 'FullJump', 'Total']">
diff --git a/helper/vetur/attributes.json b/helper/vetur/attributes.json
index 0547797fa..f29581a8f 100644
--- a/helper/vetur/attributes.json
+++ b/helper/vetur/attributes.json
@@ -855,6 +855,10 @@
"type": "any",
"description": "缩放配置项"
},
+ "vxe-grid/layouts": {
+ "type": "string[]",
+ "description": "自定义布局"
+ },
"vxe-toolbar/size": {
"type": "string",
"description": "尺寸"
diff --git a/helper/vetur/tags.json b/helper/vetur/tags.json
index 5114dbb74..7b006f596 100644
--- a/helper/vetur/tags.json
+++ b/helper/vetur/tags.json
@@ -241,7 +241,8 @@
"toolbar-config",
"pager-config",
"proxy-config",
- "zoom-config"
+ "zoom-config",
+ "layouts"
],
"description": "配置式表格"
},
diff --git a/package.json b/package.json
index 3d9876695..1c077c3fd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "vxe-table",
- "version": "4.5.18",
+ "version": "4.5.19",
"description": "一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...",
"scripts": {
"update": "npm install --legacy-peer-deps",
@@ -29,7 +29,7 @@
"typings": "types/index.d.ts",
"dependencies": {
"dom-zindex": "^1.0.1",
- "xe-utils": "^3.5.15"
+ "xe-utils": "^3.5.18"
},
"devDependencies": {
"@types/resize-observer-browser": "^0.1.7",
diff --git a/packages/filter/src/panel.ts b/packages/filter/src/panel.ts
index 7e554c6a8..595d06749 100644
--- a/packages/filter/src/panel.ts
+++ b/packages/filter/src/panel.ts
@@ -14,7 +14,8 @@ export default defineComponent({
},
setup (props) {
const $xetable = inject('$xetable', {} as VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods)
- const { reactData: tableReactData, internalData: tableInternalData } = $xetable
+ const { reactData: tableReactData, internalData: tableInternalData, getComputeMaps } = $xetable
+ const { computeFilterOpts } = getComputeMaps()
const computeHasCheckOption = computed(() => {
const { filterStore } = props
@@ -179,6 +180,7 @@ export default defineComponent({
const renderFooters = () => {
const { filterStore } = props
const { column, multiple } = filterStore
+ const filterOpts = computeFilterOpts.value
const hasCheckOption = computeHasCheckOption.value
const filterRender = column.filterRender
const compConf = filterRender ? VXETable.renderer.get(filterRender.name) : null
@@ -193,10 +195,10 @@ export default defineComponent({
},
disabled: isDisabled,
onClick: confirmFilter
- }, GlobalConfig.i18n('vxe.table.confirmFilter')),
+ }, filterOpts.confirmButtonText || GlobalConfig.i18n('vxe.table.confirmFilter')),
h('button', {
onClick: resetFilter
- }, GlobalConfig.i18n('vxe.table.resetFilter'))
+ }, filterOpts.resetButtonText || GlobalConfig.i18n('vxe.table.resetFilter'))
])
] : []
}
diff --git a/packages/grid/src/grid.ts b/packages/grid/src/grid.ts
index 871a9740e..48697d88f 100644
--- a/packages/grid/src/grid.ts
+++ b/packages/grid/src/grid.ts
@@ -15,7 +15,7 @@ import { TableMethods, VxeGridConstructor, VxeGridEmits, GridReactData, VxeGridP
const tableComponentPropKeys = Object.keys(tableComponentProps as any)
-const tableComponentMethodKeys: (keyof TableMethods)[] = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'createData', 'createRow', 'revertData', 'clearData', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getData', 'getCheckboxRecords', 'getParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'isCheckedByCheckboxRow', 'isIndeterminateByCheckboxRow', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'setRadioRow', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'setPendingRow', 'getPendingRecords', 'clearPendingRow', 'sort', 'clearSort', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'isActiveFilterByColumn', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'reloadRowExpand', 'reloadRowExpand', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'isRowExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'reloadTreeExpand', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'scrollTo', 'scrollToRow', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'openTooltip', 'focus', 'blur', 'connect']
+const tableComponentMethodKeys: (keyof TableMethods)[] = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'createData', 'createRow', 'revertData', 'clearData', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getData', 'getCheckboxRecords', 'getParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'isCheckedByCheckboxRow', 'isIndeterminateByCheckboxRow', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'setRadioRow', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'setPendingRow', 'togglePendingRow', 'getPendingRecords', 'clearPendingRow', 'sort', 'clearSort', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'isActiveFilterByColumn', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'reloadRowExpand', 'reloadRowExpand', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'isRowExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'reloadTreeExpand', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'scrollTo', 'scrollToRow', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'openTooltip', 'focus', 'blur', 'connect']
const gridComponentEmits: VxeGridEmits = [
...tableComponentEmits,
@@ -37,6 +37,7 @@ export default defineComponent({
name: 'VxeGrid',
props: {
...tableComponentProps,
+ layouts: Array as PropType,
columns: Array as PropType>,
pagerConfig: Object as PropType,
proxyConfig: Object as PropType>,
@@ -451,6 +452,7 @@ export default defineComponent({
restVNs.push(
h('div', {
ref: refFormWrapper,
+ key: 'form',
class: 'vxe-grid--form-wrapper'
}, slotVNs)
)
@@ -494,6 +496,7 @@ export default defineComponent({
restVNs.push(
h('div', {
ref: refToolbarWrapper,
+ key: 'toolbar',
class: 'vxe-grid--toolbar-wrapper'
}, slotVNs)
)
@@ -509,6 +512,7 @@ export default defineComponent({
return [
h('div', {
ref: refTopWrapper,
+ key: 'top',
class: 'vxe-grid--top-wrapper'
}, slots.top({ $grid: $xegrid }))
]
@@ -516,6 +520,42 @@ export default defineComponent({
return []
}
+ const defaultLayouts = ['Form', 'Toolbar', 'Top', 'Table', 'Bottom', 'Pager']
+
+ const renderLayout = () => {
+ const { layouts } = props
+ const vns: any[] = []
+ const currLayouts = (layouts && layouts.length ? layouts : (GlobalConfig.grid.layouts || defaultLayouts))
+ currLayouts.forEach(name => {
+ switch (name) {
+ case 'Form':
+ vns.push(renderForms())
+ break
+ case 'Toolbar':
+ vns.push(renderToolbars())
+ break
+ case 'Top':
+ vns.push(renderTops())
+ break
+ case 'Table':
+ vns.push(renderTables())
+ break
+ case 'Bottom':
+ vns.push(renderBottoms())
+ break
+ case 'Pager':
+ vns.push(renderPagers())
+ break
+ default:
+ if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
+ errLog('vxe.error.notProp', [`layouts -> ${name}`])
+ }
+ break
+ }
+ })
+ return vns
+ }
+
const tableCompEvents: VxeTableEventProps = {}
tableComponentEmits.forEach(name => {
const type = XEUtils.camelCase(`on-${name}`) as keyof VxeTableEventProps
@@ -553,6 +593,7 @@ export default defineComponent({
return [
h(resolveComponent('vxe-table') as ComponentOptions, {
ref: refTable,
+ key: 'table',
...tableProps,
...tableOns
}, slotObj)
@@ -567,6 +608,7 @@ export default defineComponent({
return [
h('div', {
ref: refBottomWrapper,
+ key: 'bottom',
class: 'vxe-grid--bottom-wrapper'
}, slots.bottom({ $grid: $xegrid }))
]
@@ -613,6 +655,7 @@ export default defineComponent({
restVNs.push(
h('div', {
ref: refPagerWrapper,
+ key: 'pager',
class: 'vxe-grid--pager-wrapper'
}, slotVNs)
)
@@ -1192,7 +1235,7 @@ export default defineComponent({
'is--loading': props.loading || reactData.tableLoading
}],
style: styles
- }, renderForms().concat(renderToolbars(), renderTops(), renderTables(), renderBottoms(), renderPagers()))
+ }, renderLayout())
}
$xegrid.renderVN = renderVN
diff --git a/packages/locale/lang/en-US.ts b/packages/locale/lang/en-US.ts
index 9b44c8084..be35251df 100644
--- a/packages/locale/lang/en-US.ts
+++ b/packages/locale/lang/en-US.ts
@@ -168,10 +168,18 @@ export default {
pagesize: '{0}/page',
total: 'Total {0} record',
pageClassifier: '',
+ homePage: 'Home',
+ homePageTitle: 'Home page',
prevPage: 'Previous page',
+ prevPageTitle: 'Previous page',
nextPage: 'next page',
+ nextPageTitle: 'next page',
prevJump: 'Jump previous page',
- nextJump: 'Jump next page'
+ prevJumpTitle: 'Jump previous page',
+ nextJump: 'Jump next page',
+ nextJumpTitle: 'Jump next page',
+ endPage: 'End page',
+ endPageTitle: 'End'
},
alert: {
title: 'Message notification'
diff --git a/packages/locale/lang/ja-JP.ts b/packages/locale/lang/ja-JP.ts
index 9b35c39b6..2c59cf916 100644
--- a/packages/locale/lang/ja-JP.ts
+++ b/packages/locale/lang/ja-JP.ts
@@ -168,10 +168,18 @@ export default {
pagesize: '{0}件/ページ',
total: '全 {0} 件',
pageClassifier: '',
+ homePage: 'Home',
+ homePageTitle: 'Home page',
prevPage: '前のページ',
+ prevPageTitle: '前のページ',
nextPage: '次のページ',
+ nextPageTitle: '次のページ',
prevJump: '前のページに移動',
- nextJump: '次のページに移動'
+ prevJumpTitle: '前のページに移動',
+ nextJump: '次のページに移動',
+ nextJumpTitle: '次のページに移動',
+ endPage: 'End',
+ endPageTitle: 'End page'
},
alert: {
title: 'メッセージ'
diff --git a/packages/locale/lang/zh-CN.ts b/packages/locale/lang/zh-CN.ts
index cb7898f03..13565c1ec 100644
--- a/packages/locale/lang/zh-CN.ts
+++ b/packages/locale/lang/zh-CN.ts
@@ -168,10 +168,18 @@ export default {
pagesize: '{0}条/页',
total: '共 {0} 条记录',
pageClassifier: '页',
+ homePage: '首页',
+ homePageTitle: '首页',
prevPage: '上一页',
+ prevPageTitle: '上一页',
nextPage: '下一页',
+ nextPageTitle: '下一页',
prevJump: '向上跳页',
- nextJump: '向下跳页'
+ prevJumpTitle: '向上跳页',
+ nextJump: '向下跳页',
+ nextJumpTitle: '向下跳页',
+ endPage: '末页',
+ endPageTitle: '末页'
},
alert: {
title: '消息提示'
diff --git a/packages/locale/lang/zh-TC.ts b/packages/locale/lang/zh-TC.ts
index 461106ee3..6245584a2 100644
--- a/packages/locale/lang/zh-TC.ts
+++ b/packages/locale/lang/zh-TC.ts
@@ -168,10 +168,18 @@ export default {
pagesize: '{0}項/頁',
total: '共 {0} 項記錄',
pageClassifier: '頁',
+ homePage: '首頁',
+ homePageTitle: '首頁',
prevPage: '上一頁',
+ prevPageTitle: '上一頁',
nextPage: '下一頁',
+ nextPageTitle: '下一頁',
prevJump: '向上跳頁',
- nextJump: '向下跳頁'
+ prevJumpTitle: '向上跳頁',
+ nextJump: '向下跳頁',
+ nextJumpTitle: '向下跳頁',
+ endPage: '末頁',
+ endPageTitle: '末頁'
},
alert: {
title: '訊息提示'
diff --git a/packages/pager/src/pager.ts b/packages/pager/src/pager.ts
index a5aa3fb75..d2fc62c47 100644
--- a/packages/pager/src/pager.ts
+++ b/packages/pager/src/pager.ts
@@ -3,6 +3,7 @@ import XEUtils from 'xe-utils'
import GlobalConfig from '../../v-x-e-table/src/conf'
import { hasEventKey, EVENT_KEYS } from '../../tools/event'
import { useSize } from '../../hooks/size'
+import { errLog } from '../../tools/log'
import { VxePagerPropTypes, VxePagerConstructor, VxePagerEmits, VxeSelectEvents, PagerPrivateRef, VxeGridConstructor, PagerMethods, PagerPrivateMethods, VxePagerPrivateMethods, PagerReactData } from '../../../types/all'
@@ -41,7 +42,9 @@ export default defineComponent({
iconJumpPrev: String as PropType,
iconJumpNext: String as PropType,
iconNextPage: String as PropType,
- iconJumpMore: String as PropType
+ iconJumpMore: String as PropType,
+ iconHomePage: String as PropType,
+ iconEndPage: String as PropType
},
emits: [
'update:pageSize',
@@ -137,6 +140,21 @@ export default defineComponent({
})
})
+ const handleHomePage = (evnt?: Event) => {
+ const { currentPage } = props
+ if (currentPage > 1) {
+ changeCurrentPage(1, evnt)
+ }
+ }
+
+ const handleEndPage = (evnt?: Event) => {
+ const { currentPage } = props
+ const pageCount = computePageCount.value
+ if (currentPage < pageCount) {
+ changeCurrentPage(pageCount, evnt)
+ }
+ }
+
const handlePrevPage = (evnt?: Event) => {
const { currentPage } = props
const pageCount = computePageCount.value
@@ -194,6 +212,22 @@ export default defineComponent({
}
}
+ // 第一页
+ const renderHomePage = () => {
+ return h('button', {
+ class: ['vxe-pager--prev-btn', {
+ 'is--disabled': props.currentPage <= 1
+ }],
+ type: 'button',
+ title: GlobalConfig.i18n('vxe.pager.homePageTitle'),
+ onClick: handleHomePage
+ }, [
+ h('i', {
+ class: ['vxe-pager--btn-icon', props.iconHomePage || GlobalConfig.icon.PAGER_HOME]
+ })
+ ])
+ }
+
// 上一页
const renderPrevPage = () => {
return h('button', {
@@ -201,7 +235,7 @@ export default defineComponent({
'is--disabled': props.currentPage <= 1
}],
type: 'button',
- title: GlobalConfig.i18n('vxe.pager.prevPage'),
+ title: GlobalConfig.i18n('vxe.pager.prevPageTitle'),
onClick: handlePrevPage
}, [
h('i', {
@@ -218,7 +252,7 @@ export default defineComponent({
'is--disabled': props.currentPage <= 1
}],
type: 'button',
- title: GlobalConfig.i18n('vxe.pager.prevJump'),
+ title: GlobalConfig.i18n('vxe.pager.prevJumpTitle'),
onClick: handlePrevJump
}, [
tagName ? h('i', {
@@ -239,7 +273,7 @@ export default defineComponent({
'is--disabled': props.currentPage >= pageCount
}],
type: 'button',
- title: GlobalConfig.i18n('vxe.pager.nextJump'),
+ title: GlobalConfig.i18n('vxe.pager.nextJumpTitle'),
onClick: handleNextJump
}, [
tagName ? h('i', {
@@ -259,7 +293,7 @@ export default defineComponent({
'is--disabled': props.currentPage >= pageCount
}],
type: 'button',
- title: GlobalConfig.i18n('vxe.pager.nextPage'),
+ title: GlobalConfig.i18n('vxe.pager.nextPageTitle'),
onClick: handleNextPage
}, [
h('i', {
@@ -268,6 +302,23 @@ export default defineComponent({
])
}
+ // 最后一页
+ const renderEndPage = () => {
+ const pageCount = computePageCount.value
+ return h('button', {
+ class: ['vxe-pager--prev-btn', {
+ 'is--disabled': props.currentPage >= pageCount
+ }],
+ type: 'button',
+ title: GlobalConfig.i18n('vxe.pager.endPageTitle'),
+ onClick: handleEndPage
+ }, [
+ h('i', {
+ class: ['vxe-pager--btn-icon', props.iconEndPage || GlobalConfig.icon.PAGER_END]
+ })
+ ])
+ }
+
// 页数
const renderNumber = (showJump?: boolean) => {
const { currentPage, pagerCount } = props
@@ -396,6 +447,14 @@ export default defineComponent({
dispatchEvent (type, params, evnt) {
emit(type, Object.assign({ $pager: $xepager, $event: evnt }, params))
},
+ homePage () {
+ handleHomePage()
+ return nextTick()
+ },
+ endPage () {
+ handleEndPage()
+ return nextTick()
+ },
prevPage () {
handlePrevPage()
return nextTick()
@@ -442,23 +501,29 @@ export default defineComponent({
layouts.forEach((name) => {
let renderFn
switch (name) {
- case 'PrevPage':
- renderFn = renderPrevPage
+ case 'Home':
+ renderFn = renderHomePage
break
case 'PrevJump':
renderFn = renderPrevJump
break
+ case 'PrevPage':
+ renderFn = renderPrevPage
+ break
case 'Number':
renderFn = renderNumber
break
case 'JumpNumber':
renderFn = renderJumpNumber
break
+ case 'NextPage':
+ renderFn = renderNextPage
+ break
case 'NextJump':
renderFn = renderNextJump
break
- case 'NextPage':
- renderFn = renderNextPage
+ case 'End':
+ renderFn = renderEndPage
break
case 'Sizes':
renderFn = renderSizes
@@ -478,6 +543,10 @@ export default defineComponent({
}
if (renderFn) {
childNodes.push(renderFn())
+ } else {
+ if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
+ errLog('vxe.error.notProp', [`layouts -> ${name}`])
+ }
}
})
if (slots.right) {
diff --git a/packages/table/src/cell.ts b/packages/table/src/cell.ts
index f49328408..4939fc42a 100644
--- a/packages/table/src/cell.ts
+++ b/packages/table/src/cell.ts
@@ -9,7 +9,7 @@ import { getSlotVNs } from '../../tools/vn'
import { SlotVNodeType, VxeTableConstructor, VxeTableDefines, VxeTablePrivateMethods } from '../../../types/all'
-function renderHelpIcon (params: VxeTableDefines.CellRenderHeaderParams) {
+function renderTitlePrefixIcon (params: VxeTableDefines.CellRenderHeaderParams) {
const { $table, column } = params
const titlePrefix = column.titlePrefix || column.titleHelp
return titlePrefix ? [
@@ -167,7 +167,7 @@ export const Cell = {
return renderTitleContent(params, formatText(column.getTitle(), 1))
},
renderDefaultHeader (params: VxeTableDefines.CellRenderHeaderParams) {
- return renderHelpIcon(params).concat(Cell.renderHeaderTitle(params))
+ return renderTitlePrefixIcon(params).concat(Cell.renderHeaderTitle(params))
},
renderDefaultCell (params: VxeTableDefines.CellRenderBodyParams) {
const { $table, row, column } = params
diff --git a/packages/table/src/table.ts b/packages/table/src/table.ts
index 30ceb69ea..7ce9e7f1c 100644
--- a/packages/table/src/table.ts
+++ b/packages/table/src/table.ts
@@ -2475,12 +2475,12 @@ export default defineComponent({
Object.assign(columnStore, { leftList, centerList, rightList })
if (scrollXLoad) {
if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
- if (props.showHeader && !props.showHeaderOverflow) {
- warnLog('vxe.error.reqProp', ['show-header-overflow'])
- }
- if (props.showFooter && !props.showFooterOverflow) {
- warnLog('vxe.error.reqProp', ['show-footer-overflow'])
- }
+ // if (props.showHeader && !props.showHeaderOverflow) {
+ // warnLog('vxe.error.reqProp', ['show-header-overflow'])
+ // }
+ // if (props.showFooter && !props.showFooterOverflow) {
+ // warnLog('vxe.error.reqProp', ['show-footer-overflow'])
+ // }
if (props.spanMethod) {
warnLog('vxe.error.scrollErrProp', ['span-method'])
}
@@ -3192,9 +3192,9 @@ export default defineComponent({
*/
getTableData () {
const { tableData, footerTableData } = reactData
- const { tableFullData, afterFullData } = internalData
+ const { tableFullData, afterFullData, tableFullTreeData } = internalData
return {
- fullData: tableFullData.slice(0),
+ fullData: props.treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0),
visibleData: afterFullData.slice(0),
tableData: tableData.slice(0),
footerData: footerTableData.slice(0)
@@ -3207,13 +3207,15 @@ export default defineComponent({
const column = handleFieldOrColumn($xetable, fieldOrColumn)
const targetColumn = getRootColumn($xetable, column as any)
const isMaxFixedColumn = computeIsMaxFixedColumn.value
+ const columnOpts = computeColumnOpts.value
+ const { maxFixedSize } = columnOpts
if (targetColumn && targetColumn.fixed !== fixed) {
// 是否超过最大固定列数量
if (!targetColumn.fixed && isMaxFixedColumn) {
if (VXETable.modal) {
VXETable.modal.message({
status: 'error',
- content: GlobalConfig.i18n('vxe.table.maxFixedCol')
+ content: GlobalConfig.i18n('vxe.table.maxFixedCol', [maxFixedSize])
})
}
return nextTick()
diff --git a/packages/v-x-e-table/src/conf.ts b/packages/v-x-e-table/src/conf.ts
index cf3231328..39e69ac79 100644
--- a/packages/v-x-e-table/src/conf.ts
+++ b/packages/v-x-e-table/src/conf.ts
@@ -167,6 +167,8 @@ const GlobalConfig: VXETableConfigOptions = {
SELECT_CLOSE: iconPrefix + 'caret-down',
// pager
+ PAGER_HOME: iconPrefix + 'home-page',
+ PAGER_END: iconPrefix + 'end-page',
PAGER_JUMP_PREV: iconPrefix + 'arrow-double-left',
PAGER_JUMP_NEXT: iconPrefix + 'arrow-double-right',
PAGER_PREV_PAGE: iconPrefix + 'arrow-left',
diff --git a/styles/icon.scss b/styles/icon.scss
index df3487311..d3c41ed35 100644
--- a/styles/icon.scss
+++ b/styles/icon.scss
@@ -3,7 +3,7 @@
@font-face {
font-family: "vxeiconfont";
src:
- url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');
+ url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');
}
@keyframes rollCircle {
@@ -73,6 +73,14 @@ $btnThemeList: (
}
}
+.vxe-icon-end-page:before {
+ content: "\e607";
+}
+
+.vxe-icon-home-page:before {
+ content: "\f294";
+}
+
.vxe-icon-time:before {
content: "\e64d";
}
@@ -609,14 +617,6 @@ $btnThemeList: (
content: "\e84e";
}
-.vxe-icon-fixed-fill:before {
- content: "\e9b9";
-}
-
-.vxe-icon-fixed:before {
- content: "\e9ba";
-}
-
.vxe-icon-fixed-left-fill:before {
content: "\e9b9";
}
@@ -776,3 +776,4 @@ $btnThemeList: (
.vxe-icon-radio-unchecked:before {
content: "\e7c9";
}
+
diff --git a/types/grid.d.ts b/types/grid.d.ts
index 82a28312b..ac3bf9294 100644
--- a/types/grid.d.ts
+++ b/types/grid.d.ts
@@ -171,6 +171,8 @@ export interface VxeGridPrivateMethods extends GridPrivateM
export namespace VxeGridPropTypes {
export type Size = SizeType
+ export type Layouts = ('Form' | 'Toolbar' | 'Top' | 'Table' | 'Bottom' | 'Pager')[]
+
export type Columns = VxeTableDefines.ColumnOptions[]
export interface PagerConfig extends VxePagerProps {
@@ -286,6 +288,7 @@ export namespace VxeGridPropTypes {
}
export type VxeGridProps = VxeTableProps & {
+ layouts?: VxeGridPropTypes.Layouts
columns?: VxeGridPropTypes.Columns
pagerConfig?: VxeGridPropTypes.PagerConfig
proxyConfig?: VxeGridPropTypes.ProxyConfig
diff --git a/types/pager.d.ts b/types/pager.d.ts
index f493594e3..0dcb0f752 100644
--- a/types/pager.d.ts
+++ b/types/pager.d.ts
@@ -91,11 +91,13 @@ export type VxePagerProps = {
iconJumpNext?: VxePagerPropTypes.IconJumpNext
iconNextPage?: VxePagerPropTypes.IconNextPage
iconJumpMore?: VxePagerPropTypes.IconJumpMore
+ iconHome?: VxePagerPropTypes.IconHome
+ iconEnd?: VxePagerPropTypes.IconEnd
}
export namespace VxePagerPropTypes {
export type Size = SizeType
- export type Layouts = Array<'PrevJump' | 'PrevPage' | 'Number' | 'JumpNumber' | 'NextPage' | 'NextJump' | 'Sizes' | 'Jump' | 'FullJump' | 'PageCount' | 'Total'>
+ export type Layouts = Array<'Home' | 'PrevJump' | 'PrevPage' | 'Number' | 'JumpNumber' | 'NextPage' | 'NextJump' | 'End' | 'Sizes' | 'Jump' | 'FullJump' | 'PageCount' | 'Total'>
export type CurrentPage = number
export type Loading = boolean
export type PageSize = number
@@ -116,6 +118,8 @@ export namespace VxePagerPropTypes {
export type IconJumpNext = string
export type IconNextPage = string
export type IconJumpMore = string
+ export type IconHome = string
+ export type IconEnd = string
}
export type PageSizeItemType = number | {
@@ -125,6 +129,14 @@ export type PageSizeItemType = number | {
export interface PagerMethods {
dispatchEvent(type: ValueOf, params: any, evnt?: Event): void
+ /**
+ * 首页
+ */
+ homePage(): Promise
+ /**
+ * 末页
+ */
+ endPage(): Promise
/**
* 上一页
*/
diff --git a/types/table.d.ts b/types/table.d.ts
index 5e7c14c8e..5d33819b6 100644
--- a/types/table.d.ts
+++ b/types/table.d.ts
@@ -1535,6 +1535,8 @@ export namespace VxeTablePropTypes {
showIcon?: boolean
iconNone?: string
iconMatch?: string
+ confirmButtonText?: string
+ resetButtonText?: string
}
export interface FilterOpts extends FilterConfig { }