ModalDialog - with example
This commit is contained in:
parent
125fa85d6e
commit
eea562dde0
@ -24,6 +24,8 @@
|
|||||||
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Watch Remove="Pages\ComponentsExamples\ButtonExample.razor" />
|
||||||
|
<Watch Remove="Pages\ComponentsExamples\ModalDialogExample.razor" />
|
||||||
<Watch Remove="Program.cs" />
|
<Watch Remove="Program.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
@page "/button"
|
||||||
|
@using Connected.Components;
|
||||||
|
@using Connected.Enums;
|
||||||
|
@using Connected.Models.Modal;
|
||||||
|
@using Connected.Models;
|
||||||
|
@using Connected.Services;
|
||||||
|
@using Connected.Utilities;
|
||||||
|
|
||||||
|
<h1 style="text-align:center;">BUTTON EXAMPLE</h1>
|
||||||
|
|
||||||
|
<Button OnClick="(()=>TextChange())">Change text default</Button>
|
||||||
|
|
||||||
|
<Button OnClick="(()=>TextChange(Hello))">Change text to - Hello my friend</Button>
|
||||||
|
|
||||||
|
<p>Text: <h4>@text</h4></p>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
string text = "Some random text";
|
||||||
|
|
||||||
|
string Hello = "Hello my friend";
|
||||||
|
|
||||||
|
private void TextChange(string new_text="Some random text.. but new")
|
||||||
|
{
|
||||||
|
text = new_text;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,92 @@
|
|||||||
|
@page "/modal"
|
||||||
|
@using Connected.Components;
|
||||||
|
@using Connected.Enums;
|
||||||
|
@using Connected.Models.Modal;
|
||||||
|
@using Connected.Models;
|
||||||
|
@using Connected.Services;
|
||||||
|
@using Connected.Utilities;
|
||||||
|
|
||||||
|
@inject ModalDialogService modalDialog;
|
||||||
|
|
||||||
|
|
||||||
|
<h1 style="text-align:center;">MODAL DIALOG EXAMPLE</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<Button OnClick="OpenModalDialog">Open dialog</Button>
|
||||||
|
|
||||||
|
<p>Modal result: @test_modal_result</p>
|
||||||
|
|
||||||
|
<h4>Value: @value.ToString()</h4>
|
||||||
|
|
||||||
|
|
||||||
|
@code {
|
||||||
|
int value = 0;
|
||||||
|
|
||||||
|
string test_modal_result = string.Empty;
|
||||||
|
|
||||||
|
ModalOptions options = new ModalOptions();
|
||||||
|
|
||||||
|
|
||||||
|
public void OpenModalDialog()
|
||||||
|
{
|
||||||
|
modalDialog.ShowDialog(
|
||||||
|
/*
|
||||||
|
MODAL TITLE
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
"Title",
|
||||||
|
|
||||||
|
/*
|
||||||
|
MODAL CONTENT !!!starting with @
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@<div>
|
||||||
|
<div>Change the number input aand watch the value variable behind the modal change</div>
|
||||||
|
<NumberInput @bind-Value=@value></NumberInput>
|
||||||
|
</div>,
|
||||||
|
|
||||||
|
/*
|
||||||
|
MODAL BUTTONS WITH ACTIONS
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
new List<ModalButton>()
|
||||||
|
{
|
||||||
|
new ModalButton(
|
||||||
|
new Event(ChangeText, new object[]{"OK clicked"}), //event triggered on button click
|
||||||
|
"OK", //button text
|
||||||
|
ModalButtonType.OkButton, //button type: OK, Cancel, Regular
|
||||||
|
true //close modal on click
|
||||||
|
),
|
||||||
|
new ModalButton(
|
||||||
|
new Event(ChangeText, new object[]{"Cancel clicked"}), //event triggered on button click - first parameter = method name, second parameter = method parameters --> array of objects
|
||||||
|
"Cancel", //button text
|
||||||
|
ModalButtonType.CancelButton, //button type: OK, Cancel, Regular
|
||||||
|
true //close modal on click
|
||||||
|
),
|
||||||
|
new ModalButton(
|
||||||
|
new Event(ChangeText, new object[]{"Regular clicked"}), //event triggered on button click - first parameter = method name, second parameter = method parameters --> array of objects
|
||||||
|
"Click me", //button text
|
||||||
|
ModalButtonType.RegularButton, //button type: OK, Cancel, Regular
|
||||||
|
true //close modal on click
|
||||||
|
)
|
||||||
|
},
|
||||||
|
|
||||||
|
/*
|
||||||
|
MODAL OPTIONS
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
new ModalOptions(false,true,false)); //modal dialog options - optional
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ChangeValue(int val)
|
||||||
|
{
|
||||||
|
value = val;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeText(string some_parameter)
|
||||||
|
{
|
||||||
|
test_modal_result = some_parameter;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
}
|
@ -1,33 +1,20 @@
|
|||||||
@page "/"
|
@page "/"
|
||||||
@using Connected.Components;
|
@using Connected.Components;
|
||||||
|
@using Connected.Enums;
|
||||||
@using Connected.Models.Modal;
|
@using Connected.Models.Modal;
|
||||||
|
@using Connected.Models;
|
||||||
@using Connected.Services;
|
@using Connected.Services;
|
||||||
|
@using Connected.Utilities;
|
||||||
|
|
||||||
@inject ModalDialogService modalDialog;
|
<h1 style="text-align:center;">Component Example page</h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><Link Class="m-1" Url="modal" Text="Modal dialog" Target="Target.Self" /></li>
|
||||||
|
<li><Link Class="m-1" Url="button" Text="Button" Target="Target.Self" /></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<h1 style="text-align:center;">Component Sandbox</h1>
|
|
||||||
|
|
||||||
|
|
||||||
<Button OnClick="OpenValueDialog">Open dialog</Button>
|
|
||||||
|
|
||||||
<ReturnModal ReturnType="int" @bind-Visible=@ResultDialogShown @bind-Value=@value Title="Dialog1">
|
|
||||||
<NumberInput @bind-Value=@value></NumberInput>
|
|
||||||
</ReturnModal>
|
|
||||||
|
|
||||||
<p>Modal value @value.ToString()</p>
|
|
||||||
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
DateTime date = DateTime.Today;
|
|
||||||
|
|
||||||
int value = 0;
|
|
||||||
bool ResultDialogShown = false;
|
|
||||||
|
|
||||||
|
|
||||||
private void OpenValueDialog()
|
|
||||||
{
|
|
||||||
ResultDialogShown = !ResultDialogShown;
|
|
||||||
StateHasChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -3,4 +3,4 @@
|
|||||||
href="@Url"
|
href="@Url"
|
||||||
target="@_target">
|
target="@_target">
|
||||||
@Text
|
@Text
|
||||||
</a>
|
</a>
|
@ -1,13 +1,14 @@
|
|||||||
using Connected.Enums;
|
using Connected.Enums;
|
||||||
using Connected.Utilities;
|
using Connected.Utilities;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using static Connected.Colors;
|
||||||
|
|
||||||
namespace Connected.Components;
|
namespace Connected.Components;
|
||||||
public partial class Link
|
public partial class Link
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// URL of the link
|
/// URL of the link
|
||||||
/// Options: Any valid web page adress
|
/// Options: Any valid URL adress
|
||||||
/// Default: string.Empty
|
/// Default: string.Empty
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Parameter, EditorRequired]
|
[Parameter, EditorRequired]
|
||||||
@ -49,7 +50,9 @@ public partial class Link
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return new CssBuilder()
|
return new CssBuilder("btn")
|
||||||
|
.AddClass("btn-sm")
|
||||||
|
.AddClass("btn-link-core")
|
||||||
.AddClass(Class)
|
.AddClass(Class)
|
||||||
.Build();
|
.Build();
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,7 @@ public partial class ModalDialog : IDisposable
|
|||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void CloseModal(ModalButton? button)
|
public void CloseModal(ModalButton? button)
|
||||||
{
|
{
|
||||||
if (button is not null)
|
if (button is not null)
|
||||||
|
@ -5,4 +5,21 @@ public class ModalOptions
|
|||||||
public bool DisableBackdropClick { get; set; } = false;
|
public bool DisableBackdropClick { get; set; } = false;
|
||||||
public bool NoHeader { get; set; } = false;
|
public bool NoHeader { get; set; } = false;
|
||||||
|
|
||||||
|
public ModalOptions()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public ModalOptions(ModalOptions options)
|
||||||
|
{
|
||||||
|
DisableBackdropClick = options.DisableBackdropClick;
|
||||||
|
NoHeader = options.NoHeader;
|
||||||
|
DisableEscKey = options.DisableEscKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ModalOptions(bool disableEscKey, bool disableBackdropClick, bool noHeader)
|
||||||
|
{
|
||||||
|
DisableEscKey = disableEscKey;
|
||||||
|
DisableBackdropClick = disableBackdropClick;
|
||||||
|
NoHeader = noHeader;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
namespace Connected.Models.Modal;
|
|
||||||
internal class ModalResult
|
|
||||||
{
|
|
||||||
public object Result { get; set; }
|
|
||||||
}
|
|
@ -1,5 +1,6 @@
|
|||||||
using Connected.Models.Modal;
|
using Connected.Models.Modal;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace Connected.Services;
|
namespace Connected.Services;
|
||||||
public class ModalDialogService
|
public class ModalDialogService
|
||||||
@ -7,15 +8,22 @@ public class ModalDialogService
|
|||||||
public event Action<string, RenderFragment, List<ModalButton>, ModalOptions> OnShow;
|
public event Action<string, RenderFragment, List<ModalButton>, ModalOptions> OnShow;
|
||||||
public event Action OnClose;
|
public event Action OnClose;
|
||||||
|
|
||||||
public void ShowDialog(string title, RenderFragment content, List<ModalButton> buttons, ModalOptions options)
|
public void ShowDialog(string title, RenderFragment Content, List<ModalButton> buttons, ModalOptions options)
|
||||||
{
|
{
|
||||||
OnShow?.Invoke(title, content, buttons, options);
|
var body = Content;
|
||||||
|
OnShow?.Invoke(title, body, buttons, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ShowDialog(string title, MarkupString contentMarkup, List<ModalButton> buttons, ModalOptions options)
|
public void ShowDialog(string title, MarkupString content, List<ModalButton> buttons, ModalOptions options)
|
||||||
{
|
{
|
||||||
var content = new RenderFragment(x => x.AddContent(1, contentMarkup));
|
var body = new RenderFragment(x => x.AddContent(1, content));
|
||||||
OnShow?.Invoke(title, content, buttons, options);
|
OnShow?.Invoke(title, body, buttons, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ShowDialog(string title, MarkupString content, List<ModalButton> buttons)
|
||||||
|
{
|
||||||
|
var body = new RenderFragment(x => x.AddContent(1, content));
|
||||||
|
OnShow?.Invoke(title, body, buttons, new ModalOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -159,4 +160,17 @@ public static class Helper
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static RenderFragment HtmlString(string raw)
|
||||||
|
{
|
||||||
|
return builder => {
|
||||||
|
builder.AddContent(0, raw);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MarkupString HtmlMarkup(string raw)
|
||||||
|
{
|
||||||
|
return (MarkupString)raw;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user