Merge pull request #18590 from NagariaHussain/fix-link-routing

fix(router-js): handle case when link is not of same host
This commit is contained in:
Shariq Ansari 2022-10-27 18:52:38 +05:30 committed by GitHub
commit ae23fd971c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -38,16 +38,17 @@ $("body").on("click", "a", function (e) {
return false;
};
const href = e.currentTarget.getAttribute("href");
const target_element = e.currentTarget;
const href = target_element.getAttribute("href");
const is_on_same_host = target_element.hostname === window.location.hostname;
// click handled, but not by href
if (
e.currentTarget.getAttribute("onclick") || // has a handler
target_element.getAttribute("onclick") || // has a handler
e.ctrlKey ||
e.metaKey || // open in a new tab
href === "#"
href === "#" // hash is home
) {
// hash is home
return;
}
@ -57,20 +58,20 @@ $("body").on("click", "a", function (e) {
if (href && href.startsWith("#")) {
// target startswith "#", this is a v1 style route, so remake it.
return override(e.currentTarget.hash);
return override(target_element.hash);
}
if (frappe.router.is_app_route(e.currentTarget.pathname)) {
if (is_on_same_host && frappe.router.is_app_route(target_element.pathname)) {
// target has "/app, this is a v2 style route.
if (e.currentTarget.search) {
if (target_element.search) {
frappe.route_options = {};
let params = new URLSearchParams(e.currentTarget.search);
let params = new URLSearchParams(target_element.search);
for (const [key, value] of params) {
frappe.route_options[key] = value;
}
}
return override(e.currentTarget.pathname + e.currentTarget.hash);
return override(target_element.pathname + target_element.hash);
}
});