Skip to content

Commit bf7df03

Browse files
committed
refactor: 代码兼容演示模式
1 parent b63be39 commit bf7df03

5 files changed

Lines changed: 62 additions & 62 deletions

File tree

src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.csproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@
1717
</ItemGroup>
1818

1919
<ItemGroup>
20-
<PackageReference Include="BootstrapBlazor" Version="$(BBVersion)" />
20+
<!--<PackageReference Include="BootstrapBlazor" Version="$(BBVersion)" />-->
21+
</ItemGroup>
22+
23+
<ItemGroup>
24+
<ProjectReference Include="..\..\..\..\BootstrapBlazor\src\BootstrapBlazor\BootstrapBlazor.csproj" />
2125
</ItemGroup>
2226

2327
<ItemGroup>

src/components/BootstrapBlazor.PdfReader/PdfReader.razor

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,25 @@
5050
<button type="button" class="btn dropdown-toggle" data-bs-toggle="dropdown">
5151
<i class="@MoreButtonIcon"></i>
5252
</button>
53-
<div class="dropdown-menu shadow dropdown-menu-end">
53+
<div class="dropdown-menu shadow dropdown-menu-end bb-view-dropdown-menu">
5454
@if (ShowTwoPagesOneView)
5555
{
56-
<div class="dropdown-item dropdown-item-pages" @onclick="OnToggleTwoPagesOneView"><i class="@_twoPagesOneViewIcon"></i><span>Two pages on view</span></div>
56+
<div class="dropdown-item dropdown-item-pages">
57+
<i class="@_dropdownItemCheckIcon"></i>
58+
<i class="@_dropdownItemDefaultIcon"></i>
59+
<span>Two pages on view</span>
60+
</div>
5761
<Divider></Divider>
5862
}
59-
<div class="dropdown-item"><i class="fa-solid fa-fw"></i><span>Document properties</span></div>
63+
<div class="dropdown-item dropdown-item-presentation">
64+
<i class="@_dropdownItemCheckIcon"></i>
65+
<i class="@_dropdownItemDefaultIcon"></i>
66+
<span>Presentation Mode</span>
67+
</div>
68+
<div class="dropdown-item dropdown-item-doc">
69+
<i class="@_dropdownItemDefaultIcon"></i>
70+
<span>Document properties</span>
71+
</div>
6072
</div>
6173
</div>
6274
</div>

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

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,8 @@ public partial class PdfReader
139139
private uint _currentPage;
140140
private string? _url;
141141
private string? _currentScale;
142-
private bool _enableTwoPagesOneView;
143-
private bool _showTwoPagesOneViewButton;
144-
private string? _twoPagesOneViewIcon;
142+
private string? _dropdownItemCheckIcon;
143+
private string? _dropdownItemDefaultIcon;
145144

146145
private string CurrentPageString
147146
{
@@ -182,14 +181,6 @@ private void SetCurrentScale(string value)
182181
}
183182
}
184183

185-
private void OnToggleTwoPagesOneView()
186-
{
187-
_enableTwoPagesOneView = !_enableTwoPagesOneView;
188-
EnableTwoPagesOneView = _enableTwoPagesOneView;
189-
190-
_twoPagesOneViewIcon = _enableTwoPagesOneView ? "fa-solid fa-fw fa-check" : "fa-solid fa-fw";
191-
}
192-
193184
/// <summary>
194185
/// <inheritdoc/>
195186
/// </summary>
@@ -198,7 +189,8 @@ protected override void OnParametersSet()
198189
base.OnParametersSet();
199190

200191
MoreButtonIcon ??= "fa-solid fa-fw fa-ellipsis-vertical";
201-
_twoPagesOneViewIcon ??= "fa-solid fa-fw";
192+
_dropdownItemCheckIcon ??= "dropdown-item-check fa-solid fa-fw fa-check";
193+
_dropdownItemDefaultIcon ??= "dropdown-item-icon fa-solid fa-fw";
202194

203195
if (CurrentPage == 0)
204196
{
@@ -222,8 +214,6 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
222214
_currentPage = CurrentPage;
223215
_url = Url;
224216
_currentScale = CurrentScale;
225-
_enableTwoPagesOneView = EnableTwoPagesOneView;
226-
_showTwoPagesOneViewButton = ShowTwoPagesOneView;
227217
}
228218

229219
if (_url != Url)
@@ -247,16 +237,6 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
247237
_currentScale = CurrentScale;
248238
await InvokeVoidAsync("scale", Id, _currentScale);
249239
}
250-
if (_enableTwoPagesOneView != EnableTwoPagesOneView)
251-
{
252-
_enableTwoPagesOneView = EnableTwoPagesOneView;
253-
await InvokeVoidAsync("setPages", Id, _enableTwoPagesOneView);
254-
}
255-
if (_showTwoPagesOneViewButton != ShowTwoPagesOneView)
256-
{
257-
_showTwoPagesOneViewButton = ShowTwoPagesOneView;
258-
await InvokeVoidAsync("setPages", Id, _enableTwoPagesOneView);
259-
}
260240
}
261241

