@wordpress/components 22.1.0 → 23.1.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 (660) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/CONTRIBUTING.md +0 -21
  3. package/build/alignment-matrix-control/cell.js.map +1 -1
  4. package/build/alignment-matrix-control/icon.js +4 -2
  5. package/build/alignment-matrix-control/icon.js.map +1 -1
  6. package/build/alignment-matrix-control/index.js +25 -1
  7. package/build/alignment-matrix-control/index.js.map +1 -1
  8. package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +13 -13
  9. package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +1 -1
  10. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +16 -16
  11. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  12. package/build/alignment-matrix-control/types.js +6 -0
  13. package/build/alignment-matrix-control/types.js.map +1 -0
  14. package/build/alignment-matrix-control/utils.js +9 -8
  15. package/build/alignment-matrix-control/utils.js.map +1 -1
  16. package/build/angle-picker-control/styles/angle-picker-control-styles.js +9 -9
  17. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  18. package/build/autocomplete/index.js +39 -12
  19. package/build/autocomplete/index.js.map +1 -1
  20. package/build/base-control/hooks.js +52 -0
  21. package/build/base-control/hooks.js.map +1 -0
  22. package/build/base-control/index.js +24 -7
  23. package/build/base-control/index.js.map +1 -1
  24. package/build/base-field/hook.js +0 -14
  25. package/build/base-field/hook.js.map +1 -1
  26. package/build/base-field/index.js.map +1 -1
  27. package/build/base-field/styles.js +5 -5
  28. package/build/base-field/styles.js.map +1 -1
  29. package/build/base-field/types.js +6 -0
  30. package/build/base-field/types.js.map +1 -0
  31. package/build/border-box-control/border-box-control/component.js +0 -3
  32. package/build/border-box-control/border-box-control/component.js.map +1 -1
  33. package/build/border-box-control/border-box-control/hook.js +0 -2
  34. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  35. package/build/border-box-control/border-box-control-split-controls/component.js +0 -2
  36. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  37. package/build/border-box-control/border-box-control-split-controls/hook.js +0 -2
  38. package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  39. package/build/border-control/border-control/component.js +1 -2
  40. package/build/border-control/border-control/component.js.map +1 -1
  41. package/build/border-control/border-control/hook.js +0 -2
  42. package/build/border-control/border-control/hook.js.map +1 -1
  43. package/build/border-control/border-control-dropdown/component.js +6 -11
  44. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  45. package/build/border-control/border-control-dropdown/hook.js +0 -2
  46. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  47. package/build/border-control/styles.js +16 -16
  48. package/build/border-control/styles.js.map +1 -1
  49. package/build/box-control/linked-button.js +3 -4
  50. package/build/box-control/linked-button.js.map +1 -1
  51. package/build/color-palette/index.js +7 -15
  52. package/build/color-palette/index.js.map +1 -1
  53. package/build/color-picker/input-with-slider.js +1 -0
  54. package/build/color-picker/input-with-slider.js.map +1 -1
  55. package/build/color-picker/styles.js +8 -8
  56. package/build/color-picker/styles.js.map +1 -1
  57. package/build/custom-select-control/index.js +14 -2
  58. package/build/custom-select-control/index.js.map +1 -1
  59. package/build/dashicon/index.js +1 -4
  60. package/build/dashicon/index.js.map +1 -1
  61. package/build/date-time/date-time/index.js +4 -4
  62. package/build/date-time/date-time/index.js.map +1 -1
  63. package/build/dimension-control/index.js.map +1 -1
  64. package/build/dropdown/index.js +45 -10
  65. package/build/dropdown/index.js.map +1 -1
  66. package/build/duotone-picker/duotone-picker.js +2 -2
  67. package/build/duotone-picker/duotone-picker.js.map +1 -1
  68. package/build/gradient-picker/index.js +4 -11
  69. package/build/gradient-picker/index.js.map +1 -1
  70. package/build/higher-order/navigate-regions/index.js +4 -3
  71. package/build/higher-order/navigate-regions/index.js.map +1 -1
  72. package/build/higher-order/with-fallback-styles/index.js +2 -2
  73. package/build/higher-order/with-fallback-styles/index.js.map +1 -1
  74. package/build/index.js +13 -9
  75. package/build/index.js.map +1 -1
  76. package/build/input-control/index.js +17 -5
  77. package/build/input-control/index.js.map +1 -1
  78. package/build/input-control/input-base.js +2 -0
  79. package/build/input-control/input-base.js.map +1 -1
  80. package/build/mobile/bottom-sheet/cell.native.js +1 -1
  81. package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
  82. package/build/mobile/bottom-sheet/picker-cell.native.js +1 -9
  83. package/build/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
  84. package/build/mobile/bottom-sheet/switch-cell.native.js +1 -3
  85. package/build/mobile/bottom-sheet/switch-cell.native.js.map +1 -1
  86. package/build/mobile/global-styles-context/index.native.js +8 -8
  87. package/build/mobile/global-styles-context/index.native.js.map +1 -1
  88. package/build/mobile/global-styles-context/utils.native.js +30 -12
  89. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  90. package/build/mobile/keyboard-aware-flat-list/index.ios.js +4 -2
  91. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  92. package/build/modal/index.js +8 -0
  93. package/build/modal/index.js.map +1 -1
  94. package/build/navigator/navigator-provider/component.js +12 -8
  95. package/build/navigator/navigator-provider/component.js.map +1 -1
  96. package/build/number-control/styles/number-control-styles.js +8 -8
  97. package/build/number-control/styles/number-control-styles.js.map +1 -1
  98. package/build/palette-edit/index.js +72 -33
  99. package/build/palette-edit/index.js.map +1 -1
  100. package/build/popover/index.js +10 -2
  101. package/build/popover/index.js.map +1 -1
  102. package/build/query-controls/index.js +1 -0
  103. package/build/query-controls/index.js.map +1 -1
  104. package/build/snackbar/index.js +35 -24
  105. package/build/snackbar/index.js.map +1 -1
  106. package/build/snackbar/list.js +14 -19
  107. package/build/snackbar/list.js.map +1 -1
  108. package/build/snackbar/types.js +6 -0
  109. package/build/snackbar/types.js.map +1 -0
  110. package/build/tab-panel/index.js +15 -9
  111. package/build/tab-panel/index.js.map +1 -1
  112. package/build/theme/color-algorithms.js +118 -0
  113. package/build/theme/color-algorithms.js.map +1 -0
  114. package/build/theme/index.js +21 -18
  115. package/build/theme/index.js.map +1 -1
  116. package/build/theme/styles.js +10 -7
  117. package/build/theme/styles.js.map +1 -1
  118. package/build/toggle-control/index.js +5 -2
  119. package/build/toggle-control/index.js.map +1 -1
  120. package/build/ui/context/context-system-provider.js +3 -1
  121. package/build/ui/context/context-system-provider.js.map +1 -1
  122. package/build/unit-control/index.js +5 -2
  123. package/build/unit-control/index.js.map +1 -1
  124. package/build/utils/colors-values.js +1 -1
  125. package/build/utils/colors-values.js.map +1 -1
  126. package/build/utils/config-values.js +0 -2
  127. package/build/utils/config-values.js.map +1 -1
  128. package/build/utils/hooks/use-controlled-value.js.map +1 -1
  129. package/build-module/alignment-matrix-control/cell.js.map +1 -1
  130. package/build-module/alignment-matrix-control/icon.js +4 -2
  131. package/build-module/alignment-matrix-control/icon.js.map +1 -1
  132. package/build-module/alignment-matrix-control/index.js +23 -1
  133. package/build-module/alignment-matrix-control/index.js.map +1 -1
  134. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +13 -13
  135. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +1 -1
  136. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +16 -16
  137. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  138. package/build-module/alignment-matrix-control/types.js +2 -0
  139. package/build-module/alignment-matrix-control/types.js.map +1 -0
  140. package/build-module/alignment-matrix-control/utils.js +13 -8
  141. package/build-module/alignment-matrix-control/utils.js.map +1 -1
  142. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +9 -9
  143. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  144. package/build-module/autocomplete/index.js +39 -11
  145. package/build-module/autocomplete/index.js.map +1 -1
  146. package/build-module/base-control/hooks.js +41 -0
  147. package/build-module/base-control/hooks.js.map +1 -0
  148. package/build-module/base-control/index.js +18 -8
  149. package/build-module/base-control/index.js.map +1 -1
  150. package/build-module/base-field/hook.js +0 -14
  151. package/build-module/base-field/hook.js.map +1 -1
  152. package/build-module/base-field/index.js.map +1 -1
  153. package/build-module/base-field/styles.js +5 -5
  154. package/build-module/base-field/styles.js.map +1 -1
  155. package/build-module/base-field/types.js +2 -0
  156. package/build-module/base-field/types.js.map +1 -0
  157. package/build-module/border-box-control/border-box-control/component.js +0 -3
  158. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  159. package/build-module/border-box-control/border-box-control/hook.js +0 -2
  160. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  161. package/build-module/border-box-control/border-box-control-split-controls/component.js +0 -2
  162. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  163. package/build-module/border-box-control/border-box-control-split-controls/hook.js +0 -2
  164. package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  165. package/build-module/border-control/border-control/component.js +1 -2
  166. package/build-module/border-control/border-control/component.js.map +1 -1
  167. package/build-module/border-control/border-control/hook.js +0 -2
  168. package/build-module/border-control/border-control/hook.js.map +1 -1
  169. package/build-module/border-control/border-control-dropdown/component.js +6 -11
  170. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  171. package/build-module/border-control/border-control-dropdown/hook.js +0 -2
  172. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  173. package/build-module/border-control/styles.js +17 -17
  174. package/build-module/border-control/styles.js.map +1 -1
  175. package/build-module/box-control/linked-button.js +3 -4
  176. package/build-module/box-control/linked-button.js.map +1 -1
  177. package/build-module/color-palette/index.js +7 -15
  178. package/build-module/color-palette/index.js.map +1 -1
  179. package/build-module/color-picker/input-with-slider.js +1 -0
  180. package/build-module/color-picker/input-with-slider.js.map +1 -1
  181. package/build-module/color-picker/styles.js +8 -8
  182. package/build-module/color-picker/styles.js.map +1 -1
  183. package/build-module/custom-select-control/index.js +14 -2
  184. package/build-module/custom-select-control/index.js.map +1 -1
  185. package/build-module/dashicon/index.js +1 -4
  186. package/build-module/dashicon/index.js.map +1 -1
  187. package/build-module/date-time/date-time/index.js +4 -4
  188. package/build-module/date-time/date-time/index.js.map +1 -1
  189. package/build-module/dimension-control/index.js +1 -2
  190. package/build-module/dimension-control/index.js.map +1 -1
  191. package/build-module/dropdown/index.js +44 -10
  192. package/build-module/dropdown/index.js.map +1 -1
  193. package/build-module/duotone-picker/duotone-picker.js +2 -2
  194. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  195. package/build-module/gradient-picker/index.js +4 -10
  196. package/build-module/gradient-picker/index.js.map +1 -1
  197. package/build-module/higher-order/navigate-regions/index.js +4 -3
  198. package/build-module/higher-order/navigate-regions/index.js.map +1 -1
  199. package/build-module/higher-order/with-fallback-styles/index.js +2 -2
  200. package/build-module/higher-order/with-fallback-styles/index.js.map +1 -1
  201. package/build-module/index.js +2 -3
  202. package/build-module/index.js.map +1 -1
  203. package/build-module/input-control/index.js +16 -5
  204. package/build-module/input-control/index.js.map +1 -1
  205. package/build-module/input-control/input-base.js +2 -0
  206. package/build-module/input-control/input-base.js.map +1 -1
  207. package/build-module/mobile/bottom-sheet/cell.native.js +1 -1
  208. package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
  209. package/build-module/mobile/bottom-sheet/picker-cell.native.js +1 -8
  210. package/build-module/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
  211. package/build-module/mobile/bottom-sheet/switch-cell.native.js +1 -2
  212. package/build-module/mobile/bottom-sheet/switch-cell.native.js.map +1 -1
  213. package/build-module/mobile/global-styles-context/index.native.js +8 -7
  214. package/build-module/mobile/global-styles-context/index.native.js.map +1 -1
  215. package/build-module/mobile/global-styles-context/utils.native.js +31 -13
  216. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  217. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  218. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  219. package/build-module/modal/index.js +8 -0
  220. package/build-module/modal/index.js.map +1 -1
  221. package/build-module/navigator/navigator-provider/component.js +12 -8
  222. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  223. package/build-module/number-control/styles/number-control-styles.js +8 -10
  224. package/build-module/number-control/styles/number-control-styles.js.map +1 -1
  225. package/build-module/palette-edit/index.js +73 -34
  226. package/build-module/palette-edit/index.js.map +1 -1
  227. package/build-module/popover/index.js +10 -2
  228. package/build-module/popover/index.js.map +1 -1
  229. package/build-module/query-controls/index.js +1 -0
  230. package/build-module/query-controls/index.js.map +1 -1
  231. package/build-module/snackbar/index.js +33 -23
  232. package/build-module/snackbar/index.js.map +1 -1
  233. package/build-module/snackbar/list.js +14 -22
  234. package/build-module/snackbar/list.js.map +1 -1
  235. package/build-module/snackbar/types.js +2 -0
  236. package/build-module/snackbar/types.js.map +1 -0
  237. package/build-module/tab-panel/index.js +15 -8
  238. package/build-module/tab-panel/index.js.map +1 -1
  239. package/build-module/theme/color-algorithms.js +105 -0
  240. package/build-module/theme/color-algorithms.js.map +1 -0
  241. package/build-module/theme/index.js +21 -17
  242. package/build-module/theme/index.js.map +1 -1
  243. package/build-module/theme/styles.js +8 -6
  244. package/build-module/theme/styles.js.map +1 -1
  245. package/build-module/toggle-control/index.js +4 -2
  246. package/build-module/toggle-control/index.js.map +1 -1
  247. package/build-module/ui/context/context-system-provider.js +3 -2
  248. package/build-module/ui/context/context-system-provider.js.map +1 -1
  249. package/build-module/unit-control/index.js +5 -2
  250. package/build-module/unit-control/index.js.map +1 -1
  251. package/build-module/utils/colors-values.js +1 -1
  252. package/build-module/utils/colors-values.js.map +1 -1
  253. package/build-module/utils/config-values.js +0 -2
  254. package/build-module/utils/config-values.js.map +1 -1
  255. package/build-module/utils/hooks/use-controlled-value.js.map +1 -1
  256. package/build-style/style-rtl.css +108 -104
  257. package/build-style/style.css +108 -104
  258. package/build-types/alignment-matrix-control/cell.d.ts +5 -0
  259. package/build-types/alignment-matrix-control/cell.d.ts.map +1 -0
  260. package/build-types/alignment-matrix-control/icon.d.ts +6 -0
  261. package/build-types/alignment-matrix-control/icon.d.ts.map +1 -0
  262. package/build-types/alignment-matrix-control/index.d.ts +30 -0
  263. package/build-types/alignment-matrix-control/index.d.ts.map +1 -0
  264. package/build-types/alignment-matrix-control/stories/index.d.ts +14 -0
  265. package/build-types/alignment-matrix-control/stories/index.d.ts.map +1 -0
  266. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts +19 -0
  267. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts.map +1 -0
  268. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts +23 -0
  269. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts.map +1 -0
  270. package/build-types/alignment-matrix-control/test/index.d.ts +2 -0
  271. package/build-types/alignment-matrix-control/test/index.d.ts.map +1 -0
  272. package/build-types/alignment-matrix-control/types.d.ts +39 -0
  273. package/build-types/alignment-matrix-control/types.d.ts.map +1 -0
  274. package/build-types/alignment-matrix-control/utils.d.ts +33 -0
  275. package/build-types/alignment-matrix-control/utils.d.ts.map +1 -0
  276. package/build-types/base-control/hooks.d.ts +23 -0
  277. package/build-types/base-control/hooks.d.ts.map +1 -0
  278. package/build-types/base-control/index.d.ts +17 -7
  279. package/build-types/base-control/index.d.ts.map +1 -1
  280. package/build-types/base-control/stories/index.d.ts.map +1 -1
  281. package/build-types/base-control/test/index.d.ts +2 -0
  282. package/build-types/base-control/test/index.d.ts.map +1 -0
  283. package/build-types/base-control/types.d.ts +8 -2
  284. package/build-types/base-control/types.d.ts.map +1 -1
  285. package/build-types/base-field/hook.d.ts +7 -31
  286. package/build-types/base-field/hook.d.ts.map +1 -1
  287. package/build-types/base-field/index.d.ts +1 -1
  288. package/build-types/base-field/index.d.ts.map +1 -1
  289. package/build-types/base-field/styles.d.ts +5 -5
  290. package/build-types/base-field/styles.d.ts.map +1 -1
  291. package/build-types/base-field/test/index.d.ts +2 -0
  292. package/build-types/base-field/test/index.d.ts.map +1 -0
  293. package/build-types/base-field/types.d.ts +29 -0
  294. package/build-types/base-field/types.d.ts.map +1 -0
  295. package/build-types/border-box-control/border-box-control/component.d.ts +1 -1
  296. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  297. package/build-types/border-box-control/border-box-control/hook.d.ts +2 -3
  298. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  299. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +2 -2
  300. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +1 -1
  301. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  302. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +2 -3
  303. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  304. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
  305. package/build-types/border-box-control/stories/index.d.ts +1 -1
  306. package/build-types/border-control/border-control/component.d.ts +1 -1
  307. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  308. package/build-types/border-control/border-control/hook.d.ts +2 -3
  309. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  310. package/build-types/border-control/border-control-dropdown/component.d.ts +1 -1
  311. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  312. package/build-types/border-control/border-control-dropdown/hook.d.ts +2 -3
  313. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  314. package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
  315. package/build-types/border-control/stories/index.d.ts +6 -6
  316. package/build-types/border-control/stories/index.d.ts.map +1 -1
  317. package/build-types/border-control/styles.d.ts.map +1 -1
  318. package/build-types/border-control/types.d.ts +1 -1
  319. package/build-types/border-control/types.d.ts.map +1 -1
  320. package/build-types/card/card/hook.d.ts +2 -2
  321. package/build-types/card/card-body/hook.d.ts +2 -2
  322. package/build-types/card/card-divider/hook.d.ts +2 -2
  323. package/build-types/card/card-footer/hook.d.ts +2 -2
  324. package/build-types/card/card-header/hook.d.ts +2 -2
  325. package/build-types/card/card-media/hook.d.ts +2 -2
  326. package/build-types/color-palette/index.d.ts +3 -4
  327. package/build-types/color-palette/index.d.ts.map +1 -1
  328. package/build-types/color-palette/stories/index.d.ts +6 -14
  329. package/build-types/color-palette/stories/index.d.ts.map +1 -1
  330. package/build-types/color-palette/styles.d.ts +1 -1
  331. package/build-types/color-palette/types.d.ts +4 -17
  332. package/build-types/color-palette/types.d.ts.map +1 -1
  333. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  334. package/build-types/color-picker/styles.d.ts +5 -5
  335. package/build-types/color-picker/styles.d.ts.map +1 -1
  336. package/build-types/custom-select-control/index.d.ts.map +1 -1
  337. package/build-types/dashicon/index.d.ts +6 -20
  338. package/build-types/dashicon/index.d.ts.map +1 -1
  339. package/build-types/dashicon/types.d.ts +14 -0
  340. package/build-types/dashicon/types.d.ts.map +1 -1
  341. package/build-types/date-time/date/styles.d.ts +3 -3
  342. package/build-types/date-time/date-time/styles.d.ts +3 -3
  343. package/build-types/date-time/time/styles.d.ts +8 -8
  344. package/build-types/disabled/stories/index.d.ts.map +1 -1
  345. package/build-types/dropdown/index.d.ts +29 -1
  346. package/build-types/dropdown/index.d.ts.map +1 -1
  347. package/build-types/dropdown/stories/index.d.ts +23 -0
  348. package/build-types/dropdown/stories/index.d.ts.map +1 -0
  349. package/build-types/dropdown/test/index.d.ts +2 -0
  350. package/build-types/dropdown/test/index.d.ts.map +1 -0
  351. package/build-types/dropdown/types.d.ts +101 -0
  352. package/build-types/dropdown/types.d.ts.map +1 -1
  353. package/build-types/elevation/hook.d.ts +2 -2
  354. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  355. package/build-types/flex/flex/hook.d.ts +2 -2
  356. package/build-types/flex/flex-block/hook.d.ts +2 -2
  357. package/build-types/flex/flex-item/hook.d.ts +2 -2
  358. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -5
  359. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts.map +1 -1
  360. package/build-types/grid/hook.d.ts +2 -2
  361. package/build-types/h-stack/component.d.ts +1 -1
  362. package/build-types/h-stack/hook.d.ts +2 -2
  363. package/build-types/heading/hook.d.ts +2 -2
  364. package/build-types/icon/stories/index.d.ts +22 -0
  365. package/build-types/icon/stories/index.d.ts.map +1 -0
  366. package/build-types/input-control/index.d.ts +1 -1
  367. package/build-types/input-control/index.d.ts.map +1 -1
  368. package/build-types/input-control/input-base.d.ts.map +1 -1
  369. package/build-types/input-control/stories/index.d.ts +1 -0
  370. package/build-types/input-control/stories/index.d.ts.map +1 -1
  371. package/build-types/input-control/types.d.ts +2 -1
  372. package/build-types/input-control/types.d.ts.map +1 -1
  373. package/build-types/item-group/item/hook.d.ts +2 -2
  374. package/build-types/item-group/item-group/hook.d.ts +2 -2
  375. package/build-types/modal/index.d.ts.map +1 -1
  376. package/build-types/modal/stories/index.d.ts.map +1 -1
  377. package/build-types/navigator/navigator-back-button/hook.d.ts +3 -3
  378. package/build-types/navigator/navigator-button/hook.d.ts +3 -3
  379. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  380. package/build-types/number-control/index.d.ts +2 -2
  381. package/build-types/number-control/index.d.ts.map +1 -1
  382. package/build-types/number-control/stories/index.d.ts +25 -0
  383. package/build-types/number-control/stories/index.d.ts.map +1 -0
  384. package/build-types/number-control/styles/number-control-styles.d.ts +6 -6
  385. package/build-types/number-control/styles/number-control-styles.d.ts.map +1 -1
  386. package/build-types/number-control/test/index.d.ts +2 -0
  387. package/build-types/number-control/test/index.d.ts.map +1 -0
  388. package/build-types/popover/index.d.ts +1 -1
  389. package/build-types/popover/index.d.ts.map +1 -1
  390. package/build-types/popover/stories/e2e/index.d.ts +1 -1
  391. package/build-types/range-control/index.d.ts +1 -1
  392. package/build-types/range-control/styles/range-control-styles.d.ts +2 -2
  393. package/build-types/resizable-box/resize-tooltip/index.d.ts +15 -19
  394. package/build-types/resizable-box/resize-tooltip/index.d.ts.map +1 -1
  395. package/build-types/resizable-box/resize-tooltip/label.d.ts +4 -3
  396. package/build-types/resizable-box/resize-tooltip/label.d.ts.map +1 -1
  397. package/build-types/scrollable/hook.d.ts +2 -2
  398. package/build-types/search-control/index.d.ts +1 -1
  399. package/build-types/search-control/stories/index.d.ts +2 -2
  400. package/build-types/snackbar/index.d.ts +19 -0
  401. package/build-types/snackbar/index.d.ts.map +1 -0
  402. package/build-types/snackbar/list.d.ts +18 -0
  403. package/build-types/snackbar/list.d.ts.map +1 -0
  404. package/build-types/snackbar/stories/index.d.ts +16 -0
  405. package/build-types/snackbar/stories/index.d.ts.map +1 -0
  406. package/build-types/snackbar/stories/list.d.ts +12 -0
  407. package/build-types/snackbar/stories/list.d.ts.map +1 -0
  408. package/build-types/snackbar/types.d.ts +111 -0
  409. package/build-types/snackbar/types.d.ts.map +1 -0
  410. package/build-types/spacer/hook.d.ts +2 -2
  411. package/build-types/spinner/index.d.ts +1 -1
  412. package/build-types/surface/hook.d.ts +2 -2
  413. package/build-types/tab-panel/index.d.ts +1 -1
  414. package/build-types/tab-panel/index.d.ts.map +1 -1
  415. package/build-types/tab-panel/types.d.ts +19 -1
  416. package/build-types/tab-panel/types.d.ts.map +1 -1
  417. package/build-types/text/hook.d.ts +2 -2
  418. package/build-types/text-control/index.d.ts +2 -2
  419. package/build-types/text-control/stories/index.d.ts.map +1 -1
  420. package/build-types/text-control/types.d.ts +1 -5
  421. package/build-types/text-control/types.d.ts.map +1 -1
  422. package/build-types/theme/color-algorithms.d.ts +20 -0
  423. package/build-types/theme/color-algorithms.d.ts.map +1 -0
  424. package/build-types/theme/index.d.ts +1 -1
  425. package/build-types/theme/index.d.ts.map +1 -1
  426. package/build-types/theme/stories/index.d.ts +4 -0
  427. package/build-types/theme/stories/index.d.ts.map +1 -1
  428. package/build-types/theme/styles.d.ts +3 -2
  429. package/build-types/theme/styles.d.ts.map +1 -1
  430. package/build-types/theme/test/color-algorithms.d.ts +2 -0
  431. package/build-types/theme/test/color-algorithms.d.ts.map +1 -0
  432. package/build-types/theme/types.d.ts +41 -3
  433. package/build-types/theme/types.d.ts.map +1 -1
  434. package/build-types/toggle-control/index.d.ts.map +1 -1
  435. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +2 -2
  436. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +2 -2
  437. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
  438. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  439. package/build-types/tools-panel/tools-panel/hook.d.ts +2 -2
  440. package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -2
  441. package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -2
  442. package/build-types/truncate/hook.d.ts +2 -2
  443. package/build-types/ui/context/context-system-provider.d.ts.map +1 -1
  444. package/build-types/ui/control-group/hook.d.ts +2 -2
  445. package/build-types/ui/control-label/hook.d.ts +2 -2
  446. package/build-types/ui/form-group/form-group.d.ts +2 -2
  447. package/build-types/ui/form-group/use-form-group.d.ts +5 -5
  448. package/build-types/unit-control/index.d.ts +2 -1
  449. package/build-types/unit-control/index.d.ts.map +1 -1
  450. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -2
  451. package/build-types/unit-control/types.d.ts +4 -0
  452. package/build-types/unit-control/types.d.ts.map +1 -1
  453. package/build-types/utils/config-values.d.ts +0 -2
  454. package/build-types/utils/hooks/use-controlled-value.d.ts +2 -1
  455. package/build-types/utils/hooks/use-controlled-value.d.ts.map +1 -1
  456. package/build-types/v-stack/component.d.ts +2 -2
  457. package/build-types/v-stack/hook.d.ts +2 -2
  458. package/build-types/v-stack/stories/index.d.ts +2 -2
  459. package/package.json +21 -20
  460. package/src/alignment-matrix-control/README.md +7 -7
  461. package/src/alignment-matrix-control/{cell.js → cell.tsx} +7 -1
  462. package/src/alignment-matrix-control/{icon.js → icon.tsx} +6 -3
  463. package/src/alignment-matrix-control/{index.js → index.tsx} +31 -4
  464. package/src/alignment-matrix-control/stories/{index.js → index.tsx} +17 -9
  465. package/src/alignment-matrix-control/styles/{alignment-matrix-control-icon-styles.js → alignment-matrix-control-icon-styles.ts} +11 -3
  466. package/src/alignment-matrix-control/styles/{alignment-matrix-control-styles.js → alignment-matrix-control-styles.ts} +13 -3
  467. package/src/alignment-matrix-control/test/{index.js → index.tsx} +5 -5
  468. package/src/alignment-matrix-control/types.ts +54 -0
  469. package/src/alignment-matrix-control/{utils.js → utils.tsx} +24 -14
  470. package/src/angle-picker-control/styles/angle-picker-control-styles.js +4 -0
  471. package/src/autocomplete/index.js +44 -15
  472. package/src/autocomplete/test/index.js +2 -0
  473. package/src/base-control/README.md +21 -12
  474. package/src/base-control/hooks.ts +45 -0
  475. package/src/base-control/index.tsx +18 -7
  476. package/src/base-control/stories/index.tsx +8 -10
  477. package/src/base-control/test/index.tsx +53 -0
  478. package/src/base-control/types.ts +8 -2
  479. package/src/base-field/README.md +21 -22
  480. package/src/base-field/{hook.js → hook.ts} +5 -15
  481. package/src/base-field/{index.js → index.ts} +0 -0
  482. package/src/base-field/{styles.js → styles.ts} +2 -2
  483. package/src/base-field/test/__snapshots__/{index.js.snap → index.tsx.snap} +4 -4
  484. package/src/base-field/test/{index.js → index.tsx} +10 -5
  485. package/src/base-field/types.ts +29 -0
  486. package/src/border-box-control/border-box-control/README.md +1 -0
  487. package/src/border-box-control/border-box-control/component.tsx +0 -7
  488. package/src/border-box-control/border-box-control/hook.ts +0 -2
  489. package/src/border-box-control/border-box-control-split-controls/component.tsx +0 -2
  490. package/src/border-box-control/border-box-control-split-controls/hook.ts +0 -2
  491. package/src/border-box-control/test/index.js +5 -1
  492. package/src/border-control/border-control/component.tsx +1 -4
  493. package/src/border-control/border-control/hook.ts +0 -2
  494. package/src/border-control/border-control-dropdown/component.tsx +11 -17
  495. package/src/border-control/border-control-dropdown/hook.ts +0 -2
  496. package/src/border-control/stories/index.tsx +0 -1
  497. package/src/border-control/styles.ts +1 -10
  498. package/src/border-control/test/index.js +70 -67
  499. package/src/border-control/types.ts +1 -4
  500. package/src/box-control/linked-button.js +8 -11
  501. package/src/box-control/test/index.js +207 -134
  502. package/src/button/stories/index.js +30 -0
  503. package/src/button/style.scss +17 -14
  504. package/src/button/test/index.js +32 -15
  505. package/src/card/test/index.tsx +32 -20
  506. package/src/checkbox-control/test/index.tsx +2 -0
  507. package/src/circular-option-picker/style.scss +1 -0
  508. package/src/color-palette/index.tsx +16 -18
  509. package/src/color-palette/stories/index.tsx +1 -18
  510. package/src/color-palette/test/__snapshots__/index.tsx.snap +4 -4
  511. package/src/color-palette/test/index.tsx +86 -36
  512. package/src/color-palette/types.ts +4 -18
  513. package/src/color-picker/README.md +1 -0
  514. package/src/color-picker/input-with-slider.tsx +1 -0
  515. package/src/color-picker/styles.ts +0 -4
  516. package/src/color-picker/test/index.js +2 -0
  517. package/src/combobox-control/test/index.js +2 -0
  518. package/src/confirm-dialog/README.md +3 -2
  519. package/src/confirm-dialog/test/index.js +2 -0
  520. package/src/custom-select-control/README.md +14 -0
  521. package/src/custom-select-control/index.js +14 -2
  522. package/src/dashicon/{index.js → index.tsx} +10 -4
  523. package/src/dashicon/types.ts +17 -0
  524. package/src/date-time/date/test/index.tsx +2 -0
  525. package/src/date-time/date-time/index.tsx +2 -2
  526. package/src/date-time/time/test/index.tsx +2 -0
  527. package/src/dimension-control/index.js +2 -3
  528. package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -8
  529. package/src/dimension-control/test/index.test.js +2 -0
  530. package/src/disabled/stories/index.tsx +6 -2
  531. package/src/disabled/test/index.tsx +23 -11
  532. package/src/dropdown/README.md +41 -46
  533. package/src/dropdown/{index.js → index.tsx} +57 -13
  534. package/src/dropdown/stories/{index.js → index.tsx} +21 -8
  535. package/src/dropdown/test/index.tsx +88 -0
  536. package/src/dropdown/types.ts +107 -0
  537. package/src/dropdown-menu/README.md +2 -3
  538. package/src/dropdown-menu/test/index.js +20 -12
  539. package/src/duotone-picker/duotone-picker.js +2 -2
  540. package/src/external-link/test/index.tsx +2 -0
  541. package/src/focal-point-picker/test/index.js +2 -0
  542. package/src/focal-point-picker/test/media.js +26 -21
  543. package/src/font-size-picker/test/index.tsx +2 -0
  544. package/src/form-file-upload/test/index.tsx +2 -0
  545. package/src/form-toggle/test/index.tsx +2 -0
  546. package/src/form-token-field/style.scss +1 -1
  547. package/src/form-token-field/test/index.tsx +3 -0
  548. package/src/gradient-picker/index.js +6 -10
  549. package/src/gradient-picker/stories/index.js +0 -1
  550. package/src/grid/test/grid.tsx +31 -31
  551. package/src/guide/test/index.js +2 -0
  552. package/src/higher-order/navigate-regions/index.js +5 -2
  553. package/src/higher-order/navigate-regions/style.scss +13 -59
  554. package/src/higher-order/with-fallback-styles/index.js +4 -2
  555. package/src/higher-order/with-filters/test/index.js +32 -43
  556. package/src/higher-order/with-focus-outside/test/index.js +2 -0
  557. package/src/higher-order/with-focus-return/test/index.js +3 -4
  558. package/src/higher-order/with-notices/test/index.js +1 -0
  559. package/src/icon/stories/index.tsx +103 -0
  560. package/src/index.js +2 -3
  561. package/src/input-control/index.tsx +42 -28
  562. package/src/input-control/input-base.tsx +8 -1
  563. package/src/input-control/stories/index.tsx +6 -0
  564. package/src/input-control/test/index.js +21 -0
  565. package/src/input-control/types.ts +2 -0
  566. package/src/isolated-event-container/test/index.js +2 -0
  567. package/src/mobile/bottom-sheet/cell.native.js +1 -1
  568. package/src/mobile/bottom-sheet/picker-cell.native.js +1 -6
  569. package/src/mobile/bottom-sheet/switch-cell.native.js +2 -2
  570. package/src/mobile/global-styles-context/index.native.js +9 -11
  571. package/src/mobile/global-styles-context/utils.native.js +17 -16
  572. package/src/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  573. package/src/mobile/link-settings/test/edit.native.js +68 -124
  574. package/src/modal/index.tsx +11 -0
  575. package/src/modal/stories/index.tsx +3 -0
  576. package/src/modal/test/index.tsx +13 -0
  577. package/src/navigable-container/test/navigable-menu.js +2 -0
  578. package/src/navigable-container/test/tababble-container.js +2 -0
  579. package/src/navigation/stories/index.js +6 -6
  580. package/src/navigation/stories/{controlled-state.js → utils/controlled-state.js} +3 -3
  581. package/src/navigation/stories/{default.js → utils/default.js} +3 -3
  582. package/src/navigation/stories/{group.js → utils/group.js} +4 -4
  583. package/src/navigation/stories/{hide-if-empty.js → utils/hide-if-empty.js} +3 -3
  584. package/src/navigation/stories/{more-examples.js → utils/more-examples.js} +4 -4
  585. package/src/navigation/stories/{search.js → utils/search.js} +5 -5
  586. package/src/navigation/test/index.js +2 -0
  587. package/src/navigator/navigator-provider/component.tsx +13 -10
  588. package/src/navigator/test/index.tsx +2 -0
  589. package/src/notice/test/index.js +8 -3
  590. package/src/notice/test/list.js +8 -5
  591. package/src/number-control/stories/{index.js → index.tsx} +24 -7
  592. package/src/number-control/styles/{number-control-styles.js → number-control-styles.ts} +5 -3
  593. package/src/number-control/test/index.tsx +602 -0
  594. package/src/palette-edit/index.js +88 -39
  595. package/src/palette-edit/test/index.js +25 -1
  596. package/src/panel/test/__snapshots__/body.js.snap +9 -0
  597. package/src/panel/test/body.js +71 -62
  598. package/src/placeholder/test/index.tsx +3 -0
  599. package/src/popover/index.tsx +10 -2
  600. package/src/popover/style.scss +12 -11
  601. package/src/popover/test/index.tsx +25 -15
  602. package/src/query-controls/index.js +1 -0
  603. package/src/range-control/test/index.tsx +57 -60
  604. package/src/resizable-box/style.scss +1 -0
  605. package/src/sandbox/test/index.js +13 -11
  606. package/src/search-control/style.scss +4 -0
  607. package/src/select-control/test/select-control.tsx +2 -0
  608. package/src/snackbar/README.md +63 -8
  609. package/src/snackbar/{index.js → index.tsx} +46 -28
  610. package/src/snackbar/{list.js → list.tsx} +20 -21
  611. package/src/snackbar/stories/index.tsx +96 -0
  612. package/src/snackbar/stories/list.tsx +98 -0
  613. package/src/snackbar/types.ts +116 -0
  614. package/src/tab-panel/README.md +9 -0
  615. package/src/tab-panel/index.tsx +15 -5
  616. package/src/tab-panel/style.scss +46 -34
  617. package/src/tab-panel/test/index.tsx +113 -0
  618. package/src/tab-panel/types.ts +20 -1
  619. package/src/text/test/__snapshots__/index.tsx.snap +1 -0
  620. package/src/text/test/index.tsx +98 -46
  621. package/src/text-control/stories/index.tsx +0 -1
  622. package/src/text-control/types.ts +1 -6
  623. package/src/text-highlight/test/index.tsx +1 -0
  624. package/src/theme/README.md +32 -2
  625. package/src/theme/color-algorithms.ts +138 -0
  626. package/src/theme/index.tsx +23 -16
  627. package/src/theme/stories/index.tsx +67 -0
  628. package/src/theme/styles.ts +22 -17
  629. package/src/theme/test/color-algorithms.ts +100 -0
  630. package/src/theme/test/index.tsx +68 -35
  631. package/src/theme/types.ts +43 -3
  632. package/src/toggle-control/index.tsx +4 -2
  633. package/src/toggle-group-control/test/index.tsx +15 -2
  634. package/src/toolbar/style.scss +1 -1
  635. package/src/toolbar-group/test/index.js +10 -6
  636. package/src/tools-panel/stories/index.js +1 -1
  637. package/src/tools-panel/stories/{tools-panel-with-item-group-slot.js → utils/tools-panel-with-item-group-slot.js} +14 -11
  638. package/src/tools-panel/test/index.js +20 -14
  639. package/src/tooltip/README.md +7 -0
  640. package/src/tooltip/stories/index.js +68 -78
  641. package/src/tooltip/style.scss +2 -2
  642. package/src/tooltip/test/index.js +111 -18
  643. package/src/ui/context/context-system-provider.js +3 -2
  644. package/src/ui/context/test/context-system-provider.js +5 -4
  645. package/src/ui/control-label/test/index.js +3 -5
  646. package/src/unit-control/README.md +9 -1
  647. package/src/unit-control/index.tsx +3 -0
  648. package/src/unit-control/test/index.tsx +4 -0
  649. package/src/unit-control/types.ts +4 -0
  650. package/src/utils/colors-values.js +1 -1
  651. package/src/utils/config-values.js +0 -2
  652. package/src/utils/hooks/test/use-latest-ref.js +2 -0
  653. package/src/utils/hooks/use-controlled-value.ts +2 -2
  654. package/src/utils/theme-variables.scss +20 -0
  655. package/tsconfig.json +2 -4
  656. package/tsconfig.tsbuildinfo +1 -1
  657. package/src/dropdown/test/index.js +0 -98
  658. package/src/icon/stories/index.js +0 -128
  659. package/src/number-control/test/index.js +0 -478
  660. package/src/snackbar/stories/index.js +0 -89
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render } from '@testing-library/react';
4
+ import { act, render } from '@testing-library/react';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -13,6 +13,8 @@ import { addFilter, removeAllFilters, removeFilter } from '@wordpress/hooks';
13
13
  */
