@wordpress/block-library 7.8.0 → 7.11.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 (759) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/audio/edit.js +1 -0
  3. package/build/audio/edit.js.map +1 -1
  4. package/build/audio/save.js +2 -1
  5. package/build/audio/save.js.map +1 -1
  6. package/build/avatar/hooks.js +2 -2
  7. package/build/avatar/hooks.js.map +1 -1
  8. package/build/button/edit.js +3 -2
  9. package/build/button/edit.js.map +1 -1
  10. package/build/button/index.js +1 -24
  11. package/build/button/index.js.map +1 -1
  12. package/build/button/save.js +1 -1
  13. package/build/button/save.js.map +1 -1
  14. package/build/buttons/edit.js +1 -1
  15. package/build/buttons/edit.js.map +1 -1
  16. package/build/columns/edit.native.js +1 -1
  17. package/build/columns/edit.native.js.map +1 -1
  18. package/build/columns/variations.js +2 -2
  19. package/build/columns/variations.js.map +1 -1
  20. package/build/comment-author-name/edit.js +3 -5
  21. package/build/comment-author-name/edit.js.map +1 -1
  22. package/build/comment-author-name/index.js +0 -4
  23. package/build/comment-author-name/index.js.map +1 -1
  24. package/build/comment-date/edit.js +4 -4
  25. package/build/comment-date/edit.js.map +1 -1
  26. package/build/comment-date/index.js +0 -4
  27. package/build/comment-date/index.js.map +1 -1
  28. package/build/comment-edit-link/index.js +0 -4
  29. package/build/comment-edit-link/index.js.map +1 -1
  30. package/build/comment-reply-link/index.js +0 -4
  31. package/build/comment-reply-link/index.js.map +1 -1
  32. package/build/comment-template/index.js +1 -1
  33. package/build/comments/deprecated.js +65 -0
  34. package/build/comments/deprecated.js.map +1 -0
  35. package/build/comments/edit/comments-legacy.js +73 -0
  36. package/build/comments/edit/comments-legacy.js.map +1 -0
  37. package/build/comments/{edit.js → edit/index.js} +17 -30
  38. package/build/comments/edit/index.js.map +1 -0
  39. package/build/comments/edit/placeholder.js +117 -0
  40. package/build/comments/edit/placeholder.js.map +1 -0
  41. package/build/comments/edit/template.js +39 -0
  42. package/build/comments/edit/template.js.map +1 -0
  43. package/build/comments/index.js +11 -3
  44. package/build/comments/index.js.map +1 -1
  45. package/build/comments/save.js +12 -4
  46. package/build/comments/save.js.map +1 -1
  47. package/build/comments-pagination/index.js +1 -1
  48. package/build/comments-title/deprecated.js +1 -4
  49. package/build/comments-title/deprecated.js.map +1 -1
  50. package/build/comments-title/index.js +1 -1
  51. package/build/cover/edit/block-controls.js +2 -12
  52. package/build/cover/edit/block-controls.js.map +1 -1
  53. package/build/cover/edit/cover-placeholder.js +3 -1
  54. package/build/cover/edit/cover-placeholder.js.map +1 -1
  55. package/build/cover/edit/index.js +19 -4
  56. package/build/cover/edit/index.js.map +1 -1
  57. package/build/cover/index.js +1 -0
  58. package/build/cover/index.js.map +1 -1
  59. package/build/cover/transforms.js +3 -2
  60. package/build/cover/transforms.js.map +1 -1
  61. package/build/embed/embed-placeholder.native.js +1 -3
  62. package/build/embed/embed-placeholder.native.js.map +1 -1
  63. package/build/embed/embed-preview.js +1 -0
  64. package/build/embed/embed-preview.js.map +1 -1
  65. package/build/embed/icons.js +21 -1
  66. package/build/embed/icons.js.map +1 -1
  67. package/build/embed/save.js +1 -0
  68. package/build/embed/save.js.map +1 -1
  69. package/build/embed/variations.js +11 -0
  70. package/build/embed/variations.js.map +1 -1
  71. package/build/file/edit.js +1 -1
  72. package/build/file/edit.js.map +1 -1
  73. package/build/file/save.js +1 -1
  74. package/build/file/save.js.map +1 -1
  75. package/build/gallery/edit.js +11 -19
  76. package/build/gallery/edit.js.map +1 -1
  77. package/build/gallery/gallery.js +1 -1
  78. package/build/gallery/gallery.js.map +1 -1
  79. package/build/gallery/save.js +1 -1
  80. package/build/gallery/save.js.map +1 -1
  81. package/build/gallery/transforms.js +32 -22
  82. package/build/gallery/transforms.js.map +1 -1
  83. package/build/gallery/use-get-media.js +7 -18
  84. package/build/gallery/use-get-media.js.map +1 -1
  85. package/build/gallery/use-get-media.native.js +59 -0
  86. package/build/gallery/use-get-media.native.js.map +1 -0
  87. package/build/gallery/v1/edit.js +3 -3
  88. package/build/gallery/v1/edit.js.map +1 -1
  89. package/build/gallery/v1/gallery-image.js +1 -0
  90. package/build/gallery/v1/gallery-image.js.map +1 -1
  91. package/build/gallery/v1/gallery.js +1 -1
  92. package/build/gallery/v1/gallery.js.map +1 -1
  93. package/build/gallery/v1/save.js +10 -2
  94. package/build/gallery/v1/save.js.map +1 -1
  95. package/build/group/edit.js +1 -3
  96. package/build/group/edit.js.map +1 -1
  97. package/build/group/index.js +2 -0
  98. package/build/group/index.js.map +1 -1
  99. package/build/group/variations.js +1 -1
  100. package/build/group/variations.js.map +1 -1
  101. package/build/heading/heading-level-dropdown.js +2 -1
  102. package/build/heading/heading-level-dropdown.js.map +1 -1
  103. package/build/heading/index.js +9 -4
  104. package/build/heading/index.js.map +1 -1
  105. package/build/html/edit.js +11 -20
  106. package/build/html/edit.js.map +1 -1
  107. package/build/html/preview.js +48 -0
  108. package/build/html/preview.js.map +1 -0
  109. package/build/image/deprecated.js +77 -9
  110. package/build/image/deprecated.js.map +1 -1
  111. package/build/image/edit.js +3 -1
  112. package/build/image/edit.js.map +1 -1
  113. package/build/image/edit.native.js +20 -9
  114. package/build/image/edit.native.js.map +1 -1
  115. package/build/image/image.js +28 -20
  116. package/build/image/image.js.map +1 -1
  117. package/build/image/index.js +7 -1
  118. package/build/image/index.js.map +1 -1
  119. package/build/image/save.js +9 -2
  120. package/build/image/save.js.map +1 -1
  121. package/build/index.js +1 -3
  122. package/build/index.js.map +1 -1
  123. package/build/index.native.js +3 -13
  124. package/build/index.native.js.map +1 -1
  125. package/build/latest-posts/edit.js +1 -1
  126. package/build/latest-posts/edit.js.map +1 -1
  127. package/build/list/transforms.js +4 -63
  128. package/build/list/transforms.js.map +1 -1
  129. package/build/list/v2/transforms.js +31 -42
  130. package/build/list/v2/transforms.js.map +1 -1
  131. package/build/list-item/edit.js +14 -9
  132. package/build/list-item/edit.js.map +1 -1
  133. package/build/list-item/hooks/index.js +8 -8
  134. package/build/list-item/hooks/index.js.map +1 -1
  135. package/build/list-item/hooks/use-enter.js +7 -4
  136. package/build/list-item/hooks/use-enter.js.map +1 -1
  137. package/build/list-item/hooks/use-merge.js +174 -0
  138. package/build/list-item/hooks/use-merge.js.map +1 -0
  139. package/build/list-item/hooks/use-outdent-list-item.js +93 -36
  140. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  141. package/build/list-item/utils.js +125 -1
  142. package/build/list-item/utils.js.map +1 -1
  143. package/build/media-text/deprecated.js +134 -7
  144. package/build/media-text/deprecated.js.map +1 -1
  145. package/build/media-text/edit.js +2 -2
  146. package/build/media-text/edit.js.map +1 -1
  147. package/build/media-text/save.js +13 -0
  148. package/build/media-text/save.js.map +1 -1
  149. package/build/more/edit.js +2 -4
  150. package/build/more/edit.js.map +1 -1
  151. package/build/more/save.js +1 -7
  152. package/build/more/save.js.map +1 -1
  153. package/build/navigation/edit/index.js +1 -1
  154. package/build/navigation/edit/index.js.map +1 -1
  155. package/build/navigation/index.js +9 -0
  156. package/build/navigation/index.js.map +1 -1
  157. package/build/navigation/use-navigation-menu.js +16 -74
  158. package/build/navigation/use-navigation-menu.js.map +1 -1
  159. package/build/navigation/view.js +6 -1
  160. package/build/navigation/view.js.map +1 -1
  161. package/build/navigation-link/edit.js +5 -4
  162. package/build/navigation-link/edit.js.map +1 -1
  163. package/build/navigation-link/hooks.js +0 -16
  164. package/build/navigation-link/hooks.js.map +1 -1
  165. package/build/navigation-link/index.js +1 -1
  166. package/build/navigation-link/index.js.map +1 -1
  167. package/build/navigation-submenu/edit.js +2 -1
  168. package/build/navigation-submenu/edit.js.map +1 -1
  169. package/build/navigation-submenu/view.js +6 -1
  170. package/build/navigation-submenu/view.js.map +1 -1
  171. package/build/nextpage/edit.js +1 -3
  172. package/build/nextpage/edit.js.map +1 -1
  173. package/build/page-list/edit.js +10 -3
  174. package/build/page-list/edit.js.map +1 -1
  175. package/build/paragraph/edit.js +7 -11
  176. package/build/paragraph/edit.js.map +1 -1
  177. package/build/post-comments-form/edit.js +4 -37
  178. package/build/post-comments-form/edit.js.map +1 -1
  179. package/build/post-comments-form/form.js +47 -3
  180. package/build/post-comments-form/form.js.map +1 -1
  181. package/build/post-terms/edit.js +3 -2
  182. package/build/post-terms/edit.js.map +1 -1
  183. package/build/post-terms/index.js +1 -1
  184. package/build/post-terms/index.js.map +1 -1
  185. package/build/post-title/index.js +1 -0
  186. package/build/post-title/index.js.map +1 -1
  187. package/build/query/edit/inspector-controls/index.js +1 -1
  188. package/build/query/edit/inspector-controls/index.js.map +1 -1
  189. package/build/query/index.js +1 -1
  190. package/build/query/index.js.map +1 -1
  191. package/build/query-no-results/edit.js +1 -1
  192. package/build/query-no-results/edit.js.map +1 -1
  193. package/build/query-pagination-next/edit.js +2 -1
  194. package/build/query-pagination-next/edit.js.map +1 -1
  195. package/build/query-pagination-previous/edit.js +2 -1
  196. package/build/query-pagination-previous/edit.js.map +1 -1
  197. package/build/quote/deprecated.js +168 -36
  198. package/build/quote/deprecated.js.map +1 -1
  199. package/build/quote/edit.js +76 -39
  200. package/build/quote/edit.js.map +1 -1
  201. package/build/quote/index.js +9 -45
  202. package/build/quote/index.js.map +1 -1
  203. package/build/quote/save.js +1 -5
  204. package/build/quote/save.js.map +1 -1
  205. package/build/quote/transforms.js +110 -158
  206. package/build/quote/transforms.js.map +1 -1
  207. package/build/search/edit.js +1 -1
  208. package/build/search/edit.js.map +1 -1
  209. package/build/site-logo/edit.js +5 -13
  210. package/build/site-logo/edit.js.map +1 -1
  211. package/build/site-title/edit/level-toolbar.js +2 -1
  212. package/build/site-title/edit/level-toolbar.js.map +1 -1
  213. package/build/social-link/icons/index.js +13 -0
  214. package/build/social-link/icons/index.js.map +1 -1
  215. package/build/social-link/icons/whatsapp.js +25 -0
  216. package/build/social-link/icons/whatsapp.js.map +1 -0
  217. package/build/social-link/variations.js +7 -0
  218. package/build/social-link/variations.js.map +1 -1
  219. package/build/table/edit.js +1 -0
  220. package/build/table/edit.js.map +1 -1
  221. package/build/table/save.js +2 -1
  222. package/build/table/save.js.map +1 -1
  223. package/build/template-part/edit/index.js +17 -8
  224. package/build/template-part/edit/index.js.map +1 -1
  225. package/build/template-part/edit/selection-modal.js +33 -13
  226. package/build/template-part/edit/selection-modal.js.map +1 -1
  227. package/build/template-part/edit/utils/search.js +94 -0
  228. package/build/template-part/edit/utils/search.js.map +1 -0
  229. package/build/template-part/index.js +1 -1
  230. package/build/template-part/index.js.map +1 -1
  231. package/build/template-part/variations.js +0 -16
  232. package/build/template-part/variations.js.map +1 -1
  233. package/build/utils/clean-empty-object.js +5 -3
  234. package/build/utils/clean-empty-object.js.map +1 -1
  235. package/build/video/edit.js +1 -0
  236. package/build/video/edit.js.map +1 -1
  237. package/build/video/save.js +1 -0
  238. package/build/video/save.js.map +1 -1
  239. package/build/video/tracks-editor.js +9 -11
  240. package/build/video/tracks-editor.js.map +1 -1
  241. package/build-module/audio/edit.js +2 -1
  242. package/build-module/audio/edit.js.map +1 -1
  243. package/build-module/audio/save.js +3 -2
  244. package/build-module/audio/save.js.map +1 -1
  245. package/build-module/avatar/hooks.js +2 -2
  246. package/build-module/avatar/hooks.js.map +1 -1
  247. package/build-module/button/edit.js +4 -3
  248. package/build-module/button/edit.js.map +1 -1
  249. package/build-module/button/index.js +1 -24
  250. package/build-module/button/index.js.map +1 -1
  251. package/build-module/button/save.js +2 -2
  252. package/build-module/button/save.js.map +1 -1
  253. package/build-module/buttons/edit.js +2 -2
  254. package/build-module/buttons/edit.js.map +1 -1
  255. package/build-module/columns/edit.native.js +2 -2
  256. package/build-module/columns/edit.native.js.map +1 -1
  257. package/build-module/columns/variations.js +2 -2
  258. package/build-module/columns/variations.js.map +1 -1
  259. package/build-module/comment-author-name/edit.js +3 -5
  260. package/build-module/comment-author-name/edit.js.map +1 -1
  261. package/build-module/comment-author-name/index.js +0 -4
  262. package/build-module/comment-author-name/index.js.map +1 -1
  263. package/build-module/comment-date/edit.js +4 -4
  264. package/build-module/comment-date/edit.js.map +1 -1
  265. package/build-module/comment-date/index.js +0 -4
  266. package/build-module/comment-date/index.js.map +1 -1
  267. package/build-module/comment-edit-link/index.js +0 -4
  268. package/build-module/comment-edit-link/index.js.map +1 -1
  269. package/build-module/comment-reply-link/index.js +0 -4
  270. package/build-module/comment-reply-link/index.js.map +1 -1
  271. package/build-module/comment-template/index.js +1 -1
  272. package/build-module/comments/deprecated.js +54 -0
  273. package/build-module/comments/deprecated.js.map +1 -0
  274. package/build-module/comments/edit/comments-legacy.js +59 -0
  275. package/build-module/comments/edit/comments-legacy.js.map +1 -0
  276. package/build-module/comments/edit/index.js +37 -0
  277. package/build-module/comments/edit/index.js.map +1 -0
  278. package/build-module/comments/edit/placeholder.js +102 -0
  279. package/build-module/comments/edit/placeholder.js.map +1 -0
  280. package/build-module/comments/edit/template.js +32 -0
  281. package/build-module/comments/edit/template.js.map +1 -0
  282. package/build-module/comments/index.js +10 -3
  283. package/build-module/comments/index.js.map +1 -1
  284. package/build-module/comments/save.js +9 -4
  285. package/build-module/comments/save.js.map +1 -1
  286. package/build-module/comments-pagination/index.js +1 -1
  287. package/build-module/comments-title/deprecated.js +1 -4
  288. package/build-module/comments-title/deprecated.js.map +1 -1
  289. package/build-module/comments-title/index.js +1 -1
  290. package/build-module/cover/edit/block-controls.js +3 -13
  291. package/build-module/cover/edit/block-controls.js.map +1 -1
  292. package/build-module/cover/edit/cover-placeholder.js +3 -1
  293. package/build-module/cover/edit/cover-placeholder.js.map +1 -1
  294. package/build-module/cover/edit/index.js +19 -4
  295. package/build-module/cover/edit/index.js.map +1 -1
  296. package/build-module/cover/index.js +1 -0
  297. package/build-module/cover/index.js.map +1 -1
  298. package/build-module/cover/transforms.js +3 -2
  299. package/build-module/cover/transforms.js.map +1 -1
  300. package/build-module/embed/embed-placeholder.native.js +1 -2
  301. package/build-module/embed/embed-placeholder.native.js.map +1 -1
  302. package/build-module/embed/embed-preview.js +2 -1
  303. package/build-module/embed/embed-preview.js.map +1 -1
  304. package/build-module/embed/icons.js +19 -0
  305. package/build-module/embed/icons.js.map +1 -1
  306. package/build-module/embed/save.js +2 -1
  307. package/build-module/embed/save.js.map +1 -1
  308. package/build-module/embed/variations.js +12 -1
  309. package/build-module/embed/variations.js.map +1 -1
  310. package/build-module/file/edit.js +2 -2
  311. package/build-module/file/edit.js.map +1 -1
  312. package/build-module/file/save.js +2 -2
  313. package/build-module/file/save.js.map +1 -1
  314. package/build-module/gallery/edit.js +11 -18
  315. package/build-module/gallery/edit.js.map +1 -1
  316. package/build-module/gallery/gallery.js +2 -2
  317. package/build-module/gallery/gallery.js.map +1 -1
  318. package/build-module/gallery/save.js +2 -2
  319. package/build-module/gallery/save.js.map +1 -1
  320. package/build-module/gallery/transforms.js +33 -23
  321. package/build-module/gallery/transforms.js.map +1 -1
  322. package/build-module/gallery/use-get-media.js +6 -16
  323. package/build-module/gallery/use-get-media.js.map +1 -1
  324. package/build-module/gallery/use-get-media.native.js +50 -0
  325. package/build-module/gallery/use-get-media.native.js.map +1 -0
  326. package/build-module/gallery/v1/edit.js +4 -4
  327. package/build-module/gallery/v1/edit.js.map +1 -1
  328. package/build-module/gallery/v1/gallery-image.js +2 -1
  329. package/build-module/gallery/v1/gallery-image.js.map +1 -1
  330. package/build-module/gallery/v1/gallery.js +2 -2
  331. package/build-module/gallery/v1/gallery.js.map +1 -1
  332. package/build-module/gallery/v1/save.js +8 -3
  333. package/build-module/gallery/v1/save.js.map +1 -1
  334. package/build-module/group/edit.js +1 -3
  335. package/build-module/group/edit.js.map +1 -1
  336. package/build-module/group/index.js +2 -0
  337. package/build-module/group/index.js.map +1 -1
  338. package/build-module/group/variations.js +2 -2
  339. package/build-module/group/variations.js.map +1 -1
  340. package/build-module/heading/heading-level-dropdown.js +2 -1
  341. package/build-module/heading/heading-level-dropdown.js.map +1 -1
  342. package/build-module/heading/index.js +9 -4
  343. package/build-module/heading/index.js.map +1 -1
  344. package/build-module/html/edit.js +12 -23
  345. package/build-module/html/edit.js.map +1 -1
  346. package/build-module/html/preview.js +38 -0
  347. package/build-module/html/preview.js.map +1 -0
  348. package/build-module/image/deprecated.js +77 -9
  349. package/build-module/image/deprecated.js.map +1 -1
  350. package/build-module/image/edit.js +5 -3
  351. package/build-module/image/edit.js.map +1 -1
  352. package/build-module/image/edit.native.js +20 -9
  353. package/build-module/image/edit.native.js.map +1 -1
  354. package/build-module/image/image.js +30 -22
  355. package/build-module/image/image.js.map +1 -1
  356. package/build-module/image/index.js +7 -1
  357. package/build-module/image/index.js.map +1 -1
  358. package/build-module/image/save.js +10 -3
  359. package/build-module/image/save.js.map +1 -1
  360. package/build-module/index.js +1 -2
  361. package/build-module/index.js.map +1 -1
  362. package/build-module/index.native.js +3 -13
  363. package/build-module/index.native.js.map +1 -1
  364. package/build-module/latest-posts/edit.js +2 -2
  365. package/build-module/latest-posts/edit.js.map +1 -1
  366. package/build-module/list/transforms.js +4 -63
  367. package/build-module/list/transforms.js.map +1 -1
  368. package/build-module/list/v2/transforms.js +32 -44
  369. package/build-module/list/v2/transforms.js.map +1 -1
  370. package/build-module/list-item/edit.js +14 -10
  371. package/build-module/list-item/edit.js.map +1 -1
  372. package/build-module/list-item/hooks/index.js +1 -1
  373. package/build-module/list-item/hooks/index.js.map +1 -1
  374. package/build-module/list-item/hooks/use-enter.js +7 -4
  375. package/build-module/list-item/hooks/use-enter.js.map +1 -1
  376. package/build-module/list-item/hooks/use-merge.js +160 -0
  377. package/build-module/list-item/hooks/use-merge.js.map +1 -0
  378. package/build-module/list-item/hooks/use-outdent-list-item.js +88 -33
  379. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  380. package/build-module/list-item/utils.js +123 -2
  381. package/build-module/list-item/utils.js.map +1 -1
  382. package/build-module/media-text/deprecated.js +134 -8
  383. package/build-module/media-text/deprecated.js.map +1 -1
  384. package/build-module/media-text/edit.js +2 -2
  385. package/build-module/media-text/edit.js.map +1 -1
  386. package/build-module/media-text/save.js +13 -0
  387. package/build-module/media-text/save.js.map +1 -1
  388. package/build-module/more/edit.js +2 -4
  389. package/build-module/more/edit.js.map +1 -1
  390. package/build-module/more/save.js +1 -6
  391. package/build-module/more/save.js.map +1 -1
  392. package/build-module/navigation/edit/index.js +1 -1
  393. package/build-module/navigation/edit/index.js.map +1 -1
  394. package/build-module/navigation/index.js +9 -0
  395. package/build-module/navigation/index.js.map +1 -1
  396. package/build-module/navigation/use-navigation-menu.js +17 -75
  397. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  398. package/build-module/navigation/view.js +6 -1
  399. package/build-module/navigation/view.js.map +1 -1
  400. package/build-module/navigation-link/edit.js +5 -4
  401. package/build-module/navigation-link/edit.js.map +1 -1
  402. package/build-module/navigation-link/hooks.js +0 -13
  403. package/build-module/navigation-link/hooks.js.map +1 -1
  404. package/build-module/navigation-link/index.js +1 -1
  405. package/build-module/navigation-link/index.js.map +1 -1
  406. package/build-module/navigation-submenu/edit.js +2 -1
  407. package/build-module/navigation-submenu/edit.js.map +1 -1
  408. package/build-module/navigation-submenu/view.js +6 -1
  409. package/build-module/navigation-submenu/view.js.map +1 -1
  410. package/build-module/nextpage/edit.js +1 -3
  411. package/build-module/nextpage/edit.js.map +1 -1
  412. package/build-module/page-list/edit.js +10 -3
  413. package/build-module/page-list/edit.js.map +1 -1
  414. package/build-module/paragraph/edit.js +8 -12
  415. package/build-module/paragraph/edit.js.map +1 -1
  416. package/build-module/post-comments-form/edit.js +5 -35
  417. package/build-module/post-comments-form/edit.js.map +1 -1
  418. package/build-module/post-comments-form/form.js +46 -5
  419. package/build-module/post-comments-form/form.js.map +1 -1
  420. package/build-module/post-terms/edit.js +3 -2
  421. package/build-module/post-terms/edit.js.map +1 -1
  422. package/build-module/post-terms/index.js +1 -1
  423. package/build-module/post-terms/index.js.map +1 -1
  424. package/build-module/post-title/index.js +1 -0
  425. package/build-module/post-title/index.js.map +1 -1
  426. package/build-module/query/edit/inspector-controls/index.js +1 -1
  427. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  428. package/build-module/query/index.js +1 -1
  429. package/build-module/query/index.js.map +1 -1
  430. package/build-module/query-no-results/edit.js +2 -2
  431. package/build-module/query-no-results/edit.js.map +1 -1
  432. package/build-module/query-pagination-next/edit.js +2 -1
  433. package/build-module/query-pagination-next/edit.js.map +1 -1
  434. package/build-module/query-pagination-previous/edit.js +2 -1
  435. package/build-module/query-pagination-previous/edit.js.map +1 -1
  436. package/build-module/quote/deprecated.js +162 -36
  437. package/build-module/quote/deprecated.js.map +1 -1
  438. package/build-module/quote/edit.js +77 -43
  439. package/build-module/quote/edit.js.map +1 -1
  440. package/build-module/quote/index.js +9 -39
  441. package/build-module/quote/index.js.map +1 -1
  442. package/build-module/quote/save.js +4 -8
  443. package/build-module/quote/save.js.map +1 -1
  444. package/build-module/quote/transforms.js +111 -158
  445. package/build-module/quote/transforms.js.map +1 -1
  446. package/build-module/search/edit.js +2 -2
  447. package/build-module/search/edit.js.map +1 -1
  448. package/build-module/site-logo/edit.js +5 -13
  449. package/build-module/site-logo/edit.js.map +1 -1
  450. package/build-module/site-title/edit/level-toolbar.js +2 -1
  451. package/build-module/site-title/edit/level-toolbar.js.map +1 -1
  452. package/build-module/social-link/icons/index.js +1 -0
  453. package/build-module/social-link/icons/index.js.map +1 -1
  454. package/build-module/social-link/icons/whatsapp.js +15 -0
  455. package/build-module/social-link/icons/whatsapp.js.map +1 -0
  456. package/build-module/social-link/variations.js +8 -1
  457. package/build-module/social-link/variations.js.map +1 -1
  458. package/build-module/table/edit.js +2 -1
  459. package/build-module/table/edit.js.map +1 -1
  460. package/build-module/table/save.js +3 -2
  461. package/build-module/table/save.js.map +1 -1
  462. package/build-module/template-part/edit/index.js +20 -11
  463. package/build-module/template-part/edit/index.js.map +1 -1
  464. package/build-module/template-part/edit/selection-modal.js +33 -15
  465. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  466. package/build-module/template-part/edit/utils/search.js +84 -0
  467. package/build-module/template-part/edit/utils/search.js.map +1 -0
  468. package/build-module/template-part/index.js +1 -1
  469. package/build-module/template-part/index.js.map +1 -1
  470. package/build-module/template-part/variations.js +0 -13
  471. package/build-module/template-part/variations.js.map +1 -1
  472. package/build-module/utils/clean-empty-object.js +5 -2
  473. package/build-module/utils/clean-empty-object.js.map +1 -1
  474. package/build-module/video/edit.js +2 -1
  475. package/build-module/video/edit.js.map +1 -1
  476. package/build-module/video/save.js +2 -1
  477. package/build-module/video/save.js.map +1 -1
  478. package/build-module/video/tracks-editor.js +9 -11
  479. package/build-module/video/tracks-editor.js.map +1 -1
  480. package/build-style/button/style-rtl.css +6 -1
  481. package/build-style/button/style.css +6 -1
  482. package/build-style/comment-template/style-rtl.css +12 -0
  483. package/build-style/comment-template/style.css +12 -0
  484. package/build-style/comments/editor-rtl.css +122 -0
  485. package/build-style/comments/editor.css +122 -0
  486. package/build-style/{post-comments → comments}/style-rtl.css +3 -1
  487. package/build-style/{post-comments → comments}/style.css +3 -1
  488. package/build-style/common-rtl.css +7 -0
  489. package/build-style/common.css +7 -0
  490. package/build-style/cover/style-rtl.css +2 -2
  491. package/build-style/cover/style.css +2 -2
  492. package/build-style/editor-elements-rtl.css +85 -0
  493. package/build-style/editor-elements.css +85 -0
  494. package/build-style/editor-rtl.css +154 -10
  495. package/build-style/editor.css +154 -10
  496. package/build-style/{post-comments/editor-rtl.css → elements-rtl.css} +5 -2
  497. package/build-style/{post-comments/editor.css → elements.css} +5 -2
  498. package/build-style/file/style-rtl.css +5 -8
  499. package/build-style/file/style.css +5 -8
  500. package/build-style/gallery/style-rtl.css +7 -2
  501. package/build-style/gallery/style.css +7 -2
  502. package/build-style/image/editor-rtl.css +4 -3
  503. package/build-style/image/editor.css +4 -3
  504. package/build-style/image/style-rtl.css +33 -3
  505. package/build-style/image/style.css +33 -3
  506. package/build-style/navigation/style-rtl.css +9 -1
  507. package/build-style/navigation/style.css +9 -1
  508. package/build-style/post-comments-form/editor-rtl.css +3 -0
  509. package/build-style/post-comments-form/editor.css +3 -0
  510. package/build-style/post-comments-form/style-rtl.css +0 -1
  511. package/build-style/post-comments-form/style.css +0 -1
  512. package/build-style/post-template/style-rtl.css +9 -18
  513. package/build-style/post-template/style.css +9 -18
  514. package/build-style/query/editor-rtl.css +1 -1
  515. package/build-style/query/editor.css +1 -1
  516. package/build-style/search/style-rtl.css +6 -8
  517. package/build-style/search/style.css +6 -8
  518. package/build-style/search/theme-rtl.css +5 -0
  519. package/build-style/search/theme.css +5 -0
  520. package/build-style/social-link/editor-rtl.css +1 -0
  521. package/build-style/social-link/editor.css +1 -0
  522. package/build-style/social-links/style-rtl.css +8 -0
  523. package/build-style/social-links/style.css +8 -0
  524. package/build-style/style-rtl.css +216 -154
  525. package/build-style/style.css +216 -154
  526. package/build-style/template-part/editor-rtl.css +14 -3
  527. package/build-style/template-part/editor.css +14 -3
  528. package/build-style/theme-rtl.css +5 -0
  529. package/build-style/theme.css +5 -0
  530. package/package.json +28 -28
  531. package/src/audio/edit.js +4 -0
  532. package/src/audio/save.js +12 -2
  533. package/src/avatar/hooks.js +6 -9
  534. package/src/button/block.json +1 -24
  535. package/src/button/edit.js +3 -2
  536. package/src/button/save.js +2 -2
  537. package/src/button/style.scss +13 -1
  538. package/src/buttons/edit.js +1 -5
  539. package/src/columns/edit.native.js +2 -2
  540. package/src/columns/variations.js +2 -2
  541. package/src/comment-author-name/block.json +0 -4
  542. package/src/comment-author-name/edit.js +3 -12
  543. package/src/comment-date/block.json +0 -4
  544. package/src/comment-date/edit.js +10 -14
  545. package/src/comment-date/index.php +0 -3
  546. package/src/comment-edit-link/block.json +0 -4
  547. package/src/comment-reply-link/block.json +0 -4
  548. package/src/comment-template/block.json +1 -1
  549. package/src/comment-template/style.scss +14 -0
  550. package/src/comments/block.json +7 -2
  551. package/src/comments/deprecated.js +53 -0
  552. package/src/comments/edit/comments-legacy.js +71 -0
  553. package/src/comments/edit/index.js +35 -0
  554. package/src/comments/edit/placeholder.js +124 -0
  555. package/src/comments/{edit.js → edit/template.js} +25 -32
  556. package/src/comments/editor.scss +9 -0
  557. package/src/comments/index.js +2 -0
  558. package/src/comments/index.php +219 -0
  559. package/src/comments/save.js +8 -7
  560. package/src/{post-comments → comments}/style.scss +14 -3
  561. package/src/comments-pagination/block.json +1 -1
  562. package/src/comments-title/block.json +1 -1
  563. package/src/comments-title/deprecated.js +0 -2
  564. package/src/common.scss +2 -0
  565. package/src/cover/block.json +1 -0
  566. package/src/cover/edit/block-controls.js +4 -20
  567. package/src/cover/edit/cover-placeholder.js +2 -0
  568. package/src/cover/edit/index.js +16 -0
  569. package/src/cover/index.php +21 -8
  570. package/src/cover/style.scss +2 -2
  571. package/src/cover/transforms.js +2 -2
  572. package/src/editor-elements.scss +10 -0
  573. package/src/editor.scss +2 -1
  574. package/src/elements.scss +6 -0
  575. package/src/embed/embed-placeholder.native.js +2 -3
  576. package/src/embed/embed-preview.js +8 -1
  577. package/src/embed/icons.js +25 -0
  578. package/src/embed/save.js +10 -2
  579. package/src/embed/test/__snapshots__/index.native.js.snap +1 -1
  580. package/src/embed/variations.js +10 -0
  581. package/src/file/edit.js +4 -2
  582. package/src/file/save.js +2 -2
  583. package/src/file/style.scss +5 -5
  584. package/src/freeform/editor.scss +0 -2
  585. package/src/gallery/edit.js +12 -23
  586. package/src/gallery/gallery.js +9 -2
  587. package/src/gallery/index.php +5 -1
  588. package/src/gallery/save.js +5 -1
  589. package/src/gallery/style.scss +10 -1
  590. package/src/gallery/test/__snapshots__/index.native.js.snap +2 -2
  591. package/src/gallery/test/helpers.native.js +11 -198
  592. package/src/gallery/test/index.native.js +19 -29
  593. package/src/gallery/transforms.js +28 -13
  594. package/src/gallery/use-get-media.js +11 -28
  595. package/src/gallery/use-get-media.native.js +44 -0
  596. package/src/gallery/v1/edit.js +3 -4
  597. package/src/gallery/v1/gallery-image.js +4 -0
  598. package/src/gallery/v1/gallery.js +8 -2
  599. package/src/gallery/v1/save.js +20 -3
  600. package/src/group/block.json +2 -0
  601. package/src/group/edit.js +1 -3
  602. package/src/group/variations.js +2 -2
  603. package/src/heading/heading-level-dropdown.js +1 -0
  604. package/src/heading/index.js +8 -2
  605. package/src/html/edit.js +10 -40
  606. package/src/html/preview.js +46 -0
  607. package/src/image/block.json +7 -1
  608. package/src/image/deprecated.js +86 -0
  609. package/src/image/edit.js +6 -1
  610. package/src/image/edit.native.js +19 -7
  611. package/src/image/editor.scss +9 -4
  612. package/src/image/image.js +28 -16
  613. package/src/image/save.js +20 -3
  614. package/src/image/style.scss +39 -3
  615. package/src/image/test/edit.native.js +51 -19
  616. package/src/index.js +0 -2
  617. package/src/index.native.js +2 -11
  618. package/src/latest-posts/edit.js +2 -6
  619. package/src/list/transforms.js +0 -47
  620. package/src/list/v2/transforms.js +23 -46
  621. package/src/list-item/edit.js +10 -12
  622. package/src/list-item/hooks/index.js +1 -1
  623. package/src/list-item/hooks/use-enter.js +9 -6
  624. package/src/list-item/hooks/use-merge.js +141 -0
  625. package/src/list-item/hooks/use-outdent-list-item.js +79 -54
  626. package/src/list-item/utils.js +27 -3
  627. package/src/media-text/deprecated.js +148 -1
  628. package/src/media-text/edit.js +2 -1
  629. package/src/media-text/save.js +18 -0
  630. package/src/more/edit.js +9 -11
  631. package/src/more/save.js +3 -6
  632. package/src/navigation/block.json +9 -0
  633. package/src/navigation/edit/index.js +1 -0
  634. package/src/navigation/style.scss +11 -2
  635. package/src/navigation/test/use-navigation-menu.js +16 -11
  636. package/src/navigation/use-navigation-menu.js +26 -83
  637. package/src/navigation/view.js +6 -1
  638. package/src/navigation-link/edit.js +4 -3
  639. package/src/navigation-link/hooks.js +0 -14
  640. package/src/navigation-link/index.js +1 -1
  641. package/src/navigation-link/test/__snapshots__/hooks.js.snap +0 -93
  642. package/src/navigation-link/test/hooks.js +0 -12
  643. package/src/navigation-submenu/edit.js +1 -0
  644. package/src/navigation-submenu/view.js +6 -1
  645. package/src/nextpage/edit.js +1 -3
  646. package/src/page-list/edit.js +12 -5
  647. package/src/paragraph/edit.js +8 -14
  648. package/src/post-comments-form/edit.js +3 -58
  649. package/src/post-comments-form/editor.scss +4 -0
  650. package/src/post-comments-form/form.js +81 -6
  651. package/src/post-comments-form/index.php +1 -1
  652. package/src/post-comments-form/style.scss +0 -1
  653. package/src/post-featured-image/index.php +4 -2
  654. package/src/post-template/index.php +23 -17
  655. package/src/post-template/style.scss +1 -7
  656. package/src/post-terms/edit.js +3 -2
  657. package/src/post-terms/index.js +1 -1
  658. package/src/post-title/block.json +1 -0
  659. package/src/query/edit/inspector-controls/index.js +1 -1
  660. package/src/query/editor.scss +1 -1
  661. package/src/query/index.js +1 -1
  662. package/src/query-no-results/edit.js +2 -5
  663. package/src/query-no-results/index.php +10 -8
  664. package/src/query-pagination-next/edit.js +1 -0
  665. package/src/query-pagination-previous/edit.js +1 -0
  666. package/src/quote/deprecated.js +213 -99
  667. package/src/quote/edit.js +77 -52
  668. package/src/quote/index.js +10 -33
  669. package/src/quote/save.js +5 -5
  670. package/src/quote/{v2/test → test}/migrate.js +2 -7
  671. package/src/quote/transforms.js +117 -147
  672. package/src/search/edit.js +2 -2
  673. package/src/search/index.php +12 -10
  674. package/src/search/style.scss +9 -8
  675. package/src/search/theme.scss +5 -0
  676. package/src/site-logo/edit.js +2 -11
  677. package/src/site-title/edit/level-toolbar.js +1 -0
  678. package/src/social-link/editor.scss +3 -0
  679. package/src/social-link/icons/index.js +1 -0
  680. package/src/social-link/icons/whatsapp.js +10 -0
  681. package/src/social-link/index.php +20 -0
  682. package/src/social-link/socials-with-bg.scss +5 -0
  683. package/src/social-link/socials-without-bg.scss +5 -0
  684. package/src/social-link/variations.js +7 -0
  685. package/src/style.scss +1 -1
  686. package/src/table/edit.js +2 -0
  687. package/src/table/save.js +6 -1
  688. package/src/template-part/edit/index.js +37 -24
  689. package/src/template-part/edit/selection-modal.js +68 -40
  690. package/src/template-part/edit/utils/search.js +76 -0
  691. package/src/template-part/editor.scss +21 -9
  692. package/src/template-part/index.js +1 -1
  693. package/src/template-part/index.php +56 -2
  694. package/src/template-part/variations.js +0 -11
  695. package/src/utils/clean-empty-object.js +8 -2
  696. package/src/video/edit.js +4 -0
  697. package/src/video/save.js +10 -2
  698. package/src/video/tracks-editor.js +1 -1
  699. package/build/comments/edit.js.map +0 -1
  700. package/build/gallery/use-short-code-transform.js +0 -64
  701. package/build/gallery/use-short-code-transform.js.map +0 -1
  702. package/build/list-item/hooks/use-backspace.js +0 -59
  703. package/build/list-item/hooks/use-backspace.js.map +0 -1
  704. package/build/navigation-link/fallback-variations.js +0 -75
  705. package/build/navigation-link/fallback-variations.js.map +0 -1
  706. package/build/post-comments/edit.js +0 -184
  707. package/build/post-comments/edit.js.map +0 -1
  708. package/build/post-comments/index.js +0 -72
  709. package/build/post-comments/index.js.map +0 -1
  710. package/build/quote/v2/deprecated.js +0 -133
  711. package/build/quote/v2/deprecated.js.map +0 -1
  712. package/build/quote/v2/edit.js +0 -139
  713. package/build/quote/v2/edit.js.map +0 -1
  714. package/build/quote/v2/index.js +0 -49
  715. package/build/quote/v2/index.js.map +0 -1
  716. package/build/quote/v2/save.js +0 -43
  717. package/build/quote/v2/save.js.map +0 -1
  718. package/build/quote/v2/transforms.js +0 -156
  719. package/build/quote/v2/transforms.js.map +0 -1
  720. package/build/template-part/fallback-variations.js +0 -59
  721. package/build/template-part/fallback-variations.js.map +0 -1
  722. package/build-module/comments/edit.js +0 -51
  723. package/build-module/comments/edit.js.map +0 -1
  724. package/build-module/gallery/use-short-code-transform.js +0 -54
  725. package/build-module/gallery/use-short-code-transform.js.map +0 -1
  726. package/build-module/list-item/hooks/use-backspace.js +0 -44
  727. package/build-module/list-item/hooks/use-backspace.js.map +0 -1
  728. package/build-module/navigation-link/fallback-variations.js +0 -65
  729. package/build-module/navigation-link/fallback-variations.js.map +0 -1
  730. package/build-module/post-comments/edit.js +0 -171
  731. package/build-module/post-comments/edit.js.map +0 -1
  732. package/build-module/post-comments/index.js +0 -59
  733. package/build-module/post-comments/index.js.map +0 -1
  734. package/build-module/quote/v2/deprecated.js +0 -116
  735. package/build-module/quote/v2/deprecated.js.map +0 -1
  736. package/build-module/quote/v2/edit.js +0 -122
  737. package/build-module/quote/v2/edit.js.map +0 -1
  738. package/build-module/quote/v2/index.js +0 -33
  739. package/build-module/quote/v2/index.js.map +0 -1
  740. package/build-module/quote/v2/save.js +0 -30
  741. package/build-module/quote/v2/save.js.map +0 -1
  742. package/build-module/quote/v2/transforms.js +0 -147
  743. package/build-module/quote/v2/transforms.js.map +0 -1
  744. package/build-module/template-part/fallback-variations.js +0 -47
  745. package/build-module/template-part/fallback-variations.js.map +0 -1
  746. package/src/gallery/use-short-code-transform.js +0 -55
  747. package/src/list-item/hooks/use-backspace.js +0 -51
  748. package/src/navigation-link/fallback-variations.js +0 -65
  749. package/src/post-comments/block.json +0 -45
  750. package/src/post-comments/edit.js +0 -247
  751. package/src/post-comments/editor.scss +0 -3
  752. package/src/post-comments/index.js +0 -18
  753. package/src/post-comments/index.php +0 -87
  754. package/src/quote/v2/deprecated.js +0 -107
  755. package/src/quote/v2/edit.js +0 -139
  756. package/src/quote/v2/index.js +0 -36
  757. package/src/quote/v2/save.js +0 -26
  758. package/src/quote/v2/transforms.js +0 -155
  759. package/src/template-part/fallback-variations.js +0 -51
