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", diff --git a/src/components/pdf-viewer/pdf-viewer.js b/src/components/pdf-viewer/pdf-viewer.js index 7171e77..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 @@ -260,6 +268,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 +284,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()