forked from mengyxu/noob-components
commit
504572647a
1 changed files with 316 additions and 0 deletions
@ -0,0 +1,316 @@ |
|||||||
|
el-table: |
||||||
|
```vue |
||||||
|
<script setup lang="ts"> |
||||||
|
import { ref, version as vueVersion } from 'vue' |
||||||
|
import { version as epVersion } from 'element-plus' |
||||||
|
const tableData = [ |
||||||
|
{ |
||||||
|
date: '2016-05-03', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-02', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-04', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-01', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-08', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-06', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-07', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
},{ |
||||||
|
date: '2016-05-06', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-07', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
},{ |
||||||
|
date: '2016-05-06', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-07', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
},{ |
||||||
|
date: '2016-05-06', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-07', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
},{ |
||||||
|
date: '2016-05-06', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-07', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
},{ |
||||||
|
date: '2016-05-06', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-07', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
},{ |
||||||
|
date: '2016-05-06', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-07', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
},{ |
||||||
|
date: '2016-05-06', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-07', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
},{ |
||||||
|
date: '2016-05-06', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
{ |
||||||
|
date: '2016-05-07', |
||||||
|
name: 'Tom', |
||||||
|
state: 'California', |
||||||
|
city: 'Los Angeles', |
||||||
|
address: 'No. 189, Grove St, Los Angeles', |
||||||
|
zip: 'CA 90036', |
||||||
|
}, |
||||||
|
] |
||||||
|
</script> |
||||||
|
|
||||||
|
<template> |
||||||
|
<div class="main"> |
||||||
|
<div class="header" /> |
||||||
|
<div class="wrap"> |
||||||
|
<div class="wrap_top"> |
||||||
|
<div>{{'element-plus:'+epVersion}}</div> |
||||||
|
<div>{{'vue:'+vueVersion}}</div> |
||||||
|
</div> |
||||||
|
<div class="wrap_table"> |
||||||
|
<el-table :data="tableData" height="0"> |
||||||
|
<el-table-column prop="date" label="Date" width="150" /> |
||||||
|
<el-table-column prop="name" label="Name" width="120" /> |
||||||
|
<el-table-column prop="state" label="State" width="120" /> |
||||||
|
<el-table-column prop="city" label="City" width="320" /> |
||||||
|
<el-table-column prop="address" label="Address" width="600" /> |
||||||
|
<el-table-column prop="zip" label="Zip" /> |
||||||
|
</el-table> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<style> |
||||||
|
.main { |
||||||
|
display: flex; |
||||||
|
height: 100vh; |
||||||
|
max-height: 100vh; |
||||||
|
overflow: hidden; |
||||||
|
flex-direction: column; |
||||||
|
} |
||||||
|
|
||||||
|
.header { |
||||||
|
background-color: red; |
||||||
|
width: 100%; |
||||||
|
height: 100px; |
||||||
|
} |
||||||
|
|
||||||
|
.wrap { |
||||||
|
flex: 1; |
||||||
|
background-color: antiquewhite; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
border: 1px solid antiquewhite; |
||||||
|
overflow: hidden; |
||||||
|
} |
||||||
|
|
||||||
|
.wrap_top { |
||||||
|
height: 100px; |
||||||
|
background-color: chocolate; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.wrap_table { |
||||||
|
display: flex; |
||||||
|
flex-grow: 1; |
||||||
|
overflow: hidden; |
||||||
|
} |
||||||
|
|
||||||
|
.el-table { |
||||||
|
height: 100%!important; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
} |
||||||
|
|
||||||
|
.el-table__inner-wrapper { |
||||||
|
height: 100%!important; |
||||||
|
} |
||||||
|
</style> |
||||||
|
``` |
||||||
|
|
||||||
|
el-table-v2: |
||||||
|
```vue |
||||||
|
<template> |
||||||
|
<div :style="{...rootStyle, height: '100vh'}"> |
||||||
|
<div style="flex-grow: 1;"> |
||||||
|
<el-auto-resizer> |
||||||
|
<template #default="{ height, width }"> |
||||||
|
<el-table-v2 |
||||||
|
:columns="columns" |
||||||
|
:data="data" |
||||||
|
:width="width" |
||||||
|
:height="height" |
||||||
|
fixed |
||||||
|
/> |
||||||
|
</template> |
||||||
|
</el-auto-resizer> |
||||||
|
</div> |
||||||
|
<div class="footer" style="height: 200px; background-color: red;" /> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script lang="ts" setup> |
||||||
|
import { StyleValue } from 'vue' |
||||||
|
|
||||||
|
const rootStyle: StyleValue = { |
||||||
|
display: 'flex', |
||||||
|
flexDirection: 'column', |
||||||
|
overflow: 'hidden' |
||||||
|
} |
||||||
|
|
||||||
|
const generateColumns = (length = 10, prefix = 'column-', props?: any) => |
||||||
|
Array.from({ length }).map((_, columnIndex) => ({ |
||||||
|
...props, |
||||||
|
key: `${prefix}${columnIndex}`, |
||||||
|
dataKey: `${prefix}${columnIndex}`, |
||||||
|
title: `Column ${columnIndex}`, |
||||||
|
width: 150, |
||||||
|
})) |
||||||
|
|
||||||
|
const generateData = ( |
||||||
|
columns: ReturnType<typeof generateColumns>, |
||||||
|
length = 200, |
||||||
|
prefix = 'row-' |
||||||
|
) => |
||||||
|
Array.from({ length }).map((_, rowIndex) => { |
||||||
|
return columns.reduce( |
||||||
|
(rowData, column, columnIndex) => { |
||||||
|
rowData[column.dataKey] = `Row ${rowIndex} - Col ${columnIndex}` |
||||||
|
return rowData |
||||||
|
}, |
||||||
|
{ |
||||||
|
id: `${prefix}${rowIndex}`, |
||||||
|
parentId: null, |
||||||
|
} |
||||||
|
) |
||||||
|
}) |
||||||
|
|
||||||
|
const columns = generateColumns(10) |
||||||
|
const data = generateData(columns, 200) |
||||||
|
</script> |
||||||
|
``` |
||||||
Loading…
Reference in new issue