Commit d6f644e1d96b2e77cccfd78d73f52d11d09cc811
1 parent
30510c3d
support Tooltip
support Tooltip
Showing
8 changed files
with
44 additions
and
88 deletions
Show diff stats
CHANGE.md
| ... | ... | @@ -27,4 +27,5 @@ class 改为了 className |
| 27 | 27 | ### Circle |
| 28 | 28 | 改名为 iCircle |
| 29 | 29 | ### Tabs |
| 30 | -废弃 activeKey,改用 value,使用 v-model,key 更名为 name | |
| 31 | 30 | \ No newline at end of file |
| 31 | +废弃 activeKey,改用 value,使用 v-model,key 更名为 name | |
| 32 | +### popper.js 将 prop: visible 移至 data 里 | |
| 32 | 33 | \ No newline at end of file | ... | ... |
README.md
src/components/base/popper.js
| ... | ... | @@ -18,20 +18,28 @@ export default { |
| 18 | 18 | offset: { |
| 19 | 19 | default: 0 |
| 20 | 20 | }, |
| 21 | - value: Boolean, | |
| 21 | + value: { | |
| 22 | + type: Boolean, | |
| 23 | + default: false | |
| 24 | + }, | |
| 22 | 25 | transition: String, |
| 23 | 26 | options: { |
| 24 | 27 | type: Object, |
| 25 | 28 | default () { |
| 26 | 29 | return { |
| 27 | 30 | gpuAcceleration: false, |
| 28 | - boundariesElement: 'body' | |
| 31 | + // boundariesElement: 'body' // todo 暂时注释,发现在 vue 2 里方向暂时可以自动识别了,待验证 | |
| 29 | 32 | }; |
| 30 | 33 | } |
| 31 | 34 | }, |
| 32 | - visible: { | |
| 33 | - type: Boolean, | |
| 34 | - default: false | |
| 35 | + // visible: { | |
| 36 | + // type: Boolean, | |
| 37 | + // default: false | |
| 38 | + // } | |
| 39 | + }, | |
| 40 | + data () { | |
| 41 | + return { | |
| 42 | + visible: this.value | |
| 35 | 43 | } |
| 36 | 44 | }, |
| 37 | 45 | watch: { |
| ... | ... | @@ -59,8 +67,8 @@ export default { |
| 59 | 67 | } |
| 60 | 68 | |
| 61 | 69 | const options = this.options; |
| 62 | - const popper = this.popper || this.$els.popper; | |
| 63 | - const reference = this.reference || this.$els.reference; | |
| 70 | + const popper = this.popper || this.$refs.popper; | |
| 71 | + const reference = this.reference || this.$refs.reference; | |
| 64 | 72 | |
| 65 | 73 | if (!popper || !reference) return; |
| 66 | 74 | ... | ... |
src/components/tooltip/tooltip.vue
| 1 | 1 | <template> |
| 2 | 2 | <div :class="[prefixCls]" @mouseenter="handleShowPopper" @mouseleave="handleClosePopper"> |
| 3 | - <div :class="[prefixCls + '-rel']" v-el:reference> | |
| 3 | + <div :class="[prefixCls + '-rel']" ref="reference"> | |
| 4 | 4 | <slot></slot> |
| 5 | 5 | </div> |
| 6 | - <div :class="[prefixCls + '-popper']" transition="fade" v-el:popper v-show="!disabled && (visible || always)"> | |
| 7 | - <div :class="[prefixCls + '-content']"> | |
| 8 | - <div :class="[prefixCls + '-arrow']"></div> | |
| 9 | - <div :class="[prefixCls + '-inner']"><slot name="content">{{ content }}</slot></div> | |
| 6 | + <transition name="fade"> | |
| 7 | + <div :class="[prefixCls + '-popper']" ref="popper" v-show="!disabled && (visible || always)"> | |
| 8 | + <div :class="[prefixCls + '-content']"> | |
| 9 | + <div :class="[prefixCls + '-arrow']"></div> | |
| 10 | + <div :class="[prefixCls + '-inner']"><slot name="content">{{ content }}</slot></div> | |
| 11 | + </div> | |
| 10 | 12 | </div> |
| 11 | - </div> | |
| 13 | + </transition> | |
| 12 | 14 | </div> |
| 13 | 15 | </template> |
| 14 | 16 | <script> | ... | ... |
src/index.js
| ... | ... | @@ -29,7 +29,7 @@ import InputNumber from './components/input-number'; |
| 29 | 29 | import Progress from './components/progress'; |
| 30 | 30 | import Radio from './components/radio'; |
| 31 | 31 | import Rate from './components/rate'; |
| 32 | -// import Slider from './components/slider'; | |
| 32 | +import Slider from './components/slider'; | |
| 33 | 33 | // import Spin from './components/spin'; |
| 34 | 34 | import Steps from './components/steps'; |
| 35 | 35 | import Switch from './components/switch'; |
| ... | ... | @@ -38,7 +38,7 @@ import Tabs from './components/tabs'; |
| 38 | 38 | import Tag from './components/tag'; |
| 39 | 39 | import Timeline from './components/timeline'; |
| 40 | 40 | // import TimePicker from './components/time-picker'; |
| 41 | -// import Tooltip from './components/tooltip'; | |
| 41 | +import Tooltip from './components/tooltip'; | |
| 42 | 42 | // import Transfer from './components/transfer'; |
| 43 | 43 | import Tree from './components/tree'; |
| 44 | 44 | import Upload from './components/upload'; |
| ... | ... | @@ -94,7 +94,7 @@ const iview = { |
| 94 | 94 | Rate, |
| 95 | 95 | Row, |
| 96 | 96 | // iSelect: Select, |
| 97 | - // Slider, | |
| 97 | + Slider, | |
| 98 | 98 | // Spin, |
| 99 | 99 | Step: Steps.Step, |
| 100 | 100 | Steps, |
| ... | ... | @@ -106,7 +106,7 @@ const iview = { |
| 106 | 106 | Timeline, |
| 107 | 107 | TimelineItem: Timeline.Item, |
| 108 | 108 | // TimePicker, |
| 109 | - // Tooltip, | |
| 109 | + Tooltip, | |
| 110 | 110 | // Transfer, |
| 111 | 111 | Tree, |
| 112 | 112 | Upload | ... | ... |
test/app.vue
| ... | ... | @@ -35,6 +35,8 @@ li + li { border-left: solid 1px #bbb; padding-left: 10px; margin-left: 10px; } |
| 35 | 35 | <li><router-link to="/rate">Rate</router-link></li> |
| 36 | 36 | <li><router-link to="/circle">Circle</router-link></li> |
| 37 | 37 | <li><router-link to="/tabs">Tabs</router-link></li> |
| 38 | + <li><router-link to="/tooltip">Tooltip</router-link></li> | |
| 39 | + <li><router-link to="/slider">Slider</router-link></li> | |
| 38 | 40 | </ul> |
| 39 | 41 | </nav> |
| 40 | 42 | <router-view></router-view> | ... | ... |
test/main.js
| ... | ... | @@ -104,6 +104,14 @@ const router = new VueRouter({ |
| 104 | 104 | { |
| 105 | 105 | path: '/tabs', |
| 106 | 106 | component: require('./routers/tabs.vue') |
| 107 | + }, | |
| 108 | + { | |
| 109 | + path: '/tooltip', | |
| 110 | + component: require('./routers/tooltip.vue') | |
| 111 | + }, | |
| 112 | + { | |
| 113 | + path: '/slider', | |
| 114 | + component: require('./routers/slider.vue') | |
| 107 | 115 | } |
| 108 | 116 | ] |
| 109 | 117 | }); | ... | ... |
test/routers/tooltip.vue
| 1 | -<style scoped> | |
| 2 | - .top,.bottom{ | |
| 3 | - text-align: center; | |
| 4 | - } | |
| 5 | - .center{ | |
| 6 | - width: 300px; | |
| 7 | - margin: 10px auto; | |
| 8 | - overflow: hidden; | |
| 9 | - } | |
| 10 | - .center-left{ | |
| 11 | - float: left; | |
| 12 | - } | |
| 13 | - .center-right{ | |
| 14 | - float: right; | |
| 15 | - } | |
| 16 | -</style> | |
| 17 | 1 | <template> |
| 18 | - <div class="top"> | |
| 19 | - <Tooltip content="Top Left 文字提示" placement="top-start" @on-popper-hide="hide"> | |
| 20 | - <i-button>上左</i-button> | |
| 21 | - </Tooltip> | |
| 22 | - <Tooltip content="Top Center 文字提示" placement="top"> | |
| 23 | - <i-button>上边</i-button> | |
| 24 | - </Tooltip> | |
| 25 | - <Tooltip content="Top Right 文字提示" placement="top-end"> | |
| 26 | - <i-button>上右</i-button> | |
| 27 | - </Tooltip> | |
| 28 | - </div> | |
| 29 | - <div class="center"> | |
| 30 | - <div class="center-left"> | |
| 31 | - <Tooltip content="Left Top 文字提示" placement="left-start"> | |
| 32 | - <i-button>左上</i-button> | |
| 33 | - </Tooltip><br><br> | |
| 34 | - <Tooltip content="Left Center 文字提示" placement="left"> | |
| 35 | - <i-button>左边</i-button> | |
| 36 | - </Tooltip><br><br> | |
| 37 | - <Tooltip content="Left Bottom 文字提示" placement="left-end"> | |
| 38 | - <i-button>左下</i-button> | |
| 39 | - </Tooltip> | |
| 40 | - </div> | |
| 41 | - <div class="center-right"> | |
| 42 | - <Tooltip content="Right Top 文字提示" placement="right-start"> | |
| 43 | - <i-button>右上</i-button> | |
| 44 | - </Tooltip><br><br> | |
| 45 | - <Tooltip content="Right Center 文字提示" placement="right"> | |
| 46 | - <i-button>右边</i-button> | |
| 47 | - </Tooltip><br><br> | |
| 48 | - <Tooltip content="Right Bottom 文字提示" placement="right-end"> | |
| 49 | - <i-button>右下</i-button> | |
| 50 | - </Tooltip> | |
| 51 | - </div> | |
| 52 | - </div> | |
| 53 | - <div class="bottom"> | |
| 54 | - <Tooltip content="Bottom Left 文字提示" placement="bottom-start"> | |
| 55 | - <i-button>下左</i-button> | |
| 56 | - </Tooltip> | |
| 57 | - <Tooltip content="Bottom Center 文字提示" placement="bottom"> | |
| 58 | - <i-button>下边</i-button> | |
| 59 | - </Tooltip> | |
| 60 | - <Tooltip content="Bottom Right 文字提示" placement="bottom-end"> | |
| 61 | - <i-button>下右</i-button> | |
| 62 | - </Tooltip> | |
| 63 | - </div> | |
| 2 | + <Tooltip placement="top" content="Tooltip 文字提示" :delay="1000"> | |
| 3 | + <Button @click="disabled = true">延时1秒显示</Button> | |
| 4 | + </Tooltip> | |
| 64 | 5 | </template> |
| 65 | 6 | <script> |
| 66 | - import { Tooltip, iButton, Message } from 'iview'; | |
| 67 | 7 | export default { |
| 68 | - components: { Tooltip, iButton }, | |
| 69 | - methods: { | |
| 70 | - hide () { | |
| 71 | - Message.info('hide') | |
| 72 | - } | |
| 73 | - } | |
| 8 | + | |
| 74 | 9 | } |
| 75 | 10 | </script> | ... | ... |