@wordpress/components 25.13.0 → 25.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 (656) hide show
  1. package/CHANGELOG.md +88 -1
  2. package/CONTRIBUTING.md +57 -115
  3. package/LICENSE.md +1 -1
  4. package/build/base-control/index.js +17 -13
  5. package/build/base-control/index.js.map +1 -1
  6. package/build/border-box-control/border-box-control-linked-button/component.js +1 -1
  7. package/build/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  8. package/build/border-control/border-control-dropdown/component.js +4 -2
  9. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  10. package/build/border-control/border-control-dropdown/hook.js +3 -2
  11. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  12. package/build/border-control/border-control-style-picker/component.js +1 -1
  13. package/build/border-control/border-control-style-picker/component.js.map +1 -1
  14. package/build/border-control/styles.js +17 -17
  15. package/build/border-control/styles.js.map +1 -1
  16. package/build/box-control/index.js +1 -1
  17. package/build/box-control/index.js.map +1 -1
  18. package/build/box-control/linked-button.js +1 -1
  19. package/build/box-control/linked-button.js.map +1 -1
  20. package/build/button/index.js +1 -1
  21. package/build/button/index.js.map +1 -1
  22. package/build/checkbox-control/index.js +1 -1
  23. package/build/checkbox-control/index.js.map +1 -1
  24. package/build/checkbox-control/types.js.map +1 -1
  25. package/build/color-picker/color-copy-button.js +1 -1
  26. package/build/color-picker/color-copy-button.js.map +1 -1
  27. package/build/context/wordpress-component.js.map +1 -1
  28. package/build/custom-select-control-v2/index.js +11 -10
  29. package/build/custom-select-control-v2/index.js.map +1 -1
  30. package/build/date-time/date/styles.js +8 -8
  31. package/build/date-time/date/styles.js.map +1 -1
  32. package/build/date-time/time/timezone.js +11 -2
  33. package/build/date-time/time/timezone.js.map +1 -1
  34. package/build/dimension-control/index.js +2 -0
  35. package/build/dimension-control/index.js.map +1 -1
  36. package/build/dimension-control/types.js.map +1 -1
  37. package/build/dropdown-menu-v2/index.js +205 -159
  38. package/build/dropdown-menu-v2/index.js.map +1 -1
  39. package/build/dropdown-menu-v2/styles.js +86 -77
  40. package/build/dropdown-menu-v2/styles.js.map +1 -1
  41. package/build/dropdown-menu-v2/types.js.map +1 -1
  42. package/build/duotone-picker/duotone-picker.js +4 -3
  43. package/build/duotone-picker/duotone-picker.js.map +1 -1
  44. package/build/focal-point-picker/controls.js +5 -1
  45. package/build/focal-point-picker/controls.js.map +1 -1
  46. package/build/focal-point-picker/index.js +2 -0
  47. package/build/focal-point-picker/index.js.map +1 -1
  48. package/build/focal-point-picker/styles/focal-point-picker-style.js +15 -15
  49. package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  50. package/build/focal-point-picker/types.js.map +1 -1
  51. package/build/font-size-picker/font-size-picker-select.js +2 -0
  52. package/build/font-size-picker/font-size-picker-select.js.map +1 -1
  53. package/build/font-size-picker/font-size-picker-toggle-group.js +2 -0
  54. package/build/font-size-picker/font-size-picker-toggle-group.js.map +1 -1
  55. package/build/font-size-picker/index.js +10 -3
  56. package/build/font-size-picker/index.js.map +1 -1
  57. package/build/font-size-picker/index.native.js +6 -3
  58. package/build/font-size-picker/index.native.js.map +1 -1
  59. package/build/font-size-picker/types.js.map +1 -1
  60. package/build/form-token-field/index.js +10 -5
  61. package/build/form-token-field/index.js.map +1 -1
  62. package/build/form-token-field/token.js +1 -0
  63. package/build/form-token-field/token.js.map +1 -1
  64. package/build/gradient-picker/index.js +3 -2
  65. package/build/gradient-picker/index.js.map +1 -1
  66. package/build/index.native.js +20 -19
  67. package/build/index.native.js.map +1 -1
  68. package/build/input-control/styles/input-control-styles.js +32 -29
  69. package/build/input-control/styles/input-control-styles.js.map +1 -1
  70. package/build/input-control/types.js.map +1 -1
  71. package/build/lock-unlock.js +18 -0
  72. package/build/lock-unlock.js.map +1 -0
  73. package/build/mobile/bottom-sheet/index.native.js +8 -0
  74. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  75. package/build/mobile/global-styles-context/utils.native.js +39 -13
  76. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  77. package/build/mobile/image/constants.js +12 -0
  78. package/build/mobile/image/constants.js.map +1 -0
  79. package/build/mobile/image/index.native.js +26 -18
  80. package/build/mobile/image/index.native.js.map +1 -1
  81. package/build/mobile/keyboard-aware-flat-list/index.android.js +40 -8
  82. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  83. package/build/mobile/keyboard-aware-flat-list/index.ios.js +44 -68
  84. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  85. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +39 -0
  86. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js.map +1 -0
  87. package/build/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +22 -29
  88. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-section.native.js.map +1 -0
  89. package/build/mobile/keyboard-aware-flat-list/use-scroll.native.js +93 -0
  90. package/build/mobile/keyboard-aware-flat-list/use-scroll.native.js.map +1 -0
  91. package/build/mobile/utils/get-px-from-css-unit.native.js +302 -0
  92. package/build/mobile/utils/get-px-from-css-unit.native.js.map +1 -0
  93. package/build/modal/index.js +18 -13
  94. package/build/modal/index.js.map +1 -1
  95. package/build/navigation/menu/menu-title.js +1 -1
  96. package/build/navigation/menu/menu-title.js.map +1 -1
  97. package/build/navigator/navigator-provider/component.js +13 -15
  98. package/build/navigator/navigator-provider/component.js.map +1 -1
  99. package/build/navigator/navigator-screen/component.js +23 -63
  100. package/build/navigator/navigator-screen/component.js.map +1 -1
  101. package/build/navigator/styles.js +52 -0
  102. package/build/navigator/styles.js.map +1 -0
  103. package/build/number-control/index.js +4 -8
  104. package/build/number-control/index.js.map +1 -1
  105. package/build/number-control/types.js.map +1 -1
  106. package/build/palette-edit/index.js +15 -34
  107. package/build/palette-edit/index.js.map +1 -1
  108. package/build/private-apis.js +11 -26
  109. package/build/private-apis.js.map +1 -1
  110. package/build/private-apis.native.js +21 -0
  111. package/build/private-apis.native.js.map +1 -0
  112. package/build/query-controls/author-select.js +3 -1
  113. package/build/query-controls/author-select.js.map +1 -1
  114. package/build/query-controls/category-select.js +3 -1
  115. package/build/query-controls/category-select.js.map +1 -1
  116. package/build/query-controls/index.js +6 -1
  117. package/build/query-controls/index.js.map +1 -1
  118. package/build/query-controls/types.js.map +1 -1
  119. package/build/radio-control/index.js +1 -0
  120. package/build/radio-control/index.js.map +1 -1
  121. package/build/range-control/index.js +1 -1
  122. package/build/range-control/index.js.map +1 -1
  123. package/build/select-control/styles/select-control-styles.js +15 -25
  124. package/build/select-control/styles/select-control-styles.js.map +1 -1
  125. package/build/slot-fill/index.js +3 -2
  126. package/build/slot-fill/index.js.map +1 -1
  127. package/build/slot-fill/types.js.map +1 -1
  128. package/build/snackbar/types.js.map +1 -1
  129. package/build/tabs/index.js +18 -1
  130. package/build/tabs/index.js.map +1 -1
  131. package/build/tabs/styles.js +3 -3
  132. package/build/tabs/styles.js.map +1 -1
  133. package/build/tabs/tab.js +2 -2
  134. package/build/tabs/tab.js.map +1 -1
  135. package/build/tabs/tabpanel.js +11 -8
  136. package/build/tabs/tabpanel.js.map +1 -1
  137. package/build/tabs/types.js.map +1 -1
  138. package/build/toggle-group-control/toggle-group-control/component.js +4 -4
  139. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  140. package/build/toggle-group-control/toggle-group-control/styles.js +29 -15
  141. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  142. package/build/toggle-group-control/toggle-group-control/utils.js +17 -17
  143. package/build/toggle-group-control/toggle-group-control/utils.js.map +1 -1
  144. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  145. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  146. package/build/tools-panel/tools-panel/component.js +3 -1
  147. package/build/tools-panel/tools-panel/component.js.map +1 -1
  148. package/build/tools-panel/tools-panel-header/component.js +9 -8
  149. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  150. package/build/tools-panel/tools-panel-item/hook.js +11 -11
  151. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  152. package/build/tools-panel/types.js.map +1 -1
  153. package/build/tooltip/index.js +1 -1
  154. package/build/tooltip/index.js.map +1 -1
  155. package/build/truncate/hook.js +10 -4
  156. package/build/truncate/hook.js.map +1 -1
  157. package/build/truncate/types.js.map +1 -1
  158. package/build/unit-control/index.js +1 -1
  159. package/build/unit-control/index.js.map +1 -1
  160. package/build/utils/strings.js +34 -3
  161. package/build/utils/strings.js.map +1 -1
  162. package/build-module/base-control/index.js +16 -12
  163. package/build-module/base-control/index.js.map +1 -1
  164. package/build-module/border-box-control/border-box-control-linked-button/component.js +1 -1
  165. package/build-module/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  166. package/build-module/border-control/border-control-dropdown/component.js +4 -2
  167. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  168. package/build-module/border-control/border-control-dropdown/hook.js +3 -2
  169. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  170. package/build-module/border-control/border-control-style-picker/component.js +1 -1
  171. package/build-module/border-control/border-control-style-picker/component.js.map +1 -1
  172. package/build-module/border-control/styles.js +17 -17
  173. package/build-module/border-control/styles.js.map +1 -1
  174. package/build-module/box-control/index.js +1 -1
  175. package/build-module/box-control/index.js.map +1 -1
  176. package/build-module/box-control/linked-button.js +1 -1
  177. package/build-module/box-control/linked-button.js.map +1 -1
  178. package/build-module/button/index.js +1 -1
  179. package/build-module/button/index.js.map +1 -1
  180. package/build-module/checkbox-control/index.js +1 -1
  181. package/build-module/checkbox-control/index.js.map +1 -1
  182. package/build-module/checkbox-control/types.js.map +1 -1
  183. package/build-module/color-picker/color-copy-button.js +1 -1
  184. package/build-module/color-picker/color-copy-button.js.map +1 -1
  185. package/build-module/context/wordpress-component.js.map +1 -1
  186. package/build-module/custom-select-control-v2/index.js +11 -10
  187. package/build-module/custom-select-control-v2/index.js.map +1 -1
  188. package/build-module/date-time/date/styles.js +8 -8
  189. package/build-module/date-time/date/styles.js.map +1 -1
  190. package/build-module/date-time/time/timezone.js +11 -2
  191. package/build-module/date-time/time/timezone.js.map +1 -1
  192. package/build-module/dimension-control/index.js +2 -0
  193. package/build-module/dimension-control/index.js.map +1 -1
  194. package/build-module/dimension-control/types.js.map +1 -1
  195. package/build-module/dropdown-menu-v2/index.js +201 -154
  196. package/build-module/dropdown-menu-v2/index.js.map +1 -1
  197. package/build-module/dropdown-menu-v2/styles.js +68 -61
  198. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  199. package/build-module/dropdown-menu-v2/types.js.map +1 -1
  200. package/build-module/duotone-picker/duotone-picker.js +4 -3
  201. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  202. package/build-module/focal-point-picker/controls.js +5 -1
  203. package/build-module/focal-point-picker/controls.js.map +1 -1
  204. package/build-module/focal-point-picker/index.js +2 -0
  205. package/build-module/focal-point-picker/index.js.map +1 -1
  206. package/build-module/focal-point-picker/styles/focal-point-picker-style.js +15 -15
  207. package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  208. package/build-module/focal-point-picker/types.js.map +1 -1
  209. package/build-module/font-size-picker/font-size-picker-select.js +2 -0
  210. package/build-module/font-size-picker/font-size-picker-select.js.map +1 -1
  211. package/build-module/font-size-picker/font-size-picker-toggle-group.js +2 -0
  212. package/build-module/font-size-picker/font-size-picker-toggle-group.js.map +1 -1
  213. package/build-module/font-size-picker/index.js +10 -3
  214. package/build-module/font-size-picker/index.js.map +1 -1
  215. package/build-module/font-size-picker/index.native.js +5 -2
  216. package/build-module/font-size-picker/index.native.js.map +1 -1
  217. package/build-module/font-size-picker/types.js.map +1 -1
  218. package/build-module/form-token-field/index.js +10 -5
  219. package/build-module/form-token-field/index.js.map +1 -1
  220. package/build-module/form-token-field/token.js +1 -0
  221. package/build-module/form-token-field/token.js.map +1 -1
  222. package/build-module/gradient-picker/index.js +3 -2
  223. package/build-module/gradient-picker/index.js.map +1 -1
  224. package/build-module/index.native.js +6 -3
  225. package/build-module/index.native.js.map +1 -1
  226. package/build-module/input-control/styles/input-control-styles.js +31 -29
  227. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  228. package/build-module/input-control/types.js.map +1 -1
  229. package/build-module/lock-unlock.js +9 -0
  230. package/build-module/lock-unlock.js.map +1 -0
  231. package/build-module/mobile/bottom-sheet/index.native.js +9 -1
  232. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  233. package/build-module/mobile/global-styles-context/utils.native.js +38 -13
  234. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  235. package/build-module/mobile/image/constants.js +5 -0
  236. package/build-module/mobile/image/constants.js.map +1 -0
  237. package/build-module/mobile/image/index.native.js +25 -16
  238. package/build-module/mobile/image/index.native.js.map +1 -1
  239. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +40 -6
  240. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  241. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +46 -68
  242. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  243. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +33 -0
  244. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js.map +1 -0
  245. package/build-module/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +21 -27
  246. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-section.native.js.map +1 -0
  247. package/build-module/mobile/keyboard-aware-flat-list/use-scroll.native.js +86 -0
  248. package/build-module/mobile/keyboard-aware-flat-list/use-scroll.native.js.map +1 -0
  249. package/build-module/mobile/utils/get-px-from-css-unit.native.js +294 -0
  250. package/build-module/mobile/utils/get-px-from-css-unit.native.js.map +1 -0
  251. package/build-module/modal/index.js +18 -13
  252. package/build-module/modal/index.js.map +1 -1
  253. package/build-module/navigation/menu/menu-title.js +1 -1
  254. package/build-module/navigation/menu/menu-title.js.map +1 -1
  255. package/build-module/navigator/navigator-provider/component.js +3 -16
  256. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  257. package/build-module/navigator/navigator-screen/component.js +16 -70
  258. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  259. package/build-module/navigator/styles.js +47 -0
  260. package/build-module/navigator/styles.js.map +1 -0
  261. package/build-module/number-control/index.js +4 -8
  262. package/build-module/number-control/index.js.map +1 -1
  263. package/build-module/number-control/types.js.map +1 -1
  264. package/build-module/palette-edit/index.js +14 -33
  265. package/build-module/palette-edit/index.js.map +1 -1
  266. package/build-module/private-apis.js +10 -23
  267. package/build-module/private-apis.js.map +1 -1
  268. package/build-module/private-apis.native.js +14 -0
  269. package/build-module/private-apis.native.js.map +1 -0
  270. package/build-module/query-controls/author-select.js +3 -1
  271. package/build-module/query-controls/author-select.js.map +1 -1
  272. package/build-module/query-controls/category-select.js +3 -1
  273. package/build-module/query-controls/category-select.js.map +1 -1
  274. package/build-module/query-controls/index.js +6 -1
  275. package/build-module/query-controls/index.js.map +1 -1
  276. package/build-module/query-controls/types.js.map +1 -1
  277. package/build-module/radio-control/index.js +1 -0
  278. package/build-module/radio-control/index.js.map +1 -1
  279. package/build-module/range-control/index.js +1 -1
  280. package/build-module/range-control/index.js.map +1 -1
  281. package/build-module/select-control/styles/select-control-styles.js +15 -25
  282. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  283. package/build-module/slot-fill/index.js +3 -2
  284. package/build-module/slot-fill/index.js.map +1 -1
  285. package/build-module/slot-fill/types.js.map +1 -1
  286. package/build-module/snackbar/types.js.map +1 -1
  287. package/build-module/tabs/index.js +18 -1
  288. package/build-module/tabs/index.js.map +1 -1
  289. package/build-module/tabs/styles.js +3 -3
  290. package/build-module/tabs/styles.js.map +1 -1
  291. package/build-module/tabs/tab.js +2 -2
  292. package/build-module/tabs/tab.js.map +1 -1
  293. package/build-module/tabs/tabpanel.js +11 -8
  294. package/build-module/tabs/tabpanel.js.map +1 -1
  295. package/build-module/tabs/types.js.map +1 -1
  296. package/build-module/toggle-group-control/toggle-group-control/component.js +4 -4
  297. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  298. package/build-module/toggle-group-control/toggle-group-control/styles.js +29 -15
  299. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  300. package/build-module/toggle-group-control/toggle-group-control/utils.js +17 -17
  301. package/build-module/toggle-group-control/toggle-group-control/utils.js.map +1 -1
  302. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  303. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  304. package/build-module/tools-panel/tools-panel/component.js +3 -1
  305. package/build-module/tools-panel/tools-panel/component.js.map +1 -1
  306. package/build-module/tools-panel/tools-panel-header/component.js +9 -8
  307. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  308. package/build-module/tools-panel/tools-panel-item/hook.js +11 -11
  309. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  310. package/build-module/tools-panel/types.js.map +1 -1
  311. package/build-module/tooltip/index.js +1 -1
  312. package/build-module/tooltip/index.js.map +1 -1
  313. package/build-module/truncate/hook.js +10 -4
  314. package/build-module/truncate/hook.js.map +1 -1
  315. package/build-module/truncate/types.js.map +1 -1
  316. package/build-module/unit-control/index.js +1 -1
  317. package/build-module/unit-control/index.js.map +1 -1
  318. package/build-module/utils/strings.js +32 -2
  319. package/build-module/utils/strings.js.map +1 -1
  320. package/build-style/style-rtl.css +30 -6
  321. package/build-style/style.css +30 -6
  322. package/build-types/base-control/index.d.ts +3 -27
  323. package/build-types/base-control/index.d.ts.map +1 -1
  324. package/build-types/base-control/stories/index.story.d.ts +4 -1
  325. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  326. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  327. package/build-types/border-control/border-control-dropdown/hook.d.ts +1 -0
  328. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  329. package/build-types/border-control/styles.d.ts +1 -1
  330. package/build-types/border-control/styles.d.ts.map +1 -1
  331. package/build-types/checkbox-control/index.d.ts.map +1 -1
  332. package/build-types/checkbox-control/types.d.ts +3 -2
  333. package/build-types/checkbox-control/types.d.ts.map +1 -1
  334. package/build-types/color-picker/component.d.ts +1 -1
  335. package/build-types/color-picker/stories/index.story.d.ts +1 -1
  336. package/build-types/color-picker/stories/index.story.d.ts.map +1 -1
  337. package/build-types/composite/test/index.d.ts.map +1 -0
  338. package/build-types/context/wordpress-component.d.ts +3 -3
  339. package/build-types/context/wordpress-component.d.ts.map +1 -1
  340. package/build-types/custom-select-control-v2/index.d.ts +3 -2
  341. package/build-types/custom-select-control-v2/index.d.ts.map +1 -1
  342. package/build-types/custom-select-control-v2/stories/index.story.d.ts +4 -3
  343. package/build-types/custom-select-control-v2/stories/index.story.d.ts.map +1 -1
  344. package/build-types/date-time/time/timezone.d.ts.map +1 -1
  345. package/build-types/dimension-control/index.d.ts.map +1 -1
  346. package/build-types/dimension-control/types.d.ts +6 -0
  347. package/build-types/dimension-control/types.d.ts.map +1 -1
  348. package/build-types/dropdown/index.d.ts +1 -1
  349. package/build-types/dropdown/index.d.ts.map +1 -1
  350. package/build-types/dropdown/stories/index.story.d.ts +3 -3
  351. package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
  352. package/build-types/dropdown-menu/index.d.ts +1 -1
  353. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  354. package/build-types/dropdown-menu/stories/index.story.d.ts +2 -2
  355. package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
  356. package/build-types/dropdown-menu-v2/index.d.ts +18 -15
  357. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
  358. package/build-types/dropdown-menu-v2/stories/index.story.d.ts +7 -2
  359. package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +1 -1
  360. package/build-types/dropdown-menu-v2/styles.d.ts +77 -23
  361. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  362. package/build-types/dropdown-menu-v2/types.d.ts +89 -173
  363. package/build-types/dropdown-menu-v2/types.d.ts.map +1 -1
  364. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -1
  365. package/build-types/focal-point-picker/controls.d.ts +1 -1
  366. package/build-types/focal-point-picker/controls.d.ts.map +1 -1
  367. package/build-types/focal-point-picker/index.d.ts +1 -1
  368. package/build-types/focal-point-picker/index.d.ts.map +1 -1
  369. package/build-types/focal-point-picker/stories/index.story.d.ts +8 -4
  370. package/build-types/focal-point-picker/stories/index.story.d.ts.map +1 -1
  371. package/build-types/focal-point-picker/types.d.ts +7 -0
  372. package/build-types/focal-point-picker/types.d.ts.map +1 -1
  373. package/build-types/font-size-picker/font-size-picker-select.d.ts.map +1 -1
  374. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts.map +1 -1
  375. package/build-types/font-size-picker/index.d.ts.map +1 -1
  376. package/build-types/font-size-picker/types.d.ts +8 -1
  377. package/build-types/font-size-picker/types.d.ts.map +1 -1
  378. package/build-types/form-token-field/index.d.ts.map +1 -1
  379. package/build-types/form-token-field/token.d.ts.map +1 -1
  380. package/build-types/input-control/styles/input-control-styles.d.ts +11 -0
  381. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  382. package/build-types/input-control/types.d.ts +1 -1
  383. package/build-types/input-control/types.d.ts.map +1 -1
  384. package/build-types/lock-unlock.d.ts +3 -0
  385. package/build-types/lock-unlock.d.ts.map +1 -0
  386. package/build-types/mobile/image/constants.d.ts +5 -0
  387. package/build-types/mobile/image/constants.d.ts.map +1 -0
  388. package/build-types/modal/index.d.ts.map +1 -1
  389. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  390. package/build-types/navigator/navigator-screen/component.d.ts +1 -7
  391. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  392. package/build-types/navigator/styles.d.ts +9 -0
  393. package/build-types/navigator/styles.d.ts.map +1 -0
  394. package/build-types/number-control/index.d.ts.map +1 -1
  395. package/build-types/number-control/types.d.ts +1 -1
  396. package/build-types/palette-edit/index.d.ts +2 -2
  397. package/build-types/palette-edit/index.d.ts.map +1 -1
  398. package/build-types/popover/index.d.ts +1 -1
  399. package/build-types/popover/index.d.ts.map +1 -1
  400. package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
  401. package/build-types/private-apis.d.ts +0 -1
  402. package/build-types/private-apis.d.ts.map +1 -1
  403. package/build-types/query-controls/author-select.d.ts +1 -1
  404. package/build-types/query-controls/author-select.d.ts.map +1 -1
  405. package/build-types/query-controls/category-select.d.ts +1 -1
  406. package/build-types/query-controls/category-select.d.ts.map +1 -1
  407. package/build-types/query-controls/index.d.ts +1 -1
  408. package/build-types/query-controls/index.d.ts.map +1 -1
  409. package/build-types/query-controls/types.d.ts +9 -0
  410. package/build-types/query-controls/types.d.ts.map +1 -1
  411. package/build-types/radio-control/index.d.ts.map +1 -1
  412. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  413. package/build-types/slot-fill/index.d.ts +1 -1
  414. package/build-types/slot-fill/index.d.ts.map +1 -1
  415. package/build-types/slot-fill/types.d.ts +4 -0
  416. package/build-types/slot-fill/types.d.ts.map +1 -1
  417. package/build-types/snackbar/index.d.ts +2 -2
  418. package/build-types/snackbar/stories/index.story.d.ts +0 -3
  419. package/build-types/snackbar/stories/index.story.d.ts.map +1 -1
  420. package/build-types/snackbar/types.d.ts +1 -1
  421. package/build-types/snackbar/types.d.ts.map +1 -1
  422. package/build-types/tabs/index.d.ts +2 -2
  423. package/build-types/tabs/index.d.ts.map +1 -1
  424. package/build-types/tabs/styles.d.ts.map +1 -1
  425. package/build-types/tabs/tab.d.ts +2 -1
  426. package/build-types/tabs/tab.d.ts.map +1 -1
  427. package/build-types/tabs/tabpanel.d.ts +3 -2
  428. package/build-types/tabs/tabpanel.d.ts.map +1 -1
  429. package/build-types/tabs/types.d.ts +8 -3
  430. package/build-types/tabs/types.d.ts.map +1 -1
  431. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  432. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +2 -2
  433. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  434. package/build-types/toggle-group-control/toggle-group-control/utils.d.ts.map +1 -1
  435. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts +1 -1
  436. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  437. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  438. package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
  439. package/build-types/tools-panel/tools-panel/hook.d.ts +1 -0
  440. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  441. package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
  442. package/build-types/tools-panel/tools-panel-header/hook.d.ts +1 -0
  443. package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
  444. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  445. package/build-types/tools-panel/types.d.ts +9 -0
  446. package/build-types/tools-panel/types.d.ts.map +1 -1
  447. package/build-types/truncate/hook.d.ts +1 -1
  448. package/build-types/truncate/hook.d.ts.map +1 -1
  449. package/build-types/truncate/types.d.ts +4 -0
  450. package/build-types/truncate/types.d.ts.map +1 -1
  451. package/build-types/utils/strings.d.ts +14 -2
  452. package/build-types/utils/strings.d.ts.map +1 -1
  453. package/package.json +20 -21
  454. package/src/alignment-matrix-control/test/index.tsx +10 -16
  455. package/src/base-control/index.tsx +21 -16
  456. package/src/border-box-control/border-box-control-linked-button/component.tsx +1 -1
  457. package/src/border-control/border-control-dropdown/component.tsx +3 -1
  458. package/src/border-control/border-control-dropdown/hook.ts +3 -2
  459. package/src/border-control/border-control-style-picker/component.tsx +1 -1
  460. package/src/border-control/styles.ts +2 -9
  461. package/src/box-control/index.tsx +1 -1
  462. package/src/box-control/linked-button.tsx +1 -1
  463. package/src/button/README.md +32 -6
  464. package/src/button/index.tsx +1 -1
  465. package/src/button-group/README.md +0 -6
  466. package/src/card/card/README.md +1 -1
  467. package/src/checkbox-control/README.md +3 -10
  468. package/src/checkbox-control/index.tsx +8 -6
  469. package/src/checkbox-control/test/__snapshots__/index.tsx.snap +3 -8
  470. package/src/checkbox-control/test/index.tsx +7 -0
  471. package/src/checkbox-control/types.ts +3 -2
  472. package/src/color-picker/color-copy-button.tsx +1 -1
  473. package/src/combobox-control/README.md +0 -6
  474. package/src/composite/test/index.tsx +576 -0
  475. package/src/context/wordpress-component.ts +11 -6
  476. package/src/custom-select-control/README.md +0 -6
  477. package/src/custom-select-control/test/index.js +367 -35
  478. package/src/custom-select-control-v2/index.tsx +13 -12
  479. package/src/date-time/date/styles.ts +3 -3
  480. package/src/date-time/time/timezone.tsx +15 -3
  481. package/src/dimension-control/index.tsx +2 -0
  482. package/src/dimension-control/test/__snapshots__/index.test.js.snap +2 -2
  483. package/src/dimension-control/types.ts +6 -0
  484. package/src/dropdown-menu/README.md +0 -5
  485. package/src/dropdown-menu-v2/README.md +75 -136
  486. package/src/dropdown-menu-v2/index.tsx +321 -231
  487. package/src/dropdown-menu-v2/stories/index.story.tsx +522 -126
  488. package/src/dropdown-menu-v2/styles.ts +226 -151
  489. package/src/dropdown-menu-v2/test/index.tsx +480 -188
  490. package/src/dropdown-menu-v2/types.ts +98 -184
  491. package/src/duotone-picker/duotone-picker.tsx +7 -3
  492. package/src/focal-point-picker/controls.tsx +4 -0
  493. package/src/focal-point-picker/index.tsx +2 -0
  494. package/src/focal-point-picker/styles/focal-point-picker-style.ts +1 -1
  495. package/src/focal-point-picker/types.ts +7 -0
  496. package/src/font-size-picker/font-size-picker-select.tsx +2 -0
  497. package/src/font-size-picker/font-size-picker-toggle-group.tsx +9 -1
  498. package/src/font-size-picker/index.native.js +8 -2
  499. package/src/font-size-picker/index.tsx +15 -5
  500. package/src/font-size-picker/types.ts +8 -1
  501. package/src/form-toggle/README.md +0 -6
  502. package/src/form-toggle/style.scss +4 -2
  503. package/src/form-token-field/index.tsx +11 -7
  504. package/src/form-token-field/test/index.tsx +97 -0
  505. package/src/form-token-field/token.tsx +1 -0
  506. package/src/gradient-picker/index.tsx +2 -2
  507. package/src/index.native.js +6 -3
  508. package/src/input-control/styles/input-control-styles.tsx +10 -8
  509. package/src/input-control/types.ts +1 -1
  510. package/src/lock-unlock.js +10 -0
  511. package/src/menu-group/README.md +0 -8
  512. package/src/menu-items-choice/README.md +0 -7
  513. package/src/mobile/bottom-sheet/index.native.js +15 -1
  514. package/src/mobile/global-styles-context/test/fixtures/theme.native.js +0 -20
  515. package/src/mobile/global-styles-context/test/utils.native.js +22 -0
  516. package/src/mobile/global-styles-context/utils.native.js +42 -19
  517. package/src/mobile/image/constants.js +1 -0
  518. package/src/mobile/image/index.native.js +55 -18
  519. package/src/mobile/image/style.native.scss +35 -9
  520. package/src/mobile/keyboard-aware-flat-list/index.android.js +50 -5
  521. package/src/mobile/keyboard-aware-flat-list/index.ios.js +65 -91
  522. package/src/mobile/keyboard-aware-flat-list/test/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +27 -25
  523. package/src/mobile/keyboard-aware-flat-list/test/use-scroll.native.js +71 -0
  524. package/src/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +41 -0
  525. package/src/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +22 -27
  526. package/src/mobile/keyboard-aware-flat-list/use-scroll.native.js +100 -0
  527. package/src/mobile/link-settings/style.native.scss +0 -17
  528. package/src/mobile/utils/get-px-from-css-unit.native.js +329 -0
  529. package/src/mobile/utils/test/get-px-from-css-unit.native.js +172 -0
  530. package/src/modal/README.md +0 -6
  531. package/src/modal/index.tsx +18 -16
  532. package/src/modal/test/index.tsx +90 -1
  533. package/src/navigation/menu/menu-title.tsx +1 -1
  534. package/src/navigator/navigator-provider/component.tsx +3 -4
  535. package/src/navigator/navigator-screen/component.tsx +15 -93
  536. package/src/navigator/styles.ts +71 -0
  537. package/src/navigator/test/index.tsx +0 -64
  538. package/src/notice/README.md +0 -6
  539. package/src/number-control/README.md +2 -2
  540. package/src/number-control/index.tsx +4 -8
  541. package/src/number-control/types.ts +1 -1
  542. package/src/palette-edit/index.tsx +14 -43
  543. package/src/palette-edit/style.scss +2 -2
  544. package/src/panel/README.md +0 -6
  545. package/src/private-apis.native.js +13 -0
  546. package/src/private-apis.ts +12 -37
  547. package/src/query-controls/author-select.tsx +2 -0
  548. package/src/query-controls/category-select.tsx +2 -0
  549. package/src/query-controls/index.tsx +6 -1
  550. package/src/query-controls/types.ts +9 -0
  551. package/src/radio-control/README.md +0 -6
  552. package/src/radio-control/index.tsx +4 -1
  553. package/src/radio-control/style.scss +29 -2
  554. package/src/radio-group/README.md +0 -6
  555. package/src/range-control/README.md +1 -9
  556. package/src/range-control/index.tsx +1 -1
  557. package/src/search-control/README.md +1 -5
  558. package/src/select-control/README.md +0 -6
  559. package/src/select-control/styles/select-control-styles.ts +10 -28
  560. package/src/slot-fill/index.tsx +5 -2
  561. package/src/slot-fill/types.ts +5 -0
  562. package/src/snackbar/README.md +0 -6
  563. package/src/snackbar/stories/index.story.tsx +7 -5
  564. package/src/snackbar/style.scss +4 -3
  565. package/src/snackbar/types.ts +2 -1
  566. package/src/spacer/README.md +0 -2
  567. package/src/spinner/README.md +2 -0
  568. package/src/tab-panel/README.md +0 -5
  569. package/src/tab-panel/test/index.tsx +39 -56
  570. package/src/tabs/README.md +4 -4
  571. package/src/tabs/index.tsx +22 -1
  572. package/src/tabs/stories/index.story.tsx +48 -48
  573. package/src/tabs/styles.ts +7 -1
  574. package/src/tabs/tab.tsx +3 -3
  575. package/src/tabs/tabpanel.tsx +13 -8
  576. package/src/tabs/test/index.tsx +236 -106
  577. package/src/tabs/types.ts +8 -3
  578. package/src/text-control/README.md +0 -6
  579. package/src/textarea-control/README.md +0 -6
  580. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +12 -16
  581. package/src/toggle-group-control/test/index.tsx +107 -41
  582. package/src/toggle-group-control/toggle-group-control/component.tsx +5 -4
  583. package/src/toggle-group-control/toggle-group-control/styles.ts +13 -19
  584. package/src/toggle-group-control/toggle-group-control/utils.ts +15 -20
  585. package/src/toggle-group-control/toggle-group-control-option/README.md +1 -1
  586. package/src/toggle-group-control/toggle-group-control-option-base/README.md +1 -1
  587. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +3 -2
  588. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +1 -1
  589. package/src/toolbar/toolbar/README.md +0 -6
  590. package/src/tools-panel/test/index.tsx +12 -20
  591. package/src/tools-panel/tools-panel/README.md +7 -0
  592. package/src/tools-panel/tools-panel/component.tsx +2 -0
  593. package/src/tools-panel/tools-panel-header/README.md +7 -0
  594. package/src/tools-panel/tools-panel-header/component.tsx +20 -13
  595. package/src/tools-panel/tools-panel-item/hook.ts +10 -21
  596. package/src/tools-panel/types.ts +9 -0
  597. package/src/tooltip/index.tsx +1 -1
  598. package/src/tooltip/test/index.tsx +360 -256
  599. package/src/tree-grid/README.md +0 -4
  600. package/src/truncate/README.md +8 -0
  601. package/src/truncate/hook.ts +17 -10
  602. package/src/truncate/test/index.tsx +54 -27
  603. package/src/truncate/types.ts +4 -0
  604. package/src/unit-control/index.tsx +1 -1
  605. package/src/utils/strings.ts +30 -2
  606. package/src/utils/test/strings.js +96 -1
  607. package/tsconfig.tsbuildinfo +1 -1
  608. package/build/dropdown-menu-v2-ariakit/index.js +0 -256
  609. package/build/dropdown-menu-v2-ariakit/index.js.map +0 -1
  610. package/build/dropdown-menu-v2-ariakit/styles.js +0 -180
  611. package/build/dropdown-menu-v2-ariakit/styles.js.map +0 -1
  612. package/build/dropdown-menu-v2-ariakit/types.js +0 -6
  613. package/build/dropdown-menu-v2-ariakit/types.js.map +0 -1
  614. package/build/mobile/inserter-button/index.native.js +0 -98
  615. package/build/mobile/inserter-button/index.native.js.map +0 -1
  616. package/build/mobile/inserter-button/sparkles.js +0 -23
  617. package/build/mobile/inserter-button/sparkles.js.map +0 -1
  618. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +0 -1
  619. package/build/mobile/link-settings/image-link-destinations-screen.native.js +0 -119
  620. package/build/mobile/link-settings/image-link-destinations-screen.native.js.map +0 -1
  621. package/build-module/dropdown-menu-v2-ariakit/index.js +0 -237
  622. package/build-module/dropdown-menu-v2-ariakit/index.js.map +0 -1
  623. package/build-module/dropdown-menu-v2-ariakit/styles.js +0 -165
  624. package/build-module/dropdown-menu-v2-ariakit/styles.js.map +0 -1
  625. package/build-module/dropdown-menu-v2-ariakit/types.js +0 -2
  626. package/build-module/dropdown-menu-v2-ariakit/types.js.map +0 -1
  627. package/build-module/mobile/inserter-button/index.native.js +0 -89
  628. package/build-module/mobile/inserter-button/index.native.js.map +0 -1
  629. package/build-module/mobile/inserter-button/sparkles.js +0 -15
  630. package/build-module/mobile/inserter-button/sparkles.js.map +0 -1
  631. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +0 -1
  632. package/build-module/mobile/link-settings/image-link-destinations-screen.native.js +0 -110
  633. package/build-module/mobile/link-settings/image-link-destinations-screen.native.js.map +0 -1
  634. package/build-types/dropdown-menu-v2-ariakit/index.d.ts +0 -20
  635. package/build-types/dropdown-menu-v2-ariakit/index.d.ts.map +0 -1
  636. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts +0 -16
  637. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts.map +0 -1
  638. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts +0 -96
  639. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts.map +0 -1
  640. package/build-types/dropdown-menu-v2-ariakit/test/index.d.ts.map +0 -1
  641. package/build-types/dropdown-menu-v2-ariakit/types.d.ts +0 -168
  642. package/build-types/dropdown-menu-v2-ariakit/types.d.ts.map +0 -1
  643. package/build-types/mobile/inserter-button/sparkles.d.ts +0 -3
  644. package/build-types/mobile/inserter-button/sparkles.d.ts.map +0 -1
  645. package/src/dropdown-menu-v2-ariakit/README.md +0 -331
  646. package/src/dropdown-menu-v2-ariakit/index.tsx +0 -383
  647. package/src/dropdown-menu-v2-ariakit/stories/index.story.tsx +0 -617
  648. package/src/dropdown-menu-v2-ariakit/styles.ts +0 -333
  649. package/src/dropdown-menu-v2-ariakit/test/index.tsx +0 -1108
  650. package/src/dropdown-menu-v2-ariakit/types.ts +0 -179
  651. package/src/mobile/inserter-button/README.md +0 -62
  652. package/src/mobile/inserter-button/index.native.js +0 -116
  653. package/src/mobile/inserter-button/sparkles.js +0 -15
  654. package/src/mobile/inserter-button/style.native.scss +0 -72
  655. package/src/mobile/link-settings/image-link-destinations-screen.native.js +0 -152
  656. /package/build-types/{dropdown-menu-v2-ariakit → composite}/test/index.d.ts +0 -0
@@ -1,3 +1,5 @@
1
+ @use "sass:math";
2
+
1
3
  $toggle-width: 36px;
2
4
  $toggle-height: 18px;
3
5
  $toggle-border-width: 1px;
@@ -20,7 +22,7 @@ $transition-duration: 0.2s;
20
22
  border: $toggle-border-width solid $gray-900;
21
23
  width: $toggle-width;
22
24
  height: $toggle-height;
23
- border-radius: $toggle-height * 0.5;
25
+ border-radius: math.div($toggle-height, 2);
24
26
  transition:
25
27
  $transition-duration background-color ease,
26
28
  $transition-duration border-color ease;
@@ -59,7 +61,7 @@ $transition-duration: 0.2s;
59
61
  background-color: $gray-900;
60
62
 
61
63
  // Transparent border acts as a fill in Windows High Contrast Mode.
62
- border: $thumb-size / 2 solid transparent;
64
+ border: math.div($thumb-size, 2) solid transparent;
63
65
  }
64
66
 
65
67
  // Checked state.
@@ -177,13 +177,17 @@ export function FormTokenField( props: FormTokenFieldProps ) {
177
177
  setInputOffsetFromEnd( 0 );
178
178
  setIsActive( false );
179
179
 
180
- // If `__experimentalExpandOnFocus` is true, don't close the suggestions list when
181
- // the user clicks on it (`tokensAndInput` will be the element that caused the blur).
182
- const shouldKeepSuggestionsExpanded =
183
- ! __experimentalExpandOnFocus ||
184
- ( __experimentalExpandOnFocus &&
185
- event.relatedTarget === tokensAndInput.current );
186
- setIsExpanded( shouldKeepSuggestionsExpanded );
180
+ if ( __experimentalExpandOnFocus ) {
181
+ // If `__experimentalExpandOnFocus` is true, don't close the suggestions list when
182
+ // the user clicks on it (`tokensAndInput` will be the element that caused the blur).
183
+ const hasFocusWithin =
184
+ event.relatedTarget === tokensAndInput.current;
185
+ setIsExpanded( hasFocusWithin );
186
+ } else {
187
+ // Else collapse the suggestion list. This will result in the suggestion list closing
188
+ // after a suggestion has been submitted since that causes a blur.
189
+ setIsExpanded( false );
190
+ }
187
191
 
188
192
  setSelectedSuggestionIndex( -1 );
189
193
  setSelectedSuggestionScroll( false );
@@ -741,6 +741,103 @@ describe( 'FormTokenField', () => {
741
741
  ] );
742
742
  } );
