@wordpress/block-editor 8.0.16 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +12 -1
  4. package/build/components/block-caption/index.native.js +14 -3
  5. package/build/components/block-caption/index.native.js.map +1 -1
  6. package/build/components/block-edit/index.js +9 -0
  7. package/build/components/block-edit/index.js.map +1 -1
  8. package/build/components/block-inspector/index.js +8 -20
  9. package/build/components/block-inspector/index.js.map +1 -1
  10. package/build/components/block-list-appender/index.js +3 -11
  11. package/build/components/block-list-appender/index.js.map +1 -1
  12. package/build/components/block-media-update-progress/index.native.js +2 -1
  13. package/build/components/block-media-update-progress/index.native.js.map +1 -1
  14. package/build/components/block-preview/auto.js +10 -2
  15. package/build/components/block-preview/auto.js.map +1 -1
  16. package/build/components/block-settings/container.native.js +2 -1
  17. package/build/components/block-settings/container.native.js.map +1 -1
  18. package/build/components/block-styles/index.js +110 -134
  19. package/build/components/block-styles/index.js.map +1 -1
  20. package/build/components/block-styles/menu-items.js +63 -0
  21. package/build/components/block-styles/menu-items.js.map +1 -0
  22. package/build/components/block-styles/preview-panel.js +45 -0
  23. package/build/components/block-styles/preview-panel.js.map +1 -0
  24. package/build/components/block-styles/preview.native.js +2 -2
  25. package/build/components/block-styles/preview.native.js.map +1 -1
  26. package/build/components/block-styles/use-styles-for-block.js +119 -0
  27. package/build/components/block-styles/use-styles-for-block.js.map +1 -0
  28. package/build/components/block-styles/utils.js +39 -0
  29. package/build/components/block-styles/utils.js.map +1 -1
  30. package/build/components/block-switcher/block-styles-menu.js +3 -23
  31. package/build/components/block-switcher/block-styles-menu.js.map +1 -1
  32. package/build/components/block-tools/back-compat.js +2 -1
  33. package/build/components/block-tools/back-compat.js.map +1 -1
  34. package/build/components/block-tools/block-selection-button.js +5 -1
  35. package/build/components/block-tools/block-selection-button.js.map +1 -1
  36. package/build/components/block-tools/insertion-point.js +11 -1
  37. package/build/components/block-tools/insertion-point.js.map +1 -1
  38. package/build/components/block-types-list/index.native.js +2 -2
  39. package/build/components/block-types-list/index.native.js.map +1 -1
  40. package/build/components/button-block-appender/index.js +2 -1
  41. package/build/components/button-block-appender/index.js.map +1 -1
  42. package/build/components/colors-gradients/dropdown.js +88 -0
  43. package/build/components/colors-gradients/dropdown.js.map +1 -0
  44. package/build/components/colors-gradients/panel-color-gradient-settings.js +6 -5
  45. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  46. package/build/components/colors-gradients/panel-color-gradient-settings.native.js +6 -3
  47. package/build/components/colors-gradients/panel-color-gradient-settings.native.js.map +1 -1
  48. package/build/components/contrast-checker/index.js +34 -9
  49. package/build/components/contrast-checker/index.js.map +1 -1
  50. package/build/components/contrast-checker/index.native.js +108 -0
  51. package/build/components/contrast-checker/index.native.js.map +1 -0
  52. package/build/components/default-block-appender/index.js +16 -19
  53. package/build/components/default-block-appender/index.js.map +1 -1
  54. package/build/components/default-style-picker/index.js +18 -3
  55. package/build/components/default-style-picker/index.js.map +1 -1
  56. package/build/components/iframe/index.js +4 -5
  57. package/build/components/iframe/index.js.map +1 -1
  58. package/build/components/index.js +18 -9
  59. package/build/components/index.js.map +1 -1
  60. package/build/components/index.native.js +9 -0
  61. package/build/components/index.native.js.map +1 -1
  62. package/build/components/inner-blocks/default-block-appender.js +2 -4
  63. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  64. package/build/components/inner-blocks/use-nested-settings-update.js +16 -14
  65. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  66. package/build/components/inserter/index.js +61 -3
  67. package/build/components/inserter/index.js.map +1 -1
  68. package/build/components/inserter/index.native.js +1 -1
  69. package/build/components/inserter/index.native.js.map +1 -1
  70. package/build/components/inserter/library.js +5 -3
  71. package/build/components/inserter/library.js.map +1 -1
  72. package/build/components/inserter/menu.js +11 -3
  73. package/build/components/inserter/menu.js.map +1 -1
  74. package/build/components/inserter/tabs.native.js +7 -4
  75. package/build/components/inserter/tabs.native.js.map +1 -1
  76. package/build/components/inspector-controls/block-support-slot-container.js +2 -1
  77. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  78. package/build/components/inspector-controls/block-support-tools-panel.js +11 -43
  79. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  80. package/build/components/inspector-controls/fill.native.js +3 -5
  81. package/build/components/inspector-controls/fill.native.js.map +1 -1
  82. package/build/components/inspector-controls/groups.js +2 -0
  83. package/build/components/inspector-controls/groups.js.map +1 -1
  84. package/build/components/inspector-controls/slot.js +1 -3
  85. package/build/components/inspector-controls/slot.js.map +1 -1
  86. package/build/components/letter-spacing-control/index.js +6 -6
  87. package/build/components/letter-spacing-control/index.js.map +1 -1
  88. package/build/components/link-control/link-preview.js +1 -1
  89. package/build/components/link-control/link-preview.js.map +1 -1
  90. package/build/components/link-control/search-item.js +11 -1
  91. package/build/components/link-control/search-item.js.map +1 -1
  92. package/build/components/link-control/search-results.js +2 -1
  93. package/build/components/link-control/search-results.js.map +1 -1
  94. package/build/components/link-control/use-search-handler.js +18 -5
  95. package/build/components/link-control/use-search-handler.js.map +1 -1
  96. package/build/components/list-view/block-select-button.js +23 -3
  97. package/build/components/list-view/block-select-button.js.map +1 -1
  98. package/build/components/list-view/block.js +8 -0
  99. package/build/components/list-view/block.js.map +1 -1
  100. package/build/components/media-placeholder/index.js +2 -0
  101. package/build/components/media-placeholder/index.js.map +1 -1
  102. package/build/components/media-replace-flow/index.js +32 -6
  103. package/build/components/media-replace-flow/index.js.map +1 -1
  104. package/build/components/media-upload-progress/index.native.js +2 -1
  105. package/build/components/media-upload-progress/index.native.js.map +1 -1
  106. package/build/components/panel-color-settings/index.js +7 -3
  107. package/build/components/panel-color-settings/index.js.map +1 -1
  108. package/build/components/provider/block-refs-provider.js +4 -1
  109. package/build/components/provider/block-refs-provider.js.map +1 -1
  110. package/build/components/rich-text/file-paste-handler.js +1 -1
  111. package/build/components/rich-text/file-paste-handler.js.map +1 -1
  112. package/build/components/rich-text/prevent-event-discovery.js +33 -0
  113. package/build/components/rich-text/prevent-event-discovery.js.map +1 -0
  114. package/build/components/rich-text/use-input-rules.js +3 -1
  115. package/build/components/rich-text/use-input-rules.js.map +1 -1
  116. package/build/components/selection-scroll-into-view/index.js +2 -1
  117. package/build/components/selection-scroll-into-view/index.js.map +1 -1
  118. package/build/components/use-display-block-controls/index.native.js +45 -0
  119. package/build/components/use-display-block-controls/index.native.js.map +1 -0
  120. package/build/components/use-on-block-drop/index.js +7 -3
  121. package/build/components/use-on-block-drop/index.js.map +1 -1
  122. package/build/components/writing-flow/use-multi-selection.js +3 -1
  123. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  124. package/build/hooks/border-color.js +74 -10
  125. package/build/hooks/border-color.js.map +1 -1
  126. package/build/hooks/border-radius.js +47 -0
  127. package/build/hooks/border-radius.js.map +1 -1
  128. package/build/hooks/border-style.js +41 -0
  129. package/build/hooks/border-style.js.map +1 -1
  130. package/build/hooks/border-width.js +70 -31
  131. package/build/hooks/border-width.js.map +1 -1
  132. package/build/hooks/border.js +81 -11
  133. package/build/hooks/border.js.map +1 -1
  134. package/build/hooks/color-panel.js +4 -1
  135. package/build/hooks/color-panel.js.map +1 -1
  136. package/build/hooks/color-panel.native.js +77 -0
  137. package/build/hooks/color-panel.native.js.map +1 -0
  138. package/build/hooks/color.js +6 -5
  139. package/build/hooks/color.js.map +1 -1
  140. package/build/hooks/index.native.js +2 -0
  141. package/build/hooks/index.native.js.map +1 -1
  142. package/build/hooks/layout.native.js +20 -0
  143. package/build/hooks/layout.native.js.map +1 -0
  144. package/build/hooks/letter-spacing.js +1 -1
  145. package/build/hooks/letter-spacing.js.map +1 -1
  146. package/build/hooks/typography.js +1 -1
  147. package/build/hooks/typography.js.map +1 -1
  148. package/build/store/actions.js +1 -2
  149. package/build/store/actions.js.map +1 -1
  150. package/build/store/defaults.js +5 -1
  151. package/build/store/defaults.js.map +1 -1
  152. package/build/store/defaults.native.js +2 -6
  153. package/build/store/defaults.native.js.map +1 -1
  154. package/build/store/selectors.js +10 -5
  155. package/build/store/selectors.js.map +1 -1
  156. package/build/utils/get-paste-event-data.js +1 -1
  157. package/build/utils/get-paste-event-data.js.map +1 -1
  158. package/build/utils/parse-css-unit-to-px.js +1 -1
  159. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  160. package/build-module/components/block-caption/index.native.js +13 -3
  161. package/build-module/components/block-caption/index.native.js.map +1 -1
  162. package/build-module/components/block-edit/index.js +9 -0
  163. package/build-module/components/block-edit/index.js.map +1 -1
  164. package/build-module/components/block-inspector/index.js +8 -20
  165. package/build-module/components/block-inspector/index.js.map +1 -1
  166. package/build-module/components/block-list-appender/index.js +3 -10
  167. package/build-module/components/block-list-appender/index.js.map +1 -1
  168. package/build-module/components/block-media-update-progress/index.native.js +2 -1
  169. package/build-module/components/block-media-update-progress/index.native.js.map +1 -1
  170. package/build-module/components/block-preview/auto.js +10 -2
  171. package/build-module/components/block-preview/auto.js.map +1 -1
  172. package/build-module/components/block-settings/container.native.js +2 -1
  173. package/build-module/components/block-settings/container.native.js.map +1 -1
  174. package/build-module/components/block-styles/index.js +112 -133
  175. package/build-module/components/block-styles/index.js.map +1 -1
  176. package/build-module/components/block-styles/menu-items.js +50 -0
  177. package/build-module/components/block-styles/menu-items.js.map +1 -0
  178. package/build-module/components/block-styles/preview-panel.js +35 -0
  179. package/build-module/components/block-styles/preview-panel.js.map +1 -0
  180. package/build-module/components/block-styles/preview.native.js +2 -2
  181. package/build-module/components/block-styles/preview.native.js.map +1 -1
  182. package/build-module/components/block-styles/use-styles-for-block.js +107 -0
  183. package/build-module/components/block-styles/use-styles-for-block.js.map +1 -0
  184. package/build-module/components/block-styles/utils.js +34 -0
  185. package/build-module/components/block-styles/utils.js.map +1 -1
  186. package/build-module/components/block-switcher/block-styles-menu.js +3 -21
  187. package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
  188. package/build-module/components/block-tools/back-compat.js +2 -1
  189. package/build-module/components/block-tools/back-compat.js.map +1 -1
  190. package/build-module/components/block-tools/block-selection-button.js +5 -1
  191. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  192. package/build-module/components/block-tools/insertion-point.js +11 -1
  193. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  194. package/build-module/components/block-types-list/index.native.js +2 -2
  195. package/build-module/components/block-types-list/index.native.js.map +1 -1
  196. package/build-module/components/button-block-appender/index.js +2 -1
  197. package/build-module/components/button-block-appender/index.js.map +1 -1
  198. package/build-module/components/colors-gradients/dropdown.js +75 -0
  199. package/build-module/components/colors-gradients/dropdown.js.map +1 -0
  200. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +8 -7
  201. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  202. package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js +7 -4
  203. package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js.map +1 -1
  204. package/build-module/components/contrast-checker/index.js +34 -9
  205. package/build-module/components/contrast-checker/index.js.map +1 -1
  206. package/build-module/components/contrast-checker/index.native.js +90 -0
  207. package/build-module/components/contrast-checker/index.native.js.map +1 -0
  208. package/build-module/components/default-block-appender/index.js +15 -18
  209. package/build-module/components/default-block-appender/index.js.map +1 -1
  210. package/build-module/components/default-style-picker/index.js +17 -3
  211. package/build-module/components/default-style-picker/index.js.map +1 -1
  212. package/build-module/components/iframe/index.js +4 -5
  213. package/build-module/components/iframe/index.js.map +1 -1
  214. package/build-module/components/index.js +2 -1
  215. package/build-module/components/index.js.map +1 -1
  216. package/build-module/components/index.native.js +1 -0
  217. package/build-module/components/index.native.js.map +1 -1
  218. package/build-module/components/inner-blocks/default-block-appender.js +2 -4
  219. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  220. package/build-module/components/inner-blocks/use-nested-settings-update.js +16 -14
  221. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  222. package/build-module/components/inserter/index.js +61 -3
  223. package/build-module/components/inserter/index.js.map +1 -1
  224. package/build-module/components/inserter/index.native.js +2 -2
  225. package/build-module/components/inserter/index.native.js.map +1 -1
  226. package/build-module/components/inserter/library.js +5 -3
  227. package/build-module/components/inserter/library.js.map +1 -1
  228. package/build-module/components/inserter/menu.js +11 -4
  229. package/build-module/components/inserter/menu.js.map +1 -1
  230. package/build-module/components/inserter/tabs.native.js +7 -4
  231. package/build-module/components/inserter/tabs.native.js.map +1 -1
  232. package/build-module/components/inspector-controls/block-support-slot-container.js +2 -1
  233. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  234. package/build-module/components/inspector-controls/block-support-tools-panel.js +12 -43
  235. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  236. package/build-module/components/inspector-controls/fill.native.js +3 -5
  237. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  238. package/build-module/components/inspector-controls/groups.js +2 -0
  239. package/build-module/components/inspector-controls/groups.js.map +1 -1
  240. package/build-module/components/inspector-controls/slot.js +1 -3
  241. package/build-module/components/inspector-controls/slot.js.map +1 -1
  242. package/build-module/components/letter-spacing-control/index.js +6 -6
  243. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  244. package/build-module/components/link-control/link-preview.js +1 -1
  245. package/build-module/components/link-control/link-preview.js.map +1 -1
  246. package/build-module/components/link-control/search-item.js +11 -1
  247. package/build-module/components/link-control/search-item.js.map +1 -1
  248. package/build-module/components/link-control/search-results.js +2 -1
  249. package/build-module/components/link-control/search-results.js.map +1 -1
  250. package/build-module/components/link-control/use-search-handler.js +18 -5
  251. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  252. package/build-module/components/list-view/block-select-button.js +22 -3
  253. package/build-module/components/list-view/block-select-button.js.map +1 -1
  254. package/build-module/components/list-view/block.js +6 -0
  255. package/build-module/components/list-view/block.js.map +1 -1
  256. package/build-module/components/media-placeholder/index.js +2 -0
  257. package/build-module/components/media-placeholder/index.js.map +1 -1
  258. package/build-module/components/media-replace-flow/index.js +32 -6
  259. package/build-module/components/media-replace-flow/index.js.map +1 -1
  260. package/build-module/components/media-upload-progress/index.native.js +2 -1
  261. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  262. package/build-module/components/panel-color-settings/index.js +7 -3
  263. package/build-module/components/panel-color-settings/index.js.map +1 -1
  264. package/build-module/components/provider/block-refs-provider.js +4 -1
  265. package/build-module/components/provider/block-refs-provider.js.map +1 -1
  266. package/build-module/components/rich-text/file-paste-handler.js +1 -1
  267. package/build-module/components/rich-text/file-paste-handler.js.map +1 -1
  268. package/build-module/components/rich-text/prevent-event-discovery.js +25 -0
  269. package/build-module/components/rich-text/prevent-event-discovery.js.map +1 -0
  270. package/build-module/components/rich-text/use-input-rules.js +2 -1
  271. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  272. package/build-module/components/selection-scroll-into-view/index.js +2 -1
  273. package/build-module/components/selection-scroll-into-view/index.js.map +1 -1
  274. package/build-module/components/use-display-block-controls/index.native.js +34 -0
  275. package/build-module/components/use-display-block-controls/index.native.js.map +1 -0
  276. package/build-module/components/use-on-block-drop/index.js +7 -3
  277. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  278. package/build-module/components/writing-flow/use-multi-selection.js +3 -4
  279. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  280. package/build-module/hooks/border-color.js +72 -12
  281. package/build-module/hooks/border-color.js.map +1 -1
  282. package/build-module/hooks/border-radius.js +42 -0
  283. package/build-module/hooks/border-radius.js.map +1 -1
  284. package/build-module/hooks/border-style.js +36 -0
  285. package/build-module/hooks/border-style.js.map +1 -1
  286. package/build-module/hooks/border-width.js +66 -32
  287. package/build-module/hooks/border-width.js.map +1 -1
  288. package/build-module/hooks/border.js +80 -12
  289. package/build-module/hooks/border.js.map +1 -1
  290. package/build-module/hooks/color-panel.js +4 -1
  291. package/build-module/hooks/color-panel.js.map +1 -1
  292. package/build-module/hooks/color-panel.native.js +62 -0
  293. package/build-module/hooks/color-panel.native.js.map +1 -0
  294. package/build-module/hooks/color.js +6 -5
  295. package/build-module/hooks/color.js.map +1 -1
  296. package/build-module/hooks/index.native.js +1 -0
  297. package/build-module/hooks/index.native.js.map +1 -1
  298. package/build-module/hooks/layout.native.js +16 -0
  299. package/build-module/hooks/layout.native.js.map +1 -0
  300. package/build-module/hooks/letter-spacing.js +1 -1
  301. package/build-module/hooks/letter-spacing.js.map +1 -1
  302. package/build-module/hooks/typography.js +1 -1
  303. package/build-module/hooks/typography.js.map +1 -1
  304. package/build-module/store/actions.js +1 -2
  305. package/build-module/store/actions.js.map +1 -1
  306. package/build-module/store/defaults.js +5 -1
  307. package/build-module/store/defaults.js.map +1 -1
  308. package/build-module/store/defaults.native.js +2 -5
  309. package/build-module/store/defaults.native.js.map +1 -1
  310. package/build-module/store/selectors.js +10 -5
  311. package/build-module/store/selectors.js.map +1 -1
  312. package/build-module/utils/get-paste-event-data.js +1 -1
  313. package/build-module/utils/get-paste-event-data.js.map +1 -1
  314. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  315. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  316. package/build-style/style-rtl.css +226 -181
  317. package/build-style/style.css +226 -181
  318. package/package.json +31 -27
  319. package/src/components/block-caption/index.native.js +22 -4
  320. package/src/components/block-card/README.md +1 -1
  321. package/src/components/block-edit/index.js +8 -0
  322. package/src/components/block-edit/test/edit.native.js +10 -9
  323. package/src/components/block-inspector/index.js +9 -16
  324. package/src/components/block-list-appender/index.js +5 -21
  325. package/src/components/block-media-update-progress/index.native.js +1 -1
  326. package/src/components/block-media-update-progress/test/index.native.js +136 -93
  327. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +108 -47
  328. package/src/components/block-mover/test/index.native.js +5 -5
  329. package/src/components/block-preview/README.md +14 -26
  330. package/src/components/block-preview/auto.js +7 -2
  331. package/src/components/block-preview/test/index.js +2 -0
  332. package/src/components/block-settings/container.native.js +1 -0
  333. package/src/components/block-styles/index.js +125 -145
  334. package/src/components/block-styles/menu-items.js +49 -0
  335. package/src/components/block-styles/preview-panel.js +36 -0
  336. package/src/components/block-styles/preview.native.js +5 -2
  337. package/src/components/block-styles/style.scss +59 -51
  338. package/src/components/block-styles/test/{index.js → utils.js} +60 -1
  339. package/src/components/block-styles/use-styles-for-block.js +99 -0
  340. package/src/components/block-styles/utils.js +39 -0
  341. package/src/components/block-switcher/block-styles-menu.js +3 -38
  342. package/src/components/block-tools/back-compat.js +1 -0
  343. package/src/components/block-tools/block-selection-button.js +7 -1
  344. package/src/components/block-tools/insertion-point.js +10 -1
  345. package/src/components/block-types-list/index.native.js +5 -2
  346. package/src/components/border-radius-control/style.scss +1 -1
  347. package/src/components/border-style-control/style.scss +0 -1
  348. package/src/components/button-block-appender/index.js +1 -0
  349. package/src/components/color-palette/test/__snapshots__/control.js.snap +9 -4
  350. package/src/components/colors-gradients/dropdown.js +96 -0
  351. package/src/components/colors-gradients/panel-color-gradient-settings.js +23 -19
  352. package/src/components/colors-gradients/panel-color-gradient-settings.native.js +13 -2
  353. package/src/components/colors-gradients/style.scss +59 -5
  354. package/src/components/contrast-checker/README.md +3 -1
  355. package/src/components/contrast-checker/index.js +48 -20
  356. package/src/components/contrast-checker/index.native.js +113 -0
  357. package/src/components/contrast-checker/style.native.scss +26 -0
  358. package/src/components/contrast-checker/test/index.js +65 -0
  359. package/src/components/default-block-appender/index.js +17 -24
  360. package/src/components/default-block-appender/style.scss +4 -0
  361. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +12 -24
  362. package/src/components/default-block-appender/test/index.js +4 -14
  363. package/src/components/default-style-picker/index.js +18 -6
  364. package/src/components/iframe/index.js +7 -3
  365. package/src/components/index.js +2 -1
  366. package/src/components/index.native.js +1 -0
  367. package/src/components/inner-blocks/README.md +2 -0
  368. package/src/components/inner-blocks/default-block-appender.js +2 -7
  369. package/src/components/inner-blocks/use-nested-settings-update.js +16 -14
  370. package/src/components/inserter/index.js +77 -5
  371. package/src/components/inserter/index.native.js +2 -2
  372. package/src/components/inserter/library.js +17 -12
  373. package/src/components/inserter/menu.js +31 -13
  374. package/src/components/inserter/tabs.native.js +5 -4
  375. package/src/components/inserter/test/block-types-tab.native.js +9 -10
  376. package/src/components/inserter/test/index.native.js +3 -7
  377. package/src/components/inserter/test/reusable-blocks-tab.native.js +8 -10
  378. package/src/components/inspector-controls/block-support-slot-container.js +3 -1
  379. package/src/components/inspector-controls/block-support-tools-panel.js +39 -58
  380. package/src/components/inspector-controls/fill.native.js +4 -3
  381. package/src/components/inspector-controls/groups.js +2 -0
  382. package/src/components/inspector-controls/slot.js +2 -7
  383. package/src/components/letter-spacing-control/index.js +6 -6
  384. package/src/components/link-control/README.md +1 -1
  385. package/src/components/link-control/link-preview.js +1 -1
  386. package/src/components/link-control/search-item.js +11 -2
  387. package/src/components/link-control/search-results.js +1 -0
  388. package/src/components/link-control/style.scss +2 -1
  389. package/src/components/link-control/test/index.js +4 -0
  390. package/src/components/link-control/use-search-handler.js +25 -4
  391. package/src/components/list-view/block-select-button.js +20 -1
  392. package/src/components/list-view/block.js +10 -0
  393. package/src/components/media-placeholder/index.js +2 -0
  394. package/src/components/media-replace-flow/index.js +35 -5
  395. package/src/components/media-upload/test/index.native.js +28 -47
  396. package/src/components/media-upload-progress/index.native.js +1 -0
  397. package/src/components/media-upload-progress/test/index.native.js +60 -47
  398. package/src/components/panel-color-settings/index.js +8 -4
  399. package/src/components/provider/block-refs-provider.js +4 -1
  400. package/src/components/rich-text/file-paste-handler.js +3 -1
  401. package/src/components/rich-text/prevent-event-discovery.js +23 -0
  402. package/src/components/rich-text/use-input-rules.js +2 -1
  403. package/src/components/selection-scroll-into-view/index.js +1 -0
  404. package/src/components/url-input/README.md +5 -0
  405. package/src/components/use-display-block-controls/index.native.js +38 -0
  406. package/src/components/use-on-block-drop/index.js +7 -3
  407. package/src/components/writing-flow/test/use-multi-selection.js +36 -0
  408. package/src/components/writing-flow/use-multi-selection.js +12 -9
  409. package/src/hooks/border-color.js +69 -9
  410. package/src/hooks/border-radius.js +32 -0
  411. package/src/hooks/border-style.js +26 -0
  412. package/src/hooks/border-width.js +56 -32
  413. package/src/hooks/border.js +115 -20
  414. package/src/hooks/border.scss +3 -17
  415. package/src/hooks/color-panel.js +3 -0
  416. package/src/hooks/color-panel.native.js +63 -0
  417. package/src/hooks/color.js +8 -7
  418. package/src/hooks/dimensions.scss +5 -0
  419. package/src/hooks/index.native.js +1 -0
  420. package/src/hooks/layout.native.js +23 -0
  421. package/src/hooks/letter-spacing.js +1 -1
  422. package/src/hooks/typography.js +1 -1
  423. package/src/store/actions.js +1 -2
  424. package/src/store/defaults.js +2 -0
  425. package/src/store/defaults.native.js +2 -6
  426. package/src/store/selectors.js +10 -5
  427. package/src/style.scss +4 -3
  428. package/src/utils/get-paste-event-data.js +1 -1
  429. package/src/utils/parse-css-unit-to-px.js +1 -1
  430. package/src/utils/test/parse-css-unit-to-px.js +3 -0
  431. package/tsconfig.tsbuildinfo +1 -1
  432. package/build/components/use-canvas-click-redirect/index.js +0 -66
  433. package/build/components/use-canvas-click-redirect/index.js.map +0 -1
  434. package/build-module/components/use-canvas-click-redirect/index.js +0 -54
  435. package/build-module/components/use-canvas-click-redirect/index.js.map +0 -1
  436. package/src/components/use-canvas-click-redirect/index.js +0 -57
