Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement"/>
<span class="form-select-append"><i class="@Icon"></i></span>
<span class="form-select-append ac-loading"><i class="@LoadingIcon"></i></span>
<RenderTemplate ChildContent="RenderItems"></RenderTemplate>
<BootstrapBlazorRender @ref="_dropdown">
@RenderDropdown
</BootstrapBlazorRender>
</div>

@code {
Expand Down
12 changes: 2 additions & 10 deletions src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ public partial class AutoComplete
private List<string>? _filterItems;

[NotNull]
private AutoCompleteItems? _dropdown = default;
private BootstrapBlazorRender? _dropdown = default;

/// <summary>
/// <inheritdoc/>
Expand Down Expand Up @@ -187,15 +187,7 @@ public override Task TriggerChange(string val)
StateHasChanged();
}
_render = true;
_dropdown.RenderContent();
_dropdown.Render();
return Task.CompletedTask;
}

private RenderFragment RenderItems => builder =>
{
builder.OpenComponent<AutoCompleteItems>(0);
builder.AddAttribute(10, "ChildContent", RenderDropdown);
builder.AddComponentReferenceCapture(20, dropdown => _dropdown = (AutoCompleteItems)dropdown);
builder.CloseComponent();
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,18 @@
namespace BootstrapBlazor.Components;

/// <summary>
/// AutoCompleteItems component
/// BootstrapBlazorRender component
/// </summary>
class AutoCompleteItems : IComponent
public class BootstrapBlazorRender : IComponent
{
/// <summary>
/// Gets or sets the child content
/// </summary>
[Parameter, NotNull]
public RenderFragment? ChildContent { get; set; }

private static readonly RenderFragment _emptyRenderFragment = _ => { };

Check warning on line 21 in src/BootstrapBlazor/Components/BaseComponents/BootstrapBlazorRender.cs

View check run for this annotation

Codecov / codecov/patch

src/BootstrapBlazor/Components/BaseComponents/BootstrapBlazorRender.cs#L21

Added line #L21 was not covered by tests

private RenderHandle _renderHandle;

/// <summary>
Expand All @@ -38,23 +40,19 @@
{
parameters.SetParameterProperties(this);

RenderContent();
Render();
return Task.CompletedTask;
}
/// <summary>
/// Render method
/// </summary>
public void RenderContent()
public void Render()
{
_renderHandle.Render(BuildRenderTree);
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="builder"></param>
private void BuildRenderTree(RenderTreeBuilder builder)
{
builder.AddContent(0, ChildContent);
builder.AddContent(0, ChildContent ?? _emptyRenderFragment);
}
}
13 changes: 10 additions & 3 deletions src/BootstrapBlazor/Components/Search/Search.razor
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,14 @@
<Button Color="SearchButtonColor" Text="@SearchButtonText" Icon="@ButtonIcon" OnClick="OnSearchClick" aria-label="Search"></Button>
}
</div>
<ul class="dropdown-menu">
<BootstrapBlazorRender @ref="_dropdown">
@RenderDropdown
</BootstrapBlazorRender>
</div>

@code {
RenderFragment RenderDropdown =>
@<ul class="dropdown-menu">
@foreach (var item in _filterItems)
{
<li class="dropdown-item" @onclick="() => OnClickItem(item)">
Expand All @@ -73,5 +80,5 @@
{
<li class="dropdown-item">@NoDataTip</li>
}
</ul>
</div>
</ul>;
}
15 changes: 14 additions & 1 deletion src/BootstrapBlazor/Components/Search/Search.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,9 @@ public partial class Search<TValue>

private SearchContext<TValue> _context = default!;

[NotNull]
private BootstrapBlazorRender? _dropdown = default;

/// <summary>
/// <inheritdoc/>
/// </summary>
Expand Down Expand Up @@ -205,6 +208,14 @@ protected override void OnParametersSet()
}
}

private bool _render = true;

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <returns></returns>
protected override bool ShouldRender() => _render;

private string _displayText = "";
/// <summary>
/// 点击搜索按钮时触发此方法
Expand Down Expand Up @@ -280,11 +291,13 @@ private async Task OnClickItem(TValue val)
[JSInvokable]
public override async Task TriggerChange(string val)
{
_render = false;
_displayText = val;

if (IsTriggerSearchByInput)
{
await OnSearchClick();
}
_render = true;
_dropdown.Render();
}
}