🪗
ぬるぬる開閉する Table Row を作った
やりたいこと
- テーブルの行が、親子関係になっている
- 親の行をクリックしたら、子の行が隠れる
以下を作る
Accordion コンポーネントを使って実装する(失敗)

これを使えばいけそう。と言うことで作ってみた
全然違う!!!!
なんか全然違う!!!
DOM 構成をみてみてる。
なんじゃこりゃあ

原因を理解する
<tbody> の直下に <tr> がなく、Accordion Component によって生成された <div> 要素がレンダーされてしまっていた。
その結果、行ずれが発生してしまっている。
そんな具合。
Collapse コンポーネントを使って実装する(成功)

Material UI の Transitions Utils の Collapse を使ってみる
これが俺の求めていたものだ!
解説
作るに当たって、注意した点
- Table の DOM 構造を崩さないように Cell のなかで Collapse を呼んだ
- TableCell にくっついてる top と bottom の padding を無効にした
- 閉じた時に余白が生まれてしまう
-
display: none;は使わない。- transition がつかないので
- 閉じた後に、TableCell に
border: none;をつける- 閉じた Child の Row の border が重なってしまうので
終わりに
Accordion ではなくて、Transition を使ってみようと言う仮説が当たったのが非常良かった。
個人的に transition: 500ms; くらいが一番気持ちよくぬるぬる動く感じがするので、好み
Discussion