以下のように動作します。
リスト・リージョンの外観のリスト・テンプレートとしてLinks Listを選んでいます。今回の実装はLinks Listのテンプレートを対象した実装になります。
ページにタイプがリストのリージョンを作成しています。ソースのリストとしてCity Listを選択しています。JavaScriptのコードよりリージョンを参照するため、詳細の静的IDにCITY_LISTを設定しています。
共有コンポーネントのリストに、以下のようにリストCity Listを作成しています。
ターゲットはすべて#action$select-cityを設定しています。この設定により、リストに表示されている要素(都市名)をクリックすると、APEXアクションのselect-cityが呼び出されます。
リストからAPEXアクションを呼び出す設定は、リスト・テンプレートに依存して変わります。今回はLinks Listですが、Menu Popupの場合は以前の記事「メニュー・ポップアップから任意の処理を呼び出す」で紹介した手順になります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apex.actions.add([ | |
{ | |
name: "select-city", | |
action: function( event, element, args ) { | |
// セレクタは選択したリスト・テンプレートによって異なる。これは Links Listの場合。 | |
const allLabels = document.querySelectorAll("#CITY_LIST li .t-LinksList-label"); | |
allLabels.forEach((e) => { | |
// elementとして返されるのはli要素。 | |
if (element == e) { | |
/* | |
* クリックされた要素であれば、P1_CITYに都市名を設定し、 | |
* 表示を変えるためにu-dangerクラスを追加している。 | |
* 選択時のリンクの見せ方を変えるにはu-dangerのクラスを変える。 | |
*/ | |
apex.items.P1_CITY.setValue(e.textContent, e.textContent, true); | |
e.classList.add("u-danger"); | |
} | |
else | |
{ | |
/* | |
* 一致していないli要素からはu-dangerを除く。 | |
*/ | |
e.classList.remove("u-danger"); | |
} | |
}) | |
} | |
} | |
]); |
選択した都市名を保持するページ・アイテムとしてP1_CITYを作成しています。選択肢の内の1つを選択するため、タイプにラジオ・グループを選びます。
ラベルにはCityと設定していますが、外観のテンプレートにHiddenを選択しているため、ラベルは表示されません。ラベルは表示されませんが、デフォルトではラベルを表示するための領域が取られるため、レイアウトのラベル列スパンを0にします。これでページ・アイテムの値が左端に寄ります。
設定の列の数に6を設定します。都市の数が5つなので、6であれば表示が1行に収まります。
テンプレート・オプションを開き、一般のStretch Form Itemにチェックを入れ、詳細のItem Group DisplayにDisplay as Pill Buttonを選択します。これで、画面の左右いっぱいの幅に、かつ形状がボタンで表示されるようになります。
リストを静的値で設定しているため、ページ・アイテムのLOVを静的値で設定します。NULL値の表示はオフにします。オンのときは、NULLの選択がラジオ・ボタンの選択肢として追加されます。
TRUEアクションとして、以下のJavaScriptのコードを実行します。
今回の実装の紹介は以上です。
今回の記事で扱ったAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/select-list-item-on-click.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完