@wordpress/block-editor 8.6.0 → 9.2.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 (466) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +5 -2
  3. package/build/components/block-alignment-control/constants.js +48 -0
  4. package/build/components/block-alignment-control/constants.js.map +1 -0
  5. package/build/components/block-alignment-control/ui.js +9 -40
  6. package/build/components/block-alignment-control/ui.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.native.js +92 -0
  8. package/build/components/block-alignment-control/ui.native.js.map +1 -0
  9. package/build/components/block-alignment-matrix-control/index.js +1 -6
  10. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  11. package/build/components/block-content-overlay/index.js +4 -82
  12. package/build/components/block-content-overlay/index.js.map +1 -1
  13. package/build/components/block-draggable/draggable-chip.native.js +65 -0
  14. package/build/components/block-draggable/draggable-chip.native.js.map +1 -0
  15. package/build/components/block-draggable/dropping-insertion-point.native.js +157 -0
  16. package/build/components/block-draggable/dropping-insertion-point.native.js.map +1 -0
  17. package/build/components/block-draggable/index.native.js +488 -0
  18. package/build/components/block-draggable/index.native.js.map +1 -0
  19. package/build/components/block-draggable/use-scroll-when-dragging.native.js +130 -0
  20. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -0
  21. package/build/components/block-list/block-list-context.native.js +195 -0
  22. package/build/components/block-list/block-list-context.native.js.map +1 -0
  23. package/build/components/block-list/block-list-item-cell.native.js +67 -0
  24. package/build/components/block-list/block-list-item-cell.native.js.map +1 -0
  25. package/build/components/block-list/block-list-item.native.js +12 -9
  26. package/build/components/block-list/block-list-item.native.js.map +1 -1
  27. package/build/components/block-list/block.native.js +27 -5
  28. package/build/components/block-list/block.native.js.map +1 -1
  29. package/build/components/block-list/index.js +34 -32
  30. package/build/components/block-list/index.js.map +1 -1
  31. package/build/components/block-list/index.native.js +75 -23
  32. package/build/components/block-list/index.native.js.map +1 -1
  33. package/build/components/block-list/use-block-props/index.js +8 -4
  34. package/build/components/block-list/use-block-props/index.js.map +1 -1
  35. package/build/components/block-list/use-block-props/use-block-class-names.js +1 -7
  36. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  37. package/build/components/block-list/use-in-between-inserter.js +1 -1
  38. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  39. package/build/components/block-mobile-toolbar/index.native.js +10 -3
  40. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  41. package/build/components/block-mover/index.native.js +17 -4
  42. package/build/components/block-mover/index.native.js.map +1 -1
  43. package/build/components/block-navigation/dropdown.js +11 -5
  44. package/build/components/block-navigation/dropdown.js.map +1 -1
  45. package/build/components/block-popover/inbetween.js +19 -8
  46. package/build/components/block-popover/inbetween.js.map +1 -1
  47. package/build/components/block-popover/index.js +20 -16
  48. package/build/components/block-popover/index.js.map +1 -1
  49. package/build/components/block-preview/index.js +1 -1
  50. package/build/components/block-preview/index.js.map +1 -1
  51. package/build/components/block-tools/block-selection-button.js +1 -0
  52. package/build/components/block-tools/block-selection-button.js.map +1 -1
  53. package/build/components/block-tools/selected-block-popover.js +1 -29
  54. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  55. package/build/components/block-variation-transforms/index.js +16 -2
  56. package/build/components/block-variation-transforms/index.js.map +1 -1
  57. package/build/components/border-radius-control/input-controls.js +10 -3
  58. package/build/components/border-radius-control/input-controls.js.map +1 -1
  59. package/build/components/color-style-selector/index.js +9 -0
  60. package/build/components/color-style-selector/index.js.map +1 -1
  61. package/build/components/colors-gradients/dropdown.js +122 -41
  62. package/build/components/colors-gradients/dropdown.js.map +1 -1
  63. package/build/components/colors-gradients/panel-color-gradient-settings.js +35 -60
  64. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  65. package/build/components/convert-to-group-buttons/toolbar.js +22 -5
  66. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  67. package/build/components/iframe/index.js +51 -50
  68. package/build/components/iframe/index.js.map +1 -1
  69. package/build/components/image-editor/use-save-image.js +3 -1
  70. package/build/components/image-editor/use-save-image.js.map +1 -1
  71. package/build/components/index.js +14 -23
  72. package/build/components/index.js.map +1 -1
  73. package/build/components/inserter/index.js +21 -7
  74. package/build/components/inserter/index.js.map +1 -1
  75. package/build/components/inserter/index.native.js +2 -2
  76. package/build/components/inserter/index.native.js.map +1 -1
  77. package/build/components/inserter/quick-inserter.js +4 -5
  78. package/build/components/inserter/quick-inserter.js.map +1 -1
  79. package/build/components/link-control/constants.js +11 -1
  80. package/build/components/link-control/constants.js.map +1 -1
  81. package/build/components/link-control/search-results.js +4 -3
  82. package/build/components/link-control/search-results.js.map +1 -1
  83. package/build/components/link-control/use-search-handler.js +4 -4
  84. package/build/components/link-control/use-search-handler.js.map +1 -1
  85. package/build/components/list-view/block.js +15 -15
  86. package/build/components/list-view/block.js.map +1 -1
  87. package/build/components/list-view/branch.js +9 -13
  88. package/build/components/list-view/branch.js.map +1 -1
  89. package/build/components/list-view/context.js +1 -4
  90. package/build/components/list-view/context.js.map +1 -1
  91. package/build/components/list-view/drop-indicator.js +0 -1
  92. package/build/components/list-view/drop-indicator.js.map +1 -1
  93. package/build/components/list-view/index.js +15 -32
  94. package/build/components/list-view/index.js.map +1 -1
  95. package/build/components/media-placeholder/index.js +0 -2
  96. package/build/components/media-placeholder/index.js.map +1 -1
  97. package/build/components/media-replace-flow/index.js +0 -2
  98. package/build/components/media-replace-flow/index.js.map +1 -1
  99. package/build/components/media-upload/index.native.js +10 -4
  100. package/build/components/media-upload/index.native.js.map +1 -1
  101. package/build/components/navigable-toolbar/index.js +12 -2
  102. package/build/components/navigable-toolbar/index.js.map +1 -1
  103. package/build/components/plain-text/index.native.js +62 -7
  104. package/build/components/plain-text/index.native.js.map +1 -1
  105. package/build/components/publish-date-time-picker/index.js +55 -0
  106. package/build/components/publish-date-time-picker/index.js.map +1 -0
  107. package/build/components/rich-text/format-toolbar-container.js +0 -1
  108. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  109. package/build/components/rich-text/index.js +2 -2
  110. package/build/components/rich-text/index.js.map +1 -1
  111. package/build/components/rich-text/index.native.js +5 -1
  112. package/build/components/rich-text/index.native.js.map +1 -1
  113. package/build/components/url-input/index.js +11 -4
  114. package/build/components/url-input/index.js.map +1 -1
  115. package/build/components/use-block-drop-zone/index.native.js +167 -0
  116. package/build/components/use-block-drop-zone/index.native.js.map +1 -0
  117. package/build/components/use-on-block-drop/index.native.js +95 -0
  118. package/build/components/use-on-block-drop/index.native.js.map +1 -0
  119. package/build/components/use-setting/index.js +42 -18
  120. package/build/components/use-setting/index.js.map +1 -1
  121. package/build/components/warning/index.js +6 -1
  122. package/build/components/warning/index.js.map +1 -1
  123. package/build/components/writing-flow/use-click-selection.js +1 -3
  124. package/build/components/writing-flow/use-click-selection.js.map +1 -1
  125. package/build/components/writing-flow/use-input.js +15 -0
  126. package/build/components/writing-flow/use-input.js.map +1 -1
  127. package/build/components/writing-flow/use-selection-observer.js +49 -8
  128. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  129. package/build/elements/index.js +9 -0
  130. package/build/elements/index.js.map +1 -0
  131. package/build/hooks/anchor.js.map +1 -1
  132. package/build/hooks/border.js +2 -7
  133. package/build/hooks/border.js.map +1 -1
  134. package/build/hooks/color-panel.js +14 -7
  135. package/build/hooks/color-panel.js.map +1 -1
  136. package/build/hooks/color.js +8 -88
  137. package/build/hooks/color.js.map +1 -1
  138. package/build/hooks/dimensions.js +16 -6
  139. package/build/hooks/dimensions.js.map +1 -1
  140. package/build/hooks/index.js +2 -0
  141. package/build/hooks/index.js.map +1 -1
  142. package/build/hooks/margin.js +64 -12
  143. package/build/hooks/margin.js.map +1 -1
  144. package/build/hooks/padding.js +60 -12
  145. package/build/hooks/padding.js.map +1 -1
  146. package/build/hooks/settings.js +32 -0
  147. package/build/hooks/settings.js.map +1 -0
  148. package/build/hooks/style.js +14 -13
  149. package/build/hooks/style.js.map +1 -1
  150. package/build/hooks/typography.js +6 -2
  151. package/build/hooks/typography.js.map +1 -1
  152. package/build/index.js +14 -0
  153. package/build/index.js.map +1 -1
  154. package/build/layouts/flex.js +5 -2
  155. package/build/layouts/flex.js.map +1 -1
  156. package/build/store/actions.js +14 -0
  157. package/build/store/actions.js.map +1 -1
  158. package/build/store/defaults.js +0 -1
  159. package/build/store/defaults.js.map +1 -1
  160. package/build/store/reducer.js +17 -2
  161. package/build/store/reducer.js.map +1 -1
  162. package/build/store/selectors.js +43 -13
  163. package/build/store/selectors.js.map +1 -1
  164. package/build-module/components/block-alignment-control/constants.js +36 -0
  165. package/build-module/components/block-alignment-control/constants.js.map +1 -0
  166. package/build-module/components/block-alignment-control/ui.js +4 -35
  167. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  168. package/build-module/components/block-alignment-control/ui.native.js +78 -0
  169. package/build-module/components/block-alignment-control/ui.native.js.map +1 -0
  170. package/build-module/components/block-alignment-matrix-control/index.js +1 -6
  171. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  172. package/build-module/components/block-content-overlay/index.js +3 -78
  173. package/build-module/components/block-content-overlay/index.js.map +1 -1
  174. package/build-module/components/block-draggable/draggable-chip.native.js +51 -0
  175. package/build-module/components/block-draggable/draggable-chip.native.js.map +1 -0
  176. package/build-module/components/block-draggable/dropping-insertion-point.native.js +137 -0
  177. package/build-module/components/block-draggable/dropping-insertion-point.native.js.map +1 -0
  178. package/build-module/components/block-draggable/index.native.js +453 -0
  179. package/build-module/components/block-draggable/index.native.js.map +1 -0
  180. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +120 -0
  181. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -0
  182. package/build-module/components/block-list/block-list-context.native.js +179 -0
  183. package/build-module/components/block-list/block-list-context.native.js.map +1 -0
  184. package/build-module/components/block-list/block-list-item-cell.native.js +59 -0
  185. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -0
  186. package/build-module/components/block-list/block-list-item.native.js +12 -9
  187. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  188. package/build-module/components/block-list/block.native.js +26 -5
  189. package/build-module/components/block-list/block.native.js.map +1 -1
  190. package/build-module/components/block-list/index.js +35 -33
  191. package/build-module/components/block-list/index.js.map +1 -1
  192. package/build-module/components/block-list/index.native.js +72 -23
  193. package/build-module/components/block-list/index.native.js.map +1 -1
  194. package/build-module/components/block-list/use-block-props/index.js +9 -5
  195. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  196. package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -7
  197. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  198. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  199. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  200. package/build-module/components/block-mobile-toolbar/index.native.js +9 -3
  201. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  202. package/build-module/components/block-mover/index.native.js +18 -5
  203. package/build-module/components/block-mover/index.native.js.map +1 -1
  204. package/build-module/components/block-navigation/dropdown.js +10 -5
  205. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  206. package/build-module/components/block-popover/inbetween.js +19 -8
  207. package/build-module/components/block-popover/inbetween.js.map +1 -1
  208. package/build-module/components/block-popover/index.js +21 -15
  209. package/build-module/components/block-popover/index.js.map +1 -1
  210. package/build-module/components/block-preview/index.js +1 -1
  211. package/build-module/components/block-preview/index.js.map +1 -1
  212. package/build-module/components/block-tools/block-selection-button.js +1 -0
  213. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  214. package/build-module/components/block-tools/selected-block-popover.js +2 -29
  215. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  216. package/build-module/components/block-variation-transforms/index.js +13 -2
  217. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  218. package/build-module/components/border-radius-control/input-controls.js +11 -4
  219. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  220. package/build-module/components/color-style-selector/index.js +6 -0
  221. package/build-module/components/color-style-selector/index.js.map +1 -1
  222. package/build-module/components/colors-gradients/dropdown.js +124 -43
  223. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  224. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +36 -64
  225. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  226. package/build-module/components/convert-to-group-buttons/toolbar.js +23 -6
  227. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  228. package/build-module/components/iframe/index.js +52 -51
  229. package/build-module/components/iframe/index.js.map +1 -1
  230. package/build-module/components/image-editor/use-save-image.js +2 -1
  231. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  232. package/build-module/components/index.js +2 -3
  233. package/build-module/components/index.js.map +1 -1
  234. package/build-module/components/inserter/index.js +21 -7
  235. package/build-module/components/inserter/index.js.map +1 -1
  236. package/build-module/components/inserter/index.native.js +2 -2
  237. package/build-module/components/inserter/index.native.js.map +1 -1
  238. package/build-module/components/inserter/quick-inserter.js +4 -5
  239. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  240. package/build-module/components/link-control/constants.js +5 -0
  241. package/build-module/components/link-control/constants.js.map +1 -1
  242. package/build-module/components/link-control/search-results.js +3 -4
  243. package/build-module/components/link-control/search-results.js.map +1 -1
  244. package/build-module/components/link-control/use-search-handler.js +5 -5
  245. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  246. package/build-module/components/list-view/block.js +15 -16
  247. package/build-module/components/list-view/block.js.map +1 -1
  248. package/build-module/components/list-view/branch.js +9 -13
  249. package/build-module/components/list-view/branch.js.map +1 -1
  250. package/build-module/components/list-view/context.js +1 -4
  251. package/build-module/components/list-view/context.js.map +1 -1
  252. package/build-module/components/list-view/drop-indicator.js +0 -1
  253. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  254. package/build-module/components/list-view/index.js +15 -31
  255. package/build-module/components/list-view/index.js.map +1 -1
  256. package/build-module/components/media-placeholder/index.js +0 -2
  257. package/build-module/components/media-placeholder/index.js.map +1 -1
  258. package/build-module/components/media-replace-flow/index.js +0 -2
  259. package/build-module/components/media-replace-flow/index.js.map +1 -1
  260. package/build-module/components/media-upload/index.native.js +8 -3
  261. package/build-module/components/media-upload/index.native.js.map +1 -1
  262. package/build-module/components/navigable-toolbar/index.js +12 -2
  263. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  264. package/build-module/components/plain-text/index.native.js +63 -8
  265. package/build-module/components/plain-text/index.native.js.map +1 -1
  266. package/build-module/components/publish-date-time-picker/index.js +42 -0
  267. package/build-module/components/publish-date-time-picker/index.js.map +1 -0
  268. package/build-module/components/rich-text/format-toolbar-container.js +0 -1
  269. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  270. package/build-module/components/rich-text/index.js +2 -2
  271. package/build-module/components/rich-text/index.js.map +1 -1
  272. package/build-module/components/rich-text/index.native.js +5 -1
  273. package/build-module/components/rich-text/index.native.js.map +1 -1
  274. package/build-module/components/url-input/index.js +11 -4
  275. package/build-module/components/url-input/index.js.map +1 -1
  276. package/build-module/components/use-block-drop-zone/index.native.js +148 -0
  277. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -0
  278. package/build-module/components/use-on-block-drop/index.native.js +83 -0
  279. package/build-module/components/use-on-block-drop/index.native.js.map +1 -0
  280. package/build-module/components/use-setting/index.js +43 -19
  281. package/build-module/components/use-setting/index.js.map +1 -1
  282. package/build-module/components/warning/index.js +6 -1
  283. package/build-module/components/warning/index.js.map +1 -1
  284. package/build-module/components/writing-flow/use-click-selection.js +1 -3
  285. package/build-module/components/writing-flow/use-click-selection.js.map +1 -1
  286. package/build-module/components/writing-flow/use-input.js +15 -0
  287. package/build-module/components/writing-flow/use-input.js.map +1 -1
  288. package/build-module/components/writing-flow/use-selection-observer.js +49 -8
  289. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  290. package/build-module/elements/index.js +2 -0
  291. package/build-module/elements/index.js.map +1 -0
  292. package/build-module/hooks/anchor.js.map +1 -1
  293. package/build-module/hooks/border.js +2 -7
  294. package/build-module/hooks/border.js.map +1 -1
  295. package/build-module/hooks/color-panel.js +11 -6
  296. package/build-module/hooks/color-panel.js.map +1 -1
  297. package/build-module/hooks/color.js +8 -88
  298. package/build-module/hooks/color.js.map +1 -1
  299. package/build-module/hooks/dimensions.js +19 -9
  300. package/build-module/hooks/dimensions.js.map +1 -1
  301. package/build-module/hooks/index.js +1 -0
  302. package/build-module/hooks/index.js.map +1 -1
  303. package/build-module/hooks/margin.js +61 -13
  304. package/build-module/hooks/margin.js.map +1 -1
  305. package/build-module/hooks/padding.js +57 -13
  306. package/build-module/hooks/padding.js.map +1 -1
  307. package/build-module/hooks/settings.js +29 -0
  308. package/build-module/hooks/settings.js.map +1 -0
  309. package/build-module/hooks/style.js +15 -14
  310. package/build-module/hooks/style.js.map +1 -1
  311. package/build-module/hooks/typography.js +6 -2
  312. package/build-module/hooks/typography.js.map +1 -1
  313. package/build-module/index.js +1 -0
  314. package/build-module/index.js.map +1 -1
  315. package/build-module/layouts/flex.js +4 -2
  316. package/build-module/layouts/flex.js.map +1 -1
  317. package/build-module/store/actions.js +12 -0
  318. package/build-module/store/actions.js.map +1 -1
  319. package/build-module/store/defaults.js +0 -1
  320. package/build-module/store/defaults.js.map +1 -1
  321. package/build-module/store/reducer.js +17 -2
  322. package/build-module/store/reducer.js.map +1 -1
  323. package/build-module/store/selectors.js +37 -12
  324. package/build-module/store/selectors.js.map +1 -1
  325. package/build-style/style-rtl.css +100 -225
  326. package/build-style/style.css +100 -225
  327. package/package.json +30 -30
  328. package/src/components/block-alignment-control/constants.js +45 -0
  329. package/src/components/block-alignment-control/ui.js +69 -109
  330. package/src/components/block-alignment-control/ui.native.js +86 -0
  331. package/src/components/block-alignment-matrix-control/index.js +1 -5
  332. package/src/components/block-content-overlay/index.js +8 -95
  333. package/src/components/block-content-overlay/style.scss +2 -12
  334. package/src/components/block-draggable/draggable-chip.native.js +49 -0
  335. package/src/components/block-draggable/dropping-insertion-point.native.js +181 -0
  336. package/src/components/block-draggable/dropping-insertion-point.native.scss +8 -0
  337. package/src/components/block-draggable/index.native.js +462 -0
  338. package/src/components/block-draggable/style.native.scss +19 -0
  339. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +73 -0
  340. package/src/components/block-draggable/test/helpers.native.js +183 -0
  341. package/src/components/block-draggable/test/index.native.js +496 -0
  342. package/src/components/block-draggable/use-scroll-when-dragging.native.js +135 -0
  343. package/src/components/block-list/block-list-context.native.js +175 -0
  344. package/src/components/block-list/block-list-item-cell.native.js +49 -0
  345. package/src/components/block-list/block-list-item.native.js +7 -11
  346. package/src/components/block-list/block.native.js +37 -8
  347. package/src/components/block-list/index.js +44 -44
  348. package/src/components/block-list/index.native.js +54 -13
  349. package/src/components/block-list/style.scss +7 -18
  350. package/src/components/block-list/test/block-list-context.native.js +253 -0
  351. package/src/components/block-list/test/fixtures/block-list-context.native.js +79 -0
  352. package/src/components/block-list/use-block-props/index.js +10 -5
  353. package/src/components/block-list/use-block-props/use-block-class-names.js +1 -11
  354. package/src/components/block-list/use-in-between-inserter.js +1 -1
  355. package/src/components/block-mobile-toolbar/index.native.js +9 -1
  356. package/src/components/block-mover/index.native.js +22 -6
  357. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -0
  358. package/src/components/block-navigation/dropdown.js +12 -8
  359. package/src/components/block-popover/inbetween.js +21 -8
  360. package/src/components/block-popover/index.js +18 -15
  361. package/src/components/block-popover/style.scss +4 -0
  362. package/src/components/block-preview/index.js +1 -4
  363. package/src/components/block-switcher/style.scss +2 -39
  364. package/src/components/block-tools/block-selection-button.js +1 -0
  365. package/src/components/block-tools/selected-block-popover.js +1 -36
  366. package/src/components/block-tools/style.scss +1 -12
  367. package/src/components/block-variation-transforms/index.js +6 -2
  368. package/src/components/border-radius-control/input-controls.js +16 -8
  369. package/src/components/border-radius-control/style.scss +3 -2
  370. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  371. package/src/components/color-style-selector/index.js +18 -9
  372. package/src/components/colors-gradients/dropdown.js +130 -62
  373. package/src/components/colors-gradients/panel-color-gradient-settings.js +30 -76
  374. package/src/components/colors-gradients/style.scss +52 -50
  375. package/src/components/convert-to-group-buttons/toolbar.js +30 -13
  376. package/src/components/duotone-control/style.scss +1 -7
  377. package/src/components/iframe/index.js +62 -54
  378. package/src/components/image-editor/use-save-image.js +2 -1
  379. package/src/components/image-size-control/README.md +1 -1
  380. package/src/components/index.js +2 -3
  381. package/src/components/inserter/index.js +20 -0
  382. package/src/components/inserter/index.native.js +2 -2
  383. package/src/components/inserter/quick-inserter.js +3 -11
  384. package/src/components/inserter/style.native.scss +1 -0
  385. package/src/components/inserter/style.scss +2 -1
  386. package/src/components/link-control/constants.js +11 -0
  387. package/src/components/link-control/search-results.js +4 -5
  388. package/src/components/link-control/use-search-handler.js +11 -5
  389. package/src/components/list-view/block.js +24 -34
  390. package/src/components/list-view/branch.js +10 -20
  391. package/src/components/list-view/context.js +1 -4
  392. package/src/components/list-view/drop-indicator.js +0 -1
  393. package/src/components/list-view/index.js +11 -41
  394. package/src/components/list-view/style.scss +2 -1
  395. package/src/components/media-placeholder/index.js +0 -2
  396. package/src/components/media-replace-flow/index.js +0 -2
  397. package/src/components/media-upload/index.native.js +6 -2
  398. package/src/components/media-upload/test/index.native.js +31 -6
  399. package/src/components/navigable-toolbar/index.js +12 -2
  400. package/src/components/plain-text/index.native.js +64 -8
  401. package/src/components/preview-options/style.scss +0 -4
  402. package/src/components/publish-date-time-picker/README.md +52 -0
  403. package/src/components/publish-date-time-picker/index.js +50 -0
  404. package/src/components/publish-date-time-picker/style.scss +20 -0
  405. package/src/components/rich-text/format-toolbar-container.js +0 -1
  406. package/src/components/rich-text/index.js +3 -1
  407. package/src/components/rich-text/index.native.js +4 -0
  408. package/src/components/rich-text/style.scss +2 -8
  409. package/src/components/url-input/index.js +9 -4
  410. package/src/components/use-block-drop-zone/index.native.js +173 -0
  411. package/src/components/use-on-block-drop/index.native.js +119 -0
  412. package/src/components/use-setting/index.js +57 -21
  413. package/src/components/warning/index.js +47 -42
  414. package/src/components/warning/test/__snapshots__/index.js.snap +15 -6
  415. package/src/components/warning/test/index.js +1 -1
  416. package/src/components/writing-flow/use-click-selection.js +1 -4
  417. package/src/components/writing-flow/use-input.js +12 -0
  418. package/src/components/writing-flow/use-selection-observer.js +55 -10
  419. package/src/elements/index.js +1 -0
  420. package/src/hooks/anchor.js +1 -1
  421. package/src/hooks/border.js +2 -11
  422. package/src/hooks/border.scss +0 -48
  423. package/src/hooks/color-panel.js +13 -9
  424. package/src/hooks/color.js +5 -74
  425. package/src/hooks/color.scss +5 -58
  426. package/src/hooks/dimensions.js +55 -41
  427. package/src/hooks/index.js +1 -0
  428. package/src/hooks/margin.js +64 -15
  429. package/src/hooks/padding.js +60 -15
  430. package/src/hooks/padding.scss +12 -0
  431. package/src/hooks/settings.js +32 -0
  432. package/src/hooks/style.js +25 -39
  433. package/src/hooks/test/settings.js +48 -0
  434. package/src/hooks/typography.js +2 -0
  435. package/src/index.js +1 -0
  436. package/src/layouts/flex.js +11 -3
  437. package/src/store/actions.js +12 -0
  438. package/src/store/defaults.js +0 -1
  439. package/src/store/reducer.js +14 -1
  440. package/src/store/selectors.js +42 -12
  441. package/src/store/test/reducer.js +5 -0
  442. package/src/store/test/selectors.js +17 -0
  443. package/src/style.scss +2 -2
  444. package/tsconfig.tsbuildinfo +1 -1
  445. package/build/components/border-style-control/index.js +0 -60
  446. package/build/components/border-style-control/index.js.map +0 -1
  447. package/build/components/colors/color-panel.js +0 -82
  448. package/build/components/colors/color-panel.js.map +0 -1
  449. package/build/components/colors/color-panel.native.js +0 -11
  450. package/build/components/colors/color-panel.native.js.map +0 -1
  451. package/build/components/colors-gradients/tools-panel-color-dropdown.js +0 -89
  452. package/build/components/colors-gradients/tools-panel-color-dropdown.js.map +0 -1
  453. package/build-module/components/border-style-control/index.js +0 -50
  454. package/build-module/components/border-style-control/index.js.map +0 -1
  455. package/build-module/components/colors/color-panel.js +0 -70
  456. package/build-module/components/colors/color-panel.js.map +0 -1
  457. package/build-module/components/colors/color-panel.native.js +0 -4
  458. package/build-module/components/colors/color-panel.native.js.map +0 -1
  459. package/build-module/components/colors-gradients/tools-panel-color-dropdown.js +0 -75
  460. package/build-module/components/colors-gradients/tools-panel-color-dropdown.js.map +0 -1
  461. package/src/components/block-alignment-matrix-control/style.scss +0 -10
  462. package/src/components/border-style-control/index.js +0 -47
  463. package/src/components/border-style-control/style.scss +0 -18
  464. package/src/components/colors/color-panel.js +0 -91
  465. package/src/components/colors/color-panel.native.js +0 -3
  466. package/src/components/colors-gradients/tools-panel-color-dropdown.js +0 -85
