Skip to content

Commit

Permalink
Merge pull request #28 from MADE-Apps/feature/richedittoolbar
Browse files Browse the repository at this point in the history
#11 - Added RichEditToolbar control
  • Loading branch information
jamesmcroft committed Mar 14, 2022
2 parents 91a580c + 35b42b0 commit 7986008
Show file tree
Hide file tree
Showing 43 changed files with 1,921 additions and 6 deletions.
73 changes: 73 additions & 0 deletions MADE-Uno.sln
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MADE.UI.ViewManagement", "s
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MADE.UI.Controls.ChipBox", "src\MADE.UI.Controls.ChipBox\MADE.UI.Controls.ChipBox.csproj", "{D1A16208-5A34-4CC1-B175-01B5AC99E69E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MADE.UI.Controls.RichEditToolbar", "src\MADE.UI.Controls.RichEditToolbar\MADE.UI.Controls.RichEditToolbar.csproj", "{258FB310-DC02-488C-97C7-CD1226EAAEC8}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
samples\MADE.Samples\MADE.Samples.Shared\MADE.Samples.Shared.projitems*{04f1b32d-9056-43fc-b4c2-b8c5481bdacb}*SharedItemsImports = 4
Expand Down Expand Up @@ -1032,6 +1034,76 @@ Global
{D1A16208-5A34-4CC1-B175-01B5AC99E69E}.Release|x64.Build.0 = Release|Any CPU
{D1A16208-5A34-4CC1-B175-01B5AC99E69E}.Release|x86.ActiveCfg = Release|Any CPU
{D1A16208-5A34-4CC1-B175-01B5AC99E69E}.Release|x86.Build.0 = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|ARM.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|ARM64.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|ARM64.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|iPhone.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|x64.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|x64.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|x86.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.AppStore|x86.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|ARM.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|ARM.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|ARM64.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|iPhone.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|x64.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|x64.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|x86.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Debug|x86.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|Any CPU.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|Any CPU.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|ARM.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|ARM.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|ARM64.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|ARM64.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|iPhone.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|iPhone.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|iPhoneSimulator.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|x64.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|x64.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|x86.ActiveCfg = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Package|x86.Build.0 = Debug|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|Any CPU.Build.0 = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|ARM.ActiveCfg = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|ARM.Build.0 = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|ARM64.ActiveCfg = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|ARM64.Build.0 = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|iPhone.ActiveCfg = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|iPhone.Build.0 = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|x64.ActiveCfg = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|x64.Build.0 = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|x86.ActiveCfg = Release|Any CPU
{258FB310-DC02-488C-97C7-CD1226EAAEC8}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -1053,6 +1125,7 @@ Global
{F8D00106-0598-45E7-B92E-EF408249C02E} = {01380FB8-F8A7-4416-AABA-5407574B7723}
{442D1E25-FFD1-405D-A1FC-40CAFCAD190C} = {01380FB8-F8A7-4416-AABA-5407574B7723}
{D1A16208-5A34-4CC1-B175-01B5AC99E69E} = {01380FB8-F8A7-4416-AABA-5407574B7723}
{258FB310-DC02-488C-97C7-CD1226EAAEC8} = {01380FB8-F8A7-4416-AABA-5407574B7723}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3921AD86-E6C0-4436-8880-2D9EDFAD6151}
Expand Down
Binary file modified assets/SampleIcons.afdesign
Binary file not shown.
125 changes: 125 additions & 0 deletions docs/articles/features/ui-controls-richedittoolbar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
---
uid: package-ui-controls-richedittoolbar
title: Using the RichEditToolbar control
---

# Using the RichEditToolbar control

