📚

AntDesignBlazorでポップアップを作る

2023/02/21に公開

サンプルコード

Demo.razor
@page "/Modal"

<Button Type="primary" OnClick="@(()=>{ isModalVisible = true; })">
    ポップアップ表示
</Button>
<ModalDemo ModalTitle="ポップアップ画面" Width="1500" Visible=@isModalVisible>
    <ChildContent>
        <SpreadComponent/>
    </ChildContent>
</ModalDemo>

<SpreadComponent2 RowSelectAction="@rowSelectAction" />

@code
{
    private bool isModalVisible = false;

    private void rowSelectAction() 
    {
        isModalVisible = true;
        StateHasChanged();
    }
}
ModalDemo.razor
<Modal Title="@ModalTitle"
       Visible="@Visible"
       Draggable="@(true)"
       Footer="@ModalFooter.DefaultCancelFooter"
       OnCancel="(e)=>{Visible = false;}"
       Width="@Width"
>
@ChildContent
</Modal>

@code{
    [Parameter]
    public string? ModalTitle { get; set; }
    [Parameter]
    public RenderFragment? ChildContent { get; set; }
    [Parameter]
    public double Width { get; set; }
    [Parameter]
    public bool Visible { get; set; }
}

解説

概要

モーダルをポップアップとして実装しています。
ポップアップコンポーネント(ModalDemo.razor)は、ポップアップとしての表示機能を担当しています。
ポップアップとして、何を表示するかはコンポーネントを呼ぶ側が自由に設定できるようにしています。

表示内容の設定

サンプルコードでは、SpreadComponentを表示するようにしています。
表示内容は<ChildContent>タグで囲った部分が、ポップアップとして表示されます。

表示非表示の切り替え

Visibleパラメータによって、表示非表示を切り替えています。
サンプルコードでは、ボタン押下時とテーブルの行選択時の2パターンでポップアップが表示されるようにしています。

Discussion