Browse Source

bugfix: screenRouter hijacks link clicks and routes when applicable

gh-pages
Michael Shanks 6 years ago
parent
commit
5fa8e3ca63
  1. 22
      packages/client/src/render/screenRouter.js
  2. 2
      packages/standard-components/src/Link.svelte

22
packages/client/src/render/screenRouter.js

@ -56,8 +56,30 @@ export const screenRouter = ({ screens, onScreenSelected, appRootPath }) => {
}
}
function click(e) {
const x = e.target.closest("a")
const y = x && x.getAttribute("href")
if (
e.ctrlKey ||
e.metaKey ||
e.altKey ||
e.shiftKey ||
e.button ||
e.defaultPrevented
)
return
const target = x.target || "_self"
if (!y || target !== "_self" || x.host !== location.host) return
e.preventDefault()
route(y)
}
addEventListener("popstate", route)
addEventListener("pushstate", route)
addEventListener("click", click)
return route
}

2
packages/standard-components/src/Link.svelte

@ -13,7 +13,7 @@
$: target = openInNewTab ? "_blank" : "_self"
</script>
<a href={_bb.relativeUrl(url)} bind:this={anchorElement} {target}>{text}</a>
<a href={url} bind:this={anchorElement} {target}>{text}</a>
<style>
.textDecoration {

Loading…
Cancel
Save