@wordpress/components 23.0.0 → 23.2.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 (457) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/CONTRIBUTING.md +0 -21
  3. package/LICENSE.md +1 -1
  4. package/build/autocomplete/index.js +1 -3
  5. package/build/autocomplete/index.js.map +1 -1
  6. package/build/border-box-control/border-box-control/component.js +0 -3
  7. package/build/border-box-control/border-box-control/component.js.map +1 -1
  8. package/build/border-box-control/border-box-control/hook.js +0 -2
  9. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  10. package/build/border-box-control/border-box-control-split-controls/component.js +0 -2
  11. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  12. package/build/border-box-control/border-box-control-split-controls/hook.js +0 -2
  13. package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  14. package/build/border-control/border-control/component.js +0 -2
  15. package/build/border-control/border-control/component.js.map +1 -1
  16. package/build/border-control/border-control/hook.js +0 -2
  17. package/build/border-control/border-control/hook.js.map +1 -1
  18. package/build/border-control/border-control-dropdown/component.js +6 -11
  19. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  20. package/build/border-control/border-control-dropdown/hook.js +0 -2
  21. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  22. package/build/color-palette/index.js +5 -8
  23. package/build/color-palette/index.js.map +1 -1
  24. package/build/color-picker/component.js +1 -0
  25. package/build/color-picker/component.js.map +1 -1
  26. package/build/color-picker/styles.js +8 -10
  27. package/build/color-picker/styles.js.map +1 -1
  28. package/build/combobox-control/index.js +5 -1
  29. package/build/combobox-control/index.js.map +1 -1
  30. package/build/dimension-control/index.js.map +1 -1
  31. package/build/dropdown/index.js +45 -10
  32. package/build/dropdown/index.js.map +1 -1
  33. package/build/focal-point-picker/utils.js +1 -1
  34. package/build/focal-point-picker/utils.js.map +1 -1
  35. package/build/gradient-picker/index.js +1 -2
  36. package/build/gradient-picker/index.js.map +1 -1
  37. package/build/higher-order/navigate-regions/index.js +4 -3
  38. package/build/higher-order/navigate-regions/index.js.map +1 -1
  39. package/build/index.js +7 -25
  40. package/build/index.js.map +1 -1
  41. package/build/index.native.js +8 -18
  42. package/build/index.native.js.map +1 -1
  43. package/build/item-group/item/component.js +27 -3
  44. package/build/item-group/item/component.js.map +1 -1
  45. package/build/item-group/item-group/component.js +26 -3
  46. package/build/item-group/item-group/component.js.map +1 -1
  47. package/build/item-group/styles.js +14 -14
  48. package/build/item-group/styles.js.map +1 -1
  49. package/build/mobile/bottom-sheet/picker-cell.native.js +1 -9
  50. package/build/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
  51. package/build/mobile/global-styles-context/utils.native.js +30 -12
  52. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  53. package/build/panel/row.js +5 -3
  54. package/build/panel/row.js.map +1 -1
  55. package/build/query-controls/index.js +1 -0
  56. package/build/query-controls/index.js.map +1 -1
  57. package/build/resizable-box/index.js +5 -4
  58. package/build/resizable-box/index.js.map +1 -1
  59. package/build/responsive-wrapper/index.js +18 -1
  60. package/build/responsive-wrapper/index.js.map +1 -1
  61. package/build/responsive-wrapper/types.js +6 -0
  62. package/build/responsive-wrapper/types.js.map +1 -0
  63. package/build/sandbox/index.js +35 -24
  64. package/build/sandbox/index.js.map +1 -1
  65. package/build/sandbox/types.js +6 -0
  66. package/build/sandbox/types.js.map +1 -0
  67. package/build/tab-panel/index.js +15 -9
  68. package/build/tab-panel/index.js.map +1 -1
  69. package/build/toolbar/index.js +42 -60
  70. package/build/toolbar/index.js.map +1 -1
  71. package/build/toolbar/toolbar/index.js +74 -0
  72. package/build/toolbar/toolbar/index.js.map +1 -0
  73. package/build/toolbar/{toolbar-container.js → toolbar/toolbar-container.js} +0 -0
  74. package/build/toolbar/toolbar/toolbar-container.js.map +1 -0
  75. package/build/toolbar/{toolbar-container.native.js → toolbar/toolbar-container.native.js} +0 -0
  76. package/build/toolbar/toolbar/toolbar-container.native.js.map +1 -0
  77. package/build/{toolbar-button → toolbar/toolbar-button}/index.js +1 -1
  78. package/build/toolbar/toolbar-button/index.js.map +1 -0
  79. package/build/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.js +0 -0
  80. package/build/toolbar/toolbar-button/toolbar-button-container.js.map +1 -0
  81. package/build/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.native.js +0 -0
  82. package/build/toolbar/toolbar-button/toolbar-button-container.native.js.map +1 -0
  83. package/build/{toolbar-context → toolbar/toolbar-context}/index.js +0 -0
  84. package/build/toolbar/toolbar-context/index.js.map +1 -0
  85. package/build/{toolbar-dropdown-menu → toolbar/toolbar-dropdown-menu}/index.js +1 -1
  86. package/build/toolbar/toolbar-dropdown-menu/index.js.map +1 -0
  87. package/build/{toolbar-group → toolbar/toolbar-group}/index.js +0 -0
  88. package/build/toolbar/toolbar-group/index.js.map +1 -0
  89. package/build/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.js +1 -1
  90. package/build/toolbar/toolbar-group/toolbar-group-collapsed.js.map +1 -0
  91. package/build/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.native.js +1 -1
  92. package/build/toolbar/toolbar-group/toolbar-group-collapsed.native.js.map +1 -0
  93. package/build/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.js +0 -0
  94. package/build/toolbar/toolbar-group/toolbar-group-container.js.map +1 -0
  95. package/build/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.native.js +0 -0
  96. package/build/toolbar/toolbar-group/toolbar-group-container.native.js.map +1 -0
  97. package/build/{toolbar-item → toolbar/toolbar-item}/index.js +0 -0
  98. package/build/toolbar/toolbar-item/index.js.map +1 -0
  99. package/build/{toolbar-item → toolbar/toolbar-item}/index.native.js +0 -0
  100. package/build/toolbar/toolbar-item/index.native.js.map +1 -0
  101. package/build/tree-grid/index.js +3 -3
  102. package/build/tree-grid/index.js.map +1 -1
  103. package/build-module/autocomplete/index.js +1 -2
  104. package/build-module/autocomplete/index.js.map +1 -1
  105. package/build-module/border-box-control/border-box-control/component.js +0 -3
  106. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  107. package/build-module/border-box-control/border-box-control/hook.js +0 -2
  108. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  109. package/build-module/border-box-control/border-box-control-split-controls/component.js +0 -2
  110. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  111. package/build-module/border-box-control/border-box-control-split-controls/hook.js +0 -2
  112. package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  113. package/build-module/border-control/border-control/component.js +0 -2
  114. package/build-module/border-control/border-control/component.js.map +1 -1
  115. package/build-module/border-control/border-control/hook.js +0 -2
  116. package/build-module/border-control/border-control/hook.js.map +1 -1
  117. package/build-module/border-control/border-control-dropdown/component.js +6 -11
  118. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  119. package/build-module/border-control/border-control-dropdown/hook.js +0 -2
  120. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  121. package/build-module/color-palette/index.js +5 -8
  122. package/build-module/color-palette/index.js.map +1 -1
  123. package/build-module/color-picker/component.js +1 -0
  124. package/build-module/color-picker/component.js.map +1 -1
  125. package/build-module/color-picker/styles.js +8 -9
  126. package/build-module/color-picker/styles.js.map +1 -1
  127. package/build-module/combobox-control/index.js +5 -1
  128. package/build-module/combobox-control/index.js.map +1 -1
  129. package/build-module/dimension-control/index.js +1 -2
  130. package/build-module/dimension-control/index.js.map +1 -1
  131. package/build-module/dropdown/index.js +44 -10
  132. package/build-module/dropdown/index.js.map +1 -1
  133. package/build-module/focal-point-picker/utils.js +1 -1
  134. package/build-module/focal-point-picker/utils.js.map +1 -1
  135. package/build-module/gradient-picker/index.js +1 -2
  136. package/build-module/gradient-picker/index.js.map +1 -1
  137. package/build-module/higher-order/navigate-regions/index.js +4 -3
  138. package/build-module/higher-order/navigate-regions/index.js.map +1 -1
  139. package/build-module/index.js +1 -7
  140. package/build-module/index.js.map +1 -1
  141. package/build-module/index.native.js +1 -6
  142. package/build-module/index.native.js.map +1 -1
  143. package/build-module/item-group/item/component.js +26 -2
  144. package/build-module/item-group/item/component.js.map +1 -1
  145. package/build-module/item-group/item-group/component.js +25 -2
  146. package/build-module/item-group/item-group/component.js.map +1 -1
  147. package/build-module/item-group/styles.js +14 -14
  148. package/build-module/item-group/styles.js.map +1 -1
  149. package/build-module/mobile/bottom-sheet/picker-cell.native.js +1 -8
  150. package/build-module/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
  151. package/build-module/mobile/global-styles-context/utils.native.js +31 -13
  152. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  153. package/build-module/panel/row.js +5 -3
  154. package/build-module/panel/row.js.map +1 -1
  155. package/build-module/query-controls/index.js +1 -0
  156. package/build-module/query-controls/index.js.map +1 -1
  157. package/build-module/resizable-box/index.js +3 -2
  158. package/build-module/resizable-box/index.js.map +1 -1
  159. package/build-module/responsive-wrapper/index.js +20 -1
  160. package/build-module/responsive-wrapper/index.js.map +1 -1
  161. package/build-module/responsive-wrapper/types.js +2 -0
  162. package/build-module/responsive-wrapper/types.js.map +1 -0
  163. package/build-module/sandbox/index.js +37 -23
  164. package/build-module/sandbox/index.js.map +1 -1
  165. package/build-module/sandbox/types.js +2 -0
  166. package/build-module/sandbox/types.js.map +1 -0
  167. package/build-module/tab-panel/index.js +15 -8
  168. package/build-module/tab-panel/index.js.map +1 -1
  169. package/build-module/toolbar/index.js +6 -58
  170. package/build-module/toolbar/index.js.map +1 -1
  171. package/build-module/toolbar/toolbar/index.js +59 -0
  172. package/build-module/toolbar/toolbar/index.js.map +1 -0
  173. package/build-module/toolbar/{toolbar-container.js → toolbar/toolbar-container.js} +0 -0
  174. package/{build → build-module/toolbar}/toolbar/toolbar-container.js.map +1 -1
  175. package/build-module/toolbar/{toolbar-container.native.js → toolbar/toolbar-container.native.js} +0 -0
  176. package/build-module/toolbar/toolbar/toolbar-container.native.js.map +1 -0
  177. package/build-module/{toolbar-button → toolbar/toolbar-button}/index.js +1 -1
  178. package/build-module/toolbar/toolbar-button/index.js.map +1 -0
  179. package/build-module/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.js +0 -0
  180. package/build-module/toolbar/toolbar-button/toolbar-button-container.js.map +1 -0
  181. package/build-module/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.native.js +0 -0
  182. package/build-module/toolbar/toolbar-button/toolbar-button-container.native.js.map +1 -0
  183. package/build-module/{toolbar-context → toolbar/toolbar-context}/index.js +0 -0
  184. package/build-module/toolbar/toolbar-context/index.js.map +1 -0
  185. package/build-module/{toolbar-dropdown-menu → toolbar/toolbar-dropdown-menu}/index.js +1 -1
  186. package/build-module/toolbar/toolbar-dropdown-menu/index.js.map +1 -0
  187. package/build-module/{toolbar-group → toolbar/toolbar-group}/index.js +0 -0
  188. package/build-module/toolbar/toolbar-group/index.js.map +1 -0
  189. package/build-module/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.js +1 -1
  190. package/build-module/toolbar/toolbar-group/toolbar-group-collapsed.js.map +1 -0
  191. package/build-module/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.native.js +1 -1
  192. package/build-module/toolbar/toolbar-group/toolbar-group-collapsed.native.js.map +1 -0
  193. package/build-module/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.js +0 -0
  194. package/build-module/toolbar/toolbar-group/toolbar-group-container.js.map +1 -0
  195. package/build-module/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.native.js +0 -0
  196. package/build-module/toolbar/toolbar-group/toolbar-group-container.native.js.map +1 -0
  197. package/build-module/{toolbar-item → toolbar/toolbar-item}/index.js +0 -0
  198. package/build-module/toolbar/toolbar-item/index.js.map +1 -0
  199. package/build-module/{toolbar-item → toolbar/toolbar-item}/index.native.js +0 -0
  200. package/build-module/toolbar/toolbar-item/index.native.js.map +1 -0
  201. package/build-module/tree-grid/index.js +3 -3
  202. package/build-module/tree-grid/index.js.map +1 -1
  203. package/build-style/style-rtl.css +19 -32
  204. package/build-style/style.css +19 -32
  205. package/build-types/border-box-control/border-box-control/component.d.ts +1 -1
  206. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  207. package/build-types/border-box-control/border-box-control/hook.d.ts +0 -1
  208. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  209. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +1 -1
  210. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  211. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +0 -1
  212. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  213. package/build-types/border-box-control/stories/index.d.ts +1 -1
  214. package/build-types/border-control/border-control/component.d.ts +1 -1
  215. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  216. package/build-types/border-control/border-control/hook.d.ts +0 -1
  217. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  218. package/build-types/border-control/border-control-dropdown/component.d.ts +1 -1
  219. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  220. package/build-types/border-control/border-control-dropdown/hook.d.ts +0 -1
  221. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  222. package/build-types/border-control/stories/index.d.ts +6 -6
  223. package/build-types/border-control/stories/index.d.ts.map +1 -1
  224. package/build-types/border-control/types.d.ts +1 -1
  225. package/build-types/border-control/types.d.ts.map +1 -1
  226. package/build-types/color-palette/index.d.ts +2 -3
  227. package/build-types/color-palette/index.d.ts.map +1 -1
  228. package/build-types/color-palette/stories/index.d.ts +2 -9
  229. package/build-types/color-palette/stories/index.d.ts.map +1 -1
  230. package/build-types/color-palette/types.d.ts +3 -16
  231. package/build-types/color-palette/types.d.ts.map +1 -1
  232. package/build-types/color-picker/component.d.ts.map +1 -1
  233. package/build-types/color-picker/styles.d.ts.map +1 -1
  234. package/build-types/dashicon/types.d.ts +0 -4
  235. package/build-types/dashicon/types.d.ts.map +1 -1
  236. package/build-types/disabled/stories/index.d.ts.map +1 -1
  237. package/build-types/dropdown/index.d.ts +29 -1
  238. package/build-types/dropdown/index.d.ts.map +1 -1
  239. package/build-types/dropdown/stories/index.d.ts +23 -0
  240. package/build-types/dropdown/stories/index.d.ts.map +1 -0
  241. package/build-types/dropdown/test/index.d.ts +2 -0
  242. package/build-types/dropdown/test/index.d.ts.map +1 -0
  243. package/build-types/dropdown/types.d.ts +101 -0
  244. package/build-types/dropdown/types.d.ts.map +1 -1
  245. package/build-types/focal-point-picker/utils.d.ts.map +1 -1
  246. package/build-types/icon/stories/index.d.ts +22 -0
  247. package/build-types/icon/stories/index.d.ts.map +1 -0
  248. package/build-types/item-group/item/component.d.ts +24 -2
  249. package/build-types/item-group/item/component.d.ts.map +1 -1
  250. package/build-types/item-group/item-group/component.d.ts +23 -2
  251. package/build-types/item-group/item-group/component.d.ts.map +1 -1
  252. package/build-types/item-group/stories/index.d.ts +15 -0
  253. package/build-types/item-group/stories/index.d.ts.map +1 -0
  254. package/build-types/item-group/styles.d.ts.map +1 -1
  255. package/build-types/radio-context/index.d.ts +6 -0
  256. package/build-types/radio-context/index.d.ts.map +1 -0
  257. package/build-types/resizable-box/index.d.ts +6 -7
  258. package/build-types/resizable-box/index.d.ts.map +1 -1
  259. package/build-types/resizable-box/stories/index.d.ts +61 -0
  260. package/build-types/resizable-box/stories/index.d.ts.map +1 -0
  261. package/build-types/responsive-wrapper/index.d.ts +24 -0
  262. package/build-types/responsive-wrapper/index.d.ts.map +1 -0
  263. package/build-types/responsive-wrapper/stories/index.d.ts +12 -0
  264. package/build-types/responsive-wrapper/stories/index.d.ts.map +1 -0
  265. package/build-types/responsive-wrapper/types.d.ts +22 -0
  266. package/build-types/responsive-wrapper/types.d.ts.map +1 -0
  267. package/build-types/sandbox/index.d.ts +19 -0
  268. package/build-types/sandbox/index.d.ts.map +1 -0
  269. package/build-types/sandbox/stories/index.d.ts +12 -0
  270. package/build-types/sandbox/stories/index.d.ts.map +1 -0
  271. package/build-types/sandbox/test/index.d.ts +2 -0
  272. package/build-types/sandbox/test/index.d.ts.map +1 -0
  273. package/build-types/sandbox/types.d.ts +36 -0
  274. package/build-types/sandbox/types.d.ts.map +1 -0
  275. package/build-types/tab-panel/index.d.ts.map +1 -1
  276. package/build-types/tab-panel/stories/index.d.ts +1 -0
  277. package/build-types/tab-panel/stories/index.d.ts.map +1 -1
  278. package/build-types/tab-panel/types.d.ts +10 -4
  279. package/build-types/tab-panel/types.d.ts.map +1 -1
  280. package/package.json +17 -17
  281. package/src/autocomplete/index.js +1 -3
  282. package/src/autocomplete/test/index.js +2 -0
  283. package/src/base-control/test/index.tsx +1 -0
  284. package/src/border-box-control/border-box-control/component.tsx +0 -7
  285. package/src/border-box-control/border-box-control/hook.ts +0 -2
  286. package/src/border-box-control/border-box-control-split-controls/component.tsx +0 -2
  287. package/src/border-box-control/border-box-control-split-controls/hook.ts +0 -2
  288. package/src/border-box-control/test/index.js +2 -0
  289. package/src/border-control/border-control/component.tsx +0 -4
  290. package/src/border-control/border-control/hook.ts +0 -2
  291. package/src/border-control/border-control-dropdown/component.tsx +11 -17
  292. package/src/border-control/border-control-dropdown/hook.ts +0 -2
  293. package/src/border-control/stories/index.tsx +0 -1
  294. package/src/border-control/test/index.js +70 -67
  295. package/src/border-control/types.ts +1 -4
  296. package/src/box-control/test/index.js +2 -0
  297. package/src/checkbox-control/test/index.tsx +2 -0
  298. package/src/color-palette/index.tsx +12 -12
  299. package/src/color-palette/stories/index.tsx +0 -13
  300. package/src/color-palette/test/index.tsx +2 -0
  301. package/src/color-palette/types.ts +3 -17
  302. package/src/color-picker/component.tsx +1 -0
  303. package/src/color-picker/stories/index.js +20 -60
  304. package/src/color-picker/styles.ts +0 -5
  305. package/src/color-picker/test/index.js +2 -0
  306. package/src/combobox-control/index.js +9 -1
  307. package/src/combobox-control/test/index.js +2 -0
  308. package/src/confirm-dialog/test/index.js +2 -0
  309. package/src/dashicon/types.ts +0 -6
  310. package/src/date-time/date/test/index.tsx +2 -0
  311. package/src/date-time/time/test/index.tsx +2 -0
  312. package/src/dimension-control/index.js +2 -3
  313. package/src/dimension-control/test/index.test.js +2 -0
  314. package/src/disabled/stories/index.tsx +6 -2
  315. package/src/disabled/test/index.tsx +2 -0
  316. package/src/dropdown/README.md +41 -46
  317. package/src/dropdown/{index.js → index.tsx} +57 -13
  318. package/src/dropdown/stories/{index.js → index.tsx} +21 -8
  319. package/src/dropdown/test/{index.js → index.tsx} +9 -9
  320. package/src/dropdown/types.ts +107 -0
  321. package/src/dropdown-menu/README.md +2 -3
  322. package/src/dropdown-menu/test/index.js +2 -0
  323. package/src/external-link/test/index.tsx +2 -0
  324. package/src/focal-point-picker/stories/index.tsx +1 -1
  325. package/src/focal-point-picker/test/index.js +2 -0
  326. package/src/focal-point-picker/utils.ts +4 -1
  327. package/src/font-size-picker/test/index.tsx +2 -0
  328. package/src/form-file-upload/test/index.tsx +2 -0
  329. package/src/form-toggle/test/index.tsx +2 -0
  330. package/src/form-token-field/test/index.tsx +3 -0
  331. package/src/gradient-picker/index.js +1 -2
  332. package/src/gradient-picker/stories/index.js +0 -1
  333. package/src/guide/stories/index.js +14 -41
  334. package/src/guide/test/index.js +2 -0
  335. package/src/higher-order/navigate-regions/index.js +5 -2
  336. package/src/higher-order/navigate-regions/style.scss +13 -39
  337. package/src/higher-order/with-filters/test/index.js +70 -74
  338. package/src/higher-order/with-focus-outside/test/index.js +2 -0
  339. package/src/higher-order/with-focus-return/test/index.js +2 -0
  340. package/src/higher-order/with-notices/test/index.js +1 -0
  341. package/src/icon/stories/index.tsx +103 -0
  342. package/src/index.js +8 -7
  343. package/src/index.native.js +8 -6
  344. package/src/input-control/test/index.js +3 -0
  345. package/src/isolated-event-container/test/index.js +2 -0
  346. package/src/item-group/item/component.tsx +26 -2
  347. package/src/item-group/item-group/component.tsx +25 -2
  348. package/src/item-group/stories/index.tsx +103 -0
  349. package/src/item-group/styles.ts +1 -0
  350. package/src/item-group/test/__snapshots__/index.js.snap +11 -10
  351. package/src/mobile/bottom-sheet/picker-cell.native.js +1 -6
  352. package/src/mobile/global-styles-context/utils.native.js +17 -16
  353. package/src/modal/test/index.tsx +1 -3
  354. package/src/navigable-container/test/navigable-menu.js +2 -0
  355. package/src/navigable-container/test/tababble-container.js +2 -0
  356. package/src/navigation/test/index.js +2 -0
  357. package/src/navigator/test/index.tsx +2 -0
  358. package/src/notice/stories/index.js +30 -58
  359. package/src/notice/test/index.js +8 -3
  360. package/src/number-control/test/index.tsx +2 -0
  361. package/src/panel/row.js +3 -3
  362. package/src/panel/stories/index.js +62 -80
  363. package/src/panel/test/__snapshots__/body.js.snap +9 -0
  364. package/src/panel/test/body.js +71 -62
  365. package/src/placeholder/style.scss +1 -1
  366. package/src/placeholder/test/index.tsx +3 -0
  367. package/src/query-controls/index.js +1 -0
  368. package/src/resizable-box/README.md +2 -2
  369. package/src/resizable-box/index.tsx +7 -6
  370. package/src/resizable-box/stories/index.tsx +92 -0
  371. package/src/responsive-wrapper/README.md +29 -0
  372. package/src/responsive-wrapper/{index.js → index.tsx} +23 -2
  373. package/src/responsive-wrapper/stories/index.tsx +38 -0
  374. package/src/responsive-wrapper/types.ts +20 -0
  375. package/src/sandbox/README.md +45 -2
  376. package/src/sandbox/{index.js → index.tsx} +47 -24
  377. package/src/sandbox/stories/index.tsx +32 -0
  378. package/src/sandbox/test/{index.js → index.tsx} +9 -4
  379. package/src/sandbox/types.ts +34 -0
  380. package/src/select-control/test/select-control.tsx +2 -0
  381. package/src/slot-fill/stories/index.js +12 -17
  382. package/src/style.scss +3 -3
  383. package/src/tab-panel/README.md +1 -0
  384. package/src/tab-panel/index.tsx +20 -7
  385. package/src/tab-panel/stories/index.tsx +20 -0
  386. package/src/tab-panel/test/index.tsx +91 -0
  387. package/src/tab-panel/types.ts +10 -4
  388. package/src/text-highlight/test/index.tsx +1 -0
  389. package/src/toggle-group-control/test/index.tsx +2 -0
  390. package/src/toolbar/index.js +6 -52
  391. package/src/toolbar/stories/index.js +2 -9
  392. package/src/{toolbar-button/stories/index.js → toolbar/stories/toolbar-button.js} +1 -2
  393. package/src/{toolbar-group/stories/index.js → toolbar/stories/toolbar-group.js} +1 -1
  394. package/src/toolbar/test/index.js +1 -2
  395. package/src/{toolbar-group/test/index.js → toolbar/test/toolbar-group.js} +3 -1
  396. package/src/toolbar/{README.md → toolbar/README.md} +0 -0
  397. package/src/toolbar/toolbar/index.js +52 -0
  398. package/src/toolbar/{style.native.scss → toolbar/style.native.scss} +0 -0
  399. package/src/toolbar/{style.scss → toolbar/style.scss} +1 -1
  400. package/src/toolbar/{toolbar-container.js → toolbar/toolbar-container.js} +0 -0
  401. package/src/toolbar/{toolbar-container.native.js → toolbar/toolbar-container.native.js} +0 -0
  402. package/src/{toolbar-button → toolbar/toolbar-button}/README.md +0 -0
  403. package/src/{toolbar-button → toolbar/toolbar-button}/index.js +1 -1
  404. package/src/{toolbar-button → toolbar/toolbar-button}/style.scss +0 -0
  405. package/src/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.js +0 -0
  406. package/src/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.native.js +0 -0
  407. package/src/{toolbar-context → toolbar/toolbar-context}/index.js +0 -0
  408. package/src/{toolbar-dropdown-menu → toolbar/toolbar-dropdown-menu}/README.md +0 -0
  409. package/src/{toolbar-dropdown-menu → toolbar/toolbar-dropdown-menu}/index.js +1 -1
  410. package/src/{toolbar-group → toolbar/toolbar-group}/README.md +0 -0
  411. package/src/{toolbar-group → toolbar/toolbar-group}/index.js +0 -0
  412. package/src/{toolbar-group → toolbar/toolbar-group}/style.native.scss +0 -0
  413. package/src/{toolbar-group → toolbar/toolbar-group}/style.scss +0 -0
  414. package/src/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.js +1 -1
  415. package/src/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.native.js +1 -1
  416. package/src/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.js +0 -0
  417. package/src/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.native.js +0 -0
  418. package/src/{toolbar-item → toolbar/toolbar-item}/README.md +0 -0
  419. package/src/{toolbar-item → toolbar/toolbar-item}/index.js +0 -0
  420. package/src/{toolbar-item → toolbar/toolbar-item}/index.native.js +0 -0
  421. package/src/tooltip/stories/index.js +68 -78
  422. package/src/tooltip/test/index.js +2 -0
  423. package/src/tree-grid/index.js +2 -4
  424. package/src/unit-control/test/index.tsx +3 -0
  425. package/src/utils/hooks/test/use-latest-ref.js +2 -0
  426. package/tsconfig.json +0 -7
  427. package/tsconfig.tsbuildinfo +1 -1
  428. package/build/toolbar/toolbar-container.native.js.map +0 -1
  429. package/build/toolbar-button/index.js.map +0 -1
  430. package/build/toolbar-button/toolbar-button-container.js.map +0 -1
  431. package/build/toolbar-button/toolbar-button-container.native.js.map +0 -1
  432. package/build/toolbar-context/index.js.map +0 -1
  433. package/build/toolbar-dropdown-menu/index.js.map +0 -1
  434. package/build/toolbar-group/index.js.map +0 -1
  435. package/build/toolbar-group/toolbar-group-collapsed.js.map +0 -1
  436. package/build/toolbar-group/toolbar-group-collapsed.native.js.map +0 -1
  437. package/build/toolbar-group/toolbar-group-container.js.map +0 -1
  438. package/build/toolbar-group/toolbar-group-container.native.js.map +0 -1
  439. package/build/toolbar-item/index.js.map +0 -1
  440. package/build/toolbar-item/index.native.js.map +0 -1
  441. package/build-module/toolbar/toolbar-container.js.map +0 -1
  442. package/build-module/toolbar/toolbar-container.native.js.map +0 -1
  443. package/build-module/toolbar-button/index.js.map +0 -1
  444. package/build-module/toolbar-button/toolbar-button-container.js.map +0 -1
  445. package/build-module/toolbar-button/toolbar-button-container.native.js.map +0 -1
  446. package/build-module/toolbar-context/index.js.map +0 -1
  447. package/build-module/toolbar-dropdown-menu/index.js.map +0 -1
  448. package/build-module/toolbar-group/index.js.map +0 -1
  449. package/build-module/toolbar-group/toolbar-group-collapsed.js.map +0 -1
  450. package/build-module/toolbar-group/toolbar-group-collapsed.native.js.map +0 -1
  451. package/build-module/toolbar-group/toolbar-group-container.js.map +0 -1
  452. package/build-module/toolbar-group/toolbar-group-container.native.js.map +0 -1
  453. package/build-module/toolbar-item/index.js.map +0 -1
  454. package/build-module/toolbar-item/index.native.js.map +0 -1
  455. package/src/icon/stories/index.js +0 -128
  456. package/src/item-group/stories/index.js +0 -270
  457. package/src/resizable-box/stories/index.js +0 -97
