From aa52f874ca841c8e93b1c5b0a88fa3150c7b1432 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sun, 29 Jan 2023 16:59:09 +0800 Subject: [PATCH 1/2] feat: Add Calendar --- .../Pages/CalendarDemo.axaml | 13 + .../Pages/CalendarDemo.axaml.cs | 18 ++ demo/Semi.Avalonia.Demo/Views/MainView.axaml | 3 + src/Semi.Avalonia/Controls/Calendar.axaml | 272 ++++++++++++++++++ src/Semi.Avalonia/Controls/Controls.axaml | 1 + src/Semi.Avalonia/Controls/ScrollViewer.axaml | 115 +++++--- src/Semi.Avalonia/Themes/Light/Calendar.axaml | 46 +++ src/Semi.Avalonia/Themes/Light/Light.axaml | 1 + 8 files changed, 431 insertions(+), 38 deletions(-) create mode 100644 demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml create mode 100644 demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml.cs create mode 100644 src/Semi.Avalonia/Controls/Calendar.axaml create mode 100644 src/Semi.Avalonia/Themes/Light/Calendar.axaml diff --git a/demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml new file mode 100644 index 0000000..c8fb1ce --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml @@ -0,0 +1,13 @@ + + + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml.cs new file mode 100644 index 0000000..06ac28c --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Semi.Avalonia.Demo.Pages; + +public partial class CalendarDemo : UserControl +{ + public CalendarDemo() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } +} \ 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 e0084e2..8d06650 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml @@ -27,6 +27,9 @@ + + + diff --git a/src/Semi.Avalonia/Controls/Calendar.axaml b/src/Semi.Avalonia/Controls/Calendar.axaml new file mode 100644 index 0000000..9e2b32f --- /dev/null +++ b/src/Semi.Avalonia/Controls/Calendar.axaml @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Controls/Controls.axaml b/src/Semi.Avalonia/Controls/Controls.axaml index 25c89e0..c4042e5 100644 --- a/src/Semi.Avalonia/Controls/Controls.axaml +++ b/src/Semi.Avalonia/Controls/Controls.axaml @@ -5,6 +5,7 @@ + diff --git a/src/Semi.Avalonia/Controls/ScrollViewer.axaml b/src/Semi.Avalonia/Controls/ScrollViewer.axaml index 81944b4..aadb4ba 100644 --- a/src/Semi.Avalonia/Controls/ScrollViewer.axaml +++ b/src/Semi.Avalonia/Controls/ScrollViewer.axaml @@ -1,17 +1,23 @@ + xmlns="https://github.com/avaloniaui" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:converters="using:Avalonia.Controls.Converters" + xmlns:dialog="using:Avalonia.Dialogs"> + Width="200" + Height="200" + HorizontalScrollBarVisibility="Visible" + VerticalScrollBarVisibility="Visible"> + @@ -23,11 +29,14 @@ + VerticalAlignment="Center" + Classes="repeat" + CornerRadius="0" + Focusable="False"> + VerticalAlignment="Center" + Classes="repeat" + CornerRadius="0" + Focusable="False"> @@ -73,14 +91,18 @@ + HorizontalAlignment="Center" + Classes="repeat" + CornerRadius="0" + Focusable="False"> + HorizontalAlignment="Center" + Classes="repeat" + CornerRadius="0" + Focusable="False"> @@ -122,7 +153,8 @@ + CornerRadius="24" + UseLayoutRounding="False" /> @@ -185,8 +217,10 @@ @@ -228,7 +265,8 @@ @@ -242,7 +280,8 @@ diff --git a/src/Semi.Avalonia/Themes/Light/Calendar.axaml b/src/Semi.Avalonia/Themes/Light/Calendar.axaml new file mode 100644 index 0000000..65fa48a --- /dev/null +++ b/src/Semi.Avalonia/Themes/Light/Calendar.axaml @@ -0,0 +1,46 @@ + + + + + + 1 + 3 + 40 + + + M16.2782 4.23933C16.864 4.82511 16.864 5.77486 16.2782 6.36065L10.6213 12.0175L16.2782 17.6744C16.864 18.2601 16.864 19.2099 16.2782 19.7957C15.6924 20.3815 14.7426 20.3815 14.1569 19.7957L7.43934 13.0782C6.85355 12.4924 6.85355 11.5426 7.43934 10.9568L14.1569 4.23933C14.7426 3.65354 15.6924 3.65354 16.2782 4.23933Z + M7.43934 19.7957C6.85355 19.2099 6.85355 18.2601 7.43934 17.6744L13.0962 12.0175L7.43934 6.36065C6.85355 5.77486 6.85355 4.82511 7.43934 4.23933C8.02513 3.65354 8.97487 3.65354 9.56066 4.23933L16.2782 10.9568C16.864 11.5426 16.864 12.4924 16.2782 13.0782L9.56066 19.7957C8.97487 20.3815 8.02513 20.3815 7.43934 19.7957Z + + + + + 0 + + + + + 600 + + + + 3 + + + + + 3 + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Themes/Light/Light.axaml b/src/Semi.Avalonia/Themes/Light/Light.axaml index f73b8b7..fe355b4 100644 --- a/src/Semi.Avalonia/Themes/Light/Light.axaml +++ b/src/Semi.Avalonia/Themes/Light/Light.axaml @@ -6,6 +6,7 @@ + From c59bae2c03819753b1da574e0a02d4a984a560a3 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sun, 29 Jan 2023 18:29:47 +0800 Subject: [PATCH 2/2] feat: Add CalendarDatePicker --- .../Pages/CalendarDatePickerDemo.axaml | 25 ++++ .../Pages/CalendarDatePickerDemo.axaml.cs | 18 +++ .../Pages/CalendarDemo.axaml | 1 + demo/Semi.Avalonia.Demo/Views/MainView.axaml | 3 + .../Controls/CalendarDatePicker.axaml | 135 ++++++++++++++++++ src/Semi.Avalonia/Controls/Controls.axaml | 1 + src/Semi.Avalonia/Themes/Light/Calendar.axaml | 2 +- .../Themes/Light/CalendarDatePicker.axaml | 15 ++ .../Themes/Light/DateTimePickerShared.axaml | 1 - src/Semi.Avalonia/Themes/Light/Light.axaml | 1 + 10 files changed, 200 insertions(+), 2 deletions(-) create mode 100644 demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml create mode 100644 demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml.cs create mode 100644 src/Semi.Avalonia/Controls/CalendarDatePicker.axaml create mode 100644 src/Semi.Avalonia/Themes/Light/CalendarDatePicker.axaml diff --git a/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml new file mode 100644 index 0000000..d9c97c1 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml.cs new file mode 100644 index 0000000..08e4a31 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Semi.Avalonia.Demo.Pages; + +public partial class CalendarDatePickerDemo : UserControl +{ + public CalendarDatePickerDemo() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } +} \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml index c8fb1ce..c942a4f 100644 --- a/demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/CalendarDemo.axaml @@ -9,5 +9,6 @@ mc:Ignorable="d"> + diff --git a/demo/Semi.Avalonia.Demo/Views/MainView.axaml b/demo/Semi.Avalonia.Demo/Views/MainView.axaml index 8d06650..986096e 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml @@ -30,6 +30,9 @@ + + + diff --git a/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml b/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml new file mode 100644 index 0000000..791c189 --- /dev/null +++ b/src/Semi.Avalonia/Controls/CalendarDatePicker.axaml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +