@wordpress/block-library 10.5.2-next.v.202608281122.0 → 11.0.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 (588) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/build/audio/edit.cjs +5 -5
  3. package/build/audio/edit.cjs.map +2 -2
  4. package/build/audio/index.cjs +0 -37
  5. package/build/audio/index.cjs.map +3 -3
  6. package/build/button/index.cjs +0 -34
  7. package/build/button/index.cjs.map +3 -3
  8. package/build/code/index.cjs +0 -17
  9. package/build/code/index.cjs.map +3 -3
  10. package/build/comment-template/edit.cjs.map +1 -1
  11. package/build/cover/index.cjs +0 -38
  12. package/build/cover/index.cjs.map +3 -3
  13. package/build/details/index.cjs +0 -17
  14. package/build/details/index.cjs.map +3 -3
  15. package/build/file/index.cjs +0 -43
  16. package/build/file/index.cjs.map +3 -3
  17. package/build/footnotes/format.cjs +1 -1
  18. package/build/footnotes/format.cjs.map +2 -2
  19. package/build/gallery/dynamic-gallery.cjs +22 -12
  20. package/build/gallery/dynamic-gallery.cjs.map +2 -2
  21. package/build/heading/index.cjs +0 -16
  22. package/build/heading/index.cjs.map +3 -3
  23. package/build/image/image.cjs +7 -5
  24. package/build/image/image.cjs.map +2 -2
  25. package/build/image/index.cjs +0 -81
  26. package/build/image/index.cjs.map +3 -3
  27. package/build/image/use-open-image-media-editor-modal.cjs +81 -14
  28. package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
  29. package/build/index.cjs +0 -10
  30. package/build/index.cjs.map +2 -2
  31. package/build/latest-posts/edit.cjs.map +1 -1
  32. package/build/list-item/edit.cjs +14 -11
  33. package/build/list-item/edit.cjs.map +2 -2
  34. package/build/list-item/hooks/index.cjs +6 -9
  35. package/build/list-item/hooks/index.cjs.map +2 -2
  36. package/build/list-item/hooks/use-enter.cjs +62 -67
  37. package/build/list-item/hooks/use-enter.cjs.map +3 -3
  38. package/build/list-item/hooks/use-merge.cjs +26 -44
  39. package/build/list-item/hooks/use-merge.cjs.map +3 -3
  40. package/build/list-item/hooks/use-multi-select-tab.cjs +80 -0
  41. package/build/list-item/hooks/use-multi-select-tab.cjs.map +7 -0
  42. package/build/list-item/hooks/use-tab.cjs +65 -0
  43. package/build/list-item/hooks/use-tab.cjs.map +7 -0
  44. package/build/list-item/index.cjs +0 -17
  45. package/build/list-item/index.cjs.map +3 -3
  46. package/build/list-item/utils.cjs +169 -0
  47. package/build/list-item/utils.cjs.map +7 -0
  48. package/build/math/block.json +3 -0
  49. package/build/media-text/index.cjs +0 -50
  50. package/build/media-text/index.cjs.map +3 -3
  51. package/build/media-text/media-container.cjs +16 -11
  52. package/build/media-text/media-container.cjs.map +2 -2
  53. package/build/more/index.cjs +0 -18
  54. package/build/more/index.cjs.map +3 -3
  55. package/build/navigation/constants.cjs +1 -1
  56. package/build/navigation/constants.cjs.map +1 -1
  57. package/build/navigation-link/block.json +1 -1
  58. package/build/navigation-link/deprecated.cjs +69 -0
  59. package/build/navigation-link/deprecated.cjs.map +7 -0
  60. package/build/navigation-link/index.cjs +6 -74
  61. package/build/navigation-link/index.cjs.map +4 -4
  62. package/build/{form-submit-button/init.cjs → navigation-link/variations.cjs} +23 -8
  63. package/build/navigation-link/variations.cjs.map +7 -0
  64. package/build/navigation-submenu/index.cjs +0 -32
  65. package/build/navigation-submenu/index.cjs.map +3 -3
  66. package/build/paragraph/index.cjs +0 -17
  67. package/build/paragraph/index.cjs.map +3 -3
  68. package/build/paragraph/use-enter.cjs +8 -4
  69. package/build/paragraph/use-enter.cjs.map +2 -2
  70. package/build/post-template/edit.cjs +3 -1
  71. package/build/post-template/edit.cjs.map +2 -2
  72. package/build/preformatted/index.cjs +0 -17
  73. package/build/preformatted/index.cjs.map +3 -3
  74. package/build/pullquote/index.cjs +0 -24
  75. package/build/pullquote/index.cjs.map +3 -3
  76. package/build/query/edit/inspector-controls/enhanced-pagination-control.cjs +13 -5
  77. package/build/query/edit/inspector-controls/enhanced-pagination-control.cjs.map +2 -2
  78. package/build/query/edit/inspector-controls/index.cjs +9 -4
  79. package/build/query/edit/inspector-controls/index.cjs.map +2 -2
  80. package/build/query/edit/query-content.cjs +30 -9
  81. package/build/query/edit/query-content.cjs.map +3 -3
  82. package/build/query/utils.cjs +11 -4
  83. package/build/query/utils.cjs.map +2 -2
  84. package/build/search/edit.cjs +3 -1
  85. package/build/search/edit.cjs.map +2 -2
  86. package/build/search/index.cjs +0 -31
  87. package/build/search/index.cjs.map +3 -3
  88. package/build/site-tagline/edit.cjs +11 -17
  89. package/build/site-tagline/edit.cjs.map +2 -2
  90. package/build/site-title/edit.cjs +12 -18
  91. package/build/site-title/edit.cjs.map +2 -2
  92. package/build/social-link/index.cjs +0 -31
  93. package/build/social-link/index.cjs.map +3 -3
  94. package/build/verse/index.cjs +0 -17
  95. package/build/verse/index.cjs.map +3 -3
  96. package/build/video/index.cjs +0 -40
  97. package/build/video/index.cjs.map +3 -3
  98. package/build/video/tracks-editor.cjs +2 -3
  99. package/build/video/tracks-editor.cjs.map +3 -3
  100. package/build-module/audio/edit.mjs +5 -5
  101. package/build-module/audio/edit.mjs.map +2 -2
  102. package/build-module/audio/index.mjs +0 -37
  103. package/build-module/audio/index.mjs.map +2 -2
  104. package/build-module/button/index.mjs +0 -34
  105. package/build-module/button/index.mjs.map +2 -2
  106. package/build-module/code/index.mjs +0 -17
  107. package/build-module/code/index.mjs.map +2 -2
  108. package/build-module/comment-template/edit.mjs.map +1 -1
  109. package/build-module/cover/index.mjs +0 -38
  110. package/build-module/cover/index.mjs.map +2 -2
  111. package/build-module/details/index.mjs +0 -17
  112. package/build-module/details/index.mjs.map +2 -2
  113. package/build-module/file/index.mjs +1 -44
  114. package/build-module/file/index.mjs.map +2 -2
  115. package/build-module/footnotes/format.mjs +1 -1
  116. package/build-module/footnotes/format.mjs.map +2 -2
  117. package/build-module/gallery/dynamic-gallery.mjs +23 -13
  118. package/build-module/gallery/dynamic-gallery.mjs.map +2 -2
  119. package/build-module/heading/index.mjs +1 -21
  120. package/build-module/heading/index.mjs.map +2 -2
  121. package/build-module/image/image.mjs +7 -5
  122. package/build-module/image/image.mjs.map +2 -2
  123. package/build-module/image/index.mjs +0 -81
  124. package/build-module/image/index.mjs.map +2 -2
  125. package/build-module/image/use-open-image-media-editor-modal.mjs +84 -14
  126. package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
  127. package/build-module/index.mjs +0 -10
  128. package/build-module/index.mjs.map +2 -2
  129. package/build-module/latest-posts/edit.mjs.map +1 -1
  130. package/build-module/list-item/edit.mjs +20 -18
  131. package/build-module/list-item/edit.mjs.map +2 -2
  132. package/build-module/list-item/hooks/index.mjs +8 -10
  133. package/build-module/list-item/hooks/index.mjs.map +2 -2
  134. package/build-module/list-item/hooks/use-enter.mjs +63 -58
  135. package/build-module/list-item/hooks/use-enter.mjs.map +2 -2
  136. package/build-module/list-item/hooks/use-merge.mjs +27 -35
  137. package/build-module/list-item/hooks/use-merge.mjs.map +2 -2
  138. package/build-module/list-item/hooks/use-multi-select-tab.mjs +59 -0
  139. package/build-module/list-item/hooks/use-multi-select-tab.mjs.map +7 -0
  140. package/build-module/list-item/hooks/use-tab.mjs +44 -0
  141. package/build-module/list-item/hooks/use-tab.mjs.map +7 -0
  142. package/build-module/list-item/index.mjs +0 -17
  143. package/build-module/list-item/index.mjs.map +2 -2
  144. package/build-module/list-item/utils.mjs +140 -0
  145. package/build-module/list-item/utils.mjs.map +7 -0
  146. package/build-module/math/block.json +3 -0
  147. package/build-module/media-text/index.mjs +0 -50
  148. package/build-module/media-text/index.mjs.map +2 -2
  149. package/build-module/media-text/media-container.mjs +17 -12
  150. package/build-module/media-text/media-container.mjs.map +2 -2
  151. package/build-module/more/index.mjs +0 -18
  152. package/build-module/more/index.mjs.map +2 -2
  153. package/build-module/navigation/constants.mjs +1 -1
  154. package/build-module/navigation/constants.mjs.map +1 -1
  155. package/build-module/navigation-link/block.json +1 -1
  156. package/build-module/navigation-link/deprecated.mjs +48 -0
  157. package/build-module/navigation-link/deprecated.mjs.map +7 -0
  158. package/build-module/navigation-link/index.mjs +7 -75
  159. package/build-module/navigation-link/index.mjs.map +3 -3
  160. package/build-module/navigation-link/variations.mjs +22 -0
  161. package/build-module/navigation-link/variations.mjs.map +7 -0
  162. package/build-module/navigation-submenu/index.mjs +1 -33
  163. package/build-module/navigation-submenu/index.mjs.map +2 -2
  164. package/build-module/paragraph/index.mjs +0 -17
  165. package/build-module/paragraph/index.mjs.map +2 -2
  166. package/build-module/paragraph/use-enter.mjs +8 -4
  167. package/build-module/paragraph/use-enter.mjs.map +2 -2
  168. package/build-module/post-template/edit.mjs +3 -1
  169. package/build-module/post-template/edit.mjs.map +2 -2
  170. package/build-module/preformatted/index.mjs +0 -17
  171. package/build-module/preformatted/index.mjs.map +2 -2
  172. package/build-module/pullquote/index.mjs +0 -24
  173. package/build-module/pullquote/index.mjs.map +2 -2
  174. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.mjs +14 -6
  175. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.mjs.map +2 -2
  176. package/build-module/query/edit/inspector-controls/index.mjs +9 -4
  177. package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
  178. package/build-module/query/edit/query-content.mjs +32 -11
  179. package/build-module/query/edit/query-content.mjs.map +2 -2
  180. package/build-module/query/utils.mjs +10 -7
  181. package/build-module/query/utils.mjs.map +2 -2
  182. package/build-module/search/edit.mjs +4 -2
  183. package/build-module/search/edit.mjs.map +2 -2
  184. package/build-module/search/index.mjs +0 -31
  185. package/build-module/search/index.mjs.map +2 -2
  186. package/build-module/site-tagline/edit.mjs +13 -19
  187. package/build-module/site-tagline/edit.mjs.map +2 -2
  188. package/build-module/site-title/edit.mjs +14 -20
  189. package/build-module/site-title/edit.mjs.map +2 -2
  190. package/build-module/social-link/index.mjs +0 -31
  191. package/build-module/social-link/index.mjs.map +2 -2
  192. package/build-module/verse/index.mjs +0 -17
  193. package/build-module/verse/index.mjs.map +2 -2
  194. package/build-module/video/index.mjs +0 -40
  195. package/build-module/video/index.mjs.map +2 -2
  196. package/build-module/video/tracks-editor.mjs +3 -5
  197. package/build-module/video/tracks-editor.mjs.map +2 -2
  198. package/build-style/columns/style-rtl.css +1 -1
  199. package/build-style/columns/style.css +1 -1
  200. package/build-style/comment-template/style-rtl.css +0 -1
  201. package/build-style/comment-template/style.css +0 -1
  202. package/build-style/cover/style-rtl.css +1 -2
  203. package/build-style/cover/style.css +1 -2
  204. package/build-style/editor-rtl.css +20 -81
  205. package/build-style/editor.css +20 -81
  206. package/build-style/gallery/style-rtl.css +2 -4
  207. package/build-style/gallery/style.css +2 -4
  208. package/build-style/group/theme-rtl.css +1 -1
  209. package/build-style/group/theme.css +1 -1
  210. package/build-style/heading/style-rtl.css +1 -1
  211. package/build-style/heading/style.css +1 -1
  212. package/build-style/icon/style-rtl.css +3 -0
  213. package/build-style/icon/style.css +3 -0
  214. package/build-style/image/editor-rtl.css +0 -1
  215. package/build-style/image/editor.css +0 -1
  216. package/build-style/list/style-rtl.css +1 -1
  217. package/build-style/list/style.css +1 -1
  218. package/build-style/media-text/style-rtl.css +2 -3
  219. package/build-style/media-text/style.css +2 -3
  220. package/build-style/navigation/editor-rtl.css +8 -0
  221. package/build-style/navigation/editor.css +8 -0
  222. package/build-style/paragraph/style-rtl.css +1 -1
  223. package/build-style/paragraph/style.css +1 -1
  224. package/build-style/playlist/style-rtl.css +1 -2
  225. package/build-style/playlist/style.css +1 -2
  226. package/build-style/playlist-track/style-rtl.css +1 -2
  227. package/build-style/playlist-track/style.css +1 -2
  228. package/build-style/preformatted/style-rtl.css +1 -1
  229. package/build-style/preformatted/style.css +1 -1
  230. package/build-style/query/editor-rtl.css +5 -15
  231. package/build-style/query/editor.css +5 -15
  232. package/build-style/read-more/style-rtl.css +0 -1
  233. package/build-style/read-more/style.css +0 -1
  234. package/build-style/reset-rtl.css +1 -3
  235. package/build-style/reset.css +1 -3
  236. package/build-style/search/style-rtl.css +1 -3
  237. package/build-style/search/style.css +1 -3
  238. package/build-style/site-logo/editor-rtl.css +1 -2
  239. package/build-style/site-logo/editor.css +1 -2
  240. package/build-style/style-rtl.css +18 -77
  241. package/build-style/style.css +18 -77
  242. package/build-style/tab-list/style-rtl.css +1 -3
  243. package/build-style/tab-list/style.css +1 -3
  244. package/build-style/template-part/editor-rtl.css +4 -8
  245. package/build-style/template-part/editor.css +4 -8
  246. package/build-style/template-part/theme-rtl.css +1 -1
  247. package/build-style/template-part/theme.css +1 -1
  248. package/build-style/theme-rtl.css +2 -2
  249. package/build-style/theme.css +2 -2
  250. package/build-style/video/style-rtl.css +1 -2
  251. package/build-style/video/style.css +1 -2
  252. package/build-types/navigation-link/deprecated.d.ts +48 -0
  253. package/build-types/navigation-link/deprecated.d.ts.map +1 -0
  254. package/package.json +43 -43
  255. package/src/accordion/index.php +2 -2
  256. package/src/accordion-item/index.php +1 -1
  257. package/src/audio/edit.jsx +6 -7
  258. package/src/audio/index.js +0 -37
  259. package/src/breadcrumbs/index.php +4 -4
  260. package/src/button/index.js +0 -34
  261. package/src/button/style.scss +16 -15
  262. package/src/button/test/{get-experimental-label.js → get-experimental-label.jsdom.test.js} +1 -0
  263. package/src/button/test/get-updated-link-attributes.js +1 -0
  264. package/src/button/test/utils.js +1 -0
  265. package/src/categories/index.php +4 -0
  266. package/src/code/index.js +0 -18
  267. package/src/code/test/utils.js +1 -0
  268. package/src/columns/style.scss +2 -1
  269. package/src/columns/test/{transforms.js → transforms.jsdom.test.js} +1 -0
  270. package/src/columns/test/utils.js +1 -0
  271. package/src/comment-template/edit.jsx +1 -1
  272. package/src/comment-template/index.php +2 -2
  273. package/src/comment-template/test/index.js +1 -0
  274. package/src/common.scss +51 -50
  275. package/src/cover/README.md +37 -0
  276. package/src/cover/index.js +0 -39
  277. package/src/cover/style.scss +3 -3
  278. package/src/cover/test/{edit.js → edit.jsdom.test.js} +18 -17
  279. package/src/cover/test/{transforms.js → transforms.jsdom.test.js} +1 -0
  280. package/src/details/index.js +0 -18
  281. package/src/editor.scss +0 -2
  282. package/src/embed/editor.scss +1 -0
  283. package/src/embed/test/{index.js → index.jsdom.test.js} +5 -1
  284. package/src/file/index.js +1 -43
  285. package/src/footnotes/format.jsx +5 -1
  286. package/src/gallery/dynamic-gallery.jsx +31 -4
  287. package/src/gallery/test/dynamic-source.js +1 -0
  288. package/src/gallery/test/{edit.js → edit.jsdom.test.js} +4 -0
  289. package/src/gallery/test/responsive-styles.js +1 -0
  290. package/src/gallery/test/shared.js +1 -0
  291. package/src/gallery/test/{transforms.js → transforms.jsdom.test.js} +1 -0
  292. package/src/gallery/test/{use-get-new-images.jsx → use-get-new-images.jsdom.test.jsx} +1 -0
  293. package/src/gallery/test/variations.js +1 -0
  294. package/src/group/test/{placeholder.jsx → placeholder.jsdom.test.jsx} +1 -0
  295. package/src/group/theme.scss +1 -1
  296. package/src/heading/index.js +1 -22
  297. package/src/heading/index.php +1 -1
  298. package/src/heading/style.scss +1 -1
  299. package/src/heading/test/shared.js +1 -0
  300. package/src/home-link/index.php +2 -2
  301. package/src/html/test/{index.js → index.jsdom.test.js} +9 -0
  302. package/src/html/test/{utils.js → utils.jsdom.test.js} +1 -0
  303. package/src/icon/index.php +18 -6
  304. package/src/icon/style.scss +7 -0
  305. package/src/image/image.jsx +18 -11
  306. package/src/image/index.js +0 -80
  307. package/src/image/test/{transforms.js → transforms.jsdom.test.js} +1 -0
  308. package/src/image/test/{use-open-image-media-editor-modal.js → use-open-image-media-editor-modal.jsdom.test.js} +343 -28
  309. package/src/image/use-open-image-media-editor-modal.js +184 -21
  310. package/src/index.jsx +0 -11
  311. package/src/latest-posts/edit.jsx +1 -1
  312. package/src/latest-posts/test/{deprecated.js → deprecated.jsdom.test.js} +1 -0
  313. package/src/list/index.php +1 -1
  314. package/src/list/style.scss +1 -1
  315. package/src/list-item/edit.jsx +20 -20
  316. package/src/list-item/hooks/index.js +2 -3
  317. package/src/list-item/hooks/use-enter.js +82 -70
  318. package/src/list-item/hooks/use-merge.js +28 -36
  319. package/src/list-item/hooks/use-multi-select-tab.js +83 -0
  320. package/src/list-item/hooks/use-tab.js +62 -0
  321. package/src/list-item/index.js +0 -18
  322. package/src/list-item/utils.js +236 -0
  323. package/src/math/README.md +2 -0
  324. package/src/math/block.json +3 -0
  325. package/src/media-text/index.js +0 -50
  326. package/src/media-text/media-container.jsx +22 -12
  327. package/src/media-text/style.scss +2 -1
  328. package/src/media-text/test/image-fill.js +1 -0
  329. package/src/more/index.js +0 -19
  330. package/src/navigation/constants.js +1 -1
  331. package/src/navigation/edit/test/are-blocks-dirty.js +1 -0
  332. package/src/navigation/edit/test/{layout-custom-properties.js → layout-custom-properties.jsdom.test.js} +8 -7
  333. package/src/navigation/edit/test/{navigation-menu-selector.jsx → navigation-menu-selector.jsdom.test.jsx} +23 -14
  334. package/src/navigation/edit/test/{overlay-template-part-selector.jsx → overlay-template-part-selector.jsdom.test.jsx} +22 -20
  335. package/src/navigation/edit/test/{responsive-wrapper.jsx → responsive-wrapper.jsdom.test.jsx} +14 -13
  336. package/src/navigation/edit/test/{use-create-overlay.js → use-create-overlay.jsdom.test.js} +19 -24
  337. package/src/navigation/edit/test/utils.js +1 -0
  338. package/src/navigation/editor.scss +13 -0
  339. package/src/navigation/index.php +14 -14
  340. package/src/navigation/test/{menu-items-to-blocks.js → menu-items-to-blocks.jsdom.test.js} +3 -2
  341. package/src/navigation/test/{use-navigation-menu.js → use-navigation-menu.jsdom.test.js} +7 -4
  342. package/src/navigation/test/{view.js → view.jsdom.test.js} +4 -2
  343. package/src/navigation-link/block.json +1 -1
  344. package/src/navigation-link/deprecated.tsx +58 -0
  345. package/src/navigation-link/{index.jsx → index.js} +5 -77
  346. package/src/navigation-link/index.php +5 -5
  347. package/src/navigation-link/shared/test/{controls.jsx → controls.jsdom.test.jsx} +18 -18
  348. package/src/navigation-link/shared/test/update-attributes.test.js +52 -51
  349. package/src/navigation-link/shared/test/{use-enable-link-status-validation.test.js → use-enable-link-status-validation.jsdom.test.js} +8 -6
  350. package/src/navigation-link/shared/test/{use-entity-binding.js → use-entity-binding.jsdom.test.js} +12 -11
  351. package/src/navigation-link/shared/test/{use-handle-link-change.test.js → use-handle-link-change.jsdom.test.js} +23 -20
  352. package/src/navigation-link/shared/test/{use-link-preview.test.js → use-link-preview.jsdom.test.js} +17 -14
  353. package/src/navigation-link/test/__snapshots__/{hooks.js.snap → hooks.jsdom.test.js.snap} +23 -6
  354. package/src/navigation-link/test/block-labelling.js +1 -0
  355. package/src/navigation-link/test/{hooks.js → hooks.jsdom.test.js} +1 -0
  356. package/src/navigation-link/variations.js +19 -0
  357. package/src/navigation-submenu/index.js +1 -33
  358. package/src/page-list/index.php +10 -10
  359. package/src/page-list/test/{convert-to-navigation-links.js → convert-to-navigation-links.jsdom.test.js} +3 -2
  360. package/src/paragraph/index.js +0 -18
  361. package/src/paragraph/style.scss +1 -1
  362. package/src/paragraph/use-enter.js +13 -6
  363. package/src/pattern/test/index.js +1 -0
  364. package/src/playlist/test/{edit-component.jsx → edit-component.jsdom.test.jsx} +31 -30
  365. package/src/playlist/test/{edit.js → edit.jsdom.test.js} +1 -0
  366. package/src/playlist/test/{transforms.js → transforms.jsdom.test.js} +1 -0
  367. package/src/playlist-track/test/{edit.jsx → edit.jsdom.test.jsx} +20 -19
  368. package/src/post-author/index.php +3 -3
  369. package/src/post-author-biography/index.php +3 -3
  370. package/src/post-author-name/index.php +3 -3
  371. package/src/post-comments-link/index.php +4 -4
  372. package/src/post-date/test/{edit.js → edit.jsdom.test.js} +1 -0
  373. package/src/post-template/edit.jsx +3 -1
  374. package/src/post-time-to-read/index.php +3 -3
  375. package/src/post-title/style.scss +1 -0
  376. package/src/preformatted/index.js +0 -18
  377. package/src/preformatted/style.scss +1 -1
  378. package/src/pullquote/index.js +0 -24
  379. package/src/query/edit/inspector-controls/enhanced-pagination-control.jsx +13 -6
  380. package/src/query/edit/inspector-controls/index.jsx +9 -4
  381. package/src/query/edit/query-content.jsx +31 -8
  382. package/src/query/editor.scss +1 -7
  383. package/src/query/index.php +2 -2
  384. package/src/query/test/{utils.js → utils.jsdom.test.js} +1 -0
  385. package/src/query/utils.js +15 -11
  386. package/src/quote/test/{migrate.js → migrate.jsdom.test.js} +1 -0
  387. package/src/read-more/index.php +1 -1
  388. package/src/search/edit.jsx +12 -2
  389. package/src/search/index.js +0 -30
  390. package/src/search/index.php +1 -1
  391. package/src/separator/test/{edit.jsx → edit.jsdom.test.jsx} +5 -4
  392. package/src/site-logo/index.php +1 -1
  393. package/src/site-tagline/edit.jsx +18 -27
  394. package/src/site-title/edit.jsx +20 -27
  395. package/src/social-link/index.js +0 -32
  396. package/src/social-link/index.php +0 -1
  397. package/src/style.scss +0 -1
  398. package/src/table/editor.scss +1 -0
  399. package/src/table/style.scss +2 -0
  400. package/src/table/test/state.js +1 -0
  401. package/src/table/test/utils.js +1 -0
  402. package/src/table-of-contents/index.php +3 -3
  403. package/src/template-part/theme.scss +1 -1
  404. package/src/utils/test/search-patterns.js +1 -0
  405. package/src/utils/test/{style-state.js → style-state.jsdom.test.js} +1 -0
  406. package/src/utils/test/{waveform-player-dependency.js → waveform-player-dependency.jsdom.test.js} +15 -21
  407. package/src/verse/index.js +0 -18
  408. package/src/verse/style.scss +1 -0
  409. package/src/video/index.js +0 -40
  410. package/src/video/test/variations.js +1 -0
  411. package/src/video/tracks-editor.jsx +4 -5
  412. package/build/form/block.json +0 -65
  413. package/build/form/deprecated.cjs +0 -111
  414. package/build/form/deprecated.cjs.map +0 -7
  415. package/build/form/edit.cjs +0 -180
  416. package/build/form/edit.cjs.map +0 -7
  417. package/build/form/icons.cjs +0 -33
  418. package/build/form/icons.cjs.map +0 -7
  419. package/build/form/index.cjs +0 -118
  420. package/build/form/index.cjs.map +0 -7
  421. package/build/form/init.cjs +0 -28
  422. package/build/form/init.cjs.map +0 -7
  423. package/build/form/save.cjs +0 -40
  424. package/build/form/save.cjs.map +0 -7
  425. package/build/form/utils.cjs +0 -61
  426. package/build/form/utils.cjs.map +0 -7
  427. package/build/form/variations.cjs +0 -152
  428. package/build/form/variations.cjs.map +0 -7
  429. package/build/form/view.cjs +0 -48
  430. package/build/form/view.cjs.map +0 -7
  431. package/build/form-input/block.json +0 -72
  432. package/build/form-input/deprecated.cjs +0 -252
  433. package/build/form-input/deprecated.cjs.map +0 -7
  434. package/build/form-input/edit.cjs +0 -206
  435. package/build/form-input/edit.cjs.map +0 -7
  436. package/build/form-input/icons.cjs +0 -33
  437. package/build/form-input/icons.cjs.map +0 -7
  438. package/build/form-input/index.cjs +0 -63
  439. package/build/form-input/index.cjs.map +0 -7
  440. package/build/form-input/init.cjs +0 -28
  441. package/build/form-input/init.cjs.map +0 -7
  442. package/build/form-input/save.cjs +0 -88
  443. package/build/form-input/save.cjs.map +0 -7
  444. package/build/form-input/variations.cjs +0 -105
  445. package/build/form-input/variations.cjs.map +0 -7
  446. package/build/form-submission-notification/block.json +0 -19
  447. package/build/form-submission-notification/edit.cjs +0 -71
  448. package/build/form-submission-notification/edit.cjs.map +0 -7
  449. package/build/form-submission-notification/index.cjs +0 -73
  450. package/build/form-submission-notification/index.cjs.map +0 -7
  451. package/build/form-submission-notification/init.cjs +0 -28
  452. package/build/form-submission-notification/init.cjs.map +0 -7
  453. package/build/form-submission-notification/save.cjs +0 -54
  454. package/build/form-submission-notification/save.cjs.map +0 -7
  455. package/build/form-submission-notification/variations.cjs +0 -78
  456. package/build/form-submission-notification/variations.cjs.map +0 -7
  457. package/build/form-submit-button/block.json +0 -15
  458. package/build/form-submit-button/edit.cjs +0 -36
  459. package/build/form-submit-button/edit.cjs.map +0 -7
  460. package/build/form-submit-button/index.cjs +0 -75
  461. package/build/form-submit-button/index.cjs.map +0 -7
  462. package/build/form-submit-button/init.cjs.map +0 -7
  463. package/build/form-submit-button/save.cjs +0 -32
  464. package/build/form-submit-button/save.cjs.map +0 -7
  465. package/build/list-item/hooks/use-indent-list-item.cjs +0 -79
  466. package/build/list-item/hooks/use-indent-list-item.cjs.map +0 -7
  467. package/build/list-item/hooks/use-outdent-list-item.cjs +0 -106
  468. package/build/list-item/hooks/use-outdent-list-item.cjs.map +0 -7
  469. package/build/list-item/hooks/use-space.cjs +0 -83
  470. package/build/list-item/hooks/use-space.cjs.map +0 -7
  471. package/build/query/edit/enhanced-pagination-modal.cjs +0 -89
  472. package/build/query/edit/enhanced-pagination-modal.cjs.map +0 -7
  473. package/build-module/form/block.json +0 -65
  474. package/build-module/form/deprecated.mjs +0 -96
  475. package/build-module/form/deprecated.mjs.map +0 -7
  476. package/build-module/form/edit.mjs +0 -170
  477. package/build-module/form/edit.mjs.map +0 -7
  478. package/build-module/form/icons.mjs +0 -8
  479. package/build-module/form/icons.mjs.map +0 -7
  480. package/build-module/form/index.mjs +0 -83
  481. package/build-module/form/index.mjs.map +0 -7
  482. package/build-module/form/init.mjs +0 -7
  483. package/build-module/form/init.mjs.map +0 -7
  484. package/build-module/form/save.mjs +0 -19
  485. package/build-module/form/save.mjs.map +0 -7
  486. package/build-module/form/utils.mjs +0 -35
  487. package/build-module/form/utils.mjs.map +0 -7
  488. package/build-module/form/variations.mjs +0 -134
  489. package/build-module/form/variations.mjs.map +0 -7
  490. package/build-module/form/view.mjs +0 -46
  491. package/build-module/form/view.mjs.map +0 -7
  492. package/build-module/form-input/block.json +0 -72
  493. package/build-module/form-input/deprecated.mjs +0 -226
  494. package/build-module/form-input/deprecated.mjs.map +0 -7
  495. package/build-module/form-input/edit.mjs +0 -186
  496. package/build-module/form-input/edit.mjs.map +0 -7
  497. package/build-module/form-input/icons.mjs +0 -8
  498. package/build-module/form-input/icons.mjs.map +0 -7
  499. package/build-module/form-input/index.mjs +0 -25
  500. package/build-module/form-input/index.mjs.map +0 -7
  501. package/build-module/form-input/init.mjs +0 -7
  502. package/build-module/form-input/init.mjs.map +0 -7
  503. package/build-module/form-input/save.mjs +0 -62
  504. package/build-module/form-input/save.mjs.map +0 -7
  505. package/build-module/form-input/variations.mjs +0 -84
  506. package/build-module/form-input/variations.mjs.map +0 -7
  507. package/build-module/form-submission-notification/block.json +0 -19
  508. package/build-module/form-submission-notification/edit.mjs +0 -45
  509. package/build-module/form-submission-notification/edit.mjs.map +0 -7
  510. package/build-module/form-submission-notification/index.mjs +0 -35
  511. package/build-module/form-submission-notification/index.mjs.map +0 -7
  512. package/build-module/form-submission-notification/init.mjs +0 -7
  513. package/build-module/form-submission-notification/init.mjs.map +0 -7
  514. package/build-module/form-submission-notification/save.mjs +0 -23
  515. package/build-module/form-submission-notification/save.mjs.map +0 -7
  516. package/build-module/form-submission-notification/variations.mjs +0 -57
  517. package/build-module/form-submission-notification/variations.mjs.map +0 -7
  518. package/build-module/form-submit-button/block.json +0 -15
  519. package/build-module/form-submit-button/edit.mjs +0 -15
  520. package/build-module/form-submit-button/edit.mjs.map +0 -7
  521. package/build-module/form-submit-button/index.mjs +0 -37
  522. package/build-module/form-submit-button/index.mjs.map +0 -7
  523. package/build-module/form-submit-button/init.mjs +0 -7
  524. package/build-module/form-submit-button/init.mjs.map +0 -7
  525. package/build-module/form-submit-button/save.mjs +0 -11
  526. package/build-module/form-submit-button/save.mjs.map +0 -7
  527. package/build-module/list-item/hooks/use-indent-list-item.mjs +0 -58
  528. package/build-module/list-item/hooks/use-indent-list-item.mjs.map +0 -7
  529. package/build-module/list-item/hooks/use-outdent-list-item.mjs +0 -85
  530. package/build-module/list-item/hooks/use-outdent-list-item.mjs.map +0 -7
  531. package/build-module/list-item/hooks/use-space.mjs +0 -52
  532. package/build-module/list-item/hooks/use-space.mjs.map +0 -7
  533. package/build-module/query/edit/enhanced-pagination-modal.mjs +0 -72
  534. package/build-module/query/edit/enhanced-pagination-modal.mjs.map +0 -7
  535. package/build-style/form-input/editor-rtl.css +0 -19
  536. package/build-style/form-input/editor.css +0 -19
  537. package/build-style/form-input/style-rtl.css +0 -48
  538. package/build-style/form-input/style.css +0 -48
  539. package/build-style/form-submission-notification/editor-rtl.css +0 -30
  540. package/build-style/form-submission-notification/editor.css +0 -30
  541. package/build-style/form-submit-button/style-rtl.css +0 -3
  542. package/build-style/form-submit-button/style.css +0 -3
  543. package/src/form/README.md +0 -90
  544. package/src/form/block.json +0 -65
  545. package/src/form/deprecated.jsx +0 -93
  546. package/src/form/edit.jsx +0 -169
  547. package/src/form/icons.jsx +0 -7
  548. package/src/form/index.js +0 -91
  549. package/src/form/index.php +0 -197
  550. package/src/form/init.js +0 -3
  551. package/src/form/save.jsx +0 -15
  552. package/src/form/utils.js +0 -36
  553. package/src/form/variations.js +0 -133
  554. package/src/form/view.js +0 -54
  555. package/src/form-input/README.md +0 -74
  556. package/src/form-input/block.json +0 -72
  557. package/src/form-input/deprecated.jsx +0 -248
  558. package/src/form-input/edit.jsx +0 -187
  559. package/src/form-input/editor.scss +0 -24
  560. package/src/form-input/icons.jsx +0 -7
  561. package/src/form-input/index.js +0 -22
  562. package/src/form-input/index.php +0 -47
  563. package/src/form-input/init.js +0 -3
  564. package/src/form-input/save.jsx +0 -89
  565. package/src/form-input/style.scss +0 -64
  566. package/src/form-input/variations.js +0 -82
  567. package/src/form-submission-notification/README.md +0 -50
  568. package/src/form-submission-notification/block.json +0 -19
  569. package/src/form-submission-notification/edit.jsx +0 -44
  570. package/src/form-submission-notification/editor.scss +0 -45
  571. package/src/form-submission-notification/index.js +0 -33
  572. package/src/form-submission-notification/index.php +0 -48
  573. package/src/form-submission-notification/init.js +0 -3
  574. package/src/form-submission-notification/save.jsx +0 -18
  575. package/src/form-submission-notification/variations.js +0 -56
  576. package/src/form-submit-button/README.md +0 -54
  577. package/src/form-submit-button/block.json +0 -15
  578. package/src/form-submit-button/edit.jsx +0 -12
  579. package/src/form-submit-button/index.js +0 -35
  580. package/src/form-submit-button/init.js +0 -3
  581. package/src/form-submit-button/save.jsx +0 -10
  582. package/src/form-submit-button/style.scss +0 -3
  583. package/src/list-item/hooks/use-indent-list-item.js +0 -73
  584. package/src/list-item/hooks/use-outdent-list-item.js +0 -100
  585. package/src/list-item/hooks/use-space.js +0 -66
  586. package/src/query/edit/enhanced-pagination-modal.jsx +0 -77
  587. /package/src/utils/test/{waveform-player.jsx → waveform-player.jsdom.test.jsx} +0 -0
  588. /package/src/utils/test/{waveform-utils.js → waveform-utils.jsdom.test.js} +0 -0
@@ -1,3 +1,4 @@
1
+ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
1
2
  import {
2
3
  createBlock,
3
4
  getPossibleBlockTransformations,
@@ -1,3 +1,4 @@
1
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
1
2
  import { act, fireEvent, render, screen, within } from '@testing-library/react';
2
3
  import { useDispatch } from '@wordpress/data';
3
4
  import PlaylistTrackEdit from '../edit';
@@ -6,10 +7,10 @@ import { useUploadMediaFromBlobURL } from '../../utils/hooks';
6
7
 
7
8
  let mockMediaReplaceFlowProps;
8
9
 
9
- jest.mock( '@wordpress/block-editor', () => {
10
- const PlainText = jest.requireActual(
10
+ vi.mock( '@wordpress/block-editor', async () => {
11
+ const { default: PlainText } = await import(
11
12
  '../../../../block-editor/src/components/plain-text'
12
- ).default;
13
+ );
13
14
 
14
15
  return {
15
16
  BlockControls: ( { children } ) => <div>{ children }</div>,
@@ -22,16 +23,16 @@ jest.mock( '@wordpress/block-editor', () => {
22
23
  return <button onClick={ () => onSelect( {} ) }>{ name }</button>;
23
24
  },
24
25
  MediaUpload: ( { render: renderMediaUpload } ) =>
25
- renderMediaUpload( { open: jest.fn() } ),
26
+ renderMediaUpload( { open: vi.fn() } ),
26
27
  MediaUploadCheck: ( { children } ) => <div>{ children }</div>,
27
28
  PlainText,
28
- useBlockProps: jest.fn( () => ( {} ) ),
29
+ useBlockProps: vi.fn( () => ( {} ) ),
29
30
  };
30
31
  } );
31
32
 
32
- jest.mock( '@wordpress/data', () => {
33
- const data = jest.requireActual( '@wordpress/data' );
34
- const mockUseDispatch = jest.fn();
33
+ vi.mock( import( '@wordpress/data' ), async ( importOriginal ) => {
34
+ const data = await importOriginal();
35
+ const mockUseDispatch = vi.fn();
35
36
 
36
37
  return new Proxy( data, {
37
38
  get( target, property ) {
@@ -44,12 +45,12 @@ jest.mock( '@wordpress/data', () => {
44
45
  } );
45
46
  } );
46
47
 
47
- jest.mock( '@wordpress/notices', () => ( {
48
+ vi.mock( '@wordpress/notices', () => ( {
48
49
  store: 'core/notices',
49
50
  } ) );
50
51
 
51
- jest.mock( '../../utils/hooks', () => ( {
52
- useUploadMediaFromBlobURL: jest.fn(),
52
+ vi.mock( '../../utils/hooks', () => ( {
53
+ useUploadMediaFromBlobURL: vi.fn(),
53
54
  } ) );
54
55
 
55
56
  // The handler only forwards the message to a notice, so its text is
@@ -68,9 +69,9 @@ const defaultAttributes = {
68
69
  };
69
70
 
70
71
  function renderEdit( props = {} ) {
71
- const setAttributes = jest.fn();
72
- const setCurrentTrackClientId = props.setCurrentTrackClientId || jest.fn();
73
- const removeTrack = props.removeTrack || jest.fn();
72
+ const setAttributes = vi.fn();
73
+ const setCurrentTrackClientId = props.setCurrentTrackClientId || vi.fn();
74
+ const removeTrack = props.removeTrack || vi.fn();
74
75
 
75
76
  render(
76
77
  <PlaylistContext.Provider
@@ -104,7 +105,7 @@ describe( 'PlaylistTrackEdit', () => {
104
105
  beforeEach( () => {
105
106
  mockMediaReplaceFlowProps = undefined;
106
107
  useDispatch.mockReturnValue( {
107
- createErrorNotice: jest.fn(),
108
+ createErrorNotice: vi.fn(),
108
109
  } );
109
110
  useUploadMediaFromBlobURL.mockClear();
110
111
  } );
@@ -231,8 +232,8 @@ describe( 'PlaylistTrackEdit', () => {
231
232
  } );
232
233
 
233
234
  it( 'removes the track when its initial upload fails', () => {
234
- const createErrorNotice = jest.fn();
235
- const removeBlock = jest.fn();
235
+ const createErrorNotice = vi.fn();
236
+ const removeBlock = vi.fn();
236
237
  useDispatch.mockReturnValue( { createErrorNotice, removeBlock } );
237
238
 
238
239
  const { removeTrack } = renderEdit( {
@@ -260,8 +261,8 @@ describe( 'PlaylistTrackEdit', () => {
260
261
  // `onUploadError` also fires when replacing an existing track's media, so
261
262
  // removing the block unconditionally would discard the original track.
262
263
  it( 'keeps a track that already has a source when an upload fails', () => {
263
- const createErrorNotice = jest.fn();
264
- const removeBlock = jest.fn();
264
+ const createErrorNotice = vi.fn();
265
+ const removeBlock = vi.fn();
265
266
  useDispatch.mockReturnValue( { createErrorNotice, removeBlock } );
266
267
 
267
268
  const { setAttributes } = renderEdit( {
@@ -10,9 +10,9 @@
10
10
  *
11
11
  * @since 5.9.0
12
12
  *
13
- * @param array $attributes Block attributes.
14
- * @param string $content Block default content.
15
- * @param WP_Block $block Block instance.
13
+ * @param array $attributes Block attributes.
14
+ * @param string $content Block default content.
15
+ * @param WP_Block $block Block instance.
16
16
  * @return string Returns the rendered author block.
17
17
  */
18
18
  function render_block_core_post_author( $attributes, $content, $block ) {
@@ -10,9 +10,9 @@
10
10
  *
11
11
  * @since 6.0.0
12
12
  *
13
- * @param array $attributes Block attributes.
14
- * @param string $content Block default content.
15
- * @param WP_Block $block Block instance.
13
+ * @param array $attributes Block attributes.
14
+ * @param string $content Block default content.
15
+ * @param WP_Block $block Block instance.
16
16
  * @return string Returns the rendered post author biography block.
17
17
  */
18
18
  function render_block_core_post_author_biography( $attributes, $content, $block ) {
@@ -10,9 +10,9 @@
10
10
  *
11
11
  * @since 6.2.0
12
12
  *
13
- * @param array $attributes Block attributes.
14
- * @param string $content Block default content.
15
- * @param WP_Block $block Block instance.
13
+ * @param array $attributes Block attributes.
14
+ * @param string $content Block default content.
15
+ * @param WP_Block $block Block instance.
16
16
  * @return string Returns the rendered post author name block.
17
17
  */
18
18
  function render_block_core_post_author_name( $attributes, $content, $block ) {
@@ -10,10 +10,10 @@
10
10
  *
11
11
  * @since 6.9.0
12
12
  *
13
- * @param array $attributes Block attributes.
14
- * @param string $content Block default content.
15
- * @param WP_Block $block Block instance.
16
- * @return string Returns the rendered link.
13
+ * @param array $attributes Block attributes.
14
+ * @param string $content Block default content.
15
+ * @param WP_Block $block Block instance.
16
+ * @return string Returns the rendered link.
17
17
  */
18
18
  function render_block_core_post_comments_link( $attributes, $content, $block ) {
19
19
  if (
@@ -1,3 +1,4 @@
1
+ import { describe, expect, test } from 'vitest';
1
2
  import { is12HourFormat } from '../edit';
2
3
 
3
4
  describe( 'is12HourFormat', () => {
@@ -75,7 +75,9 @@ export default function PostTemplateEdit( {
75
75
  query: {
76
76
  perPage,
77
77
  offset = 0,
78
- postType,
78
+ // Match `build_query_vars_from_query_block()`, which queries posts when
79
+ // `query` has no post type.
80
+ postType = 'post',
79
81
  order,
80
82
  orderBy,
81
83
  author,
@@ -92,9 +92,9 @@ function block_core_post_time_to_read_word_count( $text, $type ) {
92
92
  *
93
93
  * @since 6.9.0
94
94
  *
95
- * @param array $attributes Block attributes.
96
- * @param string $content Block default content.
97
- * @param WP_Block $block Block instance.
95
+ * @param array $attributes Block attributes.
96
+ * @param string $content Block default content.
97
+ * @param WP_Block $block Block instance.
98
98
  * @return string Returns the rendered post author name block.
99
99
  */
100
100
  function render_block_core_post_time_to_read( $attributes, $content, $block ) {
@@ -1,4 +1,5 @@
1
1
  .wp-block-post-title {
2
+ // stylelint-disable-next-line declaration-property-value-keyword-no-deprecated -- Pending review of overflow-wrap alternative.
2
3
  word-break: break-word;
3
4
  // This block has customizable padding, border-box makes that more predictable.
4
5
  box-sizing: border-box;
@@ -1,14 +1,10 @@
1
1
  import { __ } from '@wordpress/i18n';
2
2
  import { preformatted as icon } from '@wordpress/icons';
3
- import { privateApis as blocksPrivateApis } from '@wordpress/blocks';
4
3
  import initBlock from '../utils/init-block';
5
4
  import edit from './edit';
6
5
  import metadata from './block.json';
7
6
  import save from './save';
8
7
  import transforms from './transforms';
9
- import { unlock } from '../lock-unlock';
10
-
11
- const { fieldsKey, formKey } = unlock( blocksPrivateApis );
12
8
 
13
9
  const { name } = metadata;
14
10
 
@@ -36,18 +32,4 @@ export const settings = {
36
32
  },
37
33
  };
38
34
 
39
- if ( window.__experimentalContentOnlyInspectorFields ) {
40
- settings[ fieldsKey ] = [
41
- {
42
- id: 'content',
43
- label: __( 'Content' ),
44
- type: 'text',
45
- Edit: 'rich-text', // TODO: replace with custom component
46
- },
47
- ];
48
- settings[ formKey ] = {
49
- fields: [ 'content' ],
50
- };
51
- }
52
-
53
35
  export const init = () => initBlock( { name, metadata, settings } );
@@ -8,5 +8,5 @@
8
8
 
9
9
  // Add low specificity default padding when a background is used.
10
10
  :where(.wp-block-preformatted.has-background) {
11
- padding: $block-bg-padding--v $block-bg-padding--h;
11
+ padding: $block-bg-padding;
12
12
  }
@@ -1,15 +1,11 @@
1
1
  import { __ } from '@wordpress/i18n';
2
2
  import { pullquote as icon } from '@wordpress/icons';
3
- import { privateApis as blocksPrivateApis } from '@wordpress/blocks';
4
3
  import initBlock from '../utils/init-block';
5
4
  import deprecated from './deprecated';
6
5
  import edit from './edit';
7
6
  import metadata from './block.json';
8
7
  import save from './save';
9
8
  import transforms from './transforms';
10
- import { unlock } from '../lock-unlock';
11
-
12
- const { fieldsKey, formKey } = unlock( blocksPrivateApis );
13
9
 
14
10
  const { name } = metadata;
15
11
 
@@ -33,24 +29,4 @@ export const settings = {
33
29
  deprecated,
34
30
  };
35
31
 
36
- if ( window.__experimentalContentOnlyInspectorFields ) {
37
- settings[ fieldsKey ] = [
38
- {
39
- id: 'value',
40
- label: __( 'Content' ),
41
- type: 'text',
42
- Edit: 'rich-text', // TODO: replace with custom component
43
- },
44
- {
45
- id: 'citation',
46
- label: __( 'Citation' ),
47
- type: 'text',
48
- Edit: 'rich-text', // TODO: replace with custom component
49
- },
50
- ];
51
- settings[ formKey ] = {
52
- fields: [ 'value', 'citation' ],
53
- };
54
- }
55
-
56
32
  export const init = () => initBlock( { name, metadata, settings } );
@@ -1,5 +1,5 @@
1
1
  import { ToggleControl } from '@wordpress/components';
2
- import { __ } from '@wordpress/i18n';
2
+ import { __, sprintf } from '@wordpress/i18n';
3
3
  import { useUnsupportedBlocks } from '../../utils';
4
4
 
5
5
  export default function EnhancedPaginationControl( {
@@ -7,14 +7,21 @@ export default function EnhancedPaginationControl( {
7
7
  setAttributes,
8
8
  clientId,
9
9
  } ) {
10
- const hasUnsupportedBlocks = useUnsupportedBlocks( clientId );
10
+ const unsupportedBlocks = useUnsupportedBlocks( clientId );
11
11
 
12
12
  let help = __(
13
13
  'Reload the full page—instead of just the posts list—when visitors navigate between pages.'
14
14
  );
15
- if ( hasUnsupportedBlocks ) {
16
- help = __(
17
- 'Enhancement disabled because there are non-compatible blocks inside the Query block.'
15
+ if ( unsupportedBlocks.length ) {
16
+ help = sprintf(
17
+ /* translators: %s: A list of block titles. */
18
+ __(
19
+ `Some blocks aren't supported: %s. Remove them to change this setting.`
20
+ ),
21
+ unsupportedBlocks.join(
22
+ /* translators: Used between list items, there is a space after the comma. */
23
+ __( ', ' ) // eslint-disable-line @wordpress/i18n-no-flanking-whitespace
24
+ )
18
25
  );
19
26
  }
20
27
 
@@ -24,7 +31,7 @@ export default function EnhancedPaginationControl( {
24
31
  label={ __( 'Reload full page' ) }
25
32
  help={ help }
26
33
  checked={ ! enhancedPagination }
27
- disabled={ hasUnsupportedBlocks }
34
+ disabled={ !! unsupportedBlocks.length }
28
35
  onChange={ ( value ) => {
29
36
  setAttributes( {
30
37
  enhancedPagination: ! value,
@@ -42,7 +42,9 @@ export default function QueryInspectorControls( props ) {
42
42
  orderBy,
43
43
  author: authorIds,
44
44
  pages,
45
- postType,
45
+ // Match `build_query_vars_from_query_block()`, which queries posts when
46
+ // `query` has no post type.
47
+ postType = 'post',
46
48
  perPage,
47
49
  offset,
48
50
  sticky,
@@ -172,7 +174,7 @@ export default function QueryInspectorControls( props ) {
172
174
  isControlAllowed( allowedControls, 'excludeCurrent' );
173
175
  const postTypeSingularName = useSelect(
174
176
  ( select ) =>
175
- select( coreStore ).getPostType( postType )?.labels.singular_name,
177
+ select( coreStore ).getPostType( postType )?.labels?.singular_name,
176
178
  [ postType ]
177
179
  );
178
180
 
@@ -432,14 +434,17 @@ export default function QueryInspectorControls( props ) {
432
434
  { showSearchControl && (
433
435
  <ToolsPanelItem
434
436
  hasValue={ () => !! querySearch }
435
- label={ __( 'Keyword' ) }
437
+ label={ __( 'Search terms' ) }
436
438
  onDeselect={ () => {
437
439
  setQuery( { search: '' } );
438
440
  setQuerySearch( '' );
439
441
  } }
440
442
  >
441
443
  <TextControl
442
- label={ __( 'Keyword' ) }
444
+ label={ __( 'Search terms' ) }
445
+ help={ __(
446
+ 'Filter the query by keywords that appear in the content, title, or excerpt.'
447
+ ) }
443
448
  value={ querySearch }
444
449
  onChange={ ( newQuerySearch ) => {
445
450
  debouncedQuerySearch( newQuerySearch );
@@ -8,13 +8,13 @@ import {
8
8
  useInnerBlocksProps,
9
9
  privateApis as blockEditorPrivateApis,
10
10
  } from '@wordpress/block-editor';
11
- import { __ } from '@wordpress/i18n';
11
+ import { __, sprintf } from '@wordpress/i18n';
12
12
  import { store as coreStore } from '@wordpress/core-data';
13
+ import { store as noticesStore } from '@wordpress/notices';
13
14
  import EnhancedPaginationControl from './inspector-controls/enhanced-pagination-control';
14
15
  import { unlock } from '../../lock-unlock';
15
16
  import QueryInspectorControls from './inspector-controls';
16
- import EnhancedPaginationModal from './enhanced-pagination-modal';
17
- import { getQueryContextFromTemplate } from '../utils';
17
+ import { getQueryContextFromTemplate, useUnsupportedBlocks } from '../utils';
18
18
  import QueryToolbar from './query-toolbar';
19
19
 
20
20
  const { HTMLElementControl } = unlock( blockEditorPrivateApis );
@@ -41,6 +41,8 @@ export default function QueryContent( {
41
41
  getQueryContextFromTemplate( templateSlug );
42
42
  const { __unstableMarkNextChangeAsNotPersistent } =
43
43
  useDispatch( blockEditorStore );
44
+ const { createNotice } = useDispatch( noticesStore );
45
+ const unsupportedBlocks = useUnsupportedBlocks( clientId );
44
46
  const instanceId = useInstanceId( QueryContent );
45
47
  const blockProps = useBlockProps();
46
48
  const innerBlocksProps = useInnerBlocksProps( blockProps );
@@ -139,6 +141,32 @@ export default function QueryContent( {
139
141
  __unstableMarkNextChangeAsNotPersistent,
140
142
  setAttributes,
141
143
  ] );
144
+ useEffect( () => {
145
+ if ( enhancedPagination && unsupportedBlocks.length ) {
146
+ __unstableMarkNextChangeAsNotPersistent();
147
+ setAttributes( { enhancedPagination: false } );
148
+ const message = sprintf(
149
+ /* translators: %s: A list of block titles. */
150
+ __(
151
+ `"Reload full page" was enabled because some blocks inside the Query block aren't supported: %s.`
152
+ ),
153
+ unsupportedBlocks.join(
154
+ /* translators: Used between list items, there is a space after the comma. */
155
+ __( ', ' ) // eslint-disable-line @wordpress/i18n-no-flanking-whitespace
156
+ )
157
+ );
158
+ createNotice( 'info', message, {
159
+ type: 'snackbar',
160
+ id: 'query-enhanced-pagination-disabled',
161
+ } );
162
+ }
163
+ }, [
164
+ enhancedPagination,
165
+ unsupportedBlocks,
166
+ __unstableMarkNextChangeAsNotPersistent,
167
+ setAttributes,
168
+ createNotice,
169
+ ] );
142
170
 
143
171
  return (
144
172
  <>
@@ -149,11 +177,6 @@ export default function QueryContent( {
149
177
  hasInnerBlocks
150
178
  />
151
179
  ) }
152
- <EnhancedPaginationModal
153
- attributes={ attributes }
154
- setAttributes={ setAttributes }
155
- clientId={ clientId }
156
- />
157
180
  <InspectorControls>
158
181
  <QueryInspectorControls
159
182
  name={ name }
@@ -28,12 +28,6 @@
28
28
  }
29
29
  }
30
30
 
31
- .wp-block-query__enhanced-pagination-modal {
32
- @include break-small() {
33
- max-width: $break-mobile;
34
- }
35
- }
36
-
37
31
  .block-editor-block-settings-menu__popover {
38
32
  &.is-expanded {
39
33
  overflow-y: scroll;
@@ -47,7 +41,7 @@
47
41
  @include break-small() {
48
42
  grid-template-columns: 1fr 1fr;
49
43
  }
50
- grid-gap: $grid-unit-15;
44
+ gap: $grid-unit-15;
51
45
  min-width: $break-zoomed-in;
52
46
  @include break-small() {
53
47
  min-width: $break-mobile;
@@ -108,8 +108,8 @@ function block_core_query_disable_enhanced_pagination( $parsed_block ) {
108
108
  * by adding an attribute called `data-wp-navigation-disabled` which
109
109
  * is later handled by the front-end logic.
110
110
  *
111
- * @param string $content The block content.
112
- * @param array $block The full block, including name and attributes.
111
+ * @param string $content The block content.
112
+ * @param array $block The full block, including name and attributes.
113
113
  * @return string Returns the modified output of the query block.
114
114
  */
115
115
  $render_query_callback = static function ( $content, $block ) use ( &$enhanced_query_stack, &$dirty_enhanced_queries, &$render_query_callback ) {
@@ -1,3 +1,4 @@
1
+ import { describe, expect, it } from 'vitest';
1
2
  import { terms } from './fixtures';
2
3
  import {
3
4
  getEntitiesInfo,
@@ -4,11 +4,7 @@ import { store as coreStore } from '@wordpress/core-data';
4
4
  import { store as blockEditorStore } from '@wordpress/block-editor';
5
5
  import { decodeEntities } from '@wordpress/html-entities';
6
6
  import { __ } from '@wordpress/i18n';
7
- import {
8
- cloneBlock,
9
- getBlockSupport,
10
- store as blocksStore,
11
- } from '@wordpress/blocks';
7
+ import { cloneBlock, store as blocksStore } from '@wordpress/blocks';
12
8
 
13
9
  /** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */
14
10
  /** @typedef {import('@wordpress/components/build-types/query-controls/types').OrderByOption} OrderByOption */
@@ -186,7 +182,7 @@ export function useIsPostTypeHierarchical( postType ) {
186
182
  }
187
183
 
188
184
  /**
189
- * List of avaiable options to order by.
185
+ * List of available options to order by.
190
186
  *
191
187
  * @param {string} postType The post type to check.
192
188
  * @return {OrderByOption[]} List of order options.
@@ -431,17 +427,20 @@ export const usePatterns = ( clientId, name ) => {
431
427
  };
432
428
 
433
429
  /**
434
- * Hook that, given a block clientId, determines if it has unsupported blocks or not.
430
+ * Hook that, given a block clientId, returns the titles of the unsupported
431
+ * blocks it contains, without duplicates.
435
432
  *
436
433
  * @param {string} clientId The block's client ID.
437
- * @return {boolean} True if there are any unsupported blocks.
434
+ * @return {string[]} The titles of the unsupported blocks.
438
435
  */
439
436
  export const useUnsupportedBlocks = ( clientId ) => {
440
437
  return useSelect(
441
438
  ( select ) => {
442
439
  const { getClientIdsOfDescendants, getBlockName } =
443
440
  select( blockEditorStore );
444
- return getClientIdsOfDescendants( clientId ).some(
441
+ const { getBlockSupport, getBlockType } = select( blocksStore );
442
+ const blockTitles = new Set();
443
+ getClientIdsOfDescendants( clientId ).forEach(
445
444
  ( descendantClientId ) => {
446
445
  const blockName = getBlockName( descendantClientId );
447
446
  /*
@@ -459,12 +458,17 @@ export const useUnsupportedBlocks = ( clientId ) => {
459
458
  'interactivity.clientNavigation'
460
459
  );
461
460
 
462
- return (
461
+ if (
463
462
  ! blockSupportsInteractivity &&
464
463
  ! blockSupportsInteractivityClientNavigation
465
- );
464
+ ) {
465
+ blockTitles.add(
466
+ getBlockType( blockName )?.title || blockName
467
+ );
468
+ }
466
469
  }
467
470
  );
471
+ return [ ...blockTitles ];
468
472
  },
469
473
  [ clientId ]
470
474
  );
@@ -1,3 +1,4 @@
1
+ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
1
2
  import {
2
3
  registerBlockType,
3
4
  serialize,
@@ -13,7 +13,7 @@
13
13
  * @param array $attributes Block attributes.
14
14
  * @param string $content Block default content.
15
15
  * @param WP_Block $block Block instance.
16
- * @return string Returns the post link.
16
+ * @return string Returns the post link.
17
17
  */
18
18
  function render_block_core_read_more( $attributes, $content, $block ) {
19
19
  if ( ! isset( $block->context['postId'] ) ) {
@@ -25,10 +25,11 @@ import {
25
25
  __experimentalVStack as VStack,
26
26
  } from '@wordpress/components';
27
27
  import { useInstanceId } from '@wordpress/compose';
28
- import { Icon, search } from '@wordpress/icons';
28
+ import { Icon } from '@wordpress/icons';
29
29
  import { __, sprintf } from '@wordpress/i18n';
30
30
  import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
31
31
  import { speak } from '@wordpress/a11y';
32
+ import { Path, SVG } from '@wordpress/primitives';
32
33
  import {
33
34
  PC_WIDTH_DEFAULT,
34
35
  PX_WIDTH_DEFAULT,
@@ -56,6 +57,15 @@ const TAG_NAME_MESSAGES = {
56
57
  const DEFAULT_INNER_PADDING = '4px';
57
58
  const PERCENTAGE_WIDTHS = [ 25, 50, 75, 100 ];
58
59
 
60
+ // Keep this block-specific icon aligned with the PHP renderer. Unlike the
61
+ // Search icon from @wordpress/icons, it remains fill-based so existing theme
62
+ // styles continue to work in both the editor and the front end.
63
+ const searchBlockIcon = (
64
+ <SVG xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
65
+ <Path d="M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z" />
66
+ </SVG>
67
+ );
68
+
59
69
  export default function SearchEdit( {
60
70
  className,
61
71
  attributes,
@@ -294,7 +304,7 @@ export default function SearchEdit( {
294
304
  }
295
305
  ref={ buttonRef }
296
306
  >
297
- <Icon icon={ search } />
307
+ <Icon icon={ searchBlockIcon } />
298
308
  </button>
299
309
  ) }
300
310
 
@@ -1,13 +1,9 @@
1
1
  import { __ } from '@wordpress/i18n';
2
2
  import { search as icon } from '@wordpress/icons';
3
- import { privateApis as blocksPrivateApis } from '@wordpress/blocks';
4
3
  import initBlock from '../utils/init-block';
5
4
  import metadata from './block.json';
6
5
  import edit from './edit';
7
6
  import variations from './variations';
8
- import { unlock } from '../lock-unlock';
9
-
10
- const { fieldsKey, formKey } = unlock( blocksPrivateApis );
11
7
 
12
8
  const { name } = metadata;
13
9
 
@@ -23,30 +19,4 @@ export const settings = {
23
19
  edit,
24
20
  };
25
21
 
26
- if ( window.__experimentalContentOnlyInspectorFields ) {
27
- settings[ fieldsKey ] = [
28
- {
29
- id: 'label',
30
- label: __( 'Label' ),
31
- type: 'text',
32
- Edit: 'rich-text', // TODO: replace with custom component
33
- },
34
- {
35
- id: 'buttonText',
36
- label: __( 'Button text' ),
37
- type: 'text',
38
- Edit: 'rich-text', // TODO: replace with custom component
39
- },
40
- {
41
- id: 'placeholder',
42
- label: __( 'Placeholder' ),
43
- type: 'text',
44
- Edit: 'rich-text', // TODO: replace with custom component
45
- },
46
- ];
47
- settings[ formKey ] = {
48
- fields: [ 'label', 'buttonText', 'placeholder' ],
49
- };
50
- }
51
-
52
22
  export const init = () => initBlock( { name, metadata, settings } );
@@ -360,7 +360,7 @@ function apply_block_core_search_border_styles( $attributes, $property, &$wrappe
360
360
  *
361
361
  * @since 5.8.0
362
362
  *
363
- * @param array $attributes The block attributes.
363
+ * @param array $attributes The block attributes.
364
364
  *
365
365
  * @return array Style HTML attribute.
366
366
  */