@wordpress/components 28.1.0 → 28.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 (451) hide show
  1. package/CHANGELOG.md +179 -120
  2. package/build/animation/index.js.map +1 -1
  3. package/build/autocomplete/autocompleter-ui.js +1 -0
  4. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  5. package/build/autocomplete/index.js.map +1 -1
  6. package/build/base-control/index.js +14 -7
  7. package/build/base-control/index.js.map +1 -1
  8. package/build/border-box-control/border-box-control-visualizer/component.js +0 -4
  9. package/build/border-box-control/border-box-control-visualizer/component.js.map +1 -1
  10. package/build/button/index.js +5 -3
  11. package/build/button/index.js.map +1 -1
  12. package/build/button/types.js.map +1 -1
  13. package/build/combobox-control/index.js +4 -1
  14. package/build/combobox-control/index.js.map +1 -1
  15. package/build/composite/current/index.js.map +1 -1
  16. package/build/custom-select-control-v2/custom-select.js +58 -36
  17. package/build/custom-select-control-v2/custom-select.js.map +1 -1
  18. package/build/custom-select-control-v2/default-component/index.js +0 -1
  19. package/build/custom-select-control-v2/default-component/index.js.map +1 -1
  20. package/build/custom-select-control-v2/item.js +2 -0
  21. package/build/custom-select-control-v2/item.js.map +1 -1
  22. package/build/custom-select-control-v2/legacy-component/index.js +33 -15
  23. package/build/custom-select-control-v2/legacy-component/index.js.map +1 -1
  24. package/build/custom-select-control-v2/styles.js +92 -65
  25. package/build/custom-select-control-v2/styles.js.map +1 -1
  26. package/build/custom-select-control-v2/types.js.map +1 -1
  27. package/build/date-time/date-time/index.js +3 -1
  28. package/build/date-time/date-time/index.js.map +1 -1
  29. package/build/date-time/index.js +7 -0
  30. package/build/date-time/index.js.map +1 -1
  31. package/build/date-time/time/index.js +62 -145
  32. package/build/date-time/time/index.js.map +1 -1
  33. package/build/date-time/time-input/index.js +159 -0
  34. package/build/date-time/time-input/index.js.map +1 -0
  35. package/build/date-time/types.js.map +1 -1
  36. package/build/date-time/utils.js +64 -0
  37. package/build/date-time/utils.js.map +1 -1
  38. package/build/disclosure/index.js +0 -1
  39. package/build/disclosure/index.js.map +1 -1
  40. package/build/divider/component.js +0 -1
  41. package/build/divider/component.js.map +1 -1
  42. package/build/divider/types.js.map +1 -1
  43. package/build/drop-zone/index.js +16 -79
  44. package/build/drop-zone/index.js.map +1 -1
  45. package/build/dropdown-menu/index.js +1 -0
  46. package/build/dropdown-menu/index.js.map +1 -1
  47. package/build/dropdown-menu-v2/index.js +0 -1
  48. package/build/dropdown-menu-v2/index.js.map +1 -1
  49. package/build/dropdown-menu-v2/styles.js +15 -16
  50. package/build/dropdown-menu-v2/styles.js.map +1 -1
  51. package/build/dropdown-menu-v2/types.js.map +1 -1
  52. package/build/font-size-picker/font-size-picker-select.js +2 -2
  53. package/build/font-size-picker/font-size-picker-select.js.map +1 -1
  54. package/build/font-size-picker/index.js +1 -1
  55. package/build/font-size-picker/index.js.map +1 -1
  56. package/build/font-size-picker/utils.js +0 -4
  57. package/build/font-size-picker/utils.js.map +1 -1
  58. package/build/form-token-field/token.js +4 -1
  59. package/build/form-token-field/token.js.map +1 -1
  60. package/build/higher-order/with-spoken-messages/index.js +1 -2
  61. package/build/higher-order/with-spoken-messages/index.js.map +1 -1
  62. package/build/lock-unlock.js +1 -1
  63. package/build/lock-unlock.js.map +1 -1
  64. package/build/menu-items-choice/types.js.map +1 -1
  65. package/build/palette-edit/index.js +30 -38
  66. package/build/palette-edit/index.js.map +1 -1
  67. package/build/palette-edit/types.js.map +1 -1
  68. package/build/popover/index.js +0 -4
  69. package/build/popover/index.js.map +1 -1
  70. package/build/popover/utils.js +0 -1
  71. package/build/popover/utils.js.map +1 -1
  72. package/build/private-apis.js +2 -4
  73. package/build/private-apis.js.map +1 -1
  74. package/build/progress-bar/styles.js +19 -13
  75. package/build/progress-bar/styles.js.map +1 -1
  76. package/build/radio-group/context.js +0 -1
  77. package/build/radio-group/context.js.map +1 -1
  78. package/build/radio-group/index.js +0 -1
  79. package/build/radio-group/index.js.map +1 -1
  80. package/build/radio-group/radio.js +0 -1
  81. package/build/radio-group/radio.js.map +1 -1
  82. package/build/range-control/index.js +4 -1
  83. package/build/range-control/index.js.map +1 -1
  84. package/build/range-control/styles/range-control-styles.js +34 -28
  85. package/build/range-control/styles/range-control-styles.js.map +1 -1
  86. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  87. package/build/select-control/index.js +1 -2
  88. package/build/select-control/index.js.map +1 -1
  89. package/build/select-control/styles/select-control-styles.js +13 -8
  90. package/build/select-control/styles/select-control-styles.js.map +1 -1
  91. package/build/tab-panel/index.js +0 -1
  92. package/build/tab-panel/index.js.map +1 -1
  93. package/build/tabs/index.js +0 -1
  94. package/build/tabs/index.js.map +1 -1
  95. package/build/tabs/styles.js +3 -5
  96. package/build/tabs/styles.js.map +1 -1
  97. package/build/tabs/tablist.js +148 -37
  98. package/build/tabs/tablist.js.map +1 -1
  99. package/build/tabs/types.js.map +1 -1
  100. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +0 -2
  101. package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  102. package/build/toggle-group-control/toggle-group-control/component.js +0 -2
  103. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  104. package/build/toggle-group-control/toggle-group-control-option-base/component.js +0 -4
  105. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  106. package/build/toolbar/toolbar/toolbar-container.js +0 -1
  107. package/build/toolbar/toolbar/toolbar-container.js.map +1 -1
  108. package/build/toolbar/toolbar/types.js.map +1 -1
  109. package/build/toolbar/toolbar-button/index.js +27 -19
  110. package/build/toolbar/toolbar-button/index.js.map +1 -1
  111. package/build/toolbar/toolbar-button/types.js.map +1 -1
  112. package/build/toolbar/toolbar-context/index.js +0 -1
  113. package/build/toolbar/toolbar-context/index.js.map +1 -1
  114. package/build/toolbar/toolbar-item/index.js +1 -1
  115. package/build/toolbar/toolbar-item/index.js.map +1 -1
  116. package/build/tooltip/index.js +3 -2
  117. package/build/tooltip/index.js.map +1 -1
  118. package/build/tooltip/types.js.map +1 -1
  119. package/build/unit-control/index.js +3 -3
  120. package/build/unit-control/index.js.map +1 -1
  121. package/build/unit-control/styles/unit-control-styles.js +7 -7
  122. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  123. package/build/utils/hooks/use-update-effect.js +4 -1
  124. package/build/utils/hooks/use-update-effect.js.map +1 -1
  125. package/build-module/animation/index.js +0 -1
  126. package/build-module/animation/index.js.map +1 -1
  127. package/build-module/autocomplete/autocompleter-ui.js +1 -0
  128. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  129. package/build-module/autocomplete/index.js.map +1 -1
  130. package/build-module/base-control/index.js +13 -6
  131. package/build-module/base-control/index.js.map +1 -1
  132. package/build-module/border-box-control/border-box-control-visualizer/component.js +0 -4
  133. package/build-module/border-box-control/border-box-control-visualizer/component.js.map +1 -1
  134. package/build-module/button/index.js +5 -3
  135. package/build-module/button/index.js.map +1 -1
  136. package/build-module/button/types.js.map +1 -1
  137. package/build-module/combobox-control/index.js +4 -1
  138. package/build-module/combobox-control/index.js.map +1 -1
  139. package/build-module/composite/current/index.js +0 -3
  140. package/build-module/composite/current/index.js.map +1 -1
  141. package/build-module/custom-select-control-v2/custom-select.js +59 -38
  142. package/build-module/custom-select-control-v2/custom-select.js.map +1 -1
  143. package/build-module/custom-select-control-v2/default-component/index.js +0 -1
  144. package/build-module/custom-select-control-v2/default-component/index.js.map +1 -1
  145. package/build-module/custom-select-control-v2/item.js +2 -0
  146. package/build-module/custom-select-control-v2/item.js.map +1 -1
  147. package/build-module/custom-select-control-v2/legacy-component/index.js +33 -16
  148. package/build-module/custom-select-control-v2/legacy-component/index.js.map +1 -1
  149. package/build-module/custom-select-control-v2/styles.js +90 -63
  150. package/build-module/custom-select-control-v2/styles.js.map +1 -1
  151. package/build-module/custom-select-control-v2/types.js.map +1 -1
  152. package/build-module/date-time/date-time/index.js +4 -1
  153. package/build-module/date-time/date-time/index.js.map +1 -1
  154. package/build-module/date-time/index.js +2 -1
  155. package/build-module/date-time/index.js.map +1 -1
  156. package/build-module/date-time/time/index.js +65 -149
  157. package/build-module/date-time/time/index.js.map +1 -1
  158. package/build-module/date-time/time-input/index.js +151 -0
  159. package/build-module/date-time/time-input/index.js.map +1 -0
  160. package/build-module/date-time/types.js.map +1 -1
  161. package/build-module/date-time/utils.js +61 -0
  162. package/build-module/date-time/utils.js.map +1 -1
  163. package/build-module/disclosure/index.js +0 -1
  164. package/build-module/disclosure/index.js.map +1 -1
  165. package/build-module/divider/component.js +0 -1
  166. package/build-module/divider/component.js.map +1 -1
  167. package/build-module/divider/types.js.map +1 -1
  168. package/build-module/drop-zone/index.js +17 -80
  169. package/build-module/drop-zone/index.js.map +1 -1
  170. package/build-module/dropdown-menu/index.js +1 -0
  171. package/build-module/dropdown-menu/index.js.map +1 -1
  172. package/build-module/dropdown-menu-v2/index.js +0 -1
  173. package/build-module/dropdown-menu-v2/index.js.map +1 -1
  174. package/build-module/dropdown-menu-v2/styles.js +14 -15
  175. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  176. package/build-module/dropdown-menu-v2/types.js.map +1 -1
  177. package/build-module/font-size-picker/font-size-picker-select.js +1 -1
  178. package/build-module/font-size-picker/font-size-picker-select.js.map +1 -1
  179. package/build-module/font-size-picker/index.js +1 -1
  180. package/build-module/font-size-picker/index.js.map +1 -1
  181. package/build-module/font-size-picker/utils.js +0 -4
  182. package/build-module/font-size-picker/utils.js.map +1 -1
  183. package/build-module/form-token-field/token.js +4 -1
  184. package/build-module/form-token-field/token.js.map +1 -1
  185. package/build-module/higher-order/with-spoken-messages/index.js +1 -2
  186. package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
  187. package/build-module/lock-unlock.js +1 -1
  188. package/build-module/lock-unlock.js.map +1 -1
  189. package/build-module/menu-items-choice/types.js.map +1 -1
  190. package/build-module/palette-edit/index.js +31 -39
  191. package/build-module/palette-edit/index.js.map +1 -1
  192. package/build-module/palette-edit/types.js.map +1 -1
  193. package/build-module/popover/index.js +0 -3
  194. package/build-module/popover/index.js.map +1 -1
  195. package/build-module/popover/utils.js +0 -1
  196. package/build-module/popover/utils.js.map +1 -1
  197. package/build-module/private-apis.js +2 -4
  198. package/build-module/private-apis.js.map +1 -1
  199. package/build-module/progress-bar/styles.js +21 -13
  200. package/build-module/progress-bar/styles.js.map +1 -1
  201. package/build-module/radio-group/context.js +0 -1
  202. package/build-module/radio-group/context.js.map +1 -1
  203. package/build-module/radio-group/index.js +0 -1
  204. package/build-module/radio-group/index.js.map +1 -1
  205. package/build-module/radio-group/radio.js +0 -1
  206. package/build-module/radio-group/radio.js.map +1 -1
  207. package/build-module/range-control/index.js +4 -1
  208. package/build-module/range-control/index.js.map +1 -1
  209. package/build-module/range-control/styles/range-control-styles.js +34 -28
  210. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  211. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  212. package/build-module/select-control/index.js +2 -3
  213. package/build-module/select-control/index.js.map +1 -1
  214. package/build-module/select-control/styles/select-control-styles.js +12 -7
  215. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  216. package/build-module/tab-panel/index.js +0 -1
  217. package/build-module/tab-panel/index.js.map +1 -1
  218. package/build-module/tabs/index.js +0 -1
  219. package/build-module/tabs/index.js.map +1 -1
  220. package/build-module/tabs/styles.js +3 -4
  221. package/build-module/tabs/styles.js.map +1 -1
  222. package/build-module/tabs/tablist.js +149 -38
  223. package/build-module/tabs/tablist.js.map +1 -1
  224. package/build-module/tabs/types.js.map +1 -1
  225. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +0 -1
  226. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  227. package/build-module/toggle-group-control/toggle-group-control/component.js +0 -1
  228. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  229. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +0 -2
  230. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  231. package/build-module/toolbar/toolbar/toolbar-container.js +0 -1
  232. package/build-module/toolbar/toolbar/toolbar-container.js.map +1 -1
  233. package/build-module/toolbar/toolbar/types.js.map +1 -1
  234. package/build-module/toolbar/toolbar-button/index.js +27 -19
  235. package/build-module/toolbar/toolbar-button/index.js.map +1 -1
  236. package/build-module/toolbar/toolbar-button/types.js.map +1 -1
  237. package/build-module/toolbar/toolbar-context/index.js +0 -1
  238. package/build-module/toolbar/toolbar-context/index.js.map +1 -1
  239. package/build-module/toolbar/toolbar-item/index.js +1 -1
  240. package/build-module/toolbar/toolbar-item/index.js.map +1 -1
  241. package/build-module/tooltip/index.js +3 -2
  242. package/build-module/tooltip/index.js.map +1 -1
  243. package/build-module/tooltip/types.js.map +1 -1
  244. package/build-module/unit-control/index.js +3 -3
  245. package/build-module/unit-control/index.js.map +1 -1
  246. package/build-module/unit-control/styles/unit-control-styles.js +7 -7
  247. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  248. package/build-module/utils/hooks/use-update-effect.js +4 -1
  249. package/build-module/utils/hooks/use-update-effect.js.map +1 -1
  250. package/build-style/style-rtl.css +46 -6
  251. package/build-style/style.css +46 -6
  252. package/build-types/animation/index.d.ts.map +1 -1
  253. package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
  254. package/build-types/autocomplete/index.d.ts.map +1 -1
  255. package/build-types/base-control/index.d.ts +6 -20
  256. package/build-types/base-control/index.d.ts.map +1 -1
  257. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  258. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts.map +1 -1
  259. package/build-types/button/deprecated.d.ts +4 -4
  260. package/build-types/button/index.d.ts.map +1 -1
  261. package/build-types/button/stories/e2e/index.story.d.ts.map +1 -1
  262. package/build-types/button/types.d.ts +27 -10
  263. package/build-types/button/types.d.ts.map +1 -1
  264. package/build-types/combobox-control/index.d.ts.map +1 -1
  265. package/build-types/composite/current/index.d.ts.map +1 -1
  266. package/build-types/custom-select-control/stories/index.story.d.ts +15 -0
  267. package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -1
  268. package/build-types/custom-select-control-v2/custom-select.d.ts +2 -2
  269. package/build-types/custom-select-control-v2/custom-select.d.ts.map +1 -1
  270. package/build-types/custom-select-control-v2/default-component/index.d.ts.map +1 -1
  271. package/build-types/custom-select-control-v2/item.d.ts.map +1 -1
  272. package/build-types/custom-select-control-v2/legacy-component/index.d.ts.map +1 -1
  273. package/build-types/custom-select-control-v2/stories/default.story.d.ts +6 -3
  274. package/build-types/custom-select-control-v2/stories/default.story.d.ts.map +1 -1
  275. package/build-types/custom-select-control-v2/styles.d.ts +18 -22
  276. package/build-types/custom-select-control-v2/styles.d.ts.map +1 -1
  277. package/build-types/custom-select-control-v2/types.d.ts +13 -2
  278. package/build-types/custom-select-control-v2/types.d.ts.map +1 -1
  279. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  280. package/build-types/date-time/index.d.ts +2 -1
  281. package/build-types/date-time/index.d.ts.map +1 -1
  282. package/build-types/date-time/stories/time-input.story.d.ts +12 -0
  283. package/build-types/date-time/stories/time-input.story.d.ts.map +1 -0
  284. package/build-types/date-time/time/index.d.ts +1 -1
  285. package/build-types/date-time/time/index.d.ts.map +1 -1
  286. package/build-types/date-time/time-input/index.d.ts +5 -0
  287. package/build-types/date-time/time-input/index.d.ts.map +1 -0
  288. package/build-types/date-time/time-input/test/index.d.ts +2 -0
  289. package/build-types/date-time/time-input/test/index.d.ts.map +1 -0
  290. package/build-types/date-time/types.d.ts +54 -0
  291. package/build-types/date-time/types.d.ts.map +1 -1
  292. package/build-types/date-time/utils.d.ts +40 -0
  293. package/build-types/date-time/utils.d.ts.map +1 -1
  294. package/build-types/disclosure/index.d.ts.map +1 -1
  295. package/build-types/divider/component.d.ts.map +1 -1
  296. package/build-types/divider/types.d.ts.map +1 -1
  297. package/build-types/drop-zone/index.d.ts +3 -0
  298. package/build-types/drop-zone/index.d.ts.map +1 -1
  299. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  300. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
  301. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  302. package/build-types/dropdown-menu-v2/types.d.ts.map +1 -1
  303. package/build-types/font-size-picker/styles.d.ts +1 -1
  304. package/build-types/font-size-picker/utils.d.ts.map +1 -1
  305. package/build-types/form-token-field/token.d.ts.map +1 -1
  306. package/build-types/higher-order/with-spoken-messages/index.d.ts +1 -2
  307. package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -1
  308. package/build-types/menu-items-choice/types.d.ts +1 -1
  309. package/build-types/menu-items-choice/types.d.ts.map +1 -1
  310. package/build-types/navigator/navigator-back-button/component.d.ts +1 -1
  311. package/build-types/navigator/navigator-back-button/hook.d.ts +1 -1
  312. package/build-types/navigator/navigator-button/component.d.ts +1 -1
  313. package/build-types/navigator/navigator-button/hook.d.ts +1 -1
  314. package/build-types/navigator/navigator-to-parent-button/component.d.ts +1 -1
  315. package/build-types/palette-edit/index.d.ts.map +1 -1
  316. package/build-types/palette-edit/types.d.ts +1 -3
  317. package/build-types/palette-edit/types.d.ts.map +1 -1
  318. package/build-types/popover/index.d.ts.map +1 -1
  319. package/build-types/popover/utils.d.ts.map +1 -1
  320. package/build-types/private-apis.d.ts.map +1 -1
  321. package/build-types/progress-bar/styles.d.ts.map +1 -1
  322. package/build-types/radio-group/context.d.ts.map +1 -1
  323. package/build-types/radio-group/index.d.ts.map +1 -1
  324. package/build-types/radio-group/radio.d.ts.map +1 -1
  325. package/build-types/range-control/index.d.ts.map +1 -1
  326. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  327. package/build-types/resizable-box/resize-tooltip/utils.d.ts +2 -2
  328. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  329. package/build-types/select-control/index.d.ts.map +1 -1
  330. package/build-types/select-control/styles/select-control-styles.d.ts +5 -0
  331. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  332. package/build-types/tab-panel/index.d.ts.map +1 -1
  333. package/build-types/tabs/index.d.ts.map +1 -1
  334. package/build-types/tabs/stories/index.story.d.ts.map +1 -1
  335. package/build-types/tabs/styles.d.ts.map +1 -1
  336. package/build-types/tabs/tablist.d.ts.map +1 -1
  337. package/build-types/tabs/types.d.ts.map +1 -1
  338. package/build-types/theme/stories/index.story.d.ts.map +1 -1
  339. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
  340. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  341. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  342. package/build-types/toolbar/toolbar/toolbar-container.d.ts.map +1 -1
  343. package/build-types/toolbar/toolbar/types.d.ts +6 -0
  344. package/build-types/toolbar/toolbar/types.d.ts.map +1 -1
  345. package/build-types/toolbar/toolbar-button/index.d.ts +3 -96
  346. package/build-types/toolbar/toolbar-button/index.d.ts.map +1 -1
  347. package/build-types/toolbar/toolbar-button/types.d.ts +18 -0
  348. package/build-types/toolbar/toolbar-button/types.d.ts.map +1 -1
  349. package/build-types/toolbar/toolbar-context/index.d.ts.map +1 -1
  350. package/build-types/toolbar/toolbar-item/index.d.ts +1 -3
  351. package/build-types/toolbar/toolbar-item/index.d.ts.map +1 -1
  352. package/build-types/tooltip/index.d.ts.map +1 -1
  353. package/build-types/tooltip/types.d.ts +4 -0
  354. package/build-types/tooltip/types.d.ts.map +1 -1
  355. package/build-types/unit-control/index.d.ts.map +1 -1
  356. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  357. package/build-types/utils/hooks/use-update-effect.d.ts +1 -1
  358. package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
  359. package/package.json +19 -19
  360. package/src/animation/index.tsx +0 -1
  361. package/src/autocomplete/autocompleter-ui.tsx +1 -0
  362. package/src/autocomplete/index.tsx +0 -1
  363. package/src/base-control/index.tsx +16 -6
  364. package/src/base-control/stories/index.story.tsx +0 -1
  365. package/src/border-box-control/border-box-control-visualizer/component.tsx +0 -5
  366. package/src/button/README.md +13 -0
  367. package/src/button/index.tsx +6 -4
  368. package/src/button/stories/e2e/index.story.tsx +2 -1
  369. package/src/button/test/index.tsx +17 -2
  370. package/src/button/types.ts +27 -10
  371. package/src/combobox-control/index.tsx +2 -0
  372. package/src/composite/current/index.ts +0 -2
  373. package/src/custom-select-control/stories/index.story.tsx +32 -3
  374. package/src/custom-select-control/test/index.js +247 -28
  375. package/src/custom-select-control-v2/custom-select.tsx +58 -23
  376. package/src/custom-select-control-v2/default-component/index.tsx +0 -1
  377. package/src/custom-select-control-v2/item.tsx +5 -1
  378. package/src/custom-select-control-v2/legacy-component/index.tsx +45 -16
  379. package/src/custom-select-control-v2/legacy-component/test/index.tsx +261 -43
  380. package/src/custom-select-control-v2/styles.ts +156 -74
  381. package/src/custom-select-control-v2/test/index.tsx +35 -5
  382. package/src/custom-select-control-v2/types.ts +19 -6
  383. package/src/date-time/README.md +8 -0
  384. package/src/date-time/date-time/index.tsx +2 -1
  385. package/src/date-time/index.ts +2 -1
  386. package/src/date-time/stories/time-input.story.tsx +36 -0
  387. package/src/date-time/time/index.tsx +77 -194
  388. package/src/date-time/time/test/index.tsx +61 -0
  389. package/src/date-time/time-input/index.tsx +196 -0
  390. package/src/date-time/time-input/test/index.tsx +171 -0
  391. package/src/date-time/types.ts +63 -0
  392. package/src/date-time/utils.ts +69 -0
  393. package/src/dimension-control/test/__snapshots__/index.test.js.snap +116 -96
  394. package/src/disclosure/index.tsx +0 -1
  395. package/src/divider/component.tsx +0 -1
  396. package/src/divider/types.ts +0 -1
  397. package/src/drop-zone/index.tsx +17 -76
  398. package/src/drop-zone/style.scss +51 -16
  399. package/src/dropdown-menu/index.tsx +1 -0
  400. package/src/dropdown-menu-v2/index.tsx +0 -1
  401. package/src/dropdown-menu-v2/styles.ts +0 -1
  402. package/src/dropdown-menu-v2/types.ts +0 -1
  403. package/src/font-size-picker/font-size-picker-select.tsx +1 -1
  404. package/src/font-size-picker/index.tsx +1 -1
  405. package/src/font-size-picker/test/index.tsx +6 -6
  406. package/src/font-size-picker/utils.ts +0 -5
  407. package/src/form-token-field/token.tsx +2 -0
  408. package/src/higher-order/navigate-regions/style.scss +25 -13
  409. package/src/higher-order/with-spoken-messages/index.tsx +1 -2
  410. package/src/lock-unlock.js +1 -1
  411. package/src/menu-items-choice/types.ts +2 -1
  412. package/src/palette-edit/index.tsx +33 -45
  413. package/src/palette-edit/test/index.tsx +3 -4
  414. package/src/palette-edit/types.ts +1 -3
  415. package/src/popover/index.tsx +0 -2
  416. package/src/popover/utils.ts +0 -1
  417. package/src/private-apis.ts +2 -5
  418. package/src/progress-bar/styles.ts +18 -9
  419. package/src/radio-group/context.tsx +0 -1
  420. package/src/radio-group/index.tsx +0 -1
  421. package/src/radio-group/radio.tsx +0 -1
  422. package/src/range-control/index.tsx +2 -0
  423. package/src/range-control/styles/range-control-styles.ts +6 -2
  424. package/src/resizable-box/resize-tooltip/utils.ts +1 -1
  425. package/src/select-control/index.tsx +3 -4
  426. package/src/select-control/styles/select-control-styles.ts +17 -6
  427. package/src/tab-panel/index.tsx +0 -1
  428. package/src/tabs/index.tsx +0 -1
  429. package/src/tabs/stories/index.story.tsx +25 -18
  430. package/src/tabs/styles.ts +18 -14
  431. package/src/tabs/tablist.tsx +187 -43
  432. package/src/tabs/types.ts +0 -1
  433. package/src/theme/stories/index.story.tsx +2 -0
  434. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +0 -1
  435. package/src/toggle-group-control/toggle-group-control/component.tsx +0 -2
  436. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +0 -2
  437. package/src/toolbar/toolbar/README.md +9 -0
  438. package/src/toolbar/toolbar/style.scss +7 -0
  439. package/src/toolbar/toolbar/toolbar-container.tsx +0 -1
  440. package/src/toolbar/toolbar/types.ts +6 -0
  441. package/src/toolbar/toolbar-button/index.tsx +30 -17
  442. package/src/toolbar/toolbar-button/types.ts +19 -0
  443. package/src/toolbar/toolbar-context/index.ts +0 -1
  444. package/src/toolbar/toolbar-item/index.tsx +1 -1
  445. package/src/tooltip/index.tsx +3 -2
  446. package/src/tooltip/test/index.tsx +18 -0
  447. package/src/tooltip/types.ts +4 -0
  448. package/src/unit-control/index.tsx +3 -2
  449. package/src/unit-control/styles/unit-control-styles.ts +10 -4
  450. package/src/utils/hooks/use-update-effect.js +8 -1
  451. package/tsconfig.tsbuildinfo +1 -1
