@wordpress/block-library 8.13.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 (549) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/archives/index.js +5 -1
  3. package/build/archives/index.js.map +1 -1
  4. package/build/audio/index.js +5 -1
  5. package/build/audio/index.js.map +1 -1
  6. package/build/avatar/edit.js +1 -0
  7. package/build/avatar/edit.js.map +1 -1
  8. package/build/avatar/index.js +1 -1
  9. package/build/block/edit.js +1 -1
  10. package/build/block/edit.js.map +1 -1
  11. package/build/block/edit.native.js +6 -9
  12. package/build/block/edit.native.js.map +1 -1
  13. package/build/block/index.js +2 -1
  14. package/build/block/index.js.map +1 -1
  15. package/build/buttons/edit.js +7 -3
  16. package/build/buttons/edit.js.map +1 -1
  17. package/build/categories/index.js +5 -1
  18. package/build/categories/index.js.map +1 -1
  19. package/build/code/index.js +5 -1
  20. package/build/code/index.js.map +1 -1
  21. package/build/column/edit.native.js +1 -4
  22. package/build/column/edit.native.js.map +1 -1
  23. package/build/column/index.js +1 -0
  24. package/build/column/index.js.map +1 -1
  25. package/build/columns/edit.js +1 -0
  26. package/build/columns/edit.js.map +1 -1
  27. package/build/comment-author-avatar/edit.js +1 -0
  28. package/build/comment-author-avatar/edit.js.map +1 -1
  29. package/build/comments/index.js +1 -0
  30. package/build/comments/index.js.map +1 -1
  31. package/build/cover/deprecated.js +4 -2
  32. package/build/cover/deprecated.js.map +1 -1
  33. package/build/cover/edit/inspector-controls.js +2 -1
  34. package/build/cover/edit/inspector-controls.js.map +1 -1
  35. package/build/cover/index.js +1 -0
  36. package/build/cover/index.js.map +1 -1
  37. package/build/details/index.js +5 -1
  38. package/build/details/index.js.map +1 -1
  39. package/build/embed/embed-placeholder.native.js +37 -13
  40. package/build/embed/embed-placeholder.native.js.map +1 -1
  41. package/build/embed/util.js +9 -8
  42. package/build/embed/util.js.map +1 -1
  43. package/build/file/inspector.js +1 -0
  44. package/build/file/inspector.js.map +1 -1
  45. package/build/file/{interactivity.js → view-interactivity.js} +6 -2
  46. package/build/file/view-interactivity.js.map +1 -0
  47. package/build/footnotes/edit.js +20 -1
  48. package/build/footnotes/edit.js.map +1 -1
  49. package/build/footnotes/format.js +19 -16
  50. package/build/footnotes/format.js.map +1 -1
  51. package/build/footnotes/index.js +0 -1
  52. package/build/footnotes/index.js.map +1 -1
  53. package/build/gallery/edit.js +1 -1
  54. package/build/gallery/edit.js.map +1 -1
  55. package/build/gallery/index.js +3 -1
  56. package/build/gallery/index.js.map +1 -1
  57. package/build/group/index.js +1 -0
  58. package/build/group/index.js.map +1 -1
  59. package/build/heading/index.js +5 -1
  60. package/build/heading/index.js.map +1 -1
  61. package/build/heading/transforms.js +5 -1
  62. package/build/heading/transforms.js.map +1 -1
  63. package/build/image/deprecated.js +453 -175
  64. package/build/image/deprecated.js.map +1 -1
  65. package/build/image/edit.js +0 -4
  66. package/build/image/edit.js.map +1 -1
  67. package/build/image/image.js +96 -43
  68. package/build/image/image.js.map +1 -1
  69. package/build/image/index.js +6 -0
  70. package/build/image/index.js.map +1 -1
  71. package/build/image/save.js +8 -1
  72. package/build/image/save.js.map +1 -1
  73. package/build/image/utils.js +18 -0
  74. package/build/image/utils.js.map +1 -1
  75. package/build/image/{interactivity.js → view-interactivity.js} +86 -44
  76. package/build/image/view-interactivity.js.map +1 -0
  77. package/build/index.js +12 -3
  78. package/build/index.js.map +1 -1
  79. package/build/latest-comments/edit.js +1 -0
  80. package/build/latest-comments/edit.js.map +1 -1
  81. package/build/latest-posts/edit.js +2 -0
  82. package/build/latest-posts/edit.js.map +1 -1
  83. package/build/list/edit.js +4 -4
  84. package/build/list/edit.js.map +1 -1
  85. package/build/list/index.js +5 -1
  86. package/build/list/index.js.map +1 -1
  87. package/build/list-item/utils.js +6 -1
  88. package/build/list-item/utils.js.map +1 -1
  89. package/build/media-text/index.js +1 -0
  90. package/build/media-text/index.js.map +1 -1
  91. package/build/media-text/media-container.native.js +2 -1
  92. package/build/media-text/media-container.native.js.map +1 -1
  93. package/build/missing/edit.js +22 -8
  94. package/build/missing/edit.js.map +1 -1
  95. package/build/missing/edit.native.js +7 -5
  96. package/build/missing/edit.native.js.map +1 -1
  97. package/build/navigation/constants.js +10 -4
  98. package/build/navigation/constants.js.map +1 -1
  99. package/build/navigation/edit/index.js +17 -3
  100. package/build/navigation/edit/index.js.map +1 -1
  101. package/build/navigation/edit/inner-blocks.js +2 -2
  102. package/build/navigation/edit/inner-blocks.js.map +1 -1
  103. package/build/navigation/edit/menu-inspector-controls.js +0 -1
  104. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  105. package/build/navigation/edit/unsaved-inner-blocks.js +2 -2
  106. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  107. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -15
  108. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  109. package/build/navigation/use-navigation-menu.js +33 -45
  110. package/build/navigation/use-navigation-menu.js.map +1 -1
  111. package/build/navigation/view-interactivity.js +185 -0
  112. package/build/navigation/view-interactivity.js.map +1 -0
  113. package/build/navigation-link/edit.js +12 -18
  114. package/build/navigation-link/edit.js.map +1 -1
  115. package/build/navigation-link/link-ui.js +12 -2
  116. package/build/navigation-link/link-ui.js.map +1 -1
  117. package/build/navigation-submenu/edit.js +2 -2
  118. package/build/navigation-submenu/edit.js.map +1 -1
  119. package/build/page-list/convert-to-links-modal.js +3 -3
  120. package/build/page-list/convert-to-links-modal.js.map +1 -1
  121. package/build/page-list/edit.js +34 -39
  122. package/build/page-list/edit.js.map +1 -1
  123. package/build/page-list/use-convert-to-navigation-links.js +2 -15
  124. package/build/page-list/use-convert-to-navigation-links.js.map +1 -1
  125. package/build/paragraph/index.js +1 -0
  126. package/build/paragraph/index.js.map +1 -1
  127. package/build/paragraph/transforms.js +1 -0
  128. package/build/paragraph/transforms.js.map +1 -1
  129. package/build/post-comments-form/index.js +1 -0
  130. package/build/post-comments-form/index.js.map +1 -1
  131. package/build/post-navigation-link/index.js +1 -0
  132. package/build/post-navigation-link/index.js.map +1 -1
  133. package/build/post-time-to-read/index.js +5 -1
  134. package/build/post-time-to-read/index.js.map +1 -1
  135. package/build/query-pagination/edit.js +1 -1
  136. package/build/query-pagination/edit.js.map +1 -1
  137. package/build/query-pagination-numbers/index.js +1 -1
  138. package/build/query-title/edit.js +43 -1
  139. package/build/query-title/edit.js.map +1 -1
  140. package/build/quote/index.js +1 -0
  141. package/build/quote/index.js.map +1 -1
  142. package/build/quote/transforms.js +8 -0
  143. package/build/quote/transforms.js.map +1 -1
  144. package/build/rss/edit.js +3 -0
  145. package/build/rss/edit.js.map +1 -1
  146. package/build/search/edit.js +4 -3
  147. package/build/search/edit.js.map +1 -1
  148. package/build/search/index.js +1 -0
  149. package/build/search/index.js.map +1 -1
  150. package/build/site-logo/edit.js +1 -0
  151. package/build/site-logo/edit.js.map +1 -1
  152. package/build/site-logo/index.js +5 -1
  153. package/build/site-logo/index.js.map +1 -1
  154. package/build/site-tagline/icon.js +1 -1
  155. package/build/site-tagline/icon.js.map +1 -1
  156. package/build/site-tagline/index.js +5 -1
  157. package/build/site-tagline/index.js.map +1 -1
  158. package/build/site-title/index.js +5 -1
  159. package/build/site-title/index.js.map +1 -1
  160. package/build/social-links/index.js +3 -1
  161. package/build/social-links/index.js.map +1 -1
  162. package/build/table/index.js +5 -1
  163. package/build/table/index.js.map +1 -1
  164. package/build/tag-cloud/edit.js +1 -0
  165. package/build/tag-cloud/edit.js.map +1 -1
  166. package/build/template-part/edit/index.js +1 -1
  167. package/build/template-part/edit/index.js.map +1 -1
  168. package/build/term-description/index.js +1 -0
  169. package/build/term-description/index.js.map +1 -1
  170. package/build/text-columns/edit.js +1 -0
  171. package/build/text-columns/edit.js.map +1 -1
  172. package/build/verse/index.js +5 -1
  173. package/build/verse/index.js.map +1 -1
  174. package/build/video/deprecated.js +5 -1
  175. package/build/video/deprecated.js.map +1 -1
  176. package/build/video/index.js +5 -1
  177. package/build/video/index.js.map +1 -1
  178. package/build-module/archives/index.js +5 -1
  179. package/build-module/archives/index.js.map +1 -1
  180. package/build-module/audio/index.js +5 -1
  181. package/build-module/audio/index.js.map +1 -1
  182. package/build-module/avatar/edit.js +1 -0
  183. package/build-module/avatar/edit.js.map +1 -1
  184. package/build-module/avatar/index.js +1 -1
  185. package/build-module/block/edit.js +1 -1
  186. package/build-module/block/edit.js.map +1 -1
  187. package/build-module/block/edit.native.js +7 -9
  188. package/build-module/block/edit.native.js.map +1 -1
  189. package/build-module/block/index.js +2 -1
  190. package/build-module/block/index.js.map +1 -1
  191. package/build-module/buttons/edit.js +7 -3
  192. package/build-module/buttons/edit.js.map +1 -1
  193. package/build-module/categories/index.js +5 -1
  194. package/build-module/categories/index.js.map +1 -1
  195. package/build-module/code/index.js +5 -1
  196. package/build-module/code/index.js.map +1 -1
  197. package/build-module/column/edit.native.js +1 -4
  198. package/build-module/column/edit.native.js.map +1 -1
  199. package/build-module/column/index.js +1 -0
  200. package/build-module/column/index.js.map +1 -1
  201. package/build-module/columns/edit.js +1 -0
  202. package/build-module/columns/edit.js.map +1 -1
  203. package/build-module/comment-author-avatar/edit.js +1 -0
  204. package/build-module/comment-author-avatar/edit.js.map +1 -1
  205. package/build-module/comments/index.js +1 -0
  206. package/build-module/comments/index.js.map +1 -1
  207. package/build-module/cover/deprecated.js +4 -2
  208. package/build-module/cover/deprecated.js.map +1 -1
  209. package/build-module/cover/edit/inspector-controls.js +2 -1
  210. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  211. package/build-module/cover/index.js +1 -0
  212. package/build-module/cover/index.js.map +1 -1
  213. package/build-module/details/index.js +5 -1
  214. package/build-module/details/index.js.map +1 -1
  215. package/build-module/embed/embed-placeholder.native.js +37 -14
  216. package/build-module/embed/embed-placeholder.native.js.map +1 -1
  217. package/build-module/embed/util.js +6 -6
  218. package/build-module/embed/util.js.map +1 -1
  219. package/build-module/file/inspector.js +1 -0
  220. package/build-module/file/inspector.js.map +1 -1
  221. package/build-module/file/{interactivity.js → view-interactivity.js} +6 -2
  222. package/build-module/file/view-interactivity.js.map +1 -0
  223. package/build-module/footnotes/edit.js +18 -2
  224. package/build-module/footnotes/edit.js.map +1 -1
  225. package/build-module/footnotes/format.js +19 -16
  226. package/build-module/footnotes/format.js.map +1 -1
  227. package/build-module/footnotes/index.js +0 -1
  228. package/build-module/footnotes/index.js.map +1 -1
  229. package/build-module/gallery/edit.js +1 -1
  230. package/build-module/gallery/edit.js.map +1 -1
  231. package/build-module/gallery/index.js +3 -1
  232. package/build-module/gallery/index.js.map +1 -1
  233. package/build-module/group/index.js +1 -0
  234. package/build-module/group/index.js.map +1 -1
  235. package/build-module/heading/index.js +5 -1
  236. package/build-module/heading/index.js.map +1 -1
  237. package/build-module/heading/transforms.js +5 -1
  238. package/build-module/heading/transforms.js.map +1 -1
  239. package/build-module/image/deprecated.js +454 -176
  240. package/build-module/image/deprecated.js.map +1 -1
  241. package/build-module/image/edit.js +0 -4
  242. package/build-module/image/edit.js.map +1 -1
  243. package/build-module/image/image.js +96 -46
  244. package/build-module/image/image.js.map +1 -1
  245. package/build-module/image/index.js +6 -0
  246. package/build-module/image/index.js.map +1 -1
  247. package/build-module/image/save.js +8 -1
  248. package/build-module/image/save.js.map +1 -1
  249. package/build-module/image/utils.js +16 -0
  250. package/build-module/image/utils.js.map +1 -1
  251. package/build-module/image/{interactivity.js → view-interactivity.js} +86 -44
  252. package/build-module/image/view-interactivity.js.map +1 -0
  253. package/build-module/index.js +12 -3
  254. package/build-module/index.js.map +1 -1
  255. package/build-module/latest-comments/edit.js +1 -0
  256. package/build-module/latest-comments/edit.js.map +1 -1
  257. package/build-module/latest-posts/edit.js +2 -0
  258. package/build-module/latest-posts/edit.js.map +1 -1
  259. package/build-module/list/edit.js +4 -4
  260. package/build-module/list/edit.js.map +1 -1
  261. package/build-module/list/index.js +5 -1
  262. package/build-module/list/index.js.map +1 -1
  263. package/build-module/list-item/utils.js +6 -1
  264. package/build-module/list-item/utils.js.map +1 -1
  265. package/build-module/media-text/index.js +1 -0
  266. package/build-module/media-text/index.js.map +1 -1
  267. package/build-module/media-text/media-container.native.js +2 -1
  268. package/build-module/media-text/media-container.native.js.map +1 -1
  269. package/build-module/missing/edit.js +22 -8
  270. package/build-module/missing/edit.js.map +1 -1
  271. package/build-module/missing/edit.native.js +8 -6
  272. package/build-module/missing/edit.native.js.map +1 -1
  273. package/build-module/navigation/constants.js +8 -3
  274. package/build-module/navigation/constants.js.map +1 -1
  275. package/build-module/navigation/edit/index.js +18 -4
  276. package/build-module/navigation/edit/index.js.map +1 -1
  277. package/build-module/navigation/edit/inner-blocks.js +2 -2
  278. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  279. package/build-module/navigation/edit/menu-inspector-controls.js +0 -1
  280. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  281. package/build-module/navigation/edit/unsaved-inner-blocks.js +2 -2
  282. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  283. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -14
  284. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  285. package/build-module/navigation/use-navigation-menu.js +35 -47
  286. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  287. package/build-module/navigation/view-interactivity.js +182 -0
  288. package/build-module/navigation/view-interactivity.js.map +1 -0
  289. package/build-module/navigation-link/edit.js +13 -19
  290. package/build-module/navigation-link/edit.js.map +1 -1
  291. package/build-module/navigation-link/link-ui.js +13 -3
  292. package/build-module/navigation-link/link-ui.js.map +1 -1
  293. package/build-module/navigation-submenu/edit.js +2 -2
  294. package/build-module/navigation-submenu/edit.js.map +1 -1
  295. package/build-module/page-list/convert-to-links-modal.js +3 -3
  296. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  297. package/build-module/page-list/edit.js +34 -39
  298. package/build-module/page-list/edit.js.map +1 -1
  299. package/build-module/page-list/use-convert-to-navigation-links.js +3 -16
  300. package/build-module/page-list/use-convert-to-navigation-links.js.map +1 -1
  301. package/build-module/paragraph/index.js +1 -0
  302. package/build-module/paragraph/index.js.map +1 -1
  303. package/build-module/paragraph/transforms.js +1 -0
  304. package/build-module/paragraph/transforms.js.map +1 -1
  305. package/build-module/post-comments-form/index.js +1 -0
  306. package/build-module/post-comments-form/index.js.map +1 -1
  307. package/build-module/post-navigation-link/index.js +1 -0
  308. package/build-module/post-navigation-link/index.js.map +1 -1
  309. package/build-module/post-time-to-read/index.js +5 -1
  310. package/build-module/post-time-to-read/index.js.map +1 -1
  311. package/build-module/query-pagination/edit.js +1 -1
  312. package/build-module/query-pagination/edit.js.map +1 -1
  313. package/build-module/query-pagination-numbers/index.js +1 -1
  314. package/build-module/query-title/edit.js +44 -3
  315. package/build-module/query-title/edit.js.map +1 -1
  316. package/build-module/quote/index.js +1 -0
  317. package/build-module/quote/index.js.map +1 -1
  318. package/build-module/quote/transforms.js +8 -0
  319. package/build-module/quote/transforms.js.map +1 -1
  320. package/build-module/rss/edit.js +3 -0
  321. package/build-module/rss/edit.js.map +1 -1
  322. package/build-module/search/edit.js +4 -3
  323. package/build-module/search/edit.js.map +1 -1
  324. package/build-module/search/index.js +1 -0
  325. package/build-module/search/index.js.map +1 -1
  326. package/build-module/site-logo/edit.js +1 -0
  327. package/build-module/site-logo/edit.js.map +1 -1
  328. package/build-module/site-logo/index.js +5 -1
  329. package/build-module/site-logo/index.js.map +1 -1
  330. package/build-module/site-tagline/icon.js +1 -1
  331. package/build-module/site-tagline/icon.js.map +1 -1
  332. package/build-module/site-tagline/index.js +5 -1
  333. package/build-module/site-tagline/index.js.map +1 -1
  334. package/build-module/site-title/index.js +5 -1
  335. package/build-module/site-title/index.js.map +1 -1
  336. package/build-module/social-links/index.js +3 -1
  337. package/build-module/social-links/index.js.map +1 -1
  338. package/build-module/table/index.js +5 -1
  339. package/build-module/table/index.js.map +1 -1
  340. package/build-module/tag-cloud/edit.js +1 -0
  341. package/build-module/tag-cloud/edit.js.map +1 -1
  342. package/build-module/template-part/edit/index.js +1 -1
  343. package/build-module/template-part/edit/index.js.map +1 -1
  344. package/build-module/term-description/index.js +1 -0
  345. package/build-module/term-description/index.js.map +1 -1
  346. package/build-module/text-columns/edit.js +1 -0
  347. package/build-module/text-columns/edit.js.map +1 -1
  348. package/build-module/verse/index.js +5 -1
  349. package/build-module/verse/index.js.map +1 -1
  350. package/build-module/video/deprecated.js +5 -1
  351. package/build-module/video/deprecated.js.map +1 -1
  352. package/build-module/video/index.js +5 -1
  353. package/build-module/video/index.js.map +1 -1
  354. package/build-style/details/style-rtl.css +4 -2
  355. package/build-style/details/style.css +4 -2
  356. package/build-style/footnotes/style-rtl.css +4 -3
  357. package/build-style/footnotes/style.css +4 -3
  358. package/build-style/image/style-rtl.css +16 -2
  359. package/build-style/image/style.css +16 -2
  360. package/build-style/navigation/style-rtl.css +14 -2
  361. package/build-style/navigation/style.css +14 -2
  362. package/build-style/query-pagination/style-rtl.css +4 -2
  363. package/build-style/query-pagination/style.css +4 -2
  364. package/build-style/style-rtl.css +42 -11
  365. package/build-style/style.css +42 -11
  366. package/package.json +33 -37
  367. package/src/archives/block.json +5 -1
  368. package/src/audio/block.json +5 -1
  369. package/src/audio/test/__snapshots__/edit.native.js.snap +58 -33
  370. package/src/avatar/block.json +1 -1
  371. package/src/avatar/edit.js +1 -0
  372. package/src/block/block.json +2 -1
  373. package/src/block/edit.js +2 -2
  374. package/src/block/edit.native.js +8 -12
  375. package/src/block/editor.native.scss +2 -2
  376. package/src/block/test/edit.native.js +4 -4
  377. package/src/buttons/edit.js +4 -4
  378. package/src/categories/block.json +5 -1
  379. package/src/code/block.json +5 -1
  380. package/src/column/block.json +1 -0
  381. package/src/column/edit.native.js +4 -10
  382. package/src/column/editor.native.scss +0 -4
  383. package/src/columns/edit.js +1 -0
  384. package/src/comment-author-avatar/edit.js +1 -0
  385. package/src/comment-template/index.php +5 -2
  386. package/src/comments/block.json +1 -0
  387. package/src/cover/block.json +1 -0
  388. package/src/cover/deprecated.js +2 -0
  389. package/src/cover/edit/inspector-controls.js +1 -0
  390. package/src/details/block.json +5 -1
  391. package/src/embed/embed-placeholder.native.js +80 -47
  392. package/src/embed/styles.native.scss +54 -18
  393. package/src/embed/test/index.native.js +5 -5
  394. package/src/embed/util.js +4 -6
  395. package/src/file/index.php +4 -3
  396. package/src/file/inspector.js +1 -0
  397. package/src/file/test/__snapshots__/edit.native.js.snap +58 -33
  398. package/src/file/{interactivity.js → view-interactivity.js} +4 -1
  399. package/src/footnotes/block.json +0 -1
  400. package/src/footnotes/edit.js +21 -2
  401. package/src/footnotes/format.js +22 -20
  402. package/src/footnotes/index.php +11 -9
  403. package/src/footnotes/style.scss +6 -3
  404. package/src/gallery/block.json +3 -1
  405. package/src/gallery/edit.js +1 -1
  406. package/src/gallery/test/index.native.js +17 -16
  407. package/src/group/block.json +1 -0
  408. package/src/heading/block.json +5 -1
  409. package/src/heading/test/index.native.js +18 -0
  410. package/src/home-link/index.php +15 -2
  411. package/src/image/block.json +6 -0
  412. package/src/image/deprecated.js +597 -320
  413. package/src/image/edit.js +0 -4
  414. package/src/image/image.js +131 -62
  415. package/src/image/index.php +47 -8
  416. package/src/image/save.js +9 -1
  417. package/src/image/style.scss +15 -2
  418. package/src/image/test/edit.native.js +1 -1
  419. package/src/image/utils.js +16 -0
  420. package/src/image/{interactivity.js → view-interactivity.js} +99 -50
  421. package/src/index.js +18 -1
  422. package/src/latest-comments/edit.js +1 -0
  423. package/src/latest-posts/edit.js +2 -0
  424. package/src/latest-posts/index.php +1 -1
  425. package/src/list/block.json +5 -1
  426. package/src/list/edit.js +6 -4
  427. package/src/list/test/edit.native.js +129 -33
  428. package/src/media-text/block.json +1 -0
  429. package/src/media-text/media-container.native.js +1 -0
  430. package/src/missing/edit.js +31 -11
  431. package/src/missing/edit.native.js +12 -10
  432. package/src/missing/style.native.scss +19 -12
  433. package/src/missing/test/__snapshots__/edit.native.js.snap +21 -13
  434. package/src/navigation/constants.js +12 -6
  435. package/src/navigation/edit/index.js +30 -3
  436. package/src/navigation/edit/inner-blocks.js +2 -2
  437. package/src/navigation/edit/menu-inspector-controls.js +0 -1
  438. package/src/navigation/edit/unsaved-inner-blocks.js +2 -2
  439. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +17 -21
  440. package/src/navigation/index.php +43 -16
  441. package/src/navigation/style.scss +27 -8
  442. package/src/navigation/use-navigation-menu.js +39 -63
  443. package/src/navigation/view-interactivity.js +196 -0
  444. package/src/navigation-link/edit.js +61 -61
  445. package/src/navigation-link/link-ui.js +14 -2
  446. package/src/navigation-submenu/edit.js +2 -2
  447. package/src/navigation-submenu/index.php +2 -12
  448. package/src/page-list/convert-to-links-modal.js +3 -3
  449. package/src/page-list/edit.js +65 -62
  450. package/src/page-list/use-convert-to-navigation-links.js +3 -20
  451. package/src/paragraph/block.json +1 -0
  452. package/src/paragraph/test/__snapshots__/edit.native.js.snap +1 -0
  453. package/src/paragraph/test/edit.native.js +26 -0
  454. package/src/post-comments-form/block.json +1 -0
  455. package/src/post-navigation-link/block.json +1 -0
  456. package/src/post-template/index.php +4 -2
  457. package/src/post-time-to-read/block.json +5 -1
  458. package/src/post-title/index.php +6 -3
  459. package/src/preformatted/test/__snapshots__/edit.native.js.snap +2 -0
  460. package/src/query-pagination/edit.js +17 -14
  461. package/src/query-pagination-numbers/block.json +1 -1
  462. package/src/query-title/edit.js +48 -6
  463. package/src/quote/block.json +1 -0
  464. package/src/quote/test/__snapshots__/transforms.native.js.snap +10 -0
  465. package/src/quote/test/transforms.native.js +5 -1
  466. package/src/quote/transforms.js +13 -0
  467. package/src/rss/edit.js +3 -0
  468. package/src/search/block.json +1 -0
  469. package/src/search/edit.js +4 -3
  470. package/src/search/index.php +22 -4
  471. package/src/search/test/__snapshots__/edit.native.js.snap +7 -0
  472. package/src/site-logo/block.json +5 -1
  473. package/src/site-logo/edit.js +1 -0
  474. package/src/site-tagline/block.json +5 -1
  475. package/src/site-tagline/icon.js +1 -1
  476. package/src/site-title/block.json +5 -1
  477. package/src/social-links/block.json +3 -1
  478. package/src/table/block.json +5 -1
  479. package/src/tag-cloud/edit.js +1 -0
  480. package/src/template-part/edit/index.js +1 -1
  481. package/src/template-part/index.php +9 -15
  482. package/src/term-description/block.json +1 -0
  483. package/src/text-columns/edit.js +1 -0
  484. package/src/verse/block.json +5 -1
  485. package/src/video/block.json +5 -1
  486. package/build/file/interactivity.js.map +0 -1
  487. package/build/gallery/shared-icon.native.js +0 -38
  488. package/build/gallery/shared-icon.native.js.map +0 -1
  489. package/build/heading/heading-level-icon.js +0 -61
  490. package/build/heading/heading-level-icon.js.map +0 -1
  491. package/build/image/interactivity.js.map +0 -1
  492. package/build/navigation/interactivity.js +0 -167
  493. package/build/navigation/interactivity.js.map +0 -1
  494. package/build/utils/interactivity/constants.js +0 -9
  495. package/build/utils/interactivity/constants.js.map +0 -1
  496. package/build/utils/interactivity/directives.js +0 -222
  497. package/build/utils/interactivity/directives.js.map +0 -1
  498. package/build/utils/interactivity/hooks.js +0 -159
  499. package/build/utils/interactivity/hooks.js.map +0 -1
  500. package/build/utils/interactivity/hydration.js +0 -34
  501. package/build/utils/interactivity/hydration.js.map +0 -1
  502. package/build/utils/interactivity/index.js +0 -32
  503. package/build/utils/interactivity/index.js.map +0 -1
  504. package/build/utils/interactivity/portals.js +0 -108
  505. package/build/utils/interactivity/portals.js.map +0 -1
  506. package/build/utils/interactivity/store.js +0 -66
  507. package/build/utils/interactivity/store.js.map +0 -1
  508. package/build/utils/interactivity/utils.js +0 -87
  509. package/build/utils/interactivity/utils.js.map +0 -1
  510. package/build/utils/interactivity/vdom.js +0 -119
  511. package/build/utils/interactivity/vdom.js.map +0 -1
  512. package/build-module/file/interactivity.js.map +0 -1
  513. package/build-module/gallery/shared-icon.native.js +0 -24
  514. package/build-module/gallery/shared-icon.native.js.map +0 -1
  515. package/build-module/heading/heading-level-icon.js +0 -53
  516. package/build-module/heading/heading-level-icon.js.map +0 -1
  517. package/build-module/image/interactivity.js.map +0 -1
  518. package/build-module/navigation/interactivity.js +0 -164
  519. package/build-module/navigation/interactivity.js.map +0 -1
  520. package/build-module/utils/interactivity/constants.js +0 -2
  521. package/build-module/utils/interactivity/constants.js.map +0 -1
  522. package/build-module/utils/interactivity/directives.js +0 -209
  523. package/build-module/utils/interactivity/directives.js.map +0 -1
  524. package/build-module/utils/interactivity/hooks.js +0 -145
  525. package/build-module/utils/interactivity/hooks.js.map +0 -1
  526. package/build-module/utils/interactivity/hydration.js +0 -21
  527. package/build-module/utils/interactivity/hydration.js.map +0 -1
  528. package/build-module/utils/interactivity/index.js +0 -15
  529. package/build-module/utils/interactivity/index.js.map +0 -1
  530. package/build-module/utils/interactivity/portals.js +0 -100
  531. package/build-module/utils/interactivity/portals.js.map +0 -1
  532. package/build-module/utils/interactivity/store.js +0 -55
  533. package/build-module/utils/interactivity/store.js.map +0 -1
  534. package/build-module/utils/interactivity/utils.js +0 -75
  535. package/build-module/utils/interactivity/utils.js.map +0 -1
  536. package/build-module/utils/interactivity/vdom.js +0 -107
  537. package/build-module/utils/interactivity/vdom.js.map +0 -1
  538. package/src/gallery/shared-icon.native.js +0 -23
  539. package/src/heading/heading-level-icon.js +0 -48
  540. package/src/navigation/interactivity.js +0 -169
  541. package/src/utils/interactivity/constants.js +0 -1
  542. package/src/utils/interactivity/directives.js +0 -200
  543. package/src/utils/interactivity/hooks.js +0 -145
  544. package/src/utils/interactivity/hydration.js +0 -22
  545. package/src/utils/interactivity/index.js +0 -15
  546. package/src/utils/interactivity/portals.js +0 -98
  547. package/src/utils/interactivity/store.js +0 -45
  548. package/src/utils/interactivity/utils.js +0 -66
  549. package/src/utils/interactivity/vdom.js +0 -111
