diff --git a/demo/Ursa.Demo/Pages/NavMenuDemo.axaml b/demo/Ursa.Demo/Pages/NavMenuDemo.axaml
index 885d36e..424e03a 100644
--- a/demo/Ursa.Demo/Pages/NavMenuDemo.axaml
+++ b/demo/Ursa.Demo/Pages/NavMenuDemo.axaml
@@ -7,6 +7,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:u="https://irihi.tech/ursa"
xmlns:vm="using:Ursa.Demo.ViewModels"
+ xmlns:iri="https://irihi.tech/shared"
d:DesignHeight="450"
d:DesignWidth="800"
x:CompileBindings="True"
@@ -19,16 +20,10 @@
HorizontalAlignment="Left"
ColumnDefinitions="Auto, Auto"
RowDefinitions="Auto, Auto, *">
-
- Collapse
-
-
+
+
+
-
-
+ Margin="4 12"
+ Background="Transparent"
+ DockPanel.Dock="Left">
+
+
-
+
\ No newline at end of file
diff --git a/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs b/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs
index 66038c1..2abaaf4 100644
--- a/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs
+++ b/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs
@@ -107,6 +107,15 @@ public partial class MainViewViewModel : ViewModelBase
app.RequestedThemeVariant = newValue.Theme;
}
}
+
+ [ObservableProperty] private string? _footerText = "Settings";
+
+ [ObservableProperty] private bool _isCollapsed;
+
+ partial void OnIsCollapsedChanged(bool value)
+ {
+ FooterText = value ? null : "Settings";
+ }
}
public class ThemeItem(string name, ThemeVariant theme)
diff --git a/demo/Ursa.Demo/ViewModels/MenuViewModel.cs b/demo/Ursa.Demo/ViewModels/MenuViewModel.cs
index ebb3867..b044516 100644
--- a/demo/Ursa.Demo/ViewModels/MenuViewModel.cs
+++ b/demo/Ursa.Demo/ViewModels/MenuViewModel.cs
@@ -4,66 +4,96 @@ namespace Ursa.Demo.ViewModels;
public class MenuViewModel : ViewModelBase
{
- public ObservableCollection MenuItems { get; set; }
-
public MenuViewModel()
{
- MenuItems = new ObservableCollection()
+ MenuItems = new ObservableCollection
{
new() { MenuHeader = "Introduction", Key = MenuKeys.MenuKeyIntroduction, IsSeparator = false },
new() { MenuHeader = "Controls", IsSeparator = true },
- new() { MenuHeader = "AspectRatioLayout", Key = MenuKeys.AspectRatioLayout, Status = "New" },
- new() { MenuHeader = "AutoCompleteBox", Key = MenuKeys.MenuKeyAutoCompleteBox, Status = "WIP" },
- new() { MenuHeader = "Avatar", Key = MenuKeys.MenuKeyAvatar, Status = "WIP" },
- new() { MenuHeader = "Badge", Key = MenuKeys.MenuKeyBadge },
- new() { MenuHeader = "Banner", Key = MenuKeys.MenuKeyBanner },
- new() { MenuHeader = "Breadcrumb", Key = MenuKeys.MenuKeyBreadcrumb },
- new() { MenuHeader = "Button Group", Key = MenuKeys.MenuKeyButtonGroup },
- new() { MenuHeader = "Class Input", Key = MenuKeys.MenuKeyClassInput },
- new() { MenuHeader = "Clock", Key = MenuKeys.MenuKeyClock, Status = "Updated" },
- new() { MenuHeader = "Date Picker", Key = MenuKeys.MenuKeyDatePicker, Status = "New" },
- new() { MenuHeader = "Date Time Picker", Key = MenuKeys.MenuKeyDateTimePicker, Status = "New" },
- new() { MenuHeader = "Dialog", Key = MenuKeys.MenuKeyDialog },
- new() { MenuHeader = "Disable Container", Key = MenuKeys.MenuKeyDisableContainer },
- new() { MenuHeader = "Divider", Key = MenuKeys.MenuKeyDivider },
- new() { MenuHeader = "Drawer", Key = MenuKeys.MenuKeyDrawer },
- new() { MenuHeader = "DualBadge", Key = MenuKeys.MenuKeyDualBadge },
- new() { MenuHeader = "ElasticWrapPanel", Key = MenuKeys.MenuKeyElasticWrapPanel },
- new() { MenuHeader = "Enum Selector", Key = MenuKeys.MenuKeyEnumSelector },
- new() { MenuHeader = "Form", Key = MenuKeys.MenuKeyForm },
- new() { MenuHeader = "Icon Button", Key = MenuKeys.MenuKeyIconButton },
- new() { MenuHeader = "ImageViewer", Key = MenuKeys.MenuKeyImageViewer, Status = "WIP" },
- new() { MenuHeader = "IPv4Box", Key = MenuKeys.MenuKeyIpBox },
- new() { MenuHeader = "KeyGestureInput", Key = MenuKeys.MenuKeyKeyGestureInput },
- new() { MenuHeader = "Loading", Key = MenuKeys.MenuKeyLoading },
- new() { MenuHeader = "Marquee", Key = MenuKeys.MenuKeyMarquee },
- new() { MenuHeader = "Message Box", Key = MenuKeys.MenuKeyMessageBox },
- new() { MenuHeader = "MultiComboBox", Key = MenuKeys.MenuKeyMultiComboBox, Status = "Updated" },
- new() { MenuHeader = "Nav Menu", Key = MenuKeys.MenuKeyNavMenu },
- new() { MenuHeader = "Notification", Key = MenuKeys.MenuKeyNotification, Status = "New" },
- new() { MenuHeader = "Number Displayer", Key = MenuKeys.MenuKeyNumberDisplayer, Status = "New" },
- new() { MenuHeader = "Numeric UpDown", Key = MenuKeys.MenuKeyNumericUpDown },
- new() { MenuHeader = "NumPad", Key = MenuKeys.MenuKeyNumPad },
- new() { MenuHeader = "Pagination", Key = MenuKeys.MenuKeyPagination },
- new() { MenuHeader = "PathPicker", Key = MenuKeys.PathPicker, Status = "WIP" },
- new() { MenuHeader = "PinCode", Key = MenuKeys.MenuKeyPinCode },
- new() { MenuHeader = "RangeSlider", Key = MenuKeys.MenuKeyRangeSlider },
- new() { MenuHeader = "Rating", Key = MenuKeys.MenuKeyRating },
- new() { MenuHeader = "Scroll To", Key = MenuKeys.MenuKeyScrollToButton },
- new() { MenuHeader = "Selection List", Key = MenuKeys.MenuKeySelectionList },
- new() { MenuHeader = "Skeleton", Key = MenuKeys.MenuKeySkeleton },
- new() { MenuHeader = "TagInput", Key = MenuKeys.MenuKeyTagInput, Status = "Updated" },
- new() { MenuHeader = "Theme Toggler", Key = MenuKeys.MenuKeyThemeToggler },
- new() { MenuHeader = "Time Box", Key = MenuKeys.MenuKeyTimeBox },
- new() { MenuHeader = "Timeline", Key = MenuKeys.MenuKeyTimeline },
- new() { MenuHeader = "TimePicker", Key = MenuKeys.MenuKeyTimePicker },
- new() { MenuHeader = "Toast", Key = MenuKeys.MenuKeyToast, Status = "New" },
- new() { MenuHeader = "ToolBar", Key = MenuKeys.MenuKeyToolBar },
- new() { MenuHeader = "TreeComboBox", Key = MenuKeys.MenuKeyTreeComboBox },
- new() { MenuHeader = "TwoTonePathIcon", Key = MenuKeys.MenuKeyTwoTonePathIcon },
-
+ new()
+ {
+ MenuHeader = "Buttons & Inputs", Children = new ObservableCollection
+ {
+ new() { MenuHeader = "Button Group", Key = MenuKeys.MenuKeyButtonGroup },
+ new() { MenuHeader = "Icon Button", Key = MenuKeys.MenuKeyIconButton, Status = "Redesigned" },
+ new() { MenuHeader = "AutoCompleteBox", Key = MenuKeys.MenuKeyAutoCompleteBox },
+ new() { MenuHeader = "Class Input", Key = MenuKeys.MenuKeyClassInput },
+ new() { MenuHeader = "Enum Selector", Key = MenuKeys.MenuKeyEnumSelector },
+ new() { MenuHeader = "Form", Key = MenuKeys.MenuKeyForm },
+ new() { MenuHeader = "KeyGestureInput", Key = MenuKeys.MenuKeyKeyGestureInput },
+ new() { MenuHeader = "IPv4Box", Key = MenuKeys.MenuKeyIpBox },
+ new() { MenuHeader = "MultiComboBox", Key = MenuKeys.MenuKeyMultiComboBox },
+ new() { MenuHeader = "Numeric UpDown", Key = MenuKeys.MenuKeyNumericUpDown },
+ new() { MenuHeader = "NumPad", Key = MenuKeys.MenuKeyNumPad },
+ new() { MenuHeader = "PathPicker", Key = MenuKeys.PathPicker, Status = "New" },
+ new() { MenuHeader = "PinCode", Key = MenuKeys.MenuKeyPinCode },
+ new() { MenuHeader = "RangeSlider", Key = MenuKeys.MenuKeyRangeSlider },
+ new() { MenuHeader = "Rating", Key = MenuKeys.MenuKeyRating },
+ new() { MenuHeader = "Selection List", Key = MenuKeys.MenuKeySelectionList },
+ new() { MenuHeader = "TagInput", Key = MenuKeys.MenuKeyTagInput },
+ new() { MenuHeader = "Theme Toggler", Key = MenuKeys.MenuKeyThemeToggler },
+ new() { MenuHeader = "TreeComboBox", Key = MenuKeys.MenuKeyTreeComboBox },
+ }
+ },
+ new()
+ {
+ MenuHeader = "Dialog & Feedbacks", Children = new ObservableCollection()
+ {
+ new() { MenuHeader = "Dialog", Key = MenuKeys.MenuKeyDialog },
+ new() { MenuHeader = "Drawer", Key = MenuKeys.MenuKeyDrawer, Status = "Updated" },
+ new() { MenuHeader = "Loading", Key = MenuKeys.MenuKeyLoading, Status = "Updated" },
+ new() { MenuHeader = "Message Box", Key = MenuKeys.MenuKeyMessageBox },
+ new() { MenuHeader = "Notification", Key = MenuKeys.MenuKeyNotification },
+ new() { MenuHeader = "Toast", Key = MenuKeys.MenuKeyToast },
+ new() { MenuHeader = "Skeleton", Key = MenuKeys.MenuKeySkeleton },
+ }
+ },
+ new()
+ {
+ MenuHeader = "Date & Time", Children = new ObservableCollection
+ {
+ new() { MenuHeader = "Date Picker", Key = MenuKeys.MenuKeyDatePicker },
+ new() { MenuHeader = "Date Time Picker", Key = MenuKeys.MenuKeyDateTimePicker },
+ new() { MenuHeader = "Time Box", Key = MenuKeys.MenuKeyTimeBox },
+ new() { MenuHeader = "TimePicker", Key = MenuKeys.MenuKeyTimePicker },
+ new() { MenuHeader = "Clock", Key = MenuKeys.MenuKeyClock }
+ }
+ },
+ new()
+ {
+ MenuHeader = "Navigation & Menus", Children = new ObservableCollection
+ {
+ new() { MenuHeader = "Breadcrumb", Key = MenuKeys.MenuKeyBreadcrumb, Status = "Updated" },
+ new() { MenuHeader = "Nav Menu", Key = MenuKeys.MenuKeyNavMenu, Status = "Updated" },
+ new() { MenuHeader = "Pagination", Key = MenuKeys.MenuKeyPagination },
+ new() { MenuHeader = "ToolBar", Key = MenuKeys.MenuKeyToolBar },
+ }
+ },
+ new()
+ {
+ MenuHeader = "Layout & Display",
+ Children = new ObservableCollection
+ {
+ new() { MenuHeader = "AspectRatioLayout", Key = MenuKeys.AspectRatioLayout },
+ new() { MenuHeader = "Avatar", Key = MenuKeys.MenuKeyAvatar, Status = "WIP" },
+ new() { MenuHeader = "Badge", Key = MenuKeys.MenuKeyBadge },
+ new() { MenuHeader = "Banner", Key = MenuKeys.MenuKeyBanner, Status = "Updated" },
+ new() { MenuHeader = "Disable Container", Key = MenuKeys.MenuKeyDisableContainer },
+ new() { MenuHeader = "Divider", Key = MenuKeys.MenuKeyDivider },
+ new() { MenuHeader = "DualBadge", Key = MenuKeys.MenuKeyDualBadge },
+ new() { MenuHeader = "ImageViewer", Key = MenuKeys.MenuKeyImageViewer },
+ new() { MenuHeader = "ElasticWrapPanel", Key = MenuKeys.MenuKeyElasticWrapPanel },
+ new() { MenuHeader = "Marquee", Key = MenuKeys.MenuKeyMarquee, Status = "New" },
+ new() { MenuHeader = "Number Displayer", Key = MenuKeys.MenuKeyNumberDisplayer },
+ new() { MenuHeader = "Scroll To", Key = MenuKeys.MenuKeyScrollToButton },
+ new() { MenuHeader = "Timeline", Key = MenuKeys.MenuKeyTimeline },
+ new() { MenuHeader = "TwoTonePathIcon", Key = MenuKeys.MenuKeyTwoTonePathIcon }
+ }
+ },
};
}
+
+ public ObservableCollection MenuItems { get; set; }
}
public static class MenuKeys
diff --git a/demo/Ursa.Demo/Views/MainView.axaml b/demo/Ursa.Demo/Views/MainView.axaml
index 40325a3..b579f16 100644
--- a/demo/Ursa.Demo/Views/MainView.axaml
+++ b/demo/Ursa.Demo/Views/MainView.axaml
@@ -4,6 +4,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="clr-namespace:Ursa.Demo.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:iri="https://irihi.tech/shared"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:u="https://irihi.tech/ursa"
xmlns:vm="using:Ursa.Demo.ViewModels"
@@ -22,24 +23,26 @@
-
+
-
+
-
@@ -57,54 +60,50 @@
-
+
-
+
-
-
+
+ Background="Transparent"
+ DockPanel.Dock="Left">
+
+
-
-
-
-
+ Icon="{StaticResource SemiIconSetting}"
+ Content="{Binding FooterText}"
+ RenderTransform="{x:Null}"
+ ToolTip.Tip="Settings"
+ FontWeight="Normal"
+ Theme="{DynamicResource BorderlessIconButton}">
@@ -117,7 +116,7 @@
diff --git a/src/Ursa/Ursa.csproj b/src/Ursa/Ursa.csproj
index fda6393..1cc157a 100644
--- a/src/Ursa/Ursa.csproj
+++ b/src/Ursa/Ursa.csproj
@@ -15,8 +15,8 @@
-
-
+
+