diff --git a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor index d190cb37bff..bac344794ff 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor @@ -9,7 +9,7 @@
@((MarkupString)@Localizer["NormalDesc"].Value)
-
@@ -32,7 +32,7 @@
@((MarkupString)Localizer["CustomFilterDesc"].Value)
+ OnGetDisplayText="OnGetDisplayText">
@@ -54,7 +54,7 @@
@((MarkupString)@Localizer["ShowDropdownListOnFocusDesc"].Value)
- +
@@ -87,10 +87,9 @@

1. 使用 OnQueryAsync 作为数据源

-
- +
+
@@ -103,19 +102,19 @@
-
- @if (Model4 != null) - { - - } -
+
+ @if (Model4 != null) + { + + } +

2. 使用 Items 作为数据源

-
-
- +
+ @@ -130,14 +129,14 @@
-
- @if (Model4 != null) - { - - } -
+
+ @if (Model5 != null) + { + + } +
diff --git a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs index f75b92cc280..e0c5051334e 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs @@ -22,6 +22,9 @@ partial class AutoFills [NotNull] private Foo Model4 { get; set; } = new(); + [NotNull] + private Foo Model5 { get; set; } = new(); + private static string? OnGetDisplayText(Foo? foo) => foo?.Name; [NotNull] @@ -36,6 +39,9 @@ partial class AutoFills [NotNull] private IEnumerable? Items4 { get; set; } + [NotNull] + private IEnumerable? Items5 { get; set; } + [Inject] [NotNull] private IStringLocalizer? LocalizerFoo { get; set; } @@ -58,6 +64,9 @@ protected override void OnInitialized() Items4 = Foo.GenerateFoo(LocalizerFoo); Model4 = Items3.First(); + + Items5 = Foo.GenerateFoo(LocalizerFoo); + Model5 = Items3.First(); } private Task> OnCustomFilter(string searchText) @@ -68,7 +77,7 @@ private Task> OnCustomFilter(string searchText) private Task> OnCustomVirtulizeFilter(string searchText) { - var items = string.IsNullOrEmpty(searchText) ? Items4 : Items4.Where(i => i.Name!.Contains(searchText)); + var items = string.IsNullOrEmpty(searchText) ? Items5 : Items5.Where(i => i.Name!.Contains(searchText)); return Task.FromResult(items); } diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 5206e2197c2..cbdf8dfb073 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.5.0-beta08 + 9.5.0-beta09 diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor index fe0b8e712da..7cb4d6f865f 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor @@ -23,23 +23,25 @@ @code { RenderFragment RenderDropdown => - @; + @; } diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs index e61dc7c9859..fd9784285cf 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs @@ -16,7 +16,6 @@ public partial class AutoComplete /// Gets the component style /// private string? ClassString => CssBuilder.Default("auto-complete") - .AddClassFromAttributes(AdditionalAttributes) .Build(); /// diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js index 3b7e8557f35..1300fdd8b0d 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js @@ -16,6 +16,25 @@ export function init(id, invoke) { if (isPopover) { ac.popover = Popover.init(el, { toggleClass: '[data-bs-toggle="bb.dropdown"]' }); } + else { + const extraClass = input.getAttribute('data-bs-custom-class'); + if (extraClass) { + menu.classList.add(...extraClass.split(' ')) + } + const offset = input.getAttribute('data-bs-offset'); + if (offset) { + const [x, y] = offset.split(','); + const xValue = parseFloat(x); + const yValue = parseFloat(y); + + if (xValue > 0) { + menu.style.setProperty('margin-left', `${xValue}px`); + } + if (yValue > 0) { + menu.style.setProperty('margin-top', `${yValue}px`); + } + } + } // debounce const duration = parseInt(input.getAttribute('data-bb-debounce') || '0'); diff --git a/src/BootstrapBlazor/Components/AutoComplete/PopoverCompleteBase.cs b/src/BootstrapBlazor/Components/AutoComplete/PopoverCompleteBase.cs index 466a54973b3..eaef94daa1b 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/PopoverCompleteBase.cs +++ b/src/BootstrapBlazor/Components/AutoComplete/PopoverCompleteBase.cs @@ -155,7 +155,7 @@ protected override void OnParametersSet() { base.OnParametersSet(); - Offset ??= "[0, 10]"; + Offset ??= "[0, 6]"; } /// diff --git a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor index d7200fcd4dd..796198fd49e 100644 --- a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor +++ b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor @@ -22,7 +22,7 @@ { } - +
@code { RenderFragment RenderRow => item => - @; +
; RenderFragment RenderPlaceHolderRow => context => - @