diff --git a/docs/en-US/component/table.md b/docs/en-US/component/table.md index b1a21a0f86..d4fe247400 100644 --- a/docs/en-US/component/table.md +++ b/docs/en-US/component/table.md @@ -332,6 +332,8 @@ table/table-layout | scrollTo | scrolls to a particular set of coordinates | ^[Function]`(options: number \| ScrollToOptions, yCoord?: number) => void` | | setScrollTop | set vertical scroll position | ^[Function]`(top?: number) => void` | | setScrollLeft | set horizontal scroll position | ^[Function]`(left?: number) => void` | +| columns ^(2.7.6) | Get table columns context. | ^[array]`TableColumnCtx[]` | + ## Table-column API diff --git a/packages/components/table/__tests__/table.test.ts b/packages/components/table/__tests__/table.test.ts index 32cd3a2b1e..dfd974e431 100644 --- a/packages/components/table/__tests__/table.test.ts +++ b/packages/components/table/__tests__/table.test.ts @@ -1019,6 +1019,30 @@ describe('Table.vue', () => { wrapper.unmount() }) + + it('get table columns', async () => { + const wrapper = mount({ + components: { + ElTable, + ElTableColumn, + }, + template: ` +
+ + + + +
+ `, + data() { + return { testData: getTestData() } + }, + }) + const vm = wrapper.vm + await doubleWait() + expect(vm.$refs.table.columns.length).toBe(2) + wrapper.unmount() + }) }) it('hover', async () => { diff --git a/packages/components/table/src/table-header/utils-helper.ts b/packages/components/table/src/table-header/utils-helper.ts index 1981d16adf..e6bf5abb18 100644 --- a/packages/components/table/src/table-header/utils-helper.ts +++ b/packages/components/table/src/table-header/utils-helper.ts @@ -20,7 +20,7 @@ const getAllColumns = ( return result } -const convertToRows = ( +export const convertToRows = ( originColumns: TableColumnCtx[] ): TableColumnCtx[] => { let maxLevel = 1 diff --git a/packages/components/table/src/table.vue b/packages/components/table/src/table.vue index 0b4634b5e9..953c884ff6 100644 --- a/packages/components/table/src/table.vue +++ b/packages/components/table/src/table.vue @@ -177,6 +177,7 @@ import TableHeader from './table-header' import TableBody from './table-body' import TableFooter from './table-footer' import useUtils from './table/utils-helper' +import { convertToRows } from './table-header/utils-helper' import useStyle from './table/style-helper' import useKeyRender from './table/key-render-helper' import defaultProps from './table/defaults' @@ -294,12 +295,17 @@ export default defineComponent({ return props.emptyText || t('el.table.emptyText') }) + const columns = computed(() => { + return convertToRows(store.states.originColumns.value)[0] + }) + useKeyRender(table) return { ns, layout, store, + columns, handleHeaderFooterMousewheel, handleMouseLeave, tableId,