@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.
Files changed (260) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/avatar/edit.js +1 -0
  3. package/build/avatar/edit.js.map +1 -1
  4. package/build/block/index.js +2 -1
  5. package/build/block/index.js.map +1 -1
  6. package/build/buttons/edit.js +2 -2
  7. package/build/buttons/edit.js.map +1 -1
  8. package/build/column/edit.native.js +1 -4
  9. package/build/column/edit.native.js.map +1 -1
  10. package/build/columns/edit.js +1 -0
  11. package/build/columns/edit.js.map +1 -1
  12. package/build/comment-author-avatar/edit.js +1 -0
  13. package/build/comment-author-avatar/edit.js.map +1 -1
  14. package/build/cover/deprecated.js +4 -2
  15. package/build/cover/deprecated.js.map +1 -1
  16. package/build/embed/embed-placeholder.native.js +37 -13
  17. package/build/embed/embed-placeholder.native.js.map +1 -1
  18. package/build/file/index.js +1 -2
  19. package/build/file/index.js.map +1 -1
  20. package/build/file/inspector.js +1 -0
  21. package/build/file/inspector.js.map +1 -1
  22. package/build/file/view-interactivity.js +23 -0
  23. package/build/file/view-interactivity.js.map +1 -0
  24. package/build/file/view.js +1 -15
  25. package/build/file/view.js.map +1 -1
  26. package/build/footnotes/edit.js +20 -1
  27. package/build/footnotes/edit.js.map +1 -1
  28. package/build/footnotes/format.js +19 -16
  29. package/build/footnotes/format.js.map +1 -1
  30. package/build/footnotes/index.js +0 -1
  31. package/build/footnotes/index.js.map +1 -1
  32. package/build/gallery/edit.js +1 -1
  33. package/build/gallery/edit.js.map +1 -1
  34. package/build/latest-comments/edit.js +1 -0
  35. package/build/latest-comments/edit.js.map +1 -1
  36. package/build/latest-posts/edit.js +2 -0
  37. package/build/latest-posts/edit.js.map +1 -1
  38. package/build/list/edit.js +4 -4
  39. package/build/list/edit.js.map +1 -1
  40. package/build/media-text/media-container.native.js +2 -1
  41. package/build/media-text/media-container.native.js.map +1 -1
  42. package/build/missing/edit.native.js +7 -5
  43. package/build/missing/edit.native.js.map +1 -1
  44. package/build/navigation/constants.js +10 -4
  45. package/build/navigation/constants.js.map +1 -1
  46. package/build/navigation/edit/index.js +16 -2
  47. package/build/navigation/edit/index.js.map +1 -1
  48. package/build/navigation/edit/inner-blocks.js +2 -2
  49. package/build/navigation/edit/inner-blocks.js.map +1 -1
  50. package/build/navigation/edit/unsaved-inner-blocks.js +2 -2
  51. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  52. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -15
  53. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  54. package/build/navigation/index.js +2 -3
  55. package/build/navigation/index.js.map +1 -1
  56. package/build/navigation/use-navigation-menu.js +33 -45
  57. package/build/navigation/use-navigation-menu.js.map +1 -1
  58. package/build/navigation/view-interactivity.js +185 -0
  59. package/build/navigation/view-interactivity.js.map +1 -0
  60. package/build/navigation/view-modal.js +64 -0
  61. package/build/navigation/view-modal.js.map +1 -0
  62. package/build/navigation/view.js +50 -174
  63. package/build/navigation/view.js.map +1 -1
  64. package/build/navigation-link/edit.js +12 -7
  65. package/build/navigation-link/edit.js.map +1 -1
  66. package/build/navigation-submenu/edit.js +2 -2
  67. package/build/navigation-submenu/edit.js.map +1 -1
  68. package/build/query-pagination/edit.js +1 -1
  69. package/build/query-pagination/edit.js.map +1 -1
  70. package/build/query-title/edit.js +43 -1
  71. package/build/query-title/edit.js.map +1 -1
  72. package/build/quote/transforms.js +8 -0
  73. package/build/quote/transforms.js.map +1 -1
  74. package/build/rss/edit.js +3 -0
  75. package/build/rss/edit.js.map +1 -1
  76. package/build/search/edit.js +4 -3
  77. package/build/search/edit.js.map +1 -1
  78. package/build/search/index.js +1 -0
  79. package/build/search/index.js.map +1 -1
  80. package/build/site-logo/edit.js +1 -0
  81. package/build/site-logo/edit.js.map +1 -1
  82. package/build/tag-cloud/edit.js +1 -0
  83. package/build/tag-cloud/edit.js.map +1 -1
  84. package/build/template-part/edit/index.js +1 -1
  85. package/build/template-part/edit/index.js.map +1 -1
  86. package/build/text-columns/edit.js +1 -0
  87. package/build/text-columns/edit.js.map +1 -1
  88. package/build-module/avatar/edit.js +1 -0
  89. package/build-module/avatar/edit.js.map +1 -1
  90. package/build-module/block/index.js +2 -1
  91. package/build-module/block/index.js.map +1 -1
  92. package/build-module/buttons/edit.js +2 -2
  93. package/build-module/buttons/edit.js.map +1 -1
  94. package/build-module/column/edit.native.js +1 -4
  95. package/build-module/column/edit.native.js.map +1 -1
  96. package/build-module/columns/edit.js +1 -0
  97. package/build-module/columns/edit.js.map +1 -1
  98. package/build-module/comment-author-avatar/edit.js +1 -0
  99. package/build-module/comment-author-avatar/edit.js.map +1 -1
  100. package/build-module/cover/deprecated.js +4 -2
  101. package/build-module/cover/deprecated.js.map +1 -1
  102. package/build-module/embed/embed-placeholder.native.js +37 -14
  103. package/build-module/embed/embed-placeholder.native.js.map +1 -1
  104. package/build-module/file/index.js +1 -2
  105. package/build-module/file/index.js.map +1 -1
  106. package/build-module/file/inspector.js +1 -0
  107. package/build-module/file/inspector.js.map +1 -1
  108. package/build-module/file/view-interactivity.js +19 -0
  109. package/build-module/file/view-interactivity.js.map +1 -0
  110. package/build-module/file/view.js +2 -15
  111. package/build-module/file/view.js.map +1 -1
  112. package/build-module/footnotes/edit.js +18 -2
  113. package/build-module/footnotes/edit.js.map +1 -1
  114. package/build-module/footnotes/format.js +19 -16
  115. package/build-module/footnotes/format.js.map +1 -1
  116. package/build-module/footnotes/index.js +0 -1
  117. package/build-module/footnotes/index.js.map +1 -1
  118. package/build-module/gallery/edit.js +1 -1
  119. package/build-module/gallery/edit.js.map +1 -1
  120. package/build-module/latest-comments/edit.js +1 -0
  121. package/build-module/latest-comments/edit.js.map +1 -1
  122. package/build-module/latest-posts/edit.js +2 -0
  123. package/build-module/latest-posts/edit.js.map +1 -1
  124. package/build-module/list/edit.js +4 -4
  125. package/build-module/list/edit.js.map +1 -1
  126. package/build-module/media-text/media-container.native.js +2 -1
  127. package/build-module/media-text/media-container.native.js.map +1 -1
  128. package/build-module/missing/edit.native.js +8 -6
  129. package/build-module/missing/edit.native.js.map +1 -1
  130. package/build-module/navigation/constants.js +8 -3
  131. package/build-module/navigation/constants.js.map +1 -1
  132. package/build-module/navigation/edit/index.js +17 -3
  133. package/build-module/navigation/edit/index.js.map +1 -1
  134. package/build-module/navigation/edit/inner-blocks.js +2 -2
  135. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  136. package/build-module/navigation/edit/unsaved-inner-blocks.js +2 -2
  137. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  138. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -14
  139. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  140. package/build-module/navigation/index.js +2 -3
  141. package/build-module/navigation/index.js.map +1 -1
  142. package/build-module/navigation/use-navigation-menu.js +35 -47
  143. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  144. package/build-module/navigation/view-interactivity.js +182 -0
  145. package/build-module/navigation/view-interactivity.js.map +1 -0
  146. package/build-module/navigation/view-modal.js +58 -0
  147. package/build-module/navigation/view-modal.js.map +1 -0
  148. package/build-module/navigation/view.js +50 -173
  149. package/build-module/navigation/view.js.map +1 -1
  150. package/build-module/navigation-link/edit.js +12 -7
  151. package/build-module/navigation-link/edit.js.map +1 -1
  152. package/build-module/navigation-submenu/edit.js +2 -2
  153. package/build-module/navigation-submenu/edit.js.map +1 -1
  154. package/build-module/query-pagination/edit.js +1 -1
  155. package/build-module/query-pagination/edit.js.map +1 -1
  156. package/build-module/query-title/edit.js +44 -3
  157. package/build-module/query-title/edit.js.map +1 -1
  158. package/build-module/quote/transforms.js +8 -0
  159. package/build-module/quote/transforms.js.map +1 -1
  160. package/build-module/rss/edit.js +3 -0
  161. package/build-module/rss/edit.js.map +1 -1
  162. package/build-module/search/edit.js +4 -3
  163. package/build-module/search/edit.js.map +1 -1
  164. package/build-module/search/index.js +1 -0
  165. package/build-module/search/index.js.map +1 -1
  166. package/build-module/site-logo/edit.js +1 -0
  167. package/build-module/site-logo/edit.js.map +1 -1
  168. package/build-module/tag-cloud/edit.js +1 -0
  169. package/build-module/tag-cloud/edit.js.map +1 -1
  170. package/build-module/template-part/edit/index.js +1 -1
  171. package/build-module/template-part/edit/index.js.map +1 -1
  172. package/build-module/text-columns/edit.js +1 -0
  173. package/build-module/text-columns/edit.js.map +1 -1
  174. package/build-style/details/style-rtl.css +4 -2
  175. package/build-style/details/style.css +4 -2
  176. package/build-style/footnotes/style-rtl.css +4 -3
  177. package/build-style/footnotes/style.css +4 -3
  178. package/build-style/navigation/style-rtl.css +14 -2
  179. package/build-style/navigation/style.css +14 -2
  180. package/build-style/query-pagination/style-rtl.css +4 -2
  181. package/build-style/query-pagination/style.css +4 -2
  182. package/build-style/style-rtl.css +26 -9
  183. package/build-style/style.css +26 -9
  184. package/package.json +33 -32
  185. package/src/audio/test/__snapshots__/edit.native.js.snap +58 -33
  186. package/src/avatar/edit.js +1 -0
  187. package/src/block/block.json +2 -1
  188. package/src/block/editor.native.scss +2 -2
  189. package/src/buttons/edit.js +2 -2
  190. package/src/column/edit.native.js +4 -10
  191. package/src/column/editor.native.scss +0 -4
  192. package/src/columns/edit.js +1 -0
  193. package/src/comment-author-avatar/edit.js +1 -0
  194. package/src/comment-template/index.php +5 -2
  195. package/src/cover/deprecated.js +2 -0
  196. package/src/embed/embed-placeholder.native.js +80 -47
  197. package/src/embed/styles.native.scss +54 -18
  198. package/src/embed/test/index.native.js +5 -5
  199. package/src/file/block.json +1 -2
  200. package/src/file/index.php +19 -1
  201. package/src/file/inspector.js +1 -0
  202. package/src/file/test/__snapshots__/edit.native.js.snap +58 -33
  203. package/src/file/view-interactivity.js +18 -0
  204. package/src/file/view.js +5 -14
  205. package/src/footnotes/block.json +0 -1
  206. package/src/footnotes/edit.js +21 -2
  207. package/src/footnotes/format.js +22 -20
  208. package/src/footnotes/style.scss +6 -3
  209. package/src/gallery/edit.js +1 -1
  210. package/src/gallery/test/index.native.js +17 -16
  211. package/src/home-link/index.php +15 -2
  212. package/src/image/index.php +47 -8
  213. package/src/image/test/edit.native.js +1 -1
  214. package/src/latest-comments/edit.js +1 -0
  215. package/src/latest-posts/edit.js +2 -0
  216. package/src/list/edit.js +6 -4
  217. package/src/list/test/edit.native.js +129 -33
  218. package/src/media-text/media-container.native.js +1 -0
  219. package/src/missing/edit.native.js +12 -10
  220. package/src/missing/style.native.scss +19 -12
  221. package/src/missing/test/__snapshots__/edit.native.js.snap +21 -13
  222. package/src/navigation/block.json +2 -3
  223. package/src/navigation/constants.js +12 -6
  224. package/src/navigation/edit/index.js +29 -1
  225. package/src/navigation/edit/inner-blocks.js +2 -2
  226. package/src/navigation/edit/unsaved-inner-blocks.js +2 -2
  227. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +17 -21
  228. package/src/navigation/index.php +24 -6
  229. package/src/navigation/style.scss +27 -8
  230. package/src/navigation/use-navigation-menu.js +39 -63
  231. package/src/navigation/view-interactivity.js +196 -0
  232. package/src/navigation/view-modal.js +78 -0
  233. package/src/navigation/view.js +67 -189
  234. package/src/navigation-link/edit.js +61 -47
  235. package/src/navigation-submenu/edit.js +2 -2
  236. package/src/paragraph/test/__snapshots__/edit.native.js.snap +1 -0
  237. package/src/paragraph/test/edit.native.js +26 -0
  238. package/src/post-template/index.php +4 -2
  239. package/src/post-title/index.php +6 -3
  240. package/src/preformatted/test/__snapshots__/edit.native.js.snap +2 -0
  241. package/src/query-pagination/edit.js +17 -14
  242. package/src/query-title/edit.js +48 -6
  243. package/src/quote/test/__snapshots__/transforms.native.js.snap +10 -0
  244. package/src/quote/test/transforms.native.js +5 -1
  245. package/src/quote/transforms.js +13 -0
  246. package/src/rss/edit.js +3 -0
  247. package/src/search/block.json +1 -0
  248. package/src/search/edit.js +4 -3
  249. package/src/search/index.php +22 -4
  250. package/src/search/test/__snapshots__/edit.native.js.snap +7 -0
  251. package/src/site-logo/edit.js +1 -0
  252. package/src/tag-cloud/edit.js +1 -0
  253. package/src/template-part/edit/index.js +1 -1
  254. package/src/template-part/index.php +9 -15
  255. package/src/text-columns/edit.js +1 -0
  256. package/build/gallery/shared-icon.native.js +0 -38
  257. package/build/gallery/shared-icon.native.js.map +0 -1
  258. package/build-module/gallery/shared-icon.native.js +0 -24
  259. package/build-module/gallery/shared-icon.native.js.map +0 -1
  260. 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"]}
@@ -1,185 +1,61 @@
1
1
  "use strict";
2
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;
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
- if (context.core.navigation.type === 'overlay') {
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
- 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;
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
- if (selectors.core.navigation.isMenuOpen(store)) {
71
- ref.querySelector('.wp-block-navigation-item > *:first-child').focus();
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
- 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
- }
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
- __experimentalDefaultBlock: DEFAULT_BLOCK,
423
- __experimentalDirectInsert: true,
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",