/
githubmirror
/
gutenberg
Обзор
Документация
Войти
/
githubmirror
/
gutenberg
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
trunk
packages/block-library/src/query/view.js
72 строки
2 KB
Marco Ciampini
ESLint: Replace strict config with bulk suppressions (#81248)
07 авг 2026, 14:34
Не верифицирован
07 авг 2026, 14:34
7f43eaf
Код
Авторство
О чём код?
import { store, getContext, getElement, withSyncEvent, } from '@wordpress/interactivity'; const isValidLink = ( ref ) => ref && ref instanceof window.HTMLAnchorElement && ref.href && ( ! ref.target || ref.target === '_self' ) && ref.origin === window.location.origin; const 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; // Focus the first anchor of the Query block. 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 } );