first commit
This commit is contained in:
53
wp-includes/js/dist/script-modules/block-library/query/view.js
vendored
Normal file
53
wp-includes/js/dist/script-modules/block-library/query/view.js
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
// packages/block-library/build-module/query/view.mjs
|
||||
import {
|
||||
store,
|
||||
getContext,
|
||||
getElement,
|
||||
withSyncEvent
|
||||
} from "@wordpress/interactivity";
|
||||
var isValidLink = (ref) => ref && ref instanceof window.HTMLAnchorElement && ref.href && (!ref.target || ref.target === "_self") && ref.origin === window.location.origin;
|
||||
var isValidEvent = (event) => event.button === 0 && // Left clicks only.
|
||||
!event.metaKey && // Open in new tab (Mac).
|
||||
!event.ctrlKey && // Open in new tab (Windows).
|
||||
!event.altKey && // Download.
|
||||
!event.shiftKey && !event.defaultPrevented;
|
||||
store(
|
||||
"core/query",
|
||||
{
|
||||
actions: {
|
||||
navigate: withSyncEvent(function* (event) {
|
||||
const ctx = getContext();
|
||||
const { ref } = getElement();
|
||||
const queryRef = ref.closest(
|
||||
".wp-block-query[data-wp-router-region]"
|
||||
);
|
||||
if (isValidLink(ref) && isValidEvent(event)) {
|
||||
event.preventDefault();
|
||||
const { actions } = yield import("@wordpress/interactivity-router");
|
||||
yield actions.navigate(ref.href);
|
||||
ctx.url = ref.href;
|
||||
const firstAnchor = `.wp-block-post-template a[href]`;
|
||||
queryRef.querySelector(firstAnchor)?.focus();
|
||||
}
|
||||
}),
|
||||
*prefetch() {
|
||||
const { ref } = getElement();
|
||||
if (isValidLink(ref)) {
|
||||
const { actions } = yield import("@wordpress/interactivity-router");
|
||||
yield actions.prefetch(ref.href);
|
||||
}
|
||||
}
|
||||
},
|
||||
callbacks: {
|
||||
*prefetch() {
|
||||
const { url } = getContext();
|
||||
const { ref } = getElement();
|
||||
if (url && isValidLink(ref)) {
|
||||
const { actions } = yield import("@wordpress/interactivity-router");
|
||||
yield actions.prefetch(ref.href);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{ lock: true }
|
||||
);
|
||||
Reference in New Issue
Block a user