Skip to content

Commit 0a0e565

Browse files
committed
feat: 移动工具栏按钮逻辑到客户端
1 parent 6864e63 commit 0a0e565

3 files changed

Lines changed: 28 additions & 43 deletions

File tree

src/components/BootstrapBlazor.PdfReader/PdfReader.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
</div>
1616
<div class="@ViewBodyString">
1717
<div class="bb-view-group bb-view-group-page">
18-
<input type="text" class="bb-view-num" @bind="CurrentPageString" /><span class="bb-view-slash">/</span>
18+
<input type="text" class="bb-view-num" value="1" /><span class="bb-view-slash">/</span>
1919
<div class="bb-view-pagesCount"></div>
2020
</div>
2121
<div class="bb-view-group bb-view-group-scale">
2222
<div class="bb-view-divider"></div>
2323
<div class="bb-view-icon bb-page-minus" title="@Localizer["ZoomOut"]"><i class="fa-solid fa-fw fa-minus"></i></div>
24-
<input type="text" class="bb-view-scale-input" @bind="CurrentScaleString" />
24+
<input type="text" class="bb-view-scale-input" value="100%" />
2525
<div class="bb-view-icon bb-page-plus" title="@Localizer["ZoomIn"]"><i class="fa-solid fa-fw fa-plus"></i></div>
2626
</div>
2727
<div class="bb-view-group bb-view-group-rotate">

src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
using Microsoft.AspNetCore.Components;
66
using Microsoft.Extensions.Localization;
7-
using System.Globalization;
87

98
namespace BootstrapBlazor.Components;
109

@@ -148,45 +147,6 @@ public partial class PdfReader
148147
private string? _dropdownItemDefaultIcon;
149148
private bool _enableThumbnails = true;
150149

151-
private string CurrentPageString
152-
{
153-
get => CurrentPage.ToString(CultureInfo.InvariantCulture);
154-
set => SetCurrentPage(value);
155-
}
156-
157-
private void SetCurrentPage(string value)
158-
{
159-
if (uint.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var num))
160-
{
161-
CurrentPage = num;
162-
}
163-
}
164-
165-
private string CurrentScaleString
166-
{
167-
get => $"{CurrentScale ?? "100"}%";
168-
set => SetCurrentScale(value);
169-
}
170-
171-
private void SetCurrentScale(string value)
172-
{
173-
if (string.IsNullOrEmpty(value))
174-
{
175-
CurrentScale = "100";
176-
}
177-
else if (float.TryParse(value.TrimEnd("%"), out var v))
178-
{
179-
v = v switch
180-
{
181-
> 500 => 500,
182-
< 25 => 25,
183-
_ => v
184-
};
185-
186-
CurrentScale = v.ToString(CultureInfo.InvariantCulture);
187-
}
188-
}
189-
190150
/// <summary>
191151
/// <inheritdoc/>
192152
/// </summary>
@@ -263,6 +223,7 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
263223
Url,
264224
FitMode,
265225
EnableThumbnails,
226+
CurrentPage,
266227
TriggerPagesInit = OnPagesInitAsync != null,
267228
TriggerPagesLoaded = OnPagesLoadedAsync != null,
268229
TriggerPageChanged = OnPageChangedAsync != null,

src/components/BootstrapBlazor.PdfReader/PdfReader.razor.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,31 @@ const addToolbarEventHandlers = (el, pdfViewer, invoke, options) => {
261261
const thumbnailsEl = el.querySelector(".bb-view-thumbnails");
262262
thumbnailsEl.classList.toggle("show");
263263
});
264+
EventHandler.on(toolbar, "change", '.bb-view-num', e => {
265+
let pageNumber = parseInt(e.delegateTarget.value) || 1;
266+
if (pageNumber < 1) {
267+
pageNumber = 1;
268+
}
269+
if (pageNumber > pdfViewer.pagesCount) {
270+
pageNumber = pdfViewer.pagesCount;
271+
}
272+
pdfViewer.currentPageNumber = pageNumber;
273+
});
264274
EventHandler.on(toolbar, "click", '.bb-page-minus', e => updateScale(pdfViewer, e.delegateTarget, -1));
265275
EventHandler.on(toolbar, "click", '.bb-page-plus', e => updateScale(pdfViewer, e.delegateTarget, 1));
276+
EventHandler.on(toolbar, 'change', '.bb-view-scale-input', e => {
277+
let value = parseInt(e.delegateTarget.value);
278+
if (value < 25) {
279+
value = 25;
280+
}
281+
else if (value > 500) {
282+
value = 500;
283+
}
284+
pdfViewer.currentScale = value / 100;
285+
});
286+
EventHandler.on(toolbar, 'focus', '.bb-view-scale-input', e => {
287+
e.delegateTarget.select();
288+
});
266289
EventHandler.on(toolbar, 'click', '.bb-view-rotate-left', e => {
267290
rotateView(pdfViewer, -90);
268291
});
@@ -401,7 +424,6 @@ export function dispose(id) {
401424

402425
if (observer) {
403426
observer.disconnect();
404-
observer = null;
405427
}
406428

407429
if (el) {
@@ -413,6 +435,8 @@ export function dispose(id) {
413435
const toolbar = el.querySelector(".bb-view-toolbar");
414436
if (toolbar) {
415437
EventHandler.off(toolbar, "click");
438+
EventHandler.off(toolbar, "change");
439+
EventHandler.off(toolbar, "focus");
416440
}
417441

418442
const thumbnailsContainer = el.querySelector(".bb-view-thumbnails");

0 commit comments

Comments
 (0)