14
14
  import withFilters from '..';
15
15
 
16
+ jest.useFakeTimers();
17
+
16
18
  describe( 'withFilters', () => {
17
19
  const hookName = 'EnhancedComponent';
18
20
  const MyComponent = () => <div>My component</div>;
@@ -64,11 +66,7 @@ describe( 'withFilters', () => {
64
66
  } );
65
67
 
66
68
  it( 'should not re-render component when new filter added before component was mounted', () => {
67
- const spy = jest.fn();
68
- const SpiedComponent = () => {
69
- spy();
70
- return <div>Spied component</div>;
71
- };
69
+ const SpiedComponent = jest.fn( () => <div>Spied component</div> );
72
70
  addFilter(
73
71
  hookName,
74
72
  'test/enhanced-component-spy-1',
@@ -83,24 +81,20 @@ describe( 'withFilters', () => {
83
81
 
84
82
  const { container } = render( <EnhancedComponent /> );
85
83
 
86
- expect( container ).toMatchSnapshot();
87
-
88
- jest.runAllTimers();
84
+ act( () => jest.runAllTimers() );
89
85
 
90
- expect( spy ).toHaveBeenCalledTimes( 1 );
86
+ expect( SpiedComponent ).toHaveBeenCalledTimes( 1 );
87
+ expect( container ).toMatchSnapshot();
91
88
  } );
92
89
 
93
90
  it( 'should re-render component once when new filter added after component was mounted', () => {
94
- const spy = jest.fn();
95
- const SpiedComponent = () => {
96
- spy();
97
- return <div>Spied component</div>;
98
- };
91
+ const SpiedComponent = jest.fn( () => <div>Spied component</div> );
99
92
  const EnhancedComponent = withFilters( hookName )( SpiedComponent );
100
93
 
101
94
  const { container } = render( <EnhancedComponent /> );
102
95
 
103
- spy.mockClear();
96
+ SpiedComponent.mockClear();
97
+
104
98
  addFilter(
105
99
  hookName,
106
100
  'test/enhanced-component-spy-1',
@@ -111,23 +105,20 @@ describe( 'withFilters', () => {
111
105
  </blockquote>
112
106
  )
113
107
  );
114
- jest.runAllTimers();
115
108
 
116
- expect( spy ).toHaveBeenCalledTimes( 1 );
109
+ act( () => jest.runAllTimers() );
110
+
111
+ expect( SpiedComponent ).toHaveBeenCalledTimes( 1 );
117
112
  expect( container ).toMatchSnapshot();
118
113
  } );
119
114
 
120
115
  it( 'should re-render component once when two filters added in the same animation frame', () => {
121
- const spy = jest.fn();
122
- const SpiedComponent = () => {
123
- spy();
124
- return <div>Spied component</div>;
125
- };
116
+ const SpiedComponent = jest.fn( () => <div>Spied component</div> );
126
117
  const EnhancedComponent = withFilters( hookName )( SpiedComponent );
127
118
 
128
119
  const { container } = render( <EnhancedComponent /> );
129
120
 
130
- spy.mockClear();
121
+ SpiedComponent.mockClear();
131
122
 
132
123
  addFilter(
133
124
  hookName,
@@ -149,22 +140,20 @@ describe( 'withFilters', () => {
149
140
  </section>
150
141
  )
151
142
  );
152
- jest.runAllTimers();
153
143
 
154
- expect( spy ).toHaveBeenCalledTimes( 1 );
144
+ act( () => jest.runAllTimers() );
145
+
146
+ expect( SpiedComponent ).toHaveBeenCalledTimes( 1 );
155
147
  expect( container ).toMatchSnapshot();
156
148
  } );
157
149
 
158
150
  it( 'should re-render component twice when new filter added and removed in two different animation frames', () => {
159
- const spy = jest.fn();
160
- const SpiedComponent = () => {
161
- spy();
162
- return <div>Spied component</div>;
163
- };
151
+ const SpiedComponent = jest.fn( () => <div>Spied component</div> );
164
152
  const EnhancedComponent = withFilters( hookName )( SpiedComponent );
165
153
  const { container } = render( <EnhancedComponent /> );
166
154
 
167
- spy.mockClear();
155
+ SpiedComponent.mockClear();
156
+
168
157
  addFilter(
169
158
  hookName,
170
159
  'test/enhanced-component-spy',
@@ -175,21 +164,19 @@ describe( 'withFilters', () => {
175
164
  </div>
176
165
  )
177
166
  );
178
- jest.runAllTimers();
167
+
168
+ act( () => jest.runAllTimers() );
179
169
 
180
170
  removeFilter( hookName, 'test/enhanced-component-spy' );
181
- jest.runAllTimers();
182
171
 
183
- expect( spy ).toHaveBeenCalledTimes( 2 );
172
+ act( () => jest.runAllTimers() );
173
+
174
+ expect( SpiedComponent ).toHaveBeenCalledTimes( 2 );
184
175
  expect( container ).toMatchSnapshot();
185
176
  } );
186
177
 
187
178
  it( 'should re-render both components once each when one filter added', () => {
188
- const spy = jest.fn();
189
- const SpiedComponent = () => {
190
- spy();
191
- return <div>Spied component</div>;
192
- };
179
+ const SpiedComponent = jest.fn( () => <div>Spied component</div> );
193
180
  const EnhancedComponent = withFilters( hookName )( SpiedComponent );
194
181
 
195
182
  const CombinedComponents = () => (
@@ -200,7 +187,8 @@ describe( 'withFilters', () => {
200
187
  );
201
188
  const { container } = render( <CombinedComponents /> );
202
189
 
203
- spy.mockClear();
190
+ SpiedComponent.mockClear();
191
+
204
192
  addFilter(
205
193
  hookName,
206
194
  'test/enhanced-component-spy-1',
@@ -211,9 +199,10 @@ describe( 'withFilters', () => {
211
199
  </blockquote>
212
200
  )
213
201
  );
214
- jest.runAllTimers();
215
202
 
216
- expect( spy ).toHaveBeenCalledTimes( 2 );
203
+ act( () => jest.runAllTimers() );
204
+
205
+ expect( SpiedComponent ).toHaveBeenCalledTimes( 2 );
217
206
  expect( container ).toMatchSnapshot();
218
207
  } );
219
208
  } );
@@ -14,6 +14,8 @@ import { Component } from '@wordpress/element';
14
14
  */
15
15
  import withFocusOutside from '../';
16
16
 
17
+ jest.useFakeTimers();
18
+
17
19
  let onFocusOutside;
18
20
 
19
21
  describe( 'withFocusOutside', () => {
@@ -14,6 +14,8 @@ import { Component } from '@wordpress/element';
14
14
  */
15
15
  import withFocusReturn from '../';
16
16
 
17
+ jest.useFakeTimers();
18
+
17
19
  class Test extends Component {
18
20
  render() {
19
21
  const { className, focusHistory } = this.props;
@@ -88,7 +90,7 @@ describe( 'withFocusReturn()', () => {
88
90
  advanceTimers: jest.advanceTimersByTime,
89
91
  } );
90
92
 
91
- const { container, unmount } = render( <Composite />, {
93
+ const { unmount } = render( <Composite />, {
92
94
  container: document.body.appendChild(
93
95
  document.createElement( 'div' )
94
96
  ),
@@ -103,9 +105,6 @@ describe( 'withFocusReturn()', () => {
103
105
 
104
106
  // Should return to the activeElement saved with this component.
105
107
  unmount();
106
- render( <div></div>, {
107
- container,
108
- } );
109
108
  expect( activeElement ).toHaveFocus();
110
109
  } );
111
110
  } );
@@ -101,6 +101,7 @@ describe( 'withNotices operations', () => {
101
101
  act( () => {
102
102
  handle.current.createErrorNotice( message );
103
103
  } );
104
+ // eslint-disable-next-line testing-library/no-node-access
104
105
  expect( getByText( message )?.closest( '.is-error' ) ).not.toBeNull();
105
106
  } );
106
107
 
@@ -0,0 +1,103 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ComponentMeta, ComponentStory } from '@storybook/react';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { SVG, Path } from '@wordpress/primitives';
10
+ import { wordpress } from '@wordpress/icons';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import Icon from '..';
16
+ import { VStack } from '../../v-stack';
17
+
18
+ const meta: ComponentMeta< typeof Icon > = {
19
+ title: 'Components/Icon',
20
+ component: Icon,
21
+ parameters: {
22
+ controls: { expanded: true },
23
+ docs: { source: { state: 'open' } },
24
+ },
25
+ };
26
+ export default meta;
27
+
28
+ const Template: ComponentStory< typeof Icon > = ( args ) => (
29
+ <Icon { ...args } />
30
+ );
31
+
32
+ export const Default = Template.bind( {} );
33
+ Default.args = {
34
+ icon: wordpress,
35
+ };
36
+
37
+ export const FillColor: ComponentStory< typeof Icon > = ( args ) => {
38
+ return (
39
+ <div
40
+ style={ {
41
+ fill: 'blue',
42
+ } }
43
+ >
44
+ <Icon { ...args } />
45
+ </div>
46
+ );
47
+ };
48
+ FillColor.args = {
49
+ ...Default.args,
50
+ };
51
+
52
+ export const WithAFunction = Template.bind( {} );
53
+ WithAFunction.args = {
54
+ ...Default.args,
55
+ icon: () => (
56
+ <SVG>
57
+ <Path d="M5 4v3h5.5v12h3V7H19V4z" />
58
+ </SVG>
59
+ ),
60
+ };
61
+
62
+ const MyIconComponent = () => (
63
+ <SVG>
64
+ <Path d="M5 4v3h5.5v12h3V7H19V4z" />
65
+ </SVG>
66
+ );
67
+
68
+ export const WithAComponent = Template.bind( {} );
69
+ WithAComponent.args = {
70
+ ...Default.args,
71
+ icon: MyIconComponent,
72
+ };
73
+
74
+ export const WithAnSVG = Template.bind( {} );
75
+ WithAnSVG.args = {
76
+ ...Default.args,
77
+ icon: (
78
+ <SVG>
79
+ <Path d="M5 4v3h5.5v12h3V7H19V4z" />
80
+ </SVG>
81
+ ),
82
+ };
83
+
84
+ /**
85
+ * Although it's preferred to use icons from the `@wordpress/icons` package, Dashicons are still supported,
86
+ * as long as you are in a context where the Dashicons stylesheet is loaded. To simulate that here,
87
+ * use the Global CSS Injector in the Storybook toolbar at the top and select the "WordPress" preset.
88
+ */
89
+ export const WithADashicon: ComponentStory< typeof Icon > = ( args ) => {
90
+ return (
91
+ <VStack>
92
+ <Icon { ...args } />
93
+ <small>
94
+ This won’t show an icon if the Dashicons stylesheet isn’t
95
+ loaded.
96
+ </small>
97
+ </VStack>
98
+ );
99
+ };
100
+ WithADashicon.args = {
101
+ ...Default.args,
102
+ icon: 'wordpress',
103
+ };
package/src/index.js CHANGED
@@ -17,13 +17,13 @@ export {
17
17
  default as Animate,
18
18
  getAnimateClassName as __unstableGetAnimateClassName,
19
19
  } from './animate';
20
- export { __unstableMotion } from './animation';
20
+ export { __unstableMotion, __unstableAnimatePresence } from './animation';
21
21
  export { default as AnglePickerControl } from './angle-picker-control';
22
22
  export {
23
23
  default as Autocomplete,
24
24
  useAutocompleteProps as __unstableUseAutocompleteProps,
25
25
  } from './autocomplete';
26
- export { default as BaseControl } from './base-control';
26
+ export { default as BaseControl, useBaseControlProps } from './base-control';
27
27
  export {
28
28
  BorderBoxControl as __experimentalBorderBoxControl,
29
29
  hasSplitBorders as __experimentalHasSplitBorders,
@@ -148,7 +148,6 @@ export { Text as __experimentalText } from './text';
148
148
  export { default as TextControl } from './text-control';
149
149
  export { default as TextareaControl } from './textarea-control';
150
150
  export { default as TextHighlight } from './text-highlight';
151
- export { default as __experimentalTheme } from './theme';
152
151
  export { default as Tip } from './tip';
153
152
  export { default as ToggleControl } from './toggle-control';
154
153
  export {
@@ -18,6 +18,7 @@ import InputField from './input-field';
18
18
  import type { InputControlProps } from './types';
19
19
  import { space } from '../ui/utils/space';
20
20
  import { useDraft } from './utils';
21
+ import BaseControl from '../base-control';
21
22
 
22
23
  const noop = () => {};
23
24
 
@@ -35,6 +36,7 @@ export function UnforwardedInputControl(
35
36
  __unstableInputWidth,
36
37
  className,
37
38
  disabled = false,
39
+ help,
38
40
  hideLabelFromVision = false,
39
41
  id: idProp,
40
42
  isPressEnterToChange = false,
@@ -63,43 +65,55 @@ export function UnforwardedInputControl(
63
65
  onChange,
64
66
  } );
65
67
 
68
+ // ARIA descriptions can only contain plain text, so fall back to aria-details if not.
69
+ const helpPropName =
70
+ typeof help === 'string' ? 'aria-describedby' : 'aria-details';
71
+ const helpProp = !! help ? { [ helpPropName ]: `${ id }__help` } : {};
72
+
66
73
  return (
67
- <InputBase
68
- __next36pxDefaultSize={ __next36pxDefaultSize }
69
- __unstableInputWidth={ __unstableInputWidth }
74
+ <BaseControl
70
75
  className={ classes }
71
- disabled={ disabled }
72
- gap={ 3 }
73
- hideLabelFromVision={ hideLabelFromVision }
76
+ help={ help }
74
77
  id={ id }
75
- isFocused={ isFocused }
76
- justify="left"
77
- label={ label }
78
- labelPosition={ labelPosition }
79
- prefix={ prefix }
80
- size={ size }
81
- style={ style }
82
- suffix={ suffix }
78
+ __nextHasNoMarginBottom
83
79
  >
84
- <InputField
85
- { ...props }
80
+ <InputBase
86
81
  __next36pxDefaultSize={ __next36pxDefaultSize }
87
- className="components-input-control__input"
82
+ __unstableInputWidth={ __unstableInputWidth }
88
83
  disabled={ disabled }
84
+ gap={ 3 }
85
+ hideLabelFromVision={ hideLabelFromVision }
89
86
  id={ id }
90
87
  isFocused={ isFocused }
91
- isPressEnterToChange={ isPressEnterToChange }
92
- onKeyDown={ onKeyDown }
93
- onValidate={ onValidate }
94
- paddingInlineStart={ prefix ? space( 2 ) : undefined }
95
- paddingInlineEnd={ suffix ? space( 2 ) : undefined }
96
- ref={ ref }
97
- setIsFocused={ setIsFocused }
88
+ justify="left"
89
+ label={ label }
90
+ labelPosition={ labelPosition }
91
+ prefix={ prefix }
98
92
  size={ size }
99
- stateReducer={ stateReducer }
100
- { ...draftHookProps }
101
- />
102
- </InputBase>
93
+ style={ style }
94
+ suffix={ suffix }
95
+ >
96
+ <InputField
97
+ { ...props }
98
+ { ...helpProp }
99
+ __next36pxDefaultSize={ __next36pxDefaultSize }
100
+ className="components-input-control__input"
101
+ disabled={ disabled }
102
+ id={ id }
103
+ isFocused={ isFocused }
104
+ isPressEnterToChange={ isPressEnterToChange }
105
+ onKeyDown={ onKeyDown }
106
+ onValidate={ onValidate }
107
+ paddingInlineStart={ prefix ? space( 2 ) : undefined }
108
+ paddingInlineEnd={ suffix ? space( 2 ) : undefined }
109
+ ref={ ref }
110
+ setIsFocused={ setIsFocused }
111
+ size={ size }
112
+ stateReducer={ stateReducer }
113
+ { ...draftHookProps }
114
+ />
115
+ </InputBase>
116
+ </BaseControl>
103
117
  );
104
118
  }
105
119
 
@@ -33,14 +33,21 @@ function useUniqueId( idProp?: string ) {
33
33
 
34
34
  // Adapter to map props for the new ui/flex component.
35
35
  function getUIFlexProps( labelPosition?: LabelPosition ) {
36
- const props: { direction?: string; gap?: number; justify?: string } = {};
36
+ const props: {
37
+ direction?: string;
38
+ gap?: number;
39
+ justify?: string;
40
+ expanded?: boolean;
41
+ } = {};
37
42
  switch ( labelPosition ) {
38
43
  case 'top':
39
44
  props.direction = 'column';
45
+ props.expanded = false;
40
46
  props.gap = 0;
41
47
  break;
42
48
  case 'bottom':
43
49
  props.direction = 'column-reverse';
50
+ props.expanded = false;
44
51
  props.gap = 0;
45
52
  break;
46
53
  case 'edge':
@@ -40,6 +40,12 @@ Default.args = {
40
40
  placeholder: 'Placeholder',
41
41
  };
42
42
 
43
+ export const WithHelpText = Template.bind( {} );
44
+ WithHelpText.args = {
45
+ ...Default.args,
46
+ help: 'Help text to describe the control.',
47
+ };
48
+
43
49
  /**
44
50
  * A `prefix` can be inserted before the input. By default, the prefix is aligned with the edge of the input border,
45
51
  * with no padding. If you want to apply standard padding in accordance with the size variant, use the provided
@@ -14,6 +14,8 @@ import { useState } from '@wordpress/element';
14
14
  */
15
15
  import BaseInputControl from '../';
16
16
 
17
+ jest.useFakeTimers();
18
+
17
19
  const setupUser = () =>
18
20
  userEvent.setup( {
19
21
  advanceTimers: jest.advanceTimersByTime,
@@ -50,6 +52,25 @@ describe( 'InputControl', () => {
50
52
 
51
53
  expect( input ).toBeInTheDocument();
52
54
  } );
55
+
56
+ it( 'should render help text as description', () => {
57
+ render( <InputControl help="My help text" /> );
58
+ expect(
59
+ screen.getByRole( 'textbox', { description: 'My help text' } )
60
+ ).toBeInTheDocument();
61
+ } );
62
+
63
+ it( 'should render help as aria-details when not plain text', () => {
64
+ render( <InputControl help={ <a href="/foo">My help text</a> } /> );
65
+
66
+ const input = screen.getByRole( 'textbox' );
67
+ const help = screen.getByRole( 'link', { name: 'My help text' } );
68
+
69
+ expect(
70
+ // eslint-disable-next-line testing-library/no-node-access
71
+ help.closest( `#${ input.getAttribute( 'aria-details' ) }` )
72
+ ).toBeVisible();
73
+ } );
53
74
  } );
54
75
 
55
76
  describe( 'Ensurance of focus for number inputs', () => {
@@ -15,6 +15,7 @@ import type { useDrag } from '@use-gesture/react';
15
15
  import type { StateReducer } from './reducer/state';
16
16
  import type { WordPressComponentProps } from '../ui/context';
17
17
  import type { FlexProps } from '../flex/types';
18
+ import type { BaseControlProps } from '../base-control/types';
18
19
 
19
20
  export type LabelPosition = 'top' | 'bottom' | 'side' | 'edge';
20
21
 
@@ -171,6 +172,7 @@ export interface InputBaseProps extends BaseProps, FlexProps {
171
172
 
172
173
  export interface InputControlProps
173
174
  extends Omit< InputBaseProps, 'children' | 'isFocused' | keyof FlexProps >,
175
+ Pick< BaseControlProps, 'help' >,
174
176
  /**
175
177
  * The `prefix` prop in `WordPressComponentProps< InputFieldProps, 'input', false >` comes from the
176
178
  * `HTMLInputAttributes` and clashes with the one from `InputBaseProps`. So we have to omit it from
@@ -9,6 +9,8 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import IsolatedEventContainer from '../';
11
11
 
12
+ jest.useFakeTimers();
13
+
12
14
  describe( 'IsolatedEventContainer', () => {
13
15
  it( 'should pass props to container', async () => {
14
16
  const user = userEvent.setup( {
@@ -58,7 +58,7 @@ class BottomSheetCell extends Component {
58
58
 
59
59
  AccessibilityInfo.isScreenReaderEnabled().then(
60
60
  ( isScreenReaderEnabled ) => {
61
- if ( this.isCurrent ) {
61
+ if ( this.isCurrent && isScreenReaderEnabled ) {
62
62
  this.setState( { isScreenReaderEnabled } );
63
63
  }
64
64
  }
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { find } from 'lodash';
5
-
6
1
  /**
7
2
  * Internal dependencies
8
3
  */
@@ -23,7 +18,7 @@ export default function BottomSheetPickerCell( props ) {
23
18
  onChangeValue( newValue );
24
19
  };
25
20
 
26
- const option = find( options, { value } );
21
+ const option = options.find( ( opt ) => opt.value === value );
27
22
  const label = option ? option.label : value;
28
23
 
29
24
  return (
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { Switch } from 'react-native';
5
- import { isEmpty } from 'lodash';
5
+
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
@@ -20,7 +20,7 @@ export default function BottomSheetSwitchCell( props ) {
20
20
  };
21
21
 
22
22
  const getAccessibilityLabel = () => {
23
- if ( isEmpty( cellProps.help ) ) {
23
+ if ( ! cellProps.help ) {
24
24
  return value
25
25
  ? sprintf(
26
26
  /* translators: accessibility text. Switch setting ON state. %s: Switch title. */
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { pick } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -34,15 +29,18 @@ export const getMergedGlobalStyles = (
34
29
  const baseGlobalColors = {
35
30
  baseColors: baseGlobalStyles || {},
36
31
  };
37
- const blockStyleAttributes = pick(
38
- blockAttributes,
39
- BLOCK_STYLE_ATTRIBUTES
32
+ const blockStyleAttributes = Object.fromEntries(
33
+ Object.entries( blockAttributes ?? {} ).filter( ( [ key ] ) =>
34
+ BLOCK_STYLE_ATTRIBUTES.includes( key )
35
+ )
40
36
  );
37
+
41
38
  // This prevents certain wrapper styles from being applied to blocks that
42
39
  // don't support them yet.
43
- const wrapperPropsStyleFiltered = pick(
44
- wrapperPropsStyle,
45
- BLOCK_STYLE_ATTRIBUTES
40
+ const wrapperPropsStyleFiltered = Object.fromEntries(
41
+ Object.entries( wrapperPropsStyle ?? {} ).filter( ( [ key ] ) =>
42
+ BLOCK_STYLE_ATTRIBUTES.includes( key )
43
+ )
46
44
  );
47
45
 
48
46
  const mergedStyle = {