LoginSignup
1
1

More than 1 year has passed since last update.

nuxt/vuetifyでクリックしたら数秒表示されるツールチップが使いたい

Posted at

「コピーする」ボタンをクリックしたときに、対象をクリップボードにコピーし、わかりやすいようにツールチップで コピーしました! 的なのを表示したかった。
あと一定時間経過したら消えて欲しかった。
今回は1秒。

補足ですが、クリップボードへのコピーはこちらを利用しました。

ツールチップ とは

引用: ウィキペディア > ツールチップ

この言葉がわかんなくて情報探すの苦労した

vuetifyの該当ページは以下

既存の設定値だけでどうにかなるかと思ったけど、ならなかったりバギーだったりで諦めた

実装

<template>

  (略)

  <v-tooltip right nudge-bottom="30" v-model="showCopied">
    <template v-slot:activator="{}">
      <v-btn color="primary" class="mx-auto" @click="clickCopy()">
        コピーする
      </v-btn>
    </template>
    <span>コピーしました</span>
  </v-tooltip>

  (略)

</template>

<script lang="ts">
import { Component, Vue } from "nuxt-property-decorator";

declare module "@nuxt/types" {
  interface Context {
    $copyText: any;
  }
  interface NuxtAppOptions {
    $copyText: any;
  }
}

declare module "vue/types/vue" {
  interface Vue {
    $copyText: any;
  }
}

@Component
export default class HogeComponent extends Vue {
  showCopied = false;
  targetText = "";

  // なにかをトリガーに targetText に値入れたりする処理など(省略)

  async clickCopy() {
    try {
      await this.$copyText(this.targetText);
      this.showCopied = true;
    } catch (e) {
      console.log(e);
    } finally {
      await this.sleep(1000);
      this.showCopied = false;
    }
  }

  sleep(msec: number): Promise<void> {
    return new Promise(resolve => setTimeout(resolve, msec));
  }
}
</script>

こんな感じ。
ボタンをクリックすると右下にツールチップが表示され、1000ms(=1秒)で消える。

スクリーンショット 2021-10-19 13.04.33.png

めっちゃ雑な動くサンプル

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1