mirror of
https://gitee.com/element-plus/element-plus.git
synced 2024-12-15 18:01:24 +08:00
090706250b
* feat(components): [auto-resizer] new component - Add new component AutoResizer for skip passing width/height. - Update documentation for AutoResizer. - Update FAQs for TableV2. - Update interfaces for TableV2. * Fix linter error * Fix linter issue
89 lines
1.7 KiB
Vue
89 lines
1.7 KiB
Vue
<template>
|
|
<el-table-v2
|
|
:columns="columns"
|
|
:data="data"
|
|
:row-class="rowClass"
|
|
:width="700"
|
|
:height="400"
|
|
/>
|
|
</template>
|
|
|
|
<script lang="tsx" setup>
|
|
import { ref } from 'vue'
|
|
import dayjs from 'dayjs'
|
|
import {
|
|
ElButton,
|
|
ElIcon,
|
|
ElTag,
|
|
ElTooltip,
|
|
TableV2FixedDir,
|
|
} from 'element-plus'
|
|
import { Timer } from '@element-plus/icons-vue'
|
|
|
|
import type { Column, RowClassNameGetter } from 'element-plus'
|
|
|
|
let id = 0
|
|
|
|
const dataGenerator = () => ({
|
|
id: `random-id-${++id}`,
|
|
name: 'Tom',
|
|
date: '2020-10-1',
|
|
})
|
|
|
|
const columns: Column<any>[] = [
|
|
{
|
|
key: 'date',
|
|
title: 'Date',
|
|
dataKey: 'date',
|
|
width: 150,
|
|
fixed: TableV2FixedDir.LEFT,
|
|
cellRenderer: ({ cellData: date }) => (
|
|
<ElTooltip content={dayjs(date).format('YYYY/MM/DD')}>
|
|
{
|
|
<span class="flex items-center">
|
|
<ElIcon class="mr-3">
|
|
<Timer />
|
|
</ElIcon>
|
|
{dayjs(date).format('YYYY/MM/DD')}
|
|
</span>
|
|
}
|
|
</ElTooltip>
|
|
),
|
|
},
|
|
{
|
|
key: 'name',
|
|
title: 'Name',
|
|
dataKey: 'name',
|
|
width: 150,
|
|
align: 'center',
|
|
cellRenderer: ({ cellData: name }) => <ElTag>{name}</ElTag>,
|
|
},
|
|
{
|
|
key: 'operations',
|
|
title: 'Operations',
|
|
cellRenderer: () => (
|
|
<>
|
|
<ElButton size="small">Edit</ElButton>
|
|
<ElButton size="small" type="danger">
|
|
Delete
|
|
</ElButton>
|
|
</>
|
|
),
|
|
width: 150,
|
|
align: 'center',
|
|
flexGrow: 1,
|
|
},
|
|
]
|
|
|
|
const data = ref(Array.from({ length: 200 }).map(dataGenerator))
|
|
|
|
const rowClass = ({ rowIndex }: Parameters<RowClassNameGetter<any>>[0]) => {
|
|
if (rowIndex % 10 === 5) {
|
|
return 'bg-red-100'
|
|
} else if (rowIndex % 10 === 0) {
|
|
return 'bg-blue-200'
|
|
}
|
|
return ''
|
|
}
|
|
</script>
|