@wordpress/components 23.2.0 → 23.3.1

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 (377) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/CONTRIBUTING.md +1 -1
  3. package/build/alignment-matrix-control/utils.js +2 -2
  4. package/build/alignment-matrix-control/utils.js.map +1 -1
  5. package/build/autocomplete/autocompleter-ui.js +1 -3
  6. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  7. package/build/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  8. package/build/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  9. package/build/border-control/border-control-dropdown/component.js +8 -4
  10. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  11. package/build/button/deprecated.js +8 -6
  12. package/build/button/deprecated.js.map +1 -1
  13. package/build/button/index.js +52 -23
  14. package/build/button/index.js.map +1 -1
  15. package/build/button/types.js +6 -0
  16. package/build/button/types.js.map +1 -0
  17. package/build/color-list-picker/index.js.map +1 -1
  18. package/build/color-list-picker/types.js +6 -0
  19. package/build/color-list-picker/types.js.map +1 -0
  20. package/build/color-palette/index.js +9 -61
  21. package/build/color-palette/index.js.map +1 -1
  22. package/build/color-palette/index.native.js +24 -9
  23. package/build/color-palette/index.native.js.map +1 -1
  24. package/build/color-palette/utils.js +103 -0
  25. package/build/color-palette/utils.js.map +1 -0
  26. package/build/custom-gradient-picker/gradient-bar/utils.js +1 -1
  27. package/build/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
  28. package/build/date-time/date/index.js.map +1 -1
  29. package/build/dropdown/index.js +20 -8
  30. package/build/dropdown/index.js.map +1 -1
  31. package/build/form-token-field/token.js +1 -1
  32. package/build/form-token-field/token.js.map +1 -1
  33. package/build/gradient-picker/index.js +9 -1
  34. package/build/gradient-picker/index.js.map +1 -1
  35. package/build/h-stack/component.js +0 -1
  36. package/build/h-stack/component.js.map +1 -1
  37. package/build/input-control/input-field.js +4 -2
  38. package/build/input-control/input-field.js.map +1 -1
  39. package/build/keyboard-shortcuts/index.js +44 -16
  40. package/build/keyboard-shortcuts/index.js.map +1 -1
  41. package/build/keyboard-shortcuts/types.js +6 -0
  42. package/build/keyboard-shortcuts/types.js.map +1 -0
  43. package/build/modal/index.js +1 -1
  44. package/build/modal/index.js.map +1 -1
  45. package/build/notice/index.js +16 -18
  46. package/build/notice/index.js.map +1 -1
  47. package/build/notice/list.js +23 -8
  48. package/build/notice/list.js.map +1 -1
  49. package/build/notice/types.js +6 -0
  50. package/build/notice/types.js.map +1 -0
  51. package/build/number-control/index.js +1 -1
  52. package/build/number-control/index.js.map +1 -1
  53. package/build/query-controls/author-select.js +7 -3
  54. package/build/query-controls/author-select.js.map +1 -1
  55. package/build/query-controls/category-select.js +7 -3
  56. package/build/query-controls/category-select.js.map +1 -1
  57. package/build/query-controls/index.js +68 -20
  58. package/build/query-controls/index.js.map +1 -1
  59. package/build/query-controls/terms.js +4 -3
  60. package/build/query-controls/terms.js.map +1 -1
  61. package/build/query-controls/types.js +6 -0
  62. package/build/query-controls/types.js.map +1 -0
  63. package/build/slot-fill/bubbles-virtually/fill.js +1 -0
  64. package/build/slot-fill/bubbles-virtually/fill.js.map +1 -1
  65. package/build/slot-fill/slot.js +1 -0
  66. package/build/slot-fill/slot.js.map +1 -1
  67. package/build/slot-fill/use-slot.js +1 -11
  68. package/build/slot-fill/use-slot.js.map +1 -1
  69. package/build/snackbar/index.js.map +1 -1
  70. package/build/snackbar/list.js.map +1 -1
  71. package/build/tab-panel/index.js +36 -8
  72. package/build/tab-panel/index.js.map +1 -1
  73. package/build/tree-grid/index.js +1 -1
  74. package/build/tree-grid/index.js.map +1 -1
  75. package/build/tree-select/index.js +2 -6
  76. package/build/tree-select/index.js.map +1 -1
  77. package/build-module/alignment-matrix-control/utils.js +2 -2
  78. package/build-module/alignment-matrix-control/utils.js.map +1 -1
  79. package/build-module/autocomplete/autocompleter-ui.js +1 -2
  80. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  81. package/build-module/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  82. package/build-module/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  83. package/build-module/border-control/border-control-dropdown/component.js +7 -4
  84. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  85. package/build-module/button/deprecated.js +8 -5
  86. package/build-module/button/deprecated.js.map +1 -1
  87. package/build-module/button/index.js +51 -22
  88. package/build-module/button/index.js.map +1 -1
  89. package/build-module/button/types.js +2 -0
  90. package/build-module/button/types.js.map +1 -0
  91. package/build-module/color-list-picker/index.js.map +1 -1
  92. package/build-module/color-list-picker/types.js +2 -0
  93. package/build-module/color-list-picker/types.js.map +1 -0
  94. package/build-module/color-palette/index.js +7 -54
  95. package/build-module/color-palette/index.js.map +1 -1
  96. package/build-module/color-palette/index.native.js +24 -8
  97. package/build-module/color-palette/index.native.js.map +1 -1
  98. package/build-module/color-palette/utils.js +79 -0
  99. package/build-module/color-palette/utils.js.map +1 -0
  100. package/build-module/custom-gradient-picker/gradient-bar/utils.js +1 -1
  101. package/build-module/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
  102. package/build-module/date-time/date/index.js +1 -1
  103. package/build-module/date-time/date/index.js.map +1 -1
  104. package/build-module/dropdown/index.js +19 -8
  105. package/build-module/dropdown/index.js.map +1 -1
  106. package/build-module/form-token-field/token.js +1 -1
  107. package/build-module/form-token-field/token.js.map +1 -1
  108. package/build-module/gradient-picker/index.js +9 -2
  109. package/build-module/gradient-picker/index.js.map +1 -1
  110. package/build-module/h-stack/component.js +0 -1
  111. package/build-module/h-stack/component.js.map +1 -1
  112. package/build-module/input-control/input-field.js +4 -2
  113. package/build-module/input-control/input-field.js.map +1 -1
  114. package/build-module/keyboard-shortcuts/index.js +48 -16
  115. package/build-module/keyboard-shortcuts/index.js.map +1 -1
  116. package/build-module/keyboard-shortcuts/types.js +2 -0
  117. package/build-module/keyboard-shortcuts/types.js.map +1 -0
  118. package/build-module/modal/index.js +1 -1
  119. package/build-module/modal/index.js.map +1 -1
  120. package/build-module/notice/index.js +14 -15
  121. package/build-module/notice/index.js.map +1 -1
  122. package/build-module/notice/list.js +23 -8
  123. package/build-module/notice/list.js.map +1 -1
  124. package/build-module/notice/types.js +2 -0
  125. package/build-module/notice/types.js.map +1 -0
  126. package/build-module/number-control/index.js +1 -1
  127. package/build-module/number-control/index.js.map +1 -1
  128. package/build-module/query-controls/author-select.js +7 -3
  129. package/build-module/query-controls/author-select.js.map +1 -1
  130. package/build-module/query-controls/category-select.js +8 -4
  131. package/build-module/query-controls/category-select.js.map +1 -1
  132. package/build-module/query-controls/index.js +64 -20
  133. package/build-module/query-controls/index.js.map +1 -1
  134. package/build-module/query-controls/terms.js +8 -4
  135. package/build-module/query-controls/terms.js.map +1 -1
  136. package/build-module/query-controls/types.js +2 -0
  137. package/build-module/query-controls/types.js.map +1 -0
  138. package/build-module/slot-fill/bubbles-virtually/fill.js +1 -0
  139. package/build-module/slot-fill/bubbles-virtually/fill.js.map +1 -1
  140. package/build-module/slot-fill/slot.js +1 -0
  141. package/build-module/slot-fill/slot.js.map +1 -1
  142. package/build-module/slot-fill/use-slot.js +2 -12
  143. package/build-module/slot-fill/use-slot.js.map +1 -1
  144. package/build-module/snackbar/index.js.map +1 -1
  145. package/build-module/snackbar/list.js.map +1 -1
  146. package/build-module/tab-panel/index.js +36 -8
  147. package/build-module/tab-panel/index.js.map +1 -1
  148. package/build-module/tree-grid/index.js +1 -1
  149. package/build-module/tree-grid/index.js.map +1 -1
  150. package/build-module/tree-select/index.js +2 -6
  151. package/build-module/tree-select/index.js.map +1 -1
  152. package/build-style/style-rtl.css +5 -0
  153. package/build-style/style.css +5 -0
  154. package/build-types/border-box-control/border-box-control/hook.d.ts +1 -1
  155. package/build-types/border-box-control/border-box-control-linked-button/component.d.ts +1 -1
  156. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +171 -160
  157. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
  158. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +1 -1
  159. package/build-types/border-control/border-control/hook.d.ts +1 -1
  160. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  161. package/build-types/border-control/border-control-dropdown/hook.d.ts +1 -1
  162. package/build-types/button/deprecated.d.ts +143 -7
  163. package/build-types/button/deprecated.d.ts.map +1 -1
  164. package/build-types/button/index.d.ts +20 -3
  165. package/build-types/button/index.d.ts.map +1 -1
  166. package/build-types/button/stories/index.d.ts +20 -0
  167. package/build-types/button/stories/index.d.ts.map +1 -0
  168. package/build-types/button/test/index.d.ts +2 -0
  169. package/build-types/button/test/index.d.ts.map +1 -0
  170. package/build-types/button/types.d.ts +134 -0
  171. package/build-types/button/types.d.ts.map +1 -0
  172. package/build-types/color-list-picker/index.d.ts +5 -0
  173. package/build-types/color-list-picker/index.d.ts.map +1 -0
  174. package/build-types/color-list-picker/types.d.ts +42 -0
  175. package/build-types/color-list-picker/types.d.ts.map +1 -0
  176. package/build-types/color-palette/index.d.ts +2 -4
  177. package/build-types/color-palette/index.d.ts.map +1 -1
  178. package/build-types/color-palette/stories/index.d.ts +2 -2
  179. package/build-types/color-palette/styles.d.ts +1 -1
  180. package/build-types/color-palette/types.d.ts +1 -1
  181. package/build-types/color-palette/types.d.ts.map +1 -1
  182. package/build-types/color-palette/utils.d.ts +14 -0
  183. package/build-types/color-palette/utils.d.ts.map +1 -0
  184. package/build-types/color-picker/styles.d.ts +2 -2
  185. package/build-types/date-time/date/index.d.ts.map +1 -1
  186. package/build-types/date-time/date/styles.d.ts +3 -3
  187. package/build-types/dropdown/index.d.ts +4 -4
  188. package/build-types/dropdown/index.d.ts.map +1 -1
  189. package/build-types/dropdown/stories/index.d.ts.map +1 -1
  190. package/build-types/dropdown/types.d.ts +9 -10
  191. package/build-types/dropdown/types.d.ts.map +1 -1
  192. package/build-types/font-size-picker/styles.d.ts +2 -2
  193. package/build-types/h-stack/component.d.ts +0 -1
  194. package/build-types/h-stack/component.d.ts.map +1 -1
  195. package/build-types/input-control/input-field.d.ts.map +1 -1
  196. package/build-types/keyboard-shortcuts/index.d.ts +38 -0
  197. package/build-types/keyboard-shortcuts/index.d.ts.map +1 -0
  198. package/build-types/keyboard-shortcuts/stories/index.d.ts +12 -0
  199. package/build-types/keyboard-shortcuts/stories/index.d.ts.map +1 -0
  200. package/build-types/keyboard-shortcuts/test/index.d.ts +2 -0
  201. package/build-types/keyboard-shortcuts/test/index.d.ts.map +1 -0
  202. package/build-types/keyboard-shortcuts/types.d.ts +48 -0
  203. package/build-types/keyboard-shortcuts/types.d.ts.map +1 -0
  204. package/build-types/modal/index.d.ts.map +1 -1
  205. package/build-types/navigator/navigator-back-button/component.d.ts +1 -1
  206. package/build-types/navigator/navigator-back-button/hook.d.ts +2 -2
  207. package/build-types/navigator/navigator-button/component.d.ts +1 -1
  208. package/build-types/navigator/navigator-button/hook.d.ts +2 -2
  209. package/build-types/notice/index.d.ts +16 -0
  210. package/build-types/notice/index.d.ts.map +1 -0
  211. package/build-types/notice/list.d.ts +32 -0
  212. package/build-types/notice/list.d.ts.map +1 -0
  213. package/build-types/notice/stories/index.d.ts +17 -0
  214. package/build-types/notice/stories/index.d.ts.map +1 -0
  215. package/build-types/notice/test/index.d.ts +2 -0
  216. package/build-types/notice/test/index.d.ts.map +1 -0
  217. package/build-types/notice/test/list.d.ts +2 -0
  218. package/build-types/notice/test/list.d.ts.map +1 -0
  219. package/build-types/notice/types.d.ts +128 -0
  220. package/build-types/notice/types.d.ts.map +1 -0
  221. package/build-types/number-control/styles/number-control-styles.d.ts +2 -2
  222. package/build-types/number-control/styles/number-control-styles.d.ts.map +1 -1
  223. package/build-types/placeholder/stories/index.d.ts.map +1 -1
  224. package/build-types/query-controls/author-select.d.ts +4 -0
  225. package/build-types/query-controls/author-select.d.ts.map +1 -0
  226. package/build-types/query-controls/category-select.d.ts +4 -0
  227. package/build-types/query-controls/category-select.d.ts.map +1 -0
  228. package/build-types/query-controls/index.d.ts +30 -0
  229. package/build-types/query-controls/index.d.ts.map +1 -0
  230. package/build-types/query-controls/stories/index.d.ts +13 -0
  231. package/build-types/query-controls/stories/index.d.ts.map +1 -0
  232. package/build-types/query-controls/terms.d.ts +13 -0
  233. package/build-types/query-controls/terms.d.ts.map +1 -0
  234. package/build-types/query-controls/test/terms.d.ts +2 -0
  235. package/build-types/query-controls/test/terms.d.ts.map +1 -0
  236. package/build-types/query-controls/types.d.ts +131 -0
  237. package/build-types/query-controls/types.d.ts.map +1 -0
  238. package/build-types/range-control/index.d.ts +1 -1
  239. package/build-types/slot-fill/bubbles-virtually/fill.d.ts.map +1 -1
  240. package/build-types/slot-fill/use-slot.d.ts.map +1 -1
  241. package/build-types/snackbar/index.d.ts +9 -2
  242. package/build-types/snackbar/index.d.ts.map +1 -1
  243. package/build-types/snackbar/list.d.ts.map +1 -1
  244. package/build-types/snackbar/types.d.ts +15 -88
  245. package/build-types/snackbar/types.d.ts.map +1 -1
  246. package/build-types/tab-panel/index.d.ts.map +1 -1
  247. package/build-types/tab-panel/types.d.ts +1 -1
  248. package/build-types/tab-panel/types.d.ts.map +1 -1
  249. package/build-types/toggle-group-control/stories/index.d.ts.map +1 -1
  250. package/build-types/tree-select/index.d.ts.map +1 -1
  251. package/build-types/ui/form-group/form-group.d.ts +2 -2
  252. package/package.json +18 -17
  253. package/src/alignment-matrix-control/utils.tsx +2 -2
  254. package/src/autocomplete/autocompleter-ui.js +1 -2
  255. package/src/autocomplete/test/index.js +1 -5
  256. package/src/border-box-control/border-box-control-linked-button/component.tsx +1 -1
  257. package/src/border-box-control/border-box-control-linked-button/hook.ts +1 -1
  258. package/src/border-control/border-control-dropdown/component.tsx +9 -8
  259. package/src/box-control/test/index.js +11 -35
  260. package/src/button/README.md +49 -55
  261. package/src/button/{deprecated.js → deprecated.tsx} +19 -4
  262. package/src/button/{index.js → index.tsx} +95 -34
  263. package/src/button/stories/index.tsx +106 -0
  264. package/src/button/style.scss +3 -2
  265. package/src/button/test/{index.js → index.tsx} +30 -7
  266. package/src/button/types.ts +138 -0
  267. package/src/checkbox-control/test/index.tsx +1 -5
  268. package/src/color-list-picker/{index.js → index.tsx} +3 -2
  269. package/src/color-list-picker/types.ts +46 -0
  270. package/src/color-palette/README.md +1 -1
  271. package/src/color-palette/index.native.js +11 -4
  272. package/src/color-palette/index.tsx +11 -67
  273. package/src/color-palette/test/index.tsx +4 -14
  274. package/src/color-palette/test/utils.ts +1 -1
  275. package/src/color-palette/types.ts +1 -1
  276. package/src/color-palette/utils.ts +98 -0
  277. package/src/color-picker/test/index.js +6 -15
  278. package/src/combobox-control/test/index.js +1 -6
  279. package/src/confirm-dialog/test/index.js +9 -29
  280. package/src/custom-gradient-picker/gradient-bar/utils.js +1 -1
  281. package/src/date-time/date/index.tsx +2 -1
  282. package/src/date-time/date/test/index.tsx +2 -8
  283. package/src/date-time/time/test/index.tsx +9 -29
  284. package/src/dimension-control/test/index.test.js +2 -8
  285. package/src/disabled/test/index.tsx +1 -5
  286. package/src/draggable/test/index.native.js +4 -4
  287. package/src/dropdown/README.md +1 -8
  288. package/src/dropdown/index.tsx +17 -6
  289. package/src/dropdown/stories/index.tsx +3 -3
  290. package/src/dropdown/test/index.tsx +2 -8
  291. package/src/dropdown/types.ts +9 -10
  292. package/src/dropdown-menu/README.md +1 -1
  293. package/src/dropdown-menu/stories/index.js +96 -27
  294. package/src/dropdown-menu/test/index.js +2 -8
  295. package/src/external-link/test/index.tsx +1 -6
  296. package/src/focal-point-picker/test/index.js +3 -11
  297. package/src/font-size-picker/test/index.tsx +14 -44
  298. package/src/form-file-upload/test/index.tsx +2 -17
  299. package/src/form-toggle/test/index.tsx +1 -5
  300. package/src/form-token-field/test/index.tsx +80 -163
  301. package/src/form-token-field/token.tsx +1 -1
  302. package/src/gradient-picker/index.js +15 -4
  303. package/src/guide/test/index.js +5 -17
  304. package/src/h-stack/component.tsx +0 -1
  305. package/src/higher-order/with-filters/test/index.js +24 -24
  306. package/src/higher-order/with-focus-outside/test/index.js +11 -25
  307. package/src/higher-order/with-focus-return/test/index.js +1 -5
  308. package/src/input-control/input-field.tsx +3 -1
  309. package/src/input-control/test/index.js +1 -6
  310. package/src/isolated-event-container/test/index.js +2 -8
  311. package/src/keyboard-shortcuts/README.md +1 -1
  312. package/src/keyboard-shortcuts/index.tsx +93 -0
  313. package/src/keyboard-shortcuts/stories/index.tsx +60 -0
  314. package/src/keyboard-shortcuts/test/{index.js → index.tsx} +16 -6
  315. package/src/keyboard-shortcuts/types.ts +51 -0
  316. package/src/modal/index.tsx +1 -2
  317. package/src/navigable-container/test/navigable-menu.js +5 -17
  318. package/src/navigable-container/test/tababble-container.js +3 -11
  319. package/src/navigation/test/index.js +3 -11
  320. package/src/navigator/test/index.tsx +6 -20
  321. package/src/notice/README.md +89 -42
  322. package/src/notice/{index.js → index.tsx} +28 -20
  323. package/src/notice/list.tsx +72 -0
  324. package/src/notice/stories/index.tsx +119 -0
  325. package/src/notice/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  326. package/src/notice/test/{index.js → index.tsx} +7 -4
  327. package/src/notice/test/{list.js → list.tsx} +0 -0
  328. package/src/notice/types.ts +136 -0
  329. package/src/number-control/index.tsx +1 -1
  330. package/src/number-control/test/index.tsx +28 -86
  331. package/src/panel/test/body.js +2 -8
  332. package/src/placeholder/stories/index.tsx +1 -0
  333. package/src/query-controls/README.md +56 -56
  334. package/src/query-controls/author-select.tsx +37 -0
  335. package/src/query-controls/category-select.tsx +46 -0
  336. package/src/query-controls/index.tsx +192 -0
  337. package/src/query-controls/stories/index.tsx +205 -0
  338. package/src/query-controls/terms.ts +57 -0
  339. package/src/query-controls/test/{terms.js → terms.ts} +36 -20
  340. package/src/query-controls/types.ts +150 -0
  341. package/src/select-control/test/select-control.tsx +1 -6
  342. package/src/slot-fill/bubbles-virtually/fill.js +1 -0
  343. package/src/slot-fill/slot.js +1 -1
  344. package/src/slot-fill/use-slot.js +6 -16
  345. package/src/snackbar/index.tsx +6 -5
  346. package/src/snackbar/list.tsx +4 -2
  347. package/src/snackbar/types.ts +18 -92
  348. package/src/tab-panel/index.tsx +38 -16
  349. package/src/tab-panel/style.scss +8 -0
  350. package/src/tab-panel/test/index.tsx +35 -7
  351. package/src/tab-panel/types.ts +1 -1
  352. package/src/theme/test/index.tsx +4 -4
  353. package/src/toggle-group-control/stories/index.tsx +1 -0
  354. package/src/toggle-group-control/test/index.tsx +7 -23
  355. package/src/toolbar/stories/index.js +75 -72
  356. package/src/tools-panel/stories/index.js +3 -0
  357. package/src/tools-panel/test/index.js +1 -1
  358. package/src/tree-grid/index.js +1 -1
  359. package/src/tree-select/index.tsx +3 -6
  360. package/src/ui/context/test/context-connect.tsx +2 -0
  361. package/src/ui/context/test/wordpress-component.tsx +2 -0
  362. package/src/unit-control/test/index.tsx +21 -74
  363. package/src/utils/hooks/test/use-latest-ref.js +15 -18
  364. package/tsconfig.json +1 -4
  365. package/tsconfig.tsbuildinfo +1 -1
  366. package/build-types/radio-context/index.d.ts +0 -6
  367. package/build-types/radio-context/index.d.ts.map +0 -1
  368. package/src/button/stories/index.js +0 -179
  369. package/src/keyboard-shortcuts/index.js +0 -56
  370. package/src/notice/list.js +0 -48
  371. package/src/notice/stories/index.js +0 -46
  372. package/src/query-controls/author-select.js +0 -23
  373. package/src/query-controls/category-select.js +0 -31
  374. package/src/query-controls/index.js +0 -122
  375. package/src/query-controls/terms.js +0 -40
  376. package/src/toolbar/stories/toolbar-button.js +0 -32
  377. package/src/toolbar/stories/toolbar-group.js +0 -33
