Skip to content

Commit 18056d5

Browse files
authored
feat(JitViewer): add JitViewer component (#8024)
* chore: 调整顺序 * chore: 增加 JitViewers 映射关系 * chore: 增加 JitViewer 文件预览器菜单 * doc: 增加 JitViewer 示例文件 * doc: 更新示例 * doc: 增加 JitViewer 依赖 * doc: 更新多语言资源文件 * doc: 更新示例文档
1 parent 61cb823 commit 18056d5

16 files changed

Lines changed: 308 additions & 1 deletion

File tree

src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
<PackageReference Include="BootstrapBlazor.ImageCropper" Version="10.0.0" />
5252
<PackageReference Include="BootstrapBlazor.IP2Region" Version="10.0.2" />
5353
<PackageReference Include="BootstrapBlazor.JitsiMeet" Version="10.0.0" />
54+
<PackageReference Include="BootstrapBlazor.JitViewer" Version="10.0.0" />
5455
<PackageReference Include="BootstrapBlazor.JuHeIpLocatorProvider" Version="10.1.0" />
5556
<PackageReference Include="BootstrapBlazor.Live2DDisplay" Version="10.0.0" />
5657
<PackageReference Include="BootstrapBlazor.Markdown" Version="10.0.0" />
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
@page "/jit-viewer"
2+
3+
<h3>@Localizer["JitViewerTitle"]</h3>
4+
<h4>@Localizer["JitViewerSubTitle"]</h4>
5+
6+
<PackageTips Name="BootstrapBlazor.JitViewer" />
7+
8+
<DemoBlock Title="@Localizer["JitViewerNormalTitle"]" Introduction="@Localizer["JitViewerDescription"]"
9+
Name="Normal">
10+
<section ignore>
11+
<div class="row g-3 form-inline">
12+
<div class="col-12 col-sm-6">
13+
<Select @bind-Value="@_doc" Items="_docs"></Select>
14+
</div>
15+
</div>
16+
</section>
17+
<JitViewer File="@_doc"></JitViewer>
18+
</DemoBlock>
19+
20+
<AttributeTable Type="typeof(JitViewer)"></AttributeTable>
21+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the Apache 2.0 License
3+
// See the LICENSE file in the project root for more information.
4+
// Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone
5+
6+
namespace BootstrapBlazor.Server.Components.Samples;
7+
8+
/// <summary>
9+
/// JitViewer 组件示例
10+
/// </summary>
11+
public partial class JitViewers : ComponentBase
12+
{
13+
[Inject, NotNull]
14+
private IStringLocalizer<JitViewers>? Localizer { get; set; }
15+
16+
private readonly List<SelectedItem> _docs =
17+
[
18+
new SelectedItem("./samples/sample.docx", "sample.docx"),
19+
new SelectedItem("./samples/sample.xlsx", "sample.xlsx"),
20+
new SelectedItem("./samples/sample.pptx", "sample.pptx"),
21+
new SelectedItem("./samples/sample.pdf", "sample.pdf"),
22+
new SelectedItem("./samples/ebook.pdf", "ebook.pdf"),
23+
new SelectedItem("./samples/sample.txt", "sample.txt"),
24+
new SelectedItem("./samples/sample.csv", "sample.csv"),
25+
new SelectedItem("./samples/sample.md", "sample.md"),
26+
new SelectedItem("./samples/sample.css", "sample.css"),
27+
new SelectedItem("./samples/sample.js", "sample.js"),
28+
new SelectedItem("./samples/sample.cs", "sample.cs"),
29+
new SelectedItem("./samples/sample.png", "sample.png"),
30+
new SelectedItem("https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4", "sample.mp4"),
31+
new SelectedItem("./samples/sample.dxf", "sample.dxf"),
32+
new SelectedItem("./samples/sample.ofd", "sample.ofd")
33+
];
34+
35+
private string _doc = "./samples/sample.docx";
36+
}

src/BootstrapBlazor.Server/Extensions/MenusLocalizerExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -725,6 +725,11 @@ void AddData(DemoMenuItem item)
725725
Url = "file-viewer"
726726
},
727727
new()
728+
{
729+
Text = Localizer["JitViewer"],
730+
Url = "jit-viewer"
731+
},
732+
new()
728733
{
729734
Text = Localizer["HikVision"],
730735
Url = "hik-vision"

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@
292292
"IntersectionObserver": "IntersectionObserver",
293293
"Introduction": "Introduction",
294294
"Ip": "IpAddress",
295+
"JitViewer": "JitViewer",
295296
"JSExtension": "JSRuntime Extensions",
296297
"Labels": "Labels",
297298
"Layout": "Layout",
@@ -2811,6 +2812,12 @@
28112812
"IsDisabledIntro": "Make the component disabled by setting <code>IsDisabled</code>",
28122813
"IsDisabledTitle": "IsDisabled"
28132814
},
2815+
"BootstrapBlazor.Server.Components.Samples.JitViewers": {
2816+
"JitViewerDescription": "Supports online preview of Office documents, PDF, OFD, images, text, code, videos, and other file formats.",
2817+
"JitViewerNormalTitle": "Basic usage",
2818+
"JitViewerSubTitle": "A universal file preview component for viewing multiple file types directly on the page.",
2819+
"JitViewerTitle": "JitViewer File Previewer"
2820+
},
28142821
"BootstrapBlazor.Server.Components.Samples.JSRuntimeExtensions": {
28152822
"EvalIntro": "Dynamically run Java Script code within the current scope using the Eval function.",
28162823
"EvalTitle": "JS Eval",

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@
292292
"IntersectionObserver": "交叉观察者 IntersectionObserver",
293293
"Introduction": "简介",
294294
"Ip": "IP 地址 IpAddress",
295+
"JitViewer": "文件预览器 JitViewer",
295296
"JSExtension": "JSRuntime 扩展",
296297
"Labels": "表单标签",
297298
"Layout": "布局组件 Layout",
@@ -2811,6 +2812,12 @@
28112812
"IsDisabledIntro": "通过设置 <code>IsDisabled</code> 使组件处于不可用状态",
28122813
"IsDisabledTitle": "禁用"
28132814
},
2815+
"BootstrapBlazor.Server.Components.Samples.JitViewers": {
2816+
"JitViewerDescription": "支持在线预览 Office 文档、PDF、OFD、图片、文本、代码、视频等多种文件格式。",
2817+
"JitViewerNormalTitle": "基础用法",
2818+
"JitViewerSubTitle": "通用文件预览组件,可用于在页面中直接浏览多种类型文件。",
2819+
"JitViewerTitle": "JitViewer 文件预览器"
2820+
},
28142821
"BootstrapBlazor.Server.Components.Samples.JSRuntimeExtensions": {
28152822
"EvalIntro": "通过 <code>Eval</code> 函数,在当前作用域内动态运行 <code>JavaScript</code> 代码。",
28162823
"EvalTitle": "Eval",

src/BootstrapBlazor.Server/docs.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
"dispatch": "Dispatches",
4747
"display": "Displays",
4848
"divider": "Dividers",
49+
"dom2image": "Dom2Images",
4950
"dock-view/col": "DockViews\\DockViewCol",
5051
"dock-view/complex": "DockViews\\DockViewComplex",
5152
"dock-view/nest": "DockViews\\DockViewNest",
@@ -90,7 +91,6 @@
9091
"html-renderer": "HtmlRenderers",
9192
"html2image": "Html2Images",
9293
"html2pdf": "Html2Pdfs",
93-
"dom2image": "Dom2Images",
9494
"label": "Labels",
9595
"layout": "Layouts",
9696
"light": "Lights",
@@ -108,6 +108,7 @@
108108
"input-group": "InputGroups",
109109
"ip": "Ips",
110110
"intersection-observer": "IntersectionObservers",
111+
"jit-viewer": "JitViewers",
111112
"mask": "Masks",
112113
"markdown": "Markdowns",
113114
"marquee": "Marquees",
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
namespace BootstrapBlazor.Server.Components.Samples;
2+
3+
/// <summary>
4+
///
5+
/// </summary>
6+
public partial class JitViewers : ComponentBase
7+
{
8+
[Inject, NotNull]
9+
private IStringLocalizer<JitViewers>? Localizer { get; set; }
10+
11+
private readonly List<SelectedItem> _docs =
12+
[
13+
new SelectedItem("./samples/sample.docx", "sample.docx"),
14+
new SelectedItem("./samples/sample.xlsx", "sample.xlsx"),
15+
new SelectedItem("./samples/sample.pptx", "sample.pptx"),
16+
new SelectedItem("./samples/sample.pdf", "sample.pdf"),
17+
new SelectedItem("./samples/ebook.pdf", "ebook.pdf"),
18+
new SelectedItem("./samples/sample.txt", "sample.txt"),
19+
new SelectedItem("./samples/sample.csv", "sample.csv"),
20+
new SelectedItem("./samples/sample.md", "sample.md"),
21+
new SelectedItem("./samples/sample.css", "sample.css"),
22+
new SelectedItem("./samples/sample.js", "sample.js"),
23+
new SelectedItem("./samples/sample.cs", "sample.cs"),
24+
new SelectedItem("./samples/sample.png", "sample.png"),
25+
new SelectedItem("https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4", "sample.mp4")
26+
];
27+
28+
private string _doc = "./samples/sample.docx";
29+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
@import "./lib/jit-viewer.min.css";
2+
3+
.jv-viewer {
4+
width: 100%;
5+
height: 100%;
6+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
month,visitors,signups,conversion_rate
2+
2026-01,12840,462,3.60%
3+
2026-02,14320,518,3.62%
4+
2026-03,16790,645,3.84%
5+
2026-04,18160,712,3.92%

0 commit comments

Comments
 (0)