diff --git a/demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml
index 39f869c..3282f7b 100644
--- a/demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml
+++ b/demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml
@@ -11,84 +11,95 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/ViewModels/IconDemoViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/IconDemoViewModel.cs
index 75bc090..d731fc9 100644
--- a/demo/Semi.Avalonia.Demo/ViewModels/IconDemoViewModel.cs
+++ b/demo/Semi.Avalonia.Demo/ViewModels/IconDemoViewModel.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Avalonia.Controls;
@@ -37,9 +38,9 @@ public partial class IconDemoViewModel : ObservableObject
};
if (key.ToString().EndsWith("Stroked"))
- _strokedIcons[key.ToString().ToLowerInvariant()] = icon;
+ _strokedIcons[key.ToString()] = icon;
else
- _filledIcons[key.ToString().ToLowerInvariant()] = icon;
+ _filledIcons[key.ToString()] = icon;
}
}
@@ -48,16 +49,16 @@ public partial class IconDemoViewModel : ObservableObject
partial void OnSearchTextChanged(string? value)
{
- var search = value?.ToLowerInvariant() ?? string.Empty;
+ var search = string.IsNullOrWhiteSpace(value) ? string.Empty : value.Trim();
FilteredFilledIcons.Clear();
- foreach (var pair in _filledIcons.Where(i => i.Key.Contains(search)))
+ foreach (var pair in _filledIcons.Where(kv => kv.Key.Contains(search, StringComparison.InvariantCultureIgnoreCase)))
{
FilteredFilledIcons.Add(pair.Value);
}
FilteredStrokedIcons.Clear();
- foreach (var pair in _strokedIcons.Where(i => i.Key.Contains(search)))
+ foreach (var pair in _strokedIcons.Where(kv => kv.Key.Contains(search, StringComparison.InvariantCultureIgnoreCase)))
{
FilteredStrokedIcons.Add(pair.Value);
}
diff --git a/demo/Semi.Avalonia.Demo/ViewModels/VariablesDemoViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/VariablesDemoViewModel.cs
index 583919f..639d02c 100644
--- a/demo/Semi.Avalonia.Demo/ViewModels/VariablesDemoViewModel.cs
+++ b/demo/Semi.Avalonia.Demo/ViewModels/VariablesDemoViewModel.cs
@@ -10,9 +10,10 @@ using Semi.Avalonia.Tokens;
namespace Semi.Avalonia.Demo.ViewModels;
-public class VariablesDemoViewModel : ObservableObject
+public partial class VariablesDemoViewModel : ObservableObject
{
public DataGridCollectionView GridData { get; set; }
+ [ObservableProperty] private string _searchText = string.Empty;
public VariablesDemoViewModel()
{
@@ -30,7 +31,7 @@ public class VariablesDemoViewModel : ObservableObject
GridData.GroupDescriptions.Add(new DataGridPathGroupDescription(nameof(VariableItem.Category)));
}
- private static string GetValueString(object? value)
+ private static string? GetValueString(object? value)
{
if (value is null) return string.Empty;
@@ -45,6 +46,28 @@ public class VariablesDemoViewModel : ObservableObject
};
}
+ partial void OnSearchTextChanged(string value)
+ {
+ if (string.IsNullOrWhiteSpace(value))
+ {
+ GridData.Filter = _ => true;
+ GridData.Refresh();
+ return;
+ }
+
+ var search = value.Trim();
+ GridData.Filter = item =>
+ {
+ if (item is not VariableItem variableItem) return false;
+ return (variableItem.Category?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
+ (variableItem.ResourceKey?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
+ (variableItem.Value?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
+ (variableItem.Type?.Name.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
+ (variableItem.Description?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false);
+ };
+ GridData.Refresh();
+ }
+
private static List Tokens { get; set; } =
[
new("Height", "SemiHeightControlSmall"),
@@ -55,6 +78,11 @@ public class VariablesDemoViewModel : ObservableObject
new("Icon Size", "SemiWidthIconMedium"),
new("Icon Size", "SemiWidthIconLarge"),
new("Icon Size", "SemiWidthIconExtraLarge"),
+ new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingExtraSmall"),
+ new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingSmall"),
+ new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingMedium"),
+ new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingLarge"),
+ new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingFull"),
new("Border CornerRadius", "SemiBorderRadiusExtraSmall"),
new("Border CornerRadius", "SemiBorderRadiusSmall"),
new("Border CornerRadius", "SemiBorderRadiusMedium"),