3900-MyRecipes-backup / Client / Pages / Modal.razor
Modal.razor
Raw
<!--Prompt to be displayed, can be used for various action-->

<div class="modal fade show" id="myModal" style="display:block; background-color: rgba(10, 10, 10, 0.5);"  aria-modal="true" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">@Title</h5>
                <button type="button" class="close" @onclick="@ModalCancel">&times;</button>
            </div>
            <div class="modal-body">
                <p>@Text</p>
                @if (PromptType == ModalType.Shopping)
                {
                    <iframe src=@ShopURL height=500 width=465></iframe>
                }
            </div>
            <div class="modal-footer">
                @switch (PromptType)
                {
                    case ModalType.Ok:
                        <button type="button" class="btn btn-primary" @onclick="@ModalOk">OK</button>
                        break;
                    case ModalType.DeleteCancel:
                        <button type="button" class="btn btn-secondary" @onclick="@ModalCancel">Cancel</button>
                        <button type="button" class="btn btn-danger" @onclick="@ModalOk">Delete</button>
                        break;
                    case ModalType.UnsubscribeCancel:
                        <button type="button" class="btn btn-secondary" @onclick="@ModalCancel">Cancel</button>
                        <button type="button" class="btn btn-danger" @onclick="@ModalOk">Unsubscribe</button>
                        break;
                    case ModalType.Shopping:
                        <button type="button" class="btn btn-secondary" @onclick="@ModalOk">Close</button>
                        break;
                }

            </div>
        </div>
    </div>
</div>



@code {
    [Parameter]
    public string Title { get; set; }

    [Parameter]
    public string ShopURL { get; set; }

    [Parameter]
    public string Text { get; set; }

    [Parameter]
    public EventCallback<bool> OnClose { get; set; }

    [Parameter]
    public ModalType PromptType { get; set; }

    private Task ModalCancel()
    {
        return OnClose.InvokeAsync(false);
    }

    private Task ModalOk()
    {
        return OnClose.InvokeAsync(true);
    }

    public enum ModalType
    {
        Ok,
        DeleteCancel,
        UnsubscribeCancel,
        Shopping
    }
}