Skip to content

Commit 126be48

Browse files
committed
feat: 增加按钮元素
1 parent 5722382 commit 126be48

File tree

2 files changed

+60
-5
lines changed

2 files changed

+60
-5
lines changed

src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,21 @@
88
<BootstrapLabel required="@Required" for="@Id" ShowLabelTooltip="ShowLabelTooltip" Value="@DisplayText" />
99
}
1010
<div @attributes="@AdditionalAttributes" tabindex="@TabIndexString" id="@Id" class="@ClassString" data-bb-dropdown=".picker-panel">
11-
<input readonly="@ReadonlyString" class="@InputClassName" @bind="@CurrentValueAsString" placeholder="@PlaceholderString"
12-
disabled="@Disabled" data-bs-toggle="@Constants.DropdownToggleString" data-bs-placement="@PlacementString"
13-
data-bs-custom-class="@CustomClassString" @onblur="OnBlur" />
14-
@if (ShowIcon)
11+
@if(IsButton)
1512
{
16-
<i class="@DateTimePickerIconClassString"></i>
13+
<button type="button" class="@ButtonClassString" disabled="@Disabled"
14+
data-bs-toggle="@Constants.DropdownToggleString" data-bs-placement="@PlacementString"
15+
data-bs-custom-class="@CustomClassString">@PickerButtonText</button>
16+
}
17+
else
18+
{
19+
<input readonly="@ReadonlyString" class="@InputClassName" @bind="@CurrentValueAsString" placeholder="@PlaceholderString"
20+
disabled="@Disabled" data-bs-toggle="@Constants.DropdownToggleString" data-bs-placement="@PlacementString"
21+
data-bs-custom-class="@CustomClassString" @onblur="OnBlur" />
22+
@if (ShowIcon)
23+
{
24+
<i class="@DateTimePickerIconClassString"></i>
25+
}
1726
}
1827
<DatePickerBody @bind-Value="SelectedValue" @ref="_pickerBody" FirstDayOfWeek="FirstDayOfWeek"
1928
ShowClearButton="AllowNull" ShowSidebar="ShowSidebar" SidebarTemplate="SidebarTemplate"

src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ public partial class DateTimePicker<TValue>
3131
.AddClass(ValidCss)
3232
.Build();
3333

34+
private string? ButtonClassString => CssBuilder.Default("btn dropdown-toggle")
35+
.AddClass($"btn-{ButtonColor.ToDescriptionString()}", ButtonColor != Color.None)
36+
.Build();
37+
3438
/// <summary>
3539
/// 获得 组件小图标样式
3640
/// </summary>
@@ -54,6 +58,24 @@ public partial class DateTimePicker<TValue>
5458
/// </summary>
5559
private bool AllowNull { get; set; }
5660

61+
/// <summary>
62+
/// 获得/设置 是否显示为按钮样式 默认 false
63+
/// </summary>
64+
[Parameter]
65+
public bool IsButton { get; set; }
66+
67+
/// <summary>
68+
/// 获得/设置 选择按钮文本 默认 null 读取资源文件
69+
/// </summary>
70+
[Parameter]
71+
public string? PickerButtonText { get; set; }
72+
73+
/// <summary>
74+
/// 获得/设置 选择按钮颜色 默认 <see cref="Color.Primary"/>
75+
/// </summary>
76+
[Parameter]
77+
public Color ButtonColor { get; set; } = Color.Primary;
78+
5779
/// <summary>
5880
/// 获得/设置 时间格式化字符串 默认值为 null
5981
/// </summary>
@@ -292,6 +314,7 @@ protected override void OnParametersSet()
292314
DateTimeFormat ??= Localizer[nameof(DateTimeFormat)];
293315
DateFormat ??= Localizer[nameof(DateFormat)];
294316
TimeFormat ??= Localizer[nameof(TimeFormat)];
317+
PickerButtonText ??= Localizer[nameof(PickerButtonText)];
295318

296319
Icon ??= IconTheme.GetIconByKey(ComponentIcons.DateTimePickerIcon);
297320

@@ -371,6 +394,29 @@ protected override async Task OnParametersSetAsync()
371394
/// <returns></returns>
372395
protected override bool ShouldRender() => _render;
373396

397+
private bool _isButton = false;
398+
/// <summary>
399+
/// <inheritdoc/>
400+
/// </summary>
401+
/// <param name="firstRender"></param>
402+
/// <returns></returns>
403+
protected override async Task OnAfterRenderAsync(bool firstRender)
404+
{
405+
await base.OnAfterRenderAsync(firstRender);
406+
407+
if (firstRender)
408+
{
409+
// 首次渲染时同步 IsButton 参数值
410+
_isButton = IsButton;
411+
}
412+
413+
if (_isButton != IsButton)
414+
{
415+
_isButton = IsButton;
416+
await InvokeVoidAsync("reset", Id);
417+
}
418+
}
419+
374420
/// <summary>
375421
/// 格式化数值方法
376422
/// </summary>

0 commit comments

Comments
 (0)