2024年2月1日木曜日

ファセット検索の検索リージョンをドロワーのように非表示にする

フランスのパリ在住のLouis Moreauxさんは、毎月曜日にOracle APEXのちょっとした小技をX(旧Twitter)やLinkedInに公開されています。

2024年1月29日のMonday's Tipにて、ファセット検索のページの左にある検索条件(ファセット)を表示するパネルを、ドロワーのように表示と非表示を切り替える実装を紹介しています。


Xのポストを読んで実装しようとしたのですがうまくいかず、実装サンプルを参照してやっとXのポストの英語の説明が理解できました。

サンプルのアプリケーションのリンクは以下です。貼り付けるCSSコードは以下のアプリケーションよりコピペします。

サンプル・データセットのEMPをインストールすると作成できるアプリケーションを使って、少々、説明を補足しようと思います。ファセット検索のページはページ番号3に作成されています。

3番目のポストで作成しているリージョンFilterの設定です。

タイプ静的コンテンツのリージョンをLeft Columnの最上位に配置しています。外観テンプレートとしてBlank with Attributes (No Grid)を選択し、余計な装飾を除いています。

ソースHTMLコードに以下を記述します。fa-filterはフィルタのアイコン、fs-filter-iconクラスは、HTMLコードに記述しているspan要素を垂直方向に表示するためのCSSクラスです。ページに記述するCSSに、その定義が含まれています。

<span class="fa fa-filter fs-filter-icon">Filters</span>

リージョンの静的IDとしてtitle-regを設定しています。


タイプファセット検索のリージョンの静的IDとしてsearch-regを設定します。


後はサンプル・プログラムよりCSSのコードをコピーして、ページ・プロパティCSSインラインに記述します。


以上で実装完了です。

Lous Moreauxさんは、2番目のポストで「左側のパネルの幅はCSS変数の--ut-body-sidebar-widthで決められていることを覚えておいて。」と言っています。

この値は、ページごとに調整できます。

左側のパネルが閉じているときは、:root(ルート要素)で設定されている--ut-body-sidebar-widthの値が適用されます。今回の例では2.5emです。


左側のパネルが開いたときは、div#t_Body_side:hoverで設定されている--ut-body-sidebar-widthの値が適用されます。今回の例では25emです。


特に左側のパネルが開いた時の横幅は25emだと広すぎることがありそうなので、ファセットの選択肢の長さに合わせて調整するとよいと思います。

いいねと思ったら、リアクションはLouis MoreauxさんのXのポストにお願いします。