@wordpress/components 19.14.0 → 19.15.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 (506) hide show
  1. package/CHANGELOG.md +51 -12
  2. package/build/autocomplete/get-default-use-items.js +5 -1
  3. package/build/autocomplete/get-default-use-items.js.map +1 -1
  4. package/build/autocomplete/index.js +5 -1
  5. package/build/autocomplete/index.js.map +1 -1
  6. package/build/border-control/border-control/hook.js.map +1 -1
  7. package/build/box-control/index.js +1 -1
  8. package/build/box-control/index.js.map +1 -1
  9. package/build/color-picker/hex-input.js +5 -4
  10. package/build/color-picker/hex-input.js.map +1 -1
  11. package/build/color-picker/index.native.js +35 -34
  12. package/build/color-picker/index.native.js.map +1 -1
  13. package/build/color-picker/input-with-slider.js +3 -1
  14. package/build/color-picker/input-with-slider.js.map +1 -1
  15. package/build/color-picker/styles.js +31 -43
  16. package/build/color-picker/styles.js.map +1 -1
  17. package/build/color-picker/use-deprecated-props.js +22 -31
  18. package/build/color-picker/use-deprecated-props.js.map +1 -1
  19. package/build/combobox-control/index.js +14 -6
  20. package/build/combobox-control/index.js.map +1 -1
  21. package/build/combobox-control/styles.js +39 -0
  22. package/build/combobox-control/styles.js.map +1 -0
  23. package/build/dropdown-menu/index.js +5 -5
  24. package/build/dropdown-menu/index.js.map +1 -1
  25. package/build/dropdown-menu/index.native.js +5 -5
  26. package/build/dropdown-menu/index.native.js.map +1 -1
  27. package/build/elevation/hook.js +5 -5
  28. package/build/elevation/hook.js.map +1 -1
  29. package/build/external-link/index.js +1 -3
  30. package/build/external-link/index.js.map +1 -1
  31. package/build/focal-point-picker/grid.js +2 -7
  32. package/build/focal-point-picker/grid.js.map +1 -1
  33. package/build/focal-point-picker/index.native.js +8 -8
  34. package/build/focal-point-picker/index.native.js.map +1 -1
  35. package/build/focal-point-picker/tooltip/index.native.js +11 -12
  36. package/build/focal-point-picker/tooltip/index.native.js.map +1 -1
  37. package/build/form-token-field/index.js +22 -7
  38. package/build/form-token-field/index.js.map +1 -1
  39. package/build/form-token-field/styles.js +40 -0
  40. package/build/form-token-field/styles.js.map +1 -0
  41. package/build/form-token-field/suggestions-list.js +2 -7
  42. package/build/form-token-field/suggestions-list.js.map +1 -1
  43. package/build/grid/component.js +7 -8
  44. package/build/grid/component.js.map +1 -1
  45. package/build/grid/hook.js +1 -5
  46. package/build/grid/hook.js.map +1 -1
  47. package/build/grid/index.js.map +1 -1
  48. package/build/grid/utils.js +4 -7
  49. package/build/grid/utils.js.map +1 -1
  50. package/build/h-stack/component.js +5 -9
  51. package/build/h-stack/component.js.map +1 -1
  52. package/build/h-stack/hook.js +8 -10
  53. package/build/h-stack/hook.js.map +1 -1
  54. package/build/h-stack/index.js.map +1 -1
  55. package/build/h-stack/utils.js +7 -18
  56. package/build/h-stack/utils.js.map +1 -1
  57. package/build/icon/index.js.map +1 -1
  58. package/build/menu-item/index.js +1 -3
  59. package/build/menu-item/index.js.map +1 -1
  60. package/build/mobile/focal-point-settings-panel/index.native.js +1 -1
  61. package/build/mobile/focal-point-settings-panel/index.native.js.map +1 -1
  62. package/build/mobile/image/index.native.js +4 -2
  63. package/build/mobile/image/index.native.js.map +1 -1
  64. package/build/modal/index.js +17 -3
  65. package/build/modal/index.js.map +1 -1
  66. package/build/navigation/index.js +4 -1
  67. package/build/navigation/index.js.map +1 -1
  68. package/build/navigation/item/base.js +3 -0
  69. package/build/navigation/item/base.js.map +1 -1
  70. package/build/popover/index.js +4 -4
  71. package/build/popover/index.js.map +1 -1
  72. package/build/range-control/index.js +54 -40
  73. package/build/range-control/index.js.map +1 -1
  74. package/build/range-control/input-range.js +5 -7
  75. package/build/range-control/input-range.js.map +1 -1
  76. package/build/range-control/mark.js +5 -7
  77. package/build/range-control/mark.js.map +1 -1
  78. package/build/range-control/rail.js +10 -16
  79. package/build/range-control/rail.js.map +1 -1
  80. package/build/range-control/styles/range-control-styles.js +62 -62
  81. package/build/range-control/styles/range-control-styles.js.map +1 -1
  82. package/build/range-control/tooltip.js +5 -7
  83. package/build/range-control/tooltip.js.map +1 -1
  84. package/build/range-control/types.js +6 -0
  85. package/build/range-control/types.js.map +1 -0
  86. package/build/range-control/utils.js +22 -29
  87. package/build/range-control/utils.js.map +1 -1
  88. package/build/resizable-box/resize-tooltip/utils.js +2 -7
  89. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  90. package/build/scrollable/component.js +7 -8
  91. package/build/scrollable/component.js.map +1 -1
  92. package/build/scrollable/hook.js +0 -8
  93. package/build/scrollable/hook.js.map +1 -1
  94. package/build/scrollable/index.js.map +1 -1
  95. package/build/scrollable/styles.js +7 -7
  96. package/build/scrollable/styles.js.map +1 -1
  97. package/build/shortcut/index.js +2 -8
  98. package/build/shortcut/index.js.map +1 -1
  99. package/build/slot-fill/index.native.js +6 -8
  100. package/build/slot-fill/index.native.js.map +1 -1
  101. package/build/slot-fill/provider.js +4 -8
  102. package/build/slot-fill/provider.js.map +1 -1
  103. package/build/slot-fill/slot.js +4 -8
  104. package/build/slot-fill/slot.js.map +1 -1
  105. package/build/spacer/component.js.map +1 -1
  106. package/build/spacer/hook.js +2 -2
  107. package/build/spacer/hook.js.map +1 -1
  108. package/build/spacer/index.js.map +1 -1
  109. package/build/text-highlight/index.js +22 -5
  110. package/build/text-highlight/index.js.map +1 -1
  111. package/build/text-highlight/types.js +6 -0
  112. package/build/text-highlight/types.js.map +1 -0
  113. package/build/tip/index.js +5 -11
  114. package/build/tip/index.js.map +1 -1
  115. package/build/tip/types.js +6 -0
  116. package/build/tip/types.js.map +1 -0
  117. package/build/toolbar-group/index.js +3 -3
  118. package/build/toolbar-group/index.js.map +1 -1
  119. package/build/tree-select/index.js +2 -2
  120. package/build/tree-select/index.js.map +1 -1
  121. package/build/ui/utils/get-valid-children.js.map +1 -1
  122. package/build/visually-hidden/component.js +12 -13
  123. package/build/visually-hidden/component.js.map +1 -1
  124. package/build/visually-hidden/index.js.map +1 -1
  125. package/build/visually-hidden/styles.js +3 -1
  126. package/build/visually-hidden/styles.js.map +1 -1
  127. package/build/visually-hidden/types.js +6 -0
  128. package/build/visually-hidden/types.js.map +1 -0
  129. package/build-module/autocomplete/get-default-use-items.js +3 -2
  130. package/build-module/autocomplete/get-default-use-items.js.map +1 -1
  131. package/build-module/autocomplete/index.js +3 -2
  132. package/build-module/autocomplete/index.js.map +1 -1
  133. package/build-module/border-control/border-control/hook.js.map +1 -1
  134. package/build-module/box-control/index.js +1 -1
  135. package/build-module/box-control/index.js.map +1 -1
  136. package/build-module/color-picker/hex-input.js +4 -3
  137. package/build-module/color-picker/hex-input.js.map +1 -1
  138. package/build-module/color-picker/index.native.js +36 -35
  139. package/build-module/color-picker/index.native.js.map +1 -1
  140. package/build-module/color-picker/input-with-slider.js +3 -1
  141. package/build-module/color-picker/input-with-slider.js.map +1 -1
  142. package/build-module/color-picker/styles.js +23 -40
  143. package/build-module/color-picker/styles.js.map +1 -1
  144. package/build-module/color-picker/use-deprecated-props.js +22 -31
  145. package/build-module/color-picker/use-deprecated-props.js.map +1 -1
  146. package/build-module/combobox-control/index.js +14 -7
  147. package/build-module/combobox-control/index.js.map +1 -1
  148. package/build-module/combobox-control/styles.js +27 -0
  149. package/build-module/combobox-control/styles.js.map +1 -0
  150. package/build-module/dropdown-menu/index.js +5 -4
  151. package/build-module/dropdown-menu/index.js.map +1 -1
  152. package/build-module/dropdown-menu/index.native.js +5 -4
  153. package/build-module/dropdown-menu/index.native.js.map +1 -1
  154. package/build-module/elevation/hook.js +5 -5
  155. package/build-module/elevation/hook.js.map +1 -1
  156. package/build-module/external-link/index.js +1 -2
  157. package/build-module/external-link/index.js.map +1 -1
  158. package/build-module/focal-point-picker/grid.js +2 -6
  159. package/build-module/focal-point-picker/grid.js.map +1 -1
  160. package/build-module/focal-point-picker/index.native.js +8 -8
  161. package/build-module/focal-point-picker/index.native.js.map +1 -1
  162. package/build-module/focal-point-picker/tooltip/index.native.js +11 -12
  163. package/build-module/focal-point-picker/tooltip/index.native.js.map +1 -1
  164. package/build-module/form-token-field/index.js +20 -6
  165. package/build-module/form-token-field/index.js.map +1 -1
  166. package/build-module/form-token-field/styles.js +28 -0
  167. package/build-module/form-token-field/styles.js.map +1 -0
  168. package/build-module/form-token-field/suggestions-list.js +2 -7
  169. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  170. package/build-module/grid/component.js +7 -8
  171. package/build-module/grid/component.js.map +1 -1
  172. package/build-module/grid/hook.js +1 -5
  173. package/build-module/grid/hook.js.map +1 -1
  174. package/build-module/grid/index.js.map +1 -1
  175. package/build-module/grid/utils.js +3 -8
  176. package/build-module/grid/utils.js.map +1 -1
  177. package/build-module/h-stack/component.js +3 -7
  178. package/build-module/h-stack/component.js.map +1 -1
  179. package/build-module/h-stack/hook.js +10 -12
  180. package/build-module/h-stack/hook.js.map +1 -1
  181. package/build-module/h-stack/index.js.map +1 -1
  182. package/build-module/h-stack/utils.js +7 -19
  183. package/build-module/h-stack/utils.js.map +1 -1
  184. package/build-module/icon/index.js.map +1 -1
  185. package/build-module/menu-item/index.js +1 -2
  186. package/build-module/menu-item/index.js.map +1 -1
  187. package/build-module/mobile/focal-point-settings-panel/index.native.js +2 -2
  188. package/build-module/mobile/focal-point-settings-panel/index.native.js.map +1 -1
  189. package/build-module/mobile/image/index.native.js +3 -2
  190. package/build-module/mobile/image/index.native.js.map +1 -1
  191. package/build-module/modal/index.js +19 -5
  192. package/build-module/modal/index.js.map +1 -1
  193. package/build-module/navigation/index.js +4 -1
  194. package/build-module/navigation/index.js.map +1 -1
  195. package/build-module/navigation/item/base.js +3 -0
  196. package/build-module/navigation/item/base.js.map +1 -1
  197. package/build-module/popover/index.js +4 -4
  198. package/build-module/popover/index.js.map +1 -1
  199. package/build-module/range-control/index.js +54 -40
  200. package/build-module/range-control/index.js.map +1 -1
  201. package/build-module/range-control/input-range.js +5 -6
  202. package/build-module/range-control/input-range.js.map +1 -1
  203. package/build-module/range-control/mark.js +5 -6
  204. package/build-module/range-control/mark.js.map +1 -1
  205. package/build-module/range-control/rail.js +10 -15
  206. package/build-module/range-control/rail.js.map +1 -1
  207. package/build-module/range-control/styles/range-control-styles.js +62 -64
  208. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  209. package/build-module/range-control/tooltip.js +5 -6
  210. package/build-module/range-control/tooltip.js.map +1 -1
  211. package/build-module/range-control/types.js +2 -0
  212. package/build-module/range-control/types.js.map +1 -0
  213. package/build-module/range-control/utils.js +22 -29
  214. package/build-module/range-control/utils.js.map +1 -1
  215. package/build-module/resizable-box/resize-tooltip/utils.js +2 -6
  216. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  217. package/build-module/scrollable/component.js +7 -8
  218. package/build-module/scrollable/component.js.map +1 -1
  219. package/build-module/scrollable/hook.js +0 -8
  220. package/build-module/scrollable/hook.js.map +1 -1
  221. package/build-module/scrollable/index.js.map +1 -1
  222. package/build-module/scrollable/styles.js +7 -7
  223. package/build-module/scrollable/styles.js.map +1 -1
  224. package/build-module/shortcut/index.js +2 -7
  225. package/build-module/shortcut/index.js.map +1 -1
  226. package/build-module/slot-fill/index.native.js +6 -7
  227. package/build-module/slot-fill/index.native.js.map +1 -1
  228. package/build-module/slot-fill/provider.js +4 -7
  229. package/build-module/slot-fill/provider.js.map +1 -1
  230. package/build-module/slot-fill/slot.js +4 -7
  231. package/build-module/slot-fill/slot.js.map +1 -1
  232. package/build-module/spacer/component.js.map +1 -1
  233. package/build-module/spacer/hook.js +2 -2
  234. package/build-module/spacer/hook.js.map +1 -1
  235. package/build-module/spacer/index.js.map +1 -1
  236. package/build-module/text-highlight/index.js +23 -6
  237. package/build-module/text-highlight/index.js.map +1 -1
  238. package/build-module/text-highlight/types.js +2 -0
  239. package/build-module/text-highlight/types.js.map +1 -0
  240. package/build-module/tip/index.js +6 -10
  241. package/build-module/tip/index.js.map +1 -1
  242. package/build-module/tip/types.js +2 -0
  243. package/build-module/tip/types.js.map +1 -0
  244. package/build-module/toolbar-group/index.js +3 -2
  245. package/build-module/toolbar-group/index.js.map +1 -1
  246. package/build-module/tree-select/index.js +3 -3
  247. package/build-module/tree-select/index.js.map +1 -1
  248. package/build-module/ui/utils/get-valid-children.js.map +1 -1
  249. package/build-module/visually-hidden/component.js +12 -13
  250. package/build-module/visually-hidden/component.js.map +1 -1
  251. package/build-module/visually-hidden/index.js.map +1 -1
  252. package/build-module/visually-hidden/styles.js +3 -1
  253. package/build-module/visually-hidden/styles.js.map +1 -1
  254. package/build-module/visually-hidden/types.js +2 -0
  255. package/build-module/visually-hidden/types.js.map +1 -0
  256. package/build-style/style-rtl.css +13 -19
  257. package/build-style/style.css +13 -19
  258. package/build-types/border-control/border-control/hook.d.ts +1 -1
  259. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  260. package/build-types/color-picker/hex-input.d.ts.map +1 -1
  261. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  262. package/build-types/color-picker/styles.d.ts +30 -31
  263. package/build-types/color-picker/styles.d.ts.map +1 -1
  264. package/build-types/color-picker/use-deprecated-props.d.ts.map +1 -1
  265. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  266. package/build-types/external-link/index.d.ts.map +1 -1
  267. package/build-types/form-token-field/index.d.ts.map +1 -1
  268. package/build-types/form-token-field/styles.d.ts +14 -0
  269. package/build-types/form-token-field/styles.d.ts.map +1 -0
  270. package/build-types/form-token-field/suggestions-list.d.ts.map +1 -1
  271. package/build-types/form-token-field/types.d.ts +7 -0
  272. package/build-types/form-token-field/types.d.ts.map +1 -1
  273. package/build-types/grid/component.d.ts +3 -3
  274. package/build-types/grid/component.d.ts.map +1 -1
  275. package/build-types/grid/hook.d.ts +5 -2
  276. package/build-types/grid/hook.d.ts.map +1 -1
  277. package/build-types/grid/index.d.ts +2 -2
  278. package/build-types/grid/index.d.ts.map +1 -1
  279. package/build-types/grid/stories/index.d.ts +9 -0
  280. package/build-types/grid/stories/index.d.ts.map +1 -0
  281. package/build-types/grid/test/grid.d.ts +2 -0
  282. package/build-types/grid/test/grid.d.ts.map +1 -0
  283. package/build-types/grid/types.d.ts +16 -15
  284. package/build-types/grid/types.d.ts.map +1 -1
  285. package/build-types/grid/utils.d.ts +50 -69
  286. package/build-types/grid/utils.d.ts.map +1 -1
  287. package/build-types/h-stack/component.d.ts +3 -2
  288. package/build-types/h-stack/component.d.ts.map +1 -1
  289. package/build-types/h-stack/hook.d.ts +5 -3
  290. package/build-types/h-stack/hook.d.ts.map +1 -1
  291. package/build-types/h-stack/index.d.ts +2 -2
  292. package/build-types/h-stack/index.d.ts.map +1 -1
  293. package/build-types/h-stack/stories/index.d.ts +9 -0
  294. package/build-types/h-stack/stories/index.d.ts.map +1 -0
  295. package/build-types/h-stack/test/index.d.ts +2 -0
  296. package/build-types/h-stack/test/index.d.ts.map +1 -0
  297. package/build-types/h-stack/utils.d.ts +8 -4
  298. package/build-types/h-stack/utils.d.ts.map +1 -1
  299. package/build-types/icon/index.d.ts +1 -1
  300. package/build-types/icon/index.d.ts.map +1 -1
  301. package/build-types/menu-item/index.d.ts.map +1 -1
  302. package/build-types/popover/index.d.ts.map +1 -1
  303. package/build-types/range-control/index.d.ts +54 -29
  304. package/build-types/range-control/index.d.ts.map +1 -1
  305. package/build-types/range-control/input-range.d.ts +7 -10
  306. package/build-types/range-control/input-range.d.ts.map +1 -1
  307. package/build-types/range-control/mark.d.ts +4 -7
  308. package/build-types/range-control/mark.d.ts.map +1 -1
  309. package/build-types/range-control/rail.d.ts +4 -9
  310. package/build-types/range-control/rail.d.ts.map +1 -1
  311. package/build-types/range-control/stories/index.d.ts +48 -0
  312. package/build-types/range-control/stories/index.d.ts.map +1 -0
  313. package/build-types/range-control/styles/range-control-styles.d.ts +32 -40
  314. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  315. package/build-types/range-control/test/index.d.ts +2 -0
  316. package/build-types/range-control/test/index.d.ts.map +1 -0
  317. package/build-types/range-control/tooltip.d.ts +4 -11
  318. package/build-types/range-control/tooltip.d.ts.map +1 -1
  319. package/build-types/range-control/types.d.ts +302 -0
  320. package/build-types/range-control/types.d.ts.map +1 -0
  321. package/build-types/range-control/utils.d.ts +15 -33
  322. package/build-types/range-control/utils.d.ts.map +1 -1
  323. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  324. package/build-types/scrollable/component.d.ts +3 -3
  325. package/build-types/scrollable/component.d.ts.map +1 -1
  326. package/build-types/scrollable/hook.d.ts +5 -2
  327. package/build-types/scrollable/hook.d.ts.map +1 -1
  328. package/build-types/scrollable/index.d.ts +2 -2
  329. package/build-types/scrollable/index.d.ts.map +1 -1
  330. package/build-types/scrollable/stories/index.d.ts +9 -0
  331. package/build-types/scrollable/stories/index.d.ts.map +1 -0
  332. package/build-types/scrollable/styles.d.ts +7 -7
  333. package/build-types/scrollable/styles.d.ts.map +1 -1
  334. package/build-types/scrollable/test/index.d.ts +2 -0
  335. package/build-types/scrollable/test/index.d.ts.map +1 -0
  336. package/build-types/scrollable/types.d.ts +9 -6
  337. package/build-types/scrollable/types.d.ts.map +1 -1
  338. package/build-types/shortcut/index.d.ts.map +1 -1
  339. package/build-types/slot-fill/provider.d.ts.map +1 -1
  340. package/build-types/slot-fill/slot.d.ts.map +1 -1
  341. package/build-types/spacer/component.d.ts +2 -2
  342. package/build-types/spacer/component.d.ts.map +1 -1
  343. package/build-types/spacer/hook.d.ts +2 -2
  344. package/build-types/spacer/hook.d.ts.map +1 -1
  345. package/build-types/spacer/index.d.ts +1 -1
  346. package/build-types/spacer/index.d.ts.map +1 -1
  347. package/build-types/spacer/test/index.d.ts +2 -0
  348. package/build-types/spacer/test/index.d.ts.map +1 -0
  349. package/build-types/spacer/types.d.ts +41 -29
  350. package/build-types/spacer/types.d.ts.map +1 -1
  351. package/build-types/text-highlight/index.d.ts +23 -0
  352. package/build-types/text-highlight/index.d.ts.map +1 -0
  353. package/build-types/text-highlight/stories/index.d.ts +12 -0
  354. package/build-types/text-highlight/stories/index.d.ts.map +1 -0
  355. package/build-types/text-highlight/test/index.d.ts +2 -0
  356. package/build-types/text-highlight/test/index.d.ts.map +1 -0
  357. package/build-types/text-highlight/types.d.ts +17 -0
  358. package/build-types/text-highlight/types.d.ts.map +1 -0
  359. package/build-types/tip/index.d.ts +5 -14
  360. package/build-types/tip/index.d.ts.map +1 -1
  361. package/build-types/tip/stories/index.d.ts +12 -0
  362. package/build-types/tip/stories/index.d.ts.map +1 -0
  363. package/build-types/tip/types.d.ts +11 -0
  364. package/build-types/tip/types.d.ts.map +1 -0
  365. package/build-types/ui/form-group/form-group.d.ts +1 -1
  366. package/build-types/ui/form-group/types.d.ts +1 -1
  367. package/build-types/ui/form-group/types.d.ts.map +1 -1
  368. package/build-types/ui/form-group/use-form-group.d.ts +3 -3
  369. package/build-types/ui/utils/get-valid-children.d.ts +2 -2
  370. package/build-types/ui/utils/get-valid-children.d.ts.map +1 -1
  371. package/build-types/visually-hidden/component.d.ts +8 -10
  372. package/build-types/visually-hidden/component.d.ts.map +1 -1
  373. package/build-types/visually-hidden/index.d.ts +1 -1
  374. package/build-types/visually-hidden/index.d.ts.map +1 -1
  375. package/build-types/visually-hidden/stories/index.d.ts +14 -0
  376. package/build-types/visually-hidden/stories/index.d.ts.map +1 -0
  377. package/build-types/visually-hidden/styles.d.ts +5 -2
  378. package/build-types/visually-hidden/styles.d.ts.map +1 -1
  379. package/build-types/visually-hidden/test/index.d.ts +2 -0
  380. package/build-types/visually-hidden/test/index.d.ts.map +1 -0
  381. package/build-types/visually-hidden/types.d.ts +11 -0
  382. package/build-types/visually-hidden/types.d.ts.map +1 -0
  383. package/package.json +17 -17
  384. package/src/autocomplete/get-default-use-items.js +3 -2
  385. package/src/autocomplete/index.js +3 -2
  386. package/src/border-control/border-control/hook.ts +1 -1
  387. package/src/box-control/index.js +1 -1
  388. package/src/button/README.md +1 -1
  389. package/src/color-picker/hex-input.tsx +3 -2
  390. package/src/color-picker/index.native.js +20 -27
  391. package/src/color-picker/input-with-slider.tsx +2 -0
  392. package/src/color-picker/styles.ts +0 -5
  393. package/src/color-picker/use-deprecated-props.ts +24 -43
  394. package/src/combobox-control/index.js +15 -7
  395. package/src/combobox-control/stories/index.js +3 -2
  396. package/src/combobox-control/style.scss +1 -1
  397. package/src/combobox-control/styles.ts +27 -0
  398. package/src/dropdown-menu/index.js +3 -4
  399. package/src/dropdown-menu/index.native.js +3 -5
  400. package/src/elevation/hook.js +3 -3
  401. package/src/external-link/index.tsx +10 -4
  402. package/src/focal-point-picker/grid.js +2 -5
  403. package/src/focal-point-picker/index.native.js +8 -8
  404. package/src/focal-point-picker/tooltip/index.native.js +10 -11
  405. package/src/form-token-field/index.tsx +45 -24
  406. package/src/form-token-field/style.scss +2 -7
  407. package/src/form-token-field/styles.ts +32 -0
  408. package/src/form-token-field/suggestions-list.tsx +2 -4
  409. package/src/form-token-field/types.ts +7 -0
  410. package/src/grid/README.md +33 -19
  411. package/src/grid/{component.js → component.tsx} +13 -9
  412. package/src/grid/{hook.js → hook.ts} +5 -5
  413. package/src/grid/{index.js → index.ts} +0 -0
  414. package/src/grid/stories/index.tsx +72 -0
  415. package/src/grid/test/{grid.js → grid.tsx} +4 -4
  416. package/src/grid/types.ts +16 -17
  417. package/src/grid/{utils.js → utils.ts} +9 -7
  418. package/src/guide/style.scss +1 -0
  419. package/src/h-stack/{component.js → component.tsx} +8 -8
  420. package/src/h-stack/{hook.js → hook.tsx} +21 -16
  421. package/src/h-stack/{index.js → index.ts} +0 -0
  422. package/src/h-stack/stories/index.tsx +92 -0
  423. package/src/h-stack/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  424. package/src/h-stack/test/{index.js → index.tsx} +0 -0
  425. package/src/h-stack/{utils.js → utils.ts} +14 -14
  426. package/src/higher-order/navigate-regions/README.md +4 -1
  427. package/src/icon/index.tsx +1 -1
  428. package/src/menu-item/index.js +1 -2
  429. package/src/mobile/focal-point-settings-panel/index.native.js +2 -2
  430. package/src/mobile/image/index.native.js +3 -2
  431. package/src/modal/index.js +21 -2
  432. package/src/modal/stories/index.js +17 -1
  433. package/src/modal/style.scss +9 -18
  434. package/src/navigation/index.js +3 -0
  435. package/src/navigation/item/base.js +2 -1
  436. package/src/popover/README.md +2 -2
  437. package/src/popover/index.js +7 -4
  438. package/src/range-control/README.md +107 -79
  439. package/src/range-control/{index.js → index.tsx} +78 -48
  440. package/src/range-control/{input-range.js → input-range.tsx} +11 -7
  441. package/src/range-control/{mark.js → mark.tsx} +15 -9
  442. package/src/range-control/{rail.js → rail.tsx} +40 -23
  443. package/src/range-control/stories/index.tsx +244 -0
  444. package/src/range-control/styles/{range-control-styles.js → range-control-styles.ts} +28 -24
  445. package/src/range-control/test/index.tsx +311 -0
  446. package/src/range-control/{tooltip.js → tooltip.tsx} +19 -14
  447. package/src/range-control/types.ts +326 -0
  448. package/src/range-control/utils.ts +132 -0
  449. package/src/resizable-box/resize-tooltip/utils.ts +2 -3
  450. package/src/scrollable/README.md +14 -8
  451. package/src/scrollable/{component.js → component.tsx} +13 -10
  452. package/src/scrollable/{hook.js → hook.ts} +5 -7
  453. package/src/scrollable/{index.js → index.ts} +0 -0
  454. package/src/scrollable/stories/{index.js → index.tsx} +29 -34
  455. package/src/scrollable/{styles.js → styles.ts} +0 -0
  456. package/src/scrollable/test/__snapshots__/{index.js.snap → index.tsx.snap} +1 -0
  457. package/src/scrollable/test/index.tsx +34 -0
  458. package/src/scrollable/types.ts +10 -5
  459. package/src/select-control/test/select-control.tsx +22 -15
  460. package/src/shortcut/index.js +2 -7
  461. package/src/slot-fill/index.native.js +2 -7
  462. package/src/slot-fill/provider.js +3 -7
  463. package/src/slot-fill/slot.js +21 -24
  464. package/src/spacer/README.md +43 -37
  465. package/src/spacer/component.tsx +2 -2
  466. package/src/spacer/hook.ts +4 -2
  467. package/src/spacer/index.ts +1 -1
  468. package/src/spacer/test/__snapshots__/{index.js.snap → index.tsx.snap} +1 -0
  469. package/src/spacer/test/index.tsx +149 -0
  470. package/src/spacer/types.ts +41 -29
  471. package/src/tab-panel/README.md +1 -1
  472. package/src/text-highlight/README.md +6 -6
  473. package/src/text-highlight/index.tsx +49 -0
  474. package/src/text-highlight/stories/index.tsx +33 -0
  475. package/src/text-highlight/test/index.tsx +93 -0
  476. package/src/text-highlight/types.ts +16 -0
  477. package/src/tip/index.tsx +22 -0
  478. package/src/tip/stories/index.tsx +33 -0
  479. package/src/tip/types.ts +11 -0
  480. package/src/toolbar-group/index.js +1 -2
  481. package/src/tree-select/index.tsx +3 -3
  482. package/src/ui/form-group/types.ts +1 -1
  483. package/src/ui/utils/get-valid-children.ts +4 -2
  484. package/src/visually-hidden/{component.js → component.tsx} +23 -15
  485. package/src/visually-hidden/{index.js → index.ts} +0 -0
  486. package/src/visually-hidden/stories/index.tsx +66 -0
  487. package/src/visually-hidden/{styles.js → styles.ts} +6 -2
  488. package/src/visually-hidden/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  489. package/src/visually-hidden/test/index.tsx +17 -0
  490. package/src/visually-hidden/types.ts +11 -0
  491. package/tsconfig.json +1 -0
  492. package/tsconfig.tsbuildinfo +1 -1
  493. package/src/grid/stories/index.js +0 -49
  494. package/src/h-stack/stories/index.js +0 -22
  495. package/src/range-control/stories/index.js +0 -180
  496. package/src/range-control/test/index.js +0 -320
  497. package/src/range-control/utils.js +0 -131
  498. package/src/scrollable/test/index.js +0 -31
  499. package/src/spacer/test/index.js +0 -146
  500. package/src/text-highlight/index.js +0 -28
  501. package/src/text-highlight/stories/index.js +0 -28
  502. package/src/text-highlight/test/index.js +0 -120
  503. package/src/tip/index.js +0 -24
  504. package/src/tip/stories/index.js +0 -26
  505. package/src/visually-hidden/stories/index.js +0 -42
  506. package/src/visually-hidden/test/index.js +0 -19
