@wordpress/block-library 8.14.0 → 8.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/avatar/edit.js +1 -0
- package/build/avatar/edit.js.map +1 -1
- package/build/block/index.js +2 -1
- package/build/block/index.js.map +1 -1
- package/build/buttons/edit.js +2 -2
- package/build/buttons/edit.js.map +1 -1
- package/build/column/edit.native.js +1 -4
- package/build/column/edit.native.js.map +1 -1
- package/build/columns/edit.js +1 -0
- package/build/columns/edit.js.map +1 -1
- package/build/comment-author-avatar/edit.js +1 -0
- package/build/comment-author-avatar/edit.js.map +1 -1
- package/build/cover/deprecated.js +4 -2
- package/build/cover/deprecated.js.map +1 -1
- package/build/embed/embed-placeholder.native.js +37 -13
- package/build/embed/embed-placeholder.native.js.map +1 -1
- package/build/file/index.js +1 -2
- package/build/file/index.js.map +1 -1
- package/build/file/inspector.js +1 -0
- package/build/file/inspector.js.map +1 -1
- package/build/file/view-interactivity.js +23 -0
- package/build/file/view-interactivity.js.map +1 -0
- package/build/file/view.js +1 -15
- package/build/file/view.js.map +1 -1
- package/build/footnotes/edit.js +20 -1
- package/build/footnotes/edit.js.map +1 -1
- package/build/footnotes/format.js +19 -16
- package/build/footnotes/format.js.map +1 -1
- package/build/footnotes/index.js +0 -1
- package/build/footnotes/index.js.map +1 -1
- package/build/gallery/edit.js +1 -1
- package/build/gallery/edit.js.map +1 -1
- package/build/latest-comments/edit.js +1 -0
- package/build/latest-comments/edit.js.map +1 -1
- package/build/latest-posts/edit.js +2 -0
- package/build/latest-posts/edit.js.map +1 -1
- package/build/list/edit.js +4 -4
- package/build/list/edit.js.map +1 -1
- package/build/media-text/media-container.native.js +2 -1
- package/build/media-text/media-container.native.js.map +1 -1
- package/build/missing/edit.native.js +7 -5
- package/build/missing/edit.native.js.map +1 -1
- package/build/navigation/constants.js +10 -4
- package/build/navigation/constants.js.map +1 -1
- package/build/navigation/edit/index.js +16 -2
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/inner-blocks.js +2 -2
- package/build/navigation/edit/inner-blocks.js.map +1 -1
- package/build/navigation/edit/unsaved-inner-blocks.js +2 -2
- package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -15
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
- package/build/navigation/index.js +2 -3
- package/build/navigation/index.js.map +1 -1
- package/build/navigation/use-navigation-menu.js +33 -45
- package/build/navigation/use-navigation-menu.js.map +1 -1
- package/build/navigation/view-interactivity.js +185 -0
- package/build/navigation/view-interactivity.js.map +1 -0
- package/build/navigation/view-modal.js +64 -0
- package/build/navigation/view-modal.js.map +1 -0
- package/build/navigation/view.js +50 -174
- package/build/navigation/view.js.map +1 -1
- package/build/navigation-link/edit.js +12 -7
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-submenu/edit.js +2 -2
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/query-pagination/edit.js +1 -1
- package/build/query-pagination/edit.js.map +1 -1
- package/build/query-title/edit.js +43 -1
- package/build/query-title/edit.js.map +1 -1
- package/build/quote/transforms.js +8 -0
- package/build/quote/transforms.js.map +1 -1
- package/build/rss/edit.js +3 -0
- package/build/rss/edit.js.map +1 -1
- package/build/search/edit.js +4 -3
- package/build/search/edit.js.map +1 -1
- package/build/search/index.js +1 -0
- package/build/search/index.js.map +1 -1
- package/build/site-logo/edit.js +1 -0
- package/build/site-logo/edit.js.map +1 -1
- package/build/tag-cloud/edit.js +1 -0
- package/build/tag-cloud/edit.js.map +1 -1
- package/build/template-part/edit/index.js +1 -1
- package/build/template-part/edit/index.js.map +1 -1
- package/build/text-columns/edit.js +1 -0
- package/build/text-columns/edit.js.map +1 -1
- package/build-module/avatar/edit.js +1 -0
- package/build-module/avatar/edit.js.map +1 -1
- package/build-module/block/index.js +2 -1
- package/build-module/block/index.js.map +1 -1
- package/build-module/buttons/edit.js +2 -2
- package/build-module/buttons/edit.js.map +1 -1
- package/build-module/column/edit.native.js +1 -4
- package/build-module/column/edit.native.js.map +1 -1
- package/build-module/columns/edit.js +1 -0
- package/build-module/columns/edit.js.map +1 -1
- package/build-module/comment-author-avatar/edit.js +1 -0
- package/build-module/comment-author-avatar/edit.js.map +1 -1
- package/build-module/cover/deprecated.js +4 -2
- package/build-module/cover/deprecated.js.map +1 -1
- package/build-module/embed/embed-placeholder.native.js +37 -14
- package/build-module/embed/embed-placeholder.native.js.map +1 -1
- package/build-module/file/index.js +1 -2
- package/build-module/file/index.js.map +1 -1
- package/build-module/file/inspector.js +1 -0
- package/build-module/file/inspector.js.map +1 -1
- package/build-module/file/view-interactivity.js +19 -0
- package/build-module/file/view-interactivity.js.map +1 -0
- package/build-module/file/view.js +2 -15
- package/build-module/file/view.js.map +1 -1
- package/build-module/footnotes/edit.js +18 -2
- package/build-module/footnotes/edit.js.map +1 -1
- package/build-module/footnotes/format.js +19 -16
- package/build-module/footnotes/format.js.map +1 -1
- package/build-module/footnotes/index.js +0 -1
- package/build-module/footnotes/index.js.map +1 -1
- package/build-module/gallery/edit.js +1 -1
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/latest-comments/edit.js +1 -0
- package/build-module/latest-comments/edit.js.map +1 -1
- package/build-module/latest-posts/edit.js +2 -0
- package/build-module/latest-posts/edit.js.map +1 -1
- package/build-module/list/edit.js +4 -4
- package/build-module/list/edit.js.map +1 -1
- package/build-module/media-text/media-container.native.js +2 -1
- package/build-module/media-text/media-container.native.js.map +1 -1
- package/build-module/missing/edit.native.js +8 -6
- package/build-module/missing/edit.native.js.map +1 -1
- package/build-module/navigation/constants.js +8 -3
- package/build-module/navigation/constants.js.map +1 -1
- package/build-module/navigation/edit/index.js +17 -3
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/inner-blocks.js +2 -2
- package/build-module/navigation/edit/inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js +2 -2
- package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -14
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
- package/build-module/navigation/index.js +2 -3
- package/build-module/navigation/index.js.map +1 -1
- package/build-module/navigation/use-navigation-menu.js +35 -47
- package/build-module/navigation/use-navigation-menu.js.map +1 -1
- package/build-module/navigation/view-interactivity.js +182 -0
- package/build-module/navigation/view-interactivity.js.map +1 -0
- package/build-module/navigation/view-modal.js +58 -0
- package/build-module/navigation/view-modal.js.map +1 -0
- package/build-module/navigation/view.js +50 -173
- package/build-module/navigation/view.js.map +1 -1
- package/build-module/navigation-link/edit.js +12 -7
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +2 -2
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/query-pagination/edit.js +1 -1
- package/build-module/query-pagination/edit.js.map +1 -1
- package/build-module/query-title/edit.js +44 -3
- package/build-module/query-title/edit.js.map +1 -1
- package/build-module/quote/transforms.js +8 -0
- package/build-module/quote/transforms.js.map +1 -1
- package/build-module/rss/edit.js +3 -0
- package/build-module/rss/edit.js.map +1 -1
- package/build-module/search/edit.js +4 -3
- package/build-module/search/edit.js.map +1 -1
- package/build-module/search/index.js +1 -0
- package/build-module/search/index.js.map +1 -1
- package/build-module/site-logo/edit.js +1 -0
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/tag-cloud/edit.js +1 -0
- package/build-module/tag-cloud/edit.js.map +1 -1
- package/build-module/template-part/edit/index.js +1 -1
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/text-columns/edit.js +1 -0
- package/build-module/text-columns/edit.js.map +1 -1
- package/build-style/details/style-rtl.css +4 -2
- package/build-style/details/style.css +4 -2
- package/build-style/footnotes/style-rtl.css +4 -3
- package/build-style/footnotes/style.css +4 -3
- package/build-style/navigation/style-rtl.css +14 -2
- package/build-style/navigation/style.css +14 -2
- package/build-style/query-pagination/style-rtl.css +4 -2
- package/build-style/query-pagination/style.css +4 -2
- package/build-style/style-rtl.css +26 -9
- package/build-style/style.css +26 -9
- package/package.json +33 -32
- package/src/audio/test/__snapshots__/edit.native.js.snap +58 -33
- package/src/avatar/edit.js +1 -0
- package/src/block/block.json +2 -1
- package/src/block/editor.native.scss +2 -2
- package/src/buttons/edit.js +2 -2
- package/src/column/edit.native.js +4 -10
- package/src/column/editor.native.scss +0 -4
- package/src/columns/edit.js +1 -0
- package/src/comment-author-avatar/edit.js +1 -0
- package/src/comment-template/index.php +5 -2
- package/src/cover/deprecated.js +2 -0
- package/src/embed/embed-placeholder.native.js +80 -47
- package/src/embed/styles.native.scss +54 -18
- package/src/embed/test/index.native.js +5 -5
- package/src/file/block.json +1 -2
- package/src/file/index.php +19 -1
- package/src/file/inspector.js +1 -0
- package/src/file/test/__snapshots__/edit.native.js.snap +58 -33
- package/src/file/view-interactivity.js +18 -0
- package/src/file/view.js +5 -14
- package/src/footnotes/block.json +0 -1
- package/src/footnotes/edit.js +21 -2
- package/src/footnotes/format.js +22 -20
- package/src/footnotes/style.scss +6 -3
- package/src/gallery/edit.js +1 -1
- package/src/gallery/test/index.native.js +17 -16
- package/src/home-link/index.php +15 -2
- package/src/image/index.php +47 -8
- package/src/image/test/edit.native.js +1 -1
- package/src/latest-comments/edit.js +1 -0
- package/src/latest-posts/edit.js +2 -0
- package/src/list/edit.js +6 -4
- package/src/list/test/edit.native.js +129 -33
- package/src/media-text/media-container.native.js +1 -0
- package/src/missing/edit.native.js +12 -10
- package/src/missing/style.native.scss +19 -12
- package/src/missing/test/__snapshots__/edit.native.js.snap +21 -13
- package/src/navigation/block.json +2 -3
- package/src/navigation/constants.js +12 -6
- package/src/navigation/edit/index.js +29 -1
- package/src/navigation/edit/inner-blocks.js +2 -2
- package/src/navigation/edit/unsaved-inner-blocks.js +2 -2
- package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +17 -21
- package/src/navigation/index.php +24 -6
- package/src/navigation/style.scss +27 -8
- package/src/navigation/use-navigation-menu.js +39 -63
- package/src/navigation/view-interactivity.js +196 -0
- package/src/navigation/view-modal.js +78 -0
- package/src/navigation/view.js +67 -189
- package/src/navigation-link/edit.js +61 -47
- package/src/navigation-submenu/edit.js +2 -2
- package/src/paragraph/test/__snapshots__/edit.native.js.snap +1 -0
- package/src/paragraph/test/edit.native.js +26 -0
- package/src/post-template/index.php +4 -2
- package/src/post-title/index.php +6 -3
- package/src/preformatted/test/__snapshots__/edit.native.js.snap +2 -0
- package/src/query-pagination/edit.js +17 -14
- package/src/query-title/edit.js +48 -6
- package/src/quote/test/__snapshots__/transforms.native.js.snap +10 -0
- package/src/quote/test/transforms.native.js +5 -1
- package/src/quote/transforms.js +13 -0
- package/src/rss/edit.js +3 -0
- package/src/search/block.json +1 -0
- package/src/search/edit.js +4 -3
- package/src/search/index.php +22 -4
- package/src/search/test/__snapshots__/edit.native.js.snap +7 -0
- package/src/site-logo/edit.js +1 -0
- package/src/tag-cloud/edit.js +1 -0
- package/src/template-part/edit/index.js +1 -1
- package/src/template-part/index.php +9 -15
- package/src/text-columns/edit.js +1 -0
- package/build/gallery/shared-icon.native.js +0 -38
- package/build/gallery/shared-icon.native.js.map +0 -1
- package/build-module/gallery/shared-icon.native.js +0 -24
- package/build-module/gallery/shared-icon.native.js.map +0 -1
- package/src/gallery/shared-icon.native.js +0 -23
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interactivity = require("@wordpress/interactivity");
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* WordPress dependencies
|
|
7
|
+
*/
|
|
8
|
+
const focusableSelectors = ['a[href]', 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', '[contenteditable]', '[tabindex]:not([tabindex^="-"])'];
|
|
9
|
+
|
|
10
|
+
const openMenu = (store, menuOpenedOn) => {
|
|
11
|
+
const {
|
|
12
|
+
context,
|
|
13
|
+
ref,
|
|
14
|
+
selectors
|
|
15
|
+
} = store;
|
|
16
|
+
selectors.core.navigation.menuOpenedBy(store)[menuOpenedOn] = true;
|
|
17
|
+
context.core.navigation.previousFocus = ref;
|
|
18
|
+
|
|
19
|
+
if (context.core.navigation.type === 'overlay') {
|
|
20
|
+
// Add a `has-modal-open` class to the <html> root.
|
|
21
|
+
document.documentElement.classList.add('has-modal-open');
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const closeMenu = (store, menuClosedOn) => {
|
|
26
|
+
const {
|
|
27
|
+
context,
|
|
28
|
+
selectors
|
|
29
|
+
} = store;
|
|
30
|
+
selectors.core.navigation.menuOpenedBy(store)[menuClosedOn] = false; // Check if the menu is still open or not.
|
|
31
|
+
|
|
32
|
+
if (!selectors.core.navigation.isMenuOpen(store)) {
|
|
33
|
+
if (context.core.navigation.modal?.contains(window.document.activeElement)) {
|
|
34
|
+
context.core.navigation.previousFocus.focus();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
context.core.navigation.modal = null;
|
|
38
|
+
context.core.navigation.previousFocus = null;
|
|
39
|
+
|
|
40
|
+
if (context.core.navigation.type === 'overlay') {
|
|
41
|
+
document.documentElement.classList.remove('has-modal-open');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
(0, _interactivity.store)({
|
|
47
|
+
effects: {
|
|
48
|
+
core: {
|
|
49
|
+
navigation: {
|
|
50
|
+
initMenu: store => {
|
|
51
|
+
const {
|
|
52
|
+
context,
|
|
53
|
+
selectors,
|
|
54
|
+
ref
|
|
55
|
+
} = store;
|
|
56
|
+
|
|
57
|
+
if (selectors.core.navigation.isMenuOpen(store)) {
|
|
58
|
+
const focusableElements = ref.querySelectorAll(focusableSelectors);
|
|
59
|
+
context.core.navigation.modal = ref;
|
|
60
|
+
context.core.navigation.firstFocusableElement = focusableElements[0];
|
|
61
|
+
context.core.navigation.lastFocusableElement = focusableElements[focusableElements.length - 1];
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
focusFirstElement: store => {
|
|
65
|
+
const {
|
|
66
|
+
selectors,
|
|
67
|
+
ref
|
|
68
|
+
} = store;
|
|
69
|
+
|
|
70
|
+
if (selectors.core.navigation.isMenuOpen(store)) {
|
|
71
|
+
ref.querySelector('.wp-block-navigation-item > *:first-child').focus();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
selectors: {
|
|
78
|
+
core: {
|
|
79
|
+
navigation: {
|
|
80
|
+
roleAttribute: store => {
|
|
81
|
+
const {
|
|
82
|
+
context,
|
|
83
|
+
selectors
|
|
84
|
+
} = store;
|
|
85
|
+
return context.core.navigation.type === 'overlay' && selectors.core.navigation.isMenuOpen(store) ? 'dialog' : '';
|
|
86
|
+
},
|
|
87
|
+
isMenuOpen: ({
|
|
88
|
+
context
|
|
89
|
+
}) => // The menu is opened if either `click`, `hover` or `focus` is true.
|
|
90
|
+
Object.values(context.core.navigation[context.core.navigation.type === 'overlay' ? 'overlayOpenedBy' : 'submenuOpenedBy']).filter(Boolean).length > 0,
|
|
91
|
+
menuOpenedBy: ({
|
|
92
|
+
context
|
|
93
|
+
}) => context.core.navigation[context.core.navigation.type === 'overlay' ? 'overlayOpenedBy' : 'submenuOpenedBy']
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
actions: {
|
|
98
|
+
core: {
|
|
99
|
+
navigation: {
|
|
100
|
+
openMenuOnHover(store) {
|
|
101
|
+
const {
|
|
102
|
+
navigation
|
|
103
|
+
} = store.context.core;
|
|
104
|
+
if (navigation.type === 'submenu' && // Only open on hover if the overlay is closed.
|
|
105
|
+
Object.values(navigation.overlayOpenedBy || {}).filter(Boolean).length === 0) openMenu(store, 'hover');
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
closeMenuOnHover(store) {
|
|
109
|
+
closeMenu(store, 'hover');
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
openMenuOnClick(store) {
|
|
113
|
+
openMenu(store, 'click');
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
closeMenuOnClick(store) {
|
|
117
|
+
closeMenu(store, 'click');
|
|
118
|
+
closeMenu(store, 'focus');
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
openMenuOnFocus(store) {
|
|
122
|
+
openMenu(store, 'focus');
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
toggleMenuOnClick: store => {
|
|
126
|
+
const {
|
|
127
|
+
selectors
|
|
128
|
+
} = store;
|
|
129
|
+
const menuOpenedBy = selectors.core.navigation.menuOpenedBy(store);
|
|
130
|
+
|
|
131
|
+
if (menuOpenedBy.click || menuOpenedBy.focus) {
|
|
132
|
+
closeMenu(store, 'click');
|
|
133
|
+
closeMenu(store, 'focus');
|
|
134
|
+
} else {
|
|
135
|
+
openMenu(store, 'click');
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
handleMenuKeydown: store => {
|
|
139
|
+
const {
|
|
140
|
+
context,
|
|
141
|
+
selectors,
|
|
142
|
+
event
|
|
143
|
+
} = store;
|
|
144
|
+
|
|
145
|
+
if (selectors.core.navigation.menuOpenedBy(store).click) {
|
|
146
|
+
// If Escape close the menu.
|
|
147
|
+
if (event?.key === 'Escape') {
|
|
148
|
+
closeMenu(store, 'click');
|
|
149
|
+
closeMenu(store, 'focus');
|
|
150
|
+
return;
|
|
151
|
+
} // Trap focus if it is an overlay (main menu).
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
if (context.core.navigation.type === 'overlay' && event.key === 'Tab') {
|
|
155
|
+
// If shift + tab it change the direction.
|
|
156
|
+
if (event.shiftKey && window.document.activeElement === context.core.navigation.firstFocusableElement) {
|
|
157
|
+
event.preventDefault();
|
|
158
|
+
context.core.navigation.lastFocusableElement.focus();
|
|
159
|
+
} else if (!event.shiftKey && window.document.activeElement === context.core.navigation.lastFocusableElement) {
|
|
160
|
+
event.preventDefault();
|
|
161
|
+
context.core.navigation.firstFocusableElement.focus();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
handleMenuFocusout: store => {
|
|
167
|
+
const {
|
|
168
|
+
context,
|
|
169
|
+
event
|
|
170
|
+
} = store; // If focus is outside modal, and in the document, close menu
|
|
171
|
+
// event.target === The element losing focus
|
|
172
|
+
// event.relatedTarget === The element receiving focus (if any)
|
|
173
|
+
// When focusout is outsite the document,
|
|
174
|
+
// `window.document.activeElement` doesn't change.
|
|
175
|
+
|
|
176
|
+
if (!context.core.navigation.modal?.contains(event.relatedTarget) && event.target !== window.document.activeElement) {
|
|
177
|
+
closeMenu(store, 'click');
|
|
178
|
+
closeMenu(store, 'focus');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
//# sourceMappingURL=view-interactivity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/navigation/view-interactivity.js"],"names":["focusableSelectors","openMenu","store","menuOpenedOn","context","ref","selectors","core","navigation","menuOpenedBy","previousFocus","type","document","documentElement","classList","add","closeMenu","menuClosedOn","isMenuOpen","modal","contains","window","activeElement","focus","remove","effects","initMenu","focusableElements","querySelectorAll","firstFocusableElement","lastFocusableElement","length","focusFirstElement","querySelector","roleAttribute","Object","values","filter","Boolean","actions","openMenuOnHover","overlayOpenedBy","closeMenuOnHover","openMenuOnClick","closeMenuOnClick","openMenuOnFocus","toggleMenuOnClick","click","handleMenuKeydown","event","key","shiftKey","preventDefault","handleMenuFocusout","relatedTarget","target"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as wpStore } from '@wordpress/interactivity';\n\nconst focusableSelectors = [\n\t'a[href]',\n\t'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n\t'select:not([disabled]):not([aria-hidden])',\n\t'textarea:not([disabled]):not([aria-hidden])',\n\t'button:not([disabled]):not([aria-hidden])',\n\t'[contenteditable]',\n\t'[tabindex]:not([tabindex^=\"-\"])',\n];\n\nconst openMenu = ( store, menuOpenedOn ) => {\n\tconst { context, ref, selectors } = store;\n\tselectors.core.navigation.menuOpenedBy( store )[ menuOpenedOn ] = true;\n\tcontext.core.navigation.previousFocus = ref;\n\tif ( context.core.navigation.type === 'overlay' ) {\n\t\t// Add a `has-modal-open` class to the <html> root.\n\t\tdocument.documentElement.classList.add( 'has-modal-open' );\n\t}\n};\n\nconst closeMenu = ( store, menuClosedOn ) => {\n\tconst { context, selectors } = store;\n\tselectors.core.navigation.menuOpenedBy( store )[ menuClosedOn ] = false;\n\t// Check if the menu is still open or not.\n\tif ( ! selectors.core.navigation.isMenuOpen( store ) ) {\n\t\tif (\n\t\t\tcontext.core.navigation.modal?.contains(\n\t\t\t\twindow.document.activeElement\n\t\t\t)\n\t\t) {\n\t\t\tcontext.core.navigation.previousFocus.focus();\n\t\t}\n\t\tcontext.core.navigation.modal = null;\n\t\tcontext.core.navigation.previousFocus = null;\n\t\tif ( context.core.navigation.type === 'overlay' ) {\n\t\t\tdocument.documentElement.classList.remove( 'has-modal-open' );\n\t\t}\n\t}\n};\n\nwpStore( {\n\teffects: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\tinitMenu: ( store ) => {\n\t\t\t\t\tconst { context, selectors, ref } = store;\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( store ) ) {\n\t\t\t\t\t\tconst focusableElements =\n\t\t\t\t\t\t\tref.querySelectorAll( focusableSelectors );\n\t\t\t\t\t\tcontext.core.navigation.modal = ref;\n\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ 0 ];\n\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ focusableElements.length - 1 ];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfocusFirstElement: ( store ) => {\n\t\t\t\t\tconst { selectors, ref } = store;\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( store ) ) {\n\t\t\t\t\t\tref.querySelector(\n\t\t\t\t\t\t\t'.wp-block-navigation-item > *:first-child'\n\t\t\t\t\t\t).focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tselectors: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\troleAttribute: ( store ) => {\n\t\t\t\t\tconst { context, selectors } = store;\n\t\t\t\t\treturn context.core.navigation.type === 'overlay' &&\n\t\t\t\t\t\tselectors.core.navigation.isMenuOpen( store )\n\t\t\t\t\t\t? 'dialog'\n\t\t\t\t\t\t: '';\n\t\t\t\t},\n\t\t\t\tisMenuOpen: ( { context } ) =>\n\t\t\t\t\t// The menu is opened if either `click`, `hover` or `focus` is true.\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tcontext.core.navigation[\n\t\t\t\t\t\t\tcontext.core.navigation.type === 'overlay'\n\t\t\t\t\t\t\t\t? 'overlayOpenedBy'\n\t\t\t\t\t\t\t\t: 'submenuOpenedBy'\n\t\t\t\t\t\t]\n\t\t\t\t\t).filter( Boolean ).length > 0,\n\t\t\t\tmenuOpenedBy: ( { context } ) =>\n\t\t\t\t\tcontext.core.navigation[\n\t\t\t\t\t\tcontext.core.navigation.type === 'overlay'\n\t\t\t\t\t\t\t? 'overlayOpenedBy'\n\t\t\t\t\t\t\t: 'submenuOpenedBy'\n\t\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tactions: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\topenMenuOnHover( store ) {\n\t\t\t\t\tconst { navigation } = store.context.core;\n\t\t\t\t\tif (\n\t\t\t\t\t\tnavigation.type === 'submenu' &&\n\t\t\t\t\t\t// Only open on hover if the overlay is closed.\n\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\tnavigation.overlayOpenedBy || {}\n\t\t\t\t\t\t).filter( Boolean ).length === 0\n\t\t\t\t\t)\n\t\t\t\t\t\topenMenu( store, 'hover' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnHover( store ) {\n\t\t\t\t\tcloseMenu( store, 'hover' );\n\t\t\t\t},\n\t\t\t\topenMenuOnClick( store ) {\n\t\t\t\t\topenMenu( store, 'click' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnClick( store ) {\n\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t},\n\t\t\t\topenMenuOnFocus( store ) {\n\t\t\t\t\topenMenu( store, 'focus' );\n\t\t\t\t},\n\t\t\t\ttoggleMenuOnClick: ( store ) => {\n\t\t\t\t\tconst { selectors } = store;\n\t\t\t\t\tconst menuOpenedBy =\n\t\t\t\t\t\tselectors.core.navigation.menuOpenedBy( store );\n\t\t\t\t\tif ( menuOpenedBy.click || menuOpenedBy.focus ) {\n\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\topenMenu( store, 'click' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuKeydown: ( store ) => {\n\t\t\t\t\tconst { context, selectors, event } = store;\n\t\t\t\t\tif (\n\t\t\t\t\t\tselectors.core.navigation.menuOpenedBy( store ).click\n\t\t\t\t\t) {\n\t\t\t\t\t\t// If Escape close the menu.\n\t\t\t\t\t\tif ( event?.key === 'Escape' ) {\n\t\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Trap focus if it is an overlay (main menu).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcontext.core.navigation.type === 'overlay' &&\n\t\t\t\t\t\t\tevent.key === 'Tab'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// If shift + tab it change the direction.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tevent.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation\n\t\t\t\t\t\t\t\t\t\t.firstFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement.focus();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t! event.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuFocusout: ( store ) => {\n\t\t\t\t\tconst { context, event } = store;\n\t\t\t\t\t// If focus is outside modal, and in the document, close menu\n\t\t\t\t\t// event.target === The element losing focus\n\t\t\t\t\t// event.relatedTarget === The element receiving focus (if any)\n\t\t\t\t\t// When focusout is outsite the document,\n\t\t\t\t\t// `window.document.activeElement` doesn't change.\n\t\t\t\t\tif (\n\t\t\t\t\t\t! context.core.navigation.modal?.contains(\n\t\t\t\t\t\t\tevent.relatedTarget\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\tevent.target !== window.document.activeElement\n\t\t\t\t\t) {\n\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _micromodal = _interopRequireDefault(require("micromodal"));
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* External dependencies
|
|
9
|
+
*/
|
|
10
|
+
// Responsive navigation toggle.
|
|
11
|
+
function navigationToggleModal(modal) {
|
|
12
|
+
const dialogContainer = modal.querySelector(`.wp-block-navigation__responsive-dialog`);
|
|
13
|
+
const isHidden = 'true' === modal.getAttribute('aria-hidden');
|
|
14
|
+
modal.classList.toggle('has-modal-open', !isHidden);
|
|
15
|
+
dialogContainer.toggleAttribute('aria-modal', !isHidden);
|
|
16
|
+
|
|
17
|
+
if (isHidden) {
|
|
18
|
+
dialogContainer.removeAttribute('role');
|
|
19
|
+
dialogContainer.removeAttribute('aria-modal');
|
|
20
|
+
} else {
|
|
21
|
+
dialogContainer.setAttribute('role', 'dialog');
|
|
22
|
+
dialogContainer.setAttribute('aria-modal', 'true');
|
|
23
|
+
} // Add a class to indicate the modal is open.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
const htmlElement = document.documentElement;
|
|
27
|
+
htmlElement.classList.toggle('has-modal-open');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function isLinkToAnchorOnCurrentPage(node) {
|
|
31
|
+
return node.hash && node.protocol === window.location.protocol && node.host === window.location.host && node.pathname === window.location.pathname && node.search === window.location.search;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
window.addEventListener('load', () => {
|
|
35
|
+
_micromodal.default.init({
|
|
36
|
+
onShow: navigationToggleModal,
|
|
37
|
+
onClose: navigationToggleModal,
|
|
38
|
+
openClass: 'is-menu-open'
|
|
39
|
+
}); // Close modal automatically on clicking anchor links inside modal.
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
const navigationLinks = document.querySelectorAll('.wp-block-navigation-item__content');
|
|
43
|
+
navigationLinks.forEach(function (link) {
|
|
44
|
+
// Ignore non-anchor links and anchor links which open on a new tab.
|
|
45
|
+
if (!isLinkToAnchorOnCurrentPage(link) || link.attributes?.target === '_blank') {
|
|
46
|
+
return;
|
|
47
|
+
} // Find the specific parent modal for this link
|
|
48
|
+
// since .close() won't work without an ID if there are
|
|
49
|
+
// multiple navigation menus in a post/page.
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
const modal = link.closest('.wp-block-navigation__responsive-container');
|
|
53
|
+
const modalId = modal?.getAttribute('id');
|
|
54
|
+
link.addEventListener('click', () => {
|
|
55
|
+
// check if modal exists and is open before trying to close it
|
|
56
|
+
// otherwise Micromodal will toggle the `has-modal-open` class
|
|
57
|
+
// on the html tag which prevents scrolling
|
|
58
|
+
if (modalId && modal.classList.contains('has-modal-open')) {
|
|
59
|
+
_micromodal.default.close(modalId);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=view-modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/navigation/view-modal.js"],"names":["navigationToggleModal","modal","dialogContainer","querySelector","isHidden","getAttribute","classList","toggle","toggleAttribute","removeAttribute","setAttribute","htmlElement","document","documentElement","isLinkToAnchorOnCurrentPage","node","hash","protocol","window","location","host","pathname","search","addEventListener","MicroModal","init","onShow","onClose","openClass","navigationLinks","querySelectorAll","forEach","link","attributes","target","closest","modalId","contains","close"],"mappings":";;;;AAGA;;AAHA;AACA;AACA;AAGA;AACA,SAASA,qBAAT,CAAgCC,KAAhC,EAAwC;AACvC,QAAMC,eAAe,GAAGD,KAAK,CAACE,aAAN,CACtB,yCADsB,CAAxB;AAIA,QAAMC,QAAQ,GAAG,WAAWH,KAAK,CAACI,YAAN,CAAoB,aAApB,CAA5B;AAEAJ,EAAAA,KAAK,CAACK,SAAN,CAAgBC,MAAhB,CAAwB,gBAAxB,EAA0C,CAAEH,QAA5C;AACAF,EAAAA,eAAe,CAACM,eAAhB,CAAiC,YAAjC,EAA+C,CAAEJ,QAAjD;;AAEA,MAAKA,QAAL,EAAgB;AACfF,IAAAA,eAAe,CAACO,eAAhB,CAAiC,MAAjC;AACAP,IAAAA,eAAe,CAACO,eAAhB,CAAiC,YAAjC;AACA,GAHD,MAGO;AACNP,IAAAA,eAAe,CAACQ,YAAhB,CAA8B,MAA9B,EAAsC,QAAtC;AACAR,IAAAA,eAAe,CAACQ,YAAhB,CAA8B,YAA9B,EAA4C,MAA5C;AACA,GAhBsC,CAkBvC;;;AACA,QAAMC,WAAW,GAAGC,QAAQ,CAACC,eAA7B;AACAF,EAAAA,WAAW,CAACL,SAAZ,CAAsBC,MAAtB,CAA8B,gBAA9B;AACA;;AAED,SAASO,2BAAT,CAAsCC,IAAtC,EAA6C;AAC5C,SACCA,IAAI,CAACC,IAAL,IACAD,IAAI,CAACE,QAAL,KAAkBC,MAAM,CAACC,QAAP,CAAgBF,QADlC,IAEAF,IAAI,CAACK,IAAL,KAAcF,MAAM,CAACC,QAAP,CAAgBC,IAF9B,IAGAL,IAAI,CAACM,QAAL,KAAkBH,MAAM,CAACC,QAAP,CAAgBE,QAHlC,IAIAN,IAAI,CAACO,MAAL,KAAgBJ,MAAM,CAACC,QAAP,CAAgBG,MALjC;AAOA;;AAEDJ,MAAM,CAACK,gBAAP,CAAyB,MAAzB,EAAiC,MAAM;AACtCC,sBAAWC,IAAX,CAAiB;AAChBC,IAAAA,MAAM,EAAE1B,qBADQ;AAEhB2B,IAAAA,OAAO,EAAE3B,qBAFO;AAGhB4B,IAAAA,SAAS,EAAE;AAHK,GAAjB,EADsC,CAOtC;;;AACA,QAAMC,eAAe,GAAGjB,QAAQ,CAACkB,gBAAT,CACvB,oCADuB,CAAxB;AAIAD,EAAAA,eAAe,CAACE,OAAhB,CAAyB,UAAWC,IAAX,EAAkB;AAC1C;AACA,QACC,CAAElB,2BAA2B,CAAEkB,IAAF,CAA7B,IACAA,IAAI,CAACC,UAAL,EAAiBC,MAAjB,KAA4B,QAF7B,EAGE;AACD;AACA,KAPyC,CAS1C;AACA;AACA;;;AACA,UAAMjC,KAAK,GAAG+B,IAAI,CAACG,OAAL,CACb,4CADa,CAAd;AAGA,UAAMC,OAAO,GAAGnC,KAAK,EAAEI,YAAP,CAAqB,IAArB,CAAhB;AAEA2B,IAAAA,IAAI,CAACT,gBAAL,CAAuB,OAAvB,EAAgC,MAAM;AACrC;AACA;AACA;AACA,UAAKa,OAAO,IAAInC,KAAK,CAACK,SAAN,CAAgB+B,QAAhB,CAA0B,gBAA1B,CAAhB,EAA+D;AAC9Db,4BAAWc,KAAX,CAAkBF,OAAlB;AACA;AACD,KAPD;AAQA,GAzBD;AA0BA,CAtCD","sourcesContent":["/**\n * External dependencies\n */\nimport MicroModal from 'micromodal';\n\n// Responsive navigation toggle.\nfunction navigationToggleModal( modal ) {\n\tconst dialogContainer = modal.querySelector(\n\t\t`.wp-block-navigation__responsive-dialog`\n\t);\n\n\tconst isHidden = 'true' === modal.getAttribute( 'aria-hidden' );\n\n\tmodal.classList.toggle( 'has-modal-open', ! isHidden );\n\tdialogContainer.toggleAttribute( 'aria-modal', ! isHidden );\n\n\tif ( isHidden ) {\n\t\tdialogContainer.removeAttribute( 'role' );\n\t\tdialogContainer.removeAttribute( 'aria-modal' );\n\t} else {\n\t\tdialogContainer.setAttribute( 'role', 'dialog' );\n\t\tdialogContainer.setAttribute( 'aria-modal', 'true' );\n\t}\n\n\t// Add a class to indicate the modal is open.\n\tconst htmlElement = document.documentElement;\n\thtmlElement.classList.toggle( 'has-modal-open' );\n}\n\nfunction isLinkToAnchorOnCurrentPage( node ) {\n\treturn (\n\t\tnode.hash &&\n\t\tnode.protocol === window.location.protocol &&\n\t\tnode.host === window.location.host &&\n\t\tnode.pathname === window.location.pathname &&\n\t\tnode.search === window.location.search\n\t);\n}\n\nwindow.addEventListener( 'load', () => {\n\tMicroModal.init( {\n\t\tonShow: navigationToggleModal,\n\t\tonClose: navigationToggleModal,\n\t\topenClass: 'is-menu-open',\n\t} );\n\n\t// Close modal automatically on clicking anchor links inside modal.\n\tconst navigationLinks = document.querySelectorAll(\n\t\t'.wp-block-navigation-item__content'\n\t);\n\n\tnavigationLinks.forEach( function ( link ) {\n\t\t// Ignore non-anchor links and anchor links which open on a new tab.\n\t\tif (\n\t\t\t! isLinkToAnchorOnCurrentPage( link ) ||\n\t\t\tlink.attributes?.target === '_blank'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find the specific parent modal for this link\n\t\t// since .close() won't work without an ID if there are\n\t\t// multiple navigation menus in a post/page.\n\t\tconst modal = link.closest(\n\t\t\t'.wp-block-navigation__responsive-container'\n\t\t);\n\t\tconst modalId = modal?.getAttribute( 'id' );\n\n\t\tlink.addEventListener( 'click', () => {\n\t\t\t// check if modal exists and is open before trying to close it\n\t\t\t// otherwise Micromodal will toggle the `has-modal-open` class\n\t\t\t// on the html tag which prevents scrolling\n\t\t\tif ( modalId && modal.classList.contains( 'has-modal-open' ) ) {\n\t\t\t\tMicroModal.close( modalId );\n\t\t\t}\n\t\t} );\n\t} );\n} );\n"]}
|
package/build/navigation/view.js
CHANGED
|
@@ -1,185 +1,61 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const closeMenu = (store, menuClosedOn) => {
|
|
26
|
-
const {
|
|
27
|
-
context,
|
|
28
|
-
selectors
|
|
29
|
-
} = store;
|
|
30
|
-
selectors.core.navigation.menuOpenedBy(store)[menuClosedOn] = false; // Check if the menu is still open or not.
|
|
31
|
-
|
|
32
|
-
if (!selectors.core.navigation.isMenuOpen(store)) {
|
|
33
|
-
if (context.core.navigation.modal?.contains(window.document.activeElement)) {
|
|
34
|
-
context.core.navigation.previousFocus.focus();
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
context.core.navigation.modal = null;
|
|
38
|
-
context.core.navigation.previousFocus = null;
|
|
3
|
+
// Open on click functionality.
|
|
4
|
+
function closeSubmenus(element) {
|
|
5
|
+
element.querySelectorAll('[aria-expanded="true"]').forEach(function (toggle) {
|
|
6
|
+
toggle.setAttribute('aria-expanded', 'false');
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function toggleSubmenuOnClick(event) {
|
|
11
|
+
const buttonToggle = event.target.closest('[aria-expanded]');
|
|
12
|
+
const isSubmenuOpen = buttonToggle.getAttribute('aria-expanded');
|
|
13
|
+
|
|
14
|
+
if (isSubmenuOpen === 'true') {
|
|
15
|
+
closeSubmenus(buttonToggle.closest('.wp-block-navigation-item'));
|
|
16
|
+
} else {
|
|
17
|
+
// Close all sibling submenus.
|
|
18
|
+
const parentElement = buttonToggle.closest('.wp-block-navigation-item');
|
|
19
|
+
const navigationParent = buttonToggle.closest('.wp-block-navigation__submenu-container, .wp-block-navigation__container, .wp-block-page-list');
|
|
20
|
+
navigationParent.querySelectorAll('.wp-block-navigation-item').forEach(function (child) {
|
|
21
|
+
if (child !== parentElement) {
|
|
22
|
+
closeSubmenus(child);
|
|
23
|
+
}
|
|
24
|
+
}); // Open submenu.
|
|
39
25
|
|
|
40
|
-
|
|
41
|
-
document.documentElement.classList.remove('has-modal-open');
|
|
42
|
-
}
|
|
26
|
+
buttonToggle.setAttribute('aria-expanded', 'true');
|
|
43
27
|
}
|
|
44
|
-
}
|
|
28
|
+
} // Necessary for some themes such as TT1 Blocks, where
|
|
29
|
+
// scripts could be loaded before the body.
|
|
45
30
|
|
|
46
|
-
(0, _interactivity.store)({
|
|
47
|
-
effects: {
|
|
48
|
-
core: {
|
|
49
|
-
navigation: {
|
|
50
|
-
initMenu: store => {
|
|
51
|
-
const {
|
|
52
|
-
context,
|
|
53
|
-
selectors,
|
|
54
|
-
ref
|
|
55
|
-
} = store;
|
|
56
31
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
focusFirstElement: store => {
|
|
65
|
-
const {
|
|
66
|
-
selectors,
|
|
67
|
-
ref
|
|
68
|
-
} = store;
|
|
32
|
+
window.addEventListener('load', () => {
|
|
33
|
+
const submenuButtons = document.querySelectorAll('.wp-block-navigation-submenu__toggle');
|
|
34
|
+
submenuButtons.forEach(function (button) {
|
|
35
|
+
button.addEventListener('click', toggleSubmenuOnClick);
|
|
36
|
+
}); // Close on click outside.
|
|
69
37
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
38
|
+
document.addEventListener('click', function (event) {
|
|
39
|
+
const navigationBlocks = document.querySelectorAll('.wp-block-navigation');
|
|
40
|
+
navigationBlocks.forEach(function (block) {
|
|
41
|
+
if (!block.contains(event.target)) {
|
|
42
|
+
closeSubmenus(block);
|
|
74
43
|
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
context
|
|
89
|
-
}) => // The menu is opened if either `click`, `hover` or `focus` is true.
|
|
90
|
-
Object.values(context.core.navigation[context.core.navigation.type === 'overlay' ? 'overlayOpenedBy' : 'submenuOpenedBy']).filter(Boolean).length > 0,
|
|
91
|
-
menuOpenedBy: ({
|
|
92
|
-
context
|
|
93
|
-
}) => context.core.navigation[context.core.navigation.type === 'overlay' ? 'overlayOpenedBy' : 'submenuOpenedBy']
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
actions: {
|
|
98
|
-
core: {
|
|
99
|
-
navigation: {
|
|
100
|
-
openMenuOnHover(store) {
|
|
101
|
-
const {
|
|
102
|
-
navigation
|
|
103
|
-
} = store.context.core;
|
|
104
|
-
if (navigation.type === 'submenu' && // Only open on hover if the overlay is closed.
|
|
105
|
-
Object.values(navigation.overlayOpenedBy || {}).filter(Boolean).length === 0) openMenu(store, 'hover');
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
closeMenuOnHover(store) {
|
|
109
|
-
closeMenu(store, 'hover');
|
|
110
|
-
},
|
|
111
|
-
|
|
112
|
-
openMenuOnClick(store) {
|
|
113
|
-
openMenu(store, 'click');
|
|
114
|
-
},
|
|
115
|
-
|
|
116
|
-
closeMenuOnClick(store) {
|
|
117
|
-
closeMenu(store, 'click');
|
|
118
|
-
closeMenu(store, 'focus');
|
|
119
|
-
},
|
|
120
|
-
|
|
121
|
-
openMenuOnFocus(store) {
|
|
122
|
-
openMenu(store, 'focus');
|
|
123
|
-
},
|
|
124
|
-
|
|
125
|
-
toggleMenuOnClick: store => {
|
|
126
|
-
const {
|
|
127
|
-
selectors
|
|
128
|
-
} = store;
|
|
129
|
-
const menuOpenedBy = selectors.core.navigation.menuOpenedBy(store);
|
|
130
|
-
|
|
131
|
-
if (menuOpenedBy.click || menuOpenedBy.focus) {
|
|
132
|
-
closeMenu(store, 'click');
|
|
133
|
-
closeMenu(store, 'focus');
|
|
134
|
-
} else {
|
|
135
|
-
openMenu(store, 'click');
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
|
-
handleMenuKeydown: store => {
|
|
139
|
-
const {
|
|
140
|
-
context,
|
|
141
|
-
selectors,
|
|
142
|
-
event
|
|
143
|
-
} = store;
|
|
144
|
-
|
|
145
|
-
if (selectors.core.navigation.menuOpenedBy(store).click) {
|
|
146
|
-
// If Escape close the menu.
|
|
147
|
-
if (event?.key === 'Escape') {
|
|
148
|
-
closeMenu(store, 'click');
|
|
149
|
-
closeMenu(store, 'focus');
|
|
150
|
-
return;
|
|
151
|
-
} // Trap focus if it is an overlay (main menu).
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (context.core.navigation.type === 'overlay' && event.key === 'Tab') {
|
|
155
|
-
// If shift + tab it change the direction.
|
|
156
|
-
if (event.shiftKey && window.document.activeElement === context.core.navigation.firstFocusableElement) {
|
|
157
|
-
event.preventDefault();
|
|
158
|
-
context.core.navigation.lastFocusableElement.focus();
|
|
159
|
-
} else if (!event.shiftKey && window.document.activeElement === context.core.navigation.lastFocusableElement) {
|
|
160
|
-
event.preventDefault();
|
|
161
|
-
context.core.navigation.firstFocusableElement.focus();
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
handleMenuFocusout: store => {
|
|
167
|
-
const {
|
|
168
|
-
context,
|
|
169
|
-
event
|
|
170
|
-
} = store; // If focus is outside modal, and in the document, close menu
|
|
171
|
-
// event.target === The element losing focus
|
|
172
|
-
// event.relatedTarget === The element receiving focus (if any)
|
|
173
|
-
// When focusout is outsite the document,
|
|
174
|
-
// `window.document.activeElement` doesn't change.
|
|
175
|
-
|
|
176
|
-
if (!context.core.navigation.modal?.contains(event.relatedTarget) && event.target !== window.document.activeElement) {
|
|
177
|
-
closeMenu(store, 'click');
|
|
178
|
-
closeMenu(store, 'focus');
|
|
179
|
-
}
|
|
180
|
-
}
|
|
44
|
+
});
|
|
45
|
+
}); // Close on focus outside or escape key.
|
|
46
|
+
|
|
47
|
+
document.addEventListener('keyup', function (event) {
|
|
48
|
+
const submenuBlocks = document.querySelectorAll('.wp-block-navigation-item.has-child');
|
|
49
|
+
submenuBlocks.forEach(function (block) {
|
|
50
|
+
if (!block.contains(event.target)) {
|
|
51
|
+
closeSubmenus(block);
|
|
52
|
+
} else if (event.key === 'Escape') {
|
|
53
|
+
const toggle = block.querySelector('[aria-expanded="true"]');
|
|
54
|
+
closeSubmenus(block); // Focus the submenu trigger so focus does not get trapped in the closed submenu.
|
|
55
|
+
|
|
56
|
+
toggle?.focus();
|
|
181
57
|
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
184
60
|
});
|
|
185
61
|
//# sourceMappingURL=view.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/navigation/view.js"],"names":["focusableSelectors","openMenu","store","menuOpenedOn","context","ref","selectors","core","navigation","menuOpenedBy","previousFocus","type","document","documentElement","classList","add","closeMenu","menuClosedOn","isMenuOpen","modal","contains","window","activeElement","focus","remove","effects","initMenu","focusableElements","querySelectorAll","firstFocusableElement","lastFocusableElement","length","focusFirstElement","querySelector","roleAttribute","Object","values","filter","Boolean","actions","openMenuOnHover","overlayOpenedBy","closeMenuOnHover","openMenuOnClick","closeMenuOnClick","openMenuOnFocus","toggleMenuOnClick","click","handleMenuKeydown","event","key","shiftKey","preventDefault","handleMenuFocusout","relatedTarget","target"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as wpStore } from '@wordpress/interactivity';\n\nconst focusableSelectors = [\n\t'a[href]',\n\t'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n\t'select:not([disabled]):not([aria-hidden])',\n\t'textarea:not([disabled]):not([aria-hidden])',\n\t'button:not([disabled]):not([aria-hidden])',\n\t'[contenteditable]',\n\t'[tabindex]:not([tabindex^=\"-\"])',\n];\n\nconst openMenu = ( store, menuOpenedOn ) => {\n\tconst { context, ref, selectors } = store;\n\tselectors.core.navigation.menuOpenedBy( store )[ menuOpenedOn ] = true;\n\tcontext.core.navigation.previousFocus = ref;\n\tif ( context.core.navigation.type === 'overlay' ) {\n\t\t// Add a `has-modal-open` class to the <html> root.\n\t\tdocument.documentElement.classList.add( 'has-modal-open' );\n\t}\n};\n\nconst closeMenu = ( store, menuClosedOn ) => {\n\tconst { context, selectors } = store;\n\tselectors.core.navigation.menuOpenedBy( store )[ menuClosedOn ] = false;\n\t// Check if the menu is still open or not.\n\tif ( ! selectors.core.navigation.isMenuOpen( store ) ) {\n\t\tif (\n\t\t\tcontext.core.navigation.modal?.contains(\n\t\t\t\twindow.document.activeElement\n\t\t\t)\n\t\t) {\n\t\t\tcontext.core.navigation.previousFocus.focus();\n\t\t}\n\t\tcontext.core.navigation.modal = null;\n\t\tcontext.core.navigation.previousFocus = null;\n\t\tif ( context.core.navigation.type === 'overlay' ) {\n\t\t\tdocument.documentElement.classList.remove( 'has-modal-open' );\n\t\t}\n\t}\n};\n\nwpStore( {\n\teffects: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\tinitMenu: ( store ) => {\n\t\t\t\t\tconst { context, selectors, ref } = store;\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( store ) ) {\n\t\t\t\t\t\tconst focusableElements =\n\t\t\t\t\t\t\tref.querySelectorAll( focusableSelectors );\n\t\t\t\t\t\tcontext.core.navigation.modal = ref;\n\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ 0 ];\n\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ focusableElements.length - 1 ];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfocusFirstElement: ( store ) => {\n\t\t\t\t\tconst { selectors, ref } = store;\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( store ) ) {\n\t\t\t\t\t\tref.querySelector(\n\t\t\t\t\t\t\t'.wp-block-navigation-item > *:first-child'\n\t\t\t\t\t\t).focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tselectors: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\troleAttribute: ( store ) => {\n\t\t\t\t\tconst { context, selectors } = store;\n\t\t\t\t\treturn context.core.navigation.type === 'overlay' &&\n\t\t\t\t\t\tselectors.core.navigation.isMenuOpen( store )\n\t\t\t\t\t\t? 'dialog'\n\t\t\t\t\t\t: '';\n\t\t\t\t},\n\t\t\t\tisMenuOpen: ( { context } ) =>\n\t\t\t\t\t// The menu is opened if either `click`, `hover` or `focus` is true.\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tcontext.core.navigation[\n\t\t\t\t\t\t\tcontext.core.navigation.type === 'overlay'\n\t\t\t\t\t\t\t\t? 'overlayOpenedBy'\n\t\t\t\t\t\t\t\t: 'submenuOpenedBy'\n\t\t\t\t\t\t]\n\t\t\t\t\t).filter( Boolean ).length > 0,\n\t\t\t\tmenuOpenedBy: ( { context } ) =>\n\t\t\t\t\tcontext.core.navigation[\n\t\t\t\t\t\tcontext.core.navigation.type === 'overlay'\n\t\t\t\t\t\t\t? 'overlayOpenedBy'\n\t\t\t\t\t\t\t: 'submenuOpenedBy'\n\t\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tactions: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\topenMenuOnHover( store ) {\n\t\t\t\t\tconst { navigation } = store.context.core;\n\t\t\t\t\tif (\n\t\t\t\t\t\tnavigation.type === 'submenu' &&\n\t\t\t\t\t\t// Only open on hover if the overlay is closed.\n\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\tnavigation.overlayOpenedBy || {}\n\t\t\t\t\t\t).filter( Boolean ).length === 0\n\t\t\t\t\t)\n\t\t\t\t\t\topenMenu( store, 'hover' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnHover( store ) {\n\t\t\t\t\tcloseMenu( store, 'hover' );\n\t\t\t\t},\n\t\t\t\topenMenuOnClick( store ) {\n\t\t\t\t\topenMenu( store, 'click' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnClick( store ) {\n\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t},\n\t\t\t\topenMenuOnFocus( store ) {\n\t\t\t\t\topenMenu( store, 'focus' );\n\t\t\t\t},\n\t\t\t\ttoggleMenuOnClick: ( store ) => {\n\t\t\t\t\tconst { selectors } = store;\n\t\t\t\t\tconst menuOpenedBy =\n\t\t\t\t\t\tselectors.core.navigation.menuOpenedBy( store );\n\t\t\t\t\tif ( menuOpenedBy.click || menuOpenedBy.focus ) {\n\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\topenMenu( store, 'click' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuKeydown: ( store ) => {\n\t\t\t\t\tconst { context, selectors, event } = store;\n\t\t\t\t\tif (\n\t\t\t\t\t\tselectors.core.navigation.menuOpenedBy( store ).click\n\t\t\t\t\t) {\n\t\t\t\t\t\t// If Escape close the menu.\n\t\t\t\t\t\tif ( event?.key === 'Escape' ) {\n\t\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Trap focus if it is an overlay (main menu).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcontext.core.navigation.type === 'overlay' &&\n\t\t\t\t\t\t\tevent.key === 'Tab'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// If shift + tab it change the direction.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tevent.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation\n\t\t\t\t\t\t\t\t\t\t.firstFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement.focus();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t! event.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuFocusout: ( store ) => {\n\t\t\t\t\tconst { context, event } = store;\n\t\t\t\t\t// If focus is outside modal, and in the document, close menu\n\t\t\t\t\t// event.target === The element losing focus\n\t\t\t\t\t// event.relatedTarget === The element receiving focus (if any)\n\t\t\t\t\t// When focusout is outsite the document,\n\t\t\t\t\t// `window.document.activeElement` doesn't change.\n\t\t\t\t\tif (\n\t\t\t\t\t\t! context.core.navigation.modal?.contains(\n\t\t\t\t\t\t\tevent.relatedTarget\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\tevent.target !== window.document.activeElement\n\t\t\t\t\t) {\n\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/navigation/view.js"],"names":["closeSubmenus","element","querySelectorAll","forEach","toggle","setAttribute","toggleSubmenuOnClick","event","buttonToggle","target","closest","isSubmenuOpen","getAttribute","parentElement","navigationParent","child","window","addEventListener","submenuButtons","document","button","navigationBlocks","block","contains","submenuBlocks","key","querySelector","focus"],"mappings":";;AAAA;AACA,SAASA,aAAT,CAAwBC,OAAxB,EAAkC;AACjCA,EAAAA,OAAO,CACLC,gBADF,CACoB,wBADpB,EAEEC,OAFF,CAEW,UAAWC,MAAX,EAAoB;AAC7BA,IAAAA,MAAM,CAACC,YAAP,CAAqB,eAArB,EAAsC,OAAtC;AACA,GAJF;AAKA;;AAED,SAASC,oBAAT,CAA+BC,KAA/B,EAAuC;AACtC,QAAMC,YAAY,GAAGD,KAAK,CAACE,MAAN,CAAaC,OAAb,CAAsB,iBAAtB,CAArB;AACA,QAAMC,aAAa,GAAGH,YAAY,CAACI,YAAb,CAA2B,eAA3B,CAAtB;;AAEA,MAAKD,aAAa,KAAK,MAAvB,EAAgC;AAC/BX,IAAAA,aAAa,CAAEQ,YAAY,CAACE,OAAb,CAAsB,2BAAtB,CAAF,CAAb;AACA,GAFD,MAEO;AACN;AACA,UAAMG,aAAa,GAAGL,YAAY,CAACE,OAAb,CACrB,2BADqB,CAAtB;AAGA,UAAMI,gBAAgB,GAAGN,YAAY,CAACE,OAAb,CACxB,+FADwB,CAAzB;AAGAI,IAAAA,gBAAgB,CACdZ,gBADF,CACoB,2BADpB,EAEEC,OAFF,CAEW,UAAWY,KAAX,EAAmB;AAC5B,UAAKA,KAAK,KAAKF,aAAf,EAA+B;AAC9Bb,QAAAA,aAAa,CAAEe,KAAF,CAAb;AACA;AACD,KANF,EARM,CAeN;;AACAP,IAAAA,YAAY,CAACH,YAAb,CAA2B,eAA3B,EAA4C,MAA5C;AACA;AACD,C,CAED;AACA;;;AACAW,MAAM,CAACC,gBAAP,CAAyB,MAAzB,EAAiC,MAAM;AACtC,QAAMC,cAAc,GAAGC,QAAQ,CAACjB,gBAAT,CACtB,sCADsB,CAAvB;AAIAgB,EAAAA,cAAc,CAACf,OAAf,CAAwB,UAAWiB,MAAX,EAAoB;AAC3CA,IAAAA,MAAM,CAACH,gBAAP,CAAyB,OAAzB,EAAkCX,oBAAlC;AACA,GAFD,EALsC,CAStC;;AACAa,EAAAA,QAAQ,CAACF,gBAAT,CAA2B,OAA3B,EAAoC,UAAWV,KAAX,EAAmB;AACtD,UAAMc,gBAAgB,GAAGF,QAAQ,CAACjB,gBAAT,CACxB,sBADwB,CAAzB;AAGAmB,IAAAA,gBAAgB,CAAClB,OAAjB,CAA0B,UAAWmB,KAAX,EAAmB;AAC5C,UAAK,CAAEA,KAAK,CAACC,QAAN,CAAgBhB,KAAK,CAACE,MAAtB,CAAP,EAAwC;AACvCT,QAAAA,aAAa,CAAEsB,KAAF,CAAb;AACA;AACD,KAJD;AAKA,GATD,EAVsC,CAoBtC;;AACAH,EAAAA,QAAQ,CAACF,gBAAT,CAA2B,OAA3B,EAAoC,UAAWV,KAAX,EAAmB;AACtD,UAAMiB,aAAa,GAAGL,QAAQ,CAACjB,gBAAT,CACrB,qCADqB,CAAtB;AAGAsB,IAAAA,aAAa,CAACrB,OAAd,CAAuB,UAAWmB,KAAX,EAAmB;AACzC,UAAK,CAAEA,KAAK,CAACC,QAAN,CAAgBhB,KAAK,CAACE,MAAtB,CAAP,EAAwC;AACvCT,QAAAA,aAAa,CAAEsB,KAAF,CAAb;AACA,OAFD,MAEO,IAAKf,KAAK,CAACkB,GAAN,KAAc,QAAnB,EAA8B;AACpC,cAAMrB,MAAM,GAAGkB,KAAK,CAACI,aAAN,CAAqB,wBAArB,CAAf;AACA1B,QAAAA,aAAa,CAAEsB,KAAF,CAAb,CAFoC,CAGpC;;AACAlB,QAAAA,MAAM,EAAEuB,KAAR;AACA;AACD,KATD;AAUA,GAdD;AAeA,CApCD","sourcesContent":["// Open on click functionality.\nfunction closeSubmenus( element ) {\n\telement\n\t\t.querySelectorAll( '[aria-expanded=\"true\"]' )\n\t\t.forEach( function ( toggle ) {\n\t\t\ttoggle.setAttribute( 'aria-expanded', 'false' );\n\t\t} );\n}\n\nfunction toggleSubmenuOnClick( event ) {\n\tconst buttonToggle = event.target.closest( '[aria-expanded]' );\n\tconst isSubmenuOpen = buttonToggle.getAttribute( 'aria-expanded' );\n\n\tif ( isSubmenuOpen === 'true' ) {\n\t\tcloseSubmenus( buttonToggle.closest( '.wp-block-navigation-item' ) );\n\t} else {\n\t\t// Close all sibling submenus.\n\t\tconst parentElement = buttonToggle.closest(\n\t\t\t'.wp-block-navigation-item'\n\t\t);\n\t\tconst navigationParent = buttonToggle.closest(\n\t\t\t'.wp-block-navigation__submenu-container, .wp-block-navigation__container, .wp-block-page-list'\n\t\t);\n\t\tnavigationParent\n\t\t\t.querySelectorAll( '.wp-block-navigation-item' )\n\t\t\t.forEach( function ( child ) {\n\t\t\t\tif ( child !== parentElement ) {\n\t\t\t\t\tcloseSubmenus( child );\n\t\t\t\t}\n\t\t\t} );\n\t\t// Open submenu.\n\t\tbuttonToggle.setAttribute( 'aria-expanded', 'true' );\n\t}\n}\n\n// Necessary for some themes such as TT1 Blocks, where\n// scripts could be loaded before the body.\nwindow.addEventListener( 'load', () => {\n\tconst submenuButtons = document.querySelectorAll(\n\t\t'.wp-block-navigation-submenu__toggle'\n\t);\n\n\tsubmenuButtons.forEach( function ( button ) {\n\t\tbutton.addEventListener( 'click', toggleSubmenuOnClick );\n\t} );\n\n\t// Close on click outside.\n\tdocument.addEventListener( 'click', function ( event ) {\n\t\tconst navigationBlocks = document.querySelectorAll(\n\t\t\t'.wp-block-navigation'\n\t\t);\n\t\tnavigationBlocks.forEach( function ( block ) {\n\t\t\tif ( ! block.contains( event.target ) ) {\n\t\t\t\tcloseSubmenus( block );\n\t\t\t}\n\t\t} );\n\t} );\n\t// Close on focus outside or escape key.\n\tdocument.addEventListener( 'keyup', function ( event ) {\n\t\tconst submenuBlocks = document.querySelectorAll(\n\t\t\t'.wp-block-navigation-item.has-child'\n\t\t);\n\t\tsubmenuBlocks.forEach( function ( block ) {\n\t\t\tif ( ! block.contains( event.target ) ) {\n\t\t\t\tcloseSubmenus( block );\n\t\t\t} else if ( event.key === 'Escape' ) {\n\t\t\t\tconst toggle = block.querySelector( '[aria-expanded=\"true\"]' );\n\t\t\t\tcloseSubmenus( block );\n\t\t\t\t// Focus the submenu trigger so focus does not get trapped in the closed submenu.\n\t\t\t\ttoggle?.focus();\n\t\t\t}\n\t\t} );\n\t} );\n} );\n"]}
|
|
@@ -262,7 +262,10 @@ function NavigationLinkEdit({
|
|
|
262
262
|
const listItemRef = (0, _element.useRef)(null);
|
|
263
263
|
const isDraggingWithin = useIsDraggingWithin(listItemRef);
|
|
264
264
|
const itemLabelPlaceholder = (0, _i18n.__)('Add label…');
|
|
265
|
-
const ref = (0, _element.useRef)();
|
|
265
|
+
const ref = (0, _element.useRef)(); // Change the label using inspector causes rich text to change focus on firefox.
|
|
266
|
+
// This is a workaround to keep the focus on the label field when label filed is focused we don't render the rich text.
|
|
267
|
+
|
|
268
|
+
const [isLabelFieldFocused, setIsLabelFieldFocused] = (0, _element.useState)(false);
|
|
266
269
|
const {
|
|
267
270
|
innerBlocks,
|
|
268
271
|
isAtMaxNesting,
|
|
@@ -419,8 +422,8 @@ function NavigationLinkEdit({
|
|
|
419
422
|
|
|
420
423
|
}, {
|
|
421
424
|
allowedBlocks: ALLOWED_BLOCKS,
|
|
422
|
-
|
|
423
|
-
|
|
425
|
+
defaultBlock: DEFAULT_BLOCK,
|
|
426
|
+
directInsert: true,
|
|
424
427
|
renderAppender: false
|
|
425
428
|
});
|
|
426
429
|
|
|
@@ -458,7 +461,9 @@ function NavigationLinkEdit({
|
|
|
458
461
|
});
|
|
459
462
|
},
|
|
460
463
|
label: (0, _i18n.__)('Label'),
|
|
461
|
-
autoComplete: "off"
|
|
464
|
+
autoComplete: "off",
|
|
465
|
+
onFocus: () => setIsLabelFieldFocused(true),
|
|
466
|
+
onBlur: () => setIsLabelFieldFocused(false)
|
|
462
467
|
}), (0, _element.createElement)(_components.TextControl, {
|
|
463
468
|
__nextHasNoMarginBottom: true,
|
|
464
469
|
value: url || '',
|
|
@@ -511,7 +516,7 @@ function NavigationLinkEdit({
|
|
|
511
516
|
text: tooltipText
|
|
512
517
|
}, (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)("span", null, missingText), (0, _element.createElement)("span", {
|
|
513
518
|
className: "wp-block-navigation-link__missing_text-tooltip"
|
|
514
|
-
}, tooltipText)))) : (0, _element.createElement)(_element.Fragment, null, !isInvalid && !isDraft && (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_blockEditor.RichText, {
|
|
519
|
+
}, tooltipText)))) : (0, _element.createElement)(_element.Fragment, null, !isInvalid && !isDraft && !isLabelFieldFocused && (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_blockEditor.RichText, {
|
|
515
520
|
ref: ref,
|
|
516
521
|
identifier: "label",
|
|
517
522
|
className: "wp-block-navigation-item__label",
|
|
@@ -533,7 +538,7 @@ function NavigationLinkEdit({
|
|
|
533
538
|
}
|
|
534
539
|
}), description && (0, _element.createElement)("span", {
|
|
535
540
|
className: "wp-block-navigation-item__description"
|
|
536
|
-
}, description)), (isInvalid || isDraft) && (0, _element.createElement)("div", {
|
|
541
|
+
}, description)), (isInvalid || isDraft || isLabelFieldFocused) && (0, _element.createElement)("div", {
|
|
537
542
|
className: "wp-block-navigation-link__placeholder-text wp-block-navigation-link__label"
|
|
538
543
|
}, (0, _element.createElement)(_components.Tooltip, {
|
|
539
544
|
position: "top center",
|
|
@@ -545,7 +550,7 @@ function NavigationLinkEdit({
|
|
|
545
550
|
// Unescape is used here to "recover" the escaped characters
|
|
546
551
|
// so they display without encoding.
|
|
547
552
|
// See `updateAttributes` for more details.
|
|
548
|
-
`${(0, _htmlEntities.decodeEntities)(label)} ${placeholderText}`.trim()), (0, _element.createElement)("span", {
|
|
553
|
+
`${(0, _htmlEntities.decodeEntities)(label)} ${isInvalid || isDraft ? placeholderText : ''}`.trim()), (0, _element.createElement)("span", {
|
|
549
554
|
className: "wp-block-navigation-link__missing_text-tooltip"
|
|
550
555
|
}, tooltipText))))), isLinkOpen && (0, _element.createElement)(_linkUi.LinkUI, {
|
|
551
556
|
className: "wp-block-navigation-link__inline-link-input",
|