PluginProbe
Gutenberg / 17.5.3
Gutenberg v17.5.3
24.1.0 24.0.0 23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 All 404 releases
gutenberg / build / interactivity / search.js

search.js in Gutenberg 17.5.3, at build/interactivity/search.js

108 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import * as __WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__ from "@wordpress/interactivity";
2 /******/ // The require scope
3 /******/ var __webpack_require__ = {};
4 /******/
5 /************************************************************************/
6 /******/ /* webpack/runtime/define property getters */
7 /******/ !function() {
8 /******/ // define getter functions for harmony exports
9 /******/ __webpack_require__.d = function(exports, definition) {
10 /******/ for(var key in definition) {
11 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
12 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
13 /******/ }
14 /******/ }
15 /******/ };
16 /******/ }();
17 /******/
18 /******/ /* webpack/runtime/hasOwnProperty shorthand */
19 /******/ !function() {
20 /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
21 /******/ }();
22 /******/
23 /************************************************************************/
24 var __webpack_exports__ = {};
25
26 ;// CONCATENATED MODULE: external "@wordpress/interactivity"
27 var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }
28 var y = x => () => x
29 var interactivity_namespaceObject = x({ ["getContext"]: () => __WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.getContext, ["getElement"]: () => __WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.getElement, ["store"]: () => __WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.store });
30 ;// CONCATENATED MODULE: ./packages/block-library/src/search/view.js
31 /**
32 * WordPress dependencies
33 */
34
35 const {
36 actions
37 } = (0,interactivity_namespaceObject.store)('core/search', {
38 state: {
39 get ariaLabel() {
40 const {
41 isSearchInputVisible,
42 ariaLabelCollapsed,
43 ariaLabelExpanded
44 } = (0,interactivity_namespaceObject.getContext)();
45 return isSearchInputVisible ? ariaLabelExpanded : ariaLabelCollapsed;
46 },
47 get ariaControls() {
48 const {
49 isSearchInputVisible,
50 inputId
51 } = (0,interactivity_namespaceObject.getContext)();
52 return isSearchInputVisible ? null : inputId;
53 },
54 get type() {
55 const {
56 isSearchInputVisible
57 } = (0,interactivity_namespaceObject.getContext)();
58 return isSearchInputVisible ? 'submit' : 'button';
59 },
60 get tabindex() {
61 const {
62 isSearchInputVisible
63 } = (0,interactivity_namespaceObject.getContext)();
64 return isSearchInputVisible ? '0' : '-1';
65 }
66 },
67 actions: {
68 openSearchInput(event) {
69 const ctx = (0,interactivity_namespaceObject.getContext)();
70 const {
71 ref
72 } = (0,interactivity_namespaceObject.getElement)();
73 if (!ctx.isSearchInputVisible) {
74 event.preventDefault();
75 ctx.isSearchInputVisible = true;
76 ref.parentElement.querySelector('input').focus();
77 }
78 },
79 closeSearchInput() {
80 const ctx = (0,interactivity_namespaceObject.getContext)();
81 ctx.isSearchInputVisible = false;
82 },
83 handleSearchKeydown(event) {
84 const {
85 ref
86 } = (0,interactivity_namespaceObject.getElement)();
87 // If Escape close the menu.
88 if (event?.key === 'Escape') {
89 actions.closeSearchInput();
90 ref.querySelector('button').focus();
91 }
92 },
93 handleSearchFocusout(event) {
94 const {
95 ref
96 } = (0,interactivity_namespaceObject.getElement)();
97 // If focus is outside search form, and in the document, close menu
98 // event.target === The element losing focus
99 // event.relatedTarget === The element receiving focus (if any)
100 // When focusout is outside the document,
101 // `window.document.activeElement` doesn't change.
102 if (!ref.contains(event.relatedTarget) && event.target !== window.document.activeElement) {
103 actions.closeSearchInput();
104 }
105 }
106 }
107 });
108