diff options
Diffstat (limited to 'wp-includes/blocks/search/view.js')
-rw-r--r-- | wp-includes/blocks/search/view.js | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/wp-includes/blocks/search/view.js b/wp-includes/blocks/search/view.js new file mode 100644 index 0000000..9d18abf --- /dev/null +++ b/wp-includes/blocks/search/view.js @@ -0,0 +1,101 @@ +"use strict"; +(self["__WordPressPrivateInteractivityAPI__"] = self["__WordPressPrivateInteractivityAPI__"] || []).push([[222],{ + +/***/ 534: +/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { + +/* harmony import */ var _wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(754); +/** + * WordPress dependencies + */ + +(0,_wordpress_interactivity__WEBPACK_IMPORTED_MODULE_0__/* .store */ .h)({ + selectors: { + core: { + search: { + ariaLabel: ({ + context + }) => { + const { + ariaLabelCollapsed, + ariaLabelExpanded + } = context.core.search; + return context.core.search.isSearchInputVisible ? ariaLabelExpanded : ariaLabelCollapsed; + }, + ariaControls: ({ + context + }) => { + return context.core.search.isSearchInputVisible ? null : context.core.search.inputId; + }, + type: ({ + context + }) => { + return context.core.search.isSearchInputVisible ? 'submit' : 'button'; + }, + tabindex: ({ + context + }) => { + return context.core.search.isSearchInputVisible ? '0' : '-1'; + } + } + } + }, + actions: { + core: { + search: { + openSearchInput: ({ + context, + event, + ref + }) => { + if (!context.core.search.isSearchInputVisible) { + event.preventDefault(); + context.core.search.isSearchInputVisible = true; + ref.parentElement.querySelector('input').focus(); + } + }, + closeSearchInput: ({ + context + }) => { + context.core.search.isSearchInputVisible = false; + }, + handleSearchKeydown: store => { + const { + actions, + event, + ref + } = store; + // If Escape close the menu. + if (event?.key === 'Escape') { + actions.core.search.closeSearchInput(store); + ref.querySelector('button').focus(); + } + }, + handleSearchFocusout: store => { + const { + actions, + event, + ref + } = store; + // If focus is outside search form, and in the document, close menu + // event.target === The element losing focus + // event.relatedTarget === The element receiving focus (if any) + // When focusout is outside the document, + // `window.document.activeElement` doesn't change. + if (!ref.contains(event.relatedTarget) && event.target !== window.document.activeElement) { + actions.core.search.closeSearchInput(store); + } + } + } + } + } +}); + +/***/ }) + +}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } +/******/ var __webpack_exports__ = (__webpack_exec__(534)); +/******/ } +]);
\ No newline at end of file |