File tree 2 files changed +56
-0
lines changed
2 files changed +56
-0
lines changed Original file line number Diff line number Diff line change
1
+
2
+ import { addResizeListener , removeResizeListener } from 'element-ui/src/utils/resize-event'
3
+
4
+ /**
5
+ * How to use
6
+ * <el-table height="100px" v-el-height-adaptive-table="{bottomOffset: 30}">...</el-table>
7
+ * el-table height is must be set
8
+ * bottomOffset: 30(default) // The height of the table from the bottom of the page.
9
+ */
10
+
11
+ const doResize = ( el , binding , vnode ) => {
12
+ const { componentInstance : $table } = vnode
13
+
14
+ const { value } = binding
15
+
16
+ if ( ! $table . height ) {
17
+ throw new Error ( `el-$table must set the height. Such as height='100px'` )
18
+ }
19
+ const bottomOffset = ( value && value . bottomOffset ) || 30
20
+
21
+ if ( ! $table ) return
22
+
23
+ const height = window . innerHeight - el . getBoundingClientRect ( ) . top - bottomOffset
24
+ $table . layout . setHeight ( height )
25
+ $table . doLayout ( )
26
+ }
27
+
28
+ export default {
29
+ bind ( el , binding , vnode ) {
30
+ el . resizeListener = ( ) => {
31
+ doResize ( el , binding , vnode )
32
+ }
33
+
34
+ addResizeListener ( el , el . resizeListener )
35
+ } ,
36
+ inserted ( el , binding , vnode ) {
37
+ doResize ( el , binding , vnode )
38
+ } ,
39
+ unbind ( el ) {
40
+ removeResizeListener ( el , el . resizeListener )
41
+ }
42
+ }
Original file line number Diff line number Diff line change
1
+
2
+ import adaptive from './adaptive'
3
+
4
+ const install = function ( Vue ) {
5
+ Vue . directive ( 'el-height-adaptive-table' , adaptive )
6
+ }
7
+
8
+ if ( window . Vue ) {
9
+ window [ 'el-height-adaptive-table' ] = adaptive
10
+ Vue . use ( install ) ; // eslint-disable-line
11
+ }
12
+
13
+ adaptive . install = install
14
+ export default adaptive
You can’t perform that action at this time.
0 commit comments