0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

vuetify3 v-data-tableのtrにclassをつけたい

Last updated at Posted at 2024-12-17

1.問題

v-data-tableで展開されるtrのtdにある特定の値「user.status」が「0」の時は、trのClassにyellowのclassを付けて行をハイライトさせたい。

2.解決

v-data-tableに:row-propsをつけて、Classを設定するメソッドを設定したら、特定の行がハイライトするように動きました。以下がコードです。

v-data-table(:headers="headers" :items="filteredItems" :row-props="addTrClass")
...略

data() {
  return {
    headers: [
      {title: 'ステータス', align: 'center', key: 'user.status', width: '100%'},
    ],
  }
}
...略

methods: {
  addTrClass({ item }) {
    return {class: item.user.status === 0 ? 'yellow' : ''}
  }
}

3.その他

ネットの記事を見ていると、v-slotをオーバライドして…といった記事がありましたが、オーバライドしてしまうと、trやtdに自動でつくべきclassが付きません。また、headersに入れてる値も自動で展開できなくなりました。

あと、vuetify2だと「item-class」というもう少し直感的な名前なんですが、vuetify3から「row-props」に代わっていました。

4.参考文章

公式
https://vuetifyjs.com/ja/api/v-data-table-rows/

githubのissues
https://github.com/vuetifyjs/vuetify/issues/16991#issuecomment-2488965788

5.最後に

いいね👍もらえると励みになります!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?