【Vue】vue-clamp / テキスト行数指定表示

■ はじめに

vue-clamp ってゆーいうプラグインについて、学ぶ。

■ デモ

* 以下のデモを触ってどういうものかを掴むといいかも。

https://justineo.github.io/vue-clamp/demo/#demo

■ 環境設定

npm i --save vue-clamp

Error : Could not find a declaration file for module 'vue-clamp'.

* 上記の設定だけだと、以下のエラーになってしまった。

エラー内容

9:22 Could not find a declaration file for module 'vue-clamp'. 
'C:/xxxx/my-app/node_modules/vue-clamp/dist/vue-clamp.js' implicitly has an 'any' type.
  Try `npm install @types/vue-clamp` if it exists or add a new declaration (.d.ts) file containing `declare module 'vue-clamp';`    
     7 | <script lang="ts">
     8 | import { Component, Vue } from "vue-property-decorator";
  >  9 | import VueClamp from 'vue-clamp';
       |                      ^
    10 | 
    11 | @Component({
    12 |   components: {

解決案
https://github.com/Justineo/vue-clamp/issues/43

より抜粋
~~~~~~~~~~~~~~
@nc-csl just add next line to your declare.d.ts

declare module 'vue-clamp';
~~~~~~~~~~~~~~

修正案:shims-vue.d.ts

declare module '*.vue' {
  import Vue from 'vue'
  export default Vue
}

declare module 'vue-clamp'; // <=★追加★

■ サンプル

* 最大行数2行で設定。
* それ以上は「...」で表示される

Home.vue

<template>
  <div>
    <v-clamp :max-lines="2" autoresize>{{ description }}</v-clamp>
  </div>
</template>

<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import VClamp from 'vue-clamp';

@Component({
  components: {
    VClamp
  }
})
export default class Home extends Vue {
  get description() {
    return "あいうえおかきくけこさしすせそたちつてと" +
    "なにぬねのはひふへほまみむめもやゆよをん" +
    "アイウエオカキクケコサシスセソナニヌネノ" +
    "ハヒフヘホマミムメモヤユヨヲン" +
    "1234567890ABCDEFGHIJKLMNOPQ" +
    "RSTUVWXYXZabcdefghijklmnopqrstuvwxyz";
  }
}
</script>

参考文献

https://code.luasoftware.com/tutorials/vuejs/vue-truncate-by-line/

関連記事

Vue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/04/30/000000