@@ -9,12 +9,7 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import TabPanel from '..';
11
11
 
12
- jest.useFakeTimers();
13
-
14
- const setupUser = () =>
15
- userEvent.setup( {
16
- advanceTimers: jest.advanceTimersByTime,
17
- } );
12
+ const setupUser = () => userEvent.setup();
18
13
 
19
14
  const TABS = [
20
15
  {
@@ -147,7 +142,7 @@ describe( 'TabPanel', () => {
147
142
  );
148
143
  } );
149
144
 
150
- it( 'should select `initialTabname` if defined', () => {
145
+ it( 'should select `initialTabName` if defined', () => {
151
146
  const mockOnSelect = jest.fn();
152
147
 
153
148
  render(
@@ -162,6 +157,39 @@ describe( 'TabPanel', () => {
162
157
  expect( mockOnSelect ).toHaveBeenLastCalledWith( 'beta' );
163
158
  } );
164
159
 
160
+ it( 'waits for the tab with the `initialTabName` to become present in the `tabs` array before selecting it', () => {
161
+ const mockOnSelect = jest.fn();
162
+
163
+ const { rerender } = render(
164
+ <TabPanel
165
+ tabs={ TABS }
166
+ initialTabName="delta"
167
+ children={ () => undefined }
168
+ onSelect={ mockOnSelect }
169
+ />
170
+ );
171
+
172
+ // There should be no selected tab.
173
+ expect(
174
+ screen.queryByRole( 'tab', { selected: true } )
175
+ ).not.toBeInTheDocument();
176
+
177
+ rerender(
178
+ <TabPanel
179
+ tabs={ [
180
+ { name: 'delta', title: 'Delta', className: 'delta-class' },
181
+ ...TABS,
182
+ ] }
183
+ initialTabName="delta"
184
+ children={ () => undefined }
185
+ onSelect={ mockOnSelect }
186
+ />
187
+ );
188
+
189
+ expect( getSelectedTab() ).toHaveTextContent( 'Delta' );
190
+ expect( mockOnSelect ).toHaveBeenLastCalledWith( 'delta' );
191
+ } );
192
+
165
193
  it( 'should disable the tab when `disabled` is true', async () => {
166
194
  const user = setupUser();
167
195
  const mockOnSelect = jest.fn();
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { ReactNode } from 'react';
4
+ import type { MouseEvent, ReactNode } from 'react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -26,7 +26,7 @@ const MyThemableComponent = ( props: MyThemableComponentProps ) => {
26
26
 
27
27
  describe( 'Theme', () => {
28
28
  describe( 'accent color', () => {
29
- it( 'it does not define the accent color (and its variations) as a CSS variable when the `accent` prop is undefined', () => {
29
+ it( 'does not define the accent color (and its variations) as a CSS variable when the `accent` prop is undefined', () => {
30
30
  render(
31
31
  <Theme data-testid="theme">
32
32
  <MyThemableComponent>Inner</MyThemableComponent>
@@ -49,7 +49,7 @@ describe( 'Theme', () => {
49
49
  } );
50
50
  } );
51
51
 
52
- it( 'it defines the accent color (and its variations) as a CSS variable', () => {
52
+ it( 'defines the accent color (and its variations) as a CSS variable', () => {
53
53
  render(
54
54
  <Theme accent="#123abc" data-testid="theme">
55
55
  <MyThemableComponent>Inner</MyThemableComponent>
@@ -66,7 +66,7 @@ describe( 'Theme', () => {
66
66
  } );
67
67
 
68
68
  describe( 'background color', () => {
69
- it( 'it does not define the background color (and its dependent colors) as a CSS variable when the `background` prop is undefined', () => {
69
+ it( 'does not define the background color (and its dependent colors) as a CSS variable when the `background` prop is undefined', () => {
70
70
  render(
71
71
  <Theme data-testid="theme">
72
72
  <MyThemableComponent>Inner</MyThemableComponent>
@@ -91,7 +91,7 @@ describe( 'Theme', () => {
91
91
  } );
92
92
  } );
93
93
 
94
- it( 'it defines the background color (and its dependent colors) as a CSS variable', () => {
94
+ it( 'defines the background color (and its dependent colors) as a CSS variable', () => {
95
95
  render(
96
96
  <Theme background="#ffffff" data-testid="theme">
97
97
  <MyThemableComponent>Inner</MyThemableComponent>
@@ -48,6 +48,7 @@ const Template: ComponentStory< typeof ToggleGroupControl > = ( {
48
48
 
49
49
  return (
50
50
  <ToggleGroupControl
51
+ __nextHasNoMarginBottom
51
52
  { ...props }
52
53
  onChange={ ( ...changeArgs ) => {
53
54
  setValue( ...changeArgs );
@@ -18,8 +18,6 @@ import {
18
18
  ToggleGroupControlOptionIcon,
19
19
  } from '../index';
20
20
 
21
- jest.useFakeTimers();
22
-
23
21
  function getWrappingPopoverElement( element: HTMLElement ) {
24
22
  return element.closest( '.components-popover' );
25
23
  }
@@ -81,9 +79,7 @@ describe( 'ToggleGroupControl', () => {
81
79
  } );
82
80
  } );
83
81
  it( 'should call onChange with proper value', async () => {
84
- const user = userEvent.setup( {
85
- advanceTimers: jest.advanceTimersByTime,
86
- } );
82
+ const user = userEvent.setup();
87
83
  const mockOnChange = jest.fn();
88
84
 
89
85
  render(
@@ -102,9 +98,7 @@ describe( 'ToggleGroupControl', () => {
102
98
  } );
103
99
 
104
100
  it( 'should render tooltip where `showTooltip` === `true`', async () => {
105
- const user = userEvent.setup( {
106
- advanceTimers: jest.advanceTimersByTime,
107
- } );
101
+ const user = userEvent.setup();
108
102
  render(
109
103
  <ToggleGroupControl label="Test Toggle Group Control">
110
104
  { optionsWithTooltip }
@@ -131,9 +125,7 @@ describe( 'ToggleGroupControl', () => {
131
125
  } );
132
126
 
133
127
  it( 'should not render tooltip', async () => {
134
- const user = userEvent.setup( {
135
- advanceTimers: jest.advanceTimersByTime,
136
- } );
128
+ const user = userEvent.setup();
137
129
  render(
138
130
  <ToggleGroupControl label="Test Toggle Group Control">
139
131
  { optionsWithTooltip }
@@ -157,9 +149,7 @@ describe( 'ToggleGroupControl', () => {
157
149
  describe( 'isDeselectable = false', () => {
158
150
  it( 'should not be deselectable', async () => {
159
151
  const mockOnChange = jest.fn();
160
- const user = userEvent.setup( {
161
- advanceTimers: jest.advanceTimersByTime,
162
- } );
152
+ const user = userEvent.setup();
163
153
 
164
154
  render(
165
155
  <ToggleGroupControl
@@ -180,9 +170,7 @@ describe( 'ToggleGroupControl', () => {
180
170
  } );
181
171
 
182
172
  it( 'should not tab to next radio option', async () => {
183
- const user = userEvent.setup( {
184
- advanceTimers: jest.advanceTimersByTime,
185
- } );
173
+ const user = userEvent.setup();
186
174
 
187
175
  render(
188
176
  <ToggleGroupControl value="rigas" label="Test">
@@ -205,9 +193,7 @@ describe( 'ToggleGroupControl', () => {
205
193
  describe( 'isDeselectable = true', () => {
206
194
  it( 'should be deselectable', async () => {
207
195
  const mockOnChange = jest.fn();
208
- const user = userEvent.setup( {
209
- advanceTimers: jest.advanceTimersByTime,
210
- } );
196
+ const user = userEvent.setup();
211
197
 
212
198
  render(
213
199
  <ToggleGroupControl
@@ -237,9 +223,7 @@ describe( 'ToggleGroupControl', () => {
237
223
  } );
238
224
 
239
225
  it( 'should tab to the next option button', async () => {
240
- const user = userEvent.setup( {
241
- advanceTimers: jest.advanceTimersByTime,
242
- } );
226
+ const user = userEvent.setup();
243
227
 
244
228
  render(
245
229
  <ToggleGroupControl
@@ -12,15 +12,42 @@ import {
12
12
  link,
13
13
  more,
14
14
  paragraph,
15
+ arrowUp,
16
+ arrowDown,
17
+ arrowLeft,
18
+ arrowRight,
19
+ chevronDown,
15
20
  } from '@wordpress/icons';
16
21
 
17
22
  /**
18
23
  * Internal dependencies
19
24
  */
20
- import { Toolbar, ToolbarButton, ToolbarGroup, ToolbarItem } from '..';
21
- import { SVG, Path, DropdownMenu } from '../../..';
25
+ import {
26
+ Toolbar,
27
+ ToolbarButton,
28
+ ToolbarGroup,
29
+ ToolbarItem,
30
+ ToolbarDropdownMenu,
31
+ } from '..';
32
+ import { SVG, Path, DropdownMenu } from '../../';
22
33
 
23
- export default { title: 'Components/Toolbar', component: Toolbar };
34
+ export default {
35
+ title: 'Components/Toolbar',
36
+ component: Toolbar,
37
+ subcomponents: {
38
+ ToolbarButton,
39
+ ToolbarGroup,
40
+ ToolbarItem,
41
+ ToolbarDropdownMenu,
42
+ },
43
+ argTypes: {
44
+ children: { control: { type: null } },
45
+ },
46
+ parameters: {
47
+ controls: { expanded: true },
48
+ docs: { source: { state: 'open' } },
49
+ },
50
+ };
24
51
 
25
52
  function InlineImageIcon() {
26
53
  return (
@@ -30,13 +57,20 @@ function InlineImageIcon() {
30
57
  );
31
58
  }
32
59
 
33
- /* eslint-disable no-restricted-syntax */
34
- export const _default = () => {
35
- return (
36
- // id is required for server side rendering
37
- <Toolbar label="Options" id="options-toolbar">
60
+ const Template = ( props ) => (
61
+ <div style={ { height: 280 } }>
62
+ <Toolbar { ...props } />
63
+ </div>
64
+ );
65
+
66
+ export const Default = Template.bind( {} );
67
+ Default.args = {
68
+ label: 'Options',
69
+ id: 'options-toolbar',
70
+ children: (
71
+ <>
38
72
  <ToolbarGroup>
39
- <ToolbarButton icon={ paragraph } label="Paragraph" />
73
+ <ToolbarButton icon={ paragraph } text="Paragraph" />
40
74
  </ToolbarGroup>
41
75
  <ToolbarGroup>
42
76
  <ToolbarItem>
@@ -98,72 +132,41 @@ export const _default = () => {
98
132
  { icon: alignRight, title: 'Align right' },
99
133
  ] }
100
134
  />
101
- </Toolbar>
102
- );
135
+ <ToolbarDropdownMenu
136
+ icon={ chevronDown }
137
+ label="Select a direction"
138
+ controls={ [
139
+ {
140
+ title: 'Up',
141
+ icon: arrowUp,
142
+ },
143
+ {
144
+ title: 'Right',
145
+ icon: arrowRight,
146
+ },
147
+ {
148
+ title: 'Down',
149
+ icon: arrowDown,
150
+ },
151
+ {
152
+ title: 'Left',
153
+ icon: arrowLeft,
154
+ },
155
+ ] }
156
+ />
157
+ </>
158
+ ),
103
159
  };
104
160
 
105
- export const withoutGroup = () => {
106
- return (
107
- // id is required for server side rendering
108
- <Toolbar label="Options" id="options-toolbar-without-group">
161
+ export const WithoutGroup = Template.bind( {} );
162
+ WithoutGroup.args = {
163
+ label: 'Options',
164
+ id: 'options-toolbar-without-group',
165
+ children: (
166
+ <>
109
167
  <ToolbarButton icon={ formatBold } label="Bold" isPressed />
110
168
  <ToolbarButton icon={ formatItalic } label="Italic" />
111
169
  <ToolbarButton icon={ link } label="Link" />
112
- </Toolbar>
113
- );
114
- };
115
- /* eslint-enable no-restricted-syntax */
116
-
117
- export const toolbars = () => {
118
- return (
119
- <div>
120
- <div style={ { padding: '20px' } }>
121
- <h2>Icon-only Toolbar</h2>
122
- <Toolbar>
123
- <ToolbarButton icon={ formatBold } title="Bold" />
124
- <ToolbarButton
125
- icon={ formatItalic }
126
- title="Italic"
127
- isActive
128
- />
129
- <ToolbarButton icon={ link } title="Link" />
130
- </Toolbar>
131
- </div>
132
-
133
- <div style={ { padding: '20px' } }>
134
- <h2>Text-only Toolbar</h2>
135
- <Toolbar>
136
- <ToolbarButton>Bold Format</ToolbarButton>
137
- <ToolbarButton isActive>Italic Format</ToolbarButton>
138
- <ToolbarButton>Link Format</ToolbarButton>
139
- </Toolbar>
140
- </div>
141
-
142
- <div style={ { padding: '20px' } }>
143
- <h2>Text and Icon Toolbar</h2>
144
- <Toolbar>
145
- <ToolbarButton icon={ formatBold } title="Bold" />
146
- <ToolbarButton isActive>Bold Format</ToolbarButton>
147
- <ToolbarButton icon={ formatItalic } title="Italic" />
148
- <ToolbarButton>Italic Format</ToolbarButton>
149
- <ToolbarButton icon={ link } title="Link" />
150
- <ToolbarButton>Link Format</ToolbarButton>
151
- </Toolbar>
152
- </div>
153
-
154
- <div style={ { padding: '20px' } }>
155
- <h2>Single Icon Button Toolbar</h2>
156
- <Toolbar>
157
- <ToolbarButton icon={ formatBold } title="Bold" />
158
- </Toolbar>
159
- </div>
160
-
161
- <div style={ { padding: '20px' } }>
162
- <h2>Single Text Button toolbar</h2>
163
- <Toolbar>
164
- <ToolbarButton>Bold Toolbar</ToolbarButton>
165
- </Toolbar>
166
- </div>
167
- </div>
168
- );
170
+ </>
171
+ ),
169
172
  };
@@ -87,6 +87,7 @@ export const _default = () => {
87
87
  onDeselect={ () => setScale( undefined ) }
88
88
  >
89
89
  <ToggleGroupControl
90
+ __nextHasNoMarginBottom
90
91
  label="Scale"
91
92
  value={ scale }
92
93
  onChange={ ( next ) => setScale( next ) }
@@ -367,6 +368,7 @@ export const WithConditionalDefaultControl = () => {
367
368
  isShownByDefault={ !! height }
368
369
  >
369
370
  <ToggleGroupControl
371
+ __nextHasNoMarginBottom
370
372
  label="Scale"
371
373
  value={ scale }
372
374
  onChange={ ( next ) =>
@@ -456,6 +458,7 @@ export const WithConditionallyRenderedControl = () => {
456
458
  isShownByDefault={ true }
457
459
  >
458
460
  <ToggleGroupControl
461
+ __nextHasNoMarginBottom
459
462
  label="Scale"
460
463
  value={ scale }
461
464
  onChange={ ( next ) =>
@@ -582,7 +582,7 @@ describe( 'ToolsPanel', () => {
582
582
  // registerPanelItem has still only been called once.
583
583
  expect( context.registerPanelItem ).toHaveBeenCalledTimes( 1 );
584
584
  // deregisterPanelItem is called, given that we have switched panels.
585
- expect( context.deregisterPanelItem ).toBeCalledWith(
585
+ expect( context.deregisterPanelItem ).toHaveBeenCalledWith(
586
586
  altControlProps.label
587
587
  );
588
588
 
@@ -16,7 +16,7 @@ import RovingTabIndexContainer from './roving-tab-index';
16
16
  *
17
17
  * @param {Element} rowElement The DOM element representing the row.
18
18
  *
19
- * @return {?Array} The array of focusables in the row.
19
+ * @return {Array | undefined} The array of focusables in the row.
20
20
  */
21
21
  function getRowFocusables( rowElement ) {
22
22
  const focusablesInRow = focus.focusable.find( rowElement, {
@@ -1,12 +1,9 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { unescape as unescapeString } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
9
4
  import { useMemo } from '@wordpress/element';
5
+ import { decodeEntities } from '@wordpress/html-entities';
6
+
10
7
  /**
11
8
  * Internal dependencies
12
9
  */
@@ -18,7 +15,7 @@ function getSelectOptions( tree: Tree[], level = 0 ): SelectOptions {
18
15
  {
19
16
  value: treeNode.id,
20
17
  label:
21
- '\u00A0'.repeat( level * 3 ) + unescapeString( treeNode.name ),
18
+ '\u00A0'.repeat( level * 3 ) + decodeEntities( treeNode.name ),
22
19
  },
23
20
  ...getSelectOptions( treeNode.children || [], level + 1 ),
24
21
  ] );
@@ -10,6 +10,7 @@ import { contextConnect, contextConnectWithoutRef } from '../context-connect';
10
10
  import type { WordPressComponentProps } from '../wordpress-component';
11
11
 
12
12
  // Static TypeScript tests
13
+ /* eslint-disable jest/expect-expect */
13
14
  describe( 'ref forwarding', () => {
14
15
  const ComponentWithRef = (
15
16
  props: WordPressComponentProps< {}, 'div' >,
@@ -53,3 +54,4 @@ describe( 'ref forwarding', () => {
53
54
  <NoRef foo={ null } />;
54
55
  } );
55
56
  } );
57
+ /* eslint-enable jest/expect-expect */
@@ -14,6 +14,7 @@ import { forwardRef } from '@wordpress/element';
14
14
  import type { WordPressComponentProps } from '../wordpress-component';
15
15
 
16
16
  // Static TypeScript checks
17
+ /* eslint-disable jest/expect-expect */
17
18
  describe( 'WordPressComponentProps', () => {
18
19
  it( 'should not accept a ref', () => {
19
20
  const Foo = ( props: WordPressComponentProps< {}, 'div' > ) => (
@@ -34,3 +35,4 @@ describe( 'WordPressComponentProps', () => {
34
35
  <ForwardedFoo ref={ null } />;
35
36
  } );
36
37
  } );
38
+ /* eslint-enable jest/expect-expect */