@@ -14,7 +14,11 @@ import { useState } from '@wordpress/element';
14
14
  */
15
15
  import UncontrolledCustomSelectControl from '..';
16
16
 
17
- const customClass = 'amber-skies';
17
+ const customClassName = 'amber-skies';
18
+ const customStyles = {
19
+ backgroundColor: 'rgb(127, 255, 212)',
20
+ rotate: '13deg',
21
+ };
18
22
 
19
23
  const legacyProps = {
20
24
  label: 'label!',
@@ -26,7 +30,7 @@ const legacyProps = {
26
30
  {
27
31
  key: 'flower2',
28
32
  name: 'crimson clover',
29
- className: customClass,
33
+ className: customClassName,
30
34
  },
31
35
  {
32
36
  key: 'flower3',
@@ -35,33 +39,43 @@ const legacyProps = {
35
39
  {
36
40
  key: 'color1',
37
41
  name: 'amber',
38
- className: customClass,
42
+ className: customClassName,
39
43
  },
40
44
  {
41
45
  key: 'color2',
42
46
  name: 'aquamarine',
43
- style: {
44
- backgroundColor: 'rgb(127, 255, 212)',
45
- rotate: '13deg',
46
- },
47
+ style: customStyles,
48
+ },
49
+ {
50
+ key: 'color3',
51
+ name: 'tomato (with custom props)',
52
+ className: customClassName,
53
+ style: customStyles,
54
+ // try passing a valid HTML attribute
55
+ 'aria-label': 'test label',
56
+ // try adding a custom prop
57
+ customPropFoo: 'foo',
47
58
  },
48
59
  ],
49
60
  };
50
61
 
51
62
  const ControlledCustomSelectControl = ( {
52
63
  options,
53
- onChange,
64
+ onChange: onChangeProp,
54
65
  ...restProps
55
66
  }: React.ComponentProps< typeof UncontrolledCustomSelectControl > ) => {
56
- const [ value, setValue ] = useState( options[ 0 ] );
67
+ const [ value, setValue ] = useState( restProps.value ?? options[ 0 ] );
68
+
69
+ const onChange: typeof onChangeProp = ( changeObject ) => {
70
+ onChangeProp?.( changeObject );
71
+ setValue( changeObject.selectedItem );
72
+ };
73
+
57
74
  return (
58
75
  <UncontrolledCustomSelectControl
59
76
  { ...restProps }
60
77
  options={ options }
61
- onChange={ ( args: any ) => {
62
- onChange?.( args );
63
- setValue( args.selectedItem );
64
- } }
78
+ onChange={ onChange }
65
79
  value={ options.find(
66
80
  ( option: any ) => option.key === value.key
67
81
  ) }
@@ -69,12 +83,87 @@ const ControlledCustomSelectControl = ( {
69
83
  );
70
84
  };
71
85
 
86
+ it( 'Should apply external controlled updates', async () => {
87
+ const mockOnChange = jest.fn();
88
+ const { rerender } = render(
89
+ <UncontrolledCustomSelectControl
90
+ { ...legacyProps }
91
+ value={ legacyProps.options[ 0 ] }
92
+ onChange={ mockOnChange }
93
+ />
94
+ );
95
+
96
+ const currentSelectedItem = screen.getByRole( 'combobox', {
97
+ expanded: false,
98
+ } );
99
+
100
+ expect( currentSelectedItem ).toHaveTextContent(
101
+ legacyProps.options[ 0 ].name
102
+ );
103
+
104
+ expect( mockOnChange ).not.toHaveBeenCalled();
105
+
106
+ rerender(
107
+ <UncontrolledCustomSelectControl
108
+ { ...legacyProps }
109
+ value={ legacyProps.options[ 1 ] }
110
+ />
111
+ );
112
+
113
+ expect( currentSelectedItem ).toHaveTextContent(
114
+ legacyProps.options[ 1 ].name
115
+ );
116
+
117
+ // Necessary to wait for onChange to potentially fire
118
+ await sleep();
119
+
120
+ expect( mockOnChange ).not.toHaveBeenCalled();
121
+ } );
122
+
72
123
  describe.each( [
73
124
  [ 'Uncontrolled', UncontrolledCustomSelectControl ],
74
125
  [ 'Controlled', ControlledCustomSelectControl ],
75
126
  ] )( 'CustomSelectControl (%s)', ( ...modeAndComponent ) => {
76
127
  const [ , Component ] = modeAndComponent;
77
128
 
129
+ it( 'Should select the first option when no explicit initial value is passed without firing onChange', async () => {
130
+ const mockOnChange = jest.fn();
131
+ render( <Component { ...legacyProps } onChange={ mockOnChange } /> );
132
+
133
+ expect(
134
+ screen.getByRole( 'combobox', {
135
+ expanded: false,
136
+ } )
137
+ ).toHaveTextContent( legacyProps.options[ 0 ].name );
138
+
139
+ // Necessary to wait for onChange to potentially fire
140
+ await sleep();
141
+
142
+ expect( mockOnChange ).not.toHaveBeenCalled();
143
+ } );
144
+
145
+ it( 'Should pick the initially selected option if the value prop is passed without firing onChange', async () => {
146
+ const mockOnChange = jest.fn();
147
+ render(
148
+ <Component
149
+ { ...legacyProps }
150
+ onChange={ mockOnChange }
151
+ value={ legacyProps.options[ 3 ] }
152
+ />
153
+ );
154
+
155
+ expect(
156
+ screen.getByRole( 'combobox', {
157
+ expanded: false,
158
+ } )
159
+ ).toHaveTextContent( legacyProps.options[ 3 ].name );
160
+
161
+ // Necessary to wait for onChange to potentially fire
162
+ await sleep();
163
+
164
+ expect( mockOnChange ).not.toHaveBeenCalled();
165
+ } );
166
+
78
167
  it( 'Should replace the initial selection when a new item is selected', async () => {
79
168
  render( <Component { ...legacyProps } /> );
80
169
 
@@ -115,14 +204,14 @@ describe.each( [
115
204
  await press.Enter();
116
205
  expect(
117
206
  screen.getByRole( 'listbox', {
118
- name: 'label!',
207
+ name: legacyProps.label,
119
208
  } )
120
209
  ).toBeVisible();
121
210
 
122
211
  await press.Escape();
123
212
  expect(
124
213
  screen.queryByRole( 'listbox', {
125
- name: 'label!',
214
+ name: legacyProps.label,
126
215
  } )
127
216
  ).not.toBeInTheDocument();
128
217
 
@@ -148,7 +237,7 @@ describe.each( [
148
237
  // assert against filtered array
149
238
  itemsWithClass.map( ( { name } ) =>
150
239
  expect( screen.getByRole( 'option', { name } ) ).toHaveClass(
151
- customClass
240
+ customClassName
152
241
  )
153
242
  );
154
243
 
@@ -160,15 +249,12 @@ describe.each( [
160
249
  // assert against filtered array
161
250
  itemsWithoutClass.map( ( { name } ) =>
162
251
  expect( screen.getByRole( 'option', { name } ) ).not.toHaveClass(
163
- customClass
252
+ customClassName
164
253
  )
165
254
  );
166
255
  } );
167
256
 
168
257
  it( 'Should apply styles only to options that have styles defined', async () => {
169
- const customStyles =
170
- 'background-color: rgb(127, 255, 212); rotate: 13deg;';
171
-
172
258
  render( <Component { ...legacyProps } /> );
173
259
 
174
260
  await click(
@@ -244,7 +330,7 @@ describe.each( [
244
330
  screen.getByRole( 'combobox', {
245
331
  expanded: false,
246
332
  } )
247
- ).toHaveTextContent( /hint/i )
333
+ ).toHaveTextContent( 'Hint' )
248
334
  );
249
335
  } );
250
336
 
@@ -281,39 +367,27 @@ describe.each( [
281
367
  } )
282
368
  );
283
369
 
284
- expect( mockOnChange ).toHaveBeenNthCalledWith(
285
- 1,
286
- expect.objectContaining( {
287
- inputValue: '',
288
- isOpen: false,
289
- selectedItem: { key: 'violets', name: 'violets' },
290
- type: '',
291
- } )
292
- );
293
-
294
370
  await click(
295
371
  screen.getByRole( 'option', {
296
372
  name: 'aquamarine',
297
373
  } )
298
374
  );
299
375
 
300
- expect( mockOnChange ).toHaveBeenNthCalledWith(
301
- 2,
376
+ expect( mockOnChange ).toHaveBeenCalledTimes( 1 );
377
+ expect( mockOnChange ).toHaveBeenLastCalledWith(
302
378
  expect.objectContaining( {
303
379
  inputValue: '',
304
380
  isOpen: false,
305
381
  selectedItem: expect.objectContaining( {
306
382
  name: 'aquamarine',
307
383
  } ),
308
- type: '',
384
+ type: expect.any( String ),
309
385
  } )
310
386
  );
311
387
  } );
312
388
 
313
389
  it( 'Should return selectedItem object when specified onChange', async () => {
314
- const mockOnChange = jest.fn(
315
- ( { selectedItem } ) => selectedItem.key
316
- );
390
+ const mockOnChange = jest.fn();
317
391
 
318
392
  render( <Component { ...legacyProps } onChange={ mockOnChange } /> );
319
393
 
@@ -328,10 +402,94 @@ describe.each( [
328
402
  await type( 'p' );
329
403
  await press.Enter();
330
404
 
331
- expect( mockOnChange ).toHaveReturnedWith( 'poppy' );
405
+ expect( mockOnChange ).toHaveBeenCalledTimes( 1 );
406
+ expect( mockOnChange ).toHaveBeenLastCalledWith(
407
+ expect.objectContaining( {
408
+ selectedItem: expect.objectContaining( {
409
+ key: 'flower3',
410
+ name: 'poppy',
411
+ } ),
412
+ } )
413
+ );
414
+ } );
415
+
416
+ it( "Should pass arbitrary props to onChange's selectedItem, but apply only style and className to DOM elements", async () => {
417
+ const onChangeMock = jest.fn();
418
+
419
+ render( <Component { ...legacyProps } onChange={ onChangeMock } /> );
420
+
421
+ const currentSelectedItem = screen.getByRole( 'combobox', {
422
+ expanded: false,
423
+ } );
424
+
425
+ await click( currentSelectedItem );
426
+
427
+ const optionWithCustomAttributes = screen.getByRole( 'option', {
428
+ name: 'tomato (with custom props)',
429
+ } );
430
+
431
+ // Assert that the option element does not have the custom attributes
432
+ expect( optionWithCustomAttributes ).not.toHaveAttribute(
433
+ 'customPropFoo'
434
+ );
435
+ expect( optionWithCustomAttributes ).not.toHaveAttribute(
436
+ 'aria-label'
437
+ );
438
+
439
+ await click( optionWithCustomAttributes );
440
+
441
+ expect( onChangeMock ).toHaveBeenCalledTimes( 1 );
442
+ expect( onChangeMock ).toHaveBeenCalledWith(
443
+ expect.objectContaining( {
444
+ selectedItem: expect.objectContaining( {
445
+ key: 'color3',
446
+ name: 'tomato (with custom props)',
447
+ className: customClassName,
448
+ style: customStyles,
449
+ 'aria-label': 'test label',
450
+ customPropFoo: 'foo',
451
+ } ),
452
+ } )
453
+ );
454
+ } );
455
+
456
+ it( 'Should label the component correctly even when the label is not visible', () => {
457
+ render( <Component { ...legacyProps } hideLabelFromVision /> );
458
+
459
+ expect(
460
+ screen.getByRole( 'combobox', {
461
+ name: legacyProps.label,
462
+ } )
463
+ ).toBeVisible();
332
464
  } );
333
465
 
334
466
  describe( 'Keyboard behavior and accessibility', () => {
467
+ it( 'Captures the keypress event and does not let it propagate', async () => {
468
+ const onKeyDown = jest.fn();
469
+
470
+ render(
471
+ <div
472
+ // This role="none" is required to prevent an eslint warning about accessibility.
473
+ role="none"
474
+ onKeyDown={ onKeyDown }
475
+ >
476
+ <Component { ...legacyProps } />
477
+ </div>
478
+ );
479
+ const currentSelectedItem = screen.getByRole( 'combobox', {
480
+ expanded: false,
481
+ } );
482
+ await click( currentSelectedItem );
483
+
484
+ const customSelect = screen.getByRole( 'listbox', {
485
+ name: legacyProps.label,
486
+ } );
487
+ expect( customSelect ).toHaveFocus();
488
+ await press.Enter();
489
+
490
+ expect( onKeyDown ).toHaveBeenCalledTimes( 0 );
491
+ } );
492
+
335
493
  it( 'Should be able to change selection using keyboard', async () => {
336
494
  render( <Component { ...legacyProps } /> );
337
495
 
@@ -346,14 +504,16 @@ describe.each( [
346
504
  await press.Enter();
347
505
  expect(
348
506
  screen.getByRole( 'listbox', {
349
- name: 'label!',
507
+ name: legacyProps.label,
350
508
  } )
351
509
  ).toHaveFocus();
352
510
 
353
511
  await press.ArrowDown();
354
512
  await press.Enter();
355
513
 
356
- expect( currentSelectedItem ).toHaveTextContent( 'crimson clover' );
514
+ expect( currentSelectedItem ).toHaveTextContent(
515
+ legacyProps.options[ 1 ].name
516
+ );
357
517
  } );
358
518
 
359
519
  it( 'Should be able to type characters to select matching options', async () => {
@@ -368,7 +528,7 @@ describe.each( [
368
528
  await press.Enter();
369
529
  expect(
370
530
  screen.getByRole( 'listbox', {
371
- name: 'label!',
531
+ name: legacyProps.label,
372
532
  } )
373
533
  ).toHaveFocus();
374
534
 
@@ -387,14 +547,16 @@ describe.each( [
387
547
  await sleep();
388
548
  await press.Tab();
389
549
  expect( currentSelectedItem ).toHaveFocus();
390
- expect( currentSelectedItem ).toHaveTextContent( 'violets' );
550
+ expect( currentSelectedItem ).toHaveTextContent(
551
+ legacyProps.options[ 0 ].name
552
+ );
391
553
 
392
554
  // Ideally we would test a multi-character typeahead, but anything more than a single character is flaky
393
555
  await type( 'a' );
394
556
 
395
557
  expect(
396
558
  screen.queryByRole( 'listbox', {
397
- name: 'label!',
559
+ name: legacyProps.label,
398
560
  hidden: true,
399
561
  } )
400
562
  ).not.toBeInTheDocument();
@@ -405,6 +567,33 @@ describe.each( [
405
567
  expect( currentSelectedItem ).toHaveTextContent( 'amber' );
406
568
  } );
407
569
 
570
+ it( 'Can change selection with a focused input and closed dropdown while pressing arrow keys', async () => {
571
+ render( <Component { ...legacyProps } /> );
572
+
573
+ const currentSelectedItem = screen.getByRole( 'combobox', {
574
+ expanded: false,
575
+ } );
576
+
577
+ await sleep();
578
+ await press.Tab();
579
+ expect( currentSelectedItem ).toHaveFocus();
580
+ expect( currentSelectedItem ).toHaveTextContent(
581
+ legacyProps.options[ 0 ].name
582
+ );
583
+
584
+ await press.ArrowDown();
585
+ await press.ArrowDown();
586
+ expect(
587
+ screen.queryByRole( 'listbox', {
588
+ name: legacyProps.label,
589
+ } )
590
+ ).not.toBeInTheDocument();
591
+
592
+ expect( currentSelectedItem ).toHaveTextContent(
593
+ legacyProps.options[ 2 ].name
594
+ );
595
+ } );
596
+
408
597
  it( 'Should have correct aria-selected value for selections', async () => {
409
598
  render( <Component { ...legacyProps } /> );
410
599
 
@@ -456,5 +645,34 @@ describe.each( [
456
645
  } )
457
646
  ).toBeVisible();
458
647
  } );
648
+
649
+ it( 'Should call custom event handlers', async () => {
650
+ const onFocusMock = jest.fn();
651
+ const onBlurMock = jest.fn();
652
+
653
+ render(
654
+ <>
655
+ <Component
656
+ { ...legacyProps }
657
+ onFocus={ onFocusMock }
658
+ onBlur={ onBlurMock }
659
+ />
660
+ <button>Focus stop</button>
661
+ </>
662
+ );
663
+
664
+ const currentSelectedItem = screen.getByRole( 'combobox', {
665
+ expanded: false,
666
+ } );
667
+
668
+ await press.Tab();
669
+
670
+ expect( currentSelectedItem ).toHaveFocus();
671
+ expect( onFocusMock ).toHaveBeenCalledTimes( 1 );
672
+
673
+ await press.Tab();
674
+ expect( currentSelectedItem ).not.toHaveFocus();
675
+ expect( onBlurMock ).toHaveBeenCalledTimes( 1 );
676
+ } );
459
677
  } );
460
678
  } );