Skip to content

Commit 738acfc

Browse files
committed
refactor: 重构固定搜索栏样式
1 parent 0139c72 commit 738acfc

File tree

3 files changed

+61
-58
lines changed

3 files changed

+61
-58
lines changed

src/BootstrapBlazor/Components/Select/Select.razor

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,15 @@
3030
{
3131
<span class="@ClearClassString" @onclick="OnClearValue"><i class="@ClearIcon"></i></span>
3232
}
33-
<div class="dropdown-menu">
34-
<div class="@SearchClassString">
35-
<input type="text" class="search-text form-control" autocomplete="off" value="@SearchText" aria-label="search">
36-
<i class="@SearchIconString"></i>
37-
<i class="@SearchLoadingIconString"></i>
38-
</div>
33+
<div class="@DropdownMenuClassString">
34+
@if (ShowSearch)
35+
{
36+
<div class="dropdown-menu-search">
37+
<input type="text" class="search-text form-control" autocomplete="off" value="@SearchText" aria-label="search">
38+
<i class="@SearchIconString"></i>
39+
<i class="@SearchLoadingIconString"></i>
40+
</div>
41+
}
3942
@if (IsVirtualize)
4043
{
4144
<div class="dropdown-virtual">
@@ -49,30 +52,32 @@
4952
}
5053
</div>
5154
}
55+
else if (Rows.Count == 0)
56+
{
57+
<div class="dropdown-item">@NoSearchDataText</div>
58+
}
5259
else
5360
{
54-
@foreach (var itemGroup in Rows.GroupBy(i => i.GroupName))
55-
{
56-
if (!string.IsNullOrEmpty(itemGroup.Key))
61+
<div class="dropdown-menu-body">
62+
@foreach (var itemGroup in Rows.GroupBy(i => i.GroupName))
5763
{
58-
if (GroupItemTemplate != null)
64+
if (!string.IsNullOrEmpty(itemGroup.Key))
5965
{
60-
@GroupItemTemplate(itemGroup.Key)
66+
if (GroupItemTemplate != null)
67+
{
68+
@GroupItemTemplate(itemGroup.Key)
69+
}
70+
else
71+
{
72+
<Divider Text="@itemGroup.Key" />
73+
}
6174
}
62-
else
75+
@foreach (var item in itemGroup)
6376
{
64-
<Divider Text="@itemGroup.Key" />
77+
@RenderRow(item)
6578
}
6679
}
67-
@foreach (var item in itemGroup)
68-
{
69-
@RenderRow(item)
70-
}
71-
}
72-
@if (Rows.Count == 0)
73-
{
74-
<div class="dropdown-item">@NoSearchDataText</div>
75-
}
80+
</div>
7681
}
7782
</div>
7883
@if (!IsPopover)

src/BootstrapBlazor/Components/Select/Select.razor.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,14 @@ public partial class Select<TValue> : ISelect, ILookup
4343
.AddClass("disabled", item.IsDisabled)
4444
.Build();
4545

46-
private string? SearchClassString => CssBuilder.Default("search")
47-
.AddClass("show", ShowSearch)
48-
.AddClass("is-fixed", IsFixedSearch)
49-
.Build();
50-
5146
private string? SearchLoadingIconString => CssBuilder.Default("icon searching-icon")
5247
.AddClass(SearchLoadingIcon)
5348
.Build();
5449

50+
private string? DropdownMenuClassString => CssBuilder.Default("dropdown-menu")
51+
.AddClass("is-fixed-search", IsFixedSearch)
52+
.Build();
53+
5554
private readonly List<SelectedItem> _children = [];
5655

5756
private string? ScrollIntoViewBehaviorString => ScrollIntoViewBehavior == ScrollIntoViewBehavior.Smooth ? null : ScrollIntoViewBehavior.ToDescriptionString();

src/BootstrapBlazor/Components/Select/Select.razor.scss

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -209,46 +209,45 @@
209209
border-color: transparent transparent var(--bs-info);
210210
}
211211

212-
.dropdown-menu .search {
213-
padding: var(--bb-select-search-padding);
214-
position: relative;
215-
border-block-end: var(--bs-border-width) solid var(--bb-select-search-border-color);
216-
margin-block-end: var(--bb-select-search-margin-bottom);
217-
218-
&:not(.show) {
219-
display: none;
220-
}
221-
222-
&.l {
223-
.search-icon {
224-
display: none;
212+
.dropdown-menu {
213+
.dropdown-menu-search {
214+
padding: var(--bb-select-search-padding);
215+
position: relative;
216+
border-block-end: var(--bs-border-width) solid var(--bb-select-search-border-color);
217+
margin-block-end: var(--bb-select-search-margin-bottom);
218+
219+
&.l {
220+
.search-icon {
221+
display: none;
222+
}
223+
224+
.searching-icon {
225+
display: block;
226+
}
225227
}
226228

227229
.searching-icon {
228-
display: block;
230+
display: none;
229231
}
230232
}
231233

232-
.searching-icon {
233-
display: none;
234+
.search-text {
235+
padding-inline-end: var(--bb-select-search-padding-right);
234236
}
235-
}
236-
237-
.dropdown-menu .search.is-fixed {
238-
position: sticky;
239-
top: calc(-1 * var(--bs-dropdown-padding-y));
240-
background-color: var(--bs-dropdown-bg);
241-
}
242237

243-
.dropdown-menu .search .search-text {
244-
padding-inline-end: var(--bb-select-search-padding-right);
245-
}
238+
.icon {
239+
position: absolute;
240+
right: var(--bb-select-search-icon-right);
241+
top: var(--bb-select-search-icon-top);
242+
color: var(--bb-select-search-icon-color);
243+
}
246244

247-
.dropdown-menu .search .icon {
248-
position: absolute;
249-
right: var(--bb-select-search-icon-right);
250-
top: var(--bb-select-search-icon-top);
251-
color: var(--bb-select-search-icon-color);
245+
&.is-fixed-search {
246+
.dropdown-menu-body {
247+
max-height: calc(var(--bb-dropdown-max-height) - 76px);
248+
overflow: auto;
249+
}
250+
}
252251
}
253252

254253
.select:not(.multi-select) .dropdown-toggle {

0 commit comments

Comments
 (0)