The `MADE.UI.Controls.RichEditToolbar` element is a custom-built UI element that works with [Uno's supported platforms](https://platform.uno/) that provides customizable and extensible collection of buttons that activate rich text features in an associated [RichEditBox](https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.RichEditBox?view=winrt-22000).

Shown below is the visuals for the control in its default state.

<img src="../../images/RichEditToolbar.png" alt="RichEditToolbar with default button options" />

## Example usage

```xml
<Page
x:Class="ChipBoxSample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:MADE.UI.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:win="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
mc:Ignorable="d">

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>

<controls:RichEditToolbar
x:Name="RichEditToolbarControl"
TargetRichEditBox="{x:Bind RichEditBox}"
ShowFontSizeOptions="True"
ShowTextColorOptions="True"
ShowListStyleOptions="True">
<controls:RichEditToolbar.CustomOptions>
<AppBarSeparator />
<AppBarButton x:Name="SaveButton" Icon="Save" Label="Save" />
<AppBarButton x:Name="UndoButton" Icon="Undo" Label="Undo" />
<AppBarButton x:Name="RedoButton" Icon="Redo" Label="Redo" />
</controls:RichEditToolbar.CustomOptions>
</controls:RichEditToolbar>

<win:RichEditBox x:Name="RichEditBox" Grid.Row="1" />
</Grid>
</Page>
```

## Supporting Uno Platform

Unfortunately, Uno Platform doesn't currently support the use of `RichEditBox`.

The control has been custom built now to structure around the unsupported direct attachment to a `RichEditBox` exposing events that allow a developer to use the control in a different context in Uno Platform applications.

You can listen for these changes by hooking onto the following `RichEditToolbar` events:

- FontSizeChanged
- FontStyleChanged
- TextColorChanged
- ListStyleChanged

These are fired when the user changes the font size, font style, text color, or list style. Each event provides an event argument that provides the new values for that setting.

## Customizing the ChipBox

The control has many customization properties that are exposed to tailor the experience for your application.

### Custom toolbar options

As well as the out-of-the-box options available, the `RichEditToolbar` allows developers to extend the options with additional custom options.

These can be added to the `CustomOptions` collection on the control either via XAML or in code.

```xml
<controls:RichEditToolbar>
<controls:RichEditToolbar.CustomOptions>
<AppBarButton x:Name="SaveButton" Icon="Save" Label="Save" />
<AppBarButton x:Name="UndoButton" Icon="Undo" Label="Undo" />
<AppBarButton x:Name="RedoButton" Icon="Redo" Label="Redo" />
</controls:RichEditToolbar.CustomOptions>
</controls:RichEditToolbar>
```

### Custom text color options

Exposed on the `RichEditToolbar` is a `CustomTextColorOptions` property that allows you to provide your own custom set of colors to display in the text color options panel.

Here's an example of adding these via code.

```csharp
private static readonly IList<RichEditToolbarTextColorOption> CustomTextColorOptions =
new List<RichEditToolbarTextColorOption>
{
new() {Name = "Pastel pink", Color = "#ff80ff"},
new() {Name = "Pastel orange", Color = "#ffc680"},
new() {Name = "Pastel yellow", Color = "#ffff80"},
new() {Name = "Pastel green", Color = "#80ff9e"},
new() {Name = "Pastel blue", Color = "#80d6ff"},
new() {Name = "Pastel purple", Color = "#bcb3ff"},
};

this.RichEditToolbar.CustomTextColorOptions = this.CustomTextColorOptions;
```

### Showing font size options

By default, font size options are shown to the user when using the control out-of-the-box.

If these options are not desired, set the `ShowFontSizeOptions` property to `False`.

### Showing text color options

By default, text color options are shown to the user when using the control out-of-the-box.

If these options are not desired, set the `ShowTextColorOptions` property to `False`.

### Showing list style options

By default, list style options are shown to the user when using the control out-of-the-box.

If these options are not desired, set the `ShowListStyleOptions` property to `False`.
Binary file added docs/images/RichEditToolbar.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@
<Project>{774fd8d5-ccc1-4eed-aa14-f7069bfae5ce}</Project>
<Name>MADE.UI.Controls.FilePicker</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\MADE.UI.Controls.RichEditToolbar\MADE.UI.Controls.RichEditToolbar.csproj">
<Project>{258fb310-dc02-488c-97c7-cd1226eaaec8}</Project>
<Name>MADE.UI.Controls.RichEditToolbar</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\MADE.UI.Controls.Validator\MADE.UI.Controls.Validator.csproj">
<Project>{e2b20928-dae2-4a9c-bdaf-d787b4f48391}</Project>
<Name>MADE.UI.Controls.Validator</Name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,11 @@ private static ICollection<SampleGroup> GetSampleGroups()
new Sample(
"InputValidator",
typeof(InputValidatorPage),
"/Features/Samples/Assets/InputValidator/InputValidator.png")
"/Features/Samples/Assets/InputValidator/InputValidator.png"),
new Sample(
"RichEditToolbar",
typeof(RichEditToolbarPage),
"/Features/Samples/Assets/RichEditToolbar/RichEditToolbar.png")
}
};

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// When used in an Uno Platform app, RichEditBox is not supported so the TargetRichEditBox must be set in code.
this.CustomRichEditToolbarControl.TargetRichEditBox = this.CustomRichEditBox;
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>

