「コピーする」ボタンをクリックしたときに、対象をクリップボードにコピーし、わかりやすいようにツールチップで コピーしました!
的なのを表示したかった。
あと一定時間経過したら消えて欲しかった。
今回は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秒)で消える。
めっちゃ雑な動くサンプル