@@ -14,7 +14,7 @@ import warning from '@wordpress/warning';
14
14
  * Internal dependencies
15
15
  */
16
16
  import groups from './groups';
17
- import { useBlockEditContext } from '../block-edit/context';
17
+ import useDisplayBlockControls from '../use-display-block-controls';
18
18
  import { BlockSettingsButton } from '../block-settings';
19
19
 
20
20
  export default function InspectorControlsFill( {
@@ -22,13 +22,14 @@ export default function InspectorControlsFill( {
22
22
  __experimentalGroup: group = 'default',
23
23
  ...props
24
24
  } ) {
25
- const { isSelected } = useBlockEditContext();
25
+ const isDisplayed = useDisplayBlockControls();
26
+
26
27
  const Fill = groups[ group ]?.Fill;
27
28
  if ( ! Fill ) {
28
29
  warning( `Unknown InspectorControl group "${ group }" provided.` );
29
30
  return null;
30
31
  }
31
- if ( ! isSelected ) {
32
+ if ( ! isDisplayed ) {
32
33
  return null;
33
34
  }
34
35
 
@@ -5,6 +5,7 @@ import { createSlotFill } from '@wordpress/components';
5
5
 
6
6
  const InspectorControlsDefault = createSlotFill( 'InspectorControls' );
7
7
  const InspectorControlsAdvanced = createSlotFill( 'InspectorAdvancedControls' );
8
+ const InspectorControlsBorder = createSlotFill( 'InspectorControlsBorder' );
8
9
  const InspectorControlsDimensions = createSlotFill(
9
10
  'InspectorControlsDimensions'
10
11
  );
@@ -15,6 +16,7 @@ const InspectorControlsTypography = createSlotFill(
15
16
  const groups = {
16
17
  default: InspectorControlsDefault,
17
18
  advanced: InspectorControlsAdvanced,
19
+ border: InspectorControlsBorder,
18
20
  dimensions: InspectorControlsDimensions,
19
21
  typography: InspectorControlsTypography,
20
22
  };
@@ -13,7 +13,6 @@ import groups from './groups';
13
13
 
14
14
  export default function InspectorControlsSlot( {
15
15
  __experimentalGroup: group = 'default',
16
- bubblesVirtually = true,
17
16
  label,
18
17
  ...props
19
18
  } ) {
@@ -32,14 +31,10 @@ export default function InspectorControlsSlot( {
32
31
  if ( label ) {
33
32
  return (
34
33
  <BlockSupportToolsPanel group={ group } label={ label }>
35
- <BlockSupportSlotContainer
36
- { ...props }
37
- bubblesVirtually={ bubblesVirtually }
38
- Slot={ Slot }
39
- />
34
+ <BlockSupportSlotContainer { ...props } Slot={ Slot } />
40
35
  </BlockSupportToolsPanel>
41
36
  );
42
37
  }
43
38
 
44
- return <Slot { ...props } bubblesVirtually={ bubblesVirtually } />;
39
+ return <Slot { ...props } bubblesVirtually />;
45
40
  }
@@ -15,12 +15,12 @@ import useSetting from '../../components/use-setting';
15
15
  /**
16
16
  * Control for letter-spacing.
17
17
  *
18
- * @param {Object} props Component props.
19
- * @param {string} props.value Currently selected letter-spacing.
20
- * @param {Function} props.onChange Handles change in letter-spacing selection.
21
- * @param {boolean} props.__unstableInputWidth Input width to pass through to inner UnitControl.
18
+ * @param {Object} props Component props.
19
+ * @param {string} props.value Currently selected letter-spacing.
20
+ * @param {Function} props.onChange Handles change in letter-spacing selection.
21
+ * @param {string|number|undefined} props.__unstableInputWidth Input width to pass through to inner UnitControl. Should be a valid CSS value.
22
22
  *
23
- * @return {WPElement} Letter-spacing control.
23
+ * @return {WPElement} Letter-spacing control.
24
24
  */
25
25
  export default function LetterSpacingControl( {
26
26
  value,
@@ -33,7 +33,7 @@ export default function LetterSpacingControl( {
33
33
  } );
34
34
  return (
35
35
  <UnitControl
36
- label={ __( 'Letter-spacing' ) }
36
+ label={ __( 'Letter spacing' ) }
37
37
  value={ value }
38
38
  __unstableInputWidth={ __unstableInputWidth }
39
39
  units={ units }
@@ -114,7 +114,7 @@ Controls the query parameters used to search for suggestions. For example, to li
114
114
 
115
115
  ```jsx
116
116
  <LinkControl
117
- suggestionQuery={ {
117
+ suggestionsQuery={ {
118
118
  type: 'post',
119
119
  subtype: 'page',
120
120
  } }
@@ -98,7 +98,7 @@ export default function LinkPreview( {
98
98
  </>
99
99
  ) : (
100
100
  <span className="block-editor-link-control__search-item-error-notice">
101
- Link is empty
101
+ { __( 'Link is empty' ) }
102
102
  </span>
103
103
  ) }
104
104
  </span>
@@ -36,6 +36,7 @@ export const LinkControlSearchItem = ( {
36
36
  icon={ globe }
37
37
  />
38
38
  ) }
39
+
39
40
  <span className="block-editor-link-control__search-item-header">
40
41
  <span className="block-editor-link-control__search-item-title">
41
42
  <TextHighlight
@@ -57,12 +58,20 @@ export const LinkControlSearchItem = ( {
57
58
  </span>
58
59
  { shouldShowType && suggestion.type && (
59
60
  <span className="block-editor-link-control__search-item-type">
60
- { /* Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label. */ }
61
- { suggestion.type === 'post_tag' ? 'tag' : suggestion.type }
61
+ { getVisualTypeName( suggestion ) }
62
62
  </span>
63
63
  ) }
64
64
  </Button>
65
65
  );
66
66
  };
67
67
 
68
+ function getVisualTypeName( suggestion ) {
69
+ if ( suggestion.isFrontPage ) {
70
+ return 'front page';
71
+ }
72
+
73
+ // Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.
74
+ return suggestion.type === 'post_tag' ? 'tag' : suggestion.type;
75
+ }
76
+
68
77
  export default LinkControlSearchItem;
@@ -132,6 +132,7 @@ export default function LinkControlSearchResults( {
132
132
  ) }
133
133
  searchTerm={ currentInputValue }
134
134
  shouldShowType={ shouldShowSuggestionsTypes }
135
+ isFrontPage={ suggestion?.isFrontPage }
135
136
  />
136
137
  );
137
138
  } ) }
@@ -61,7 +61,7 @@ $preview-image-height: 140px;
61
61
  // Specificity overide of URLInput defaults.
62
62
  &.block-editor-url-input input[type="text"].block-editor-url-input__input {
63
63
  @include input-control;
64
- width: calc(100% - #{$grid-unit-20*2});
64
+ width: calc(100% - #{$grid-unit-20 * 2});
65
65
  display: block;
66
66
  padding: 11px $grid-unit-20;
67
67
  padding-right: ( $button-size * $block-editor-link-control-number-of-actions ); // width of reset and submit buttons
@@ -287,6 +287,7 @@ $preview-image-height: 140px;
287
287
  font-size: 0.9em;
288
288
  background-color: $gray-100;
289
289
  border-radius: 2px;
290
+ white-space: nowrap; // tags shouldn't go over two lines.
290
291
  }
291
292
 
292
293
  .block-editor-link-control__search-item-description {
@@ -51,6 +51,8 @@ jest.mock( '@wordpress/data/src/components/use-dispatch', () => ( {
51
51
  useDispatch: () => ( { saveEntityRecords: jest.fn() } ),
52
52
  } ) );
53
53
 
54
+ jest.useRealTimers();
55
+
54
56
  /**
55
57
  * Wait for next tick of event loop. This is required
56
58
  * because the `fetchSearchSuggestions` Promise will
@@ -1634,6 +1636,7 @@ describe( 'Selecting links', () => {
1634
1636
  );
1635
1637
 
1636
1638
  // We should have highlighted the first item using the keyboard
1639
+ // eslint-disable-next-line jest/no-conditional-expect
1637
1640
  expect( selectedSearchResultElement ).toEqual(
1638
1641
  secondSearchSuggestion
1639
1642
  );
@@ -1648,6 +1651,7 @@ describe( 'Selecting links', () => {
1648
1651
  );
1649
1652
 
1650
1653
  // We should be back to highlighting the first search result again
1654
+ // eslint-disable-next-line jest/no-conditional-expect
1651
1655
  expect( selectedSearchResultElement ).toEqual(
1652
1656
  firstSearchSuggestion
1653
1657
  );
@@ -52,21 +52,39 @@ const handleEntitySearch = async (
52
52
  fetchSearchSuggestions,
53
53
  directEntryHandler,
54
54
  withCreateSuggestion,
55
- withURLSuggestion
55
+ withURLSuggestion,
56
+ pageOnFront
56
57
  ) => {
57
58
  const { isInitialSuggestions } = suggestionsQuery;
59
+ let resultsIncludeFrontPage = false;
58
60
 
59
61
  let results = await Promise.all( [
60
62
  fetchSearchSuggestions( val, suggestionsQuery ),
61
63
  directEntryHandler( val ),
62
64
  ] );
63
65
 
66
+ // Identify front page and update type to match.
67
+ results[ 0 ] = results[ 0 ].map( ( result ) => {
68
+ if ( Number( result.id ) === pageOnFront ) {
69
+ resultsIncludeFrontPage = true;
70
+ result.isFrontPage = true;
71
+ return result;
72
+ }
73
+
74
+ return result;
75
+ } );
76
+
64
77
  const couldBeURL = ! val.includes( ' ' );
65
78
 
66
79
  // If it's potentially a URL search then concat on a URL search suggestion
67
80
  // just for good measure. That way once the actual results run out we always
68
81
  // have a URL option to fallback on.
69
- if ( couldBeURL && withURLSuggestion && ! isInitialSuggestions ) {
82
+ if (
83
+ ! resultsIncludeFrontPage &&
84
+ couldBeURL &&
85
+ withURLSuggestion &&
86
+ ! isInitialSuggestions
87
+ ) {
70
88
  results = results[ 0 ].concat( results[ 1 ] );
71
89
  } else {
72
90
  results = results[ 0 ];
@@ -109,9 +127,11 @@ export default function useSearchHandler(
109
127
  withCreateSuggestion,
110
128
  withURLSuggestion
111
129
  ) {
112
- const { fetchSearchSuggestions } = useSelect( ( select ) => {
130
+ const { fetchSearchSuggestions, pageOnFront } = useSelect( ( select ) => {
113
131
  const { getSettings } = select( blockEditorStore );
132
+
114
133
  return {
134
+ pageOnFront: getSettings().pageOnFront,
115
135
  fetchSearchSuggestions: getSettings()
116
136
  .__experimentalFetchLinkSuggestions,
117
137
  };
@@ -131,7 +151,8 @@ export default function useSearchHandler(
131
151
  fetchSearchSuggestions,
132
152
  directEntryHandler,
133
153
  withCreateSuggestion,
134
- withURLSuggestion
154
+ withURLSuggestion,
155
+ pageOnFront
135
156
  );
136
157
  },
137
158
  [ directEntryHandler, fetchSearchSuggestions, withCreateSuggestion ]
@@ -19,6 +19,7 @@ import useBlockDisplayInformation from '../use-block-display-information';
19
19
  import { getBlockPositionDescription } from './utils';
20
20
  import BlockTitle from '../block-title';
21
21
  import ListViewExpander from './expander';
22
+ import { SPACE, ENTER } from '@wordpress/keycodes';
22
23
 
23
24
  function ListViewBlockSelectButton(
24
25
  {
@@ -47,6 +48,22 @@ function ListViewBlockSelectButton(
47
48
  level
48
49
  );
49
50
 
51
+ // The `href` attribute triggers the browser's native HTML drag operations.
52
+ // When the link is dragged, the element's outerHTML is set in DataTransfer object as text/html.
53
+ // We need to clear any HTML drag data to prevent `pasteHandler` from firing
54
+ // inside the `useOnBlockDrop` hook.
55
+ const onDragStartHandler = ( event ) => {
56
+ event.dataTransfer.clearData();
57
+ onDragStart( event );
58
+ };
59
+
60
+ function onKeyDownHandler( event ) {
61
+ if ( event.keyCode === ENTER || event.keyCode === SPACE ) {
62
+ event.preventDefault();
63
+ onClick( event );
64
+ }
65
+ }
66
+
50
67
  return (
51
68
  <>
52
69
  <Button
@@ -55,13 +72,15 @@ function ListViewBlockSelectButton(
55
72
  className
56
73
  ) }
57
74
  onClick={ onClick }
75
+ onKeyDown={ onKeyDownHandler }
58
76
  aria-describedby={ descriptionId }
59
77
  ref={ ref }
60
78
  tabIndex={ tabIndex }
61
79
  onFocus={ onFocus }
62
- onDragStart={ onDragStart }
80
+ onDragStart={ onDragStartHandler }
63
81
  onDragEnd={ onDragEnd }
64
82
  draggable={ draggable }
83
+ href={ `#block-${ clientId }` }
65
84
  >
66
85
  <ListViewExpander onClick={ onToggleExpanded } />
67
86
  <BlockIcon icon={ blockInformation?.icon } showColors />
@@ -19,6 +19,7 @@ import {
19
19
  memo,
20
20
  } from '@wordpress/element';
21
21
  import { useDispatch } from '@wordpress/data';
22
+ import { sprintf, __ } from '@wordpress/i18n';
22
23
 
23
24
  /**
24
25
  * Internal dependencies
@@ -32,6 +33,7 @@ import ListViewBlockContents from './block-contents';
32
33
  import BlockSettingsDropdown from '../block-settings-menu/block-settings-dropdown';
33
34
  import { useListViewContext } from './context';
34
35
  import { store as blockEditorStore } from '../../store';
36
+ import useBlockDisplayInformation from '../use-block-display-information';
35
37
 
36
38
  function ListViewBlock( {
37
39
  block,
@@ -143,6 +145,13 @@ function ListViewBlock( {
143
145
  'has-single-cell': hideBlockActions,
144
146
  } );
145
147
 
148
+ const blockInformation = useBlockDisplayInformation( clientId );
149
+ const settingsAriaLabel = sprintf(
150
+ // translators: %s: The title of the block.
151
+ __( 'Options for %s block' ),
152
+ blockInformation.title
153
+ );
154
+
146
155
  return (
147
156
  <ListViewLeaf
148
157
  className={ classes }
@@ -218,6 +227,7 @@ function ListViewBlock( {
218
227
  <BlockSettingsDropdown
219
228
  clientIds={ [ clientId ] }
220
229
  icon={ moreVertical }
230
+ label={ settingsAriaLabel }
221
231
  toggleProps={ {
222
232
  ref,
223
233
  className: 'block-editor-list-view-block__menu',
@@ -75,6 +75,7 @@ export function MediaPlaceholder( {
75
75
  onDoubleClick,
76
76
  onFilesPreUpload = noop,
77
77
  onHTMLDrop = noop,
78
+ onClose = noop,
78
79
  children,
79
80
  mediaLibraryButton,
80
81
  placeholder,
@@ -328,6 +329,7 @@ export function MediaPlaceholder( {
328
329
  gallery={ multiple && onlyAllowsImages() }
329
330
  multiple={ multiple }
330
331
  onSelect={ onSelect }
332
+ onClose={ onClose }
331
333
  allowedTypes={ allowedTypes }
332
334
  value={
333
335
  Array.isArray( value )
@@ -34,15 +34,20 @@ import { store as blockEditorStore } from '../../store';
34
34
  const MediaReplaceFlow = ( {
35
35
  mediaURL,
36
36
  mediaId,
37
+ mediaIds,
37
38
  allowedTypes,
38
39
  accept,
39
40
  onSelect,
40
41
  onSelectURL,
41
42
  onFilesUpload = noop,
43
+ onCloseModal = noop,
42
44
  name = __( 'Replace' ),
43
45
  createNotice,
44
46
  removeNotice,
45
47
  children,
48
+ multiple = false,
49
+ addToGallery,
50
+ handleUpload = true,
46
51
  } ) => {
47
52
  const [ mediaURLValue, setMediaURLValue ] = useState( mediaURL );
48
53
  const mediaUpload = useSelect( ( select ) => {
@@ -77,7 +82,8 @@ const MediaReplaceFlow = ( {
77
82
  }, 1000 );
78
83
  };
79
84
 
80
- const selectMedia = ( media ) => {
85
+ const selectMedia = ( media, closeMenu ) => {
86
+ closeMenu();
81
87
  setMediaURLValue( media.url );
82
88
  // Calling `onSelect` after the state update since it might unmount the component.
83
89
  onSelect( media );
@@ -89,11 +95,15 @@ const MediaReplaceFlow = ( {
89
95
  onSelectURL( newURL );
90
96
  };
91
97
 
92
- const uploadFiles = ( event ) => {
98
+ const uploadFiles = ( event, closeMenu ) => {
93
99
  const files = event.target.files;
100
+ if ( ! handleUpload ) {
101
+ closeMenu();
102
+ return onSelect( files );
103
+ }
94
104
  onFilesUpload( files );
95
105
  const setMedia = ( [ media ] ) => {
96
- selectMedia( media );
106
+ selectMedia( media, closeMenu );
97
107
  };
98
108
  mediaUpload( {
99
109
  allowedTypes,
@@ -110,6 +120,19 @@ const MediaReplaceFlow = ( {
110
120
  }
111
121
  };
112
122
 
123
+ const onlyAllowsImages = () => {
124
+ if ( ! allowedTypes || allowedTypes.length === 0 ) {
125
+ return false;
126
+ }
127
+
128
+ return allowedTypes.every(
129
+ ( allowedType ) =>
130
+ allowedType === 'image' || allowedType.startsWith( 'image/' )
131
+ );
132
+ };
133
+
134
+ const gallery = multiple && onlyAllowsImages();
135
+
113
136
  const POPOVER_PROPS = {
114
137
  isAlternate: true,
115
138
  };
@@ -133,9 +156,15 @@ const MediaReplaceFlow = ( {
133
156
  <>
134
157
  <NavigableMenu className="block-editor-media-replace-flow__media-upload-menu">
135
158
  <MediaUpload
136
- value={ mediaId }
137
- onSelect={ ( media ) => selectMedia( media ) }
159
+ gallery={ gallery }
160
+ addToGallery={ addToGallery }
161
+ multiple={ multiple }
162
+ value={ multiple ? mediaIds : mediaId }
163
+ onSelect={ ( media ) =>
164
+ selectMedia( media, onClose )
165
+ }
138
166
  allowedTypes={ allowedTypes }
167
+ onClose={ onCloseModal }
139
168
  render={ ( { open } ) => (
140
169
  <MenuItem icon={ mediaIcon } onClick={ open }>
141
170
  { __( 'Open Media Library' ) }
@@ -148,6 +177,7 @@ const MediaReplaceFlow = ( {
148
177
  uploadFiles( event, onClose );
149
178
  } }
150
179
  accept={ accept }
180
+ multiple={ multiple }
151
181
  render={ ( { openFileDialog } ) => {
152
182
  return (
153
183
  <MenuItem
@@ -1,16 +1,13 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { shallow } from 'enzyme';
5
- import { TouchableWithoutFeedback } from 'react-native';
4
+ import { render, fireEvent } from 'test/helpers';
5
+ import { Text, TouchableWithoutFeedback } from 'react-native';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import {
11
- requestMediaPicker,
12
- mediaSources,
13
- } from '@wordpress/react-native-bridge';
10
+ import { requestMediaPicker } from '@wordpress/react-native-bridge';
14
11
 
15
12
  /**
16
13
  * Internal dependencies
@@ -30,48 +27,32 @@ const MEDIA_ID = 123;
30
27
 
31
28
  describe( 'MediaUpload component', () => {
32
29
  it( 'renders without crashing', () => {
33
- const wrapper = shallow(
34
- <MediaUpload allowedTypes={ [] } render={ () => {} } />
30
+ const wrapper = render(
31
+ <MediaUpload allowedTypes={ [] } render={ () => null } />
35
32
  );
36
33
  expect( wrapper ).toBeTruthy();
37
34
  } );
38
35
 
39
- it( 'opens media options picker', () => {
40
- const wrapper = shallow(
41
- <MediaUpload
42
- allowedTypes={ [] }
43
- render={ ( { open, getMediaOptions } ) => {
44
- return (
45
- <TouchableWithoutFeedback onPress={ open }>
46
- { getMediaOptions() }
47
- </TouchableWithoutFeedback>
48
- );
49
- } }
50
- />
51
- );
52
- expect( wrapper.find( 'Picker' ) ).toHaveLength( 1 );
53
- } );
54
-
55
36
  it( 'shows right media capture option for media type', () => {
56
37
  const expectOptionForMediaType = ( mediaType, expectedOption ) => {
57
- const wrapper = shallow(
38
+ const wrapper = render(
58
39
  <MediaUpload
59
40
  allowedTypes={ [ mediaType ] }
60
41
  render={ ( { open, getMediaOptions } ) => {
61
42
  return (
62
- <TouchableWithoutFeedback onPress={ open }>
43
+ <>
44
+ <TouchableWithoutFeedback onPress={ open }>
45
+ <Text>Open Picker</Text>
46
+ </TouchableWithoutFeedback>
63
47
  { getMediaOptions() }
64
- </TouchableWithoutFeedback>
48
+ </>
65
49
  );
66
50
  } }
67
51
  />
68
52
  );
69
- expect(
70
- wrapper
71
- .find( 'Picker' )
72
- .props()
73
- .options.filter( ( item ) => item.label === expectedOption )
74
- ).toHaveLength( 1 );
53
+ fireEvent.press( wrapper.getByText( 'Open Picker' ) );
54
+
55
+ wrapper.getByText( expectedOption );
75
56
  };
76
57
  expectOptionForMediaType( MEDIA_TYPE_IMAGE, OPTION_TAKE_PHOTO );
77
58
  expectOptionForMediaType( MEDIA_TYPE_VIDEO, OPTION_TAKE_VIDEO );
@@ -96,21 +77,25 @@ describe( 'MediaUpload component', () => {
96
77
 
97
78
  const onSelect = jest.fn();
98
79
 
99
- const wrapper = shallow(
80
+ const wrapper = render(
100
81
  <MediaUpload
101
82
  allowedTypes={ [ MEDIA_TYPE_VIDEO ] }
102
83
  onSelect={ onSelect }
103
84
  multiple={ allowMultiple }
104
85
  render={ ( { open, getMediaOptions } ) => {
105
86
  return (
106
- <TouchableWithoutFeedback onPress={ open }>
87
+ <>
88
+ <TouchableWithoutFeedback onPress={ open }>
89
+ <Text>Open Picker</Text>
90
+ </TouchableWithoutFeedback>
107
91
  { getMediaOptions() }
108
- </TouchableWithoutFeedback>
92
+ </>
109
93
  );
110
94
  } }
111
95
  />
112
96
  );
113
- wrapper.find( 'Picker' ).simulate( 'change', option );
97
+ fireEvent.press( wrapper.getByText( 'Open Picker' ) );
98
+ fireEvent.press( wrapper.getByText( option ) );
114
99
  const media = { id: MEDIA_ID, url: MEDIA_URL };
115
100
 
116
101
  expect( requestFunction ).toHaveBeenCalledTimes( 1 );
@@ -123,7 +108,7 @@ describe( 'MediaUpload component', () => {
123
108
 
124
109
  it( 'can select media from device library', () => {
125
110
  expectMediaPickerForOption(
126
- mediaSources.deviceLibrary,
111
+ 'Choose from device',
127
112
  false,
128
113
  requestMediaPicker
129
114
  );
@@ -131,23 +116,19 @@ describe( 'MediaUpload component', () => {
131
116
 
132
117
  it( 'can select media from WP media library', () => {
133
118
  expectMediaPickerForOption(
134
- mediaSources.siteMediaLibrary,
119
+ 'WordPress Media Library',
135
120
  false,
136
121
  requestMediaPicker
137
122
  );
138
123
  } );
139
124
 
140
- it( 'can select media by capturig', () => {
141
- expectMediaPickerForOption(
142
- mediaSources.deviceCamera,
143
- false,
144
- requestMediaPicker
145
- );
125
+ it( 'can select media by capturing', () => {
126
+ expectMediaPickerForOption( 'Take a Video', false, requestMediaPicker );
146
127
  } );
147
128
 
148
129
  it( 'can select multiple media from device library', () => {
149
130
  expectMediaPickerForOption(
150
- mediaSources.deviceLibrary,
131
+ 'Choose from device',
151
132
  true,
152
133
  requestMediaPicker
153
134
  );
@@ -155,7 +136,7 @@ describe( 'MediaUpload component', () => {
155
136
 
156
137
  it( 'can select multiple media from WP media library', () => {
157
138
  expectMediaPickerForOption(
158
- mediaSources.siteMediaLibrary,
139
+ 'WordPress Media Library',
159
140
  true,
160
141
  requestMediaPicker
161
142
  );
@@ -144,6 +144,7 @@ export class MediaUploadProgress extends Component {
144
144
  <Spinner
145
145
  progress={ progress }
146
146
  style={ this.props.spinnerStyle }
147
+ testID="spinner"
147
148
  />
148
149
  ) }
149
150
  </View>