From 7f648dfb6563ebe7e44c671d9584498d7a7cd1eb Mon Sep 17 00:00:00 2001 From: Pooria Shariatzadeh Date: Wed, 17 Jun 2026 18:40:31 +0330 Subject: [PATCH] fix --- NuGet.Config | 2 +- .../Localization/SufiBlazorDemo/ar.json | 4 ++-- .../Localization/SufiBlazorDemo/en.json | 4 ++-- .../Localization/SufiBlazorDemo/fa.json | 4 ++-- .../Components/Forms/SbSelectOption.razor | 12 ++++++++-- .../Components/Forms/SbSimpleSelect.razor | 24 +++++++++++++++++-- src/SufiChain.SufiBlazor/Icons/SufiIcons.cs | 2 ++ 7 files changed, 41 insertions(+), 11 deletions(-) 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", $""),