Browse Source

Fix intermittent crash due to invalid iframe reference when hot reloading

gh-pages
Andrew Kingston 5 years ago
parent
commit
f88ef064b1
  1. 20
      packages/builder/src/components/design/AppPreview/CurrentItemPreview.svelte

20
packages/builder/src/components/design/AppPreview/CurrentItemPreview.svelte

@ -104,8 +104,10 @@
// remove all iframe event listeners on component destroy
onDestroy(() => {
iframe.contentWindow.removeEventListener("bb-event", handleBudibaseEvent)
iframe.contentWindow.removeEventListener("keydown", handleKeydownEvent)
if (iframe.contentWindow) {
iframe.contentWindow.removeEventListener("bb-event", handleBudibaseEvent)
iframe.contentWindow.removeEventListener("keydown", handleKeydownEvent)
}
})
const handleBudibaseEvent = event => {
@ -123,17 +125,21 @@
} else {
console.warning(`Client sent unknown event type: ${type}`)
}
};
}
const handleKeydownEvent = event => {
if ((event.key === "Delete" || event.key === "Backspace") &&
if (
(event.key === "Delete" || event.key === "Backspace") &&
selectedComponentId &&
['input', 'textarea'].indexOf(iframe.contentWindow.document.activeElement?.tagName.toLowerCase()) === -1) {
confirmDeleteComponent(selectedComponentId);
["input", "textarea"].indexOf(
iframe.contentWindow.document.activeElement?.tagName.toLowerCase()
) === -1
) {
confirmDeleteComponent(selectedComponentId)
}
}
const confirmDeleteComponent = (componentId) => {
const confirmDeleteComponent = componentId => {
idToDelete = componentId
confirmDeleteDialog.show()
}

Loading…
Cancel
Save