@wordpress/block-library 8.0.0 → 8.1.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 (450) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/categories/edit.js +1 -1
  3. package/build/categories/edit.js.map +1 -1
  4. package/build/cover/edit/inspector-controls.js +1 -1
  5. package/build/cover/edit/inspector-controls.js.map +1 -1
  6. package/build/freeform/edit.js +21 -6
  7. package/build/freeform/edit.js.map +1 -1
  8. package/build/freeform/modal.js +97 -0
  9. package/build/freeform/modal.js.map +1 -0
  10. package/build/gallery/edit.js +13 -2
  11. package/build/gallery/edit.js.map +1 -1
  12. package/build/gallery/gallery.js +2 -16
  13. package/build/gallery/gallery.js.map +1 -1
  14. package/build/image/image.js +1 -0
  15. package/build/image/image.js.map +1 -1
  16. package/build/media-text/edit.js +1 -0
  17. package/build/media-text/edit.js.map +1 -1
  18. package/build/missing/edit.native.js +2 -2
  19. package/build/missing/edit.native.js.map +1 -1
  20. package/build/navigation/edit/index.js +3 -4
  21. package/build/navigation/edit/index.js.map +1 -1
  22. package/build/navigation/edit/menu-inspector-controls.js +29 -7
  23. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  24. package/build/navigation/edit/navigation-menu-selector.js +11 -8
  25. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  26. package/build/navigation/edit/utils.js +81 -0
  27. package/build/navigation/edit/utils.js.map +1 -1
  28. package/build/navigation-link/edit.js +4 -58
  29. package/build/navigation-link/edit.js.map +1 -1
  30. package/build/navigation-submenu/edit.js +7 -72
  31. package/build/navigation-submenu/edit.js.map +1 -1
  32. package/build/page-list/edit.js +16 -15
  33. package/build/page-list/edit.js.map +1 -1
  34. package/build/page-list/index.js +29 -2
  35. package/build/page-list/index.js.map +1 -1
  36. package/build/page-list-item/edit.js +9 -5
  37. package/build/page-list-item/edit.js.map +1 -1
  38. package/build/post-featured-image/overlay.js +0 -1
  39. package/build/post-featured-image/overlay.js.map +1 -1
  40. package/build/query/edit/index.js +2 -1
  41. package/build/query/edit/index.js.map +1 -1
  42. package/build/query/edit/inspector-controls/index.js +10 -5
  43. package/build/query/edit/inspector-controls/index.js.map +1 -1
  44. package/build/query/edit/inspector-controls/taxonomy-controls.js +101 -37
  45. package/build/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
  46. package/build/query/edit/query-content.js +2 -3
  47. package/build/query/edit/query-content.js.map +1 -1
  48. package/build/query/edit/query-placeholder.js +17 -12
  49. package/build/query/edit/query-placeholder.js.map +1 -1
  50. package/build/query/utils.js +73 -1
  51. package/build/query/utils.js.map +1 -1
  52. package/build/search/edit.js +2 -2
  53. package/build/search/edit.js.map +1 -1
  54. package/build/social-link/edit.js.map +1 -1
  55. package/build/social-links/edit.js +0 -1
  56. package/build/social-links/edit.js.map +1 -1
  57. package/build/table-of-contents/edit.js +1 -1
  58. package/build/table-of-contents/edit.js.map +1 -1
  59. package/build/template-part/edit/advanced-controls.js +11 -1
  60. package/build/template-part/edit/advanced-controls.js.map +1 -1
  61. package/build/template-part/edit/import-controls.js +160 -0
  62. package/build/template-part/edit/import-controls.js.map +1 -0
  63. package/build/template-part/edit/index.js +2 -1
  64. package/build/template-part/edit/index.js.map +1 -1
  65. package/build/template-part/edit/utils/transformers.js +48 -0
  66. package/build/template-part/edit/utils/transformers.js.map +1 -0
  67. package/build-module/categories/edit.js +1 -1
  68. package/build-module/categories/edit.js.map +1 -1
  69. package/build-module/cover/edit/inspector-controls.js +3 -3
  70. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  71. package/build-module/freeform/edit.js +22 -8
  72. package/build-module/freeform/edit.js.map +1 -1
  73. package/build-module/freeform/modal.js +90 -0
  74. package/build-module/freeform/modal.js.map +1 -0
  75. package/build-module/gallery/edit.js +14 -3
  76. package/build-module/gallery/edit.js.map +1 -1
  77. package/build-module/gallery/gallery.js +3 -16
  78. package/build-module/gallery/gallery.js.map +1 -1
  79. package/build-module/image/image.js +1 -0
  80. package/build-module/image/image.js.map +1 -1
  81. package/build-module/media-text/edit.js +1 -0
  82. package/build-module/media-text/edit.js.map +1 -1
  83. package/build-module/missing/edit.native.js +2 -2
  84. package/build-module/missing/edit.native.js.map +1 -1
  85. package/build-module/navigation/edit/index.js +3 -4
  86. package/build-module/navigation/edit/index.js.map +1 -1
  87. package/build-module/navigation/edit/menu-inspector-controls.js +30 -9
  88. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  89. package/build-module/navigation/edit/navigation-menu-selector.js +12 -9
  90. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  91. package/build-module/navigation/edit/utils.js +75 -0
  92. package/build-module/navigation/edit/utils.js.map +1 -1
  93. package/build-module/navigation-link/edit.js +4 -59
  94. package/build-module/navigation-link/edit.js.map +1 -1
  95. package/build-module/navigation-submenu/edit.js +6 -72
  96. package/build-module/navigation-submenu/edit.js.map +1 -1
  97. package/build-module/page-list/edit.js +17 -15
  98. package/build-module/page-list/edit.js.map +1 -1
  99. package/build-module/page-list/index.js +30 -3
  100. package/build-module/page-list/index.js.map +1 -1
  101. package/build-module/page-list-item/edit.js +9 -6
  102. package/build-module/page-list-item/edit.js.map +1 -1
  103. package/build-module/post-featured-image/overlay.js +0 -1
  104. package/build-module/post-featured-image/overlay.js.map +1 -1
  105. package/build-module/query/edit/index.js +2 -1
  106. package/build-module/query/edit/index.js.map +1 -1
  107. package/build-module/query/edit/inspector-controls/index.js +10 -5
  108. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  109. package/build-module/query/edit/inspector-controls/taxonomy-controls.js +99 -35
  110. package/build-module/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
  111. package/build-module/query/edit/query-content.js +1 -1
  112. package/build-module/query/edit/query-content.js.map +1 -1
  113. package/build-module/query/edit/query-placeholder.js +16 -12
  114. package/build-module/query/edit/query-placeholder.js.map +1 -1
  115. package/build-module/query/utils.js +69 -0
  116. package/build-module/query/utils.js.map +1 -1
  117. package/build-module/search/edit.js +2 -2
  118. package/build-module/search/edit.js.map +1 -1
  119. package/build-module/social-link/edit.js +2 -2
  120. package/build-module/social-link/edit.js.map +1 -1
  121. package/build-module/social-links/edit.js +0 -1
  122. package/build-module/social-links/edit.js.map +1 -1
  123. package/build-module/table-of-contents/edit.js +1 -1
  124. package/build-module/table-of-contents/edit.js.map +1 -1
  125. package/build-module/template-part/edit/advanced-controls.js +10 -1
  126. package/build-module/template-part/edit/advanced-controls.js.map +1 -1
  127. package/build-module/template-part/edit/import-controls.js +146 -0
  128. package/build-module/template-part/edit/import-controls.js.map +1 -0
  129. package/build-module/template-part/edit/index.js +2 -1
  130. package/build-module/template-part/edit/index.js.map +1 -1
  131. package/build-module/template-part/edit/utils/transformers.js +40 -0
  132. package/build-module/template-part/edit/utils/transformers.js.map +1 -0
  133. package/build-style/archives/editor-rtl.css +3 -3
  134. package/build-style/archives/editor.css +3 -3
  135. package/build-style/archives/style-rtl.css +3 -3
  136. package/build-style/archives/style.css +3 -3
  137. package/build-style/audio/editor-rtl.css +3 -3
  138. package/build-style/audio/editor.css +3 -3
  139. package/build-style/audio/style-rtl.css +3 -3
  140. package/build-style/audio/style.css +3 -3
  141. package/build-style/audio/theme-rtl.css +3 -3
  142. package/build-style/audio/theme.css +3 -3
  143. package/build-style/avatar/editor-rtl.css +3 -3
  144. package/build-style/avatar/editor.css +3 -3
  145. package/build-style/avatar/style-rtl.css +3 -3
  146. package/build-style/avatar/style.css +3 -3
  147. package/build-style/block/editor-rtl.css +3 -3
  148. package/build-style/block/editor.css +3 -3
  149. package/build-style/button/editor-rtl.css +3 -3
  150. package/build-style/button/editor.css +3 -3
  151. package/build-style/button/style-rtl.css +3 -3
  152. package/build-style/button/style.css +3 -3
  153. package/build-style/buttons/editor-rtl.css +3 -3
  154. package/build-style/buttons/editor.css +3 -3
  155. package/build-style/buttons/style-rtl.css +3 -3
  156. package/build-style/buttons/style.css +3 -3
  157. package/build-style/calendar/style-rtl.css +3 -3
  158. package/build-style/calendar/style.css +3 -3
  159. package/build-style/categories/editor-rtl.css +3 -3
  160. package/build-style/categories/editor.css +3 -3
  161. package/build-style/categories/style-rtl.css +3 -3
  162. package/build-style/categories/style.css +3 -3
  163. package/build-style/classic-rtl.css +3 -3
  164. package/build-style/classic.css +3 -3
  165. package/build-style/code/editor-rtl.css +3 -3
  166. package/build-style/code/editor.css +3 -3
  167. package/build-style/code/style-rtl.css +3 -3
  168. package/build-style/code/style.css +3 -3
  169. package/build-style/code/theme-rtl.css +3 -3
  170. package/build-style/code/theme.css +3 -3
  171. package/build-style/columns/editor-rtl.css +3 -3
  172. package/build-style/columns/editor.css +3 -3
  173. package/build-style/columns/style-rtl.css +3 -3
  174. package/build-style/columns/style.css +3 -3
  175. package/build-style/comment-author-avatar/editor-rtl.css +3 -3
  176. package/build-style/comment-author-avatar/editor.css +3 -3
  177. package/build-style/comment-content/style-rtl.css +3 -3
  178. package/build-style/comment-content/style.css +3 -3
  179. package/build-style/comment-template/style-rtl.css +3 -3
  180. package/build-style/comment-template/style.css +3 -3
  181. package/build-style/comments/editor-rtl.css +3 -3
  182. package/build-style/comments/editor.css +3 -3
  183. package/build-style/comments/style-rtl.css +3 -3
  184. package/build-style/comments/style.css +3 -3
  185. package/build-style/comments-pagination/editor-rtl.css +3 -3
  186. package/build-style/comments-pagination/editor.css +3 -3
  187. package/build-style/comments-pagination/style-rtl.css +3 -3
  188. package/build-style/comments-pagination/style.css +3 -3
  189. package/build-style/comments-pagination-numbers/editor-rtl.css +3 -3
  190. package/build-style/comments-pagination-numbers/editor.css +3 -3
  191. package/build-style/comments-title/editor-rtl.css +3 -3
  192. package/build-style/comments-title/editor.css +3 -3
  193. package/build-style/common-rtl.css +3 -3
  194. package/build-style/common.css +3 -3
  195. package/build-style/cover/editor-rtl.css +3 -3
  196. package/build-style/cover/editor.css +3 -3
  197. package/build-style/cover/style-rtl.css +3 -3
  198. package/build-style/cover/style.css +3 -3
  199. package/build-style/editor-elements-rtl.css +3 -3
  200. package/build-style/editor-elements.css +3 -3
  201. package/build-style/editor-rtl.css +7 -9
  202. package/build-style/editor.css +7 -9
  203. package/build-style/elements-rtl.css +3 -3
  204. package/build-style/elements.css +3 -3
  205. package/build-style/embed/editor-rtl.css +3 -3
  206. package/build-style/embed/editor.css +3 -3
  207. package/build-style/embed/style-rtl.css +3 -3
  208. package/build-style/embed/style.css +3 -3
  209. package/build-style/embed/theme-rtl.css +3 -3
  210. package/build-style/embed/theme.css +3 -3
  211. package/build-style/file/editor-rtl.css +3 -3
  212. package/build-style/file/editor.css +3 -3
  213. package/build-style/file/style-rtl.css +3 -3
  214. package/build-style/file/style.css +3 -3
  215. package/build-style/freeform/editor-rtl.css +3 -3
  216. package/build-style/freeform/editor.css +3 -3
  217. package/build-style/gallery/editor-rtl.css +3 -3
  218. package/build-style/gallery/editor.css +3 -3
  219. package/build-style/gallery/style-rtl.css +3 -3
  220. package/build-style/gallery/style.css +3 -3
  221. package/build-style/gallery/theme-rtl.css +3 -3
  222. package/build-style/gallery/theme.css +3 -3
  223. package/build-style/group/editor-rtl.css +3 -3
  224. package/build-style/group/editor.css +3 -3
  225. package/build-style/group/style-rtl.css +3 -3
  226. package/build-style/group/style.css +3 -3
  227. package/build-style/group/theme-rtl.css +3 -3
  228. package/build-style/group/theme.css +3 -3
  229. package/build-style/heading/style-rtl.css +3 -3
  230. package/build-style/heading/style.css +3 -3
  231. package/build-style/html/editor-rtl.css +3 -3
  232. package/build-style/html/editor.css +3 -3
  233. package/build-style/image/editor-rtl.css +3 -3
  234. package/build-style/image/editor.css +3 -3
  235. package/build-style/image/style-rtl.css +3 -3
  236. package/build-style/image/style.css +3 -3
  237. package/build-style/image/theme-rtl.css +3 -3
  238. package/build-style/image/theme.css +3 -3
  239. package/build-style/latest-comments/style-rtl.css +3 -3
  240. package/build-style/latest-comments/style.css +3 -3
  241. package/build-style/latest-posts/editor-rtl.css +3 -3
  242. package/build-style/latest-posts/editor.css +3 -3
  243. package/build-style/latest-posts/style-rtl.css +3 -3
  244. package/build-style/latest-posts/style.css +3 -3
  245. package/build-style/list/style-rtl.css +3 -3
  246. package/build-style/list/style.css +3 -3
  247. package/build-style/media-text/editor-rtl.css +3 -3
  248. package/build-style/media-text/editor.css +3 -3
  249. package/build-style/media-text/style-rtl.css +3 -3
  250. package/build-style/media-text/style.css +3 -3
  251. package/build-style/more/editor-rtl.css +3 -3
  252. package/build-style/more/editor.css +3 -3
  253. package/build-style/navigation/editor-rtl.css +3 -9
  254. package/build-style/navigation/editor.css +3 -9
  255. package/build-style/navigation/style-rtl.css +3 -4
  256. package/build-style/navigation/style.css +3 -4
  257. package/build-style/navigation-link/editor-rtl.css +3 -3
  258. package/build-style/navigation-link/editor.css +3 -3
  259. package/build-style/navigation-link/style-rtl.css +3 -3
  260. package/build-style/navigation-link/style.css +3 -3
  261. package/build-style/navigation-submenu/editor-rtl.css +3 -3
  262. package/build-style/navigation-submenu/editor.css +3 -3
  263. package/build-style/nextpage/editor-rtl.css +3 -3
  264. package/build-style/nextpage/editor.css +3 -3
  265. package/build-style/page-list/editor-rtl.css +7 -3
  266. package/build-style/page-list/editor.css +7 -3
  267. package/build-style/page-list/style-rtl.css +3 -3
  268. package/build-style/page-list/style.css +3 -3
  269. package/build-style/paragraph/editor-rtl.css +3 -3
  270. package/build-style/paragraph/editor.css +3 -3
  271. package/build-style/paragraph/style-rtl.css +3 -3
  272. package/build-style/paragraph/style.css +3 -3
  273. package/build-style/post-author/style-rtl.css +3 -3
  274. package/build-style/post-author/style.css +3 -3
  275. package/build-style/post-comments-form/editor-rtl.css +3 -3
  276. package/build-style/post-comments-form/editor.css +3 -3
  277. package/build-style/post-comments-form/style-rtl.css +3 -3
  278. package/build-style/post-comments-form/style.css +3 -3
  279. package/build-style/post-date/style-rtl.css +3 -3
  280. package/build-style/post-date/style.css +3 -3
  281. package/build-style/post-excerpt/editor-rtl.css +3 -3
  282. package/build-style/post-excerpt/editor.css +3 -3
  283. package/build-style/post-excerpt/style-rtl.css +3 -3
  284. package/build-style/post-excerpt/style.css +3 -3
  285. package/build-style/post-featured-image/editor-rtl.css +3 -3
  286. package/build-style/post-featured-image/editor.css +3 -3
  287. package/build-style/post-featured-image/style-rtl.css +3 -3
  288. package/build-style/post-featured-image/style.css +3 -3
  289. package/build-style/post-navigation-link/style-rtl.css +3 -3
  290. package/build-style/post-navigation-link/style.css +3 -3
  291. package/build-style/post-template/editor-rtl.css +3 -3
  292. package/build-style/post-template/editor.css +3 -3
  293. package/build-style/post-template/style-rtl.css +3 -3
  294. package/build-style/post-template/style.css +3 -3
  295. package/build-style/post-terms/style-rtl.css +3 -3
  296. package/build-style/post-terms/style.css +3 -3
  297. package/build-style/post-title/style-rtl.css +3 -3
  298. package/build-style/post-title/style.css +3 -3
  299. package/build-style/preformatted/style-rtl.css +3 -3
  300. package/build-style/preformatted/style.css +3 -3
  301. package/build-style/pullquote/editor-rtl.css +3 -3
  302. package/build-style/pullquote/editor.css +3 -3
  303. package/build-style/pullquote/style-rtl.css +3 -3
  304. package/build-style/pullquote/style.css +3 -3
  305. package/build-style/pullquote/theme-rtl.css +3 -3
  306. package/build-style/pullquote/theme.css +3 -3
  307. package/build-style/query/editor-rtl.css +3 -3
  308. package/build-style/query/editor.css +3 -3
  309. package/build-style/query-pagination/editor-rtl.css +3 -3
  310. package/build-style/query-pagination/editor.css +3 -3
  311. package/build-style/query-pagination/style-rtl.css +3 -3
  312. package/build-style/query-pagination/style.css +3 -3
  313. package/build-style/query-pagination-numbers/editor-rtl.css +3 -3
  314. package/build-style/query-pagination-numbers/editor.css +3 -3
  315. package/build-style/query-title/style-rtl.css +3 -3
  316. package/build-style/query-title/style.css +3 -3
  317. package/build-style/quote/style-rtl.css +3 -3
  318. package/build-style/quote/style.css +3 -3
  319. package/build-style/quote/theme-rtl.css +3 -3
  320. package/build-style/quote/theme.css +3 -3
  321. package/build-style/read-more/style-rtl.css +3 -3
  322. package/build-style/read-more/style.css +3 -3
  323. package/build-style/reset-rtl.css +3 -3
  324. package/build-style/reset.css +3 -3
  325. package/build-style/rss/editor-rtl.css +3 -3
  326. package/build-style/rss/editor.css +3 -3
  327. package/build-style/rss/style-rtl.css +3 -3
  328. package/build-style/rss/style.css +3 -3
  329. package/build-style/search/editor-rtl.css +3 -3
  330. package/build-style/search/editor.css +3 -3
  331. package/build-style/search/style-rtl.css +3 -3
  332. package/build-style/search/style.css +3 -3
  333. package/build-style/search/theme-rtl.css +3 -3
  334. package/build-style/search/theme.css +3 -3
  335. package/build-style/separator/editor-rtl.css +3 -3
  336. package/build-style/separator/editor.css +3 -3
  337. package/build-style/separator/style-rtl.css +3 -3
  338. package/build-style/separator/style.css +3 -3
  339. package/build-style/separator/theme-rtl.css +3 -3
  340. package/build-style/separator/theme.css +3 -3
  341. package/build-style/shortcode/editor-rtl.css +3 -3
  342. package/build-style/shortcode/editor.css +3 -3
  343. package/build-style/site-logo/editor-rtl.css +3 -3
  344. package/build-style/site-logo/editor.css +3 -3
  345. package/build-style/site-logo/style-rtl.css +3 -3
  346. package/build-style/site-logo/style.css +3 -3
  347. package/build-style/site-tagline/editor-rtl.css +3 -3
  348. package/build-style/site-tagline/editor.css +3 -3
  349. package/build-style/site-title/editor-rtl.css +3 -3
  350. package/build-style/site-title/editor.css +3 -3
  351. package/build-style/site-title/style-rtl.css +3 -3
  352. package/build-style/site-title/style.css +3 -3
  353. package/build-style/social-link/editor-rtl.css +3 -3
  354. package/build-style/social-link/editor.css +3 -3
  355. package/build-style/social-links/editor-rtl.css +3 -3
  356. package/build-style/social-links/editor.css +3 -3
  357. package/build-style/social-links/style-rtl.css +3 -3
  358. package/build-style/social-links/style.css +3 -3
  359. package/build-style/spacer/editor-rtl.css +3 -3
  360. package/build-style/spacer/editor.css +3 -3
  361. package/build-style/spacer/style-rtl.css +3 -3
  362. package/build-style/spacer/style.css +3 -3
  363. package/build-style/style-rtl.css +13 -5
  364. package/build-style/style.css +13 -5
  365. package/build-style/table/editor-rtl.css +3 -3
  366. package/build-style/table/editor.css +3 -3
  367. package/build-style/table/style-rtl.css +9 -3
  368. package/build-style/table/style.css +9 -3
  369. package/build-style/table/theme-rtl.css +3 -9
  370. package/build-style/table/theme.css +3 -9
  371. package/build-style/tag-cloud/style-rtl.css +3 -3
  372. package/build-style/tag-cloud/style.css +3 -3
  373. package/build-style/template-part/editor-rtl.css +3 -3
  374. package/build-style/template-part/editor.css +3 -3
  375. package/build-style/template-part/theme-rtl.css +3 -3
  376. package/build-style/template-part/theme.css +3 -3
  377. package/build-style/text-columns/editor-rtl.css +3 -3
  378. package/build-style/text-columns/editor.css +3 -3
  379. package/build-style/text-columns/style-rtl.css +3 -3
  380. package/build-style/text-columns/style.css +3 -3
  381. package/build-style/theme-rtl.css +3 -9
  382. package/build-style/theme.css +3 -9
  383. package/build-style/verse/style-rtl.css +7 -4
  384. package/build-style/verse/style.css +7 -4
  385. package/build-style/video/editor-rtl.css +3 -3
  386. package/build-style/video/editor.css +3 -3
  387. package/build-style/video/style-rtl.css +3 -3
  388. package/build-style/video/style.css +3 -3
  389. package/build-style/video/theme-rtl.css +3 -3
  390. package/build-style/video/theme.css +3 -3
  391. package/package.json +29 -29
  392. package/src/categories/edit.js +1 -1
  393. package/src/comments/index.php +0 -1
  394. package/src/cover/edit/inspector-controls.js +4 -4
  395. package/src/freeform/edit.js +48 -29
  396. package/src/freeform/modal.js +111 -0
  397. package/src/gallery/edit.js +17 -2
  398. package/src/gallery/gallery.js +3 -13
  399. package/src/image/image.js +1 -0
  400. package/src/latest-posts/test/__snapshots__/edit.native.js.snap +3 -0
  401. package/src/latest-posts/test/edit.native.js +49 -0
  402. package/src/media-text/edit.js +1 -0
  403. package/src/missing/edit.native.js +13 -6
  404. package/src/more/test/__snapshots__/edit.native.js.snap +7 -0
  405. package/src/more/test/edit.native.js +41 -0
  406. package/src/navigation/edit/index.js +3 -4
  407. package/src/navigation/edit/menu-inspector-controls.js +70 -29
  408. package/src/navigation/edit/navigation-menu-selector.js +19 -9
  409. package/src/navigation/edit/utils.js +82 -0
  410. package/src/navigation/editor.scss +0 -7
  411. package/src/navigation/index.php +32 -0
  412. package/src/navigation/style.scss +0 -1
  413. package/src/navigation-link/edit.js +5 -58
  414. package/src/navigation-link/index.php +32 -0
  415. package/src/navigation-submenu/edit.js +29 -100
  416. package/src/navigation-submenu/index.php +32 -0
  417. package/src/page-list/block.json +18 -1
  418. package/src/page-list/edit.js +30 -22
  419. package/src/page-list/editor.scss +4 -0
  420. package/src/page-list/index.js +8 -2
  421. package/src/page-list/index.php +9 -10
  422. package/src/page-list-item/edit.js +17 -9
  423. package/src/post-featured-image/overlay.js +0 -1
  424. package/src/query/edit/index.js +1 -0
  425. package/src/query/edit/inspector-controls/index.js +49 -38
  426. package/src/query/edit/inspector-controls/taxonomy-controls.js +102 -38
  427. package/src/query/edit/query-content.js +2 -1
  428. package/src/query/edit/query-placeholder.js +15 -14
  429. package/src/query/utils.js +59 -1
  430. package/src/search/edit.js +2 -2
  431. package/src/separator/test/__snapshots__/edit.native.js.snap +7 -0
  432. package/src/separator/test/edit.native.js +41 -0
  433. package/src/social-link/edit.js +3 -3
  434. package/src/social-links/edit.js +0 -1
  435. package/src/table/style.scss +8 -0
  436. package/src/table/theme.scss +0 -8
  437. package/src/table-of-contents/edit.js +1 -1
  438. package/src/template-part/edit/advanced-controls.js +12 -0
  439. package/src/template-part/edit/import-controls.js +180 -0
  440. package/src/template-part/edit/index.js +1 -0
  441. package/src/template-part/edit/utils/transformers.js +37 -0
  442. package/src/verse/style.scss +4 -1
  443. package/src/verse/test/__snapshots__/edit.native.js.snap +13 -0
  444. package/src/verse/test/edit.native.js +40 -33
  445. package/tsconfig.tsbuildinfo +1 -1
  446. package/build/query/constants.js +0 -16
  447. package/build/query/constants.js.map +0 -1
  448. package/build-module/query/constants.js +0 -7
  449. package/build-module/query/constants.js.map +0 -1
  450. package/src/query/constants.js +0 -7
@@ -4,12 +4,20 @@
4
4
  import { FormTokenField } from '@wordpress/components';
5
5
  import { useSelect } from '@wordpress/data';
6
6
  import { store as coreStore } from '@wordpress/core-data';
7
+ import { useState, useEffect } from '@wordpress/element';
8
+ import { useDebounce } from '@wordpress/compose';
7
9
 
8
10
  /**
9
11
  * Internal dependencies
10
12
  */
11
13
  import { useTaxonomies } from '../../utils';
12
- import { MAX_FETCHED_TERMS } from '../../constants';
14
+
15
+ const EMPTY_ARRAY = [];
16
+ const BASE_QUERY = {
17
+ order: 'asc',
18
+ _fields: 'id,name',
19
+ context: 'view',
20
+ };
13
21
 
14
22
  // Helper function to get the term id based on user input in terms `FormTokenField`.
15
23
  const getTermIdByTermValue = ( terms, termValue ) => {
@@ -35,20 +43,6 @@ const getTermIdByTermValue = ( terms, termValue ) => {
35
43
  )?.id;
36
44
  };
37
45
 
38
- const useTaxonomyTerms = ( slug ) => {
39
- return useSelect(
40
- ( select ) => {
41
- const terms = select( coreStore ).getEntityRecords(
42
- 'taxonomy',
43
- slug,
44
- { context: 'view', per_page: MAX_FETCHED_TERMS }
45
- );
46
- return { terms };
47
- },
48
- [ slug ]
49
- );
50
- };
51
-
52
46
  export function TaxonomyControls( { onChange, query } ) {
53
47
  const { postType, taxQuery } = query;
54
48
 
@@ -60,7 +54,7 @@ export function TaxonomyControls( { onChange, query } ) {
60
54
  return (
61
55
  <>
62
56
  { taxonomies.map( ( taxonomy ) => {
63
- const value = taxQuery?.[ taxonomy.slug ] || [];
57
+ const termIds = taxQuery?.[ taxonomy.slug ] || [];
64
58
  const handleChange = ( newTermIds ) =>
65
59
  onChange( {
66
60
  taxQuery: {
@@ -73,7 +67,7 @@ export function TaxonomyControls( { onChange, query } ) {
73
67
  <TaxonomyItem
74
68
  key={ taxonomy.slug }
75
69
  taxonomy={ taxonomy }
76
- value={ value }
70
+ termIds={ termIds }
77
71
  onChange={ handleChange }
78
72
  />
79
73
  );
@@ -81,38 +75,108 @@ export function TaxonomyControls( { onChange, query } ) {
81
75
  </>
82
76
  );
83
77
  }
84
- function TaxonomyItem( { taxonomy, value, onChange } ) {
85
- const { terms } = useTaxonomyTerms( taxonomy.slug );
86
- if ( ! terms?.length ) {
87
- return null;
88
- }
89
78
 
79
+ /**
80
+ * Renders a `FormTokenField` for a given taxonomy.
81
+ *
82
+ * @param {Object} props The props for the component.
83
+ * @param {Object} props.taxonomy The taxonomy object.
84
+ * @param {number[]} props.termIds An array with the block's term ids for the given taxonomy.
85
+ * @param {Function} props.onChange Callback `onChange` function.
86
+ * @return {JSX.Element} The rendered component.
87
+ */
88
+ function TaxonomyItem( { taxonomy, termIds, onChange } ) {
89
+ const [ search, setSearch ] = useState( '' );
90
+ const [ value, setValue ] = useState( EMPTY_ARRAY );
91
+ const [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );
92
+ const debouncedSearch = useDebounce( setSearch, 250 );
93
+ const { searchResults, searchHasResolved } = useSelect(
94
+ ( select ) => {
95
+ if ( ! search ) {
96
+ return { searchResults: EMPTY_ARRAY, searchHasResolved: true };
97
+ }
98
+ const { getEntityRecords, hasFinishedResolution } =
99
+ select( coreStore );
100
+ const selectorArgs = [
101
+ 'taxonomy',
102
+ taxonomy.slug,
103
+ {
104
+ ...BASE_QUERY,
105
+ search,
106
+ orderby: 'name',
107
+ exclude: termIds,
108
+ per_page: 20,
109
+ },
110
+ ];
111
+ return {
112
+ searchResults: getEntityRecords( ...selectorArgs ),
113
+ searchHasResolved: hasFinishedResolution(
114
+ 'getEntityRecords',
115
+ selectorArgs
116
+ ),
117
+ };
118
+ },
119
+ [ search, termIds ]
120
+ );
121
+ // `existingTerms` are the ones fetched from the API and their type is `{ id: number; name: string }`.
122
+ // They are used to extract the terms' names to populate the `FormTokenField` properly
123
+ // and to sanitize the provided `termIds`, by setting only the ones that exist.
124
+ const existingTerms = useSelect(
125
+ ( select ) => {
126
+ if ( ! termIds?.length ) return EMPTY_ARRAY;
127
+ const { getEntityRecords } = select( coreStore );
128
+ return getEntityRecords( 'taxonomy', taxonomy.slug, {
129
+ ...BASE_QUERY,
130
+ include: termIds,
131
+ per_page: termIds.length,
132
+ } );
133
+ },
134
+ [ termIds ]
135
+ );
136
+ // Update the `value` state only after the selectors are resolved
137
+ // to avoid emptying the input when we're changing terms.
138
+ useEffect( () => {
139
+ if ( ! termIds?.length ) {
140
+ setValue( EMPTY_ARRAY );
141
+ }
142
+ if ( ! existingTerms?.length ) return;
143
+ // Returns only the existing entity ids. This prevents the component
144
+ // from crashing in the editor, when non existing ids are provided.
145
+ const sanitizedValue = termIds.reduce( ( accumulator, id ) => {
146
+ const entity = existingTerms.find( ( term ) => term.id === id );
147
+ if ( entity ) {
148
+ accumulator.push( {
149
+ id,
150
+ value: entity.name,
151
+ } );
152
+ }
153
+ return accumulator;
154
+ }, [] );
155
+ setValue( sanitizedValue );
156
+ }, [ termIds, existingTerms ] );
157
+ // Update suggestions only when the query has resolved.
158
+ useEffect( () => {
159
+ if ( ! searchHasResolved ) return;
160
+ setSuggestions( searchResults.map( ( result ) => result.name ) );
161
+ }, [ searchResults, searchHasResolved ] );
90
162
  const onTermsChange = ( newTermValues ) => {
91
- const termIds = new Set();
163
+ const newTermIds = new Set();
92
164
  for ( const termValue of newTermValues ) {
93
- const termId = getTermIdByTermValue( terms, termValue );
165
+ const termId = getTermIdByTermValue( searchResults, termValue );
94
166
  if ( termId ) {
95
- termIds.add( termId );
167
+ newTermIds.add( termId );
96
168
  }
97
169
  }
98
-
99
- onChange( Array.from( termIds ) );
170
+ setSuggestions( EMPTY_ARRAY );
171
+ onChange( Array.from( newTermIds ) );
100
172
  };
101
-
102
- // Selects only the existing term ids in proper format to be
103
- // used in `FormTokenField`. This prevents the component from
104
- // crashing in the editor, when non existing term ids were provided.
105
- const taxQueryValue = value
106
- .map( ( termId ) => terms.find( ( t ) => t.id === termId ) )
107
- .filter( Boolean )
108
- .map( ( term ) => ( { id: term.id, value: term.name } ) );
109
-
110
173
  return (
111
174
  <div className="block-library-query-inspector__taxonomy-control">
112
175
  <FormTokenField
113
176
  label={ taxonomy.name }
114
- value={ taxQueryValue }
115
- suggestions={ terms.map( ( t ) => t.name ) }
177
+ value={ value }
178
+ onInputChange={ debouncedSearch }
179
+ suggestions={ suggestions }
116
180
  onChange={ onTermsChange }
117
181
  __experimentalShowHowTo={ false }
118
182
  />
@@ -20,7 +20,8 @@ import { __ } from '@wordpress/i18n';
20
20
  */
21
21
  import QueryToolbar from './query-toolbar';
22
22
  import QueryInspectorControls from './inspector-controls';
23
- import { DEFAULTS_POSTS_PER_PAGE } from '../constants';
23
+
24
+ const DEFAULTS_POSTS_PER_PAGE = 3;
24
25
 
25
26
  const TEMPLATE = [ [ 'core/post-template' ] ];
26
27
  export default function QueryContent( {
@@ -16,6 +16,11 @@ import {
16
16
  import { Button, Placeholder } from '@wordpress/components';
17
17
  import { __ } from '@wordpress/i18n';
18
18
 
19
+ /**
20
+ * Internal dependencies
21
+ */
22
+ import { useScopedBlockVariations } from '../utils';
23
+
19
24
  export default function QueryPlaceholder( {
20
25
  attributes,
21
26
  clientId,
@@ -57,7 +62,6 @@ export default function QueryPlaceholder( {
57
62
  return (
58
63
  <QueryVariationPicker
59
64
  clientId={ clientId }
60
- name={ name }
61
65
  attributes={ attributes }
62
66
  setAttributes={ setAttributes }
63
67
  icon={ icon }
@@ -98,16 +102,12 @@ export default function QueryPlaceholder( {
98
102
 
99
103
  function QueryVariationPicker( {
100
104
  clientId,
101
- name,
102
105
  attributes,
103
106
  setAttributes,
104
107
  icon,
105
108
  label,
106
109
  } ) {
107
- const variations = useSelect(
108
- ( select ) => select( blocksStore ).getBlockVariations( name, 'block' ),
109
- [ name ]
110
- );
110
+ const scopeVariations = useScopedBlockVariations( attributes );
111
111
  const { replaceInnerBlocks } = useDispatch( blockEditorStore );
112
112
  const blockProps = useBlockProps();
113
113
  return (
@@ -115,24 +115,25 @@ function QueryVariationPicker( {
115
115
  <__experimentalBlockVariationPicker
116
116
  icon={ icon }
117
117
  label={ label }
118
- variations={ variations }
119
- onSelect={ ( nextVariation ) => {
120
- if ( nextVariation.attributes ) {
118
+ variations={ scopeVariations }
119
+ onSelect={ ( variation ) => {
120
+ if ( variation.attributes ) {
121
121
  setAttributes( {
122
- ...nextVariation.attributes,
122
+ ...variation.attributes,
123
123
  query: {
124
- ...nextVariation.attributes.query,
124
+ ...variation.attributes.query,
125
125
  postType:
126
126
  attributes.query.postType ||
127
- nextVariation.attributes.query.postType,
127
+ variation.attributes.query.postType,
128
128
  },
129
+ namespace: attributes.namespace,
129
130
  } );
130
131
  }
131
- if ( nextVariation.innerBlocks ) {
132
+ if ( variation.innerBlocks ) {
132
133
  replaceInnerBlocks(
133
134
  clientId,
134
135
  createBlocksFromInnerBlocksTemplate(
135
- nextVariation.innerBlocks
136
+ variation.innerBlocks
136
137
  ),
137
138
  false
138
139
  );
@@ -18,6 +18,8 @@ import { cloneBlock, store as blocksStore } from '@wordpress/blocks';
18
18
  */
19
19
  import { name as queryLoopName } from './block.json';
20
20
 
21
+ /** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */
22
+
21
23
  /**
22
24
  * @typedef IHasNameAndId
23
25
  * @property {string|number} id The entity's id.
@@ -237,7 +239,6 @@ export function useBlockNameForPatterns( clientId, attributes ) {
237
239
  queryLoopName,
238
240
  attributes
239
241
  )?.name,
240
-
241
242
  [ attributes ]
242
243
  );
243
244
  const blockName = `${ queryLoopName }/${ activeVariationName }`;
@@ -260,3 +261,60 @@ export function useBlockNameForPatterns( clientId, attributes ) {
260
261
  );
261
262
  return activeVariationPatterns?.length ? blockName : queryLoopName;
262
263
  }
264
+
265
+ /**
266
+ * Helper hook that determines if there is an active variation of the block
267
+ * and if there are available specific scoped `block` variations connected with
268
+ * this variation.
269
+ *
270
+ * If there are, these variations are going to be the only ones suggested
271
+ * to the user in setup flow when clicking to `start blank`, without including
272
+ * the default ones for Query Loop.
273
+ *
274
+ * If there are no such scoped `block` variations, the default ones for Query
275
+ * Loop are going to be suggested.
276
+ *
277
+ * The way we determine such variations is with the convention that they have the `namespace`
278
+ * attribute defined as an array. This array should contain the names(`name` property) of any
279
+ * variations they want to be connected to.
280
+ * For example, if we have a `Query Loop` scoped `inserter` variation with the name `products`,
281
+ * we can connect a scoped `block` variation by setting its `namespace` attribute to `['products']`.
282
+ * If the user selects this variation, the `namespace` attribute will be overridden by the
283
+ * main `inserter` variation.
284
+ *
285
+ * @param {Object} attributes The block's attributes.
286
+ * @return {WPBlockVariation[]} The block variations to be suggested in setup flow, when clicking to `start blank`.
287
+ */
288
+ export function useScopedBlockVariations( attributes ) {
289
+ const { activeVariationName, blockVariations } = useSelect(
290
+ ( select ) => {
291
+ const { getActiveBlockVariation, getBlockVariations } =
292
+ select( blocksStore );
293
+ return {
294
+ activeVariationName: getActiveBlockVariation(
295
+ queryLoopName,
296
+ attributes
297
+ )?.name,
298
+ blockVariations: getBlockVariations( queryLoopName, 'block' ),
299
+ };
300
+ },
301
+ [ attributes ]
302
+ );
303
+ const variations = useMemo( () => {
304
+ // Filter out the variations that have defined a `namespace` attribute,
305
+ // which means they are 'connected' to specific variations of the block.
306
+ const isNotConnected = ( variation ) =>
307
+ ! variation.attributes?.namespace;
308
+ if ( ! activeVariationName ) {
309
+ return blockVariations.filter( isNotConnected );
310
+ }
311
+ const connectedVariations = blockVariations.filter( ( variation ) =>
312
+ variation.attributes?.namespace?.includes( activeVariationName )
313
+ );
314
+ if ( !! connectedVariations.length ) {
315
+ return connectedVariations;
316
+ }
317
+ return blockVariations.filter( isNotConnected );
318
+ }, [ activeVariationName, blockVariations ] );
319
+ return variations;
320
+ }
@@ -114,10 +114,10 @@ export default function SearchEdit( {
114
114
  }
115
115
 
116
116
  const colorProps = useColorProps( attributes );
117
- const fluidTypographyEnabled = useSetting( 'typography.fluid' );
117
+ const fluidTypographySettings = useSetting( 'typography.fluid' );
118
118
  const typographyProps = useTypographyProps(
119
119
  attributes,
120
- fluidTypographyEnabled
120
+ fluidTypographySettings
121
121
  );
122
122
  const unitControlInstanceId = useInstanceId( UnitControl );
123
123
  const unitControlInputId = `wp-block-search__width-${ unitControlInstanceId }`;
@@ -0,0 +1,7 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Separator block inserts block 1`] = `
4
+ "<!-- wp:separator -->
5
+ <hr class=\\"wp-block-separator has-alpha-channel-opacity\\"/>
6
+ <!-- /wp:separator -->"
7
+ `;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ addBlock,
6
+ getEditorHtml,
7
+ initializeEditor,
8
+ getBlock,
9
+ } from 'test/helpers';
10
+
11
+ /**
12
+ * WordPress dependencies
13
+ */
14
+ import { getBlockTypes, unregisterBlockType } from '@wordpress/blocks';
15
+ import { registerCoreBlocks } from '@wordpress/block-library';
16
+
17
+ beforeAll( () => {
18
+ // Register all core blocks
19
+ registerCoreBlocks();
20
+ } );
21
+
22
+ afterAll( () => {
23
+ // Clean up registered blocks
24
+ getBlockTypes().forEach( ( block ) => {
25
+ unregisterBlockType( block.name );
26
+ } );
27
+ } );
28
+
29
+ describe( 'Separator block', () => {
30
+ it( 'inserts block', async () => {
31
+ const screen = await initializeEditor();
32
+
33
+ // Add block
34
+ await addBlock( screen, 'Separator' );
35
+
36
+ // Get block
37
+ const separatorBlock = await getBlock( screen, 'Separator' );
38
+ expect( separatorBlock ).toBeVisible();
39
+ expect( getEditorHtml() ).toMatchSnapshot();
40
+ } );
41
+ } );
@@ -12,7 +12,7 @@ import {
12
12
  URLInput,
13
13
  useBlockProps,
14
14
  } from '@wordpress/block-editor';
15
- import { Fragment, useState } from '@wordpress/element';
15
+ import { useState } from '@wordpress/element';
16
16
  import {
17
17
  Button,
18
18
  PanelBody,
@@ -89,7 +89,7 @@ const SocialLinkEdit = ( {
89
89
  } );
90
90
 
91
91
  return (
92
- <Fragment>
92
+ <>
93
93
  <InspectorControls>
94
94
  <PanelBody
95
95
  title={ sprintf(
@@ -144,7 +144,7 @@ const SocialLinkEdit = ( {
144
144
  ) }
145
145
  </Button>
146
146
  </li>
147
- </Fragment>
147
+ </>
148
148
  );
149
149
  };
150
150
 
@@ -229,7 +229,6 @@ export function SocialLinksEdit( props ) {
229
229
  ( { onChange, label, value, resetAllFilter } ) => (
230
230
  <ColorGradientSettingsDropdown
231
231
  key={ `social-links-color-${ label }` }
232
- __experimentalHasMultipleOrigins
233
232
  __experimentalIsRenderedInSidebar
234
233
  settings={ [
235
234
  {
@@ -11,6 +11,14 @@
11
11
  width: 100%;
12
12
  }
13
13
 
14
+ thead {
15
+ border-bottom: 3px solid;
16
+ }
17
+
18
+ tfoot {
19
+ border-top: 3px solid;
20
+ }
21
+
14
22
  // Match default border style to default style in editor
15
23
  td,
16
24
  th {
@@ -1,14 +1,6 @@
1
1
  .wp-block-table {
2
2
  margin: 0 0 1em 0;
3
3
 
4
- thead {
5
- border-bottom: 3px solid;
6
- }
7
-
8
- tfoot {
9
- border-top: 3px solid;
10
- }
11
-
12
4
  td,
13
5
  th {
14
6
  word-break: normal;
@@ -279,7 +279,7 @@ export default function TableOfContentsEdit( {
279
279
  <div { ...blockProps }>
280
280
  <Placeholder
281
281
  icon={ <BlockIcon icon={ icon } /> }
282
- label="Table of Contents"
282
+ label={ __( 'Table of Contents' ) }
283
283
  instructions={ __(
284
284
  'Start adding Heading blocks to create a table of contents. Headings with HTML anchors will be linked here.'
285
285
  ) }
@@ -7,12 +7,18 @@ import { sprintf, __ } from '@wordpress/i18n';
7
7
  import { InspectorControls } from '@wordpress/block-editor';
8
8
  import { useSelect } from '@wordpress/data';
9
9
 
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { TemplatePartImportControls } from './import-controls';
14
+
10
15
  export function TemplatePartAdvancedControls( {
11
16
  tagName,
12
17
  setAttributes,
13
18
  isEntityAvailable,
14
19
  templatePartId,
15
20
  defaultWrapper,
21
+ hasInnerBlocks,
16
22
  } ) {
17
23
  const [ area, setArea ] = useEntityProp(
18
24
  'postType',
@@ -87,6 +93,12 @@ export function TemplatePartAdvancedControls( {
87
93
  value={ tagName || '' }
88
94
  onChange={ ( value ) => setAttributes( { tagName: value } ) }
89
95
  />
96
+ { ! hasInnerBlocks && (
97
+ <TemplatePartImportControls
98
+ area={ area }
99
+ setAttributes={ setAttributes }
100
+ />
101
+ ) }
90
102
  </InspectorControls>
91
103
  );
92
104
  }