diff --git a/doc/assets/tabbaritem-winui-material-badges.png b/doc/assets/tabbaritem-winui-material-badges.png new file mode 100644 index 000000000..9e143b564 Binary files /dev/null and b/doc/assets/tabbaritem-winui-material-badges.png differ diff --git a/doc/assets/tabbaritem-winui-material-largebadge.png b/doc/assets/tabbaritem-winui-material-largebadge.png new file mode 100644 index 000000000..32f9b3f2d Binary files /dev/null and b/doc/assets/tabbaritem-winui-material-largebadge.png differ diff --git a/doc/assets/tabbaritem-winui-material-smallbadge.png b/doc/assets/tabbaritem-winui-material-smallbadge.png new file mode 100644 index 000000000..fad27e854 Binary files /dev/null and b/doc/assets/tabbaritem-winui-material-smallbadge.png differ diff --git a/doc/controls/TabBarAndTabBarItem.md b/doc/controls/TabBarAndTabBarItem.md index c7e068dfd..586e1363d 100644 --- a/doc/controls/TabBarAndTabBarItem.md +++ b/doc/controls/TabBarAndTabBarItem.md @@ -37,6 +37,8 @@ Object → DependencyObject → UIElement → FrameworkElement ͛ ### Properties Property|Type|Description -|-|- +BadgeValue|string|Gets or sets the value to be displayed in the badge of the `TabBarItem`. If a value is set the large badge will be displayed otherwise it will be the small badge. (Currently only usable with the Material Theme Toolkit Library with the `BottomTabBarItem` style) +BadgeVisibility|Visibility|Gets or sets the badge visibility of the `TabBarItem`. (Currently only usable with the Material Theme Toolkit Library with the `BottomTabBarItem` style) Command|ICommand|Gets or sets the command to invoke when the `TabBarItem` is pressed. CommandParameter|object|Gets or sets the parameter to pass to the `Command` property. Flyout|double|Gets or sets the flyout associated with this `TabBarItem`. @@ -278,3 +280,49 @@ xmlns:utu="using:Uno.Toolkit.UI" ![](../assets/tabbar-android-material-bottom-fab.png) ![](../assets/tabbar-android-material-bottom-fab-flyout.png) + +#### Badge usage for the Material `BottomTabBarItem` Style +Icons in `TabBar` items can display badges in their upper right corners. + +Badges can contain dynamic information, such as the number of new messages. + +Currently, only the Material Theme Toolkit Library contains a `BottomTabBarItemStyle` that you can use to display a badge (which is optional). + +![](../assets/tabbaritem-winui-material-badges.png) + +##### Small Badge +A small badge uses only shape to indicate a status change or new notification. + +![](../assets/tabbaritem-winui-material-smallbadge.png) + +```xml +xmlns:utu="using:Uno.Toolkit.UI" +... + + + + + + +``` + +##### Large Badge +A large badge displays a number within a container to indicate a quantifiable status change related to a destination. + +![](../assets/tabbaritem-winui-material-largebadge.png) + +```xml +xmlns:utu="using:Uno.Toolkit.UI" +... + + + + + + +``` \ No newline at end of file diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Droid/Uno.Toolkit.Samples.Droid.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Droid/Uno.Toolkit.Samples.Droid.csproj index 60c487c32..7c4bb208e 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Droid/Uno.Toolkit.Samples.Droid.csproj +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Droid/Uno.Toolkit.Samples.Droid.csproj @@ -66,10 +66,10 @@ - 2.3.0-dev.4 + 2.3.0-dev.6 - 2.3.0-dev.4 + 2.3.0-dev.6 diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Shared/Content/Controls/TabBarSamplePage.xaml b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Shared/Content/Controls/TabBarSamplePage.xaml index 02c68ad3b..1c2c11308 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Shared/Content/Controls/TabBarSamplePage.xaml +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Shared/Content/Controls/TabBarSamplePage.xaml @@ -421,12 +421,22 @@ - + - + - + + + + + + diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Skia.Gtk/Uno.Toolkit.Samples.Skia.Gtk.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Skia.Gtk/Uno.Toolkit.Samples.Skia.Gtk.csproj index 3d15dfcfc..43090cd40 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Skia.Gtk/Uno.Toolkit.Samples.Skia.Gtk.csproj +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Skia.Gtk/Uno.Toolkit.Samples.Skia.Gtk.csproj @@ -29,8 +29,8 @@ - - + + diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.UWP/Uno.Toolkit.Samples.UWP.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.UWP/Uno.Toolkit.Samples.UWP.csproj index 3623693a0..48840f786 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.UWP/Uno.Toolkit.Samples.UWP.csproj +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.UWP/Uno.Toolkit.Samples.UWP.csproj @@ -12,10 +12,10 @@ - 2.3.0-dev.4 + 2.3.0-dev.6 - 2.3.0-dev.4 + 2.3.0-dev.6 diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Wasm/Uno.Toolkit.Samples.Wasm.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Wasm/Uno.Toolkit.Samples.Wasm.csproj index 90847fdb6..c02ad305d 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Wasm/Uno.Toolkit.Samples.Wasm.csproj +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Wasm/Uno.Toolkit.Samples.Wasm.csproj @@ -42,9 +42,9 @@ - + - + diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.iOS/Uno.Toolkit.Samples.iOS.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.iOS/Uno.Toolkit.Samples.iOS.csproj index 1edec4ed4..f892b2edb 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.iOS/Uno.Toolkit.Samples.iOS.csproj +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.iOS/Uno.Toolkit.Samples.iOS.csproj @@ -191,10 +191,10 @@ all - 2.3.0-dev.4 + 2.3.0-dev.6 - 2.3.0-dev.4 + 2.3.0-dev.6 diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.macOS/Uno.Toolkit.Samples.macOS.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.macOS/Uno.Toolkit.Samples.macOS.csproj index 86ef9cc49..22d51eeab 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.macOS/Uno.Toolkit.Samples.macOS.csproj +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.macOS/Uno.Toolkit.Samples.macOS.csproj @@ -75,10 +75,10 @@ - 2.3.0-dev.4 + 2.3.0-dev.6 - 2.3.0-dev.4 + 2.3.0-dev.6 diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Droid/Uno.Toolkit.WinUI.Samples.Droid.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Droid/Uno.Toolkit.WinUI.Samples.Droid.csproj index bcd5dc036..daabbdf85 100644 --- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Droid/Uno.Toolkit.WinUI.Samples.Droid.csproj +++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Droid/Uno.Toolkit.WinUI.Samples.Droid.csproj @@ -71,7 +71,7 @@ - 2.3.0-dev.4 + 2.3.0-dev.6 diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Skia.Gtk/Uno.Toolkit.WinUI.Samples.Skia.Gtk.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Skia.Gtk/Uno.Toolkit.WinUI.Samples.Skia.Gtk.csproj index cb6368859..49d55f29b 100644 --- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Skia.Gtk/Uno.Toolkit.WinUI.Samples.Skia.Gtk.csproj +++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Skia.Gtk/Uno.Toolkit.WinUI.Samples.Skia.Gtk.csproj @@ -34,7 +34,7 @@ - + diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Wasm/Uno.Toolkit.WinUI.Samples.Wasm.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Wasm/Uno.Toolkit.WinUI.Samples.Wasm.csproj index 6c81f4e84..593f2e820 100644 --- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Wasm/Uno.Toolkit.WinUI.Samples.Wasm.csproj +++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Wasm/Uno.Toolkit.WinUI.Samples.Wasm.csproj @@ -42,7 +42,7 @@ - + diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Windows.Desktop/Uno.Toolkit.WinUI.Samples.Windows.Desktop.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Windows.Desktop/Uno.Toolkit.WinUI.Samples.Windows.Desktop.csproj index 8f6c2e04a..ad8a3ed22 100644 --- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Windows.Desktop/Uno.Toolkit.WinUI.Samples.Windows.Desktop.csproj +++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Windows.Desktop/Uno.Toolkit.WinUI.Samples.Windows.Desktop.csproj @@ -18,7 +18,7 @@ - + diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.iOS/Uno.Toolkit.WinUI.Samples.iOS.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.iOS/Uno.Toolkit.WinUI.Samples.iOS.csproj index c3427f77e..a5bd7e6c6 100644 --- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.iOS/Uno.Toolkit.WinUI.Samples.iOS.csproj +++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.iOS/Uno.Toolkit.WinUI.Samples.iOS.csproj @@ -124,7 +124,7 @@ - 2.3.0-dev.4 + 2.3.0-dev.6 diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.macOS/Uno.Toolkit.WinUI.Samples.macOS.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.macOS/Uno.Toolkit.WinUI.Samples.macOS.csproj index cd6de0bea..4a914d0b9 100644 --- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.macOS/Uno.Toolkit.WinUI.Samples.macOS.csproj +++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.macOS/Uno.Toolkit.WinUI.Samples.macOS.csproj @@ -74,7 +74,7 @@ - 2.3.0-dev.4 + 2.3.0-dev.6 diff --git a/src/Uno.Toolkit.UI/Controls/TabBar/TabBarItem.Properties.cs b/src/Uno.Toolkit.UI/Controls/TabBar/TabBarItem.Properties.cs index 652e4e42c..293ceeeb6 100644 --- a/src/Uno.Toolkit.UI/Controls/TabBar/TabBarItem.Properties.cs +++ b/src/Uno.Toolkit.UI/Controls/TabBar/TabBarItem.Properties.cs @@ -29,6 +29,28 @@ partial class TabBarItem DependencyProperty.Register(nameof(Icon), typeof(IconElement), typeof(TabBarItem), new PropertyMetadata(null, OnPropertyChanged)); #endregion + #region BadgeVisibility + public Visibility BadgeVisibility + { + get { return (Visibility)GetValue(BadgeVisibilityProperty); } + set { SetValue(BadgeVisibilityProperty, value); } + } + + public static readonly DependencyProperty BadgeVisibilityProperty = + DependencyProperty.Register("BadgeVisibility", typeof(Visibility), typeof(TabBarItem), new PropertyMetadata(Visibility.Collapsed, OnPropertyChanged)); + #endregion + + #region BadgeValue + public string? BadgeValue + { + get { return (string)GetValue(BadgeValueProperty); } + set { SetValue(BadgeValueProperty, value); } + } + + public static readonly DependencyProperty BadgeValueProperty = + DependencyProperty.Register("BadgeValue", typeof(string), typeof(TabBarItem), new PropertyMetadata(default(string?), OnPropertyChanged)); + #endregion + #region IsSelectable public bool IsSelectable { diff --git a/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.UI.Cupertino.csproj b/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.UI.Cupertino.csproj index 37735d6a3..5d0869573 100644 --- a/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.UI.Cupertino.csproj +++ b/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.UI.Cupertino.csproj @@ -15,7 +15,7 @@ - + diff --git a/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.WinUI.Cupertino.csproj b/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.WinUI.Cupertino.csproj index c97b1ed79..518712874 100644 --- a/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.WinUI.Cupertino.csproj +++ b/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.WinUI.Cupertino.csproj @@ -17,7 +17,7 @@ - + diff --git a/src/library/Uno.Toolkit.Material/Generated/mergedpages.uwp.v2.xaml b/src/library/Uno.Toolkit.Material/Generated/mergedpages.uwp.v2.xaml index 317f9a1e5..ff1564438 100644 --- a/src/library/Uno.Toolkit.Material/Generated/mergedpages.uwp.v2.xaml +++ b/src/library/Uno.Toolkit.Material/Generated/mergedpages.uwp.v2.xaml @@ -42,11 +42,22 @@ 0,12,0,16 12,0 16 - 22,7 + 64 + 32 20 16 16 12 + + + 6 + 6 + 0,4,20,0 + 16 + 16 + 32,2,0,0 + 4,0 + 8