Skip to content

Commit cb616bd

Browse files
authored
feat(PdfReader): add thumbnails rotate function (#725)
* refactor: 增加旋转样式 * feat: 增加 rotationchanging 事件 * chore: bump version 10.0.1-beta06
1 parent a2e8c02 commit cb616bd

3 files changed

Lines changed: 43 additions & 30 deletions

File tree

src/components/BootstrapBlazor.PdfReader/BootstrapBlazor.PdfReader.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>10.0.1-beta05</Version>
4+
<Version>10.0.1-beta06</Version>
55
</PropertyGroup>
66

77
<PropertyGroup>

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
}
113113

114114
.bb-view-thumbnails {
115+
--thumb-rotate: 0;
115116
flex-basis: 0;
116117
overflow: auto;
117118
background-color: #28292a;
@@ -141,6 +142,7 @@
141142
padding: 1px;
142143
cursor: pointer;
143144
border: 2px solid #28292a;
145+
transform: rotate(var(--thumb-rotate));
144146
}
145147

146148
.bb-view-content {

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

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -127,35 +127,7 @@ const addEventListener = (el, pdfViewer, eventBus, invoke, options) => {
127127

128128
eventBus.on("pagesloaded", async e => {
129129
if (options.enableThumbnails) {
130-
const thumbnailsContainer = el.querySelector(".bb-view-thumbnails");
131-
pdfViewer.getPagesOverview().map(async (p, i) => {
132-
const item = document.createElement("div");
133-
item.classList.add("bb-view-thumbnail-item");
134-
if (pdfViewer.currentPageNumber === i + 1) {
135-
item.classList.add("active");
136-
}
137-
item.setAttribute("data-bb-page", `${i + 1}`);
138-
thumbnailsContainer.appendChild(item);
139-
140-
const page = await pdfViewer.pdfDocument.getPage(i + 1);
141-
const canvas = await makeThumb(page);
142-
const img = document.createElement("img");
143-
img.src = canvas.toDataURL();
144-
item.appendChild(img);
145-
});
146-
147-
EventHandler.on(thumbnailsContainer, "click", ".bb-view-thumbnail-item", e => {
148-
const active = thumbnailsContainer.querySelector('.active');
149-
if (active) {
150-
active.classList.remove('active');
151-
}
152-
153-
const item = e.delegateTarget;
154-
item.classList.add("active");
155-
156-
const index = parseInt(item.getAttribute("data-bb-page")) || 1;
157-
pdfViewer.currentPageNumber = index;
158-
})
130+
resetThumbnailsView(el, pdfViewer);
159131
}
160132

161133
if (options.triggerPagesLoaded === true) {
@@ -232,6 +204,45 @@ const addEventListener = (el, pdfViewer, eventBus, invoke, options) => {
232204
thumbnailsEl.classList.toggle("show");
233205
});
234206
}
207+
208+
eventBus.on("rotationchanging", evt => {
209+
const thumbnailsContainer = el.querySelector(".bb-view-thumbnails");
210+
if (thumbnailsContainer) {
211+
thumbnailsContainer.style.setProperty('--thumb-rotate', `${evt.pagesRotation}deg`);
212+
}
213+
})
214+
}
215+
216+
const resetThumbnailsView = (el, pdfViewer) => {
217+
const thumbnailsContainer = el.querySelector(".bb-view-thumbnails");
218+
pdfViewer.getPagesOverview().map(async (p, i) => {
219+
const item = document.createElement("div");
220+
item.classList.add("bb-view-thumbnail-item");
221+
if (pdfViewer.currentPageNumber === i + 1) {
222+
item.classList.add("active");
223+
}
224+
item.setAttribute("data-bb-page", `${i + 1}`);
225+
thumbnailsContainer.appendChild(item);
226+
227+
const page = await pdfViewer.pdfDocument.getPage(i + 1);
228+
const canvas = await makeThumb(page);
229+
const img = document.createElement("img");
230+
img.src = canvas.toDataURL();
231+
item.appendChild(img);
232+
});
233+
234+
EventHandler.on(thumbnailsContainer, "click", ".bb-view-thumbnail-item", e => {
235+
const active = thumbnailsContainer.querySelector('.active');
236+
if (active) {
237+
active.classList.remove('active');
238+
}
239+
240+
const item = e.delegateTarget;
241+
item.classList.add("active");
242+
243+
const index = parseInt(item.getAttribute("data-bb-page")) || 1;
244+
pdfViewer.currentPageNumber = index;
245+
});
235246
}
236247

237248
const updateScale = (pdfViewer, button, rate) => {

0 commit comments

Comments
 (0)