@@ -1,13 +1,6 @@
1
1
  .wp-block-search__button {
2
- background: #f7f7f7;
3
- border: 1px solid #ccc;
4
- padding: 0.375em 0.625em;
5
- color: #32373c;
6
2
  margin-left: 0.625em;
7
3
  word-break: normal;
8
- font-size: inherit;
9
- font-family: inherit;
10
- line-height: inherit;
11
4
 
12
5
  &.has-icon {
13
6
  line-height: 0;
@@ -20,6 +13,13 @@
20
13
  }
21
14
  }
22
15
 
16
+ // These rules are set to zero specificity to keep the default styles for search buttons.
17
+ // They are needed for backwards compatibility.
18
+ :where(.wp-block-search__button) {
19
+ border: 1px solid #ccc;
20
+ padding: 0.375em 0.625em;
21
+ }
22
+
23
23
  .wp-block-search__inside-wrapper {
24
24
  display: flex;
25
25
  flex: auto;
@@ -62,7 +62,8 @@
62
62
  }
63
63
  }
64
64
 
65
- .wp-block-search__button {
65
+ // For lower specificity.
66
+ :where(.wp-block-search__button) {
66
67
  padding: 0.125em 0.5em;
67
68
  }
68
69
  }
@@ -3,3 +3,8 @@
3
3
  font-weight: bold;
