diff --git a/demo/Directory.Build.props b/demo/Directory.Build.props index 74d63f7..d2ed3f4 100644 --- a/demo/Directory.Build.props +++ b/demo/Directory.Build.props @@ -1,6 +1,6 @@ enable - 11.0.7 + 11.1.0-beta1 diff --git a/demo/Semi.Avalonia.Demo/Pages/AutoCompleteBoxDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/AutoCompleteBoxDemo.axaml index 38f3e87..37633c3 100644 --- a/demo/Semi.Avalonia.Demo/Pages/AutoCompleteBoxDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/AutoCompleteBoxDemo.axaml @@ -70,5 +70,16 @@ + + + + + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/HyperlinkButtonDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/HyperlinkButtonDemo.axaml new file mode 100644 index 0000000..897a75b --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/HyperlinkButtonDemo.axaml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/HyperlinkButtonDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/HyperlinkButtonDemo.axaml.cs new file mode 100644 index 0000000..ad93fd0 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/HyperlinkButtonDemo.axaml.cs @@ -0,0 +1,14 @@ +using System; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Semi.Avalonia.Demo.Pages; + +public partial class HyperlinkButtonDemo : UserControl +{ + public HyperlinkButtonDemo() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/Pages/NumericUpDownDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/NumericUpDownDemo.axaml index 9e70dce..54729d7 100644 --- a/demo/Semi.Avalonia.Demo/Pages/NumericUpDownDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/NumericUpDownDemo.axaml @@ -37,5 +37,11 @@ Classes="Small" Maximum="100" Minimum="0" /> + diff --git a/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml index de3762c..4bb484e 100644 --- a/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml @@ -4,12 +4,24 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages" d:DesignHeight="450" d:DesignWidth="800" + x:DataType="pages:RefreshContainerDemoViewModel" + x:CompileBindings="True" mc:Ignorable="d"> - - - + + + + - + diff --git a/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml.cs index 0add79b..7e13123 100644 --- a/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Pages/RefreshContainerDemo.axaml.cs @@ -1,14 +1,46 @@ -using Avalonia; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading.Tasks; using Avalonia.Controls; -using Avalonia.Interactivity; -using Avalonia.Markup.Xaml; +using CommunityToolkit.Mvvm.ComponentModel; namespace Semi.Avalonia.Demo.Pages; public partial class RefreshContainerDemo : UserControl { + private RefreshContainerDemoViewModel _viewModel; + public RefreshContainerDemo() { InitializeComponent(); + + _viewModel = new RefreshContainerDemoViewModel(); + + DataContext = _viewModel; + } + + private async void RefreshContainerPage_RefreshRequested(object? sender, RefreshRequestedEventArgs e) + { + var deferral = e.GetDeferral(); + + await _viewModel.AddToTop(); + + deferral.Complete(); + } +} + +public class RefreshContainerDemoViewModel : ObservableObject +{ + public ObservableCollection Items { get; } + + public RefreshContainerDemoViewModel() + { + Items = new ObservableCollection(Enumerable.Range(1, 200).Select(i => $"Item {i}")); + } + + public async Task AddToTop() + { + await Task.Delay(1000); + Items.Insert(0, $"Item {200 - Items.Count}"); } } \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/Views/MainView.axaml b/demo/Semi.Avalonia.Demo/Views/MainView.axaml index 0b40a59..9979101 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml @@ -1,13 +1,13 @@ + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> @@ -21,52 +21,52 @@ Margin="8" Padding="12,4" Theme="{DynamicResource CardBorder}"> - + + Theme="{DynamicResource TitleTextBlock}" + VerticalAlignment="Center" /> + Text="/" + VerticalAlignment="Center" /> + Margin="8,0" + Text="{Binding #tab.SelectedItem.Header}" + VerticalAlignment="Center" /> + Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" + Height="16" + Width="16" /> + Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" + Height="16" + Width="16" /> @@ -126,6 +126,9 @@ + + + @@ -145,7 +148,7 @@ - + diff --git a/src/Package.props b/src/Package.props index 3ad4e31..d41c3a6 100644 --- a/src/Package.props +++ b/src/Package.props @@ -7,7 +7,7 @@ IRIHI Technology Avalonia Theme inspired by Semi Design. https://github.com/irihitech/Semi.Avalonia - 11.0.7 + 11.1.0-beta1 MIT \ No newline at end of file diff --git a/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml b/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml index 4270c1a..216f539 100644 --- a/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml +++ b/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml @@ -19,6 +19,8 @@ VerticalAlignment="Center" DataValidationErrors.Errors="{TemplateBinding (DataValidationErrors.Errors)}" Theme="{DynamicResource NonErrorTextBox}" + InnerLeftContent="{TemplateBinding InnerLeftContent}" + InnerRightContent="{TemplateBinding InnerRightContent}" Watermark="{TemplateBinding Watermark}" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Semi.Avalonia/Controls/NumericUpDown.axaml b/src/Semi.Avalonia/Controls/NumericUpDown.axaml index fe4fc2d..f1bbca3 100644 --- a/src/Semi.Avalonia/Controls/NumericUpDown.axaml +++ b/src/Semi.Avalonia/Controls/NumericUpDown.axaml @@ -35,6 +35,8 @@ Text="{TemplateBinding Text}" TextWrapping="NoWrap" Theme="{DynamicResource NonErrorTextBox}" + InnerLeftContent="{TemplateBinding InnerLeftContent}" + InnerRightContent="{TemplateBinding InnerRightContent}" Watermark="{TemplateBinding Watermark}" /> diff --git a/src/Semi.Avalonia/Controls/RefreshContainer.axaml b/src/Semi.Avalonia/Controls/RefreshContainer.axaml index 238c078..48497c7 100644 --- a/src/Semi.Avalonia/Controls/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Controls/RefreshContainer.axaml @@ -28,21 +28,27 @@ - - + + + + + - - - - - + - + \ No newline at end of file diff --git a/src/Semi.Avalonia/Controls/TextBox.axaml b/src/Semi.Avalonia/Controls/TextBox.axaml index 6547f29..eb97633 100644 --- a/src/Semi.Avalonia/Controls/TextBox.axaml +++ b/src/Semi.Avalonia/Controls/TextBox.axaml @@ -269,7 +269,7 @@ BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{TemplateBinding CornerRadius}"> - + + diff --git a/src/Semi.Avalonia/Controls/_index.axaml b/src/Semi.Avalonia/Controls/_index.axaml index e8f6631..7858a19 100644 --- a/src/Semi.Avalonia/Controls/_index.axaml +++ b/src/Semi.Avalonia/Controls/_index.axaml @@ -1,7 +1,7 @@ + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> @@ -24,6 +24,7 @@ + diff --git a/src/Semi.Avalonia/Themes/Dark/HyperlinkButton.axaml b/src/Semi.Avalonia/Themes/Dark/HyperlinkButton.axaml new file mode 100644 index 0000000..f49e412 --- /dev/null +++ b/src/Semi.Avalonia/Themes/Dark/HyperlinkButton.axaml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/src/Semi.Avalonia/Themes/Dark/RefreshContainer.axaml b/src/Semi.Avalonia/Themes/Dark/RefreshContainer.axaml index 9be9ad3..a77eb29 100644 --- a/src/Semi.Avalonia/Themes/Dark/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Themes/Dark/RefreshContainer.axaml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/src/Semi.Avalonia/Themes/Dark/_index.axaml b/src/Semi.Avalonia/Themes/Dark/_index.axaml index 5b328e6..0d83083 100644 --- a/src/Semi.Avalonia/Themes/Dark/_index.axaml +++ b/src/Semi.Avalonia/Themes/Dark/_index.axaml @@ -20,6 +20,7 @@ + diff --git a/src/Semi.Avalonia/Themes/Light/HyperlinkButton.axaml b/src/Semi.Avalonia/Themes/Light/HyperlinkButton.axaml new file mode 100644 index 0000000..f6ab0be --- /dev/null +++ b/src/Semi.Avalonia/Themes/Light/HyperlinkButton.axaml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/src/Semi.Avalonia/Themes/Light/RefreshContainer.axaml b/src/Semi.Avalonia/Themes/Light/RefreshContainer.axaml index 397a7bb..e67b05b 100644 --- a/src/Semi.Avalonia/Themes/Light/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Themes/Light/RefreshContainer.axaml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/src/Semi.Avalonia/Themes/Light/_index.axaml b/src/Semi.Avalonia/Themes/Light/_index.axaml index 3baba8f..1e8c679 100644 --- a/src/Semi.Avalonia/Themes/Light/_index.axaml +++ b/src/Semi.Avalonia/Themes/Light/_index.axaml @@ -20,6 +20,7 @@ + diff --git a/src/Semi.Avalonia/Themes/Shared/HyperlinkButton.axaml b/src/Semi.Avalonia/Themes/Shared/HyperlinkButton.axaml new file mode 100644 index 0000000..1119ef0 --- /dev/null +++ b/src/Semi.Avalonia/Themes/Shared/HyperlinkButton.axaml @@ -0,0 +1,9 @@ + + 14 + 12 + 12 + 12 + 12 + + M 12.9393 2.9393 C 15.182 0.69666 18.818 0.696668 21.0606 2.93931 C 23.3033 5.18195 23.3033 8.81799 21.0606 11.0606 L 18.3925 13.7288 C 18.4631 13.3298 18.5 12.9192 18.5 12.5 C 18.5 11.5751 18.3206 10.6921 17.9947 9.88386 L 18.9393 8.93931 C 20.0104 7.86824 20.0104 6.13169 18.9393 5.06063 C 17.8682 3.98956 16.1317 3.98956 15.0606 5.06062 L 11.0606 9.06063 C 9.98956 10.1317 9.98956 11.8682 11.0606 12.9393 C 11.3265 13.2052 11.6335 13.4051 11.961 13.539 L 9.75848 15.7415 C 9.47 15.5439 9.19556 15.3169 8.9393 15.0606 C 6.69666 12.818 6.69666 9.18195 8.9393 6.93931 L 12.9393 2.9393 Z M 2.9393 12.9393 L 5.60751 10.2711 C 5.53685 10.6701 5.49999 11.0808 5.49999 11.5001 C 5.49999 12.4249 5.67935 13.3079 6.00519 14.1161 L 5.06062 15.0607 C 3.98956 16.1317 3.98956 17.8683 5.06063 18.9393 C 6.13169 20.0104 7.86824 20.0104 8.9393 18.9393 L 12.9393 14.9393 C 14.0104 13.8683 14.0104 12.1317 12.9393 11.0607 C 12.7664 10.8878 12.5762 10.7428 12.3743 10.6258 L 14.5302 8.46985 C 14.7141 8.61357 14.8914 8.77007 15.0606 8.93934 C 17.3033 11.182 17.3033 14.818 15.0606 17.0607 L 11.0606 21.0607 C 8.81798 23.3033 5.18194 23.3033 2.9393 21.0607 C 0.696665 18.818 0.696663 15.182 2.9393 12.9393 Z + diff --git a/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml b/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml index 9a5161c..e41e85f 100644 --- a/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml +++ b/src/Semi.Avalonia/Themes/Shared/RefreshContainer.axaml @@ -1,3 +1,3 @@ - M14.2 3.78966C9.66551 2.57466 5.00465 5.26561 3.78964 9.80007C3.12066 12.2967 3.63433 14.8301 4.99177 16.8102C5.46019 17.4935 5.28601 18.4271 4.60273 18.8955C3.91945 19.364 2.98581 19.1898 2.51739 18.5065C0.685557 15.8344 -0.0134454 12.4023 0.891867 9.02361C2.5357 2.88875 8.84157 -0.751945 14.9764 0.891885C21.1113 2.53572 24.752 8.84159 23.1082 14.9765C22.8937 15.7767 22.0712 16.2515 21.271 16.0371C20.4708 15.8227 19.996 15.0002 20.2104 14.2C21.4254 9.66553 18.7344 5.00467 14.2 3.78966Z + 24 \ No newline at end of file diff --git a/src/Semi.Avalonia/Themes/Shared/_index.axaml b/src/Semi.Avalonia/Themes/Shared/_index.axaml index 249105f..d01988a 100644 --- a/src/Semi.Avalonia/Themes/Shared/_index.axaml +++ b/src/Semi.Avalonia/Themes/Shared/_index.axaml @@ -20,6 +20,7 @@ +