262242
/// <summary>

src/components/BootstrapBlazor.PdfReader/PdfReader.razor.css

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@
2626
content: none;
2727
}
2828

29+
.bb-view-toolbar .dropdown-menu {
30+
--bs-dropdown-link-active-bg: transparent;
31+
--bs-dropdown-link-active-color: var(--bs-dropdown-color);
32+
}
33+
2934
.bb-view-title {
3035
display: flex;
3136
align-items: center;
@@ -134,6 +139,18 @@
134139
padding: 7px;
135140
}
136141

142+
.bb-view-controls .dropdown-item .dropdown-item-check {
143+
display: none;
144+
}
145+
146+
.bb-view-controls .dropdown-item.active .dropdown-item-check {
147+
display: inline-block;
148+
}
149+
150+
.bb-view-controls .dropdown-item.active .dropdown-item-icon {
151+
display: none;
152+
}
153+
137154
.bb-view-main {
138155
display: flex;
139156
width: 100%;

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

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -81,34 +81,6 @@ export function scale(id, scale) {
8181
}
8282
}
8383

84-
export function setPages(id, enableTwoPagesOneView) {
85-
const { el, pdfViewer } = Data.get(id);
86-
if (pdfViewer) {
87-
if (enableTwoPagesOneView) {
88-
pdfViewer.spreadMode = 1;
89-
}
90-
else {
91-
pdfViewer.spreadMode = 0;
92-
}
93-
}
94-
95-
resetTwoPagesOneView(el, pdfViewer);
96-
}
97-
98-
const resetTwoPagesOneView = (el, pdfViewer) => {
99-
const twoPagesOneView = el.querySelector(".dropdown-item-pages");
100-
if (twoPagesOneView) {
101-
EventHandler.on(twoPagesOneView, "click", e => {
102-
if (pdfViewer.spreadMode === 0) {
103-
pdfViewer.spreadMode = 1;
104-
}
105-
else {
106-
pdfViewer.spreadMode = 0;
107-
}
108-
});
109-
}
110-
}
111-
11284
const addEventListener = (el, pdfViewer, eventBus, invoke, options) => {
11385
eventBus.on("pagesinit", async () => {
11486
if (options.fitMode) {
@@ -141,10 +113,30 @@ const addEventListener = (el, pdfViewer, eventBus, invoke, options) => {
141113
}
142114

143115
const controls = el.querySelector(".bb-view-controls");
144-
EventHandler.on(controls, "click", ".bb-view-print", e => {
116+
EventHandler.on(controls, "click", ".bb-view-print", async e => {
145117
printPdf(options.url);
146118
await invoke.invokeMethodAsync("Printing");
147119
});
120+
EventHandler.on(controls, "click", ".dropdown-item-pages", async e => {
121+
e.delegateTarget.classList.toggle("active");
122+
123+
if (pdfViewer.spreadMode !== 1) {
124+
pdfViewer.spreadMode = 1;
125+
}
126+
else {
127+
pdfViewer.spreadMode = 0;
128+
}
129+
});
130+
EventHandler.on(controls, "click", ".dropdown-item-presentation", async e => {
131+
e.delegateTarget.classList.toggle("active");
132+
133+
//if (pdfViewer.isInPresentationMode) {
134+
// document.exitFullscreen();
135+
//}
136+
//else {
137+
// el.requestFullscreen();
138+
//}
139+
});
148140
})
149141

150142
eventBus.on("pagechanging", async evt => {
@@ -179,9 +171,6 @@ const addEventListener = (el, pdfViewer, eventBus, invoke, options) => {
179171
const scale = evt.scale * 100;
180172
scaleEl.value = `${Math.round(scale, 0)}%`;
181173

182-
const minus = el.querySelector(".bb-page-minus");
183-
const plus = el.querySelector(".bb-page-plus");
184-
185174
if (scale === 25) {
186175
minus.classList.add("disabled");
187176
}
@@ -197,8 +186,6 @@ const addEventListener = (el, pdfViewer, eventBus, invoke, options) => {
197186
EventHandler.on(minus, "click", e => updateScale(pdfViewer, e.target, -1));
198187
EventHandler.on(plus, "click", e => updateScale(pdfViewer, e.target, 1));
199188

200-
resetTwoPagesOneView(el, pdfViewer);
201-
202189
const thumbnailsToggle = el.querySelector(".bb-view-bar");
203190
if (thumbnailsToggle) {
204191
EventHandler.on(thumbnailsToggle, "click", e => {

0 commit comments

Comments
 (0)