Commit 8c51d57dca1b0ef77cf441cb839d12e4fa4ac619
1 parent
d9d1dbbd
Table Column add tooltip prop
Showing
3 changed files
with
34 additions
and
7 deletions
Show diff stats
examples/routers/table.vue
1 | 1 | <template> |
2 | 2 | <div> |
3 | - <Table highlight-row ref="currentRowTable" :columns="columns3" :data="data1"></Table> | |
3 | + <Table ref="currentRowTable" :columns="columns3" :data="data1"></Table> | |
4 | 4 | <Button @click="handleClearCurrentRow">Clear</Button> |
5 | 5 | </div> |
6 | 6 | </template> |
... | ... | @@ -27,20 +27,21 @@ |
27 | 27 | }, |
28 | 28 | { |
29 | 29 | title: 'Address', |
30 | - key: 'address' | |
30 | + key: 'address', | |
31 | + tooltip: true | |
31 | 32 | } |
32 | 33 | ], |
33 | 34 | data1: [ |
34 | 35 | { |
35 | 36 | name: 'John Brown', |
36 | 37 | age: 18, |
37 | - address: 'New York No. 1 Lake Park', | |
38 | + address: '自定义渲染列,使用 Vue 的 Render 函数。传入两个参数,第一个是 h,第二个为对象,包含 row、column 和 index,分别指当前行数据,当前列数据,当前行索引,详见示例。自定义渲染列,使用 Vue 的 Render 函数。传入两个参数,第一个是 h,第二个为对象,包含 row、column 和 index,分别指当前行数据,当前列数据,当前行索引,详见示例。自定义渲染列,使用 Vue 的 Render 函数。传入两个参数,第一个是 h,第二个为对象,包含 row、column 和 index,分别指当前行数据,当前列数据,当前行索引,详见示例。', | |
38 | 39 | date: '2016-10-03' |
39 | 40 | }, |
40 | 41 | { |
41 | 42 | name: 'Jim Green', |
42 | 43 | age: 24, |
43 | - address: 'London No. 1 Lake Park', | |
44 | + address: 'London No. 1 Lake Park自定义渲染列,使用 Vue 的 Render 函', | |
44 | 45 | date: '2016-10-01' |
45 | 46 | }, |
46 | 47 | { | ... | ... |
src/components/table/cell.vue
... | ... | @@ -5,7 +5,14 @@ |
5 | 5 | <Checkbox :value="checked" @click.native.stop="handleClick" @on-change="toggleSelect" :disabled="disabled"></Checkbox> |
6 | 6 | </template> |
7 | 7 | <template v-if="renderType === 'html'"><span v-html="row[column.key]"></span></template> |
8 | - <template v-if="renderType === 'normal'"><span>{{row[column.key]}}</span></template> | |
8 | + <template v-if="renderType === 'normal'"> | |
9 | + <template v-if="column.tooltip"> | |
10 | + <Tooltip transfer :content="row[column.key]" :disabled="!showTooltip" :max-width="300" class="ivu-table-cell-tooltip"> | |
11 | + <span ref="content" @mouseenter="handleTooltipIn" @mouseleave="handleTooltipOut" class="ivu-table-cell-tooltip-content">{{ row[column.key] }}</span> | |
12 | + </Tooltip> | |
13 | + </template> | |
14 | + <span v-else>{{row[column.key]}}</span> | |
15 | + </template> | |
9 | 16 | <template v-if="renderType === 'expand' && !row._disableExpand"> |
10 | 17 | <div :class="expandCls" @click="toggleExpand"> |
11 | 18 | <Icon type="ios-arrow-forward"></Icon> |
... | ... | @@ -23,10 +30,11 @@ |
23 | 30 | import Cell from './expand'; |
24 | 31 | import Icon from '../icon/icon.vue'; |
25 | 32 | import Checkbox from '../checkbox/checkbox.vue'; |
33 | + import Tooltip from '../tooltip/tooltip.vue'; | |
26 | 34 | |
27 | 35 | export default { |
28 | 36 | name: 'TableCell', |
29 | - components: { Icon, Checkbox, Cell }, | |
37 | + components: { Icon, Checkbox, Cell, Tooltip }, | |
30 | 38 | props: { |
31 | 39 | prefixCls: String, |
32 | 40 | row: Object, |
... | ... | @@ -45,7 +53,8 @@ |
45 | 53 | return { |
46 | 54 | renderType: '', |
47 | 55 | uid: -1, |
48 | - context: this.$parent.$parent.$parent.currentContext | |
56 | + context: this.$parent.$parent.$parent.currentContext, | |
57 | + showTooltip: false, // 鼠标滑过overflow文本时,再检查是否需要显示 | |
49 | 58 | }; |
50 | 59 | }, |
51 | 60 | computed: { |
... | ... | @@ -78,6 +87,13 @@ |
78 | 87 | }, |
79 | 88 | handleClick () { |
80 | 89 | // 放置 Checkbox 冒泡 |
90 | + }, | |
91 | + handleTooltipIn () { | |
92 | + const $content = this.$refs.content; | |
93 | + this.showTooltip = $content.scrollWidth > $content.offsetWidth; | |
94 | + }, | |
95 | + handleTooltipOut () { | |
96 | + this.showTooltip = false; | |
81 | 97 | } |
82 | 98 | }, |
83 | 99 | created () { | ... | ... |
src/styles/components/table.less
... | ... | @@ -158,6 +158,16 @@ |
158 | 158 | text-overflow: ellipsis; |
159 | 159 | } |
160 | 160 | |
161 | + &-tooltip{ | |
162 | + width: 100%; | |
163 | + &-content{ | |
164 | + display: block; | |
165 | + overflow: hidden; | |
166 | + text-overflow: ellipsis; | |
167 | + white-space: nowrap; | |
168 | + } | |
169 | + } | |
170 | + | |
161 | 171 | &-with-expand{ |
162 | 172 | height: 47px; |
163 | 173 | line-height: 47px; | ... | ... |