如何在用户单击外部时禁用v-tooltip

时间:2017-11-30 09:56:05

标签: vue.js

我使用v-tooltip在表的每个单元格上显示工具提示

<td v-tooltip="{content: 'some content', trigger: 'click'}"></td>

但我希望当用户点击另一个单元格时,当前的工具提示会消失,我尝试了“autoHide”属性,但它无效。

enter image description here

由于

v-tooltip存储库: https://github.com/Akryum/v-tooltip

2 个答案:

答案 0 :(得分:1)

这是一个很晚的答案,但也许可以帮助其他人:

您可以将工具提示组件添加为引用,然后调用hide方法:

this.$refs.popover.hide()

答案 1 :(得分:0)

我认为你必须使用更可自定义的v-popover组件。 v-tooltip指令似乎无法处理manual触发,您需要手动触发。

console.clear();

new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue.js!',
    selectedCell: null
  }
})
body {
  font-family: sans-serif;
  margin: 42px;
}

.tooltip {
  display: block !important;
  z-index: 10000;
}

.tooltip .tooltip-inner {
  background: black;
  color: white;
  border-radius: 16px;
  padding: 5px 10px 4px;
}

.tooltip .tooltip-arrow {
  width: 0;
  height: 0;
  border-style: solid;
  position: absolute;
  margin: 5px;
  border-color: black;
}

.tooltip[x-placement^="top"] {
  margin-bottom: 5px;
}

.tooltip[x-placement^="top"] .tooltip-arrow {
  border-width: 5px 5px 0 5px;
  border-left-color: transparent !important;
  border-right-color: transparent !important;
  border-bottom-color: transparent !important;
  bottom: -5px;
  left: calc(50% - 5px);
  margin-top: 0;
  margin-bottom: 0;
}

.tooltip[x-placement^="bottom"] {
  margin-top: 5px;
}

.tooltip[x-placement^="bottom"] .tooltip-arrow {
  border-width: 0 5px 5px 5px;
  border-left-color: transparent !important;
  border-right-color: transparent !important;
  border-top-color: transparent !important;
  top: -5px;
  left: calc(50% - 5px);
  margin-top: 0;
  margin-bottom: 0;
}

.tooltip[x-placement^="right"] {
  margin-left: 5px;
}

.tooltip[x-placement^="right"] .tooltip-arrow {
  border-width: 5px 5px 5px 0;
  border-left-color: transparent !important;
  border-top-color: transparent !important;
  border-bottom-color: transparent !important;
  left: -5px;
  top: calc(50% - 5px);
  margin-left: 0;
  margin-right: 0;
}

.tooltip[x-placement^="left"] {
  margin-right: 5px;
}

.tooltip[x-placement^="left"] .tooltip-arrow {
  border-width: 5px 0 5px 5px;
  border-top-color: transparent !important;
  border-right-color: transparent !important;
  border-bottom-color: transparent !important;
  right: -5px;
  top: calc(50% - 5px);
  margin-left: 0;
  margin-right: 0;
}

.tooltip[aria-hidden='true'] {
  visibility: hidden;
  opacity: 0;
  transition: opacity .15s, visibility .15s;
}

.tooltip[aria-hidden='false'] {
  visibility: visible;
  opacity: 1;
  transition: opacity .15s;
}
<script src="//unpkg.com/popper.js"></script>
<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/v-tooltip"></script>

<div id="app">
  <table border="1">
    <tr v-for="i in 3">
      <td @click="selectedCell = i">
        <p><span>This is cell {{ i }}</span></p>
        <v-popover trigger="manual" :open="selectedCell === i">
          <template slot="popover">
            <p>
              {{ message }}
            </p>
          </template>
        </v-popover>
      </td>
    </tr>
  </table>
</div>