<made:RichEditToolbar
x:Name="CustomRichEditToolbarControl"
ShowFontSizeOptions="True"
ShowTextColorOptions="True"
ShowListStyleOptions="True">
<made:RichEditToolbar.CustomOptions>
<AppBarSeparator />
<AppBarButton x:Name="SaveButton" Icon="Save" Label="Save" />
<AppBarButton x:Name="UndoButton" Icon="Undo" Label="Undo" />
<AppBarButton x:Name="RedoButton" Icon="Redo" Label="Redo" />
</made:RichEditToolbar.CustomOptions>
</made:RichEditToolbar>

<win:RichEditBox x:Name="CustomRichEditBox" Grid.Row="1" />
</Grid>
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<pages:MvvmPage
x:Class="MADE.Samples.Features.Samples.Pages.RichEditToolbarPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:made="using:MADE.UI.Controls"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:pages="using:MADE.UI.Views.Navigation.Pages"
xmlns:samples="using:MADE.Samples.Infrastructure.Controls"
xmlns:win="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>

<win:CommandBar>
<win:CommandBar.Content>
<Button
x:Name="BackButton"
VerticalAlignment="Top"
Command="{x:Bind ViewModel.GoBackCommand}"
IsEnabled="{x:Bind Frame.CanGoBack, Mode=OneWay}"
Style="{StaticResource NavigationBackButtonNormalStyle}"
ToolTipService.ToolTip="Back" />
</win:CommandBar.Content>
</win:CommandBar>

<Grid Grid.Row="1" Padding="16">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>

<TextBlock
Margin="0,0,0,16"
Style="{StaticResource TitleTextBlockStyle}"
Text="RichEditToolbar control" />

<TextBlock
Grid.Row="1"
Margin="0,0,0,24"
Style="{StaticResource BaseTextBlockStyle}"
Text="The RichEditToolbar is a custom-built UI element that provides customizable and extensible collection of buttons that activate rich text features in an associated RichEditBox." />

<ScrollViewer Grid.Row="2">
<Grid>
<samples:SampleControl
CodeSource="RichEditToolbar/CustomRichEditToolbarCode.txt"
SampleName="A RichEditToolbar showing standard font style, size, and color options, plus additional buttons"
XamlSource="RichEditToolbar/CustomRichEditToolbarXaml.txt">
<samples:SampleControl.Sample>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>

<made:RichEditToolbar x:Name="CustomRichEditToolbarControl">
<made:RichEditToolbar.CustomOptions>
<AppBarSeparator />
<AppBarButton x:Name="SaveButton" Icon="Save" Label="Save" />
<AppBarButton x:Name="UndoButton" Icon="Undo" Label="Undo" />
<AppBarButton x:Name="RedoButton" Icon="Redo" Label="Redo" />
</made:RichEditToolbar.CustomOptions>
</made:RichEditToolbar>

<win:RichEditBox x:Name="CustomRichEditBox" Grid.Row="1" />
</Grid>
</samples:SampleControl.Sample>
</samples:SampleControl>
</Grid>
</ScrollViewer>
</Grid>
</Grid>
</pages:MvvmPage>
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
namespace MADE.Samples.Features.Samples.Pages
{
using CommunityToolkit.Mvvm.Messaging;
using MADE.Samples.Features.Samples.ViewModels;
using MADE.UI.Views.Navigation;
using MADE.UI.Views.Navigation.Pages;
using Microsoft.Extensions.DependencyInjection;

public sealed partial class RichEditToolbarPage : MvvmPage
{
public RichEditToolbarPage()
{
this.InitializeComponent();
this.DataContext = new RichEditToolbarPageViewModel(
App.Services.GetService<INavigationService>(),
App.Services.GetService<IMessenger>());

#if WINDOWS_UWP
this.CustomRichEditToolbarControl.TargetRichEditBox = this.CustomRichEditBox;
#endif
}

public RichEditToolbarPageViewModel ViewModel => this.DataContext as RichEditToolbarPageViewModel;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
namespace MADE.Samples.Features.Samples.ViewModels
{
using CommunityToolkit.Mvvm.Messaging;
using MADE.UI.Views.Navigation;
using MADE.UI.Views.Navigation.ViewModels;

public class RichEditToolbarPageViewModel : PageViewModel
{
public RichEditToolbarPageViewModel(INavigationService navigationService, IMessenger messenger)
: base(navigationService, messenger)
{
}
}
}

0 comments on commit 7986008

Please sign in to comment.