@@ -10,7 +10,6 @@ import {
10
10
  useState,
11
11
  createPortal,
12
12
  forwardRef,
13
- useEffect,
14
13
  useMemo,
15
14
  useReducer,
16
15
  } from '@wordpress/element';
@@ -34,61 +33,66 @@ const BLOCK_PREFIX = 'wp-block';
34
33
  *
35
34
  * Ideally, this hook should be removed in the future and styles should be added
36
35
  * explicitly as editor styles.
37
- *
38
- * @param {Document} doc The document to append cloned stylesheets to.
39
36
  */
40
- function styleSheetsCompat( doc ) {
41
- // Search the document for stylesheets targetting the editor canvas.
42
- Array.from( document.styleSheets ).forEach( ( styleSheet ) => {
43
- try {
44
- // May fail for external styles.
45
- // eslint-disable-next-line no-unused-expressions
46
- styleSheet.cssRules;
47
- } catch ( e ) {
48
- return;
49
- }
50
-
51
- const { ownerNode, cssRules } = styleSheet;
52
-
53
- if ( ! cssRules ) {
54
- return;
55
- }
37
+ function useStylesCompatibility() {
38
+ return useRefEffect( ( node ) => {
39
+ // Search the document for stylesheets targetting the editor canvas.
40
+ Array.from( document.styleSheets ).forEach( ( styleSheet ) => {
41
+ try {
42
+ // May fail for external styles.
43
+ // eslint-disable-next-line no-unused-expressions
44
+ styleSheet.cssRules;
45
+ } catch ( e ) {
46
+ return;
47
+ }
56
48
 
57
- // Generally, ignore inline styles. We add inline styles belonging to a
58
- // stylesheet later, which may or may not match the selectors.
59
- if ( ownerNode.tagName !== 'LINK' ) {
60
- return;
61
- }
49
+ const { ownerNode, cssRules } = styleSheet;
62
50
 
63
- // Don't try to add the reset styles, which were removed as a dependency
64
- // from `edit-blocks` for the iframe since we don't need to reset admin
65
- // styles.
66
- if ( ownerNode.id === 'wp-reset-editor-styles-css' ) {
67
- return;
68
- }
69
-
70
- const isMatch = Array.from( cssRules ).find(
71
- ( { selectorText } ) =>
72
- selectorText &&
73
- ( selectorText.includes( `.${ BODY_CLASS_NAME }` ) ||
74
- selectorText.includes( `.${ BLOCK_PREFIX }` ) )
75
- );
51
+ if ( ! cssRules ) {
52
+ return;
53
+ }
76
54
 
77
- if ( isMatch && ! doc.getElementById( ownerNode.id ) ) {
78
- // Display warning once we have a way to add style dependencies to the editor.
79
- // See: https://github.com/WordPress/gutenberg/pull/37466.
55
+ // Generally, ignore inline styles. We add inline styles belonging to a
56
+ // stylesheet later, which may or may not match the selectors.
57
+ if ( ownerNode.tagName !== 'LINK' ) {
58
+ return;
59
+ }
80
60
 
81
- doc.head.appendChild( ownerNode.cloneNode( true ) );
61
+ // Don't try to add the reset styles, which were removed as a dependency
62
+ // from `edit-blocks` for the iframe since we don't need to reset admin
63
+ // styles.
64
+ if ( ownerNode.id === 'wp-reset-editor-styles-css' ) {
65
+ return;
66
+ }
82
67
 
83
- // Add inline styles belonging to the stylesheet.
84
- const inlineCssId = ownerNode.id.replace( '-css', '-inline-css' );
85
- const inlineCssElement = document.getElementById( inlineCssId );
68
+ const isMatch = Array.from( cssRules ).find(
69
+ ( { selectorText } ) =>
70
+ selectorText &&
71
+ ( selectorText.includes( `.${ BODY_CLASS_NAME }` ) ||
72
+ selectorText.includes( `.${ BLOCK_PREFIX }` ) )
73
+ );
86
74
 
87
- if ( inlineCssElement ) {
88
- doc.head.appendChild( inlineCssElement.cloneNode( true ) );
75
+ if (
76
+ isMatch &&
77
+ ! node.ownerDocument.getElementById( ownerNode.id )
78
+ ) {
79
+ // Display warning once we have a way to add style dependencies to the editor.
80
+ // See: https://github.com/WordPress/gutenberg/pull/37466.
81
+ node.appendChild( ownerNode.cloneNode( true ) );
82
+
83
+ // Add inline styles belonging to the stylesheet.
84
+ const inlineCssId = ownerNode.id.replace(
85
+ '-css',
86
+ '-inline-css'
87
+ );
88
+ const inlineCssElement = document.getElementById( inlineCssId );
89
+
90
+ if ( inlineCssElement ) {
91
+ node.appendChild( inlineCssElement.cloneNode( true ) );
92
+ }
89
93
  }
90
- }
91
- } );
94
+ } );
95
+ }, [] );
92
96
  }
93
97
 
94
98
  /**
@@ -222,12 +226,7 @@ function Iframe(
222
226
  } );
223
227
  }, [] );
224
228
  const bodyRef = useMergeRefs( [ contentRef, clearerRef, writingFlowRef ] );
225
-
226
- useEffect( () => {
227
- if ( iframeDocument ) {
228
- styleSheetsCompat( iframeDocument );
229
- }
230
- }, [ iframeDocument ] );
229
+ const styleCompatibilityRef = useStylesCompatibility();
231
230
 
232
231
  head = (
233
232
  <>
@@ -275,6 +274,15 @@ function Iframe(
275
274
  ...bodyClasses
276
275
  ) }
277
276
  >
277
+ { /*
278
+ * This is a wrapper for the extra styles and scripts
279
+ * rendered imperatively by cloning the parent,
280
+ * it's important that this div's content remains uncontrolled.
281
+ */ }
282
+ <div
283
+ style={ { display: 'none' } }
284
+ ref={ styleCompatibilityRef }
285
+ />
278
286
  <StyleProvider document={ iframeDocument }>
279
287
  { children }
280
288
  </StyleProvider>
@@ -6,6 +6,7 @@ import { useDispatch } from '@wordpress/data';
6
6
  import { useCallback, useMemo, useState } from '@wordpress/element';
7
7
  import { __, sprintf } from '@wordpress/i18n';
8
8
  import { store as noticesStore } from '@wordpress/notices';
9
+ import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
9
10
 
10
11
  export default function useSaveImage( {
11
12
  crop,
@@ -60,7 +61,7 @@ export default function useSaveImage( {
60
61
  sprintf(
61
62
  /* translators: 1. Error message */
62
63
  __( 'Could not edit image. %s' ),
63
- error.message
64
+ stripHTML( error.message )
64
65
  ),
65
66
  {
66
67
  id: 'image-editing-error',
@@ -25,7 +25,7 @@ const MyImageSizeControl = () => {
25
25
  imageHeight={ imageHeight }
26
26
  />
27
27
  );
28
- } );
28
+ }
29
29
  ```
30
30
 
31
31
  ## Props
@@ -14,7 +14,7 @@ export {
14
14
  export { default as __experimentalBlockFullHeightAligmentControl } from './block-full-height-alignment-control';
15
15
  export { default as __experimentalBlockAlignmentMatrixControl } from './block-alignment-matrix-control';
16
16
  export { default as BlockBreadcrumb } from './block-breadcrumb';
17
- export { default as __experimentalBlockContentOverlay } from './block-content-overlay';
17
+ export { default as __experimentalUseBlockOverlayActive } from './block-content-overlay';
18
18
  export { BlockContextProvider } from './block-context';
19
19
  export {
20
20
  default as BlockControls,
@@ -33,7 +33,6 @@ export {
33
33
  BlockVerticalAlignmentControl,
34
34
  } from './block-vertical-alignment-control';
35
35
  export { default as __experimentalBorderRadiusControl } from './border-radius-control';
36
- export { default as __experimentalBorderStyleControl } from './border-style-control';
37
36
  export {
38
37
  // This is a typo, but kept here for back-compat.
39
38
  ButtonBlockerAppender,
@@ -52,7 +51,6 @@ export { default as __experimentalTextTransformControl } from './text-transform-
52
51
  export { default as __experimentalColorGradientControl } from './colors-gradients/control';
53
52
  export { default as __experimentalColorGradientSettingsDropdown } from './colors-gradients/dropdown';
54
53
  export { default as __experimentalPanelColorGradientSettings } from './colors-gradients/panel-color-gradient-settings';
55
- export { default as __experimentalToolsPanelColorDropdown } from './colors-gradients/tools-panel-color-dropdown';
56
54
  export {
57
55
  default as __experimentalImageEditor,
58
56
  ImageEditingProvider as __experimentalImageEditingProvider,
@@ -149,6 +147,7 @@ export { default as useBlockDisplayInformation } from './use-block-display-infor
149
147
  export { default as __unstableIframe } from './iframe';
150
148
  export { default as __experimentalUseNoRecursiveRenders } from './use-no-recursive-renders';
151
149
  export { default as __experimentalBlockPatternsList } from './block-patterns-list';
150
+ export { default as __experimentalPublishDateTimePicker } from './publish-date-time-picker';
152
151
 
153
152
  /*
154
153
  * State Related Components
@@ -30,6 +30,7 @@ const defaultRenderToggle = ( {
30
30
  blockTitle,
31
31
  hasSingleBlockType,
32
32
  toggleProps = {},
33
+ prioritizePatterns,
33
34
  } ) => {
34
35
  let label;
35
36
  if ( hasSingleBlockType ) {
@@ -38,6 +39,8 @@ const defaultRenderToggle = ( {
38
39
  _x( 'Add %s', 'directly add the only allowed block' ),
39
40
  blockTitle
40
41
  );
42
+ } else if ( prioritizePatterns ) {
43
+ label = __( 'Add pattern' );
41
44
  } else {
42
45
  label = _x( 'Add block', 'Generic label for block inserter button' );
43
46
  }
@@ -106,6 +109,7 @@ class Inserter extends Component {
106
109
  toggleProps,
107
110
  hasItems,
108
111
  renderToggle = defaultRenderToggle,
112
+ prioritizePatterns,
109
113
  } = this.props;
110
114
 
111
115
  return renderToggle( {
@@ -116,6 +120,7 @@ class Inserter extends Component {
116
120
  hasSingleBlockType,
117
121
  directInsertBlock,
118
122
  toggleProps,
123
+ prioritizePatterns,
119
124
  } );
120
125
  }
121
126
 
@@ -138,6 +143,7 @@ class Inserter extends Component {
138
143
  // This prop is experimental to give some time for the quick inserter to mature
139
144
  // Feel free to make them stable after a few releases.
140
145
  __experimentalIsQuick: isQuick,
146
+ prioritizePatterns,
141
147
  } = this.props;
142
148
 
143
149
  if ( isQuick ) {
@@ -149,6 +155,7 @@ class Inserter extends Component {
149
155
  rootClientId={ rootClientId }
150
156
  clientId={ clientId }
151
157
  isAppender={ isAppender }
158
+ prioritizePatterns={ prioritizePatterns }
152
159
  />
153
160
  );
154
161
  }
@@ -206,7 +213,11 @@ export default compose( [
206
213
  hasInserterItems,
207
214
  __experimentalGetAllowedBlocks,
208
215
  __experimentalGetDirectInsertBlock,
216
+ getBlockIndex,
217
+ getBlockCount,
218
+ getSettings,
209
219
  } = select( blockEditorStore );
220
+
210
221
  const { getBlockVariations } = select( blocksStore );
211
222
 
212
223
  rootClientId =
@@ -218,6 +229,10 @@ export default compose( [
218
229
  rootClientId
219
230
  );
220
231
 
232
+ const index = getBlockIndex( clientId );
233
+ const blockCount = getBlockCount();
234
+ const settings = getSettings();
235
+
221
236
  const hasSingleBlockType =
222
237
  size( allowedBlocks ) === 1 &&
223
238
  size(
@@ -236,6 +251,11 @@ export default compose( [
236
251
  allowedBlockType,
237
252
  directInsertBlock,
238
253
  rootClientId,
254
+ prioritizePatterns:
255
+ settings.__experimentalPreferPatternsOnRoot &&
256
+ ! rootClientId &&
257
+ index > 0 &&
258
+ ( index < blockCount || blockCount === 0 ),
239
259
  };
240
260
  } ),
241
261
  withDispatch( ( dispatch, ownProps, { select } ) => {
@@ -52,7 +52,7 @@ const defaultRenderToggle = ( {
52
52
  };
53
53
  const expandedModeViewText = (
54
54
  <Text style={ styles[ 'inserter-menu__add-block-button-text' ] }>
55
- { __( 'Add Blocks' ) }
55
+ { __( 'Add blocks' ) }
56
56
  </Text>
57
57
  );
58
58
 
@@ -67,7 +67,7 @@ const defaultRenderToggle = ( {
67
67
  extraProps={ {
68
68
  hint: __( 'Double tap to add a block' ),
69
69
  // testID is present to disambiguate this element for native UI tests. It's not
70
- // usually required for components. See: https://git.io/JeQ7G.
70
+ // usually required for components. See: https://github.com/WordPress/gutenberg/pull/18832#issuecomment-561411389.
71
71
  testID: 'add-block-button',
72
72
  onLongPress,
73
73
  } }
@@ -30,6 +30,7 @@ export default function QuickInserter( {
30
30
  rootClientId,
31
31
  clientId,
32
32
  isAppender,
33
+ prioritizePatterns,
33
34
  } ) {
34
35
  const [ filterValue, setFilterValue ] = useState( '' );
35
36
  const [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {
@@ -48,11 +49,7 @@ export default function QuickInserter( {
48
49
  destinationRootClientId
49
50
  );
50
51
 
51
- const {
52
- setInserterIsOpened,
53
- insertionIndex,
54
- prioritizePatterns,
55
- } = useSelect(
52
+ const { setInserterIsOpened, insertionIndex } = useSelect(
56
53
  ( select ) => {
57
54
  const { getSettings, getBlockIndex, getBlockCount } = select(
58
55
  blockEditorStore
@@ -63,15 +60,10 @@ export default function QuickInserter( {
63
60
 
64
61
  return {
65
62
  setInserterIsOpened: settings.__experimentalSetIsInserterOpened,
66
- prioritizePatterns:
67
- settings.__experimentalPreferPatternsOnRoot &&
68
- ! rootClientId &&
69
- index > 0 &&
70
- ( index < blockCount || blockCount === 0 ),
71
63
  insertionIndex: index === -1 ? blockCount : index,
72
64
  };
73
65
  },
74
- [ clientId, rootClientId ]
66
+ [ clientId ]
75
67
  );
76
68
 
77
69
  const showPatterns =
@@ -27,6 +27,7 @@
27
27
  color: $white;
28
28
  font-weight: 500;
29
29
  align-self: center;
30
+ text-transform: capitalize;
30
31
  }
31
32
 
32
33
  .inserter-menu__list-wrapper {
@@ -23,6 +23,7 @@ $block-inserter-tabs-height: 44px;
23
23
  .block-editor-inserter__popover.is-quick {
24
24
  .components-popover__content {
25
25
  border: none;
26
+ outline: none;
26
27
 
27
28
  .block-editor-inserter__quick-inserter > * {
28
29
  border-left: $border-width solid $gray-400;
@@ -310,7 +311,7 @@ $block-inserter-tabs-height: 44px;
310
311
  border-top: $border-width solid $gray-300;
311
312
  }
312
313
 
313
- .block-editor-inserter__popover.is-quick > .components-popover__content > div {
314
+ .block-editor-inserter__popover.is-quick > .components-popover__content {
314
315
  padding: 0;
315
316
  }
316
317
 
@@ -7,6 +7,17 @@ import { __ } from '@wordpress/i18n';
7
7
  // Used to help distinguish the "Create" suggestion within the search results in
8
8
  // order to handle it as a unique case.
9
9
  export const CREATE_TYPE = '__CREATE__';
10
+ export const TEL_TYPE = 'tel';
11
+ export const URL_TYPE = 'URL';
12
+ export const MAILTO_TYPE = 'mailto';
13
+ export const INTERNAL_TYPE = 'internal';
14
+
15
+ export const LINK_ENTRY_TYPES = [
16
+ URL_TYPE,
17
+ MAILTO_TYPE,
18
+ TEL_TYPE,
19
+ INTERNAL_TYPE,
20
+ ];
10
21
 
11
22
  export const DEFAULT_LINK_SETTINGS = [
12
23
  {
@@ -15,7 +15,7 @@ import { createElement, Fragment } from '@wordpress/element';
15
15
  */
16
16
  import LinkControlSearchCreate from './search-create-button';
17
17
  import LinkControlSearchItem from './search-item';
18
- import { CREATE_TYPE } from './constants';
18
+ import { CREATE_TYPE, LINK_ENTRY_TYPES } from './constants';
19
19
 
20
20
  export default function LinkControlSearchResults( {
21
21
  instanceId,
@@ -38,10 +38,9 @@ export default function LinkControlSearchResults( {
38
38
  }
39
39
  );
40
40
 
41
- const directLinkEntryTypes = [ 'url', 'mailto', 'tel', 'internal' ];
42
41
  const isSingleDirectEntryResult =
43
42
  suggestions.length === 1 &&
44
- directLinkEntryTypes.includes( suggestions[ 0 ].type.toLowerCase() );
43
+ LINK_ENTRY_TYPES.includes( suggestions[ 0 ].type );
45
44
  const shouldShowCreateSuggestion =
46
45
  withCreateSuggestion &&
47
46
  ! isSingleDirectEntryResult &&
@@ -127,8 +126,8 @@ export default function LinkControlSearchResults( {
127
126
  handleSuggestionClick( suggestion );
128
127
  } }
129
128
  isSelected={ index === selectedSuggestion }
130
- isURL={ directLinkEntryTypes.includes(
131
- suggestion.type.toLowerCase()
129
+ isURL={ LINK_ENTRY_TYPES.includes(
130
+ suggestion.type
132
131
  ) }
133
132
  searchTerm={ currentInputValue }
134
133
  shouldShowType={ shouldShowSuggestionsTypes }
@@ -14,26 +14,32 @@ import { startsWith } from 'lodash';
14
14
  * Internal dependencies
15
15
  */
16
16
  import isURLLike from './is-url-like';
17
- import { CREATE_TYPE } from './constants';
17
+ import {
18
+ CREATE_TYPE,
19
+ TEL_TYPE,
20
+ MAILTO_TYPE,
21
+ INTERNAL_TYPE,
22
+ URL_TYPE,
23
+ } from './constants';
18
24
  import { store as blockEditorStore } from '../../store';
19
25
 
20
26
  export const handleNoop = () => Promise.resolve( [] );
21
27
 
22
28
  export const handleDirectEntry = ( val ) => {
23
- let type = 'URL';
29
+ let type = URL_TYPE;
24
30
 
25
31
  const protocol = getProtocol( val ) || '';
26
32
 
27
33
  if ( protocol.includes( 'mailto' ) ) {
28
- type = 'mailto';
34
+ type = MAILTO_TYPE;
29
35
  }
30
36
 
31
37
  if ( protocol.includes( 'tel' ) ) {
32
- type = 'tel';
38
+ type = TEL_TYPE;
33
39
  }
34
40
 
35
41
  if ( startsWith( val, '#' ) ) {
36
- type = 'internal';
42
+ type = INTERNAL_TYPE;
37
43
  }
38
44
 
39
45
  return Promise.resolve( [
@@ -6,6 +6,7 @@ import classnames from 'classnames';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
+ import { hasBlockSupport } from '@wordpress/blocks';
9
10
  import {
10
11
  __experimentalTreeGridCell as TreeGridCell,
11
12
  __experimentalTreeGridItem as TreeGridItem,
@@ -19,7 +20,7 @@ import {
19
20
  useCallback,
20
21
  memo,
21
22
  } from '@wordpress/element';
22
- import { useDispatch } from '@wordpress/data';
23
+ import { useDispatch, useSelect } from '@wordpress/data';
23
24
  import { sprintf, __ } from '@wordpress/i18n';
24
25
 
25
26
  /**
@@ -66,6 +67,19 @@ function ListViewBlock( {
66
67
  const { toggleBlockHighlight } = useDispatch( blockEditorStore );
67
68
 
68
69
  const blockInformation = useBlockDisplayInformation( clientId );
70
+ const blockName = useSelect(
71
+ ( select ) => select( blockEditorStore ).getBlockName( clientId ),
72
+ [ clientId ]
73
+ );
74
+
75
+ // When a block hides its toolbar it also hides the block settings menu,
76
+ // since that menu is part of the toolbar in the editor canvas.
77
+ // List View respects this by also hiding the block settings menu.
78
+ const showBlockActions = hasBlockSupport(
79
+ blockName,
80
+ '__experimentalToolbar',
81
+ true
82
+ );
69
83
  const { isLocked } = useBlockLock( clientId );
70
84
  const instanceId = useInstanceId( ListViewBlock );
71
85
  const descriptionId = `list-view-block-select-button__${ instanceId }`;
@@ -98,14 +112,7 @@ function ListViewBlock( {
98
112
  )
99
113
  : __( 'Options' );
100
114
 
101
- const {
102
- __experimentalFeatures: withExperimentalFeatures,
103
- __experimentalPersistentListViewFeatures: withExperimentalPersistentListViewFeatures,
104
- __experimentalHideContainerBlockActions: hideContainerBlockActions,
105
- isTreeGridMounted,
106
- expand,
107
- collapse,
108
- } = useListViewContext();
115
+ const { isTreeGridMounted, expand, collapse } = useListViewContext();
109
116
 
110
117
  const hasSiblings = siblingBlockCount > 0;
111
118
  const hasRenderedMovers = showBlockMovers && hasSiblings;
@@ -123,27 +130,19 @@ function ListViewBlock( {
123
130
  // only focus the selected list item on mount; otherwise the list would always
124
131
  // try to steal the focus from the editor canvas.
125
132
  useEffect( () => {
126
- if (
127
- withExperimentalPersistentListViewFeatures &&
128
- ! isTreeGridMounted &&
129
- isSelected
130
- ) {
133
+ if ( ! isTreeGridMounted && isSelected ) {
131
134
  cellRef.current.focus();
132
135
  }
133
136
  }, [] );
134
137
 
135
- const highlightBlock = withExperimentalPersistentListViewFeatures
136
- ? toggleBlockHighlight
137
- : () => {};
138
-
139
138
  const onMouseEnter = useCallback( () => {
140
139
  setIsHovered( true );
141
- highlightBlock( clientId, true );
142
- }, [ clientId, setIsHovered, highlightBlock ] );
140
+ toggleBlockHighlight( clientId, true );
141
+ }, [ clientId, setIsHovered, toggleBlockHighlight ] );
143
142
  const onMouseLeave = useCallback( () => {
144
143
  setIsHovered( false );
145
- highlightBlock( clientId, false );
146
- }, [ clientId, setIsHovered, highlightBlock ] );
144
+ toggleBlockHighlight( clientId, false );
145
+ }, [ clientId, setIsHovered, toggleBlockHighlight ] );
147
146
 
148
147
  const selectEditorBlock = useCallback(
149
148
  ( event ) => {
@@ -174,18 +173,10 @@ function ListViewBlock( {
174
173
  [ clientId, expand, collapse, isExpanded ]
175
174
  );
176
175
 
177
- const showBlockActions =
178
- withExperimentalFeatures &&
179
- // hide actions for blocks like core/widget-areas
180
- ( ! hideContainerBlockActions ||
181
- ( hideContainerBlockActions && level > 1 ) );
182
-
183
- const hideBlockActions = withExperimentalFeatures && ! showBlockActions;
184
-
185
176
  let colSpan;
186
177
  if ( hasRenderedMovers ) {
187
178
  colSpan = 2;
188
- } else if ( hideBlockActions ) {
179
+ } else if ( ! showBlockActions ) {
189
180
  colSpan = 3;
190
181
  }
191
182
 
@@ -193,10 +184,9 @@ function ListViewBlock( {
193
184
  'is-selected': isSelected,
194
185
  'is-first-selected': isFirstSelectedBlock,
195
186
  'is-last-selected': isLastSelectedBlock,
196
- 'is-branch-selected':
197
- withExperimentalPersistentListViewFeatures && isBranchSelected,
187
+ 'is-branch-selected': isBranchSelected,
198
188
  'is-dragging': isDragged,
199
- 'has-single-cell': hideBlockActions,
189
+ 'has-single-cell': ! showBlockActions,
200
190
  } );
201
191
 
202
192
  // Only include all selected blocks if the currently clicked on block
@@ -85,21 +85,16 @@ function ListViewBranch( props ) {
85
85
  blocks,
86
86
  selectBlock,
87
87
  showBlockMovers,
88
- showNestedBlocks,
89
88
  selectedClientIds,
90
89
  level = 1,
91
90
  path = '',
92
91
  isBranchSelected = false,
93
92
  listPosition = 0,
94
93
  fixedListWindow,
95
- expandNested,
94
+ isExpanded,
96
95
  } = props;
97
96
 
98
- const {
99
- expandedState,
100
- draggedClientIds,
101
- __experimentalPersistentListViewFeatures,
102
- } = useListViewContext();
97
+ const { expandedState, draggedClientIds } = useListViewContext();
103
98
 
104
99
  const filteredBlocks = compact( blocks );
105
100
  const blockCount = filteredBlocks.length;
@@ -115,26 +110,22 @@ function ListViewBranch( props ) {
115
110
  filteredBlocks[ index - 1 ],
116
111
  expandedState,
117
112
  draggedClientIds,
118
- expandNested
113
+ isExpanded
119
114
  );
120
115
  }
121
116
 
122
- const usesWindowing = __experimentalPersistentListViewFeatures;
123
-
124
117
  const { itemInView } = fixedListWindow;
125
- const blockInView =
126
- ! usesWindowing || itemInView( nextPosition );
118
+ const blockInView = itemInView( nextPosition );
127
119
 
128
120
  const position = index + 1;
129
121
  const updatedPath =
130
122
  path.length > 0
131
123
  ? `${ path }_${ position }`
132
124
  : `${ position }`;
133
- const hasNestedBlocks =
134
- showNestedBlocks && !! innerBlocks && !! innerBlocks.length;
125
+ const hasNestedBlocks = !! innerBlocks?.length;
135
126
 
136
- const isExpanded = hasNestedBlocks
137
- ? expandedState[ clientId ] ?? expandNested
127
+ const shouldExpand = hasNestedBlocks
128
+ ? expandedState[ clientId ] ?? isExpanded
138
129
  : undefined;
139
130
 
140
131
  const isDragged = !! draggedClientIds?.includes( clientId );
@@ -164,7 +155,7 @@ function ListViewBranch( props ) {
164
155
  siblingBlockCount={ blockCount }
165
156
  showBlockMovers={ showBlockMovers }
166
157
  path={ updatedPath }
167
- isExpanded={ isExpanded }
158
+ isExpanded={ shouldExpand }
168
159
  listPosition={ nextPosition }
169
160
  selectedClientIds={ selectedClientIds }
170
161
  />
@@ -174,19 +165,18 @@ function ListViewBranch( props ) {
174
165
  <td className="block-editor-list-view-placeholder" />
175
166
  </tr>
176
167
  ) }
177
- { hasNestedBlocks && isExpanded && ! isDragged && (
168
+ { hasNestedBlocks && shouldExpand && ! isDragged && (
178
169
  <ListViewBranch
179
170
  blocks={ innerBlocks }
180
171
  selectBlock={ selectBlock }
181
172
  showBlockMovers={ showBlockMovers }
182
- showNestedBlocks={ showNestedBlocks }
183
173
  level={ level + 1 }
184
174
  path={ updatedPath }
185
175
  listPosition={ nextPosition + 1 }
186
176
  fixedListWindow={ fixedListWindow }
187
177
  isBranchSelected={ isSelectedBranch }
188
178
  selectedClientIds={ selectedClientIds }
189
- expandNested={ expandNested }
179
+ isExpanded={ isExpanded }
190
180
  />
191
181
  ) }
192
182
  </AsyncModeProvider>
@@ -3,9 +3,6 @@
3
3
  */
4
4
  import { createContext, useContext } from '@wordpress/element';
5
5
 
6
- export const ListViewContext = createContext( {
7
- __experimentalFeatures: false,
8
- __experimentalPersistentListViewFeatures: false,
9
- } );
6
+ export const ListViewContext = createContext( {} );
10
7
 
11
8
  export const useListViewContext = () => useContext( ListViewContext );