@wordpress/components 23.2.0 → 23.3.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 (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
@@ -1,52 +1,121 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { text, boolean } from '@storybook/addon-knobs';
5
-
6
1
  /**
7
2
  * Internal dependencies
8
3
  */
9
4
  import DropdownMenu from '../';
5
+ import { MenuGroup, MenuItem } from '../../';
10
6
 
11
7
  /**
12
8
  * WordPress dependencies
13
9
  */
14
- import { menu, arrowUp, arrowDown } from '@wordpress/icons';
10
+ import {
11
+ menu,
12
+ arrowUp,
13
+ arrowDown,
14
+ chevronDown,
15
+ more,
16
+ trash,
17
+ } from '@wordpress/icons';
15
18
 
16
19
  export default {
17
20
  title: 'Components/DropdownMenu',
18
21
  component: DropdownMenu,
22
+ argTypes: {
23
+ className: { control: { type: 'text' } },
24
+ children: { control: { type: null } },
25
+ disableOpenOnArrowDown: { control: { type: 'boolean' } },
26
+ icon: {
27
+ options: [ 'menu', 'chevronDown', 'more' ],
28
+ mapping: { menu, chevronDown, more },
29
+ control: { type: 'select' },
30
+ },
31
+ menuProps: {
32
+ control: { type: 'object' },
33
+ },
34
+ noIcons: { control: { type: 'boolean' } },
35
+ popoverProps: {
36
+ control: { type: 'object' },
37
+ },
38
+ text: { control: { type: 'text' } },
39
+ toggleProps: {
40
+ control: { type: 'object' },
41
+ },
42
+ },
19
43
  parameters: {
20
- knobs: { disable: false },
44
+ controls: { expanded: true },
45
+ docs: { source: { state: 'open' } },
21
46
  },
22
47
  };
23
48
 
24
- export const _default = () => {
25
- const label = text( 'Label', 'Select a direction.' );
26
- const firstMenuItemLabel = text( 'First Menu Item Label', 'Up' );
27
- const secondMenuItemLabel = text( 'First Menu Item Label', 'Down' );
28
- const toggleButtonTootip = boolean(
29
- 'Show tooltip on a toggle button',
30
- true
31
- );
49
+ const Template = ( props ) => (
50
+ <div style={ { height: 150 } }>
51
+ <DropdownMenu { ...props } />
52
+ </div>
53
+ );
32
54
 
33
- const controls = [
55
+ export const Default = Template.bind( {} );
56
+ Default.args = {
57
+ label: 'Select a direction.',
58
+ icon: menu,
59
+ controls: [
34
60
  {
35
- title: firstMenuItemLabel,
61
+ title: 'First Menu Item Label',
36
62
  icon: arrowUp,
63
+ // eslint-disable-next-line no-console
64
+ onClick: () => console.log( 'up!' ),
37
65
  },
38
66
  {
39
- title: secondMenuItemLabel,
67
+ title: 'Second Menu Item Label',
40
68
  icon: arrowDown,
69
+ // eslint-disable-next-line no-console
70
+ onClick: () => console.log( 'down!' ),
41
71
  },
42
- ];
72
+ ],
73
+ };
43
74
 
44
- return (
45
- <DropdownMenu
46
- icon={ menu }
47
- label={ label }
48
- controls={ controls }
49
- toggleProps={ { showTooltip: toggleButtonTootip } }
50
- />
51
- );
75
+ export const WithChildren = Template.bind( {} );
76
+ // Adding custom source because Storybook is not able to show the contents of
77
+ // the `children` prop correctly in the code snippet.
78
+ WithChildren.parameters = {
79
+ docs: {
80
+ source: {
81
+ code: `<DropdownMenu label="Select a direction." icon={ more }>
82
+ <MenuGroup>
83
+ <MenuItem icon={ arrowUp } onClick={ onClose }>
84
+ Move Up
85
+ </MenuItem>
86
+ <MenuItem icon={ arrowDown } onClick={ onClose }>
87
+ Move Down
88
+ </MenuItem>
89
+ </MenuGroup>
90
+ <MenuGroup>
91
+ <MenuItem icon={ trash } onClick={ onClose }>
92
+ Remove
93
+ </MenuItem>
94
+ </MenuGroup>
95
+ </DropdownMenu>`,
96
+ language: 'jsx',
97
+ type: 'auto',
98
+ },
99
+ },
100
+ };
101
+ WithChildren.args = {
102
+ label: 'Select a direction.',
103
+ icon: more,
104
+ children: ( { onClose } ) => (
105
+ <>
106
+ <MenuGroup>
107
+ <MenuItem icon={ arrowUp } onClick={ onClose }>
108
+ Move Up
109
+ </MenuItem>
110
+ <MenuItem icon={ arrowDown } onClick={ onClose }>
111
+ Move Down
112
+ </MenuItem>
113
+ </MenuGroup>
114
+ <MenuGroup>
115
+ <MenuItem icon={ trash } onClick={ onClose }>
116
+ Remove
117
+ </MenuItem>
118
+ </MenuGroup>
119
+ </>
120
+ ),
52
121
  };
@@ -15,8 +15,6 @@ import { arrowLeft, arrowRight, arrowUp, arrowDown } from '@wordpress/icons';
15
15
  import DropdownMenu from '../';
16
16
  import { MenuItem } from '../../';
17
17
 
18
- jest.useFakeTimers();
19
-
20
18
  describe( 'DropdownMenu', () => {
21
19
  it( 'should not render when neither controls nor children are assigned', () => {
22
20
  render( <DropdownMenu /> );
@@ -33,9 +31,7 @@ describe( 'DropdownMenu', () => {
33
31
  } );
34
32
 
35
33
  it( 'should open menu when pressing arrow down on the toggle and the controls prop is used to define menu items', async () => {
36
- const user = userEvent.setup( {
37
- advanceTimers: jest.advanceTimersByTime,
38
- } );
34
+ const user = userEvent.setup();
39
35
 
40
36
  const controls = [
41
37
  {
@@ -82,9 +78,7 @@ describe( 'DropdownMenu', () => {
82
78
  } );
83
79
 
84
80
  it( 'should open menu when pressing arrow down on the toggle and the children prop is used to define menu items', async () => {
85
- const user = userEvent.setup( {
86
- advanceTimers: jest.advanceTimersByTime,
87
- } );
81
+ const user = userEvent.setup();
88
82
 
89
83
  render(
90
84
  <DropdownMenu
@@ -9,12 +9,7 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import { ExternalLink } 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
  describe( 'ExternalLink', () => {
20
15
  test( 'should call function passed in onClick handler when clicking the link', async () => {
@@ -9,14 +9,10 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import Picker from '..';
11
11
 
12
- jest.useFakeTimers();
13
-
14
12
  describe( 'FocalPointPicker', () => {
15
13
  describe( 'focus and blur', () => {
16
14
  it( 'clicking the draggable area should focus it', async () => {
17
- const user = userEvent.setup( {
18
- advanceTimers: jest.advanceTimersByTime,
19
- } );
15
+ const user = userEvent.setup();
20
16
 
21
17
  const mockOnChange = jest.fn();
22
18
 
@@ -89,9 +85,7 @@ describe( 'FocalPointPicker', () => {
89
85
 
90
86
  describe( 'resolvePoint handling', () => {
91
87
  it( 'should allow value altering', async () => {
92
- const user = userEvent.setup( {
93
- advanceTimers: jest.advanceTimersByTime,
94
- } );
88
+ const user = userEvent.setup();
95
89
 
96
90
  const spyChange = jest.fn();
97
91
  const spy = jest.fn();
@@ -131,9 +125,7 @@ describe( 'FocalPointPicker', () => {
131
125
  expect( xInput.value ).toBe( '93' );
132
126
  } );
133
127
  it( 'call onChange with the expected values', async () => {
134
- const user = userEvent.setup( {
135
- advanceTimers: jest.advanceTimersByTime,
136
- } );
128
+ const user = userEvent.setup();
137
129
 
138
130
  const spyChange = jest.fn();
139
131
  render(
@@ -10,8 +10,6 @@ import userEvent from '@testing-library/user-event';
10
10
  import FontSizePicker from '../';
11
11
  import type { FontSize } from '../types';
12
12
 
13
- jest.useFakeTimers();
14
-
15
13
  describe( 'FontSizePicker', () => {
16
14
  test.each( [
17
15
  // Use units when initial value uses units.
@@ -21,9 +19,7 @@ describe( 'FontSizePicker', () => {
21
19
  ] )(
22
20
  'should call onChange( $expectedValue ) after user types 80 when value is $value',
23
21
  async ( { value, expectedValue } ) => {
24
- const user = userEvent.setup( {
25
- advanceTimers: jest.advanceTimersByTime,
26
- } );
22
+ const user = userEvent.setup();
27
23
  const onChange = jest.fn();
28
24
  render(
29
25
  <FontSizePicker
@@ -48,9 +44,7 @@ describe( 'FontSizePicker', () => {
48
44
  ] )(
49
45
  'should call onChange( $expectedValue ) after user types 80 when first font size is $firstFontSize',
50
46
  async ( { firstFontSize, expectedValue } ) => {
51
- const user = userEvent.setup( {
52
- advanceTimers: jest.advanceTimersByTime,
53
- } );
47
+ const user = userEvent.setup();
54
48
  const onChange = jest.fn();
55
49
  render(
56
50
  <FontSizePicker
@@ -104,9 +98,7 @@ describe( 'FontSizePicker', () => {
104
98
  ];
105
99
 
106
100
  it( 'displays a select control', async () => {
107
- const user = userEvent.setup( {
108
- advanceTimers: jest.advanceTimersByTime,
109
- } );
101
+ const user = userEvent.setup();
110
102
  render(
111
103
  <FontSizePicker
112
104
  __nextHasNoMarginBottom
@@ -162,9 +154,7 @@ describe( 'FontSizePicker', () => {
162
154
  ] )(
163
155
  'calls onChange( $expectedArguments ) when $option is selected',
164
156
  async ( { option, value, expectedArguments } ) => {
165
- const user = userEvent.setup( {
166
- advanceTimers: jest.advanceTimersByTime,
167
- } );
157
+ const user = userEvent.setup();
168
158
  const onChange = jest.fn();
169
159
  render(
170
160
  <FontSizePicker
@@ -224,9 +214,7 @@ describe( 'FontSizePicker', () => {
224
214
  ];
225
215
 
226
216
  it( 'displays a select control', async () => {
227
- const user = userEvent.setup( {
228
- advanceTimers: jest.advanceTimersByTime,
229
- } );
217
+ const user = userEvent.setup();
230
218
  render(
231
219
  <FontSizePicker
232
220
  __nextHasNoMarginBottom
@@ -323,9 +311,7 @@ describe( 'FontSizePicker', () => {
323
311
  ] )(
324
312
  'calls onChange( $expectedValue ) when $option is selected',
325
313
  async ( { option, value, expectedArguments } ) => {
326
- const user = userEvent.setup( {
327
- advanceTimers: jest.advanceTimersByTime,
328
- } );
314
+ const user = userEvent.setup();
329
315
  const onChange = jest.fn();
330
316
  render(
331
317
  <FontSizePicker
@@ -421,9 +407,7 @@ describe( 'FontSizePicker', () => {
421
407
  );
422
408
 
423
409
  it( 'calls onChange when a font size is selected', async () => {
424
- const user = userEvent.setup( {
425
- advanceTimers: jest.advanceTimersByTime,
426
- } );
410
+ const user = userEvent.setup();
427
411
  const onChange = jest.fn();
428
412
  render(
429
413
  <FontSizePicker
@@ -523,9 +507,7 @@ describe( 'FontSizePicker', () => {
523
507
  ] )(
524
508
  'calls onChange( $expectedArguments ) when $radio is selected',
525
509
  async ( { radio, expectedArguments } ) => {
526
- const user = userEvent.setup( {
527
- advanceTimers: jest.advanceTimersByTime,
528
- } );
510
+ const user = userEvent.setup();
529
511
  const onChange = jest.fn();
530
512
  render(
531
513
  <FontSizePicker
@@ -580,9 +562,7 @@ describe( 'FontSizePicker', () => {
580
562
 
581
563
  function commonSelectTests( fontSizes: FontSize[] ) {
582
564
  it( 'shows custom input when Custom is selected', async () => {
583
- const user = userEvent.setup( {
584
- advanceTimers: jest.advanceTimersByTime,
585
- } );
565
+ const user = userEvent.setup();
586
566
  const onChange = jest.fn();
587
567
  render(
588
568
  <FontSizePicker
@@ -615,9 +595,7 @@ describe( 'FontSizePicker', () => {
615
595
  } );
616
596
 
617
597
  it( 'allows custom values by default', async () => {
618
- const user = userEvent.setup( {
619
- advanceTimers: jest.advanceTimersByTime,
620
- } );
598
+ const user = userEvent.setup();
621
599
  const onChange = jest.fn();
622
600
  render(
623
601
  <FontSizePicker
@@ -648,9 +626,7 @@ describe( 'FontSizePicker', () => {
648
626
  } );
649
627
 
650
628
  it( 'does not display a slider by default', async () => {
651
- const user = userEvent.setup( {
652
- advanceTimers: jest.advanceTimersByTime,
653
- } );
629
+ const user = userEvent.setup();
654
630
  render(
655
631
  <FontSizePicker
656
632
  __nextHasNoMarginBottom
@@ -666,9 +642,7 @@ describe( 'FontSizePicker', () => {
666
642
  } );
667
643
 
668
644
  it( 'allows a slider to be used when withSlider is set', async () => {
669
- const user = userEvent.setup( {
670
- advanceTimers: jest.advanceTimersByTime,
671
- } );
645
+ const user = userEvent.setup();
672
646
  const onChange = jest.fn();
673
647
  render(
674
648
  <FontSizePicker
@@ -690,9 +664,7 @@ describe( 'FontSizePicker', () => {
690
664
  } );
691
665
 
692
666
  it( 'allows reset by default', async () => {
693
- const user = userEvent.setup( {
694
- advanceTimers: jest.advanceTimersByTime,
695
- } );
667
+ const user = userEvent.setup();
696
668
  const onChange = jest.fn();
697
669
  render(
698
670
  <FontSizePicker
@@ -711,9 +683,7 @@ describe( 'FontSizePicker', () => {
711
683
  } );
712
684
 
713
685
  it( 'does not allow reset when withReset is false', async () => {
714
- const user = userEvent.setup( {
715
- advanceTimers: jest.advanceTimersByTime,
716
- } );
686
+ const user = userEvent.setup();
717
687
  render(
718
688
  <FontSizePicker
719
689
  __nextHasNoMarginBottom
@@ -14,8 +14,6 @@ import FormFileUpload from '..';
14
14
  */
15
15
  const { File } = window;
16
16
 
17
- jest.useFakeTimers();
18
-
19
17
  // @testing-library/user-event considers changing <input type="file"> to a string as a change, but it do not occur on real browsers, so the comparisons will be against this result
20
18
  const fakePath = expect.objectContaining( {
21
19
  target: expect.objectContaining( {
@@ -24,15 +22,6 @@ const fakePath = expect.objectContaining( {
24
22
  } );
25
23
 
26
24
  describe( 'FormFileUpload', () => {
27
- beforeEach( () => {
28
- jest.useFakeTimers();
29
- } );
30
-
31
- afterEach( () => {
32
- jest.runOnlyPendingTimers();
33
- jest.useRealTimers();
34
- } );
35
-
36
25
  it( 'should show an Icon Button and a hidden input', () => {
37
26
  render(
38
27
  <FormFileUpload onChange={ () => {} }>
@@ -47,9 +36,7 @@ describe( 'FormFileUpload', () => {
47
36
  } );
48
37
 
49
38
  it( 'should not fire a change event after selecting the same file', async () => {
50
- const user = userEvent.setup( {
51
- advanceTimers: jest.advanceTimersByTime,
52
- } );
39
+ const user = userEvent.setup();
53
40
 
54
41
  const onChange = jest.fn();
55
42
 
@@ -74,9 +61,7 @@ describe( 'FormFileUpload', () => {
74
61
  } );
75
62
 
76
63
  it( 'should fire a change event after selecting the same file if the value was reset in between', async () => {
77
- const user = userEvent.setup( {
78
- advanceTimers: jest.advanceTimersByTime,
79
- } );
64
+ const user = userEvent.setup();
80
65
 
81
66
  const onChange = jest.fn();
82
67
 
@@ -15,8 +15,6 @@ import { useState } from '@wordpress/element';
15
15
  import FormToggle, { noop } from '..';
16
16
  import type { FormToggleProps } from '../types';
17
17
 
18
- jest.useFakeTimers();
19
-
20
18
  const getInput = () => screen.getByRole( 'checkbox' ) as HTMLInputElement;
21
19
 
22
20
  const ControlledFormToggle = ( { onChange }: FormToggleProps ) => {
@@ -81,9 +79,7 @@ describe( 'FormToggle', () => {
81
79
 
82
80
  describe( 'Value', () => {
83
81
  it( 'should flip the checked property when clicked', async () => {
84
- const user = userEvent.setup( {
85
- advanceTimers: jest.advanceTimersByTime,
86
- } );
82
+ const user = userEvent.setup();
87
83
 
88
84
  const onChange = jest.fn();
89
85
  render( <ControlledFormToggle onChange={ onChange } /> );