diff --git a/NuGet.Config b/NuGet.Config
index f0cd68a..4539458 100644
--- a/NuGet.Config
+++ b/NuGet.Config
@@ -1,7 +1,7 @@
-
+
diff --git a/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/ar.json b/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/ar.json
index 5f49297..5706770 100644
--- a/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/ar.json
+++ b/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/ar.json
@@ -1014,10 +1014,10 @@
"Demo:ErrorHandlingNetworkErrorDesc": "HttpRequestException → UserExceptionInformer. يعرض \"خطأ الشبكة\" المترجم.",
"Demo:ErrorHandlingSimulateNetwork": "محاكاة خطأ الشبكة",
"Demo:ErrorHandlingShow404": "عرض الصفحة 404",
- "Demo:ErrorHandlingShow404Desc": "التوجيه إلى مسار غير موجود → SpErrorPage (404). صفحة خطأ رسمية مع العودة للصفحة الرئيسية.",
+ "Demo:ErrorHandlingShow404Desc": "التوجيه إلى مسار غير موجود → SufiAbpErrorPage (404). صفحة خطأ رسمية مع العودة للصفحة الرئيسية.",
"Demo:ErrorHandlingShow404Button": "عرض الصفحة 404",
"Demo:ErrorHandlingShow403": "عرض الصفحة 403",
- "Demo:ErrorHandlingShow403Desc": "التوجيه إلى مسار ممنوع → SpErrorPage (403). يتطلب دورًا لا يملكه أحد.",
+ "Demo:ErrorHandlingShow403Desc": "التوجيه إلى مسار ممنوع → SufiAbpErrorPage (403). يتطلب دورًا لا يملكه أحد.",
"Demo:ErrorHandlingShow403Button": "عرض الصفحة 403",
"Demo:ForbiddenDemoMessage": "إذا رأيت هذا، فلديك دور ForbiddenDemoRole (غير متوقع)."
}
diff --git a/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/en.json b/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/en.json
index db70600..16d4869 100644
--- a/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/en.json
+++ b/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/en.json
@@ -1013,10 +1013,10 @@
"Demo:ErrorHandlingNetworkErrorDesc": "HttpRequestException → UserExceptionInformer. Shows localized \"Network error\".",
"Demo:ErrorHandlingSimulateNetwork": "Simulate network error",
"Demo:ErrorHandlingShow404": "Show 404 page",
- "Demo:ErrorHandlingShow404Desc": "Navigate to non-existent route → SpErrorPage (404). Formal error page with Back to home, Go back.",
+ "Demo:ErrorHandlingShow404Desc": "Navigate to non-existent route → SufiAbpErrorPage (404). Formal error page with Back to home, Go back.",
"Demo:ErrorHandlingShow404Button": "Show 404 page",
"Demo:ErrorHandlingShow403": "Show 403 page",
- "Demo:ErrorHandlingShow403Desc": "Navigate to forbidden route → SpErrorPage (403). Requires a role nobody has.",
+ "Demo:ErrorHandlingShow403Desc": "Navigate to forbidden route → SufiAbpErrorPage (403). Requires a role nobody has.",
"Demo:ErrorHandlingShow403Button": "Show 403 page",
"Demo:ForbiddenDemoMessage": "If you see this, you have the ForbiddenDemoRole (unexpected)."
}
diff --git a/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/fa.json b/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/fa.json
index 45fb8c7..6e8a589 100644
--- a/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/fa.json
+++ b/src/SufiChain.SufiBlazor.Demo.Localization/Localization/SufiBlazorDemo/fa.json
@@ -1013,10 +1013,10 @@
"Demo:ErrorHandlingNetworkErrorDesc": "HttpRequestException → UserExceptionInformer. «خطای شبکه» localized را نشان میدهد.",
"Demo:ErrorHandlingSimulateNetwork": "شبیهسازی خطای شبکه",
"Demo:ErrorHandlingShow404": "نمایش صفحه 404",
- "Demo:ErrorHandlingShow404Desc": "مسیریابی به مسیر ناموجود → SpErrorPage (404). صفحه خطای رسمی با بازگشت به خانه، بازگشت.",
+ "Demo:ErrorHandlingShow404Desc": "مسیریابی به مسیر ناموجود → SufiAbpErrorPage (404). صفحه خطای رسمی با بازگشت به خانه، بازگشت.",
"Demo:ErrorHandlingShow404Button": "نمایش صفحه 404",
"Demo:ErrorHandlingShow403": "نمایش صفحه 403",
- "Demo:ErrorHandlingShow403Desc": "مسیریابی به مسیر ممنوع → SpErrorPage (403). نیاز به نقشی دارد که هیچکس ندارد.",
+ "Demo:ErrorHandlingShow403Desc": "مسیریابی به مسیر ممنوع → SufiAbpErrorPage (403). نیاز به نقشی دارد که هیچکس ندارد.",
"Demo:ErrorHandlingShow403Button": "نمایش صفحه 403",
"Demo:ForbiddenDemoMessage": "اگر این را میبینید، نقش ForbiddenDemoRole را دارید (غیرمنتظره)."
}
diff --git a/src/SufiChain.SufiBlazor/Components/Forms/SbSelectOption.razor b/src/SufiChain.SufiBlazor/Components/Forms/SbSelectOption.razor
index f400d5d..abbd368 100644
--- a/src/SufiChain.SufiBlazor/Components/Forms/SbSelectOption.razor
+++ b/src/SufiChain.SufiBlazor/Components/Forms/SbSelectOption.razor
@@ -36,8 +36,16 @@
protected override void OnInitialized()
{
- // Register once when the option is first created
- // The parent SbSimpleSelect maintains options without clearing them
+ RegisterWithContext();
+ }
+
+ protected override void OnParametersSet()
+ {
+ RegisterWithContext();
+ }
+
+ private void RegisterWithContext()
+ {
Context?.RegisterOption(new SbSelectOptionInfo
{
Value = Value,
diff --git a/src/SufiChain.SufiBlazor/Components/Forms/SbSimpleSelect.razor b/src/SufiChain.SufiBlazor/Components/Forms/SbSimpleSelect.razor
index 22da7c2..00bed75 100644
--- a/src/SufiChain.SufiBlazor/Components/Forms/SbSimpleSelect.razor
+++ b/src/SufiChain.SufiBlazor/Components/Forms/SbSimpleSelect.razor
@@ -196,7 +196,23 @@
[Parameter]
public string? Style { get; set; }
- private bool HasValue => Value != null && !EqualityComparer.Default.Equals(Value, default);
+ private bool HasValue
+ {
+ get
+ {
+ if (Value is null)
+ {
+ return false;
+ }
+
+ if (typeof(TValue).IsEnum)
+ {
+ return true;
+ }
+
+ return !EqualityComparer.Default.Equals(Value, default);
+ }
+ }
private string IconClass => $"sb-select-trigger__icon{(_isOpen ? " sb-select-trigger__icon--open" : "")}";
@@ -204,13 +220,17 @@
void ISbSelectOptionContext.RegisterOption(SbSelectOptionInfo option)
{
- // Avoid duplicate registrations - options register once and stay registered
if (!_options.Any(o => EqualityComparer.Default.Equals(o.Value, option.Value)))
{
_options.Add(option);
}
}
+ protected override void OnParametersSet()
+ {
+ _options.Clear();
+ }
+
private IEnumerable> FilteredOptions
{
get
diff --git a/src/SufiChain.SufiBlazor/Icons/SufiIcons.cs b/src/SufiChain.SufiBlazor/Icons/SufiIcons.cs
index c314ec4..b59b24f 100644
--- a/src/SufiChain.SufiBlazor/Icons/SufiIcons.cs
+++ b/src/SufiChain.SufiBlazor/Icons/SufiIcons.cs
@@ -467,6 +467,8 @@ public static class SufiIcons
$""),
["calendar-x"] = new("calendar-x", SiIconCategory.Time, "Calendar with cancel",
$""),
+ ["calendar-days"] = new("calendar-days", SiIconCategory.Time, "Calendar with day grid",
+ $""),
["repeat"] = new("repeat", SiIconCategory.Time, "Repeat or loop",
$""),