MudBlazor.Extensions
1.7.64-d2307181158
See the version list below for details.
dotnet add package MudBlazor.Extensions --version 1.7.64-d2307181158
NuGet\Install-Package MudBlazor.Extensions -Version 1.7.64-d2307181158
<PackageReference Include="MudBlazor.Extensions" Version="1.7.64-d2307181158" />
paket add MudBlazor.Extensions --version 1.7.64-d2307181158
#r "nuget: MudBlazor.Extensions, 1.7.64-d2307181158"
// Install MudBlazor.Extensions as a Cake Addin #addin nuget:?package=MudBlazor.Extensions&version=1.7.64-d2307181158&prerelease // Install MudBlazor.Extensions as a Cake Tool #tool nuget:?package=MudBlazor.Extensions&version=1.7.64-d2307181158&prerelease
CI Stats
MudBlazor.Extensions
MudBlazor.Extensions is a extension library for MudBlazor Component library from https://mudblazor.com
Demos
MudBlazor.Extensions
The MudBlazor.Extensions is a convenient package that extends the capabilities of the MudBlazor component library. This guide will demonstrate the setup process for your project, along with detailed explanations of the components, extensions, and functionalities provided.
It's important to note that this package requires a MudBlazor project and the referenced MudBlazor package. For further information and assistance, please visit the official MudBlazor documentation at MudBlazor and MudBlazor/Templates.
Table of Contents
Installation
The installation process is straightforward. All you need to do is add the MudBlazor.Extensions
NuGet package to your Blazor project. You can do this using the following code:
<PackageReference Include="MudBlazor.Extensions" Version="*" />
Setting Up MudBlazor.Extensions
Setting up MudBlazor.Extensions involves three steps:
- Update the
_Imports.razor
with the following lines:
@using MudBlazor.Extensions
@using MudBlazor.Extensions.Components
@using MudBlazor.Extensions.Components.ObjectEdit
- Register MudBlazor.Extensions in your
Startup.cs
in theConfigureServices
method.
// use this to add MudServices and the MudBlazor.Extensions
builder.Services.AddMudServicesWithExtensions();
// or this to add only the MudBlazor.Extensions
builder.Services.AddMudExtensions();
- (Optional) Define default dialogOptions.
builder.Services.AddMudServicesWithExtensions(c =>
{
c.WithDefaultDialogOptions(ex =>
{
ex.Position = DialogPosition.BottomRight;
});
});
Please note: The dialog extensions are static, hence, you need to set the IJSRuntime somewhere in your code, for example, in your App.razor
or MainLayout.razor
in the OnAfterRenderAsync
method. This is not a requirement but it does save you from passing the IJSRuntime in every DialogOptionsEx
.
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
await JsRuntime.InitializeMudBlazorExtensionsAsync();
await base.OnAfterRenderAsync(firstRender);
}
Showcase
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/39e06d88-a947-43cd-9151-a7cf96bcd849
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/3c77b8bf-6198-4385-b452-f25cc2852e0a
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/ce9bdf86-aaf9-4f04-b861-bd57698bb7f5
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/6b054bdc-a413-437c-8dbb-ded4e242d2a7
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/57f39cec-c3e9-43aa-8bfe-260d9aa05f63
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/c6a0e47d-2ed6-4a4e-b2b8-f4963274c9f8
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/3fc658d7-7fa2-487e-98d2-91860e00374a
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/aa266253-f1ac-450d-bd7b-510d2b99e3c0
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/cf4ff772-953e-4462-90fc-b32249083fb8
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/79bccec3-9e04-4901-a7d2-a08c9cef031c
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/8963eaaa-0f96-4c76-8e3c-c945920b2c23
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/cd5bab33-75cd-442d-a156-f43cc3a1c78c
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/8545a70c-1ce2-4683-8f1e-40a69efe462b
https://github.com/fgilde/MudBlazor.Extensions/assets/11070717/5c736020-94ba-431a-94f7-8e437530978e
Components
This section introduces you to the various components provided by the MudBlazor.Extensions.
MudExObjectEdit
The MudExObjectEdit
is a robust component that allows for object editing and automatically generates the corresponding UI. This component supports automatic validation for DataAnnotation Validations or fluent registered validations for your model.
To use MudExObjectEdit
, you can simply use the MudExObjectEditForm
and pass your model to it as shown below:
<MudExObjectEditForm OnValidSubmit="@OnSubmit" Value="@MyModel"></MudExObjectEditForm>
You can also utilize the MudExObjectEditDialog
to edit your model in a dialog. The easiest way to do this is by using the extension method EditObject
on the IDialogService
.
dialogService.EditObject(User, "Dialog Title", dialogOptionsEx);
MudExFileDisplay
The MudExFileDisplay
component is designed to display file contents, such as a preview before uploading or for referenced files.
This component can automatically handle URLs or streams and deliver the best possible display.
Additionally, you can implement IMudExFileDisplay
in your own component to register a custom file display.
This is excacly what MudExFileDisplayZip
does, which is used by MudExFileDisplay
to display zip files or what MudExFileDisplayMarkdown
does to display markdown files.
Example of using MudExFileDisplay
:
<MudExFileDisplay FileName="NameOfYourFile.pdf" ContentType="application/pdf" Url="@Url"></MudExFileDisplay>
MudExFileDisplayZip
This component can be automatically utilized by MudExFileDisplay
, but can also be used manually if necessary.
<MudExFileDisplayZip AllowDownload="@AllowDownload" RootFolderName="@FileName" ContentStream="@ContentStream" Url="@Url"></MudExFileDisplayZip>
MudExFileDisplayDialog
A small dialog for the MudExFileDisplay
Component. It can be used with static helpers as shown below:
await MudExFileDisplayDialog.Show(_dialogService, dataUrl, request.FileName, request.ContentType, ex => ex.JsRuntime = _jsRuntime);
It can be used directly with an IBrowserFile:
IBrowserFile file = File;
await MudExFileDisplayDialog.Show(_dialogService, file, ex => ex.JsRuntime = _jsRuntime);
Or it can be used manually with the MudBlazor dialogService:
var parameters = new DialogParameters
{
{nameof(Icon), BrowserFileExtensions.IconForFile(contentType)},
{nameof(Url), url},
{nameof(ContentType), contentType}
};
await dialogService.ShowEx<MudExFileDisplayDialog>(title, parameters, optionsEx);
MudExUploadEdit
This component provides multi-file upload functionality, with features like duplicate checks, max size, specific allowed content types, max items, zip auto-extract, and many more.
Extensions
Resizable or Draggable Dialogs
You can make your dialogs resizable or draggable using the following code snippet:
var options = new DialogOptionsEx { Resizeable = true, DragMode = MudDialogDragMode.Simple, CloseButton = true, FullWidth = true };
var dialog = await _dialogService.ShowEx<YourMudDialog>("Your Dialog Title", parameters, options);
Adding a Maximize Button
You can add a maximize button to your dialogs with the following code:
var options = new DialogOptionsEx { MaximizeButton = true, CloseButton = true };
var dialog = await _dialogService.ShowEx<YourMudDialog>("Your Dialog Title", parameters, options);
Adding Custom Buttons
To add custom buttons to your dialog, first define the callback methods as JSInvokable
in your component code:
[JSInvokable]
public void AlarmClick()
{
// OnAlarmButton Click
}
[JSInvokable]
public void ColorLensClick()
{
// OnColorLensButton Click
}
Next, define your custom buttons:
var buttons = new[]
{
new MudDialogButton( DotNetObjectReference.Create(this as object), nameof(AlarmClick)) {Icon = Icons.Material.Filled.Alarm},
new MudDialogButton( DotNetObjectReference.Create(this as object), nameof(ColorLensClick)) {Icon = Icons.Material.Filled.ColorLens},
};
Finally, add your custom buttons to the dialog:
var options = new DialogOptionsEx { MaximizeButton = true, CloseButton = true, Buttons = buttons };
var dialog = await _dialogService.ShowEx<YourMudDialog>("Your Dialog Title", parameters, options);
Your dialog can now look like this:
Using Animation to Show Dialog
You can use animation to display your dialog. This is done by setting the Animation
property of DialogOptionsEx
.
var options = new DialogOptionsEx {
MaximizeButton = true,
CloseButton = true,
Buttons = buttons,
Position = DialogPosition.CenterRight,
Animation = AnimationType.SlideIn,
AnimationDuration = TimeSpan.FromMilliseconds(500),
FullHeight = true
};
var dialog = await _dialogService.ShowEx<YourMudDialog>("Your Dialog Title", parameters, options);
When you animate a dialog with dialogServiceEx, it's recommended to add the class mud-ex-dialog-initial
to your dialog to ensure no visibility before animation.
<MudDialog Class="mud-ex-dialog-initial">
NOTE: All animations can be used on other components as well. Currently, the following animations are supported:
SlideIn,FadeIn,Scale,Slide,Fade,Zoom,Roll,JackInTheBox,Hinge,Rotate,Bounce,Back,Jello,Wobble,Tada,Swing,HeadShake,Shake,RubberBand,Pulse,Flip,FlipX,FlipY
.
Using Extension Method with an Action<YourDialog>
Instead of using DialogParameters
, you can call the extension method with an Action<YourDialog>
await dialogService.ShowEx<SampleDialog>("Simple Dialog", dialog => { dialog.ContentMessage = "Hello"; },options);
Conclusion
This README file provides an overview of the MudBlazor.Extensions library, which is designed to simplify and enhance the development process in Blazor using MudBlazor. The library contains a variety of components, extensions, and features that aim to reduce the time and effort required to build intricate UIs. For additional information or help, visit the official MudBlazor website or MudBlazor GitHub repository.
We hope you find this library helpful and encourage you to provide any feedback or contribute to its development.
License
MudBlazor.Extensions is released under the MIT License. See the bundled LICENSE file for details.
Change Log
Latest Changes:
- 1.7.63 > Use MudMarkdown as IMudExFileDisplay to support markdown files in MudExFileDisplay
- 1.7.63 > Add new option to allow copy url to clipboard in MudExFileDisplay
- 1.7.63 > Fix bug in [MudExThemeEdit](https://www.mudex.org/theme-ed it) where component wasnt loaded if its rendered in a dialog.
- 1.7.62 > Update all nuget packages to latest versions. Now using MudBlazor 6.7.0
- 1.7.61 > Breaking: Rename: Move namespace for Css enums like CssUnit, BorderStyle etc from MudBlazor.Extensions.Core to MudBlazor.Extensions.Core.Css
- 1.7.61 > new Component MudExIconPicker to select icons. Used in API overview and in ComponentGrid as MudExObjectedit config.
- 1.7.60 > Better component support for MudExObjectEdit
- 1.7.59 > Add Parameters for Typo and preview size in ThemeSelect
- 1.7.56 > Support default border radius in MudExThemeSelect
- 1.7.55 > new Component MudExThemeEdit to edit theme(s) and presets of themes as easy as possible and supports all options from your inherited MudThemes.
Full change log can be found here
Planned Features
Notice this is just a first preview version. There are some features planned like
- Dragging with snap behaviour
If you like this package, please star it on GitHub and share it with your friends If not, you can give a star anyway and let me know what I can improve to make it better for you.
Links
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Blazored.FluentValidation (>= 2.1.0)
- BlazorJS (>= 2.0.6)
- BuildBundlerMinifier (>= 3.2.449)
- Microsoft.AspNetCore.Components.Web (>= 6.0.16)
- Microsoft.AspNetCore.StaticFiles (>= 2.2.0)
- Microsoft.Extensions.FileProviders.Embedded (>= 6.0.16)
- MudBlazor (>= 6.7.0)
- MudBlazor.Markdown (>= 0.1.1)
- Nextended.Blazor (>= 7.0.27)
- Nextended.Core (>= 7.0.28)
- OneOf (>= 3.0.255)
- PSC.Blazor.Components.BrowserDetect (>= 1.0.11)
-
net7.0
- Blazored.FluentValidation (>= 2.1.0)
- BlazorJS (>= 2.0.6)
- BuildBundlerMinifier (>= 3.2.449)
- Microsoft.AspNetCore.Components.Web (>= 7.0.8)
- Microsoft.AspNetCore.StaticFiles (>= 2.2.0)
- Microsoft.Extensions.FileProviders.Embedded (>= 7.0.8)
- MudBlazor (>= 6.7.0)
- MudBlazor.Markdown (>= 0.1.1)
- Nextended.Blazor (>= 7.0.27)
- Nextended.Core (>= 7.0.28)
- OneOf (>= 3.0.255)
- PSC.Blazor.Components.BrowserDetect (>= 1.0.11)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on MudBlazor.Extensions:
Package | Downloads |
---|---|
MudExRichTextEditor
MudExRichTextEditor is a custom reusable control that allows us to easily consume Quill combining in a MudBlazor project. |
|
Corsinvest.AppHero.Core.MudBlazorUI
Package Description |
|
MudExObjectEdit.CodeGatorAdapter
This is a small package to combine CG.Blazor.Forms with the MudExObjectEdit from MudBlazor.Extensions |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on MudBlazor.Extensions:
Repository | Stars |
---|---|
DragoQCC/HardHatC2
A C# Command & Control framework
|
|
fgilde/MudBlazor.Extensions
MudBlazor.Extensions from https://www.mudex.org is a small extension for MudBlazor from https://mudblazor.com
|