Skip to content

Commit 59ce9a0

Browse files
authored
feat(EyeDropper): remove EyeDropper component (#4545)
* refactor: 移除 EyeDropper 组件 * refactor: 重构服务 * refactor: 更新脚本 * refactor: 更新单元测试 * chore: 移除根元素中组件 * doc: 更新取色服务文档位置 * doc: 更新文档
1 parent 02a8024 commit 59ce9a0

File tree

9 files changed

+21
-88
lines changed

9 files changed

+21
-88
lines changed

src/BootstrapBlazor.Server/Extensions/MenusLocalizerExtensions.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -596,11 +596,6 @@ void AddData(DemoMenuItem item)
596596
Text=Localizer["Empty"],
597597
Url = "empty"
598598
},
599-
new ()
600-
{
601-
Text=Localizer["EyeDropper"],
602-
Url = "eye-dropper"
603-
},
604599
new()
605600
{
606601
Text = Localizer["FileIcon"],
@@ -1431,6 +1426,11 @@ void AddServices(DemoMenuItem item)
14311426
Text = Localizer["FullScreen"],
14321427
Url = "fullscreen"
14331428
},
1429+
new ()
1430+
{
1431+
Text=Localizer["EyeDropper"],
1432+
Url = "eye-dropper"
1433+
},
14341434
new()
14351435
{
14361436
Text = Localizer["Festival"],

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4589,7 +4589,7 @@
45894589
"DateTimeRange": "DateTimeRange",
45904590
"Editor": "Editor",
45914591
"EditorForm": "EditorForm",
4592-
"EyeDropper": "EyeDropper",
4592+
"EyeDropper": "EyeDropper Service",
45934593
"Input": "Input",
45944594
"InputNumber": "InputNumber",
45954595
"InputGroup": "InputGroup",
@@ -6034,7 +6034,7 @@
60346034
"Numerals": "numeral glyph substitution"
60356035
},
60366036
"BootstrapBlazor.Server.Components.Samples.EyeDroppers": {
6037-
"EyeDropperTitle": "EyeDropper",
6037+
"EyeDropperTitle": "EyeDropper Service",
60386038
"EyeDropperDescription": "The <code>EyeDropperService</code> provides a mechanism for creating an eyedropper tool. Using this tool, users can sample colors from their screens, including outside of the browser window.",
60396039
"EyeDropperNormalTitle": "Basic usage",
60406040
"EyeDropperNormalIntro": "Using the <code>EyeDropperService</code> application can start the eyedropper mode. Once started, the cursor changes to indicate to the user that the mode is active. The user can then either select a color from anywhere on the screen, or dismiss the eyedropper mode by pressing <kbd>Escape</kbd>",

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4589,7 +4589,7 @@
45894589
"DateTimeRange": "时间范围框 DateTimeRange",
45904590
"Editor": "富文本框 Editor",
45914591
"EditorForm": "表单编辑框 EditorForm",
4592-
"EyeDropper": "取色服务 EyeDropper",
4592+
"EyeDropper": "取色服务 EyeDropperService",
45934593
"Input": "输入框 Input",
45944594
"InputNumber": "数字框 InputNumber",
45954595
"InputGroup": "输入组 InputGroup",
@@ -6034,7 +6034,7 @@
60346034
"Numerals": "数字符号集合"
60356035
},
60366036
"BootstrapBlazor.Server.Components.Samples.EyeDroppers": {
6037-
"EyeDropperTitle": "屏幕取色 EyeDropper",
6037+
"EyeDropperTitle": "屏幕取色 EyeDropperService",
60386038
"EyeDropperDescription": "用户可以从屏幕上采样颜色,包括在浏览器窗口之外",
60396039
"EyeDropperNormalTitle": "基础用法",
60406040
"EyeDropperNormalIntro": "使用 <code>EyeDropperService</code>,可以启动吸管模式。启动后,光标会发生变化以向用户指示该模式处于活动状态。然后用户可以从屏幕上的任何位置选择一种颜色,通过按 <kbd>Escape</kbd> 关闭吸管模式",

src/BootstrapBlazor/Components/BaseComponents/BootstrapBlazorRoot.razor

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
@RenderBody()
55

6-
<EyeDropper></EyeDropper>
76
<Title></Title>
87

98
<Message @ref="MessageContainer"></Message>
@@ -14,7 +13,7 @@
1413
<ConnectionHub></ConnectionHub>
1514
<Mask></Mask>
1615

17-
@foreach(var com in Generators)
16+
@foreach (var com in Generators)
1817
{
1918
@com.Generator()
2019
}

src/BootstrapBlazor/Components/EyeDropper/EyeDropper.cs

Lines changed: 0 additions & 50 deletions
This file was deleted.

src/BootstrapBlazor/Components/EyeDropper/EyeDropperOption.cs

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/BootstrapBlazor/Components/EyeDropper/EyeDropperService.cs renamed to src/BootstrapBlazor/Services/EyeDropperService.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,18 @@ namespace BootstrapBlazor.Components;
88
/// <summary>
99
/// EyeDropper 服务用于屏幕吸色
1010
/// </summary>
11-
public class EyeDropperService : BootstrapServiceBase<EyeDropperOption>
11+
public class EyeDropperService(IJSRuntime jSRuntime)
1212
{
13+
[NotNull]
14+
private JSModule? _module = null;
15+
1316
/// <summary>
1417
/// 全屏方法,已经全屏时再次调用后退出全屏
1518
/// </summary>
1619
/// <returns></returns>
17-
public async Task<string?> PickAsync()
20+
public async Task<string?> PickAsync(CancellationToken token = default)
1821
{
19-
var op = new EyeDropperOption();
20-
await Invoke(op);
21-
return op.Value;
22+
_module ??= await jSRuntime.LoadModule("./_content/BootstrapBlazor/modules/eye-dropper.js");
23+
return await _module.InvokeAsync<string?>("open", token);
2224
}
2325
}

src/BootstrapBlazor/wwwroot/modules/eye-dropper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export async function open() {
22
if (!window.EyeDropper) {
33
console.error("Your browser does not support the EyeDropper API")
4-
return
4+
return null;
55
}
66

77
const eyeDropper = new EyeDropper();

test/UnitTest/Services/EyeDropperTest.cs renamed to test/UnitTest/Services/EyeDropperServiceTest.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55

66
namespace UnitTest.Services;
77

8-
public class EyeDropperTest : BootstrapBlazorTestBase
8+
public class EyeDropperServiceTest : BootstrapBlazorTestBase
99
{
1010
[Fact]
1111
public async Task EyeDropperService_Ok()
1212
{
13-
Context.JSInterop.Setup<string?>("open").SetResult("Ok");
13+
Context.JSInterop.Setup<string?>("open").SetResult("#FFFFFF");
1414
var service = Context.Services.GetRequiredService<EyeDropperService>();
15-
var cut = Context.RenderComponent<EyeDropper>();
1615
var expected = await service.PickAsync();
17-
Assert.Equal("Ok", expected);
16+
Assert.Equal("#FFFFFF", expected);
1817
}
1918
}

0 commit comments

Comments
 (0)