From 6f5d8ae54c67d3863fe9cf4ae347a239e53c21fa Mon Sep 17 00:00:00 2001 From: Josh McLeod Date: Mon, 2 Mar 2026 10:31:31 -0500 Subject: [PATCH 1/3] Wait for images to load in print --- src/components/pdf-viewer/pdf-viewer.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/pdf-viewer/pdf-viewer.js b/src/components/pdf-viewer/pdf-viewer.js index 7171e77..ac11f3a 100644 --- a/src/components/pdf-viewer/pdf-viewer.js +++ b/src/components/pdf-viewer/pdf-viewer.js @@ -260,6 +260,7 @@ export default class PDFViewer extends RoleModelElement { ` iframeDoc.head.appendChild(style) + const imageLoadPromises = [] for (let pageNum = 1; pageNum <= this.totalPages; pageNum++) { const page = await this.pdfDoc.getPage(pageNum) const viewport = page.getViewport({ scale: 1.5 }) @@ -275,12 +276,19 @@ export default class PDFViewer extends RoleModelElement { }).promise const img = document.createElement('img') + const loadPromise = new Promise((resolve) => { + img.onload = resolve + img.onerror = resolve + }) img.src = canvas.toDataURL() img.style.width = '100%' img.style.pageBreakAfter = pageNum < this.totalPages ? 'always' : 'auto' iframeDoc.body.appendChild(img) + imageLoadPromises.push(loadPromise) } + await Promise.all(imageLoadPromises) + iframe.contentWindow.focus() iframe.contentWindow.print() From 0ad6aefaf99f19763c203147c6ea0b46a91ef703 Mon Sep 17 00:00:00 2001 From: Josh McLeod Date: Mon, 2 Mar 2026 10:35:47 -0500 Subject: [PATCH 2/3] Use the custom close action for escape --- src/components/pdf-viewer/pdf-viewer.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/pdf-viewer/pdf-viewer.js b/src/components/pdf-viewer/pdf-viewer.js index ac11f3a..c22a7bd 100644 --- a/src/components/pdf-viewer/pdf-viewer.js +++ b/src/components/pdf-viewer/pdf-viewer.js @@ -116,6 +116,14 @@ export default class PDFViewer extends RoleModelElement { if (this.searchOpen) { this.searchOpen = false return true + } + + const closeButtonSlot = this.shadowRoot?.querySelector('slot[name="close-button"]') + const slottedCloseButton = closeButtonSlot?.assignedElements()?.[0] + + if (slottedCloseButton) { + slottedCloseButton.click() + return true } else if (this.escapeClosesViewer) { this.open = false return true From 6a2a6f3f02e3547d6f70351f4e29351b6da05627 Mon Sep 17 00:00:00 2001 From: Josh McLeod Date: Mon, 2 Mar 2026 10:36:26 -0500 Subject: [PATCH 3/3] Increment version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 404adea..34d5ed2 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@rolemodel/spider", "description": "Shared high level web components for RoleModel Software and beyond", "packageManager": "yarn@4.12.0", - "version": "0.0.6", + "version": "0.0.7", "author": "RoleModel Software", "license": "MIT", "type": "module",