Material Components WebのSnackbar

Webアプリケーションの操作完了時には、flash(一時的なメッセージ変数)を通じて通知をフィードバックするケースが多くあります。

Material Components Webでは画面下から一時的にポップアップするSnackbarを活用できます。

Snackbarの実装方法は、 公式ドキュメントに解説があります。

Railsのflashと組み合わせた場合のコード例は以下のとおりです。(MaterialComponentsの初期化は含んでいますが、ライブラリ(JS/CSS)インクルードは別途必要)

<section class="mdc-snackbar" aria-live="assertive" aria-atomic="true" aria-hidden="true" data-mdc-auto-init="MDCSnackbar">
  <div class="mdc-snackbar__text"></div>
  <div class="mdc-snackbar__action-wrapper">
    <button type="button" class="mdc-button mdc-snackbar__action-button"></button>
  </div>
</section>

<script>
  window.mdc.autoInit();
  var snackbar = new mdc.snackbar.MDCSnackbar(document.querySelector('.mdc-snackbar'));

<% if flash[:notice].present? %>
  var dataObj = { message: "<%= notice %>" };
snackbar.show(dataObj);
<% end %>
</script>

各画面の通知インターフェースをSnackbarに集約する場合は、共通テンプレートに実装しておけばflashの処理以外の再実装を避けられます。

中馬崇尋
Chuma Takahiro