4
4
  }
5
5
  }
6
+
7
+ .wp-block-search__button {
8
+ border: 1px solid #ccc;
9
+ padding: 0.375em 0.625em;
10
+ }
@@ -358,7 +358,6 @@ export default function LogoEdit( {
358
358
  isSelected,
359
359
  } ) {
360
360
  const { width, shouldSyncIcon } = attributes;
361
- const [ logoUrl, setLogoUrl ] = useState();
362
361
  const ref = useRef();
363
362
 
364
363
  const {
@@ -420,13 +419,7 @@ export default function LogoEdit( {
420
419
  site_icon: newValue ?? null,
421
420
  } );
422
421
 
423
- let alt = null;
424
- if ( mediaItemData ) {
425
- alt = mediaItemData.alt_text;
426
- if ( logoUrl !== mediaItemData.source_url ) {
427
- setLogoUrl( mediaItemData.source_url );
428
- }
429
- }
422
+ const { alt_text: alt, source_url: logoUrl } = mediaItemData ?? {};
430
423
 
431
424
  const onInitialSelectLogo = ( media ) => {
432
425
  // Initialize the syncSiteIcon toggle. If we currently have no Site logo and no
@@ -452,7 +445,6 @@ export default function LogoEdit( {
452
445
  if ( ! media.id && media.url ) {
453
446
  // This is a temporary blob image.
454
447
  setLogo( undefined );
455
- setLogoUrl( media.url );
456
448
  return;
457
449
  }
458
450
 
@@ -461,7 +453,6 @@ export default function LogoEdit( {
461
453
 
462
454
  const onRemoveLogo = () => {
463
455
  setLogo( null );
464
- setLogoUrl( undefined );
465
456
  setAttributes( { width: undefined } );
466
457
  };
467
458
 
@@ -542,7 +533,7 @@ export default function LogoEdit( {
542
533
  { !! logoUrl && logoImage }
543
534
  { ! logoUrl && ! canUserEdit && (
544
535
  <Placeholder className="site-logo_placeholder">
545
- { isLoading && (
536
+ { !! isLoading && (
546
537
  <span className="components-placeholder__preview">
547
538
  <Spinner />
548
539
  </span>
@@ -21,6 +21,7 @@ export default function LevelControl( { level, onChange } ) {
21
21
  sprintf( __( 'Heading %d' ), currentLevel ),
22
22
  isActive,
23
23
  onClick: () => onChange( currentLevel ),
24
+ role: 'menuitemradio',
24
25
  };
25
26
  } );
26
27
  return (
@@ -9,6 +9,9 @@
9
9
  height: auto;
10
10
  line-height: 0;
11
11
 
12
+ // This rule ensures social link buttons display correctly in template parts.
13
+ opacity: 1;
14
+
12
15
  // This rule is duplicated from the style.scss and needs to be the same as there.
13
16
  padding: 0.25em;
14
17
  }
@@ -37,6 +37,7 @@ export * from './twitch';
37
37
  export * from './twitter';
38
38
  export * from './vimeo';
39
39
  export * from './vk';
40
+ export * from './whatsapp';
40
41
  export * from './wordpress';
41
42
  export * from './yelp';
42
43
  export * from './youtube';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { Path, SVG } from '@wordpress/primitives';
5
+
6
+ export const WhatsAppIcon = () => (
7
+ <SVG width="24" height="24" viewBox="0 0 24 24" version="1.1">
8
+ <Path d="M 12.011719 2 C 6.5057187 2 2.0234844 6.478375 2.0214844 11.984375 C 2.0204844 13.744375 2.4814687 15.462563 3.3554688 16.976562 L 2 22 L 7.2324219 20.763672 C 8.6914219 21.559672 10.333859 21.977516 12.005859 21.978516 L 12.009766 21.978516 C 17.514766 21.978516 21.995047 17.499141 21.998047 11.994141 C 22.000047 9.3251406 20.962172 6.8157344 19.076172 4.9277344 C 17.190172 3.0407344 14.683719 2.001 12.011719 2 z M 12.009766 4 C 14.145766 4.001 16.153109 4.8337969 17.662109 6.3417969 C 19.171109 7.8517969 20.000047 9.8581875 19.998047 11.992188 C 19.996047 16.396187 16.413812 19.978516 12.007812 19.978516 C 10.674812 19.977516 9.3544062 19.642812 8.1914062 19.007812 L 7.5175781 18.640625 L 6.7734375 18.816406 L 4.8046875 19.28125 L 5.2851562 17.496094 L 5.5019531 16.695312 L 5.0878906 15.976562 C 4.3898906 14.768562 4.0204844 13.387375 4.0214844 11.984375 C 4.0234844 7.582375 7.6067656 4 12.009766 4 z M 8.4765625 7.375 C 8.3095625 7.375 8.0395469 7.4375 7.8105469 7.6875 C 7.5815469 7.9365 6.9355469 8.5395781 6.9355469 9.7675781 C 6.9355469 10.995578 7.8300781 12.182609 7.9550781 12.349609 C 8.0790781 12.515609 9.68175 15.115234 12.21875 16.115234 C 14.32675 16.946234 14.754891 16.782234 15.212891 16.740234 C 15.670891 16.699234 16.690438 16.137687 16.898438 15.554688 C 17.106437 14.971687 17.106922 14.470187 17.044922 14.367188 C 16.982922 14.263188 16.816406 14.201172 16.566406 14.076172 C 16.317406 13.951172 15.090328 13.348625 14.861328 13.265625 C 14.632328 13.182625 14.464828 13.140625 14.298828 13.390625 C 14.132828 13.640625 13.655766 14.201187 13.509766 14.367188 C 13.363766 14.534188 13.21875 14.556641 12.96875 14.431641 C 12.71875 14.305641 11.914938 14.041406 10.960938 13.191406 C 10.218937 12.530406 9.7182656 11.714844 9.5722656 11.464844 C 9.4272656 11.215844 9.5585938 11.079078 9.6835938 10.955078 C 9.7955938 10.843078 9.9316406 10.663578 10.056641 10.517578 C 10.180641 10.371578 10.223641 10.267562 10.306641 10.101562 C 10.389641 9.9355625 10.347156 9.7890625 10.285156 9.6640625 C 10.223156 9.5390625 9.737625 8.3065 9.515625 7.8125 C 9.328625 7.3975 9.131125 7.3878594 8.953125 7.3808594 C 8.808125 7.3748594 8.6425625 7.375 8.4765625 7.375 z" />
9
+ </SVG>
10
+ );
@@ -27,6 +27,22 @@ function render_block_core_social_link( $attributes, $content, $block ) {
27
27
  return '';
28
28
  }
29
29
 
30
+ /**
31
+ * Prepend emails with `mailto:` if not set.
32
+ * The `is_email` returns false for emails with schema.
33
+ */
34
+ if ( is_email( $url ) ) {
35
+ $url = 'mailto:' . $url;
36
+ }
37
+
38
+ /**
39
+ * Prepend URL with https:// if it doesn't appear to contain a scheme
40
+ * and it's not a relative link starting with //.
41
+ */
42
+ if ( ! parse_url( $url, PHP_URL_SCHEME ) && ! str_starts_with( $url, '//' ) ) {
43
+ $url = 'https://' . $url;
44
+ }
45
+
30
46
  $rel_target_attributes = '';
31
47
  if ( $open_in_new_tab ) {
32
48
  $rel_target_attributes = 'rel="noopener nofollow" target="_blank"';
@@ -266,6 +282,10 @@ function block_core_social_link_services( $service = '', $field = '' ) {
266
282
  'name' => 'WordPress',
267
283
  'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12.158,12.786L9.46,20.625c0.806,0.237,1.657,0.366,2.54,0.366c1.047,0,2.051-0.181,2.986-0.51 c-0.024-0.038-0.046-0.079-0.065-0.124L12.158,12.786z M3.009,12c0,3.559,2.068,6.634,5.067,8.092L3.788,8.341 C3.289,9.459,3.009,10.696,3.009,12z M18.069,11.546c0-1.112-0.399-1.881-0.741-2.48c-0.456-0.741-0.883-1.368-0.883-2.109 c0-0.826,0.627-1.596,1.51-1.596c0.04,0,0.078,0.005,0.116,0.007C16.472,3.904,14.34,3.009,12,3.009 c-3.141,0-5.904,1.612-7.512,4.052c0.211,0.007,0.41,0.011,0.579,0.011c0.94,0,2.396-0.114,2.396-0.114 C7.947,6.93,8.004,7.642,7.52,7.699c0,0-0.487,0.057-1.029,0.085l3.274,9.739l1.968-5.901l-1.401-3.838 C9.848,7.756,9.389,7.699,9.389,7.699C8.904,7.67,8.961,6.93,9.446,6.958c0,0,1.484,0.114,2.368,0.114 c0.94,0,2.397-0.114,2.397-0.114c0.485-0.028,0.542,0.684,0.057,0.741c0,0-0.488,0.057-1.029,0.085l3.249,9.665l0.897-2.996 C17.841,13.284,18.069,12.316,18.069,11.546z M19.889,7.686c0.039,0.286,0.06,0.593,0.06,0.924c0,0.912-0.171,1.938-0.684,3.22 l-2.746,7.94c2.673-1.558,4.47-4.454,4.47-7.771C20.991,10.436,20.591,8.967,19.889,7.686z M12,22C6.486,22,2,17.514,2,12 C2,6.486,6.486,2,12,2c5.514,0,10,4.486,10,10C22,17.514,17.514,22,12,22z"></path></svg>',
268
284
  ),
285
+ 'whatsapp' => array(
286
+ 'name' => 'WhatsApp',
287
+ 'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M 12.011719 2 C 6.5057187 2 2.0234844 6.478375 2.0214844 11.984375 C 2.0204844 13.744375 2.4814687 15.462563 3.3554688 16.976562 L 2 22 L 7.2324219 20.763672 C 8.6914219 21.559672 10.333859 21.977516 12.005859 21.978516 L 12.009766 21.978516 C 17.514766 21.978516 21.995047 17.499141 21.998047 11.994141 C 22.000047 9.3251406 20.962172 6.8157344 19.076172 4.9277344 C 17.190172 3.0407344 14.683719 2.001 12.011719 2 z M 12.009766 4 C 14.145766 4.001 16.153109 4.8337969 17.662109 6.3417969 C 19.171109 7.8517969 20.000047 9.8581875 19.998047 11.992188 C 19.996047 16.396187 16.413812 19.978516 12.007812 19.978516 C 10.674812 19.977516 9.3544062 19.642812 8.1914062 19.007812 L 7.5175781 18.640625 L 6.7734375 18.816406 L 4.8046875 19.28125 L 5.2851562 17.496094 L 5.5019531 16.695312 L 5.0878906 15.976562 C 4.3898906 14.768562 4.0204844 13.387375 4.0214844 11.984375 C 4.0234844 7.582375 7.6067656 4 12.009766 4 z M 8.4765625 7.375 C 8.3095625 7.375 8.0395469 7.4375 7.8105469 7.6875 C 7.5815469 7.9365 6.9355469 8.5395781 6.9355469 9.7675781 C 6.9355469 10.995578 7.8300781 12.182609 7.9550781 12.349609 C 8.0790781 12.515609 9.68175 15.115234 12.21875 16.115234 C 14.32675 16.946234 14.754891 16.782234 15.212891 16.740234 C 15.670891 16.699234 16.690438 16.137687 16.898438 15.554688 C 17.106437 14.971687 17.106922 14.470187 17.044922 14.367188 C 16.982922 14.263188 16.816406 14.201172 16.566406 14.076172 C 16.317406 13.951172 15.090328 13.348625 14.861328 13.265625 C 14.632328 13.182625 14.464828 13.140625 14.298828 13.390625 C 14.132828 13.640625 13.655766 14.201187 13.509766 14.367188 C 13.363766 14.534188 13.21875 14.556641 12.96875 14.431641 C 12.71875 14.305641 11.914938 14.041406 10.960938 13.191406 C 10.218937 12.530406 9.7182656 11.714844 9.5722656 11.464844 C 9.4272656 11.215844 9.5585938 11.079078 9.6835938 10.955078 C 9.7955938 10.843078 9.9316406 10.663578 10.056641 10.517578 C 10.180641 10.371578 10.223641 10.267562 10.306641 10.101562 C 10.389641 9.9355625 10.347156 9.7890625 10.285156 9.6640625 C 10.223156 9.5390625 9.737625 8.3065 9.515625 7.8125 C 9.328625 7.3975 9.131125 7.3878594 8.953125 7.3808594 C 8.808125 7.3748594 8.6425625 7.375 8.4765625 7.375 z"></path></svg>',
288
+ ),
269
289
  'yelp' => array(
270
290
  'name' => 'Yelp',
271
291
  'icon' => '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12.271,16.718v1.417q-.011,3.257-.067,3.4a.707.707,0,0,1-.569.446,4.637,4.637,0,0,1-2.024-.424A4.609,4.609,0,0,1,7.8,20.565a.844.844,0,0,1-.19-.4.692.692,0,0,1,.044-.29,3.181,3.181,0,0,1,.379-.524q.335-.412,2.019-2.409.011,0,.669-.781a.757.757,0,0,1,.44-.274.965.965,0,0,1,.552.039.945.945,0,0,1,.418.324.732.732,0,0,1,.139.468Zm-1.662-2.8a.783.783,0,0,1-.58.781l-1.339.435q-3.067.981-3.257.981a.711.711,0,0,1-.6-.4,2.636,2.636,0,0,1-.19-.836,9.134,9.134,0,0,1,.011-1.857,3.559,3.559,0,0,1,.335-1.389.659.659,0,0,1,.625-.357,22.629,22.629,0,0,1,2.253.859q.781.324,1.283.524l.937.379a.771.771,0,0,1,.4.34A.982.982,0,0,1,10.609,13.917Zm9.213,3.313a4.467,4.467,0,0,1-1.021,1.8,4.559,4.559,0,0,1-1.512,1.417.671.671,0,0,1-.7-.078q-.156-.112-2.052-3.2l-.524-.859a.761.761,0,0,1-.128-.513.957.957,0,0,1,.217-.513.774.774,0,0,1,.926-.29q.011.011,1.327.446,2.264.736,2.7.887a2.082,2.082,0,0,1,.524.229.673.673,0,0,1,.245.68Zm-7.5-7.049q.056,1.137-.6,1.361-.647.19-1.272-.792L6.237,4.08a.7.7,0,0,1,.212-.691,5.788,5.788,0,0,1,2.314-1,5.928,5.928,0,0,1,2.5-.352.681.681,0,0,1,.547.5q.034.2.245,3.407T12.327,10.181Zm7.384,1.2a.679.679,0,0,1-.29.658q-.167.112-3.67.959-.747.167-1.015.257l.011-.022a.769.769,0,0,1-.513-.044.914.914,0,0,1-.413-.357.786.786,0,0,1,0-.971q.011-.011.836-1.137,1.394-1.908,1.673-2.275a2.423,2.423,0,0,1,.379-.435A.7.7,0,0,1,17.435,8a4.482,4.482,0,0,1,1.372,1.489,4.81,4.81,0,0,1,.9,1.868v.034Z"></path></svg>',
@@ -189,6 +189,11 @@
189
189
  color: #fff;
190
190
  }
191
191
 
192
+ .wp-social-link-whatsapp {
193
+ background-color: #25d366;
194
+ color: #fff;
195
+ }
196
+
192
197
  .wp-social-link-yelp {
193
198
  background-color: #d32422;
194
199
  color: #fff;
@@ -143,6 +143,11 @@
143
143
  color: #4680c2;
144
144
  }
145
145
 
146
+ .wp-social-link-whatsapp {
147
+ background-color: #25d366;
148
+ color: #fff;
149
+ }
150
+
146
151
  .wp-social-link-wordpress {
147
152
  color: #3499cd;
148
153
  }
@@ -41,6 +41,7 @@ import {
41
41
  TwitterIcon,
42
42
  VimeoIcon,
43
43
  VkIcon,
44
+ WhatsAppIcon,
44
45
  WordPressIcon,
45
46
  YelpIcon,
46
47
  YouTubeIcon,
@@ -290,6 +291,12 @@ const variations = [
290
291
  title: 'VK',
291
292
  icon: VkIcon,
292
293
  },
294
+ {
295
+ name: 'whatsapp',
296
+ attributes: { service: 'whatsapp' },
297
+ title: 'WhatsApp',
298
+ icon: WhatsAppIcon,
299
+ },
293
300
  {
294
301
  name: 'yelp',
295
302
  attributes: { service: 'yelp' },
package/src/style.scss CHANGED
@@ -7,6 +7,7 @@
7
7
  @import "./categories/style.scss";
8
8
  @import "./code/style.scss";
9
9
  @import "./columns/style.scss";
10
+ @import "./comments/style.scss";
10
11
  @import "./comments-pagination/style.scss";
11
12
  @import "./comment-template/style.scss";
12
13
  @import "./cover/style.scss";
@@ -25,7 +26,6 @@
25
26
  @import "./page-list/style.scss";
26
27
  @import "./paragraph/style.scss";
27
28
  @import "./post-author/style.scss";
28
- @import "./post-comments/style.scss";
29
29
  @import "./post-comments-form/style.scss";
30
30
  @import "./post-excerpt/style.scss";
31
31
  @import "./post-featured-image/style.scss";
package/src/table/edit.js CHANGED
@@ -16,6 +16,7 @@ import {
16
16
  useBlockProps,
17
17
  __experimentalUseColorProps as useColorProps,
18
18
  __experimentalUseBorderProps as useBorderProps,
19
+ __experimentalGetElementClassName,
19
20
  } from '@wordpress/block-editor';
20
21
  import { __ } from '@wordpress/i18n';
21
22
  import {
@@ -509,6 +510,7 @@ function TableEdit( {
509
510
  { ! isEmpty && (
510
511
  <RichText
511
512
  tagName="figcaption"
513
+ className={ __experimentalGetElementClassName( 'caption' ) }
512
514
  aria-label={ __( 'Table caption text' ) }
513
515
  placeholder={ __( 'Add caption' ) }
514
516
  value={ caption }
package/src/table/save.js CHANGED
@@ -11,6 +11,7 @@ import {
11
11
  useBlockProps,
12
12
  __experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,
13
13
  __experimentalGetColorClassesAndStyles as getColorClassesAndStyles,
14
+ __experimentalGetElementClassName,
14
15
  } from '@wordpress/block-editor';
15
16
 
16
17
  export default function save( { attributes } ) {
@@ -82,7 +83,11 @@ export default function save( { attributes } ) {
82
83
  <Section type="foot" rows={ foot } />
83
84
  </table>
84
85
  { hasCaption && (
85
- <RichText.Content tagName="figcaption" value={ caption } />
86
+ <RichText.Content
87
+ tagName="figcaption"
88
+ value={ caption }
89
+ className={ __experimentalGetElementClassName( 'caption' ) }
90
+ />
86
91
  ) }
87
92
  </figure>
88
93
  );
@@ -8,22 +8,18 @@ import { isEmpty } from 'lodash';
8
8
  */
9
9
  import { useSelect } from '@wordpress/data';
10
10
  import {
11
- BlockControls,
11
+ BlockSettingsMenuControls,
12
+ BlockTitle,
12
13
  useBlockProps,
13
- __experimentalUseNoRecursiveRenders as useNoRecursiveRenders,
14
14
  Warning,
15
15
  store as blockEditorStore,
16
+ __experimentalUseNoRecursiveRenders as useNoRecursiveRenders,
16
17
  __experimentalUseBlockOverlayActive as useBlockOverlayActive,
17
18
  } from '@wordpress/block-editor';
18
- import {
19
- ToolbarGroup,
20
- ToolbarButton,
21
- Spinner,
22
- Modal,
23
- } from '@wordpress/components';
19
+ import { Spinner, Modal, MenuItem } from '@wordpress/components';
24
20
  import { __, sprintf } from '@wordpress/i18n';
25
21
  import { store as coreStore } from '@wordpress/core-data';
26
- import { useState } from '@wordpress/element';
22
+ import { useState, createInterpolateElement } from '@wordpress/element';
27
23
 
28
24
  /**
29
25
  * Internal dependencies
@@ -43,6 +39,7 @@ export default function TemplatePartEdit( {
43
39
  attributes,
44
40
  setAttributes,
45
41
  clientId,
42
+ isSelected,
46
43
  } ) {
47
44
  const { slug, theme, tagName, layout = {} } = attributes;
48
45
  const templatePartId = createTemplatePartId( theme, slug );
@@ -105,6 +102,14 @@ export default function TemplatePartEdit( {
105
102
  const isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;
106
103
  const TagName = tagName || areaObject.tagName;
107
104
 
105
+ // The `isSelected` check ensures the `BlockSettingsMenuControls` fill
106
+ // doesn't render multiple times. The block controls has similar internal check.
107
+ const canReplace =
108
+ isSelected &&
109
+ isEntityAvailable &&
110
+ hasReplacements &&
111
+ ( area === 'header' || area === 'footer' );
112
+
108
113
  // We don't want to render a missing state if we have any inner blocks.
109
114
  // A new template part is automatically created if we have any inner blocks but no entity.
110
115
  if (
@@ -158,21 +163,29 @@ export default function TemplatePartEdit( {
158
163
  />
159
164
  </TagName>
160
165
  ) }
161
- { isEntityAvailable &&
162
- hasReplacements &&
163
- ( area === 'header' || area === 'footer' ) && (
164
- <BlockControls>
165
- <ToolbarGroup className="wp-block-template-part__block-control-group">
166
- <ToolbarButton
167
- onClick={ () =>
168
- setIsTemplatePartSelectionOpen( true )
166
+ { canReplace && (
167
+ <BlockSettingsMenuControls>
168
+ { () => (
169
+ <MenuItem
170
+ onClick={ () => {
171
+ setIsTemplatePartSelectionOpen( true );
172
+ } }
173
+ >
174
+ { createInterpolateElement(
175
+ __( 'Replace <BlockTitle />' ),
176
+ {
177
+ BlockTitle: (
178
+ <BlockTitle
179
+ clientId={ clientId }
180
+ maximumLength={ 25 }
181
+ />
182
+ ),
169
183
  }
170
- >
171
- { __( 'Replace' ) }
172
- </ToolbarButton>
173
- </ToolbarGroup>
174
- </BlockControls>
175
- ) }
184
+ ) }
185
+ </MenuItem>
186
+ ) }
187
+ </BlockSettingsMenuControls>
188
+ ) }
176
189
  { isEntityAvailable && (
177
190
  <TemplatePartInnerBlocks
178
191
  tagName={ TagName }
@@ -189,7 +202,7 @@ export default function TemplatePartEdit( {
189
202
  ) }
190
203
  { isTemplatePartSelectionOpen && (
191
204
  <Modal
192
- className="block-editor-template-part__selection-modal"
205
+ overlayClassName="block-editor-template-part__selection-modal"
193
206
  title={ sprintf(
194
207
  // Translators: %s as template part area title ("Header", "Footer", etc.).
195
208
  __( 'Choose a %s' ),
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useCallback, useMemo } from '@wordpress/element';
4
+ import { useCallback, useMemo, useState } from '@wordpress/element';
5
5
  import { __, sprintf } from '@wordpress/i18n';
6
6
  import { store as noticesStore } from '@wordpress/notices';
7
7
  import { useDispatch } from '@wordpress/data';
@@ -11,6 +11,10 @@ import {
11
11
  __experimentalBlockPatternsList as BlockPatternsList,
12
12
  store as blockEditorStore,
13
13
  } from '@wordpress/block-editor';
14
+ import {
15
+ SearchControl,
16
+ __experimentalHStack as HStack,
17
+ } from '@wordpress/components';
14
18
 
15
19
  /**
16
20
  * Internal dependencies
@@ -21,6 +25,7 @@ import {
21
25
  useCreateTemplatePartFromBlocks,
22
26
  } from './utils/hooks';
23
27
  import { createTemplatePartId } from './utils/create-template-part-id';
28
+ import { searchPatterns } from './utils/search';
24
29
 
25
30
  export default function TemplatePartSelectionModal( {
26
31
  setAttributes,
@@ -29,6 +34,8 @@ export default function TemplatePartSelectionModal( {
29
34
  area,
30
35
  clientId,
31
36
  } ) {
37
+ const [ searchValue, setSearchValue ] = useState( '' );
38
+
32
39
  // When the templatePartId is undefined,
33
40
  // it means the user is creating a new one from the placeholder.
34
41
  const isReplacingTemplatePartContent = !! templatePartId;
@@ -37,18 +44,24 @@ export default function TemplatePartSelectionModal( {
37
44
  templatePartId
38
45
  );
39
46
  // We can map template parts to block patters to reuse the BlockPatternsList UI
40
- const templartPartsAsBlockPatterns = useMemo( () => {
41
- return templateParts.map( ( templatePart ) => ( {
47
+ const filteredTemplateParts = useMemo( () => {
48
+ const partsAsPatterns = templateParts.map( ( templatePart ) => ( {
42
49
  name: createTemplatePartId( templatePart.theme, templatePart.slug ),
43
50
  title: templatePart.title.rendered,
44
51
  blocks: parse( templatePart.content.raw ),
45
52
  templatePart,
46
53
  } ) );
47
- }, [ templateParts ] );
48
- const shownTemplateParts = useAsyncList( templartPartsAsBlockPatterns );
49
- const { createSuccessNotice } = useDispatch( noticesStore );
54
+
55
+ return searchPatterns( partsAsPatterns, searchValue );
56
+ }, [ templateParts, searchValue ] );
57
+ const shownTemplateParts = useAsyncList( filteredTemplateParts );
50
58
  const blockPatterns = useAlternativeBlockPatterns( area, clientId );
51
- const shownBlockPatterns = useAsyncList( blockPatterns );
59
+ const filteredBlockPatterns = useMemo( () => {
60
+ return searchPatterns( blockPatterns, searchValue );
61
+ }, [ blockPatterns, searchValue ] );
62
+ const shownBlockPatterns = useAsyncList( filteredBlockPatterns );
63
+
64
+ const { createSuccessNotice } = useDispatch( noticesStore );
52
65
  const { replaceInnerBlocks } = useDispatch( blockEditorStore );
53
66
 
54
67
  const onTemplatePartSelect = useCallback( ( templatePart ) => {
@@ -75,41 +88,56 @@ export default function TemplatePartSelectionModal( {
75
88
  setAttributes
76
89
  );
77
90
 
91
+ const hasTemplateParts = !! filteredTemplateParts.length;
92
+ const hasBlockPatterns = !! filteredBlockPatterns.length;
93
+
78
94
  return (
79
- <>
80
- <div className="block-library-template-part__selection-content">
81
- { !! templartPartsAsBlockPatterns.length && (
82
- <div>
83
- <h2>{ __( 'Existing template parts' ) }</h2>
84
- <BlockPatternsList
85
- blockPatterns={ templartPartsAsBlockPatterns }
86
- shownPatterns={ shownTemplateParts }
87
- onClickPattern={ ( pattern ) => {
88
- onTemplatePartSelect( pattern.templatePart );
89
- } }
90
- />
91
- </div>
92
- ) }
95
+ <div className="block-library-template-part__selection-content">
96
+ <div className="block-library-template-part__selection-search">
97
+ <SearchControl
98
+ onChange={ setSearchValue }
99
+ value={ searchValue }
100
+ label={ __( 'Search for replacements' ) }
101
+ placeholder={ __( 'Search' ) }
102
+ />
103
+ </div>
104
+ { hasTemplateParts && (
105
+ <div>
106
+ <h2>{ __( 'Existing template parts' ) }</h2>
107
+ <BlockPatternsList
108
+ blockPatterns={ filteredTemplateParts }
109
+ shownPatterns={ shownTemplateParts }
110
+ onClickPattern={ ( pattern ) => {
111
+ onTemplatePartSelect( pattern.templatePart );
112
+ } }
113
+ />
114
+ </div>
115
+ ) }
93
116
 
94
- { !! blockPatterns.length && (
95
- <div>
96
- <h2>{ __( 'Patterns' ) }</h2>
97
- <BlockPatternsList
98
- blockPatterns={ blockPatterns }
99
- shownPatterns={ shownBlockPatterns }
100
- onClickPattern={ ( pattern, blocks ) => {
101
- if ( isReplacingTemplatePartContent ) {
102
- replaceInnerBlocks( clientId, blocks );
103
- } else {
104
- createFromBlocks( blocks, pattern.title );
105
- }
117
+ { hasBlockPatterns && (
118
+ <div>
119
+ <h2>{ __( 'Patterns' ) }</h2>
120
+ <BlockPatternsList
121
+ blockPatterns={ filteredBlockPatterns }
122
+ shownPatterns={ shownBlockPatterns }
123
+ onClickPattern={ ( pattern, blocks ) => {
124
+ if ( isReplacingTemplatePartContent ) {
125
+ replaceInnerBlocks( clientId, blocks );
126
+ } else {
127
+ createFromBlocks( blocks, pattern.title );
128
+ }
106
129
 
107
- onClose();
108
- } }
109
- />
110
- </div>
111
- ) }
112
- </div>
113
- </>
130
+ onClose();
131
+ } }
132
+ />
133
+ </div>
134
+ ) }
135
+
136
+ { ! hasTemplateParts && ! hasBlockPatterns && (
137
+ <HStack alignment="center">
138
+ <p>{ __( 'No results found.' ) }</p>
139
+ </HStack>
140
+ ) }
141
+ </div>
114
142
  );
115
143
  }
@@ -0,0 +1,76 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import removeAccents from 'remove-accents';
5
+
6
+ /**
7
+ * Sanitizes the search input string.
8
+ *
9
+ * @param {string} input The search input to normalize.
10
+ *
11
+ * @return {string} The normalized search input.
12
+ */
13
+ function normalizeSearchInput( input = '' ) {
14
+ // Disregard diacritics.
15
+ input = removeAccents( input );
16
+
17
+ // Trim & Lowercase.
18
+ input = input.trim().toLowerCase();
19
+
20
+ return input;
21
+ }
22
+
23
+ /**
24
+ * Get the search rank for a given pattern and a specific search term.
25
+ *
26
+ * @param {Object} pattern Pattern to rank
27
+ * @param {string} searchValue Search term
28
+ * @return {number} A pattern search rank
29
+ */
30
+ function getPatternSearchRank( pattern, searchValue ) {
31
+ const normalizedSearchValue = normalizeSearchInput( searchValue );
32
+ const normalizedTitle = normalizeSearchInput( pattern.title );
33
+
34
+ let rank = 0;
35
+
36
+ if ( normalizedSearchValue === normalizedTitle ) {
37
+ rank += 30;
38
+ } else if ( normalizedTitle.startsWith( normalizedSearchValue ) ) {
39
+ rank += 20;
40
+ } else {
41
+ const searchTerms = normalizedSearchValue.split( ' ' );
42
+ const hasMatchedTerms = searchTerms.every( ( searchTerm ) =>
43
+ normalizedTitle.includes( searchTerm )
44
+ );
45
+
46
+ // Prefer pattern with every search word in the title.
47
+ if ( hasMatchedTerms ) {
48
+ rank += 10;
49
+ }
50
+ }
51
+
52
+ return rank;
53
+ }
54
+
55
+ /**
56
+ * Filters an pattern list given a search term.
57
+ *
58
+ * @param {Array} patterns Item list
59
+ * @param {string} searchValue Search input.
60
+ *
61
+ * @return {Array} Filtered pattern list.
62
+ */
63
+ export function searchPatterns( patterns = [], searchValue = '' ) {
64
+ if ( ! searchValue ) {
65
+ return patterns;
66
+ }
67
+
68
+ const rankedPatterns = patterns
69
+ .map( ( pattern ) => {
70
+ return [ pattern, getPatternSearchRank( pattern, searchValue ) ];
71
+ } )
72
+ .filter( ( [ , rank ] ) => rank > 0 );
73
+
74
+ rankedPatterns.sort( ( [ , rank1 ], [ , rank2 ] ) => rank2 - rank1 );
75
+ return rankedPatterns.map( ( [ pattern ] ) => pattern );
76
+ }
@@ -1,14 +1,26 @@
1
1
  .block-editor-template-part__selection-modal {
2
+ z-index: z-index(".block-editor-template-part__selection-modal");
3
+
2
4
  // To keep modal dimensions consistent as subsections are navigated, width
3
5
  // and height are used instead of max-(width/height).
4
- @include break-small() {
5
- width: calc(100% - #{ $grid-unit-20 * 2 });
6
- height: calc(100% - #{ $header-height * 2 });
7
- }
8
- @include break-medium() {
9
- width: $break-medium - $grid-unit-20 * 2;
10
- }
11
- @include break-large() {
12
- height: 70%;
6
+ .components-modal__frame {
7
+ @include break-small() {
8
+ width: calc(100% - #{ $grid-unit-20 * 2 });
9
+ height: calc(100% - #{ $header-height * 2 });
10
+ }
11
+ @include break-medium() {
12
+ width: $break-medium - $grid-unit-20 * 2;
13
+ }
14
+ @include break-large() {
15
+ height: 70%;
16
+ }
13
17
  }
14
18
  }
19
+
20
+ .block-library-template-part__selection-search {
21
+ background: $white;
22
+ position: sticky;
23
+ top: 0;
24
+ padding: $grid-unit-20 0;
25
+ z-index: z-index(".block-library-template-part__selection-search");
26
+ }
@@ -47,7 +47,7 @@ export const settings = {
47
47
  edit,
48
48
  };
49
49
 
50
- // Importing this file includes side effects. This is whitelisted in block-library/package.json under sideEffects
50
+ // Importing this file includes side effects. This is added in block-library/package.json under sideEffects
51
51
  addFilter(
52
52
  'blocks.registerBlockType',
53
53
  'core/template-part',