@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
@@ -0,0 +1,136 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { MouseEventHandler, ReactNode } from 'react';
5
+
6
+ type CommonNoticeActionProps = {
7
+ label: string;
8
+ className?: string;
9
+ noDefaultClasses?: boolean;
10
+ variant?: 'primary' | 'secondary' | 'link';
11
+ };
12
+ // `url` and `onClick` can both be provided, but `url` takes precedence. If
13
+ // `url` is provided, the action's button will be rendered as an anchor and
14
+ // `onClick` will be ignored.
15
+ type NoticeActionWithURL = CommonNoticeActionProps & {
16
+ url: string;
17
+ onClick?: never;
18
+ };
19
+ type NoticeActionWithOnClick = CommonNoticeActionProps & {
20
+ url?: never;
21
+ onClick: MouseEventHandler< HTMLButtonElement >;
22
+ };
23
+
24
+ export type NoticeAction = NoticeActionWithURL | NoticeActionWithOnClick;
25
+
26
+ export type NoticeChildren = string | JSX.Element;
27
+
28
+ export type NoticeProps = {
29
+ /**
30
+ * A CSS `class` to give to the wrapper element.
31
+ */
32
+ className?: string;
33
+ /**
34
+ * The displayed message of a notice. Also used as the spoken message for
35
+ * assistive technology, unless `spokenMessage` is provided as an alternative message.
36
+ */
37
+ children: ReactNode;
38
+ /**
39
+ * Used to provide a custom spoken message in place of the `children` default.
40
+ *
41
+ * @default `children`
42
+ */
43
+ spokenMessage?: ReactNode;
44
+ /**
45
+ * Determines the color of the notice: `warning` (yellow),
46
+ * `success` (green), `error` (red), or `'info'`.
47
+ * By default `'info'` will be blue, but if there is a parent Theme component
48
+ * with an accent color prop, the notice will take on that color instead.
49
+ *
50
+ * @default 'info'
51
+ */
52
+ status?: 'warning' | 'success' | 'error' | 'info';
53
+ /**
54
+ * Function called when dismissing the notice
55
+ *
56
+ * @default noop
57
+ */
58
+ onRemove?: () => void;
59
+ /**
60
+ * A politeness level for the notice's spoken message. Should be provided as
61
+ * one of the valid options for an `aria-live` attribute value.
62
+ *
63
+ * A value of `'assertive'` is to be used for important, and usually
64
+ * time-sensitive, information. It will interrupt anything else the screen
65
+ * reader is announcing in that moment.
66
+ * A value of `'polite'` is to be used for advisory information. It should
67
+ * not interrupt what the screen reader is announcing in that moment
68
+ * (the "speech queue") or interrupt the current task.
69
+ *
70
+ * Note that this value should be considered a suggestion; assistive
71
+ * technologies may override it based on internal heuristics.
72
+ *
73
+ * @see https://www.w3.org/TR/wai-aria-1.1/#aria-live
74
+ *
75
+ * @default 'assertive' for 'error' status, 'polite' for all other statuses
76
+ */
77
+ politeness?: 'polite' | 'assertive';
78
+ /**
79
+ * Whether the notice should be dismissible or not
80
+ *
81
+ * @default true
82
+ */
83
+ isDismissible?: boolean;
84
+ /**
85
+ * A deprecated alternative to `onRemove`. This prop is kept for
86
+ * compatibilty reasons but should be avoided.
87
+ *
88
+ * @default noop
89
+ */
90
+ onDismiss?: () => void;
91
+ /**
92
+ * An array of action objects. Each member object should contain:
93
+ *
94
+ * - `label`: `string` containing the text of the button/link
95
+ * - `url`: `string` OR `onClick`: `( event: SyntheticEvent ) => void` to specify
96
+ * what the action does.
97
+ * - `className`: `string` (optional) to add custom classes to the button styles.
98
+ * - `noDefaultClasses`: `boolean` (optional) A value of `true` will remove all
99
+ * default styling.
100
+ * - `variant`: `'primary' | 'secondary' | 'link'` (optional) You can denote a
101
+ * primary button action for a notice by passing a value of `primary`.
102
+ *
103
+ * The default appearance of an action button is inferred based on whether
104
+ * `url` or `onClick` are provided, rendering the button as a link if
105
+ * appropriate. If both props are provided, `url` takes precedence, and the
106
+ * action button will render as an anchor tag.
107
+ *
108
+ * @default []
109
+ */
110
+ actions?: Array< NoticeAction >;
111
+ /**
112
+ * Determines whether or not the message should be parsed as custom HTML
113
+ * instead of a string.
114
+ */
115
+ __unstableHTML?: boolean;
116
+ };
117
+
118
+ export type NoticeListProps = {
119
+ /**
120
+ * Array of notices to render.
121
+ */
122
+ notices: Array<
123
+ Omit< NoticeProps, 'children' > & {
124
+ id: string;
125
+ content: string;
126
+ }
127
+ >;
128
+ /**
129
+ * Function called when a notice should be removed / dismissed.
130
+ */
131
+ onRemove?: ( id: string ) => void;
132
+ /**
133
+ * Children to be rendered inside the notice list.
134
+ */
135
+ children?: ReactNode;
136
+ };
@@ -52,7 +52,7 @@ function UnforwardedNumberControl(
52
52
  forwardedRef: ForwardedRef< any >
53
53
  ) {
54
54
  if ( hideHTMLArrows ) {
55
- deprecated( 'hideHTMLArrows', {
55
+ deprecated( 'wp.components.NumberControl hideHTMLArrows prop ', {
56
56
  alternative: 'spinControls="none"',
57
57
  since: '6.2',
58
58
  version: '6.3',
@@ -15,8 +15,6 @@ import { useState } from '@wordpress/element';
15
15
  import NumberControl from '..';
16
16
  import type { NumberControlProps } from '../types';
17
17
 
18
- jest.useFakeTimers();
19
-
20
18
  function StatefulNumberControl( props: NumberControlProps ) {
21
19
  const [ value, setValue ] = useState( props.value );
22
20
  const handleOnChange = ( v: string | undefined ) => setValue( v );
@@ -45,9 +43,7 @@ describe( 'NumberControl', () => {
45
43
 
46
44
  describe( 'onChange handling', () => {
47
45
  it( 'should provide onChange callback with number value', async () => {
48
- const user = userEvent.setup( {
49
- advanceTimers: jest.advanceTimersByTime,
50
- } );
46
+ const user = userEvent.setup();
51
47
  const spy = jest.fn();
52
48
 
53
49
  render(
@@ -62,9 +58,7 @@ describe( 'NumberControl', () => {
62
58
  } );
63
59
 
64
60
  it( 'should call onChange callback when value is clamped on blur', async () => {
65
- const user = userEvent.setup( {
66
- advanceTimers: jest.advanceTimersByTime,
67
- } );
61
+ const user = userEvent.setup();
68
62
  const onChangeSpy = jest.fn();
69
63
 
70
64
  render(
@@ -107,9 +101,7 @@ describe( 'NumberControl', () => {
107
101
  } );
108
102
 
109
103
  it( 'should call onChange callback when value is not valid', async () => {
110
- const user = userEvent.setup( {
111
- advanceTimers: jest.advanceTimersByTime,
112
- } );
104
+ const user = userEvent.setup();
113
105
  const onChangeSpy = jest.fn();
114
106
 
115
107
  render(
@@ -153,9 +145,7 @@ describe( 'NumberControl', () => {
153
145
 
154
146
  describe( 'Validation', () => {
155
147
  it( 'should clamp value within range on ENTER keypress', async () => {
156
- const user = userEvent.setup( {
157
- advanceTimers: jest.advanceTimersByTime,
158
- } );
148
+ const user = userEvent.setup();
159
149
 
160
150
  render( <NumberControl value={ 5 } min={ 0 } max={ 10 } /> );
161
151
 
@@ -173,9 +163,7 @@ describe( 'NumberControl', () => {
173
163
  } );
174
164
 
175
165
  it( 'should clamp value within range on blur', async () => {
176
- const user = userEvent.setup( {
177
- advanceTimers: jest.advanceTimersByTime,
178
- } );
166
+ const user = userEvent.setup();
179
167
 
180
168
  render( <NumberControl value={ 5 } min={ 0 } max={ 10 } /> );
181
169
 
@@ -194,9 +182,7 @@ describe( 'NumberControl', () => {
194
182
  } );
195
183
 
196
184
  it( 'should parse non-numeric values to a number on ENTER keypress when required', async () => {
197
- const user = userEvent.setup( {
198
- advanceTimers: jest.advanceTimersByTime,
199
- } );
185
+ const user = userEvent.setup();
200
186
 
201
187
  render( <NumberControl value={ 5 } required /> );
202
188
 
@@ -209,9 +195,7 @@ describe( 'NumberControl', () => {
209
195
  } );
210
196
 
211
197
  it( 'should parse non-numeric values to empty string on ENTER keypress when not required', async () => {
212
- const user = userEvent.setup( {
213
- advanceTimers: jest.advanceTimersByTime,
214
- } );
198
+ const user = userEvent.setup();
215
199
 
216
200
  render( <NumberControl value={ 5 } required={ false } /> );
217
201
 
@@ -230,9 +214,7 @@ describe( 'NumberControl', () => {
230
214
  } );
231
215
 
232
216
  it( 'should not enforce numerical value for empty string when required is omitted', async () => {
233
- const user = userEvent.setup( {
234
- advanceTimers: jest.advanceTimersByTime,
235
- } );
217
+ const user = userEvent.setup();
236
218
 
237
219
  render( <NumberControl value={ 5 } /> );
238
220
 
@@ -247,9 +229,7 @@ describe( 'NumberControl', () => {
247
229
  } );
248
230
 
249
231
  it( 'should enforce numerical value for empty string when required', async () => {
250
- const user = userEvent.setup( {
251
- advanceTimers: jest.advanceTimersByTime,
252
- } );
232
+ const user = userEvent.setup();
253
233
 
254
234
  render( <NumberControl value={ 5 } required /> );
255
235
 
@@ -263,9 +243,7 @@ describe( 'NumberControl', () => {
263
243
 
264
244
  describe( 'Key UP interactions', () => {
265
245
  it( 'should fire onKeyDown callback', async () => {
266
- const user = userEvent.setup( {
267
- advanceTimers: jest.advanceTimersByTime,
268
- } );
246
+ const user = userEvent.setup();
269
247
 
270
248
  const spy = jest.fn();
271
249
 
@@ -279,9 +257,7 @@ describe( 'NumberControl', () => {
279
257
  } );
280
258
 
281
259
  it( 'should increment by step on key UP press', async () => {
282
- const user = userEvent.setup( {
283
- advanceTimers: jest.advanceTimersByTime,
284
- } );
260
+ const user = userEvent.setup();
285
261
 
286
262
  render( <StatefulNumberControl value={ 5 } /> );
287
263
 
@@ -293,9 +269,7 @@ describe( 'NumberControl', () => {
293
269
  } );
294
270
 
295
271
  it( 'should increment from a negative value', async () => {
296
- const user = userEvent.setup( {
297
- advanceTimers: jest.advanceTimersByTime,
298
- } );
272
+ const user = userEvent.setup();
299
273
 
300
274
  render( <StatefulNumberControl value={ -5 } /> );
301
275
 
@@ -307,9 +281,7 @@ describe( 'NumberControl', () => {
307
281
  } );
308
282
 
309
283
  it( 'should increment while preserving the decimal value when `step` is “any”', async () => {
310
- const user = userEvent.setup( {
311
- advanceTimers: jest.advanceTimersByTime,
312
- } );
284
+ const user = userEvent.setup();
313
285
 
314
286
  render( <StatefulNumberControl value={ 866.5309 } step="any" /> );
315
287
 
@@ -321,9 +293,7 @@ describe( 'NumberControl', () => {
321
293
  } );
322
294
 
323
295
  it( 'should increment by shiftStep on key UP + shift press', async () => {
324
- const user = userEvent.setup( {
325
- advanceTimers: jest.advanceTimersByTime,
326
- } );
296
+ const user = userEvent.setup();
327
297
 
328
298
  render( <StatefulNumberControl value={ 5 } shiftStep={ 10 } /> );
329
299
 
@@ -335,9 +305,7 @@ describe( 'NumberControl', () => {
335
305
  } );
336
306
 
337
307
  it( 'should increment by shiftStep while preserving the decimal value when `step` is “any”', async () => {
338
- const user = userEvent.setup( {
339
- advanceTimers: jest.advanceTimersByTime,
340
- } );
308
+ const user = userEvent.setup();
341
309
 
342
310
  render( <StatefulNumberControl value={ 857.5309 } step="any" /> );
343
311
 
@@ -349,9 +317,7 @@ describe( 'NumberControl', () => {
349
317
  } );
350
318
 
351
319
  it( 'should increment by custom shiftStep on key UP + shift press', async () => {
352
- const user = userEvent.setup( {
353
- advanceTimers: jest.advanceTimersByTime,
354
- } );
320
+ const user = userEvent.setup();
355
321
 
356
322
  render( <StatefulNumberControl value={ 5 } shiftStep={ 100 } /> );
357
323
 
@@ -363,9 +329,7 @@ describe( 'NumberControl', () => {
363
329
  } );
364
330
 
365
331
  it( 'should increment but be limited by max on shiftStep', async () => {
366
- const user = userEvent.setup( {
367
- advanceTimers: jest.advanceTimersByTime,
368
- } );
332
+ const user = userEvent.setup();
369
333
 
370
334
  render(
371
335
  <StatefulNumberControl
@@ -383,9 +347,7 @@ describe( 'NumberControl', () => {
383
347
  } );
384
348
 
385
349
  it( 'should not increment by shiftStep if disabled', async () => {
386
- const user = userEvent.setup( {
387
- advanceTimers: jest.advanceTimersByTime,
388
- } );
350
+ const user = userEvent.setup();
389
351
 
390
352
  render(
391
353
  <StatefulNumberControl
@@ -405,9 +367,7 @@ describe( 'NumberControl', () => {
405
367
 
406
368
  describe( 'Key DOWN interactions', () => {
407
369
  it( 'should fire onKeyDown callback', async () => {
408
- const user = userEvent.setup( {
409
- advanceTimers: jest.advanceTimersByTime,
410
- } );
370
+ const user = userEvent.setup();
411
371
  const spy = jest.fn();
412
372
 
413
373
  render( <StatefulNumberControl value={ 5 } onKeyDown={ spy } /> );
@@ -420,9 +380,7 @@ describe( 'NumberControl', () => {
420
380
  } );
421
381
 
422
382
  it( 'should decrement by step on key DOWN press', async () => {
423
- const user = userEvent.setup( {
424
- advanceTimers: jest.advanceTimersByTime,
425
- } );
383
+ const user = userEvent.setup();
426
384
 
427
385
  render( <StatefulNumberControl value={ 5 } /> );
428
386
 
@@ -434,9 +392,7 @@ describe( 'NumberControl', () => {
434
392
  } );
435
393
 
436
394
  it( 'should decrement from a negative value', async () => {
437
- const user = userEvent.setup( {
438
- advanceTimers: jest.advanceTimersByTime,
439
- } );
395
+ const user = userEvent.setup();
440
396
 
441
397
  render( <StatefulNumberControl value={ -5 } /> );
442
398
 
@@ -448,9 +404,7 @@ describe( 'NumberControl', () => {
448
404
  } );
449
405
 
450
406
  it( 'should decrement while preserving the decimal value when `step` is “any”', async () => {
451
- const user = userEvent.setup( {
452
- advanceTimers: jest.advanceTimersByTime,
453
- } );
407
+ const user = userEvent.setup();
454
408
 
455
409
  render( <StatefulNumberControl value={ 868.5309 } step="any" /> );
456
410
 
@@ -462,9 +416,7 @@ describe( 'NumberControl', () => {
462
416
  } );
463
417
 
464
418
  it( 'should decrement by shiftStep on key DOWN + shift press', async () => {
465
- const user = userEvent.setup( {
466
- advanceTimers: jest.advanceTimersByTime,
467
- } );
419
+ const user = userEvent.setup();
468
420
 
469
421
  render( <StatefulNumberControl value={ 5 } /> );
470
422
 
@@ -476,9 +428,7 @@ describe( 'NumberControl', () => {
476
428
  } );
477
429
 
478
430
  it( 'should decrement by shiftStep while preserving the decimal value when `step` is “any”', async () => {
479
- const user = userEvent.setup( {
480
- advanceTimers: jest.advanceTimersByTime,
481
- } );
431
+ const user = userEvent.setup();
482
432
 
483
433
  render( <StatefulNumberControl value={ 877.5309 } step="any" /> );
484
434
 
@@ -490,9 +440,7 @@ describe( 'NumberControl', () => {
490
440
  } );
491
441
 
492
442
  it( 'should decrement by custom shiftStep on key DOWN + shift press', async () => {
493
- const user = userEvent.setup( {
494
- advanceTimers: jest.advanceTimersByTime,
495
- } );
443
+ const user = userEvent.setup();
496
444
 
497
445
  render( <StatefulNumberControl value={ 5 } shiftStep={ 100 } /> );
498
446
 
@@ -504,9 +452,7 @@ describe( 'NumberControl', () => {
504
452
  } );
505
453
 
506
454
  it( 'should decrement but be limited by min on shiftStep', async () => {
507
- const user = userEvent.setup( {
508
- advanceTimers: jest.advanceTimersByTime,
509
- } );
455
+ const user = userEvent.setup();
510
456
 
511
457
  render(
512
458
  <StatefulNumberControl
@@ -524,9 +470,7 @@ describe( 'NumberControl', () => {
524
470
  } );
525
471
 
526
472
  it( 'should not decrement by shiftStep if disabled', async () => {
527
- const user = userEvent.setup( {
528
- advanceTimers: jest.advanceTimersByTime,
529
- } );
473
+ const user = userEvent.setup();
530
474
 
531
475
  render(
532
476
  <StatefulNumberControl
@@ -574,9 +518,7 @@ describe( 'NumberControl', () => {
574
518
  ] )(
575
519
  'should spin %s to %s when props = %o',
576
520
  async ( direction, expectedValue, props ) => {
577
- const user = userEvent.setup( {
578
- advanceTimers: jest.advanceTimersByTime,
579
- } );
521
+ const user = userEvent.setup();
580
522
  const onChange = jest.fn();
581
523
  render(
582
524
  <NumberControl
@@ -9,8 +9,6 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import { PanelBody } from '../body';
11
11
 
12
- jest.useFakeTimers();
13
-
14
12
  describe( 'PanelBody', () => {
15
13
  describe( 'basic rendering', () => {
16
14
  it( 'should render an empty div with the matching className', () => {
@@ -117,9 +115,7 @@ describe( 'PanelBody', () => {
117
115
  } );
118
116
 
119
117
  it( 'should toggle when clicking header', async () => {
120
- const user = userEvent.setup( {
121
- advanceTimers: jest.advanceTimersByTime,
122
- } );
118
+ const user = userEvent.setup();
123
119
 
124
120
  render(
125
121
  <PanelBody title="Panel" initialOpen={ false }>
@@ -146,9 +142,7 @@ describe( 'PanelBody', () => {
146
142
  } );
147
143
 
148
144
  it( 'should pass button props to panel title', async () => {
149
- const user = userEvent.setup( {
150
- advanceTimers: jest.advanceTimersByTime,
151
- } );
145
+ const user = userEvent.setup();
152
146
  const mock = jest.fn();
153
147
 
154
148
  render(
@@ -44,6 +44,7 @@ const Template: ComponentStory< typeof Placeholder > = ( args ) => {
44
44
  <Placeholder { ...args }>
45
45
  <div>
46
46
  <TextControl
47
+ __nextHasNoMarginBottom
47
48
  label="Sample Field"
48
49
  placeholder="Enter something here"
49
50
  value={ value }