ポップアップ Power Apps コンポーネントの作成

完了

場合によっては、アプリケーションのユーザーにポップアップ ウィンドウを表示する必要があります。 Power Apps Component Framework は、この要件を満たすためにポップアップ API を公開します。 次の例に、ローダー グラフィックを表示するポップアップ ウィンドウの作成方法を示します。 長時間実行される操作では、この方法を使用すると、基になる UI が操作を実行できないようブロックされている場合に、満足できるユーザー エクスペリエンスを実現することができます。

メモ

Power Apps Component Framework のポップアップ サービスは、Power Apps モデル駆動型アプリでのみサポートされています。

コンポーネントのプロジェクトの初期化

コンポーネントのプロジェクトを初期化するには、次の手順を実行します。

  1. Visual Studio Code を起動します。

  2. ターミナル新しいターミナルを選択します。

  3. ディレクトリをソース フォルダーに変更します。

    cd source
    
  4. ソース ディレクトリで、Popup-Component という名前のディレクトリを作成します。

    md Popup-Component
    
  5. 次のコマンドを実行して新しいディレクトリに切り替えます。

    cd Popup-Component
    
  6. 次のコマンドを実行して、プロジェクトを初期化します。

    pac pcf init --namespace SampleNamespace --name PopupComponent --template field
    
  7. プロジェクトに依存関係ライブラリを読み込むために run-npm-install を実行します。

    npm install
    
  8. 次のコマンドを実行して、Visual Studio Code でプロジェクトを開きます。

    code -a .
    

コード コンポーネントのロジックを実装する

コード コンポーネントのロジックを実装するには、次の手順を実行します。

  1. PopupComponent フォルダーを展開し、ControlManifest.Input.xml ファイルを開きます。

  2. マニフェスト全体を以下の XML に置き換えます。

    <?xml version="1.0" encoding="utf-8" ?>
    <manifest>
      <control namespace="SampleNamespace" constructor="PopupComponent" version="0.0.1" display-name-key="PopupComponent_Display_Key" description-key="PopupComponent_Desc_Key" control-type="standard">
        <!-- property node identifies a specific, configurable piece of data that the control expects from CDS -->
        <property name="sampleProperty" display-name-key="Property_Display_Key" description-key="Property_Desc_Key" of-type="SingleLine.Text" usage="bound" required="true" /> 
        <resources>
          <code path="index.ts" order="1"/>
          <css path="css/loader.css" order="1" />
        </resources>
      </control>
    </manifest>
    

    後でこのマニフェストに含まれる補助ファイルを追加します。

  3. Index.ts ファイルを開きます。

  4. export class メソッドの上に、ポップアップ API (popupstyle と shadowstyle) によって提供される他のメソッドを公開するために、次のインターフェイス メソッドを挿入します。

        interface Popup extends ComponentFramework.FactoryApi.Popup.Popup {
        popupStyle: object;
        shadowStyle: object;
    }
    
  5. constructor の上に、次のプライベート変数を追加します。

    private _container: HTMLDivElement;
    private _popUpService: ComponentFramework.FactoryApi.Popup.PopupService;
    
  6. コンポーネントの init メソッドに次のロジックを追加します。

    this._container = document.createElement('div');
    //============ content of our popup =============
    let popUpContent = document.createElement('div');
    popUpContent.setAttribute("class", "loader");
    
    //============ our Popup object =============
    let popUpOptions: Popup = {
        closeOnOutsideClick: true,
        content: popUpContent,
        name: 'loaderPopup', // unique popup name
        type: 1, // Root popup
        popupStyle: {
            "width": "100%",
            "height": "100%",
            "overflow": "hidden",
            "backgroundColor": "transparent",
            "display": "flex",
            "flexDirection": "column",
            "position": "absolute",
            "margin-top": 28 + "px"
        },
        shadowStyle:{
            position: "absolute",
            width: "100%",
            height: "100%"
        }
    };
    
    this._popUpService = context.factory.getPopupService();
    
    this._popUpService.createPopup(popUpOptions);
    
    container.appendChild(this._container);
    this._popUpService.openPopup('loaderPopup');
    

コード コンポーネントにスタイル設定を追加する

コード コンポーネントにスタイル設定を追加するには、以下の手順を実行します。

  1. PopupComponent フォルダーの下に、新しい css サブフォルダーを作成します。

  2. CSS サブフォルダーに、新しい loader.css ファイルを作成します。

  3. loader.css ファイルに、次のような内容のスタイルを追加します。

    .loader {
        border: 16px solid #f3f3f3; /* Light grey */
        border-top: 16px solid #3498db; /* Blue */
        border-radius: 50%;
        position: fixed;
        width: 120px;
        height: 120px;
        top:40%;
        left:50%;
        animation: spin 2s linear infinite;
      }
    
      @keyframes spin {
        0% { transform: rotate(0deg); }
        100% { transform: rotate(360deg); }
      }
    
  4. ファイルを選択して、変更をすべて保存します。

コンポーネントのビルドと実行

コンポーネントをビルドして実行するには、次の手順を実行します。

  1. 次のコマンドを実行して、ソリューションを構築します。

    npm run build
    
  2. 正常に構築できたら、npm start を実行して、新しいポップアップ コンポーネントをテストできます。

    npm start
    
  3. テスト ハーネスのブラウザー セッションを閉じます。

  4. ターミナルに戻り、Ctrl + C キーを押したまま Watcher を停止します。

  5. Y と入力し、Enter を押します。

メモ

このローダー コンポーネントはテキスト フィールドにバインドされます。 モデル駆動型アプリでこのコンポーネントを使用するには、このフィールドをフォームで使用する場合に非表示にすることをお勧めします。

ポップアップの機能をテストするには、Microsoft Power Platform 環境でコンポーネントを公開してホストする必要があります。 コード コンポーネントの公開方法の詳細については、Power Apps コンポーネントを作成するモジュールの「コード コンポーネント ソリューション パッケージを作成する」を参照してください。