lightning:overlayLibrary
メッセージをモーダルおよびポップオーバーで表示できます。モーダルでは、アプリケーションの前面にダイアログを表示し、ユーザのワークフローを中断してメッセージに注意を引き付けます。ポップオーバーでは、参照要素にマウスポインタが置かれると、関連情報を表示します。メッセージをトリガするコンポーネントに <lightning:overlayLibrary aura:id="overlayLib"/> タグを 1 つ含めます。aura:id は、一意のローカル ID です。1 つのタグのみで複数のメッセージに対応します。
モーダル
モーダルは、終了しない限り、ページのその他の要素をすべてブロックします。ユーザがアプリケーションを操作できる状態に戻るには、モーダルを確認する必要があります。モーダルは、ボタンまたはリンクのクリックを含む、ユーザ操作によってトリガされます。モーダルのヘッダー、本文、フッターをカスタマイズできます。Esc キーを押すか、終了ボタンをクリックすると、モーダルは閉じます。

ボタンを含む例を次に示します。クリックされると、ボタンはカスタム本文を含むモーダルを表示します。
1<aura:component>
2 <lightning:overlayLibrary aura:id="overlayLib"/>
3 <lightning:button name="modal" label="Show Modal" onclick="{!c.handleShowModal}"/>
4</aura:component>クライアント側コントローラは、モーダルを表示します。モーダルを作成および表示するには、component.find('overlayLib').showCustomModal() を使用してモーダル属性を渡します。overlayLib は、lightning:overlayLibrary インスタンスの aura:id に整合します。
1({
2 handleShowModal: function(component, evt, helper) {
3 var modalBody;
4 $A.createComponent("c:modalContent", {},
5 function(content, status) {
6 if (status === "SUCCESS") {
7 modalBody = content;
8 component.find('overlayLib').showCustomModal({
9 header: "Application Confirmation",
10 body: modalBody,
11 showCloseButton: true,
12 cssClass: "mymodal",
13 closeCallback: function() {
14 alert('You closed the alert!');
15 }
16 })
17
18 }
19
20 });
21 }
22})c:modalContent は、アイコンとメッセージを表示するカスタムコンポーネントです。
1<aura:component>
2 <lightning:icon size="medium" iconName="action:approval" alternativeText="Approved" />
3 Your application has been approved.
4</aura:component>footer 属性を使用して、独自のフッターを渡せます。次の例では、$A.createComponents() を使用してカスタム本文とフッタを作成します。
1handleShowModalFooter : function (component, event, helper) {
2 var modalBody;
3 var modalFooter;
4 $A.createComponents([
5 ["c:modalContent",{}],
6 ["c:modalFooter",{}]
7 ],
8 function(components, status){
9 if (status === "SUCCESS") {
10 modalBody = components[0];
11 modalFooter = components[1];
12 component.find('overlayLib').showCustomModal({
13 header: "Application Confirmation",
14 body: modalBody,
15 footer: modalFooter,
16 showCloseButton: true,
17 cssClass: "mymodal",
18 closeCallback: function() {
19 alert('You closed the alert!');
20 }
21 })
22 }
23 }
24 );
25}c:modalFooter は、2 つのボタンを表示するカスタムコンポーネントです。
1<aura:component>
2 <lightning:overlayLibrary aura:id="overlayLib"/>
3 <lightning:button name="cancel" label="Cancel" onclick="{!c.handleCancel}"/>
4 <lightning:button name="ok" label="OK" variant="brand" onclick="{!c.handleOK}"/>
5</aura:component>ボタンのクリック時の動作をクライアント側コントローラで定義します。
1({
2 handleCancel : function(component, event, helper) {
3 component.find("overlayLib").notifyClose();
4 },
5 handleOK : function(component, event, helper) {
6 //do something
7 }
8})showCustomModal() はプロミスを返します。これは、表示時にモーダルへの参照を取得する場合に便利です。
1component.find('overlayLib').showCustomModal({
2 //modal attributes
3}).then(function (overlay) {
4 //closes the modal immediately
5 overlay.close();
6});属性
| 属性名 | 属性型 | 説明 | 必須項目 |
|---|---|---|---|
| header | Object | モーダルの最上部に表示されるヘッダー。 | |
| body | Object | モーダルの本文。 | |
| footer | Object | モーダルフッター。 | |
| showCloseButton | Boolean | モーダルに終了ボタンを表示するかどうかを指定します。デフォルトは、true です。 | |
| cssClass | String | モーダルの CSS クラス。 | |
| closeCallback | Function | モーダルが閉じられたときにコールされるコールバック。 |
メソッド
プロミスによって返されるモーダルインスタンスでは、次のメソッドを使用できます。
close(): モーダルを閉じて廃棄します。
hide(): モーダルをビューで非表示します。
show(): モーダルを表示します。
ポップオーバー
ポップオーバーは参照要素にコンテキスト情報を表示するもので、モーダルのように他の要素を中断しません。ポップオーバーは、参照要素にマウスポインタが置かれたり、要素がクリックされたりすると表示されます。Esc キーを押すと、ポップオーバーは閉じます。ポップオーバーのデフォルトの位置設定は、参照要素の右です。

ボタンと、参照 div 要素を含む例を次に示します。クリックされると、ボタンはポップオーバーを表示します。div 要素にマウスポインタが置かれた場合も、ポップオーバーは表示されます。
1<aura:component>
2 <lightning:overlayLibrary aura:id="overlayLib"/>
3 <lightning:button name="popover" label="Show Popover" onclick="{!c.handleShowPopover}"/>
4 <div class="mypopover" onmouseover="{!c.handleShowPopover}">Popover should display if you hover over here.</div>
5</aura:component>クライアント側コントローラは、ポップオーバーを表示します。この例ではポップオーバー本文に文字列を渡しますが、上のモーダルの例のようにカスタムコンポーネントを渡すこともできます。
1({
2 handleShowPopover : function(component, event, helper) {
3 component.find('overlayLib').showCustomPopover({
4 body: "Popovers are positioned relative to a reference element",
5 referenceSelector: ".mypopover",
6 cssClass: "popoverclass"
7 }).then(function (overlay) {
8 setTimeout(function(){
9 //close the popover after 3 seconds
10 overlay.close();
11 }, 3000);
12 });
13 }
14})1.THIS .popoverclass {
2 min-height: 100px;
3}属性
| 属性名 | 属性型 | 説明 | 必須項目 |
|---|---|---|---|
| body | Object | モーダルの本文。 | |
| referenceSelector | Object | ポップオーバーを追加する参照要素ポップオーバーは参照要素の右に追加されます。 | |
| cssClass | String | モーダルの CSS クラス。 |
メソッド
プロミスによって返されるモーダルインスタンスでは、次のメソッドを使用できます。
close(): モーダルを閉じて廃棄します。
hide(): モーダルをビューで非表示します。
show(): モーダルを表示します。