Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for SaveChangeBaseDialog DeleteBaseDialog #32

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<Router AppAssembly="@typeof(App).Assembly">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
</Found>
<NotFound>
<PageTitle>Not found</PageTitle>
<LayoutView Layout="@typeof(MainLayout)">
<p role="alert">Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.14" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.14" PrivateAssets="all" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.25" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="6.0.25" PrivateAssets="all" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\EasyMicroservices.UI.BlazorComponents\EasyMicroservices.UI.BlazorComponents.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
@using MudBlazor
@inherits LayoutComponentBase

<MudThemeProvider />
<MudDialogProvider />
<MudSnackbarProvider />

<MudLayout>
<MudMainContent>
@Body
</MudMainContent>
</MudLayout>
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace EasyMicroservices.UI.BlazorComponents.UITests.Models;

public class TestDeleteModel
{
public string Name { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
@page "/"
@using EasyMicroservices.ServiceContracts
@using MudBlazor;
@using EasyMicroservices.UI.BlazorComponents;
@using EasyMicroservices.UI.BlazorComponents.UITests.Models

<MudTabs Elevation="2" Rounded="true" ApplyEffectsToContainer="true" PanelClass="pa-6">
<MudTabPanel Text="Delete">
<MudButton OnClick="OnDelete" Color="Color.Error" Variant="Variant.Filled">
Delete
</MudButton>
</MudTabPanel>
<MudTabPanel Text="Async Delete">
<MudButton OnClick="OnDeleteAsync" Color="Color.Error" Variant="Variant.Filled">
Delete
</MudButton>
</MudTabPanel>
<MudTabPanel Text="Save">
<MudButton OnClick="OnSave" Color="Color.Success" Variant="Variant.Filled">
Add
</MudButton>
</MudTabPanel>
<MudTabPanel Text="Async Save">
<MudButton OnClick="OnSaveAsync" Color="Color.Success" Variant="Variant.Filled">
Update
</MudButton>
</MudTabPanel>
</MudTabs>

<DeleteBaseDialog @ref="deleteDialog" SuccessMessage="Success" TItem="TestDeleteModel"></DeleteBaseDialog>
<SaveChangeBaseDialog @ref="saveDialog" SuccessMessage="Success Saved" TItem="TestDeleteModel">
<DialogContent>
<MudStack>
<MudText>this is content of saving</MudText>
</MudStack>
</DialogContent>
</SaveChangeBaseDialog>
@code {
DeleteBaseDialog<TestDeleteModel> deleteDialog;
SaveChangeBaseDialog<TestDeleteModel> saveDialog;

bool hasError = true;
void OnDelete()
{
deleteDialog.BindViewModel = new DialogBaseViewModel();
deleteDialog.ShowDeleteDialog(new TestDeleteModel() { Name = "Ali" }, (item) =>
{
hasError = !hasError;
if (hasError)
return (FailedReasonType.AccessDenied, "Example Access Denied!");
else
return true;
});
}

void OnDeleteAsync()
{
deleteDialog.BindViewModel = new DialogBaseViewModel();
deleteDialog.ShowDeleteDialogAsync(new TestDeleteModel() { Name = "Ali Async" }, async (item) =>
{
await Task.Delay(3000);
hasError = !hasError;
if (hasError)
return (FailedReasonType.AccessDenied, "Example Access Denied!");
else
return true;
});
}

void OnSave()
{
saveDialog.BindViewModel = new DialogBaseViewModel();
saveDialog.ShowSaveDialog(new TestDeleteModel() { Name = "Ali" }, (item) =>
{
hasError = !hasError;
if (hasError)
return (FailedReasonType.AccessDenied, "Example Access Denied!");
else
return true;
});
}
void OnSaveAsync()
{
saveDialog.BindViewModel = new DialogBaseViewModel();
saveDialog.ShowSaveDialogAsync(new TestDeleteModel() { Name = "Ali" }, async (item) =>
{
await Task.Delay(3000);
hasError = !hasError;
if (hasError)
return (FailedReasonType.AccessDenied, "Example Access Denied!");
else
return true;
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using EasyMicroservices.UI.BlazorComponents;
using EasyMicroservices.UI.BlazorComponents.UITests;
using EasyMicroservices.UI.Cores;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using MudBlazor;
using MudBlazor.Services;

LoadLanguage("en-US");

var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");

builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddTransient<DialogBaseViewModel>();
builder.Services.AddMudServices(config =>
{
config.SnackbarConfiguration.PositionClass = Defaults.Classes.Position.BottomLeft;
});
await builder.Build().RunAsync();
void LoadLanguage(string languageShortName)
{
BaseViewModel.CurrentApplicationLanguage = languageShortName;
BaseViewModel.AppendLanguage("Save", "Save");
BaseViewModel.AppendLanguage("SaveDialog_Title", "Save");
BaseViewModel.AppendLanguage("Saving", "Saving");
BaseViewModel.AppendLanguage("Delete", "Delete");
BaseViewModel.AppendLanguage("Delete_Title", "Delete");
BaseViewModel.AppendLanguage("Deleting", "Deleting");
BaseViewModel.AppendLanguage("Cancel", "Cancel");
BaseViewModel.AppendLanguage("DeleteQuestion_Content", "Do you?");
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"iisSettings": {
"iisExpress": {
"applicationUrl": "http://localhost:34110",
"sslPort": 0
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "http://localhost:5281",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.JSInterop
@using EasyMicroservices.UI.BlazorComponents.UITests
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
h1:focus {
outline: none;
}

#blazor-error-ui {
background: lightyellow;
bottom: 0;
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
display: none;
left: 0;
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
position: fixed;
width: 100%;
z-index: 1000;
}

#blazor-error-ui .dismiss {
cursor: pointer;
position: absolute;
right: 0.75rem;
top: 0.5rem;
}

.blazor-error-boundary {
background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
padding: 1rem 1rem 1rem 3.7rem;
color: white;
}

.blazor-error-boundary::after {
content: "An error has occurred."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8" />
<title>EasyMicroservices.UI.BlazorComponents.UITests</title>
<base href="/" />
<link href="css/app.css" rel="stylesheet" />

<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet" />
<link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet" />

<!-- If you add any scoped CSS files, uncomment the following to load them
<link href="EasyMicroservices.UI.BlazorComponents.UITests.styles.css" rel="stylesheet" /> -->
</head>

<body>
<div id="app">Loading...</div>

<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<script src="_framework/blazor.webassembly.js"></script>
<script src="_content/MudBlazor/MudBlazor.min.js"></script>
</body>

</html>
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "App", "App", "{13E6A614-284
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EasyMicroservices.UI.Cores.Mvvm", "..\Cores\EasyMicroservices.UI.Cores.Mvvm\EasyMicroservices.UI.Cores.Mvvm.csproj", "{CCEEDCC5-B976-4B0B-A293-7D91B893612D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyMicroservices.UI.BlazorComponents.UITests", "EasyMicroservices.UI.BlazorComponents.UITests\EasyMicroservices.UI.BlazorComponents.UITests.csproj", "{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -43,12 +45,25 @@ Global
{CCEEDCC5-B976-4B0B-A293-7D91B893612D}.Release|x64.Build.0 = Release|x64
{CCEEDCC5-B976-4B0B-A293-7D91B893612D}.Release|x86.ActiveCfg = Release|x86
{CCEEDCC5-B976-4B0B-A293-7D91B893612D}.Release|x86.Build.0 = Release|x86
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Debug|x64.ActiveCfg = Debug|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Debug|x64.Build.0 = Debug|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Debug|x86.ActiveCfg = Debug|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Debug|x86.Build.0 = Debug|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Release|Any CPU.Build.0 = Release|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Release|x64.ActiveCfg = Release|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Release|x64.Build.0 = Release|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Release|x86.ActiveCfg = Release|Any CPU
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{86DEB4A1-E776-461D-9C09-B0484799E6FA} = {13E6A614-2843-4B9B-A175-7C6D66E141E0}
{A1612717-15E7-41FF-ADAB-AC7AFD4F5E6C} = {13E6A614-2843-4B9B-A175-7C6D66E141E0}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {06F00B56-54D5-4A4D-957D-24527B0347ED}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,17 +85,20 @@
}
IsNeedToShow = true;
IsShowDialog = true;
dialog.Show();
}

public void ShowDialog(Func<Task> onAfterLoad)
{
_onAfterLoadAsync = onAfterLoad;
IsNeedToShow = true;
IsShowDialog = true;
dialog.Show();
}

public void CloseDialog()
{
IsShowDialog = false;
dialog.Close();
}
}
Loading
Loading