@@ -1,13 +1,21 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { act, fireEvent, render, screen } from '@testing-library/react';
4
+ import {
5
+ act,
6
+ fireEvent,
7
+ render,
8
+ screen,
9
+ waitFor,
10
+ } from '@testing-library/react';
5
11
 
6
12
  /**
7
13
  * Internal dependencies
8
14
  */
9
15
  import { BorderControl } from '../';
10
16
 
17
+ jest.useRealTimers();
18
+
11
19
  const colors = [
12
20
  { name: 'Gray', color: '#f6f7f7' },
13
21
  { name: 'Blue', color: '#72aee6' },
@@ -37,29 +45,24 @@ function createProps( customProps ) {
37
45
 
38
46
  const toggleLabelRegex = /Border color( and style)* picker/;
39
47
 
40
- const renderBorderControl = async ( props ) => {
41
- const view = render( <BorderControl { ...props } /> );
42
- // When the `Popover` component is rendered or updated, the `useFloating`
43
- // hook from the `floating-ui` package will schedule a state update in a
44
- // promise handler. We need to wait for this promise handler to execute
45
- // before checking results. That's what this async `act()` call achieves.
46
- // See also: https://floating-ui.com/docs/react-dom#testing
47
- await act( () => Promise.resolve() );
48
- return view;
49
- };
50
-
51
- const rerenderBorderControl = async ( rerender, props ) => {
52
- const view = rerender( <BorderControl { ...props } /> );
53
- // Same reason to `act()` as in `renderBorderControl` above.
54
- await act( () => Promise.resolve() );
55
- return view;
56
- };
48
+ function getWrappingPopoverElement( element ) {
49
+ return element.closest( '.components-popover' );
50
+ }
57
51
 
58
52
  const openPopover = async () => {
59
53
  const toggleButton = screen.getByLabelText( toggleLabelRegex );
60
54
  fireEvent.click( toggleButton );
61
- // Same reason to `act()` as in `renderBorderControl` above.
62
- await act( () => Promise.resolve() );
55
+
56
+ // Wait for color picker popover to fully appear
57
+ const pickerButton = screen.getByRole( 'button', {
58
+ name: /^Custom color picker/,
59
+ } );
60
+
61
+ await waitFor( () =>
62
+ expect(
63
+ getWrappingPopoverElement( pickerButton )
64
+ ).toBePositionedPopover()
65
+ );
63
66
  };
64
67
 
65
68
  const getButton = ( name ) => {
@@ -93,9 +96,9 @@ const clearWidthInput = () => setWidthInput( '' );
93
96
 
94
97
  describe( 'BorderControl', () => {
95
98
  describe( 'basic rendering', () => {
96
- it( 'should render standard border control', async () => {
99
+ it( 'should render standard border control', () => {
97
100
  const props = createProps();
98
- await renderBorderControl( props );
101
+ render( <BorderControl { ...props } /> );
99
102
 
100
103
  const label = screen.getByText( props.label );
101
104
  const colorButton = screen.getByLabelText( toggleLabelRegex );
@@ -114,9 +117,9 @@ describe( 'BorderControl', () => {
114
117
  expect( slider ).not.toBeInTheDocument();
115
118
  } );
116
119
 
117
- it( 'should hide label', async () => {
120
+ it( 'should hide label', () => {
118
121
  const props = createProps( { hideLabelFromVision: true } );
119
- await renderBorderControl( props );
122
+ render( <BorderControl { ...props } /> );
120
123
  const label = screen.getByText( props.label );
121
124
 
122
125
  // As visually hidden labels are still included in the document
@@ -128,17 +131,17 @@ describe( 'BorderControl', () => {
128
131
  );
129
132
  } );
130
133
 
131
- it( 'should render with slider', async () => {
134
+ it( 'should render with slider', () => {
132
135
  const props = createProps( { withSlider: true } );
133
- await renderBorderControl( props );
136
+ render( <BorderControl { ...props } /> );
134
137
 
135
138
  const slider = getSliderInput();
136
139
  expect( slider ).toBeInTheDocument();
137
140
  } );
138
141
 
139
- it( 'should render placeholder in UnitControl', async () => {
142
+ it( 'should render placeholder in UnitControl', () => {
140
143
  const props = createProps( { placeholder: 'Mixed' } );
141
- await renderBorderControl( props );
144
+ render( <BorderControl { ...props } /> );
142
145
 
143
146
  const widthInput = getWidthInput();
144
147
  expect( widthInput ).toHaveAttribute( 'placeholder', 'Mixed' );
@@ -146,7 +149,7 @@ describe( 'BorderControl', () => {
146
149
 
147
150
  it( 'should render color and style popover', async () => {
148
151
  const props = createProps();
149
- await renderBorderControl( props );
152
+ render( <BorderControl { ...props } /> );
150
153
  await openPopover();
151
154
 
152
155
  const customColorPicker = getButton( /Custom color picker/ );
@@ -170,7 +173,7 @@ describe( 'BorderControl', () => {
170
173
 
171
174
  it( 'should render color and style popover header', async () => {
172
175
  const props = createProps( { showDropdownHeader: true } );
173
- await renderBorderControl( props );
176
+ render( <BorderControl { ...props } /> );
174
177
  await openPopover();
175
178
 
176
179
  const headerLabel = screen.getByText( 'Border color' );
@@ -182,7 +185,7 @@ describe( 'BorderControl', () => {
182
185
 
183
186
  it( 'should not render style options when opted out of', async () => {
184
187
  const props = createProps( { enableStyle: false } );
185
- await renderBorderControl( props );
188
+ render( <BorderControl { ...props } /> );
186
189
  await openPopover();
187
190
 
188
191
  const styleLabel = screen.queryByText( 'Style' );
@@ -199,18 +202,18 @@ describe( 'BorderControl', () => {
199
202
 
200
203
  describe( 'color and style picker aria labels', () => {
201
204
  describe( 'with style selection enabled', () => {
202
- it( 'should include both color and style in label', async () => {
205
+ it( 'should include both color and style in label', () => {
203
206
  const props = createProps( { value: undefined } );
204
- await renderBorderControl( props );
207
+ render( <BorderControl { ...props } /> );
205
208
 
206
209
  expect(
207
210
  screen.getByLabelText( 'Border color and style picker.' )
208
211
  ).toBeInTheDocument();
209
212
  } );
210
213
 
211
- it( 'should correctly describe named color selection', async () => {
214
+ it( 'should correctly describe named color selection', () => {
212
215
  const props = createProps( { value: { color: '#72aee6' } } );
213
- await renderBorderControl( props );
216
+ render( <BorderControl { ...props } /> );
214
217
 
215
218
  expect(
216
219
  screen.getByLabelText(
@@ -219,9 +222,9 @@ describe( 'BorderControl', () => {
219
222
  ).toBeInTheDocument();
220
223
  } );
221
224
 
222
- it( 'should correctly describe custom color selection', async () => {
225
+ it( 'should correctly describe custom color selection', () => {
223
226
  const props = createProps( { value: { color: '#4b1d80' } } );
224
- await renderBorderControl( props );
227
+ render( <BorderControl { ...props } /> );
225
228
 
226
229
  expect(
227
230
  screen.getByLabelText(
@@ -230,11 +233,11 @@ describe( 'BorderControl', () => {
230
233
  ).toBeInTheDocument();
231
234
  } );
232
235
 
233
- it( 'should correctly describe named color and style selections', async () => {
236
+ it( 'should correctly describe named color and style selections', () => {
234
237
  const props = createProps( {
235
238
  value: { color: '#72aee6', style: 'dotted' },
236
239
  } );
237
- await renderBorderControl( props );
240
+ render( <BorderControl { ...props } /> );
238
241
 
239
242
  expect(
240
243
  screen.getByLabelText(
@@ -243,11 +246,11 @@ describe( 'BorderControl', () => {
243
246
  ).toBeInTheDocument();
244
247
  } );
245
248
 
246
- it( 'should correctly describe custom color and style selections', async () => {
249
+ it( 'should correctly describe custom color and style selections', () => {
247
250
  const props = createProps( {
248
251
  value: { color: '#4b1d80', style: 'dashed' },
249
252
  } );
250
- await renderBorderControl( props );
253
+ render( <BorderControl { ...props } /> );
251
254
 
252
255
  expect(
253
256
  screen.getByLabelText(
@@ -258,24 +261,24 @@ describe( 'BorderControl', () => {
258
261
  } );
259
262
 
260
263
  describe( 'with style selection disabled', () => {
261
- it( 'should only include color in the label', async () => {
264
+ it( 'should only include color in the label', () => {
262
265
  const props = createProps( {
263
266
  value: undefined,
264
267
  enableStyle: false,
265
268
  } );
266
- await renderBorderControl( props );
269
+ render( <BorderControl { ...props } /> );
267
270
 
268
271
  expect(
269
272
  screen.getByLabelText( 'Border color picker.' )
270
273
  ).toBeInTheDocument();
271
274
  } );
272
275
 
273
- it( 'should correctly describe named color selection', async () => {
276
+ it( 'should correctly describe named color selection', () => {
274
277
  const props = createProps( {
275
278
  value: { color: '#72aee6' },
276
279
  enableStyle: false,
277
280
  } );
278
- await renderBorderControl( props );
281
+ render( <BorderControl { ...props } /> );
279
282
 
280
283
  expect(
281
284
  screen.getByLabelText(
@@ -284,12 +287,12 @@ describe( 'BorderControl', () => {
284
287
  ).toBeInTheDocument();
285
288
  } );
286
289
 
287
- it( 'should correctly describe custom color selection', async () => {
290
+ it( 'should correctly describe custom color selection', () => {
288
291
  const props = createProps( {
289
292
  value: { color: '#4b1d80' },
290
293
  enableStyle: false,
291
294
  } );
292
- await renderBorderControl( props );
295
+ render( <BorderControl { ...props } /> );
293
296
 
294
297
  expect(
295
298
  screen.getByLabelText(
@@ -301,9 +304,9 @@ describe( 'BorderControl', () => {
301
304
  } );
302
305
 
303
306
  describe( 'onChange handling', () => {
304
- it( 'should update width with slider value', async () => {
307
+ it( 'should update width with slider value', () => {
305
308
  const props = createProps( { withSlider: true } );
306
- const { rerender } = await renderBorderControl( props );
309
+ const { rerender } = render( <BorderControl { ...props } /> );
307
310
 
308
311
  const slider = getSliderInput();
309
312
  fireEvent.change( slider, { target: { value: '5' } } );
@@ -313,7 +316,7 @@ describe( 'BorderControl', () => {
313
316
  width: '5px',
314
317
  } );
315
318
 
316
- await rerenderBorderControl( rerender, props );
319
+ rerender( <BorderControl { ...props } /> );
317
320
  const widthInput = getWidthInput();
318
321
 
319
322
  expect( widthInput.value ).toEqual( '5' );
@@ -321,7 +324,7 @@ describe( 'BorderControl', () => {
321
324
 
322
325
  it( 'should update color selection', async () => {
323
326
  const props = createProps();
324
- await renderBorderControl( props );
327
+ render( <BorderControl { ...props } /> );
325
328
  await openPopover();
326
329
  clickButton( 'Color: Green' );
327
330
 
@@ -333,7 +336,7 @@ describe( 'BorderControl', () => {
333
336
 
334
337
  it( 'should clear color selection when toggling swatch off', async () => {
335
338
  const props = createProps();
336
- await renderBorderControl( props );
339
+ render( <BorderControl { ...props } /> );
337
340
  await openPopover();
338
341
  clickButton( 'Color: Blue' );
339
342
 
@@ -345,7 +348,7 @@ describe( 'BorderControl', () => {
345
348
 
346
349
  it( 'should update style selection', async () => {
347
350
  const props = createProps();
348
- await renderBorderControl( props );
351
+ render( <BorderControl { ...props } /> );
349
352
  await openPopover();
350
353
  clickButton( 'Dashed' );
351
354
 
@@ -357,7 +360,7 @@ describe( 'BorderControl', () => {
357
360
 
358
361
  it( 'should take no action when color and style popover is closed', async () => {
359
362
  const props = createProps( { showDropdownHeader: true } );
360
- await renderBorderControl( props );
363
+ render( <BorderControl { ...props } /> );
361
364
  await openPopover();
362
365
  clickButton( 'Close border color' );
363
366
 
@@ -366,7 +369,7 @@ describe( 'BorderControl', () => {
366
369
 
367
370
  it( 'should reset color and style only when popover reset button clicked', async () => {
368
371
  const props = createProps();
369
- await renderBorderControl( props );
372
+ render( <BorderControl { ...props } /> );
370
373
  await openPopover();
371
374
  clickButton( 'Reset to default' );
372
375
 
@@ -379,9 +382,9 @@ describe( 'BorderControl', () => {
379
382
 
380
383
  it( 'should sanitize border when width and color are undefined', async () => {
381
384
  const props = createProps();
382
- const { rerender } = await renderBorderControl( props );
385
+ const { rerender } = render( <BorderControl { ...props } /> );
383
386
  clearWidthInput();
384
- await rerenderBorderControl( rerender, props );
387
+ rerender( <BorderControl { ...props } /> );
385
388
  await openPopover();
386
389
  clickButton( 'Color: Blue' );
387
390
 
@@ -392,9 +395,9 @@ describe( 'BorderControl', () => {
392
395
  const props = createProps( {
393
396
  shouldSanitizeBorder: false,
394
397
  } );
395
- const { rerender } = await renderBorderControl( props );
398
+ const { rerender } = render( <BorderControl { ...props } /> );
396
399
  clearWidthInput();
397
- await rerenderBorderControl( rerender, props );
400
+ rerender( <BorderControl { ...props } /> );
398
401
  await openPopover();
399
402
  clickButton( 'Color: Blue' );
400
403
 
@@ -407,7 +410,7 @@ describe( 'BorderControl', () => {
407
410
 
408
411
  it( 'should clear color and set style to `none` when setting zero width', async () => {
409
412
  const props = createProps();
410
- await renderBorderControl( props );
413
+ render( <BorderControl { ...props } /> );
411
414
  await openPopover();
412
415
  clickButton( 'Color: Green' );
413
416
  clickButton( 'Dotted' );
@@ -422,12 +425,12 @@ describe( 'BorderControl', () => {
422
425
 
423
426
  it( 'should reselect color and style selections when changing to non-zero width', async () => {
424
427
  const props = createProps();
425
- const { rerender } = await renderBorderControl( props );
428
+ const { rerender } = render( <BorderControl { ...props } /> );
426
429
  await openPopover();
427
430
  clickButton( 'Color: Green' );
428
- await rerenderBorderControl( rerender, props );
431
+ rerender( <BorderControl { ...props } /> );
429
432
  clickButton( 'Dotted' );
430
- await rerenderBorderControl( rerender, props );
433
+ rerender( <BorderControl { ...props } /> );
431
434
  setWidthInput( '0' );
432
435
  setWidthInput( '5' );
433
436
 
@@ -440,7 +443,7 @@ describe( 'BorderControl', () => {
440
443
 
441
444
  it( 'should set a non-zero width when applying color to zero width border', async () => {
442
445
  const props = createProps( { value: undefined } );
443
- const { rerender } = await renderBorderControl( props );
446
+ const { rerender } = render( <BorderControl { ...props } /> );
444
447
  await openPopover();
445
448
  clickButton( 'Color: Yellow' );
446
449
 
@@ -451,7 +454,7 @@ describe( 'BorderControl', () => {
451
454
  } );
452
455
 
453
456
  setWidthInput( '0' );
454
- await rerenderBorderControl( rerender, props );
457
+ rerender( <BorderControl { ...props } /> );
455
458
  clickButton( 'Color: Green' );
456
459
 
457
460
  expect( props.onChange ).toHaveBeenCalledWith( {
@@ -466,7 +469,7 @@ describe( 'BorderControl', () => {
466
469
  value: undefined,
467
470
  shouldSanitizeBorder: false,
468
471
  } );
469
- const { rerender } = await renderBorderControl( props );
472
+ const { rerender } = render( <BorderControl { ...props } /> );
470
473
  await openPopover();
471
474
  clickButton( 'Dashed' );
472
475
 
@@ -477,7 +480,7 @@ describe( 'BorderControl', () => {
477
480
  } );
478
481
 
479
482
  setWidthInput( '0' );
480
- await rerenderBorderControl( rerender, props );
483
+ rerender( <BorderControl { ...props } /> );
481
484
  clickButton( 'Dotted' );
482
485
 
483
486
  expect( props.onChange ).toHaveBeenCalledWith( {
@@ -17,10 +17,7 @@ export type Border = {
17
17
 
18
18
  export type ColorProps = Pick<
19
19
  ColorPaletteProps,
20
- | 'colors'
21
- | 'enableAlpha'
22
- | '__experimentalHasMultipleOrigins'
23
- | '__experimentalIsRenderedInSidebar'
20
+ 'colors' | 'enableAlpha' | '__experimentalIsRenderedInSidebar'
24
21
  > & {
25
22
  /**
26
23
  * This toggles the ability to choose custom colors.
@@ -14,6 +14,8 @@ import { useState } from '@wordpress/element';
14
14
  */
15
15
  import BoxControl from '../';
16
16
 
17
+ jest.useFakeTimers();
18
+
17
19
  const Example = ( extraProps ) => {
18
20
  const [ state, setState ] = useState();
19
21
 
@@ -15,6 +15,8 @@ import { useState } from '@wordpress/element';
15
15
  import BaseCheckboxControl from '..';
16
16
  import type { CheckboxControlProps } from '../types';
17
17
 
18
+ jest.useFakeTimers();
19
+
18
20
  const noop = () => {};
19
21
 
20
22
  const getInput = () => screen.getByRole( 'checkbox' ) as HTMLInputElement;
@@ -32,6 +32,7 @@ import type {
32
32
  SinglePaletteProps,
33
33
  } from './types';
34
34
  import type { WordPressComponentProps } from '../ui/context';
35
+ import type { DropdownProps } from '../dropdown/types';
35
36
 
36
37
  extend( [ namesPlugin, a11yPlugin ] );
37
38
 
@@ -134,7 +135,7 @@ export function CustomColorPickerDropdown( {
134
135
  popoverProps: receivedPopoverProps,
135
136
  ...props
136
137
  }: CustomColorPickerDropdownProps ) {
137
- const popoverProps = useMemo(
138
+ const popoverProps = useMemo< DropdownProps[ 'popoverProps' ] >(
138
139
  () => ( {
139
140
  shift: true,
140
141
  ...( isRenderedInSidebar
@@ -166,7 +167,7 @@ export function CustomColorPickerDropdown( {
166
167
  export const extractColorNameFromCurrentValue = (
167
168
  currentValue?: ColorPaletteProps[ 'value' ],
168
169
  colors: ColorPaletteProps[ 'colors' ] = [],
169
- showMultiplePalettes: ColorPaletteProps[ '__experimentalHasMultipleOrigins' ] = false
170
+ showMultiplePalettes: boolean = false
170
171
  ) => {
171
172
  if ( ! currentValue ) {
172
173
  return '';
@@ -224,33 +225,32 @@ function UnforwardedColorPalette(
224
225
  enableAlpha = false,
225
226
  onChange,
226
227
  value,
227
- __experimentalHasMultipleOrigins = false,
228
228
  __experimentalIsRenderedInSidebar = false,
229
229
  ...otherProps
230
230
  } = props;
231
231
  const clearColor = useCallback( () => onChange( undefined ), [ onChange ] );
232
232
 
233
+ const hasMultipleColorOrigins =
234
+ colors.length > 0 &&
235
+ ( colors as PaletteObject[] )[ 0 ].colors !== undefined;
233
236
  const buttonLabelName = useMemo(
234
237
  () =>
235
238
  extractColorNameFromCurrentValue(
236
239
  value,
237
240
  colors,
238
- __experimentalHasMultipleOrigins
241
+ hasMultipleColorOrigins
239
242
  ),
240
- [ value, colors, __experimentalHasMultipleOrigins ]
243
+ [ value, colors, hasMultipleColorOrigins ]
241
244
  );
242
245
 
243
- // Make sure that the `colors` array has a format (single/multiple) that is
244
- // compatible with the `__experimentalHasMultipleOrigins` flag. This is true
245
- // when __experimentalHasMultipleOrigins and areColorsMultiplePalette() are
246
- // either both `true` or both `false`.
246
+ // Make sure that the `colors` array has a valid format.
247
247
  if (
248
248
  colors.length > 0 &&
249
- __experimentalHasMultipleOrigins !== areColorsMultiplePalette( colors )
249
+ hasMultipleColorOrigins !== areColorsMultiplePalette( colors )
250
250
  ) {
251
251
  // eslint-disable-next-line no-console
252
252
  console.warn(
253
- 'wp.components.ColorPalette: please specify a format for the `colors` prop that is compatible with the `__experimentalHasMultipleOrigins` prop.'
253
+ 'wp.components.ColorPalette: please specify a valid format for the `colors` prop. '
254
254
  );
255
255
  return null;
256
256
  }
@@ -340,7 +340,7 @@ function UnforwardedColorPalette(
340
340
  ) }
341
341
  />
342
342
  ) }
343
- { __experimentalHasMultipleOrigins ? (
343
+ { hasMultipleColorOrigins ? (
344
344
  <MultiplePalettes
345
345
  { ...paletteCommonProps }
346
346
  colors={ colors as PaletteObject[] }
@@ -20,13 +20,6 @@ const meta: ComponentMeta< typeof ColorPalette > = {
20
20
  title: 'Components/ColorPalette',
21
21
  component: ColorPalette,
22
22
  argTypes: {
23
- // Removing the control because setting this prop without changing the
24
- // format of the `colors` prop can break the component.
25
- __experimentalHasMultipleOrigins: {
26
- control: {
27
- type: null,
28
- },
29
- },
30
23
  as: { control: { type: null } },
31
24
  onChange: { action: 'onChange', control: { type: null } },
32
25
  value: { control: { type: null } },
@@ -69,14 +62,8 @@ Default.args = {
69
62
  ],
70
63
  };
71
64
 
72
- /**
73
- * When setting the `__experimentalHasMultipleOrigins` prop to `true`,
74
- * the `colors` prop is expected to be an array of color palettes, rather
75
- * than an array of color objects.
76
- */
77
65
  export const MultipleOrigins = Template.bind( {} );
78
66
  MultipleOrigins.args = {
79
- __experimentalHasMultipleOrigins: true,
80
67
  colors: [
81
68
  {
82
69
  name: 'Primary colors',
@@ -9,6 +9,8 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import ColorPalette from '..';
11
11
 
12
+ jest.useFakeTimers();
13
+
12
14
  const EXAMPLE_COLORS = [
13
15
  { name: 'red', color: '#f00' },
14
16
  { name: 'green', color: '#0f0' },
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { CSSProperties, MouseEventHandler, ReactNode } from 'react';
4
+ import type { CSSProperties, ReactNode } from 'react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import type { PopoverProps } from '../popover/types';
9
+ import type { DropdownProps } from '../dropdown/types';
10
10
 
11
11
  export type ColorObject = {
12
12
  name: string;
@@ -37,15 +37,8 @@ export type MultiplePalettesProps = PaletteProps & {
37
37
  colors: PaletteObject[];
38
38
  };
39
39
 
40
- // TODO: should extend `Dropdown`'s props once it gets refactored to TypeScript
41
- export type CustomColorPickerDropdownProps = {
40
+ export type CustomColorPickerDropdownProps = DropdownProps & {
42
41
  isRenderedInSidebar: boolean;
43
- renderContent: () => ReactNode;
44
- popoverProps?: Omit< PopoverProps, 'children' >;
45
- renderToggle: ( props: {
46
- isOpen: boolean;
47
- onToggle: MouseEventHandler< HTMLButtonElement >;
48
- } ) => ReactNode;
49
42
  };
50
43
 
51
44
  export type ColorPaletteProps = Pick< PaletteProps, 'onChange' > & {
@@ -81,13 +74,6 @@ export type ColorPaletteProps = Pick< PaletteProps, 'onChange' > & {
81
74
  * Currently active value.
82
75
  */
83
76
  value?: string;
84
- /**
85
- * Whether the colors prop is an array of color palettes,
86
- * rather than an array of color objects.
87
- *
88
- * @default false
89
- */
90
- __experimentalHasMultipleOrigins?: boolean;
91
77
  /**
92
78
  * Whether this is rendered in the sidebar.
93
79
  *
@@ -97,6 +97,7 @@ const ColorPicker = (
97
97
  <AuxiliaryColorArtefactWrapper>
98
98
  <AuxiliaryColorArtefactHStackHeader justify="space-between">
99
99
  <SelectControl
100
+ __nextHasNoMarginBottom
100
101
  options={ options }
101
102
  value={ colorType }
102
103
  onChange={ ( nextColorType ) =>