From aee8042af8d954931ad35715f32146ac0ec764c8 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Fri, 5 May 2023 01:44:38 +0800 Subject: [PATCH 01/12] feat: add resources. --- src/Semi.Avalonia/Controls/Controls.axaml | 1 + .../Controls/DataValidationErrors.axaml | 41 +++++++++++++++++++ src/Semi.Avalonia/Themes/Dark/Dark.axaml | 1 + .../Themes/Dark/DataValidationErrors.axaml | 12 ++++++ .../Themes/Light/DataValidationErrors.axaml | 12 ++++++ src/Semi.Avalonia/Themes/Light/Light.axaml | 1 + 6 files changed, 68 insertions(+) create mode 100644 src/Semi.Avalonia/Controls/DataValidationErrors.axaml create mode 100644 src/Semi.Avalonia/Themes/Dark/DataValidationErrors.axaml create mode 100644 src/Semi.Avalonia/Themes/Light/DataValidationErrors.axaml diff --git a/src/Semi.Avalonia/Controls/Controls.axaml b/src/Semi.Avalonia/Controls/Controls.axaml index 59e49ad..1674a64 100644 --- a/src/Semi.Avalonia/Controls/Controls.axaml +++ b/src/Semi.Avalonia/Controls/Controls.axaml @@ -16,6 +16,7 @@ + diff --git a/src/Semi.Avalonia/Controls/DataValidationErrors.axaml b/src/Semi.Avalonia/Controls/DataValidationErrors.axaml new file mode 100644 index 0000000..781b90a --- /dev/null +++ b/src/Semi.Avalonia/Controls/DataValidationErrors.axaml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Themes/Dark/Dark.axaml b/src/Semi.Avalonia/Themes/Dark/Dark.axaml index 7815e35..b588cdd 100644 --- a/src/Semi.Avalonia/Themes/Dark/Dark.axaml +++ b/src/Semi.Avalonia/Themes/Dark/Dark.axaml @@ -13,6 +13,7 @@ + diff --git a/src/Semi.Avalonia/Themes/Dark/DataValidationErrors.axaml b/src/Semi.Avalonia/Themes/Dark/DataValidationErrors.axaml new file mode 100644 index 0000000..a54f303 --- /dev/null +++ b/src/Semi.Avalonia/Themes/Dark/DataValidationErrors.axaml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Themes/Light/DataValidationErrors.axaml b/src/Semi.Avalonia/Themes/Light/DataValidationErrors.axaml new file mode 100644 index 0000000..c319b1d --- /dev/null +++ b/src/Semi.Avalonia/Themes/Light/DataValidationErrors.axaml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Themes/Light/Light.axaml b/src/Semi.Avalonia/Themes/Light/Light.axaml index d456bae..2116c6b 100644 --- a/src/Semi.Avalonia/Themes/Light/Light.axaml +++ b/src/Semi.Avalonia/Themes/Light/Light.axaml @@ -12,6 +12,7 @@ + From 127bd1446a2551be1bbb2210ff3816c42216ea12 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Fri, 5 May 2023 02:21:33 +0800 Subject: [PATCH 02/12] feat: add validation errors to textbox. --- .../Pages/TextBoxDemo.axaml | 18 ++ .../Controls/DataValidationErrors.axaml | 2 +- src/Semi.Avalonia/Controls/TextBox.axaml | 197 +++++++++++------- .../Themes/Light/DataValidationErrors.axaml | 2 +- 4 files changed, 139 insertions(+), 80 deletions(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/TextBoxDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/TextBoxDemo.axaml index a181a61..57bcb57 100644 --- a/demo/Semi.Avalonia.Demo/Pages/TextBoxDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/TextBoxDemo.axaml @@ -4,6 +4,7 @@ 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:system="clr-namespace:System;assembly=netstandard" d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> @@ -41,6 +42,23 @@ InnerLeftContent="http://" InnerRightContent=".com" IsEnabled="False" /> + + + + + + + + + + diff --git a/src/Semi.Avalonia/Controls/DataValidationErrors.axaml b/src/Semi.Avalonia/Controls/DataValidationErrors.axaml index 781b90a..ee21df3 100644 --- a/src/Semi.Avalonia/Controls/DataValidationErrors.axaml +++ b/src/Semi.Avalonia/Controls/DataValidationErrors.axaml @@ -27,7 +27,7 @@ + + + + + + + - - + + + + + + diff --git a/src/Semi.Avalonia/Themes/Light/DataValidationErrors.axaml b/src/Semi.Avalonia/Themes/Light/DataValidationErrors.axaml index c319b1d..95dfb36 100644 --- a/src/Semi.Avalonia/Themes/Light/DataValidationErrors.axaml +++ b/src/Semi.Avalonia/Themes/Light/DataValidationErrors.axaml @@ -1,6 +1,6 @@ - + From 5f7e1510f1eea3d5235ccbe6c886e4d9b0864201 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Fri, 5 May 2023 02:31:25 +0800 Subject: [PATCH 03/12] feat: move validation errors demo to individual page. --- .../Pages/DataValidationErrorsDemo.axaml | 61 +++++++++++++++++++ .../Pages/DataValidationErrorsDemo.axaml.cs | 18 ++++++ .../Pages/TextBoxDemo.axaml | 17 ------ demo/Semi.Avalonia.Demo/Views/MainView.axaml | 3 + 4 files changed, 82 insertions(+), 17 deletions(-) create mode 100644 demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml create mode 100644 demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml.cs diff --git a/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml new file mode 100644 index 0000000..c00f897 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml.cs new file mode 100644 index 0000000..b012533 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Semi.Avalonia.Demo.Pages; + +public partial class DataValidationErrorsDemo : UserControl +{ + public DataValidationErrorsDemo() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } +} \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/Pages/TextBoxDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/TextBoxDemo.axaml index 57bcb57..b12fa1f 100644 --- a/demo/Semi.Avalonia.Demo/Pages/TextBoxDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/TextBoxDemo.axaml @@ -42,23 +42,6 @@ InnerLeftContent="http://" InnerRightContent=".com" IsEnabled="False" /> - - - - - - - - - - diff --git a/demo/Semi.Avalonia.Demo/Views/MainView.axaml b/demo/Semi.Avalonia.Demo/Views/MainView.axaml index 1e517fc..39aa54d 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml @@ -105,6 +105,9 @@ + + + From bac20dbdbfe0b64aa6cab9380bb8f1a153e2bded Mon Sep 17 00:00:00 2001 From: rabbitism Date: Fri, 5 May 2023 10:52:08 +0800 Subject: [PATCH 04/12] feat: simplify slider template, add error. --- src/Semi.Avalonia/Controls/Slider.axaml | 268 ++++++++++++------------ 1 file changed, 131 insertions(+), 137 deletions(-) diff --git a/src/Semi.Avalonia/Controls/Slider.axaml b/src/Semi.Avalonia/Controls/Slider.axaml index 949823b..a072fdb 100644 --- a/src/Semi.Avalonia/Controls/Slider.axaml +++ b/src/Semi.Avalonia/Controls/Slider.axaml @@ -60,10 +60,10 @@ CornerRadius="{TemplateBinding CornerRadius}" /> - - @@ -75,165 +75,155 @@ - - - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + - + @@ -263,6 +253,10 @@ + + - @@ -173,6 +175,25 @@ + + + + + + + + + + + + From d75a4c549e6c5854f53ec02a472a47e505004e2d Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Sat, 6 May 2023 21:54:35 +0800 Subject: [PATCH 06/12] feat: add validation errors to NumericUpDown. --- .../Pages/DataValidationErrorsDemo.axaml | 7 +- .../Controls/NumericUpDown.axaml | 80 ++++++++++++------- 2 files changed, 51 insertions(+), 36 deletions(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml index df5f491..a5fc5be 100644 --- a/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml @@ -8,17 +8,12 @@ d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> - + - - - - - diff --git a/src/Semi.Avalonia/Controls/NumericUpDown.axaml b/src/Semi.Avalonia/Controls/NumericUpDown.axaml index fe21510..f5bd4d2 100644 --- a/src/Semi.Avalonia/Controls/NumericUpDown.axaml +++ b/src/Semi.Avalonia/Controls/NumericUpDown.axaml @@ -5,45 +5,65 @@ - - - - + + + + + - - + + + + + + - + \ No newline at end of file From ae0994aa937224a1dbf87c201f1dd650b0d03172 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sat, 6 May 2023 22:45:46 +0800 Subject: [PATCH 07/12] feat: add hacks for internal textbox error display. --- .../Controls/DataValidationErrors.axaml | 14 ++++++++++++++ src/Semi.Avalonia/Controls/NumericUpDown.axaml | 4 +++- src/Semi.Avalonia/Controls/TextBox.axaml | 9 +++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Semi.Avalonia/Controls/DataValidationErrors.axaml b/src/Semi.Avalonia/Controls/DataValidationErrors.axaml index ee21df3..5486e93 100644 --- a/src/Semi.Avalonia/Controls/DataValidationErrors.axaml +++ b/src/Semi.Avalonia/Controls/DataValidationErrors.axaml @@ -38,4 +38,18 @@ + + + + + + + diff --git a/src/Semi.Avalonia/Controls/NumericUpDown.axaml b/src/Semi.Avalonia/Controls/NumericUpDown.axaml index f5bd4d2..fe4fc2d 100644 --- a/src/Semi.Avalonia/Controls/NumericUpDown.axaml +++ b/src/Semi.Avalonia/Controls/NumericUpDown.axaml @@ -28,11 +28,13 @@ VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" AcceptsReturn="False" CornerRadius="{TemplateBinding CornerRadius}" + DataValidationErrors.Errors="{ReflectionBinding $parent[NumericUpDown].(DataValidationErrors.Errors)}" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsReadOnly="{TemplateBinding IsReadOnly}" Text="{TemplateBinding Text}" TextWrapping="NoWrap" + Theme="{DynamicResource NonErrorTextBox}" Watermark="{TemplateBinding Watermark}" /> @@ -45,7 +47,7 @@ - + + + + + From cece722496dd4c6ec72268831bbd94543ab4f87a Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Sun, 7 May 2023 00:11:38 +0800 Subject: [PATCH 08/12] feat: add validation errors to CalendarDatePicker. --- .../Controls/CalendarDatePicker.axaml | 202 +++++++++++------- 1 file changed, 121 insertions(+), 81 deletions(-) diff --git a/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml b/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml index 5ba39d2..abbd36e 100644 --- a/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml +++ b/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml @@ -34,96 +34,99 @@ - - - - - + + + - - - - - - - - + - - - + + + - + + diff --git a/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml b/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml index e5c96cb..f18ddaf 100644 --- a/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml +++ b/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml @@ -30,6 +30,25 @@ + + + + + + diff --git a/src/Semi.Avalonia/Controls/TimePicker.axaml b/src/Semi.Avalonia/Controls/TimePicker.axaml index 90d21a0..89aafa2 100644 --- a/src/Semi.Avalonia/Controls/TimePicker.axaml +++ b/src/Semi.Avalonia/Controls/TimePicker.axaml @@ -139,106 +139,109 @@ - - + - - - - + + + + + From 4ba6ea324d25b453adc7b25e767ba01194a7e5a2 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Mon, 8 May 2023 17:57:43 +0800 Subject: [PATCH 10/12] fix: fix DatePicker&TimePicker MinHeight property. --- src/Semi.Avalonia/Controls/DatePicker.axaml | 6 +++--- src/Semi.Avalonia/Controls/TimePicker.axaml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Semi.Avalonia/Controls/DatePicker.axaml b/src/Semi.Avalonia/Controls/DatePicker.axaml index 9f92d80..d37ec77 100644 --- a/src/Semi.Avalonia/Controls/DatePicker.axaml +++ b/src/Semi.Avalonia/Controls/DatePicker.axaml @@ -125,7 +125,6 @@ - @@ -151,6 +150,7 @@ DataValidationErrors.Errors="{TemplateBinding (DataValidationErrors.Errors)}" Foreground="{TemplateBinding Foreground}" IsEnabled="{TemplateBinding IsEnabled}" + MinHeight="{DynamicResource DateTimePickerButtonDefaultHeight}" Theme="{StaticResource DateTimePickerFlyoutButton}"> - - diff --git a/src/Semi.Avalonia/Controls/TimePicker.axaml b/src/Semi.Avalonia/Controls/TimePicker.axaml index 89aafa2..8041da1 100644 --- a/src/Semi.Avalonia/Controls/TimePicker.axaml +++ b/src/Semi.Avalonia/Controls/TimePicker.axaml @@ -129,7 +129,6 @@ - @@ -155,6 +154,7 @@ DataValidationErrors.Errors="{TemplateBinding (DataValidationErrors.Errors)}" Foreground="{TemplateBinding Foreground}" IsEnabled="{TemplateBinding IsEnabled}" + MinHeight="{DynamicResource DateTimePickerButtonDefaultHeight}" Theme="{StaticResource DateTimePickerFlyoutButton}"> @@ -253,10 +253,10 @@ - - From 6eb405abe25234682a174cfe024ef8627d21720a Mon Sep 17 00:00:00 2001 From: rabbitism Date: Mon, 8 May 2023 22:15:17 +0800 Subject: [PATCH 11/12] feat: add textbox internal style, fix various internal textbox styles. --- .../Pages/DataValidationErrorsDemo.axaml | 106 +++++++++-------- .../Controls/AutoCompleteBox.axaml | 61 +++++----- .../Controls/CalendarDatePicker.axaml | 18 ++- src/Semi.Avalonia/Controls/TextBox.axaml | 108 +++++++++++++++++- 4 files changed, 201 insertions(+), 92 deletions(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml index a5fc5be..1592d38 100644 --- a/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml @@ -8,51 +8,63 @@ d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> - - - - - - - - - - - - - AAA - BBB - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + AAA + BBB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml b/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml index 93f6747..18110f5 100644 --- a/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml +++ b/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml @@ -12,35 +12,38 @@ - - - - - - - - + + + + + + + + + + diff --git a/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml b/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml index abbd36e..566d2ab 100644 --- a/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml +++ b/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml @@ -65,18 +65,17 @@ BorderThickness="0" CornerRadius="{TemplateBinding CornerRadius}" Foreground="{TemplateBinding Foreground}" + Theme="{DynamicResource NonErrorTextBox}" UseFloatingWatermark="{TemplateBinding UseFloatingWatermark}" Watermark="{TemplateBinding Watermark}"> - - @@ -182,7 +180,7 @@ - @@ -224,7 +222,7 @@ - diff --git a/src/Semi.Avalonia/Controls/TextBox.axaml b/src/Semi.Avalonia/Controls/TextBox.axaml index 823e869..4d107a7 100644 --- a/src/Semi.Avalonia/Controls/TextBox.axaml +++ b/src/Semi.Avalonia/Controls/TextBox.axaml @@ -275,12 +275,108 @@ - - + + + + + + + + + From 97b5eb7a0481e6b773db0f709a06471875ee965a Mon Sep 17 00:00:00 2001 From: rabbitism Date: Mon, 8 May 2023 22:53:51 +0800 Subject: [PATCH 12/12] feat: add tooltip error theme. --- .../Pages/DataValidationErrorsDemo.axaml | 13 +++++ src/Semi.Avalonia.DataGrid/DataGrid.axaml | 7 +++ .../Controls/DataValidationErrors.axaml | 55 ++++++++++++++++++- 3 files changed, 74 insertions(+), 1 deletion(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml index 1592d38..a8e1101 100644 --- a/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/DataValidationErrorsDemo.axaml @@ -65,6 +65,19 @@ + + + + + + + + diff --git a/src/Semi.Avalonia.DataGrid/DataGrid.axaml b/src/Semi.Avalonia.DataGrid/DataGrid.axaml index 50373a3..9087751 100644 --- a/src/Semi.Avalonia.DataGrid/DataGrid.axaml +++ b/src/Semi.Avalonia.DataGrid/DataGrid.axaml @@ -14,6 +14,13 @@ BasedOn="{StaticResource {x:Type TextBox}}" TargetType="TextBox"> + + + diff --git a/src/Semi.Avalonia/Controls/DataValidationErrors.axaml b/src/Semi.Avalonia/Controls/DataValidationErrors.axaml index 5486e93..a91ebf0 100644 --- a/src/Semi.Avalonia/Controls/DataValidationErrors.axaml +++ b/src/Semi.Avalonia/Controls/DataValidationErrors.axaml @@ -1,4 +1,7 @@ - + @@ -52,4 +55,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +