@wordpress/block-library 8.4.0 → 8.5.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 (405) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/archives/edit.js +3 -0
  3. package/build/archives/edit.js.map +1 -1
  4. package/build/audio/edit.js +2 -0
  5. package/build/audio/edit.js.map +1 -1
  6. package/build/avatar/edit.js +5 -9
  7. package/build/avatar/edit.js.map +1 -1
  8. package/build/categories/edit.js +5 -0
  9. package/build/categories/edit.js.map +1 -1
  10. package/build/columns/edit.js +1 -0
  11. package/build/columns/edit.js.map +1 -1
  12. package/build/columns/utils.js +2 -2
  13. package/build/columns/utils.js.map +1 -1
  14. package/build/comment-author-name/edit.js +2 -0
  15. package/build/comment-author-name/edit.js.map +1 -1
  16. package/build/comment-date/edit.js +1 -0
  17. package/build/comment-date/edit.js.map +1 -1
  18. package/build/comment-edit-link/edit.js +1 -0
  19. package/build/comment-edit-link/edit.js.map +1 -1
  20. package/build/comments-title/edit.js +2 -0
  21. package/build/comments-title/edit.js.map +1 -1
  22. package/build/cover/edit/inspector-controls.js +2 -0
  23. package/build/cover/edit/inspector-controls.js.map +1 -1
  24. package/build/embed/embed-controls.js +1 -0
  25. package/build/embed/embed-controls.js.map +1 -1
  26. package/build/file/inspector.js +3 -0
  27. package/build/file/inspector.js.map +1 -1
  28. package/build/freeform/modal.js +1 -1
  29. package/build/freeform/modal.js.map +1 -1
  30. package/build/gallery/edit.js +2 -0
  31. package/build/gallery/edit.js.map +1 -1
  32. package/build/gallery/shared.js +4 -8
  33. package/build/gallery/shared.js.map +1 -1
  34. package/build/gallery/use-image-sizes.js +4 -8
  35. package/build/gallery/use-image-sizes.js.map +1 -1
  36. package/build/gallery/v1/edit.js +8 -3
  37. package/build/gallery/v1/edit.js.map +1 -1
  38. package/build/gallery/v1/gallery-image.js +1 -3
  39. package/build/gallery/v1/gallery-image.js.map +1 -1
  40. package/build/gallery/v1/shared.js +4 -7
  41. package/build/gallery/v1/shared.js.map +1 -1
  42. package/build/image/edit.js +6 -4
  43. package/build/image/edit.js.map +1 -1
  44. package/build/image/image.js +6 -2
  45. package/build/image/image.js.map +1 -1
  46. package/build/image/utils.js +3 -1
  47. package/build/image/utils.js.map +1 -1
  48. package/build/index.js +3 -1
  49. package/build/index.js.map +1 -1
  50. package/build/latest-comments/edit.js +3 -0
  51. package/build/latest-comments/edit.js.map +1 -1
  52. package/build/latest-posts/edit.js +4 -0
  53. package/build/latest-posts/edit.js.map +1 -1
  54. package/build/list/ordered-list-settings.js +1 -0
  55. package/build/list/ordered-list-settings.js.map +1 -1
  56. package/build/list-item/edit.js +2 -2
  57. package/build/list-item/edit.js.map +1 -1
  58. package/build/list-item/hooks/use-outdent-list-item.js +2 -1
  59. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  60. package/build/loginout/edit.js +2 -0
  61. package/build/loginout/edit.js.map +1 -1
  62. package/build/media-text/edit.js +2 -0
  63. package/build/media-text/edit.js.map +1 -1
  64. package/build/more/edit.js +1 -0
  65. package/build/more/edit.js.map +1 -1
  66. package/build/navigation/edit/index.js +80 -54
  67. package/build/navigation/edit/index.js.map +1 -1
  68. package/build/navigation/edit/navigation-menu-selector.js +1 -1
  69. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  70. package/build/navigation/edit/overlay-menu-preview.js +1 -0
  71. package/build/navigation/edit/overlay-menu-preview.js.map +1 -1
  72. package/build/navigation/edit/placeholder/index.js +1 -1
  73. package/build/navigation/edit/placeholder/index.js.map +1 -1
  74. package/build/navigation/edit/unsaved-inner-blocks.js +1 -1
  75. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  76. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
  77. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  78. package/build/navigation/edit/use-create-navigation-menu.js +1 -1
  79. package/build/navigation/edit/use-create-navigation-menu.js.map +1 -1
  80. package/build/navigation/edit/use-generate-default-navigation-title.js +1 -1
  81. package/build/navigation/edit/use-generate-default-navigation-title.js.map +1 -1
  82. package/build/navigation/edit/use-navigation-notice.js +4 -7
  83. package/build/navigation/edit/use-navigation-notice.js.map +1 -1
  84. package/build/navigation-link/link-ui.js +1 -0
  85. package/build/navigation-link/link-ui.js.map +1 -1
  86. package/build/page-list/convert-to-links-modal.js +47 -0
  87. package/build/page-list/convert-to-links-modal.js.map +1 -0
  88. package/build/page-list/edit.js +10 -24
  89. package/build/page-list/edit.js.map +1 -1
  90. package/build/paragraph/edit.js +1 -0
  91. package/build/paragraph/edit.js.map +1 -1
  92. package/build/post-author/edit.js +4 -0
  93. package/build/post-author/edit.js.map +1 -1
  94. package/build/post-author-name/edit.js +2 -0
  95. package/build/post-author-name/edit.js.map +1 -1
  96. package/build/post-date/edit.js +2 -0
  97. package/build/post-date/edit.js.map +1 -1
  98. package/build/post-excerpt/edit.js +1 -0
  99. package/build/post-excerpt/edit.js.map +1 -1
  100. package/build/post-featured-image/edit.js +2 -0
  101. package/build/post-featured-image/edit.js.map +1 -1
  102. package/build/post-navigation-link/edit.js +2 -0
  103. package/build/post-navigation-link/edit.js.map +1 -1
  104. package/build/post-terms/use-post-terms.js +1 -1
  105. package/build/post-terms/use-post-terms.js.map +1 -1
  106. package/build/post-time-to-read/edit.js +104 -0
  107. package/build/post-time-to-read/edit.js.map +1 -0
  108. package/build/post-time-to-read/icon.js +25 -0
  109. package/build/post-time-to-read/icon.js.map +1 -0
  110. package/build/post-time-to-read/index.js +57 -0
  111. package/build/post-time-to-read/index.js.map +1 -0
  112. package/build/post-title/edit.js +2 -0
  113. package/build/post-title/edit.js.map +1 -1
  114. package/build/query/edit/inspector-controls/index.js +1 -0
  115. package/build/query/edit/inspector-controls/index.js.map +1 -1
  116. package/build/query-title/edit.js +2 -0
  117. package/build/query-title/edit.js.map +1 -1
  118. package/build/read-more/edit.js +1 -0
  119. package/build/read-more/edit.js.map +1 -1
  120. package/build/rss/edit.js +3 -0
  121. package/build/rss/edit.js.map +1 -1
  122. package/build/site-logo/edit.js +3 -0
  123. package/build/site-logo/edit.js.map +1 -1
  124. package/build/site-tagline/index.js +1 -0
  125. package/build/site-tagline/index.js.map +1 -1
  126. package/build/site-title/edit/index.js +2 -0
  127. package/build/site-title/edit/index.js.map +1 -1
  128. package/build/social-links/edit.js +4 -1
  129. package/build/social-links/edit.js.map +1 -1
  130. package/build/spacer/controls.native.js +10 -8
  131. package/build/spacer/controls.native.js.map +1 -1
  132. package/build/spacer/edit.native.js +43 -5
  133. package/build/spacer/edit.native.js.map +1 -1
  134. package/build/spacer/save.native.js +30 -0
  135. package/build/spacer/save.native.js.map +1 -0
  136. package/build/table/edit.js +3 -0
  137. package/build/table/edit.js.map +1 -1
  138. package/build/table-of-contents/edit.js +1 -0
  139. package/build/table-of-contents/edit.js.map +1 -1
  140. package/build/tag-cloud/edit.js +1 -0
  141. package/build/tag-cloud/edit.js.map +1 -1
  142. package/build/template-part/edit/import-controls.js +29 -6
  143. package/build/template-part/edit/import-controls.js.map +1 -1
  144. package/build/video/edit-common-settings.js +5 -0
  145. package/build/video/edit-common-settings.js.map +1 -1
  146. package/build-module/archives/edit.js +3 -0
  147. package/build-module/archives/edit.js.map +1 -1
  148. package/build-module/audio/edit.js +2 -0
  149. package/build-module/audio/edit.js.map +1 -1
  150. package/build-module/avatar/edit.js +5 -8
  151. package/build-module/avatar/edit.js.map +1 -1
  152. package/build-module/categories/edit.js +5 -0
  153. package/build-module/categories/edit.js.map +1 -1
  154. package/build-module/columns/edit.js +1 -0
  155. package/build-module/columns/edit.js.map +1 -1
  156. package/build-module/columns/utils.js +3 -3
  157. package/build-module/columns/utils.js.map +1 -1
  158. package/build-module/comment-author-name/edit.js +2 -0
  159. package/build-module/comment-author-name/edit.js.map +1 -1
  160. package/build-module/comment-date/edit.js +1 -0
  161. package/build-module/comment-date/edit.js.map +1 -1
  162. package/build-module/comment-edit-link/edit.js +1 -0
  163. package/build-module/comment-edit-link/edit.js.map +1 -1
  164. package/build-module/comments-title/edit.js +2 -0
  165. package/build-module/comments-title/edit.js.map +1 -1
  166. package/build-module/cover/edit/inspector-controls.js +2 -0
  167. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  168. package/build-module/embed/embed-controls.js +1 -0
  169. package/build-module/embed/embed-controls.js.map +1 -1
  170. package/build-module/file/inspector.js +3 -0
  171. package/build-module/file/inspector.js.map +1 -1
  172. package/build-module/freeform/modal.js +1 -1
  173. package/build-module/freeform/modal.js.map +1 -1
  174. package/build-module/gallery/edit.js +2 -0
  175. package/build-module/gallery/edit.js.map +1 -1
  176. package/build-module/gallery/shared.js +4 -7
  177. package/build-module/gallery/shared.js.map +1 -1
  178. package/build-module/gallery/use-image-sizes.js +4 -7
  179. package/build-module/gallery/use-image-sizes.js.map +1 -1
  180. package/build-module/gallery/v1/edit.js +9 -4
  181. package/build-module/gallery/v1/edit.js.map +1 -1
  182. package/build-module/gallery/v1/gallery-image.js +1 -2
  183. package/build-module/gallery/v1/gallery-image.js.map +1 -1
  184. package/build-module/gallery/v1/shared.js +4 -6
  185. package/build-module/gallery/v1/shared.js.map +1 -1
  186. package/build-module/image/edit.js +7 -5
  187. package/build-module/image/edit.js.map +1 -1
  188. package/build-module/image/image.js +7 -3
  189. package/build-module/image/image.js.map +1 -1
  190. package/build-module/image/utils.js +4 -2
  191. package/build-module/image/utils.js.map +1 -1
  192. package/build-module/index.js +2 -1
  193. package/build-module/index.js.map +1 -1
  194. package/build-module/latest-comments/edit.js +3 -0
  195. package/build-module/latest-comments/edit.js.map +1 -1
  196. package/build-module/latest-posts/edit.js +4 -0
  197. package/build-module/latest-posts/edit.js.map +1 -1
  198. package/build-module/list/ordered-list-settings.js +1 -0
  199. package/build-module/list/ordered-list-settings.js.map +1 -1
  200. package/build-module/list-item/edit.js +2 -2
  201. package/build-module/list-item/edit.js.map +1 -1
  202. package/build-module/list-item/hooks/use-outdent-list-item.js +2 -1
  203. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  204. package/build-module/loginout/edit.js +2 -0
  205. package/build-module/loginout/edit.js.map +1 -1
  206. package/build-module/media-text/edit.js +2 -0
  207. package/build-module/media-text/edit.js.map +1 -1
  208. package/build-module/more/edit.js +1 -0
  209. package/build-module/more/edit.js.map +1 -1
  210. package/build-module/navigation/edit/index.js +82 -56
  211. package/build-module/navigation/edit/index.js.map +1 -1
  212. package/build-module/navigation/edit/navigation-menu-selector.js +1 -1
  213. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  214. package/build-module/navigation/edit/overlay-menu-preview.js +1 -0
  215. package/build-module/navigation/edit/overlay-menu-preview.js.map +1 -1
  216. package/build-module/navigation/edit/placeholder/index.js +1 -1
  217. package/build-module/navigation/edit/placeholder/index.js.map +1 -1
  218. package/build-module/navigation/edit/unsaved-inner-blocks.js +1 -1
  219. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  220. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
  221. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  222. package/build-module/navigation/edit/use-create-navigation-menu.js +1 -1
  223. package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -1
  224. package/build-module/navigation/edit/use-generate-default-navigation-title.js +1 -1
  225. package/build-module/navigation/edit/use-generate-default-navigation-title.js.map +1 -1
  226. package/build-module/navigation/edit/use-navigation-notice.js +5 -8
  227. package/build-module/navigation/edit/use-navigation-notice.js.map +1 -1
  228. package/build-module/navigation-link/link-ui.js +1 -0
  229. package/build-module/navigation-link/link-ui.js.map +1 -1
  230. package/build-module/page-list/convert-to-links-modal.js +35 -0
  231. package/build-module/page-list/convert-to-links-modal.js.map +1 -0
  232. package/build-module/page-list/edit.js +10 -25
  233. package/build-module/page-list/edit.js.map +1 -1
  234. package/build-module/paragraph/edit.js +1 -0
  235. package/build-module/paragraph/edit.js.map +1 -1
  236. package/build-module/post-author/edit.js +4 -0
  237. package/build-module/post-author/edit.js.map +1 -1
  238. package/build-module/post-author-name/edit.js +2 -0
  239. package/build-module/post-author-name/edit.js.map +1 -1
  240. package/build-module/post-date/edit.js +2 -0
  241. package/build-module/post-date/edit.js.map +1 -1
  242. package/build-module/post-excerpt/edit.js +1 -0
  243. package/build-module/post-excerpt/edit.js.map +1 -1
  244. package/build-module/post-featured-image/edit.js +2 -0
  245. package/build-module/post-featured-image/edit.js.map +1 -1
  246. package/build-module/post-navigation-link/edit.js +2 -0
  247. package/build-module/post-navigation-link/edit.js.map +1 -1
  248. package/build-module/post-terms/use-post-terms.js +1 -1
  249. package/build-module/post-terms/use-post-terms.js.map +1 -1
  250. package/build-module/post-time-to-read/edit.js +90 -0
  251. package/build-module/post-time-to-read/edit.js.map +1 -0
  252. package/build-module/post-time-to-read/icon.js +15 -0
  253. package/build-module/post-time-to-read/icon.js.map +1 -0
  254. package/build-module/post-time-to-read/index.js +40 -0
  255. package/build-module/post-time-to-read/index.js.map +1 -0
  256. package/build-module/post-title/edit.js +2 -0
  257. package/build-module/post-title/edit.js.map +1 -1
  258. package/build-module/query/edit/inspector-controls/index.js +1 -0
  259. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  260. package/build-module/query-title/edit.js +2 -0
  261. package/build-module/query-title/edit.js.map +1 -1
  262. package/build-module/read-more/edit.js +1 -0
  263. package/build-module/read-more/edit.js.map +1 -1
  264. package/build-module/rss/edit.js +3 -0
  265. package/build-module/rss/edit.js.map +1 -1
  266. package/build-module/site-logo/edit.js +3 -0
  267. package/build-module/site-logo/edit.js.map +1 -1
  268. package/build-module/site-tagline/index.js +1 -0
  269. package/build-module/site-tagline/index.js.map +1 -1
  270. package/build-module/site-title/edit/index.js +2 -0
  271. package/build-module/site-title/edit/index.js.map +1 -1
  272. package/build-module/social-links/edit.js +4 -1
  273. package/build-module/social-links/edit.js.map +1 -1
  274. package/build-module/spacer/controls.native.js +9 -8
  275. package/build-module/spacer/controls.native.js.map +1 -1
  276. package/build-module/spacer/edit.native.js +39 -7
  277. package/build-module/spacer/edit.native.js.map +1 -1
  278. package/build-module/spacer/save.native.js +22 -0
  279. package/build-module/spacer/save.native.js.map +1 -0
  280. package/build-module/table/edit.js +3 -0
  281. package/build-module/table/edit.js.map +1 -1
  282. package/build-module/table-of-contents/edit.js +1 -0
  283. package/build-module/table-of-contents/edit.js.map +1 -1
  284. package/build-module/tag-cloud/edit.js +1 -0
  285. package/build-module/tag-cloud/edit.js.map +1 -1
  286. package/build-module/template-part/edit/import-controls.js +28 -6
  287. package/build-module/template-part/edit/import-controls.js.map +1 -1
  288. package/build-module/video/edit-common-settings.js +5 -0
  289. package/build-module/video/edit-common-settings.js.map +1 -1
  290. package/build-style/editor-rtl.css +4 -3
  291. package/build-style/editor.css +4 -3
  292. package/build-style/post-excerpt/editor-rtl.css +1 -1
  293. package/build-style/post-excerpt/editor.css +1 -1
  294. package/build-style/query/editor-rtl.css +1 -0
  295. package/build-style/query/editor.css +1 -0
  296. package/build-style/site-logo/editor-rtl.css +2 -2
  297. package/build-style/site-logo/editor.css +2 -2
  298. package/package.json +31 -30
  299. package/src/archives/edit.js +3 -0
  300. package/src/audio/edit.js +2 -0
  301. package/src/audio/test/__snapshots__/edit.native.js.snap +38 -38
  302. package/src/avatar/edit.js +2 -4
  303. package/src/buttons/test/__snapshots__/edit.native.js.snap +11 -11
  304. package/src/categories/edit.js +5 -0
  305. package/src/code/test/__snapshots__/edit.native.js.snap +2 -2
  306. package/src/columns/edit.js +1 -0
  307. package/src/columns/test/__snapshots__/edit.native.js.snap +66 -66
  308. package/src/columns/test/utils.js +54 -0
  309. package/src/columns/utils.js +8 -8
  310. package/src/comment-author-name/edit.js +2 -0
  311. package/src/comment-date/edit.js +1 -0
  312. package/src/comment-edit-link/edit.js +1 -0
  313. package/src/comments-title/edit.js +2 -0
  314. package/src/cover/edit/inspector-controls.js +2 -0
  315. package/src/cover/index.php +4 -6
  316. package/src/cover/test/__snapshots__/edit.native.js.snap +36 -36
  317. package/src/embed/embed-controls.js +1 -0
  318. package/src/embed/test/__snapshots__/index.native.js.snap +52 -52
  319. package/src/file/inspector.js +3 -0
  320. package/src/file/test/__snapshots__/edit.native.js.snap +49 -49
  321. package/src/freeform/modal.js +1 -1
  322. package/src/gallery/edit.js +2 -0
  323. package/src/gallery/shared.js +6 -11
  324. package/src/gallery/test/__snapshots__/index.native.js.snap +71 -71
  325. package/src/gallery/use-image-sizes.js +3 -16
  326. package/src/gallery/v1/edit.js +8 -16
  327. package/src/gallery/v1/gallery-image.js +1 -2
  328. package/src/gallery/v1/shared.js +5 -10
  329. package/src/group/test/__snapshots__/edit.native.js.snap +5 -5
  330. package/src/heading/test/__snapshots__/index.native.js.snap +1 -1
  331. package/src/image/edit.js +4 -4
  332. package/src/image/image.js +4 -9
  333. package/src/image/index.php +4 -4
  334. package/src/image/utils.js +2 -2
  335. package/src/index.js +2 -0
  336. package/src/latest-comments/edit.js +3 -0
  337. package/src/latest-posts/edit.js +4 -0
  338. package/src/list/ordered-list-settings.js +1 -0
  339. package/src/list/test/__snapshots__/edit.native.js.snap +4 -4
  340. package/src/list-item/edit.js +10 -3
  341. package/src/list-item/hooks/use-outdent-list-item.js +2 -1
  342. package/src/loginout/edit.js +2 -0
  343. package/src/media-text/edit.js +2 -0
  344. package/src/missing/test/__snapshots__/edit.native.js.snap +1 -1
  345. package/src/more/edit.js +1 -0
  346. package/src/navigation/edit/index.js +130 -82
  347. package/src/navigation/edit/navigation-menu-selector.js +1 -1
  348. package/src/navigation/edit/overlay-menu-preview.js +1 -0
  349. package/src/navigation/edit/placeholder/index.js +1 -1
  350. package/src/navigation/edit/unsaved-inner-blocks.js +1 -0
  351. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +51 -48
  352. package/src/navigation/edit/use-create-navigation-menu.js +1 -1
  353. package/src/navigation/edit/use-generate-default-navigation-title.js +1 -1
  354. package/src/navigation/edit/use-navigation-notice.js +16 -13
  355. package/src/navigation/index.php +42 -19
  356. package/src/navigation-link/link-ui.js +1 -0
  357. package/src/navigation-link/test/__snapshots__/hooks.js.snap +12 -12
  358. package/src/page-list/convert-to-links-modal.js +38 -0
  359. package/src/page-list/edit.js +11 -32
  360. package/src/paragraph/edit.js +1 -0
  361. package/src/post-author/edit.js +4 -0
  362. package/src/post-author-name/edit.js +2 -0
  363. package/src/post-date/edit.js +2 -0
  364. package/src/post-excerpt/edit.js +1 -0
  365. package/src/post-excerpt/editor.scss +1 -1
  366. package/src/post-featured-image/edit.js +2 -0
  367. package/src/post-navigation-link/edit.js +2 -0
  368. package/src/post-terms/index.php +1 -0
  369. package/src/post-terms/use-post-terms.js +1 -1
  370. package/src/post-time-to-read/block.json +20 -0
  371. package/src/post-time-to-read/edit.js +101 -0
  372. package/src/post-time-to-read/icon.js +15 -0
  373. package/src/post-time-to-read/index.js +17 -0
  374. package/src/post-time-to-read/index.php +62 -0
  375. package/src/post-title/edit.js +2 -0
  376. package/src/preformatted/test/__snapshots__/edit.native.js.snap +10 -10
  377. package/src/query/edit/inspector-controls/index.js +1 -0
  378. package/src/query/editor.scss +1 -0
  379. package/src/query-title/edit.js +2 -0
  380. package/src/read-more/edit.js +1 -0
  381. package/src/rss/edit.js +3 -0
  382. package/src/search/test/__snapshots__/edit.native.js.snap +60 -60
  383. package/src/separator/test/__snapshots__/edit.native.js.snap +1 -1
  384. package/src/site-logo/edit.js +3 -0
  385. package/src/site-logo/editor.scss +3 -3
  386. package/src/site-logo/index.php +7 -2
  387. package/src/site-tagline/block.json +1 -0
  388. package/src/site-title/edit/index.js +2 -0
  389. package/src/social-link/index.php +6 -6
  390. package/src/social-links/edit.js +3 -0
  391. package/src/social-links/test/__snapshots__/edit.native.js.snap +16 -16
  392. package/src/spacer/controls.native.js +13 -5
  393. package/src/spacer/edit.native.js +45 -6
  394. package/src/spacer/save.native.js +18 -0
  395. package/src/spacer/test/__snapshots__/index.native.js.snap +21 -9
  396. package/src/spacer/test/index.native.js +81 -0
  397. package/src/table/edit.js +3 -0
  398. package/src/table-of-contents/edit.js +1 -0
  399. package/src/tag-cloud/edit.js +1 -0
  400. package/src/template-part/edit/import-controls.js +24 -5
  401. package/src/template-part/index.php +7 -6
  402. package/src/verse/test/__snapshots__/edit.native.js.snap +2 -2
  403. package/src/video/edit-common-settings.js +5 -0
  404. package/tsconfig.json +2 -1
  405. package/tsconfig.tsbuildinfo +1 -1
@@ -88,9 +88,16 @@ export default function ListItemEdit( {
88
88
  placeholder={ placeholder || __( 'List' ) }
89
89
  onSplit={ onSplit }
90
90
  onMerge={ onMerge }
91
- onReplace={ ( blocks, ...args ) => {
92
- onReplace( convertToListItems( blocks ), ...args );
93
- } }
91
+ onReplace={
92
+ onReplace
93
+ ? ( blocks, ...args ) => {
94
+ onReplace(
95
+ convertToListItems( blocks ),
96
+ ...args
97
+ );
98
+ }
99
+ : undefined
100
+ }
94
101
  />
95
102
  { innerBlocksProps.children }
96
103
  </li>
@@ -112,7 +112,8 @@ export default function useOutdentListItem( clientId ) {
112
112
  getBlockIndex( parentListItemId ) + 1
113
113
  );
114
114
  if ( ! getBlockOrder( parentListId ).length ) {
115
- removeBlock( parentListId );
115
+ const shouldSelectParent = false;
116
+ removeBlock( parentListId, shouldSelectParent );
116
117
  }
117
118
  } );
118
119
  }, [] ),
@@ -13,6 +13,7 @@ export default function LoginOutEdit( { attributes, setAttributes } ) {
13
13
  <InspectorControls>
14
14
  <PanelBody title={ __( 'Settings' ) }>
15
15
  <ToggleControl
16
+ __nextHasNoMarginBottom
16
17
  label={ __( 'Display login as form' ) }
17
18
  checked={ displayLoginAsForm }
18
19
  onChange={ () =>
@@ -22,6 +23,7 @@ export default function LoginOutEdit( { attributes, setAttributes } ) {
22
23
  }
23
24
  />
24
25
  <ToggleControl
26
+ __nextHasNoMarginBottom
25
27
  label={ __( 'Redirect to current URL' ) }
26
28
  checked={ redirectToCurrent }
27
29
  onChange={ () =>
@@ -243,6 +243,7 @@ function MediaTextEdit( { attributes, isSelected, setAttributes, clientId } ) {
243
243
  const mediaTextGeneralSettings = (
244
244
  <PanelBody title={ __( 'Settings' ) }>
245
245
  <ToggleControl
246
+ __nextHasNoMarginBottom
246
247
  label={ __( 'Stack on mobile' ) }
247
248
  checked={ isStackedOnMobile }
248
249
  onChange={ () =>
@@ -253,6 +254,7 @@ function MediaTextEdit( { attributes, isSelected, setAttributes, clientId } ) {
253
254
  />
254
255
  { mediaType === 'image' && (
255
256
  <ToggleControl
257
+ __nextHasNoMarginBottom
256
258
  label={ __( 'Crop image to fill entire column' ) }
257
259
  checked={ imageFill }
258
260
  onChange={ () =>
@@ -6,7 +6,7 @@ exports[`Missing block renders without crashing 1`] = `
6
6
  accessibilityLabel="Help button"
7
7
  accessibilityRole="button"
8
8
  accessibilityState={
9
- Object {
9
+ {
10
10
  "disabled": true,
11
11
  }
12
12
  }
package/src/more/edit.js CHANGED
@@ -43,6 +43,7 @@ export default function MoreEdit( {
43
43
  <InspectorControls>
44
44
  <PanelBody>
45
45
  <ToggleControl
46
+ __nextHasNoMarginBottom
46
47
  label={ __(
47
48
  'Hide the excerpt on the full content page'
48
49
  ) }
@@ -7,6 +7,7 @@ import classnames from 'classnames';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import {
10
+ useCallback,
10
11
  useState,
11
12
  useEffect,
12
13
  useRef,
@@ -40,7 +41,7 @@ import {
40
41
  } from '@wordpress/components';
41
42
  import { __, sprintf } from '@wordpress/i18n';
42
43
  import { speak } from '@wordpress/a11y';
43
- import { createBlock } from '@wordpress/blocks';
44
+ import { createBlock, getBlockType } from '@wordpress/blocks';
44
45
  import { close, Icon } from '@wordpress/icons';
45
46
 
46
47
  /**
@@ -148,34 +149,6 @@ function Navigation( {
148
149
  createNavigationMenu( '' );
149
150
  };
150
151
 
151
- useEffect( () => {
152
- hideNavigationMenuStatusNotice();
153
-
154
- if ( isCreatingNavigationMenu ) {
155
- speak( __( `Creating Navigation Menu.` ) );
156
- }
157
-
158
- if ( createNavigationMenuIsSuccess ) {
159
- handleUpdateMenu( createNavigationMenuPost.id, {
160
- focusNavigationBlock: true,
161
- } );
162
-
163
- showNavigationMenuStatusNotice(
164
- __( `Navigation Menu successfully created.` )
165
- );
166
- }
167
-
168
- if ( createNavigationMenuIsError ) {
169
- showNavigationMenuStatusNotice(
170
- __( 'Failed to create Navigation Menu.' )
171
- );
172
- }
173
- }, [
174
- createNavigationMenuStatus,
175
- createNavigationMenuError,
176
- createNavigationMenuPost,
177
- ] );
178
-
179
152
  const {
180
153
  hasUncontrolledInnerBlocks,
181
154
  uncontrolledInnerBlocks,
@@ -237,6 +210,40 @@ function Navigation( {
237
210
  [ navigationMenus ]
238
211
  );
239
212
 
213
+ // This useEffect adds snackbar and speak status notices when menus are created.
214
+ // If there are no fallback navigation menus then we don't show these messages,
215
+ // because this means that we are creating the first, fallback navigation menu.
216
+ useEffect( () => {
217
+ hideNavigationMenuStatusNotice();
218
+
219
+ if ( fallbackNavigationMenus && isCreatingNavigationMenu ) {
220
+ speak( __( `Creating Navigation Menu.` ) );
221
+ }
222
+
223
+ if ( createNavigationMenuIsSuccess ) {
224
+ handleUpdateMenu( createNavigationMenuPost.id, {
225
+ focusNavigationBlock: true,
226
+ } );
227
+
228
+ if ( fallbackNavigationMenus ) {
229
+ showNavigationMenuStatusNotice(
230
+ __( `Navigation Menu successfully created.` )
231
+ );
232
+ }
233
+ }
234
+
235
+ if ( createNavigationMenuIsError ) {
236
+ showNavigationMenuStatusNotice(
237
+ __( 'Failed to create Navigation Menu.' )
238
+ );
239
+ }
240
+ }, [
241
+ createNavigationMenuStatus,
242
+ createNavigationMenuError,
243
+ createNavigationMenuPost,
244
+ fallbackNavigationMenus,
245
+ ] );
246
+
240
247
  // Attempt to retrieve and prioritize any existing navigation menu unless:
241
248
  // - the are uncontrolled inner blocks already present in the block.
242
249
  // - the user is creating a new menu.
@@ -270,12 +277,24 @@ function Navigation( {
270
277
  hasUncontrolledInnerBlocks,
271
278
  ] );
272
279
 
280
+ const isEntityAvailable =
281
+ ! isNavigationMenuMissing && isNavigationMenuResolved;
282
+
283
+ // If the block has inner blocks, but no menu id, then these blocks are either:
284
+ // - inserted via a pattern.
285
+ // - inserted directly via Code View (or otherwise).
286
+ // - from an older version of navigation block added before the block used a wp_navigation entity.
287
+ // Consider this state as 'unsaved' and offer an uncontrolled version of inner blocks,
288
+ // that automatically saves the menu as an entity when changes are made to the inner blocks.
289
+ const hasUnsavedBlocks = hasUncontrolledInnerBlocks && ! isEntityAvailable;
290
+
273
291
  useEffect( () => {
274
292
  if (
293
+ ref ||
275
294
  ! hasResolvedNavigationMenus ||
276
295
  isConvertingClassicMenu ||
277
296
  fallbackNavigationMenus?.length > 0 ||
278
- ! classicMenus?.length
297
+ hasUnsavedBlocks
279
298
  ) {
280
299
  return;
281
300
  }
@@ -284,29 +303,46 @@ function Navigation( {
284
303
  // a classic menu with a `primary` location or slug,
285
304
  // then create a new navigation menu based on it.
286
305
  // Otherwise, use the most recently created classic menu.
287
- const primaryMenus = classicMenus.filter(
288
- ( classicMenu ) =>
289
- classicMenu.locations.includes( 'primary' ) ||
290
- classicMenu.slug === 'primary'
291
- );
292
-
293
- if ( primaryMenus.length ) {
294
- convertClassicMenu(
295
- primaryMenus[ 0 ].id,
296
- primaryMenus[ 0 ].name,
297
- 'publish'
306
+ if ( classicMenus?.length ) {
307
+ const primaryMenus = classicMenus.filter(
308
+ ( classicMenu ) =>
309
+ classicMenu.locations.includes( 'primary' ) ||
310
+ classicMenu.slug === 'primary'
298
311
  );
312
+
313
+ if ( primaryMenus.length ) {
314
+ convertClassicMenu(
315
+ primaryMenus[ 0 ].id,
316
+ primaryMenus[ 0 ].name,
317
+ 'publish'
318
+ );
319
+ } else {
320
+ classicMenus.sort( ( a, b ) => {
321
+ return b.id - a.id;
322
+ } );
323
+ convertClassicMenu(
324
+ classicMenus[ 0 ].id,
325
+ classicMenus[ 0 ].name,
326
+ 'publish'
327
+ );
328
+ }
299
329
  } else {
300
- classicMenus.sort( ( a, b ) => {
301
- return b.id - a.id;
302
- } );
303
- convertClassicMenu(
304
- classicMenus[ 0 ].id,
305
- classicMenus[ 0 ].name,
330
+ // If there are no fallback navigation menus and no classic menus,
331
+ // then create a new navigation menu.
332
+
333
+ // Check that we have a page-list block type.
334
+ let defaultBlocks = [];
335
+ if ( getBlockType( 'core/page-list' ) ) {
336
+ defaultBlocks = [ createBlock( 'core/page-list' ) ];
337
+ }
338
+
339
+ createNavigationMenu(
340
+ 'Navigation', // TODO - use the template slug in future
341
+ defaultBlocks,
306
342
  'publish'
307
343
  );
308
344
  }
309
- }, [ hasResolvedNavigationMenus ] );
345
+ }, [ hasResolvedNavigationMenus, hasUnsavedBlocks ] );
310
346
 
311
347
  const navRef = useRef();
312
348
 
@@ -326,22 +362,6 @@ function Navigation( {
326
362
  classicMenus?.length === 0 &&
327
363
  ! hasUncontrolledInnerBlocks;
328
364
 
329
- useEffect( () => {
330
- if ( isPlaceholder ) {
331
- /**
332
- * this fallback only displays (both in editor and on front)
333
- * the list of pages block if no menu is available as a fallback.
334
- * We don't want the fallback to request a save,
335
- * nor to be undoable, hence we mark it non persistent.
336
- */
337
- __unstableMarkNextChangeAsNotPersistent();
338
- replaceInnerBlocks( clientId, [ createBlock( 'core/page-list' ) ] );
339
- }
340
- }, [ clientId, isPlaceholder, ref ] );
341
-
342
- const isEntityAvailable =
343
- ! isNavigationMenuMissing && isNavigationMenuResolved;
344
-
345
365
  // "loading" state:
346
366
  // - there is a menu creation process in progress.
347
367
  // - there is a classic menu conversion process in progress.
@@ -393,16 +413,16 @@ function Navigation( {
393
413
  ] = useState();
394
414
  const [ detectedOverlayColor, setDetectedOverlayColor ] = useState();
395
415
 
396
- const handleUpdateMenu = (
397
- menuId,
398
- options = { focusNavigationBlock: false }
399
- ) => {
400
- const { focusNavigationBlock } = options;
401
- setRef( menuId );
402
- if ( focusNavigationBlock ) {
403
- selectBlock( clientId );
404
- }
405
- };
416
+ const handleUpdateMenu = useCallback(
417
+ ( menuId, options = { focusNavigationBlock: false } ) => {
418
+ const { focusNavigationBlock } = options;
419
+ setRef( menuId );
420
+ if ( focusNavigationBlock ) {
421
+ selectBlock( clientId );
422
+ }
423
+ },
424
+ [ selectBlock, clientId ]
425
+ );
406
426
 
407
427
  const onSelectClassicMenu = async ( classicMenu ) => {
408
428
  const navMenu = await convertClassicMenu(
@@ -421,6 +441,40 @@ function Navigation( {
421
441
  handleUpdateMenu( menuId );
422
442
  };
423
443
 
444
+ useEffect( () => {
445
+ hideNavigationMenuStatusNotice();
446
+
447
+ if ( isCreatingNavigationMenu ) {
448
+ speak( __( `Creating Navigation Menu.` ) );
449
+ }
450
+
451
+ if ( createNavigationMenuIsSuccess ) {
452
+ handleUpdateMenu( createNavigationMenuPost.id, {
453
+ focusNavigationBlock: true,
454
+ } );
455
+
456
+ showNavigationMenuStatusNotice(
457
+ __( `Navigation Menu successfully created.` )
458
+ );
459
+ }
460
+
461
+ if ( createNavigationMenuIsError ) {
462
+ showNavigationMenuStatusNotice(
463
+ __( 'Failed to create Navigation Menu.' )
464
+ );
465
+ }
466
+ }, [
467
+ createNavigationMenuStatus,
468
+ createNavigationMenuError,
469
+ createNavigationMenuPost,
470
+ createNavigationMenuIsError,
471
+ createNavigationMenuIsSuccess,
472
+ isCreatingNavigationMenu,
473
+ handleUpdateMenu,
474
+ hideNavigationMenuStatusNotice,
475
+ showNavigationMenuStatusNotice,
476
+ ] );
477
+
424
478
  useEffect( () => {
425
479
  hideClassicMenuConversionNotice();
426
480
  if ( classicMenuConversionStatus === CLASSIC_MENU_CONVERSION_PENDING ) {
@@ -598,6 +652,7 @@ function Navigation( {
598
652
  <>
599
653
  <h3>{ __( 'Submenus' ) }</h3>
600
654
  <ToggleControl
655
+ __nextHasNoMarginBottom
601
656
  checked={ openSubmenusOnClick }
602
657
  onChange={ ( value ) => {
603
658
  setAttributes( {
@@ -611,6 +666,7 @@ function Navigation( {
611
666
  />
612
667
 
613
668
  <ToggleControl
669
+ __nextHasNoMarginBottom
614
670
  checked={ showSubmenuIcon }
615
671
  onChange={ ( value ) => {
616
672
  setAttributes( {
@@ -682,14 +738,6 @@ function Navigation( {
682
738
  </>
683
739
  );
684
740
 
685
- // If the block has inner blocks, but no menu id, then these blocks are either:
686
- // - inserted via a pattern.
687
- // - inserted directly via Code View (or otherwise).
688
- // - from an older version of navigation block added before the block used a wp_navigation entity.
689
- // Consider this state as 'unsaved' and offer an uncontrolled version of inner blocks,
690
- // that automatically saves the menu as an entity when changes are made to the inner blocks.
691
- const hasUnsavedBlocks = hasUncontrolledInnerBlocks && ! isEntityAvailable;
692
-
693
741
  const isManageMenusButtonDisabled =
694
742
  ! hasManagePermissions || ! hasResolvedNavigationMenus;
695
743
 
@@ -65,7 +65,7 @@ function NavigationMenuSelector( {
65
65
  };
66
66
  } ) || []
67
67
  );
68
- }, [ currentMenuId, navigationMenus, actionLabel ] );
68
+ }, [ currentMenuId, navigationMenus, actionLabel, isCreatingMenu ] );
69
69
 
70
70
  const hasNavigationMenus = !! navigationMenus?.length;
71
71
  const hasClassicMenus = !! classicMenus?.length;
@@ -17,6 +17,7 @@ export default function OverlayMenuPreview( { setAttributes, hasIcon, icon } ) {
17
17
  return (
18
18
  <>
19
19
  <ToggleControl
20
+ __nextHasNoMarginBottom
20
21
  label={ __( 'Show icon button' ) }
21
22
  help={ __(
22
23
  'Configure the visual appearance of the button opening the overlay menu.'
@@ -38,7 +38,7 @@ export default function NavigationPlaceholder( {
38
38
  if ( hasResolvedMenus ) {
39
39
  speak( __( 'Navigation block setup options ready.' ) );
40
40
  }
41
- }, [ isResolvingMenus, isSelected ] );
41
+ }, [ hasResolvedMenus, isResolvingMenus, isSelected ] );
42
42
 
43
43
  const isResolvingActions =
44
44
  isResolvingMenus && isResolvingCanUserCreateNavigationMenu;
@@ -146,6 +146,7 @@ export default function UnsavedInnerBlocks( {
146
146
 
147
147
  createNavigationMenu( null, blocks );
148
148
  }, [
149
+ createNavigationMenu,
149
150
  isDisabled,
150
151
  isSaving,
151
152
  hasResolvedDraftNavigationMenus,
@@ -120,56 +120,59 @@ function useConvertClassicToBlockMenu( clientId ) {
120
120
  return navigationMenu;
121
121
  }
122
122
 
123
- const convert = useCallback( async ( menuId, menuName, postStatus ) => {
124
- // Check whether this classic menu is being imported already.
125
- if ( classicMenuBeingConvertedId === menuId ) {
126
- return;
127
- }
128
-
129
- // Set the ID for the currently importing classic menu.
130
- classicMenuBeingConvertedId = menuId;
131
-
132
- if ( ! menuId || ! menuName ) {
133
- setError( 'Unable to convert menu. Missing menu details.' );
134
- setStatus( CLASSIC_MENU_CONVERSION_ERROR );
135
- return;
136
- }
137
-
138
- setStatus( CLASSIC_MENU_CONVERSION_PENDING );
139
- setError( null );
140
-
141
- return await convertClassicMenuToBlockMenu(
142
- menuId,
143
- menuName,
144
- postStatus
145
- )
146
- .then( ( navigationMenu ) => {
147
- setStatus( CLASSIC_MENU_CONVERSION_SUCCESS );
148
- // Reset the ID for the currently importing classic menu.
149
- classicMenuBeingConvertedId = null;
150
- return navigationMenu;
151
- } )
152
- .catch( ( err ) => {
153
- setError( err?.message );
154
- // Reset the ID for the currently importing classic menu.
123
+ const convert = useCallback(
124
+ async ( menuId, menuName, postStatus ) => {
125
+ // Check whether this classic menu is being imported already.
126
+ if ( classicMenuBeingConvertedId === menuId ) {
127
+ return;
128
+ }
129
+
130
+ // Set the ID for the currently importing classic menu.
131
+ classicMenuBeingConvertedId = menuId;
132
+
133
+ if ( ! menuId || ! menuName ) {
134
+ setError( 'Unable to convert menu. Missing menu details.' );
155
135
  setStatus( CLASSIC_MENU_CONVERSION_ERROR );
136
+ return;
137
+ }
156
138
 
157
- // Reset the ID for the currently importing classic menu.
158
- classicMenuBeingConvertedId = null;
159
-
160
- // Rethrow error for debugging.
161
- throw new Error(
162
- sprintf(
163
- // translators: %s: the name of a menu (e.g. Header navigation).
164
- __( `Unable to create Navigation Menu "%s".` ),
165
- menuName
166
- ),
167
- {
168
- cause: err,
169
- }
170
- );
171
- } );
172
- }, [] );
139
+ setStatus( CLASSIC_MENU_CONVERSION_PENDING );
140
+ setError( null );
141
+
142
+ return await convertClassicMenuToBlockMenu(
143
+ menuId,
144
+ menuName,
145
+ postStatus
146
+ )
147
+ .then( ( navigationMenu ) => {
148
+ setStatus( CLASSIC_MENU_CONVERSION_SUCCESS );
149
+ // Reset the ID for the currently importing classic menu.
150
+ classicMenuBeingConvertedId = null;
151
+ return navigationMenu;
152
+ } )
153
+ .catch( ( err ) => {
154
+ setError( err?.message );
155
+ // Reset the ID for the currently importing classic menu.
156
+ setStatus( CLASSIC_MENU_CONVERSION_ERROR );
157
+
158
+ // Reset the ID for the currently importing classic menu.
159
+ classicMenuBeingConvertedId = null;
160
+
161
+ // Rethrow error for debugging.
162
+ throw new Error(
163
+ sprintf(
164
+ // translators: %s: the name of a menu (e.g. Header navigation).
165
+ __( `Unable to create Navigation Menu "%s".` ),
166
+ menuName
167
+ ),
168
+ {
169
+ cause: err,
170
+ }
171
+ );
172
+ } );
173
+ },
174
+ [ convertClassicMenuToBlockMenu ]
175
+ );
173
176
 
174
177
  return {
175
178
  convert,
@@ -90,7 +90,7 @@ export default function useCreateNavigationMenu( clientId ) {
90
90
  } );
91
91
  } );
92
92
  },
93
- [ serialize, saveEntityRecord ]
93
+ [ serialize, saveEntityRecord, editEntityRecord, generateDefaultTitle ]
94
94
  );
95
95
 
96
96
  return {
@@ -75,5 +75,5 @@ export default function useGenerateDefaultNavigationTitle( clientId ) {
75
75
  : title;
76
76
 
77
77
  return titleWithCount || '';
78
- }, [ isDisabled, area ] );
78
+ }, [ isDisabled, area, registry ] );
79
79
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useRef } from '@wordpress/element';
4
+ import { useCallback, useRef } from '@wordpress/element';
5
5
  import { useDispatch } from '@wordpress/data';
6
6
  import { store as noticeStore } from '@wordpress/notices';
7
7
 
@@ -10,26 +10,29 @@ function useNavigationNotice( { name, message = '' } = {} ) {
10
10
 
11
11
  const { createWarningNotice, removeNotice } = useDispatch( noticeStore );
12
12
 
13
- const showNotice = ( customMsg ) => {
14
- if ( noticeRef.current ) {
15
- return;
16
- }
13
+ const showNotice = useCallback(
14
+ ( customMsg ) => {
15
+ if ( noticeRef.current ) {
16
+ return;
17
+ }
17
18
 
18
- noticeRef.current = name;
19
+ noticeRef.current = name;
19
20
 
20
- createWarningNotice( customMsg || message, {
21
- id: noticeRef.current,
22
- type: 'snackbar',
23
- } );
24
- };
21
+ createWarningNotice( customMsg || message, {
22
+ id: noticeRef.current,
23
+ type: 'snackbar',
24
+ } );
25
+ },
26
+ [ noticeRef, createWarningNotice ]
27
+ );
25
28
 
26
- const hideNotice = () => {
29
+ const hideNotice = useCallback( () => {
27
30
  if ( ! noticeRef.current ) {
28
31
  return;
29
32
  }
30
33
  removeNotice( noticeRef.current );
31
34
  noticeRef.current = null;
32
- };
35
+ }, [ noticeRef, removeNotice ] );
33
36
 
34
37
  return [ showNotice, hideNotice ];
35
38
  }