743
743
 
744
+ it( 'should render suggestions after a selection is made when the `__experimentalExpandOnFocus` prop is set to `true`', async () => {
745
+ const user = userEvent.setup();
746
+
747
+ const onFocusSpy = jest.fn();
748
+
749
+ const suggestions = [ 'Green', 'Emerald', 'Seaweed' ];
750
+
751
+ render(
752
+ <>
753
+ <FormTokenFieldWithState
754
+ onFocus={ onFocusSpy }
755
+ suggestions={ suggestions }
756
+ __experimentalExpandOnFocus
757
+ />
758
+ </>
759
+ );
760
+
761
+ const input = screen.getByRole( 'combobox' );
762
+
763
+ await user.type( input, 'ee' );
764
+
765
+ expectVisibleSuggestionsToBe( screen.getByRole( 'listbox' ), [
766
+ 'Green',
767
+ 'Seaweed',
768
+ ] );
769
+
770
+ // Select the first suggestion ("Green")
771
+ await user.keyboard( '[ArrowDown][Enter]' );
772
+
773
+ expect( screen.getByRole( 'listbox' ) ).toBeVisible();
774
+ } );
775
+
776
+ it( 'should not render suggestions after a selection is made when the `__experimentalExpandOnFocus` prop is set to `false` or not defined', async () => {
777
+ const user = userEvent.setup();
778
+
779
+ const onFocusSpy = jest.fn();
780
+
781
+ const suggestions = [ 'Green', 'Emerald', 'Seaweed' ];
782
+
783
+ render(
784
+ <>
785
+ <FormTokenFieldWithState
786
+ onFocus={ onFocusSpy }
787
+ suggestions={ suggestions }
788
+ />
789
+ </>
790
+ );
791
+
792
+ const input = screen.getByRole( 'combobox' );
793
+
794
+ await user.type( input, 'ee' );
795
+
796
+ expectVisibleSuggestionsToBe( screen.getByRole( 'listbox' ), [
797
+ 'Green',
798
+ 'Seaweed',
799
+ ] );
800
+
801
+ // Select the first suggestion ("Green")
802
+ await user.keyboard( '[ArrowDown][Enter]' );
803
+
804
+ expect( screen.queryByRole( 'listbox' ) ).not.toBeInTheDocument();
805
+ } );
806
+
807
+ it( 'should not render suggestions after the input is blurred', async () => {
808
+ const user = userEvent.setup();
809
+
810
+ const onFocusSpy = jest.fn();
811
+
812
+ const suggestions = [ 'Green', 'Emerald', 'Seaweed' ];
813
+
814
+ render(
815
+ <>
816
+ <FormTokenFieldWithState
817
+ onFocus={ onFocusSpy }
818
+ suggestions={ suggestions }
819
+ />
820
+ </>
821
+ );
822
+
823
+ const input = screen.getByRole( 'combobox' );
824
+
825
+ await user.type( input, 'ee' );
826
+
827
+ expectVisibleSuggestionsToBe( screen.getByRole( 'listbox' ), [
828
+ 'Green',
829
+ 'Seaweed',
830
+ ] );
831
+
832
+ // Select the first suggestion ("Green")
833
+ await user.keyboard( '[ArrowDown][Enter]' );
834
+
835
+ // Click the body, blurring the input.
836
+ await user.click( document.body );
837
+
838
+ expect( screen.queryByRole( 'listbox' ) ).not.toBeInTheDocument();
839
+ } );
840
+
744
841
  it( 'should not render suggestions if the text input is not matching any of the suggestions', async () => {
745
842
  const user = userEvent.setup();
746
843
 
@@ -74,6 +74,7 @@ export default function Token( {
74
74
  className="components-form-token-field__remove-token"
75
75
  icon={ closeSmall }
76
76
  onClick={ ! disabled ? onClick : undefined }
77
+ disabled={ disabled }
77
78
  label={ messages.remove }
78
79
  aria-describedby={ `components-form-token-field__token-text-${ instanceId }` }
79
80
  />
@@ -44,9 +44,9 @@ function SingleOrigin( {
44
44
  ...additionalProps
45
45
  }: PickerProps< GradientObject > ) {
46
46
  const gradientOptions = useMemo( () => {
47
- return gradients.map( ( { gradient, name }, index ) => (
47
+ return gradients.map( ( { gradient, name, slug }, index ) => (
48
48
  <CircularOptionPicker.Option
49
- key={ gradient }
49
+ key={ slug }
50
50
  value={ gradient }
51
51
  isSelected={ value === gradient }
52
52
  tooltipText={
@@ -106,11 +106,10 @@ export { default as LinkPickerScreen } from './mobile/link-picker/link-picker-sc
106
106
  export { default as LinkSettings } from './mobile/link-settings';
107
107
  export { default as LinkSettingsScreen } from './mobile/link-settings/link-settings-screen';
108
108
  export { default as LinkSettingsNavigation } from './mobile/link-settings/link-settings-navigation';
109
- export { default as ImageLinkDestinationsScreen } from './mobile/link-settings/image-link-destinations-screen';
110
109
  export { default as SegmentedControl } from './mobile/segmented-control';
111
- export { default as Image, IMAGE_DEFAULT_FOCAL_POINT } from './mobile/image';
110
+ export { default as Image } from './mobile/image';
111
+ export { IMAGE_DEFAULT_FOCAL_POINT } from './mobile/image/constants';
112
112
  export { default as ImageEditingButton } from './mobile/image/image-editing-button';
113
- export { default as InserterButton } from './mobile/inserter-button';
114
113
  export { setClipboard, getClipboard } from './mobile/clipboard';
115
114
  export { default as AudioPlayer } from './mobile/audio-player';
116
115
  export { default as Badge } from './mobile/badge';
@@ -123,6 +122,7 @@ export {
123
122
  ALIGNMENT_BREAKPOINTS,
124
123
  alignmentHelpers,
125
124
  } from './mobile/utils/alignments';
125
+ export { default as getPxFromCssUnit } from './mobile/utils/get-px-from-css-unit';
126
126
 
127
127
  // Hooks.
128
128
  export {
@@ -143,3 +143,6 @@ export {
143
143
  useMobileGlobalStylesColors,
144
144
  useEditorColorScheme,
145
145
  } from './mobile/global-styles-context/utils';
146
+
147
+ // Private APIs.
148
+ export { privateApis } from './private-apis';
@@ -97,10 +97,11 @@ const disabledStyles = ( { disabled }: InputProps ) => {
97
97
  } );
98
98
  };
99
99
 
100
- const fontSizeStyles = ( { inputSize: size }: InputProps ) => {
100
+ export const fontSizeStyles = ( { inputSize: size }: InputProps ) => {
101
101
  const sizes = {
102
102
  default: '13px',
103
103
  small: '11px',
104
+ compact: '13px',
104
105
  '__unstable-large': '13px',
105
106
  };
106
107
 
@@ -138,6 +139,13 @@ export const getSizeConfig = ( {
138
139
  paddingLeft: space( 2 ),
139
140
  paddingRight: space( 2 ),
140
141
  },
142
+ compact: {
143
+ height: 32,
144
+ lineHeight: 1,
145
+ minHeight: 32,
146
+ paddingLeft: space( 2 ),
147
+ paddingRight: space( 2 ),
148
+ },
141
149
  '__unstable-large': {
142
150
  height: 40,
143
151
  lineHeight: 1,
@@ -148,13 +156,7 @@ export const getSizeConfig = ( {
148
156
  };
149
157
 
150
158
  if ( ! __next40pxDefaultSize ) {
151
- sizes.default = {
152
- height: 32,
153
- lineHeight: 1,
154
- minHeight: 32,
155
- paddingLeft: space( 2 ),
156
- paddingRight: space( 2 ),
157
- };
159
+ sizes.default = sizes.compact;
158
160
  }
159
161
 
160
162
  return sizes[ size as Size ] || sizes.default;
@@ -23,7 +23,7 @@ export type DragDirection = 'n' | 's' | 'e' | 'w';
23
23
 
24
24
  export type DragProps = Parameters< Parameters< typeof useDrag >[ 0 ] >[ 0 ];
25
25
 
26
- export type Size = 'default' | 'small' | '__unstable-large';
26
+ export type Size = 'default' | 'small' | 'compact' | '__unstable-large';
27
27
 
28
28
  interface BaseProps {
29
29
  /**
@@ -0,0 +1,10 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';
5
+
6
+ export const { lock, unlock } =
7
+ __dangerousOptInToUnstableAPIsOnlyForCoreModules(
8
+ 'I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.',
9
+ '@wordpress/components'
10
+ );
@@ -4,14 +4,6 @@
4
4
 
5
5
  ![MenuGroup Example](https://wordpress.org/gutenberg/files/2019/03/MenuGroup.png)
6
6
 
7
- 1. MenuGroup
8
-
9
- ## Table of Contents
10
-
11
- 1. [Design guidelines](#design-guidelines)
12
- 2. [Development guidelines](#development-guidelines)
13
- 3. [Related components](#related-components)
14
-
15
7
  ## Design guidelines
16
8
 
17
9
  ### Usage
@@ -4,13 +4,6 @@
4
4
 
5
5
  ![MenuItemsChoice Example](https://wordpress.org/gutenberg/files/2019/03/MenuItemsChoice.png)
6
6
 
7
- 1. MenuItemsChoice
8
-
9
- ## Table of contents
10
-
11
- 1. [Design guidelines](#design-guidelines)
12
- 2. [Development guidelines](#development-guidelines)
13
-
14
7
  ## Design guidelines
15
8
 
16
9
  A `MenuItemsChoice` should be housed within in its own distinct `MenuGroup`, so that the set of options are distinct from nearby `MenuItems`.
@@ -19,7 +19,10 @@ import SafeArea from 'react-native-safe-area';
19
19
  /**
20
20
  * WordPress dependencies
21
21
  */
22
- import { subscribeAndroidModalClosed } from '@wordpress/react-native-bridge';
22
+ import {
23
+ subscribeAndroidModalClosed,
24
+ showAndroidSoftKeyboard,
25
+ } from '@wordpress/react-native-bridge';
23
26
  import { Component } from '@wordpress/element';
24
27
  import { withPreferredColorScheme } from '@wordpress/compose';
25
28
 
@@ -215,6 +218,11 @@ class BottomSheet extends Component {
215
218
  if ( this.androidModalClosedSubscription ) {
216
219
  this.androidModalClosedSubscription.remove();
217
220
  }
221
+
222
+ if ( this.props.isVisible ) {
223
+ showAndroidSoftKeyboard();
224
+ }
225
+
218
226
  if ( this.safeAreaEventSubscription === null ) {
219
227
  return;
220
228
  }
@@ -315,6 +323,9 @@ class BottomSheet extends Component {
315
323
  onDismiss() {
316
324
  const { onDismiss } = this.props;
317
325
 
326
+ // Restore Keyboard Visibility
327
+ showAndroidSoftKeyboard();
328
+
318
329
  if ( onDismiss ) {
319
330
  onDismiss();
320
331
  }
@@ -368,6 +379,7 @@ class BottomSheet extends Component {
368
379
  onHardwareButtonPress() {
369
380
  const { onClose } = this.props;
370
381
  const { handleHardwareButtonPress } = this.state;
382
+
371
383
  if ( handleHardwareButtonPress && handleHardwareButtonPress() ) {
372
384
  return;
373
385
  }
@@ -528,6 +540,8 @@ class BottomSheet extends Component {
528
540
  }
529
541
  onAccessibilityEscape={ this.onCloseBottomSheet }
530
542
  testID="bottom-sheet"
543
+ hardwareAccelerated={ true }
544
+ useNativeDriverForBackdrop={ true }
531
545
  { ...rest }
532
546
  >
533
547
  <KeyboardAvoidingView
@@ -231,26 +231,6 @@ export const RAW_FEATURES = {
231
231
  },
232
232
  typography: {
233
233
  fontSizes: {
234
- default: [
235
- {
236
- name: 'Small',
237
- slug: 'small',
238
- size: '13px',
239
- sizePx: '13px',
240
- },
241
- {
242
- name: 'Normal',
243
- slug: 'normal',
244
- size: '16px',
245
- sizePx: '16px',
246
- },
247
- {
248
- name: 'Huge',
249
- slug: 'huge',
250
- size: '42px',
251
- sizePx: '42px',
252
- },
253
- ],
254
234
  theme: [
255
235
  {
256
236
  name: 'Normal',
@@ -108,6 +108,28 @@ describe( 'parseStylesVariables', () => {
108
108
  expect.objectContaining( PARSED_GLOBAL_STYLES )
109
109
  );
110
110
  } );
111
+
112
+ it( 'returns the parsed custom color values correctly', () => {
113
+ const defaultStyles = {
114
+ ...DEFAULT_GLOBAL_STYLES,
115
+ color: {
116
+ text: 'var(--wp--custom--color--blue)',
117
+ background: 'var(--wp--custom--color--green)',
118
+ },
119
+ };
120
+ const customValues = parseStylesVariables(
121
+ JSON.stringify( RAW_FEATURES.custom ),
122
+ MAPPED_VALUES
123
+ );
124
+ const styles = parseStylesVariables(
125
+ JSON.stringify( defaultStyles ),
126
+ MAPPED_VALUES,
127
+ customValues
128
+ );
129
+ expect( styles ).toEqual(
130
+ expect.objectContaining( PARSED_GLOBAL_STYLES )
131
+ );
132
+ } );
111
133
  } );
112
134
 
113
135
  describe( 'getGlobalStyles', () => {
@@ -9,7 +9,6 @@ import { colord } from 'colord';
9
9
  * WordPress dependencies
10
10
  */
11
11
  import {
12
- getPxFromCssUnit,
13
12
  useSettings,
14
13
  useMultipleOriginColorsAndGradients,
15
14
  SETTINGS_DEFAULTS,
@@ -19,6 +18,7 @@ import { usePreferredColorSchemeStyle } from '@wordpress/compose';
19
18
  /**
20
19
  * Internal dependencies
21
20
  */
21
+ import { default as getPxFromCssUnit } from '../utils/get-px-from-css-unit';
22
22
  import { useGlobalStyles } from './index.native';
23
23
 
24
24
  export const BLOCK_STYLE_ATTRIBUTES = [
@@ -248,6 +248,20 @@ export function parseStylesVariables( styles, mappedValues, customValues ) {
248
248
  const customValuesData = customValues ?? JSON.parse( stylesBase );
249
249
  stylesBase = stylesBase.replace( regex, ( _$1, $2 ) => {
250
250
  const path = $2.split( '--' );
251
+
252
+ // Supports cases for variables like var(--wp--custom--color--background)
253
+ if ( path[ 0 ] === 'color' ) {
254
+ const colorKey = path[ path.length - 1 ];
255
+ if ( mappedValues?.color ) {
256
+ const matchedValue = mappedValues.color?.values?.find(
257
+ ( { slug } ) => slug === colorKey
258
+ );
259
+ if ( matchedValue ) {
260
+ return `${ matchedValue?.color }`;
261
+ }
262
+ }
263
+ }
264
+
251
265
  if (
252
266
  path.reduce(
253
267
  ( prev, curr ) => prev && prev[ curr ],
@@ -328,29 +342,38 @@ export function getMappedValues( features, palette ) {
328
342
  * @return {Object} normalized sizes.
329
343
  */
330
344
  function normalizeFontSizes( fontSizes ) {
331
- // Adds normalized PX values for each of the different keys.
332
345
  if ( ! fontSizes ) {
333
346
  return fontSizes;
334
347
  }
335
- const normalizedFontSizes = {};
348
+
336
349
  const dimensions = Dimensions.get( 'window' );
350
+ const normalizedFontSizes = {};
351
+ const keysToProcess = [];
337
352
 
338
- [ 'default', 'theme', 'custom' ].forEach( ( key ) => {
339
- if ( fontSizes[ key ] ) {
340
- normalizedFontSizes[ key ] = fontSizes[ key ]?.map(
341
- ( fontSizeObject ) => {
342
- fontSizeObject.sizePx = getPxFromCssUnit(
343
- fontSizeObject.size,
344
- {
345
- width: dimensions.width,
346
- height: dimensions.height,
347
- fontSize: DEFAULT_FONT_SIZE,
348
- }
349
- );
350
- return fontSizeObject;
351
- }
352
- );
353
- }
353
+ // Check if 'theme' or 'custom' keys exist and add them to keysToProcess array
354
+ if ( fontSizes?.theme ) {
355
+ keysToProcess.push( 'theme' );
356
+ }
357
+ if ( fontSizes?.custom ) {
358
+ keysToProcess.push( 'custom' );
359
+ }
360
+
361
+ // If neither 'theme' nor 'custom' exist, add 'default' if it exists
362
+ if ( keysToProcess.length === 0 && fontSizes?.default ) {
363
+ keysToProcess.push( 'default' );
364
+ }
365
+
366
+ keysToProcess.forEach( ( key ) => {
367
+ normalizedFontSizes[ key ] = fontSizes[ key ].map(
368
+ ( fontSizeObject ) => {
369
+ fontSizeObject.sizePx = getPxFromCssUnit( fontSizeObject.size, {
370
+ width: dimensions.width,
371
+ height: dimensions.height,
372
+ fontSize: DEFAULT_FONT_SIZE,
373
+ } );
374
+ return fontSizeObject;
375
+ }
376
+ );
354
377
  } );
355
378
 
356
379
  return normalizedFontSizes;
@@ -0,0 +1 @@
1
+ export const IMAGE_DEFAULT_FOCAL_POINT = { x: 0.5, y: 0.5 };
@@ -9,7 +9,7 @@ import FastImage from 'react-native-fast-image';
9
9
  */
10
10
  import { __ } from '@wordpress/i18n';
11
11
  import { Icon } from '@wordpress/components';
12
- import { image as icon } from '@wordpress/icons';
12
+ import { image, offline } from '@wordpress/icons';
13
13
  import { usePreferredColorSchemeStyle } from '@wordpress/compose';
14
14
  import { useEffect, useState, Platform } from '@wordpress/element';
15
15
 
@@ -22,13 +22,12 @@ import SvgIconRetry from './icon-retry';
22
22
  import ImageEditingButton from './image-editing-button';
23
23
 
24
24
  const ICON_TYPE = {
25
+ OFFLINE: 'offline',
25
26
  PLACEHOLDER: 'placeholder',
26
27
  RETRY: 'retry',
27
28
  UPLOAD: 'upload',
28
29
  };
29
30
 
30
- export const IMAGE_DEFAULT_FOCAL_POINT = { x: 0.5, y: 0.5 };
31
-
32
31
  const ImageComponent = ( {
33
32
  align,
34
33
  alt,
@@ -39,6 +38,7 @@ const ImageComponent = ( {
39
38
  isSelected,
40
39
  shouldUseFastImage,
41
40
  isUploadFailed,
41
+ isUploadPaused,
42
42
  isUploadInProgress,
43
43
  mediaPickerOptions,
44
44
  onImageDataLoad,
@@ -101,19 +101,23 @@ const ImageComponent = ( {
101
101
  };
102
102
 
103
103
  const getIcon = ( iconType ) => {
104
+ let icon;
104
105
  let iconStyle;
105
106
  switch ( iconType ) {
106
107
  case ICON_TYPE.RETRY:
107
- return (
108
- <Icon
109
- icon={ retryIcon || SvgIconRetry }
110
- { ...styles.iconRetry }
111
- />
112
- );
108
+ icon = retryIcon || SvgIconRetry;
109
+ iconStyle = iconRetryStyles;
110
+ break;
111
+ case ICON_TYPE.OFFLINE:
112
+ icon = offline;
113
+ iconStyle = iconOfflineStyles;
114
+ break;
113
115
  case ICON_TYPE.PLACEHOLDER:
116
+ icon = image;
114
117
  iconStyle = iconPlaceholderStyles;
115
118
  break;
116
119
  case ICON_TYPE.UPLOAD:
120
+ icon = image;
117
121
  iconStyle = iconUploadStyles;
118
122
  break;
119
123
  }
@@ -130,6 +134,31 @@ const ImageComponent = ( {
130
134
  styles.iconUploadDark
131
135
  );
132
136
 
137
+ const iconOfflineStyles = usePreferredColorSchemeStyle(
138
+ styles.iconOffline,
139
+ styles.iconOfflineDark
140
+ );
141
+
142
+ const retryIconStyles = usePreferredColorSchemeStyle(
143
+ styles.retryIcon,
144
+ styles.retryIconDark
145
+ );
146
+
147
+ const iconRetryStyles = usePreferredColorSchemeStyle(
148
+ styles.iconRetry,
149
+ styles.iconRetryDark
150
+ );
151
+
152
+ const retryContainerStyles = usePreferredColorSchemeStyle(
153
+ styles.retryContainer,
154
+ styles.retryContainerDark
155
+ );
156
+
157
+ const uploadFailedTextStyles = usePreferredColorSchemeStyle(
158
+ styles.uploadFailedText,
159
+ styles.uploadFailedTextDark
160
+ );
161
+
133
162
  const placeholderStyles = [
134
163
  usePreferredColorSchemeStyle(
135
164
  styles.imageContainerUpload,
@@ -216,9 +245,11 @@ const ImageComponent = ( {
216
245
  >
217
246
  { isSelected &&
218
247
  highlightSelected &&
219
- ! ( isUploadInProgress || isUploadFailed ) && (
220
- <View style={ imageSelectedStyles } />
221
- ) }
248
+ ! (
249
+ isUploadInProgress ||
250
+ isUploadFailed ||
251
+ isUploadPaused
252
+ ) && <View style={ imageSelectedStyles } /> }
222
253
 
223
254
  { ! imageData ? (
224
255
  <View style={ placeholderStyles }>
@@ -239,22 +270,24 @@ const ImageComponent = ( {
239
270
  </View>
240
271
  ) }
241
272
 
242
- { isUploadFailed && retryMessage && (
273
+ { ( isUploadFailed || isUploadPaused ) && retryMessage && (
243
274
  <View
244
275
  style={ [
245
276
  styles.imageContainer,
246
- styles.retryContainer,
277
+ retryContainerStyles,
247
278
  ] }
248
279
  >
249
280
  <View
250
281
  style={ [
251
- styles.retryIcon,
282
+ retryIconStyles,
252
283
  retryIcon && styles.customRetryIcon,
253
284
  ] }
254
285
  >
255
- { getIcon( ICON_TYPE.RETRY ) }
286
+ { isUploadPaused
287
+ ? getIcon( ICON_TYPE.OFFLINE )
288
+ : getIcon( ICON_TYPE.RETRY ) }
256
289
  </View>
257
- <Text style={ styles.uploadFailedText }>
290
+ <Text style={ uploadFailedTextStyles }>
258
291
  { retryMessage }
259
292
  </Text>
260
293
  </View>
@@ -265,7 +298,11 @@ const ImageComponent = ( {
265
298
  <ImageEditingButton
266
299
  onSelectMediaUploadOption={ onSelectMediaUploadOption }
267
300
  openMediaOptions={ openMediaOptions }
268
- url={ ! isUploadFailed && imageData && url }
301
+ url={
302
+ ! ( isUploadFailed || isUploadPaused ) &&
303
+ imageData &&
304
+ url
305
+ }
269
306
  pickerOptions={ mediaPickerOptions }
270
307
  />
271
308
  ) }