package/src/grid/types.ts CHANGED
@@ -1,9 +1,12 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { CSSProperties } from 'react';
4
+ import type { CSSProperties, ReactNode } from 'react';
5
5
 
6
- type ResponsiveCSSValue< T > = Array< T | undefined > | T;
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import type { ResponsiveCSSValue } from '../ui/utils/types';
7
10
 
8
11
  type GridAlignment =
9
12
  | 'bottom'
@@ -18,11 +21,7 @@ type GridAlignment =
18
21
  | 'topLeft'
19
22
  | 'topRight';
20
23
 
21
- type GridColumns = ResponsiveCSSValue< number >;
22
-
23
- type GridRows = ResponsiveCSSValue< number >;
24
-
25
- export type Props = {
24
+ export type GridProps = {
26
25
  /**
27
26
  * Adjusts the block alignment of children.
28
27
  */
@@ -31,26 +30,30 @@ export type Props = {
31
30
  * Adjusts the horizontal and vertical alignment of children.
32
31
  */
33
32
  alignment?: GridAlignment;
33
+ /**
34
+ * The children elements.
35
+ */
36
+ children: ReactNode;
34
37
  /**
35
38
  * Adjusts the number of columns of the `Grid`.
36
39
  *
37
40
  * @default 2
38
41
  */
39
- columns?: GridColumns;
42
+ columns?: ResponsiveCSSValue< number >;
40
43
  /**
41
44
  * Adjusts the `grid-column-gap`.
42
45
  */
43
46
  columnGap?: CSSProperties[ 'gridColumnGap' ];
44
- /**
45
- * Changes the CSS display from `grid` to `inline-grid`.
46
- */
47
- isInline?: boolean;
48
47
  /**
49
48
  * Gap between each child.
50
49
  *
51
50
  * @default 3
52
51
  */
53
52
  gap?: number;
53
+ /**
54
+ * Changes the CSS display from `grid` to `inline-grid`.
55
+ */
56
+ isInline?: boolean;
54
57
  /**
55
58
  * Adjusts the inline alignment of children.
56
59
  */
@@ -62,7 +65,7 @@ export type Props = {
62
65
  /**
63
66
  * Adjusts the number of rows of the `Grid`.
64
67
  */
65
- rows?: GridRows;
68
+ rows?: ResponsiveCSSValue< number >;
66
69
  /**
67
70
  * Adjusts the CSS grid `template-columns`.
68
71
  */
@@ -71,8 +74,4 @@ export type Props = {
71
74
  * Adjusts the CSS grid `template-rows`.
72
75
  */
73
76
  templateRows?: CSSProperties[ 'gridTemplateRows' ];
74
- /**
75
- * The children elements.
76
- */
77
- children: React.ReactNode;
78
77
  };
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { CSSProperties } from 'react';
5
+
1
6
  const ALIGNMENTS = {
2
7
  bottom: { alignItems: 'flex-end', justifyContent: 'center' },
3
8
  bottomLeft: { alignItems: 'flex-start', justifyContent: 'flex-end' },
@@ -12,14 +17,11 @@ const ALIGNMENTS = {
12
17
  topRight: { alignItems: 'flex-start', justifyContent: 'flex-end' },
13
18
  };
14
19
 
15
- /* eslint-disable jsdoc/valid-types */
16
- /**
17
- * @param {keyof typeof ALIGNMENTS | undefined} alignment
18
- * @return {{ alignItems?: import('react').CSSProperties['alignItems'], justifyContent?: import('react').CSSProperties['justifyContent']}} CSS props for alignment
19
- */
20
- export function getAlignmentProps( alignment ) {
20
+ export function getAlignmentProps( alignment?: keyof typeof ALIGNMENTS ): {
21
+ alignItems?: CSSProperties[ 'alignItems' ];
22
+ justifyContent?: CSSProperties[ 'justifyContent' ];
23
+ } {
21
24
  const alignmentProps = alignment ? ALIGNMENTS[ alignment ] : {};
22
25
 
23
26
  return alignmentProps;
24
27
  }
25
- /* eslint-enable jsdoc/valid-types */
@@ -20,6 +20,7 @@
20
20
  border-bottom: none;
21
21
  padding: 0;
22
22
  position: sticky;
23
+ height: $header-height;
23
24
 
24
25
  .components-button {
25
26
  align-self: flex-start;
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
- import { contextConnect } from '../ui/context';
4
+ import { contextConnect, WordPressComponentProps } from '../ui/context';
5
5
  import { View } from '../view';
6
6
  import { useHStack } from './hook';
7
+ import type { Props } from './types';
7
8
 
8
- /**
9
- * @param {import('../ui/context').WordPressComponentProps<import('./types').Props, 'div'>} props
10
- * @param {import('react').ForwardedRef<any>} forwardedRef
11
- */
12
- function HStack( props, forwardedRef ) {
9
+ function UnconnectedHStack(
10
+ props: WordPressComponentProps< Props, 'div' >,
11
+ forwardedRef: React.ForwardedRef< any >
12
+ ) {
13
13
  const hStackProps = useHStack( props );
14
14
 
15
15
  return <View { ...hStackProps } ref={ forwardedRef } />;
@@ -38,6 +38,6 @@ function HStack( props, forwardedRef ) {
38
38
  * }
39
39
  * ```
40
40
  */
41
- const ConnectedHStack = contextConnect( HStack, 'HStack' );
41
+ export const HStack = contextConnect( UnconnectedHStack, 'HStack' );
42
42
 
43
- export default ConnectedHStack;
43
+ export default HStack;
@@ -1,16 +1,22 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ReactElement } from 'react';
5
+
1
6
  /**
2
7
  * Internal dependencies
3
8
  */
4
- import { hasConnectNamespace, useContextSystem } from '../ui/context';
9
+ import {
10
+ hasConnectNamespace,
11
+ useContextSystem,
12
+ WordPressComponentProps,
13
+ } from '../ui/context';
5
14
  import { FlexItem, useFlex } from '../flex';
6
15
  import { getAlignmentProps } from './utils';
7
16
  import { getValidChildren } from '../ui/utils/get-valid-children';
17
+ import type { Props } from './types';
8
18
 
9
- /**
10
- *
11
- * @param {import('../ui/context').WordPressComponentProps<import('./types').Props, 'div'>} props
12
- */
13
- export function useHStack( props ) {
19
+ export function useHStack( props: WordPressComponentProps< Props, 'div' > ) {
14
20
  const {
15
21
  alignment = 'edge',
16
22
  children,
@@ -22,19 +28,18 @@ export function useHStack( props ) {
22
28
  const align = getAlignmentProps( alignment, direction );
23
29
 
24
30
  const validChildren = getValidChildren( children );
25
- const clonedChildren = validChildren.map(
26
- // @ts-ignore
27
- ( /** @type {import('react').ReactElement} */ child, index ) => {
28
- const _key = child.key || `hstack-${ index }`;
29
- const _isSpacer = hasConnectNamespace( child, [ 'Spacer' ] );
31
+ const clonedChildren = validChildren.map( ( child, index ) => {
32
+ const _isSpacer = hasConnectNamespace( child, [ 'Spacer' ] );
30
33
 
31
- if ( _isSpacer ) {
32
- return <FlexItem isBlock key={ _key } { ...child.props } />;
33
- }
34
+ if ( _isSpacer ) {
35
+ const childElement = child as ReactElement;
36
+ const _key = childElement.key || `hstack-${ index }`;
34
37
 
35
- return child;
38
+ return <FlexItem isBlock key={ _key } { ...childElement.props } />;
36
39
  }
37
- );
40
+
41
+ return child;
42
+ } );
38
43
 
39
44
  const propsForFlex = {
40
45
  children: clonedChildren,
File without changes
@@ -0,0 +1,92 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ComponentStory, ComponentMeta } from '@storybook/react';
5
+ /**
6
+ * Internal dependencies
7
+ */
8
+ import { View } from '../../view';
9
+ import { HStack } from '..';
10
+
11
+ const ALIGNMENTS = {
12
+ top: 'top',
13
+ topLeft: 'topLeft',
14
+ topRight: 'topRight',
15
+ left: 'left',
16
+ center: 'center',
17
+ right: 'right',
18
+ bottom: 'bottom',
19
+ bottomLeft: 'bottomLeft',
20
+ bottomRight: 'bottomRight',
21
+ edge: 'edge',
22
+ stretch: 'stretch',
23
+ };
24
+
25
+ const DIRECTIONS = {
26
+ row: 'row',
27
+ column: 'column',
28
+ responsive: [ 'column', 'row' ],
29
+ };
30
+
31
+ const JUSTIFICATIONS = {
32
+ 'space-around': 'space-around',
33
+ 'space-between': 'space-between',
34
+ 'space-evenly': 'space-evenly',
35
+ stretch: 'stretch',
36
+ center: 'center',
37
+ end: 'end',
38
+ 'flex-end': 'flex-end',
39
+ 'flex-start': 'flex-start',
40
+ start: 'start',
41
+ };
42
+
43
+ const meta: ComponentMeta< typeof HStack > = {
44
+ component: HStack,
45
+ title: 'Components (Experimental)/HStack',
46
+ argTypes: {
47
+ as: {
48
+ control: { type: null },
49
+ },
50
+ children: {
51
+ control: { type: null },
52
+ },
53
+ alignment: {
54
+ control: { type: 'select' },
55
+ options: Object.keys( ALIGNMENTS ),
56
+ mapping: ALIGNMENTS,
57
+ },
58
+ direction: {
59
+ control: { type: 'select' },
60
+ options: Object.keys( DIRECTIONS ),
61
+ mapping: DIRECTIONS,
62
+ },
63
+ justify: {
64
+ control: { type: 'select' },
65
+ options: Object.keys( JUSTIFICATIONS ),
66
+ mapping: JUSTIFICATIONS,
67
+ },
68
+ spacing: {
69
+ control: { type: 'text' },
70
+ },
71
+ },
72
+ parameters: {
73
+ controls: { expanded: true },
74
+ docs: { source: { state: 'open' } },
75
+ },
76
+ };
77
+ export default meta;
78
+
79
+ const Template: ComponentStory< typeof HStack > = ( args ) => (
80
+ <HStack { ...args } style={ { background: '#eee', minHeight: '3rem' } }>
81
+ { [ 'One', 'Two', 'Three', 'Four', 'Five' ].map( ( text ) => (
82
+ <View key={ text } style={ { background: '#b9f9ff' } }>
83
+ { text }
84
+ </View>
85
+ ) ) }
86
+ </HStack>
87
+ );
88
+
89
+ export const Default: ComponentStory< typeof HStack > = Template.bind( {} );
90
+ Default.args = {
91
+ spacing: '3',
92
+ };
File without changes
@@ -1,10 +1,15 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { CSSProperties } from 'react';
1
5
  /**
2
6
  * Internal dependencies
3
7
  */
8
+ import type { FlexDirection } from '../flex/types';
9
+ import type { HStackAlignment, AlignmentProps, Alignments } from './types';
4
10
  import { isValueDefined } from '../utils/values';
5
11
 
6
- /** @type {import('./types').Alignments} */
7
- const ALIGNMENTS = {
12
+ const H_ALIGNMENTS: Alignments = {
8
13
  bottom: { align: 'flex-end', justify: 'center' },
9
14
  bottomLeft: { align: 'flex-start', justify: 'flex-end' },
10
15
  bottomRight: { align: 'flex-end', justify: 'flex-end' },
@@ -18,8 +23,7 @@ const ALIGNMENTS = {
18
23
  topRight: { align: 'flex-start', justify: 'flex-end' },
19
24
  };
20
25
 
21
- /** @type {import('./types').Alignments} */
22
- const V_ALIGNMENTS = {
26
+ const V_ALIGNMENTS: Alignments = {
23
27
  bottom: { justify: 'flex-end', align: 'center' },
24
28
  bottomLeft: { justify: 'flex-start', align: 'flex-end' },
25
29
  bottomRight: { justify: 'flex-end', align: 'flex-end' },
@@ -33,23 +37,19 @@ const V_ALIGNMENTS = {
33
37
  topRight: { justify: 'flex-start', align: 'flex-end' },
34
38
  };
35
39
 
36
- /* eslint-disable jsdoc/valid-types */
37
- /**
38
- * @param {import('./types').HStackAlignment | import('react').CSSProperties[ 'alignItems' ]} alignment Where to align.
39
- * @param {import('../flex/types').FlexDirection} [direction='row'] Direction to align.
40
- * @return {import('./types').AlignmentProps} Alignment props.
41
- */
42
- /* eslint-enable jsdoc/valid-types */
43
- export function getAlignmentProps( alignment, direction = 'row' ) {
40
+ export function getAlignmentProps(
41
+ alignment: HStackAlignment | CSSProperties[ 'alignItems' ],
42
+ direction: FlexDirection = 'row'
43
+ ): AlignmentProps {
44
44
  if ( ! isValueDefined( alignment ) ) {
45
45
  return {};
46
46
  }
47
47
  const isVertical = direction === 'column';
48
- const props = isVertical ? V_ALIGNMENTS : ALIGNMENTS;
48
+ const props = isVertical ? V_ALIGNMENTS : H_ALIGNMENTS;
49
49
 
50
50
  const alignmentProps =
51
51
  alignment in props
52
- ? props[ /** @type {keyof typeof ALIGNMENTS} */ ( alignment ) ]
52
+ ? props[ alignment as keyof typeof props ]
53
53
  : { align: alignment };
54
54
 
55
55
  return alignmentProps;
@@ -1,6 +1,6 @@
1
1
  # navigateRegions
2
2
 
3
- `navigateRegions` is a React [higher-order component](https://facebook.github.io/react/docs/higher-order-components.html) adding keyboard navigation to switch between the different DOM elements marked as "regions" (role="region"). These regions should be focusable (By adding a tabIndex attribute for example). For better accessibility, these elements must be properly labelled to briefly describe the purpose of the content in the region. For more details, see "ARIA landmarks" in the [WAI-ARIA specification](https://www.w3.org/TR/wai-aria/).
3
+ `navigateRegions` is a React [higher-order component](https://facebook.github.io/react/docs/higher-order-components.html) adding keyboard navigation to switch between the different DOM elements marked as "regions" (role="region"). These regions should be focusable (By adding a tabIndex attribute for example). For better accessibility, these elements must be properly labelled to briefly describe the purpose of the content in the region. For more details, see "Landmark Roles" in the [WAI-ARIA specification](https://www.w3.org/TR/wai-aria/) and "Landmark Regions" in the [ARIA Authoring Practices Guide](https://www.w3.org/WAI/ARIA/apg/practices/landmark-regions/).
4
4
 
5
5
  ## Example:
6
6
 
@@ -21,3 +21,6 @@ const MyComponentWithNavigateRegions = navigateRegions( () => (
21
21
  </div>
22
22
  ) );
23
23
  ```
24
+
25
+ ## Notes:
26
+ It's important to note that an ARIA `role="region"` is an ARIA landmark role. It should be reserved for sections of content sufficiently important to have it listed in a summary of the page. Only use this ARIA role for the main sections of a page. All perceivable content should reside in a semantically meaningful landmark in order that content is not missed by the user.
@@ -20,7 +20,7 @@ import { SVG } from '@wordpress/primitives';
20
20
  import Dashicon from '../dashicon';
21
21
  import type { IconKey as DashiconIconKey } from '../dashicon/types';
22
22
 
23
- type IconType< P > = DashiconIconKey | ComponentType< P > | JSX.Element;
23
+ export type IconType< P > = DashiconIconKey | ComponentType< P > | JSX.Element;
24
24
 
25
25
  interface BaseProps< P > {
26
26
  /**
@@ -3,7 +3,6 @@
3
3
  * External dependencies
4
4
  */
5
5
  import classnames from 'classnames';
6
- import { isString } from 'lodash';
7
6
 
8
7
  /**
9
8
  * WordPress dependencies
@@ -41,7 +40,7 @@ export function MenuItem( props, ref ) {
41
40
  );
42
41
  }
43
42
 
44
- if ( icon && ! isString( icon ) ) {
43
+ if ( icon && typeof icon !== 'string' ) {
45
44
  icon = cloneElement( icon, {
46
45
  className: classnames( 'components-menu-items__item-icon', {
47
46
  'has-icon-right': iconPosition === 'right',
@@ -8,7 +8,7 @@ import { useRoute, useNavigation } from '@react-navigation/native';
8
8
  * WordPress dependencies
9
9
  */
10
10
  import { __ } from '@wordpress/i18n';
11
- import { memo, useContext, useState } from '@wordpress/element';
11
+ import { memo, useContext, useState, useCallback } from '@wordpress/element';
12
12
  import { BottomSheetContext, FocalPointPicker } from '@wordpress/components';
13
13
 
14
14
  /**
@@ -56,7 +56,7 @@ const FocalPointSettingsPanelMemo = memo(
56
56
  </NavBar>
57
57
  <FocalPointPicker
58
58
  focalPoint={ draftFocalPoint }
59
- onChange={ setPosition }
59
+ onChange={ useCallback( setPosition, [] ) }
60
60
  shouldEnableBottomSheetScroll={
61
61
  shouldEnableBottomSheetScroll
62
62
  }
@@ -2,6 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { Image, Text, View } from 'react-native';
5
+ import FastImage from 'react-native-fast-image';
5
6
 
6
7
  /**
7
8
  * WordPress dependencies
@@ -210,7 +211,7 @@ const ImageComponent = ( {
210
211
  </View>
211
212
  ) : (
212
213
  <View style={ focalPoint && styles.focalPointContent }>
213
- <Image
214
+ <FastImage
214
215
  { ...( ! resizeMode && {
215
216
  aspectRatio: imageData?.aspectRatio,
216
217
  } ) }
@@ -219,7 +220,7 @@ const ImageComponent = ( {
219
220
  { ...( ! focalPoint && {
220
221
  resizeMethod: 'scale',
221
222
  } ) }
222
- resizeMode={ resizeMode }
223
+ resizeMode={ FastImage.resizeMode[ resizeMode ] }
223
224
  />
224
225
  </View>
225
226
  ) }
@@ -10,8 +10,10 @@ import classnames from 'classnames';
10
10
  */
11
11
  import {
12
12
  createPortal,
13
+ useCallback,
13
14
  useEffect,
14
15
  useRef,
16
+ useState,
15
17
  forwardRef,
16
18
  } from '@wordpress/element';
17
19
  import {
@@ -24,7 +26,7 @@ import {
24
26
  } from '@wordpress/compose';
25
27
  import { ESCAPE } from '@wordpress/keycodes';
26
28
  import { __ } from '@wordpress/i18n';
27
- import { closeSmall } from '@wordpress/icons';
29
+ import { close } from '@wordpress/icons';
28
30
 
29
31
  /**
30
32
  * Internal dependencies
@@ -73,6 +75,8 @@ function Modal( props, forwardedRef ) {
73
75
  const focusReturnRef = useFocusReturn();
74
76
  const focusOutsideProps = useFocusOutside( onRequestClose );
75
77
 
78
+ const [ hasScrolledContent, setHasScrolledContent ] = useState( false );
79
+
76
80
  useEffect( () => {
77
81
  openModalCount++;
78
82
 
@@ -104,6 +108,19 @@ function Modal( props, forwardedRef ) {
104
108
  }
105
109
  }
106
110
 
111
+ const onContentContainerScroll = useCallback(
112
+ ( e ) => {
113
+ const scrollY = e?.target?.scrollTop ?? -1;
114
+
115
+ if ( ! hasScrolledContent && scrollY > 0 ) {
116
+ setHasScrolledContent( true );
117
+ } else if ( hasScrolledContent && scrollY <= 0 ) {
118
+ setHasScrolledContent( false );
119
+ }
120
+ },
121
+ [ hasScrolledContent ]
122
+ );
123
+
107
124
  return createPortal(
108
125
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
109
126
  <div
@@ -142,8 +159,10 @@ function Modal( props, forwardedRef ) {
142
159
  <div
143
160
  className={ classnames( 'components-modal__content', {
144
161
  'hide-header': __experimentalHideHeader,
162
+ 'has-scrolled-content': hasScrolledContent,
145
163
  } ) }
146
164
  role="document"
165
+ onScroll={ onContentContainerScroll }
147
166
  >
148
167
  { ! __experimentalHideHeader && (
149
168
  <div className="components-modal__header">
@@ -168,7 +187,7 @@ function Modal( props, forwardedRef ) {
168
187
  { isDismissible && (
169
188
  <Button
170
189
  onClick={ onRequestClose }
171
- icon={ closeSmall }
190
+ icon={ close }
172
191
  label={
173
192
  closeButtonLabel ||
174
193
  __( 'Close dialog' )
@@ -35,7 +35,23 @@ const ModalExample = ( props ) => {
35
35
  Open Modal
36
36
  </Button>
37
37
  { isOpen && (
38
- <Modal { ...props } onRequestClose={ closeModal }>
38
+ <Modal
39
+ { ...props }
40
+ onRequestClose={ closeModal }
41
+ style={ { maxWidth: '600px' } }
42
+ >
43
+ <p>
44
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit,
45
+ sed do eiusmod tempor incididunt ut labore et magna
46
+ aliqua. Ut enim ad minim veniam, quis nostrud
47
+ exercitation ullamco laboris nisi ut aliquip ex ea ea
48
+ commodo consequat. Duis aute irure dolor in
49
+ reprehenderit in voluptate velit esse cillum dolore eu
50
+ fugiat nulla pariatur. Excepteur sint occaecat cupidatat
51
+ non proident, sunt in culpa qui officia deserunt mollit
52
+ anim id est laborum.
53
+ </p>
54
+
39
55
  <Button variant="secondary" onClick={ closeModal }>
40
56
  Close Modal
41
57
  </Button>
@@ -8,6 +8,7 @@
8
8
  background-color: rgba($black, 0.35);
9
9
  z-index: z-index(".components-modal__screen-overlay");
10
10
  display: flex;
11
+ backdrop-filter: blur($grid-unit);
11
12
 
12
13
  // This animates the appearance of the white background.
13
14
  @include edit-post__fade-in-animation();
@@ -63,13 +64,13 @@
63
64
  // modal screen).
64
65
  .components-modal__header {
65
66
  box-sizing: border-box;
66
- border-bottom: $border-width solid $gray-300;
67
+ border-bottom: $border-width solid transparent;
67
68
  padding: 0 $grid-unit-40;
68
69
  display: flex;
69
70
  flex-direction: row;
70
71
  justify-content: space-between;
71
72
  align-items: center;
72
- height: $header-height;
73
+ height: $header-height + $grid-unit-20;
73
74
  width: 100%;
74
75
  z-index: z-index(".components-modal__header");
75
76
  position: absolute;
@@ -77,7 +78,7 @@
77
78
  left: 0;
78
79
 
79
80
  .components-modal__header-heading {
80
- font-size: 1rem;
81
+ font-size: 1.2rem;
81
82
  font-weight: 600;
82
83
  }
83
84
 
@@ -90,6 +91,10 @@
90
91
  position: relative;
91
92
  left: $grid-unit-10;
92
93
  }
94
+
95
+ .components-modal__content.has-scrolled-content:not(.hide-header) & {
96
+ border-bottom-color: $gray-300;
97
+ }
93
98
  }
94
99
 
95
100
  .components-modal__header-heading-container {
@@ -113,26 +118,12 @@
113
118
  // Modal contents.
114
119
  .components-modal__content {
115
120
  flex: 1;
116
- margin-top: $header-height;
121
+ margin-top: $header-height + $grid-unit-20;
117
122
  padding: 0 $grid-unit-40 $grid-unit-30;
118
123
  overflow: auto;
119
124
 
120
- // Emulate margin-bottom for the header. Uses a pseudo-element since the
121
- // absolutely positioned header’s margins wouldn’t effect siblings and
122
- // padding-top on the content element would effect positioning of any
123
- // sticky elements within.
124
- &::before {
125
- content: "";
126
- display: block;
127
- margin-bottom: $grid-unit-30;
128
- }
129
-
130
125
  &.hide-header {
131
126
  margin-top: 0;
132
127
  padding-top: $grid-unit-30;
133
-
134
- &::before {
135
- content: none;
136
- }
137
128
  }
138
129
  }
@@ -54,6 +54,9 @@ export default function Navigation( {
54
54
  if ( activeMenu !== menu ) {
55
55
  setActiveMenu( activeMenu );
56
56
  }
57
+ // Ignore exhaustive-deps here, as it would require either a larger refactor or some questionable workarounds.
58
+ // See https://github.com/WordPress/gutenberg/pull/41612 for context.
59
+ // eslint-disable-next-line react-hooks/exhaustive-deps
57
60
  }, [ activeMenu ] );
58
61
 
59
62
  const context = {
@@ -18,7 +18,8 @@ import { ItemBaseUI } from '../styles/navigation-styles';
18
18
  let uniqueId = 0;
19
19
 
20
20
  export default function NavigationItemBase( props ) {
21
- const { children, className, ...restProps } = props;
21
+ // Also avoid to pass the `title` and `href` props to the ItemBaseUI styled component.
22
+ const { children, className, title, href, ...restProps } = props;
22
23
 
23
24
  const [ itemId ] = useState( `item-${ ++uniqueId }` );
24
25
 
@@ -61,7 +61,7 @@ Set this prop to `false` to disable focus changing entirely. This should only be
61
61
 
62
62
  ### placement
63
63
 
64
- The direction in which the popover should open relative to its parent node or anchor node.
64
+ The direction in which the popover should open relative to its parent node or anchor node.
65
65
 
66
66
  The available base placements are 'top', 'right', 'bottom', 'left'.
67
67
 
@@ -137,7 +137,7 @@ A callback function which is used to override the anchor value computation algor
137
137
 
138
138
  If you need the `DOMRect` object i.e., the position of popover to be calculated on every time, the popover re-renders, then use `getAnchorRect`.
139
139
 
140
- `getAnchorRect` callback function receives a reference to the popover anchor element as a function parameter and it should return a `DOMRect` object.
140
+ `getAnchorRect` callback function receives a reference to the popover anchor element as a function parameter and it should return a `DOMRect` object. Noting that `getAnchorRect` can be called with `null`.
141
141
 
142
142
  - Type: `Function`
143
143
  - Required: No