Skip to content

Commit 1c0abc4

Browse files
feat(FlipClock): add ShowDay parameter (#6218)
* 修改FlipClock 增加ShowDay参数 * refactor: 代码格式化 * doc: 增加 ShowDay 示例 * refactor: 精简代码 * refactor: 增加 Day 逻辑 * feat: 增加容器 overflow 样式防止溢出 * doc: 增加 ShowDay 示例 * doc: 参数文档本地化 * test: 增加单元测试 * chore: bump version 9.7.4-beta03 Co-Authored-By: Mydashixiong <[email protected]> --------- Co-authored-by: Argo Zhang <[email protected]>
1 parent 280219a commit 1c0abc4

File tree

10 files changed

+128
-29
lines changed

10 files changed

+128
-29
lines changed

src/BootstrapBlazor.Server/Components/Samples/FlipClocks.razor

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
<FlipClock></FlipClock>
1010
</DemoBlock>
1111

12+
<DemoBlock Title="@Localizer["ShowDayText"]" Introduction="@Localizer["ShowDayIntro"]" Name="ShowDay">
13+
<FlipClock ShowDay="true"></FlipClock>
14+
</DemoBlock>
15+
1216
<DemoBlock Title="@Localizer["ShowMinuteText"]" Introduction="@Localizer["ShowMinuteIntro"]" Name="ShowMinute">
1317
<FlipClock ShowHour="false" ShowMinute="false"></FlipClock>
1418
</DemoBlock>
@@ -74,7 +78,9 @@
7478
</div>
7579
</GroupBox>
7680
</section>
77-
<FlipClock BackgroundColor="radial-gradient(ellipse at center, #ac85f1 0%, #833bf8 100%)" Height="@HeightValueString" FontSize="@FontSizeValueString" CardHeight="@CardHeightValueString" CardWidth="@CardWidthValueString" CardMargin="@CardMarginValueString" CardGroupMargin="@CardGroupMarginValueString"></FlipClock>
81+
<FlipClock BackgroundColor="radial-gradient(ellipse at center, #ac85f1 0%, #833bf8 100%)" Height="@HeightValueString"
82+
FontSize="@FontSizeValueString" CardHeight="@CardHeightValueString" CardWidth="@CardWidthValueString"
83+
CardMargin="@CardMarginValueString" CardGroupMargin="@CardGroupMarginValueString"></FlipClock>
7884
</DemoBlock>
7985

8086
<AttributeTable Items="@GetAttributes()" />

src/BootstrapBlazor.Server/Components/Samples/FlipClocks.razor.cs

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -48,132 +48,140 @@ private Task OnCompletedAsync()
4848
/// GetAttributes
4949
/// </summary>
5050
/// <returns></returns>
51-
private static AttributeItem[] GetAttributes() =>
51+
private AttributeItem[] GetAttributes() =>
5252
[
53+
new()
54+
{
55+
Name = nameof(FlipClock.ShowDay),
56+
Description = Localizer["ShowDay_Description"],
57+
Type = "boolean",
58+
ValueList = "true|false",
59+
DefaultValue = "false"
60+
},
5361
new()
5462
{
5563
Name = nameof(FlipClock.ShowHour),
56-
Description = "是否显示小时",
64+
Description = Localizer["ShowHour_Description"],
5765
Type = "boolean",
5866
ValueList = "true|false",
5967
DefaultValue = "true"
6068
},
6169
new()
6270
{
6371
Name = nameof(FlipClock.ShowMinute),
64-
Description = "是否显示分钟",
72+
Description = Localizer["ShowMinute_Description"],
6573
Type = "boolean",
6674
ValueList = "true|false",
6775
DefaultValue = "true"
6876
},
6977
new()
7078
{
7179
Name = nameof(FlipClock.ViewMode),
72-
Description = "是否显示分钟",
80+
Description = Localizer["ViewMode_Description"],
7381
Type = "FlipClockViewMode",
7482
ValueList = "DateTime|Count|CountDown",
7583
DefaultValue = "DateTime"
7684
},
7785
new()
7886
{
7987
Name = nameof(FlipClock.StartValue),
80-
Description = "开始时间",
88+
Description = Localizer["StartValue_Description"],
8189
Type = "TimeSpan",
8290
ValueList = " — ",
8391
DefaultValue = " — "
8492
},
8593
new()
8694
{
8795
Name = nameof(FlipClock.OnCompletedAsync),
88-
Description = "计时结束回调方法",
96+
Description = Localizer["OnCompletedAsync_Description"],
8997
Type = "Func<Task>",
9098
ValueList = " — ",
9199
DefaultValue = " — "
92100
},
93101
new()
94102
{
95103
Name = nameof(FlipClock.Height),
96-
Description = "组件高度",
104+
Description = Localizer["Height_Description"],
97105
Type = "string?",
98106
ValueList = " — ",
99107
DefaultValue = " — "
100108
},
101109
new()
102110
{
103111
Name = nameof(FlipClock.BackgroundColor),
104-
Description = "组件背景色",
112+
Description = Localizer["BackgroundColor_Description"],
105113
Type = "string?",
106114
ValueList = " — ",
107115
DefaultValue = " — "
108116
},
109117
new()
110118
{
111119
Name = nameof(FlipClock.FontSize),
112-
Description = "组件字体大小",
120+
Description = Localizer["FontSize_Description"],
113121
Type = "string?",
114122
ValueList = " — ",
115123
DefaultValue = " — "
116124
},
117125
new()
118126
{
119127
Name = nameof(FlipClock.CardWidth),
120-
Description = "组件卡片宽度",
128+
Description = Localizer["CardWidth_Description"],
121129
Type = "string?",
122130
ValueList = " — ",
123131
DefaultValue = " — "
124132
},
125133
new()
126134
{
127135
Name = nameof(FlipClock.CardHeight),
128-
Description = "组件卡片高度",
136+
Description = Localizer["CardHeight_Description"],
129137
Type = "string?",
130138
ValueList = " — ",
131139
DefaultValue = " — "
132140
},
133141
new()
134142
{
135143
Name = nameof(FlipClock.CardColor),
136-
Description = "组件卡片字体颜色",
144+
Description = Localizer["CardColor_Description"],
137145
Type = "string?",
138146
ValueList = " — ",
139147
DefaultValue = " — "
140148
},
141149
new()
142150
{
143151
Name = nameof(FlipClock.CardBackgroundColor),
144-
Description = "组件卡片背景颜色",
152+
Description = Localizer["CardBackgroundColor_Description"],
145153
Type = "string?",
146154
ValueList = " — ",
147155
DefaultValue = " — "
148156
},
149157
new()
150158
{
151159
Name = nameof(FlipClock.CardDividerHeight),
152-
Description = "组件卡片分割线高度",
160+
Description = Localizer["CardDividerHeight_Description"],
153161
Type = "string?",
154162
ValueList = " — ",
155163
DefaultValue = " — "
156164
},
157165
new()
158166
{
159167
Name = nameof(FlipClock.CardDividerColor),
160-
Description = "组件卡片分割线颜色",
168+
Description = Localizer["CardDividerColor_Description"],
161169
Type = "string?",
162170
ValueList = " — ",
163171
DefaultValue = " — "
164172
},
165173
new()
166174
{
167175
Name = nameof(FlipClock.CardMargin),
168-
Description = "组件卡片间隔",
176+
Description = Localizer["CardMargin_Description"],
169177
Type = "string?",
170178
ValueList = " — ",
171179
DefaultValue = " — "
172180
},
173181
new()
174182
{
175183
Name = nameof(FlipClock.CardGroupMargin),
176-
Description = "组件卡片组间隔",
184+
Description = Localizer["CardGroupMargin_Description"],
177185
Type = "string?",
178186
ValueList = " — ",
179187
DefaultValue = " — "

src/BootstrapBlazor.Server/Locales/en-US.json

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6802,6 +6802,8 @@
68026802
"FlipClocksDescription": "Used for website timing or countdown",
68036803
"BaseUsageText": "Basic usage",
68046804
"BaseUsageIntro": "Synchronize display of current time",
6805+
"ShowDayText": "Show Day",
6806+
"ShowDayIntro": "Display day information by setting <code>ShowDay=\"true\"</code>",
68056807
"ShowMinuteText": "not display hours and minutes",
68066808
"ShowMinuteIntro": "By setting <code>ShowHour=\"false\"</code> <code>ShowMinute=\"false\"</code> to not display hour and minute information",
68076809
"ShowSecondText": "not display seconds",
@@ -6818,7 +6820,24 @@
68186820
"CardHeight": "Card Height",
68196821
"CardWidth": "Card Width",
68206822
"CardMargin": "Card Margin",
6821-
"CardGroupMargin": "Card Group Margin"
6823+
"CardGroupMargin": "Card Group Margin",
6824+
"ShowDay_Description": "Show day",
6825+
"ShowHour_Description": "Show hour",
6826+
"ShowMinute_Description": "Show minute",
6827+
"ViewMode_Description": "View mode",
6828+
"StartValue_Description": "Start time",
6829+
"OnCompletedAsync_Description": "Callback when timer completed",
6830+
"Height_Description": "Height",
6831+
"BackgroundColor_Description": "Background color",
6832+
"FontSize_Description": "Font size",
6833+
"CardWidth_Description": "Card width",
6834+
"CardHeight_Description": "Card height",
6835+
"CardColor_Description": "Card font color",
6836+
"CardBackgroundColor_Description": "Card background color",
6837+
"CardDividerHeight_Description": "Card divider height",
6838+
"CardDividerColor_Description": "Card divider color",
6839+
"CardMargin_Description": "Card margin",
6840+
"CardGroupMargin_Description": "Card group margin"
68226841
},
68236842
"BootstrapBlazor.Server.Components.Samples.Icons.BootstrapIcons": {
68246843
"Title": "Bootstrap Icons",

src/BootstrapBlazor.Server/Locales/zh-CN.json

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,7 +1178,7 @@
11781178
},
11791179
"BootstrapBlazor.Server.Components.Components.InstallContent": {
11801180
"P5": "使用 BootstrapBlazor Project Template 扩展创建项目",
1181-
"InstallByTemplate":"您可以通过 <a href=\"template\">[传送门]</a> 下载安装扩展后,通过扩展创建项目, <code>强烈推荐</code>",
1181+
"InstallByTemplate": "您可以通过 <a href=\"template\">[传送门]</a> 下载安装扩展后,通过扩展创建项目, <code>强烈推荐</code>",
11821182
"P9": "使用 Visual Studio 创建项目",
11831183
"P10": "步骤一、创建项目",
11841184
"P11": "打开 Visual Studio",
@@ -6802,6 +6802,8 @@
68026802
"FlipClocksDescription": "用于网站计时,或者倒计时使用",
68036803
"BaseUsageText": "基本功能",
68046804
"BaseUsageIntro": "同步显示当前时间",
6805+
"ShowDayText": "显示日",
6806+
"ShowDayIntro": "通过设置 <code>ShowDay=\"true\"</code> 显示日信息",
68056807
"ShowMinuteText": "不显示时、分",
68066808
"ShowMinuteIntro": "通过设置 <code>ShowHour=\"false\"</code> <code>ShowMinute=\"false\"</code> 不显示小时、分钟信息",
68076809
"ShowSecondText": "不显示秒",
@@ -6818,7 +6820,24 @@
68186820
"CardHeight": "卡片高度",
68196821
"CardWidth": "卡片宽度",
68206822
"CardMargin": "卡片边距",
6821-
"CardGroupMargin": "卡片组边距"
6823+
"CardGroupMargin": "卡片组边距",
6824+
"ShowDay_Description": "是否显示日",
6825+
"ShowHour_Description": "是否显示小时",
6826+
"ShowMinute_Description": "是否显示分钟",
6827+
"ViewMode_Description": "显示模式",
6828+
"StartValue_Description": "开始时间",
6829+
"OnCompletedAsync_Description": "计时结束回调方法",
6830+
"Height_Description": "高度",
6831+
"BackgroundColor_Description": "背景色",
6832+
"FontSize_Description": "字体大小",
6833+
"CardWidth_Description": "卡片宽度",
6834+
"CardHeight_Description": "卡片高度",
6835+
"CardColor_Description": "卡片字体颜色",
6836+
"CardBackgroundColor_Description": "卡片背景颜色",
6837+
"CardDividerHeight_Description": "卡片分割线高度",
6838+
"CardDividerColor_Description": "卡片分割线颜色",
6839+
"CardMargin_Description": "卡片间隔",
6840+
"CardGroupMargin_Description": "卡片组间隔"
68226841
},
68236842
"BootstrapBlazor.Server.Components.Samples.Icons.BootstrapIcons": {
68246843
"Title": "Bootstrap Icons",

src/BootstrapBlazor/BootstrapBlazor.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>9.7.4-beta02</Version>
4+
<Version>9.7.4-beta03</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/FlipClock/FlipClock.razor

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
@attribute [BootstrapModuleAutoLoader(JSObjectReference = true)]
44

55
<div @attributes="@AdditionalAttributes" class="@ClassString" style="@StyleString" id="@Id">
6+
@if (ShowDay)
7+
{
8+
<div class="bb-flip-clock-list day">
9+
@RenderItem(10)
10+
@RenderItem(10)
11+
</div>
12+
}
13+
614
@if (ShowHour)
715
{
816
<div class="bb-flip-clock-list hour">

src/BootstrapBlazor/Components/FlipClock/FlipClock.razor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ namespace BootstrapBlazor.Components;
1111
/// </summary>
1212
public partial class FlipClock
1313
{
14+
/// <summary>
15+
/// 获得/设置 是否显示 Day 默认 false
16+
/// </summary>
17+
[Parameter]
18+
public bool ShowDay { get; set; }
19+
1420
/// <summary>
1521
/// 获得/设置 是否显示 Hour 默认 true
1622
/// </summary>

src/BootstrapBlazor/Components/FlipClock/FlipClock.razor.js

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,33 +14,49 @@ export function init(id, options) {
1414
return;
1515
}
1616

17+
const listDay = el.querySelector('.bb-flip-clock-list.day');
1718
const listHour = el.querySelector('.bb-flip-clock-list.hour');
1819
const listMinute = el.querySelector('.bb-flip-clock-list.minute');
1920
const listSecond = el.querySelector('.bb-flip-clock-list.second');
2021
const countDown = options.viewMode === "CountDown";
2122

2223
let counter = 0;
2324
const getDate = () => {
25+
let totalMilliseconds = 0;
2426
let now;
27+
2528
if (options.viewMode === "Count") {
2629
counter += 1000;
27-
now = new Date(new Date().getTimezoneOffset() * 60 * 1000 - options.startValue + counter);
30+
totalMilliseconds = counter - options.startValue;
2831
}
2932
else if (countDown) {
3033
counter += 1000;
31-
now = new Date(new Date().getTimezoneOffset() * 60 * 1000 + options.startValue - counter);
34+
totalMilliseconds = options.startValue - counter;
35+
if (totalMilliseconds < 0) totalMilliseconds = 0;
3236
}
3337
else {
3438
now = new Date();
39+
return {
40+
days: now.getDate(),
41+
hours: now.getHours(),
42+
minutes: now.getMinutes(),
43+
seconds: now.getSeconds()
44+
};
3545
}
36-
return { hours: now.getHours(), minutes: now.getMinutes(), seconds: now.getSeconds() };
46+
47+
const seconds = Math.floor(totalMilliseconds / 1000) % 60;
48+
const minutes = Math.floor(totalMilliseconds / (1000 * 60)) % 60;
49+
const hours = Math.floor(totalMilliseconds / (1000 * 60 * 60)) % 24;
50+
const days = Math.floor(totalMilliseconds / (1000 * 60 * 60 * 24));
51+
return { days, hours, minutes, seconds };
3752
}
3853

54+
let lastDay;
3955
let lastHour;
4056
let lastMinute;
4157
let lastSecond;
4258
const go = () => {
43-
const { hours, minutes, seconds } = getDate();
59+
const { days, hours, minutes, seconds } = getDate();
4460

4561
if (lastSecond !== seconds) {
4662
lastSecond = seconds;
@@ -54,7 +70,11 @@ export function init(id, options) {
5470
lastHour = hours;
5571
setTime(listHour, hours, countDown);
5672
}
57-
return { hours, minutes, seconds }
73+
if (lastDay !== days) {
74+
lastDay = days;
75+
setTime(listDay, days, countDown);
76+
}
77+
return { days, hours, minutes, seconds }
5878
}
5979

6080
let start = void 0
@@ -78,7 +98,6 @@ export function init(id, options) {
7898
}
7999

80100
requestAnimationFrame(flip);
81-
82101
Data.set(id, { el, options });
83102
}
84103

src/BootstrapBlazor/Components/FlipClock/FlipClock.razor.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.bb-flip-clock {
1+
.bb-flip-clock {
22
--bb-flip-clock-height: #{$bb-flip-clock-height};
33
--bb-flip-clock-bg: #{$bb-flip-clock-bg};
44
--bb-flip-clock-font-size: #{$bb-flip-clock-font-size};
@@ -25,6 +25,7 @@
2525
position: relative;
2626
width: 100%;
2727
flex-shrink: 0;
28+
overflow: auto;
2829

2930
.bb-flip-clock-list {
3031
display: flex;

0 commit comments

Comments
 (0)