@@ -4,85 +4,61 @@
4
4
  import {
5
5
  store as coreStore,
6
6
  useResourcePermissions,
7
+ useEntityRecords,
7
8
  } from '@wordpress/core-data';
8
9
  import { useSelect } from '@wordpress/data';
9
10
 
10
11
  /**
11
12
  * Internal dependencies
12
13
  */
13
- import { SELECT_NAVIGATION_MENUS_ARGS } from './constants';
14
+ import { PRELOADED_NAVIGATION_MENUS_QUERY } from './constants';
14
15
 
15
16
  export default function useNavigationMenu( ref ) {
16
17
  const permissions = useResourcePermissions( 'navigation', ref );
17
18
 
18
- return useSelect(
19
+ const {
20
+ navigationMenu,
21
+ isNavigationMenuResolved,
22
+ isNavigationMenuMissing,
23
+ } = useSelect(
19
24
  ( select ) => {
20
- const {
21
- canCreate,
22
- canUpdate,
23
- canDelete,
24
- isResolving,
25
- hasResolved,
26
- } = permissions;
27
-
28
- const {
29
- navigationMenus,
30
- isResolvingNavigationMenus,
31
- hasResolvedNavigationMenus,
32
- } = selectNavigationMenus( select );
33
-
34
- const {
35
- navigationMenu,
36
- isNavigationMenuResolved,
37
- isNavigationMenuMissing,
38
- } = selectExistingMenu( select, ref );
39
-
40
- return {
41
- navigationMenus,
42
- isResolvingNavigationMenus,
43
- hasResolvedNavigationMenus,
44
-
45
- navigationMenu,
46
- isNavigationMenuResolved,
47
- isNavigationMenuMissing,
48
-
49
- canSwitchNavigationMenu: ref
50
- ? navigationMenus?.length > 1
51
- : navigationMenus?.length > 0,
52
-
53
- canUserCreateNavigationMenu: canCreate,
54
- isResolvingCanUserCreateNavigationMenu: isResolving,
55
- hasResolvedCanUserCreateNavigationMenu: hasResolved,
56
-
57
- canUserUpdateNavigationMenu: canUpdate,
58
- hasResolvedCanUserUpdateNavigationMenu: ref
59
- ? hasResolved
60
- : undefined,
61
-
62
- canUserDeleteNavigationMenu: canDelete,
63
- hasResolvedCanUserDeleteNavigationMenu: ref
64
- ? hasResolved
65
- : undefined,
66
- };
25
+ return selectExistingMenu( select, ref );
67
26
  },
68
- [ ref, permissions ]
27
+ [ ref ]
69
28
  );
70
- }
71
29
 
72
- function selectNavigationMenus( select ) {
73
- const { getEntityRecords, hasFinishedResolution, isResolving } =
74
- select( coreStore );
30
+ const { canCreate, canUpdate, canDelete, isResolving, hasResolved } =
31
+ permissions;
32
+
33
+ const {
34
+ records: navigationMenus,
35
+ isResolving: isResolvingNavigationMenus,
36
+ hasResolved: hasResolvedNavigationMenus,
37
+ } = useEntityRecords(
38
+ 'postType',
39
+ `wp_navigation`,
40
+ PRELOADED_NAVIGATION_MENUS_QUERY
41
+ );
42
+
43
+ const canSwitchNavigationMenu = ref
44
+ ? navigationMenus?.length > 1
45
+ : navigationMenus?.length > 0;
75
46
 
76
47
  return {
77
- navigationMenus: getEntityRecords( ...SELECT_NAVIGATION_MENUS_ARGS ),
78
- isResolvingNavigationMenus: isResolving(
79
- 'getEntityRecords',
80
- SELECT_NAVIGATION_MENUS_ARGS
81
- ),
82
- hasResolvedNavigationMenus: hasFinishedResolution(
83
- 'getEntityRecords',
84
- SELECT_NAVIGATION_MENUS_ARGS
85
- ),
48
+ navigationMenu,
49
+ isNavigationMenuResolved,
50
+ isNavigationMenuMissing,
51
+ navigationMenus,
52
+ isResolvingNavigationMenus,
53
+ hasResolvedNavigationMenus,
54
+ canSwitchNavigationMenu,
55
+ canUserCreateNavigationMenu: canCreate,
56
+ isResolvingCanUserCreateNavigationMenu: isResolving,
57
+ hasResolvedCanUserCreateNavigationMenu: hasResolved,
58
+ canUserUpdateNavigationMenu: canUpdate,
59
+ hasResolvedCanUserUpdateNavigationMenu: ref ? hasResolved : undefined,
60
+ canUserDeleteNavigationMenu: canDelete,
61
+ hasResolvedCanUserDeleteNavigationMenu: ref ? hasResolved : undefined,
86
62
  };
87
63
  }
88
64
 
@@ -0,0 +1,196 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { store as wpStore } from '@wordpress/interactivity';
5
+
6
+ const focusableSelectors = [
7
+ 'a[href]',
8
+ 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',
9
+ 'select:not([disabled]):not([aria-hidden])',
10
+ 'textarea:not([disabled]):not([aria-hidden])',
11
+ 'button:not([disabled]):not([aria-hidden])',
12
+ '[contenteditable]',
13
+ '[tabindex]:not([tabindex^="-"])',
14
+ ];
15
+
16
+ const openMenu = ( store, menuOpenedOn ) => {
17
+ const { context, ref, selectors } = store;
18
+ selectors.core.navigation.menuOpenedBy( store )[ menuOpenedOn ] = true;
19
+ context.core.navigation.previousFocus = ref;
20
+ if ( context.core.navigation.type === 'overlay' ) {
21
+ // Add a `has-modal-open` class to the <html> root.
22
+ document.documentElement.classList.add( 'has-modal-open' );
23
+ }
24
+ };
25
+
26
+ const closeMenu = ( store, menuClosedOn ) => {
27
+ const { context, selectors } = store;
28
+ selectors.core.navigation.menuOpenedBy( store )[ menuClosedOn ] = false;
29
+ // Check if the menu is still open or not.
30
+ if ( ! selectors.core.navigation.isMenuOpen( store ) ) {
31
+ if (
32
+ context.core.navigation.modal?.contains(
33
+ window.document.activeElement
34
+ )
35
+ ) {
36
+ context.core.navigation.previousFocus.focus();
37
+ }
38
+ context.core.navigation.modal = null;
39
+ context.core.navigation.previousFocus = null;
40
+ if ( context.core.navigation.type === 'overlay' ) {
41
+ document.documentElement.classList.remove( 'has-modal-open' );
42
+ }
43
+ }
44
+ };
45
+
46
+ wpStore( {
47
+ effects: {
48
+ core: {
49
+ navigation: {
50
+ initMenu: ( store ) => {
51
+ const { context, selectors, ref } = store;
52
+ if ( selectors.core.navigation.isMenuOpen( store ) ) {
53
+ const focusableElements =
54
+ ref.querySelectorAll( focusableSelectors );
55
+ context.core.navigation.modal = ref;
56
+ context.core.navigation.firstFocusableElement =
57
+ focusableElements[ 0 ];
58
+ context.core.navigation.lastFocusableElement =
59
+ focusableElements[ focusableElements.length - 1 ];
60
+ }
61
+ },
62
+ focusFirstElement: ( store ) => {
63
+ const { selectors, ref } = store;
64
+ if ( selectors.core.navigation.isMenuOpen( store ) ) {
65
+ ref.querySelector(
66
+ '.wp-block-navigation-item > *:first-child'
67
+ ).focus();
68
+ }
69
+ },
70
+ },
71
+ },
72
+ },
73
+ selectors: {
74
+ core: {
75
+ navigation: {
76
+ roleAttribute: ( store ) => {
77
+ const { context, selectors } = store;
78
+ return context.core.navigation.type === 'overlay' &&
79
+ selectors.core.navigation.isMenuOpen( store )
80
+ ? 'dialog'
81
+ : '';
82
+ },
83
+ isMenuOpen: ( { context } ) =>
84
+ // The menu is opened if either `click`, `hover` or `focus` is true.
85
+ Object.values(
86
+ context.core.navigation[
87
+ context.core.navigation.type === 'overlay'
88
+ ? 'overlayOpenedBy'
89
+ : 'submenuOpenedBy'
90
+ ]
91
+ ).filter( Boolean ).length > 0,
92
+ menuOpenedBy: ( { context } ) =>
93
+ context.core.navigation[
94
+ context.core.navigation.type === 'overlay'
95
+ ? 'overlayOpenedBy'
96
+ : 'submenuOpenedBy'
97
+ ],
98
+ },
99
+ },
100
+ },
101
+ actions: {
102
+ core: {
103
+ navigation: {
104
+ openMenuOnHover( store ) {
105
+ const { navigation } = store.context.core;
106
+ if (
107
+ navigation.type === 'submenu' &&
108
+ // Only open on hover if the overlay is closed.
109
+ Object.values(
110
+ navigation.overlayOpenedBy || {}
111
+ ).filter( Boolean ).length === 0
112
+ )
113
+ openMenu( store, 'hover' );
114
+ },
115
+ closeMenuOnHover( store ) {
116
+ closeMenu( store, 'hover' );
117
+ },
118
+ openMenuOnClick( store ) {
119
+ openMenu( store, 'click' );
120
+ },
121
+ closeMenuOnClick( store ) {
122
+ closeMenu( store, 'click' );
123
+ closeMenu( store, 'focus' );
124
+ },
125
+ openMenuOnFocus( store ) {
126
+ openMenu( store, 'focus' );
127
+ },
128
+ toggleMenuOnClick: ( store ) => {
129
+ const { selectors } = store;
130
+ const menuOpenedBy =
131
+ selectors.core.navigation.menuOpenedBy( store );
132
+ if ( menuOpenedBy.click || menuOpenedBy.focus ) {
133
+ closeMenu( store, 'click' );
134
+ closeMenu( store, 'focus' );
135
+ } else {
136
+ openMenu( store, 'click' );
137
+ }
138
+ },
139
+ handleMenuKeydown: ( store ) => {
140
+ const { context, selectors, event } = store;
141
+ if (
142
+ selectors.core.navigation.menuOpenedBy( store ).click
143
+ ) {
144
+ // If Escape close the menu.
145
+ if ( event?.key === 'Escape' ) {
146
+ closeMenu( store, 'click' );
147
+ closeMenu( store, 'focus' );
148
+ return;
149
+ }
150
+
151
+ // Trap focus if it is an overlay (main menu).
152
+ if (
153
+ context.core.navigation.type === 'overlay' &&
154
+ event.key === 'Tab'
155
+ ) {
156
+ // If shift + tab it change the direction.
157
+ if (
158
+ event.shiftKey &&
159
+ window.document.activeElement ===
160
+ context.core.navigation
161
+ .firstFocusableElement
162
+ ) {
163
+ event.preventDefault();
164
+ context.core.navigation.lastFocusableElement.focus();
165
+ } else if (
166
+ ! event.shiftKey &&
167
+ window.document.activeElement ===
168
+ context.core.navigation.lastFocusableElement
169
+ ) {
170
+ event.preventDefault();
171
+ context.core.navigation.firstFocusableElement.focus();
172
+ }
173
+ }
174
+ }
175
+ },
176
+ handleMenuFocusout: ( store ) => {
177
+ const { context, event } = store;
178
+ // If focus is outside modal, and in the document, close menu
179
+ // event.target === The element losing focus
180
+ // event.relatedTarget === The element receiving focus (if any)
181
+ // When focusout is outsite the document,
182
+ // `window.document.activeElement` doesn't change.
183
+ if (
184
+ ! context.core.navigation.modal?.contains(
185
+ event.relatedTarget
186
+ ) &&
187
+ event.target !== window.document.activeElement
188
+ ) {
189
+ closeMenu( store, 'click' );
190
+ closeMenu( store, 'focus' );
191
+ }
192
+ },
193
+ },
194
+ },
195
+ },
196
+ } );
@@ -35,10 +35,7 @@ import {
35
35
  } from '@wordpress/dom';
36
36
  import { decodeEntities } from '@wordpress/html-entities';
37
37
  import { link as linkIcon, addSubmenu } from '@wordpress/icons';
38
- import {
39
- store as coreStore,
40
- useResourcePermissions,
41
- } from '@wordpress/core-data';
38
+ import { store as coreStore } from '@wordpress/core-data';
42
39
  import { useMergeRefs } from '@wordpress/compose';
43
40
 
44
41
  /**
@@ -184,8 +181,9 @@ export default function NavigationLinkEdit( {
184
181
  const itemLabelPlaceholder = __( 'Add label…' );
185
182
  const ref = useRef();
186
183
 
187
- const pagesPermissions = useResourcePermissions( 'pages' );
188
- const postsPermissions = useResourcePermissions( 'posts' );
184
+ // Change the label using inspector causes rich text to change focus on firefox.
185
+ // This is a workaround to keep the focus on the label field when label filed is focused we don't render the rich text.
186
+ const [ isLabelFieldFocused, setIsLabelFieldFocused ] = useState( false );
189
187
 
190
188
  const {
191
189
  innerBlocks,
@@ -322,13 +320,6 @@ export default function NavigationLinkEdit( {
322
320
  setIsLinkOpen( false );
323
321
  }
324
322
 
325
- let userCanCreate = false;
326
- if ( ! type || type === 'page' ) {
327
- userCanCreate = pagesPermissions.canCreate;
328
- } else if ( type === 'post' ) {
329
- userCanCreate = postsPermissions.canCreate;
330
- }
331
-
332
323
  const {
333
324
  textColor,
334
325
  customTextColor,
@@ -381,8 +372,8 @@ export default function NavigationLinkEdit( {
381
372
  },
382
373
  {
383
374
  allowedBlocks: ALLOWED_BLOCKS,
384
- __experimentalDefaultBlock: DEFAULT_BLOCK,
385
- __experimentalDirectInsert: true,
375
+ defaultBlock: DEFAULT_BLOCK,
376
+ directInsert: true,
386
377
  renderAppender: false,
387
378
  }
388
379
  );
@@ -437,6 +428,8 @@ export default function NavigationLinkEdit( {
437
428
  } }
438
429
  label={ __( 'Label' ) }
439
430
  autoComplete="off"
431
+ onFocus={ () => setIsLabelFieldFocused( true ) }
432
+ onBlur={ () => setIsLabelFieldFocused( false ) }
440
433
  />
441
434
  <TextControl
442
435
  __nextHasNoMarginBottom
@@ -505,52 +498,56 @@ export default function NavigationLinkEdit( {
505
498
  </div>
506
499
  ) : (
507
500
  <>
508
- { ! isInvalid && ! isDraft && (
509
- <>
510
- <RichText
511
- ref={ ref }
512
- identifier="label"
513
- className="wp-block-navigation-item__label"
514
- value={ label }
515
- onChange={ ( labelValue ) =>
516
- setAttributes( {
517
- label: labelValue,
518
- } )
519
- }
520
- onMerge={ mergeBlocks }
521
- onReplace={ onReplace }
522
- __unstableOnSplitAtEnd={ () =>
523
- insertBlocksAfter(
524
- createBlock(
525
- 'core/navigation-link'
501
+ { ! isInvalid &&
502
+ ! isDraft &&
503
+ ! isLabelFieldFocused && (
504
+ <>
505
+ <RichText
506
+ ref={ ref }
507
+ identifier="label"
508
+ className="wp-block-navigation-item__label"
509
+ value={ label }
510
+ onChange={ ( labelValue ) =>
511
+ setAttributes( {
512
+ label: labelValue,
513
+ } )
514
+ }
515
+ onMerge={ mergeBlocks }
516
+ onReplace={ onReplace }
517
+ __unstableOnSplitAtEnd={ () =>
518
+ insertBlocksAfter(
519
+ createBlock(
520
+ 'core/navigation-link'
521
+ )
526
522
  )
527
- )
528
- }
529
- aria-label={ __(
530
- 'Navigation link text'
531
- ) }
532
- placeholder={ itemLabelPlaceholder }
533
- withoutInteractiveFormatting
534
- allowedFormats={ [
535
- 'core/bold',
536
- 'core/italic',
537
- 'core/image',
538
- 'core/strikethrough',
539
- ] }
540
- onClick={ () => {
541
- if ( ! url ) {
542
- setIsLinkOpen( true );
543
523
  }
544
- } }
545
- />
546
- { description && (
547
- <span className="wp-block-navigation-item__description">
548
- { description }
549
- </span>
550
- ) }
551
- </>
552
- ) }
553
- { ( isInvalid || isDraft ) && (
524
+ aria-label={ __(
525
+ 'Navigation link text'
526
+ ) }
527
+ placeholder={ itemLabelPlaceholder }
528
+ withoutInteractiveFormatting
529
+ allowedFormats={ [
530
+ 'core/bold',
531
+ 'core/italic',
532
+ 'core/image',
533
+ 'core/strikethrough',
534
+ ] }
535
+ onClick={ () => {
536
+ if ( ! url ) {
537
+ setIsLinkOpen( true );
538
+ }
539
+ } }
540
+ />
541
+ { description && (
542
+ <span className="wp-block-navigation-item__description">
543
+ { description }
544
+ </span>
545
+ ) }
546
+ </>
547
+ ) }
548
+ { ( isInvalid ||
549
+ isDraft ||
550
+ isLabelFieldFocused ) && (
554
551
  <div className="wp-block-navigation-link__placeholder-text wp-block-navigation-link__label">
555
552
  <Tooltip
556
553
  position="top center"
@@ -570,7 +567,11 @@ export default function NavigationLinkEdit( {
570
567
  // See `updateAttributes` for more details.
571
568
  `${ decodeEntities(
572
569
  label
573
- ) } ${ placeholderText }`.trim()
570
+ ) } ${
571
+ isInvalid || isDraft
572
+ ? placeholderText
573
+ : ''
574
+ }`.trim()
574
575
  }
575
576
  </span>
576
577
  <span className="wp-block-navigation-link__missing_text-tooltip">
@@ -589,7 +590,6 @@ export default function NavigationLinkEdit( {
589
590
  link={ attributes }
590
591
  onClose={ () => setIsLinkOpen( false ) }
591
592
  anchor={ popoverAnchor }
592
- hasCreateSuggestion={ userCanCreate }
593
593
  onRemove={ removeLink }
594
594
  onChange={ ( updatedValue ) => {
595
595
  updateAttributes(
@@ -10,7 +10,10 @@ import {
10
10
  store as blockEditorStore,
11
11
  } from '@wordpress/block-editor';
12
12
  import { createInterpolateElement, useMemo } from '@wordpress/element';
13
- import { store as coreStore } from '@wordpress/core-data';
13
+ import {
14
+ store as coreStore,
15
+ useResourcePermissions,
16
+ } from '@wordpress/core-data';
14
17
  import { decodeEntities } from '@wordpress/html-entities';
15
18
  import { switchToBlockType } from '@wordpress/blocks';
16
19
  import { useSelect, useDispatch } from '@wordpress/data';
@@ -125,6 +128,8 @@ function LinkControlTransforms( { clientId } ) {
125
128
 
126
129
  export function LinkUI( props ) {
127
130
  const { saveEntityRecord } = useDispatch( coreStore );
131
+ const pagesPermissions = useResourcePermissions( 'pages' );
132
+ const postsPermissions = useResourcePermissions( 'posts' );
128
133
 
129
134
  async function handleCreate( pageTitle ) {
130
135
  const postType = props.link.type || 'page';
@@ -155,6 +160,13 @@ export function LinkUI( props ) {
155
160
 
156
161
  const { label, url, opensInNewTab, type, kind } = props.link;
157
162
 
163
+ let userCanCreate = false;
164
+ if ( ! type || type === 'page' ) {
165
+ userCanCreate = pagesPermissions.canCreate;
166
+ } else if ( type === 'post' ) {
167
+ userCanCreate = postsPermissions.canCreate;
168
+ }
169
+
158
170
  // Memoize link value to avoid overriding the LinkControl's internal state.
159
171
  // This is a temporary fix. See https://github.com/WordPress/gutenberg/issues/50976#issuecomment-1568226407.
160
172
  const link = useMemo(
@@ -179,7 +191,7 @@ export function LinkUI( props ) {
179
191
  className={ props.className }
180
192
  value={ link }
181
193
  showInitialSuggestions={ true }
182
- withCreateSuggestion={ props.hasCreateSuggestion }
194
+ withCreateSuggestion={ userCanCreate }
183
195
  createSuggestion={ handleCreate }
184
196
  createSuggestionButtonText={ ( searchTerm ) => {
185
197
  let format;
@@ -320,8 +320,8 @@ export default function NavigationSubmenuEdit( {
320
320
  getNavigationChildBlockProps( innerBlocksColors );
321
321
  const innerBlocksProps = useInnerBlocksProps( navigationChildBlockProps, {
322
322
  allowedBlocks,
323
- __experimentalDefaultBlock: DEFAULT_BLOCK,
324
- __experimentalDirectInsert: true,
323
+ defaultBlock: DEFAULT_BLOCK,
324
+ directInsert: true,
325
325
 
326
326
  // Ensure block toolbar is not too far removed from item
327
327
  // being edited.
@@ -5,16 +5,6 @@
5
5
  * @package WordPress
6
6
  */
7
7
 
8
- /**
9
- * Build an array with CSS classes and inline styles defining the colors
10
- * which will be applied to the navigation markup in the front-end.
11
- *
12
- * @param array $context Navigation block context.
13
- * @param array $attributes Block attributes.
14
- * @param bool $is_sub_menu Whether the block is a sub-menu.
15
- * @return array Colors CSS classes and inline styles.
16
- */
17
-
18
8
  /**
19
9
  * Build an array with CSS classes and inline styles defining the font sizes
20
10
  * which will be applied to the navigation markup in the front-end.
@@ -199,9 +189,9 @@ function render_block_core_navigation_submenu( $attributes, $content, $block ) {
199
189
  $attributes['style']['color']['background'] = $block->context['customOverlayBackgroundColor'];
200
190
  }
201
191
 
202
- // This allows us to be able to get a response from gutenberg_apply_colors_support.
192
+ // This allows us to be able to get a response from wp_apply_colors_support.
203
193
  $block->block_type->supports['color'] = true;
204
- $colors_supports = gutenberg_apply_colors_support( $block->block_type, $attributes );
194
+ $colors_supports = wp_apply_colors_support( $block->block_type, $attributes );
205
195
  $css_classes = 'wp-block-navigation__submenu-container';
206
196
  if ( array_key_exists( 'class', $colors_supports ) ) {
207
197
  $css_classes .= ' ' . $colors_supports['class'];
@@ -5,14 +5,14 @@ import { Button, Modal } from '@wordpress/components';
5
5
  import { __ } from '@wordpress/i18n';
6
6
 
7
7
  export const convertDescription = __(
8
- 'This menu is automatically kept in sync with pages on your site. You can manage the menu yourself by clicking "Edit" below.'
8
+ 'This page list is synced with the published pages on your site. Detach the page list to add, delete, or reorder pages yourself.'
9
9
  );
10
10
 
11
11
  export function ConvertToLinksModal( { onClick, onClose, disabled } ) {
12
12
  return (
13
13
  <Modal
14
14
  onRequestClose={ onClose }
15
- title={ __( 'Edit this menu' ) }
15
+ title={ __( 'Edit Page List' ) }
16
16
  className={ 'wp-block-page-list-modal' }
17
17
  aria={ {
18
18
  describedby: 'wp-block-page-list-modal__description',
@@ -30,7 +30,7 @@ export function ConvertToLinksModal( { onClick, onClose, disabled } ) {
30
30
  disabled={ disabled }
31
31
  onClick={ onClick }
32
32
  >
33
- { __( 'Edit' ) }
33
+ { __( 'Detach' ) }
34
34
  </Button>
35
35
  </div>
36
36
  </Modal>