@wordpress/components 23.6.0 → 23.7.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 (328) hide show
  1. package/CHANGELOG.md +32 -4
  2. package/build/angle-picker-control/angle-circle.js +1 -4
  3. package/build/angle-picker-control/angle-circle.js.map +1 -1
  4. package/build/angle-picker-control/index.js +10 -22
  5. package/build/angle-picker-control/index.js.map +1 -1
  6. package/build/angle-picker-control/styles/angle-picker-control-styles.js +24 -15
  7. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  8. package/build/animate/index.js +27 -19
  9. package/build/animate/index.js.map +1 -1
  10. package/build/animate/types.js.map +1 -0
  11. package/build/box-control/axial-input-controls.js.map +1 -1
  12. package/build/color-picker/color-input.js +0 -4
  13. package/build/color-picker/color-input.js.map +1 -1
  14. package/build/color-picker/component.js +5 -4
  15. package/build/color-picker/component.js.map +1 -1
  16. package/build/color-picker/hex-input.js.map +1 -1
  17. package/build/color-picker/hsl-input.js.map +1 -1
  18. package/build/color-picker/input-with-slider.js.map +1 -1
  19. package/build/color-picker/legacy-adapter.js.map +1 -1
  20. package/build/color-picker/picker.js.map +1 -1
  21. package/build/color-picker/rgb-input.js.map +1 -1
  22. package/build/color-picker/use-deprecated-props.js.map +1 -1
  23. package/build/custom-gradient-picker/constants.js +1 -1
  24. package/build/custom-gradient-picker/constants.js.map +1 -1
  25. package/build/custom-gradient-picker/gradient-bar/constants.js.map +1 -1
  26. package/build/custom-gradient-picker/gradient-bar/control-points.js +9 -5
  27. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  28. package/build/custom-gradient-picker/gradient-bar/index.js +14 -9
  29. package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  30. package/build/custom-gradient-picker/gradient-bar/utils.js +34 -54
  31. package/build/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
  32. package/build/custom-gradient-picker/index.js +45 -16
  33. package/build/custom-gradient-picker/index.js.map +1 -1
  34. package/build/custom-gradient-picker/serializer.js +14 -4
  35. package/build/custom-gradient-picker/serializer.js.map +1 -1
  36. package/build/custom-gradient-picker/styles/custom-gradient-picker-styles.js +6 -6
  37. package/build/custom-gradient-picker/styles/custom-gradient-picker-styles.js.map +1 -1
  38. package/build/custom-gradient-picker/types.js +6 -0
  39. package/build/custom-gradient-picker/types.js.map +1 -0
  40. package/build/custom-gradient-picker/utils.js +17 -12
  41. package/build/custom-gradient-picker/utils.js.map +1 -1
  42. package/build/{color-list-picker → duotone-picker/color-list-picker}/index.js +5 -5
  43. package/build/duotone-picker/color-list-picker/index.js.map +1 -0
  44. package/build/duotone-picker/color-list-picker/types.js +6 -0
  45. package/build/duotone-picker/color-list-picker/types.js.map +1 -0
  46. package/build/duotone-picker/custom-duotone-bar.js.map +1 -1
  47. package/build/duotone-picker/duotone-picker.js +39 -2
  48. package/build/duotone-picker/duotone-picker.js.map +1 -1
  49. package/build/duotone-picker/duotone-swatch.js.map +1 -1
  50. package/build/duotone-picker/index.js.map +1 -1
  51. package/build/duotone-picker/types.js +6 -0
  52. package/build/duotone-picker/types.js.map +1 -0
  53. package/build/duotone-picker/utils.js +13 -11
  54. package/build/duotone-picker/utils.js.map +1 -1
  55. package/build/form-token-field/index.js +9 -3
  56. package/build/form-token-field/index.js.map +1 -1
  57. package/build/gradient-picker/index.js +61 -9
  58. package/build/gradient-picker/index.js.map +1 -1
  59. package/build/gradient-picker/types.js +6 -0
  60. package/build/gradient-picker/types.js.map +1 -0
  61. package/build/palette-edit/index.js +1 -2
  62. package/build/palette-edit/index.js.map +1 -1
  63. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  64. package/build/sandbox/index.native.js +80 -67
  65. package/build/sandbox/index.native.js.map +1 -1
  66. package/build/tab-panel/index.js +1 -1
  67. package/build/tab-panel/index.js.map +1 -1
  68. package/build/tools-panel/tools-panel/hook.js +45 -6
  69. package/build/tools-panel/tools-panel/hook.js.map +1 -1
  70. package/build/utils/input/input-control.js +1 -1
  71. package/build/utils/input/input-control.js.map +1 -1
  72. package/build-module/angle-picker-control/angle-circle.js +1 -4
  73. package/build-module/angle-picker-control/angle-circle.js.map +1 -1
  74. package/build-module/angle-picker-control/index.js +12 -21
  75. package/build-module/angle-picker-control/index.js.map +1 -1
  76. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +20 -13
  77. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  78. package/build-module/animate/index.js +25 -17
  79. package/build-module/animate/index.js.map +1 -1
  80. package/build-module/box-control/axial-input-controls.js.map +1 -1
  81. package/build-module/color-picker/color-input.js +0 -4
  82. package/build-module/color-picker/color-input.js.map +1 -1
  83. package/build-module/color-picker/component.js +3 -3
  84. package/build-module/color-picker/component.js.map +1 -1
  85. package/build-module/color-picker/hex-input.js.map +1 -1
  86. package/build-module/color-picker/hsl-input.js.map +1 -1
  87. package/build-module/color-picker/input-with-slider.js.map +1 -1
  88. package/build-module/color-picker/legacy-adapter.js.map +1 -1
  89. package/build-module/color-picker/picker.js +4 -0
  90. package/build-module/color-picker/picker.js.map +1 -1
  91. package/build-module/color-picker/rgb-input.js.map +1 -1
  92. package/build-module/color-picker/use-deprecated-props.js.map +1 -1
  93. package/build-module/custom-gradient-picker/constants.js +1 -1
  94. package/build-module/custom-gradient-picker/constants.js.map +1 -1
  95. package/build-module/custom-gradient-picker/gradient-bar/constants.js.map +1 -1
  96. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +9 -4
  97. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  98. package/build-module/custom-gradient-picker/gradient-bar/index.js +14 -8
  99. package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  100. package/build-module/custom-gradient-picker/gradient-bar/utils.js +34 -54
  101. package/build-module/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
  102. package/build-module/custom-gradient-picker/index.js +44 -17
  103. package/build-module/custom-gradient-picker/index.js.map +1 -1
  104. package/build-module/custom-gradient-picker/serializer.js +14 -4
  105. package/build-module/custom-gradient-picker/serializer.js.map +1 -1
  106. package/build-module/custom-gradient-picker/styles/custom-gradient-picker-styles.js +6 -6
  107. package/build-module/custom-gradient-picker/styles/custom-gradient-picker-styles.js.map +1 -1
  108. package/build-module/custom-gradient-picker/types.js +2 -0
  109. package/build-module/custom-gradient-picker/utils.js +17 -12
  110. package/build-module/custom-gradient-picker/utils.js.map +1 -1
  111. package/build-module/{color-list-picker → duotone-picker/color-list-picker}/index.js +5 -5
  112. package/build-module/duotone-picker/color-list-picker/index.js.map +1 -0
  113. package/build-module/duotone-picker/color-list-picker/types.js +2 -0
  114. package/build-module/duotone-picker/color-list-picker/types.js.map +1 -0
  115. package/build-module/duotone-picker/custom-duotone-bar.js.map +1 -1
  116. package/build-module/duotone-picker/duotone-picker.js +38 -2
  117. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  118. package/build-module/duotone-picker/duotone-swatch.js.map +1 -1
  119. package/build-module/duotone-picker/index.js.map +1 -1
  120. package/build-module/duotone-picker/types.js +2 -0
  121. package/build-module/duotone-picker/types.js.map +1 -0
  122. package/build-module/duotone-picker/utils.js +17 -11
  123. package/build-module/duotone-picker/utils.js.map +1 -1
  124. package/build-module/form-token-field/index.js +9 -4
  125. package/build-module/form-token-field/index.js.map +1 -1
  126. package/build-module/gradient-picker/index.js +61 -10
  127. package/build-module/gradient-picker/index.js.map +1 -1
  128. package/build-module/gradient-picker/types.js +2 -0
  129. package/build-module/gradient-picker/types.js.map +1 -0
  130. package/build-module/palette-edit/index.js +1 -2
  131. package/build-module/palette-edit/index.js.map +1 -1
  132. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  133. package/build-module/sandbox/index.native.js +70 -58
  134. package/build-module/sandbox/index.native.js.map +1 -1
  135. package/build-module/tab-panel/index.js +2 -2
  136. package/build-module/tab-panel/index.js.map +1 -1
  137. package/build-module/tools-panel/tools-panel/hook.js +45 -6
  138. package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
  139. package/build-module/utils/input/input-control.js +1 -1
  140. package/build-module/utils/input/input-control.js.map +1 -1
  141. package/build-style/style-rtl.css +40 -28
  142. package/build-style/style.css +42 -28
  143. package/build-types/angle-picker-control/angle-circle.d.ts.map +1 -1
  144. package/build-types/angle-picker-control/index.d.ts.map +1 -1
  145. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts +5 -0
  146. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts.map +1 -1
  147. package/build-types/animate/index.d.ts +27 -22
  148. package/build-types/animate/index.d.ts.map +1 -1
  149. package/build-types/animate/stories/index.d.ts +18 -0
  150. package/build-types/animate/stories/index.d.ts.map +1 -0
  151. package/build-types/animate/types.d.ts +30 -0
  152. package/build-types/animate/types.d.ts.map +1 -0
  153. package/build-types/color-picker/color-input.d.ts +1 -11
  154. package/build-types/color-picker/color-input.d.ts.map +1 -1
  155. package/build-types/color-picker/component.d.ts +8 -9
  156. package/build-types/color-picker/component.d.ts.map +1 -1
  157. package/build-types/color-picker/hex-input.d.ts +1 -10
  158. package/build-types/color-picker/hex-input.d.ts.map +1 -1
  159. package/build-types/color-picker/hsl-input.d.ts +1 -10
  160. package/build-types/color-picker/hsl-input.d.ts.map +1 -1
  161. package/build-types/color-picker/input-with-slider.d.ts +1 -9
  162. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  163. package/build-types/color-picker/legacy-adapter.d.ts +1 -3
  164. package/build-types/color-picker/legacy-adapter.d.ts.map +1 -1
  165. package/build-types/color-picker/picker.d.ts +4 -7
  166. package/build-types/color-picker/picker.d.ts.map +1 -1
  167. package/build-types/color-picker/rgb-input.d.ts +1 -10
  168. package/build-types/color-picker/rgb-input.d.ts.map +1 -1
  169. package/build-types/color-picker/stories/index.d.ts +19 -0
  170. package/build-types/color-picker/stories/index.d.ts.map +1 -0
  171. package/build-types/color-picker/test/index.d.ts +2 -0
  172. package/build-types/color-picker/test/index.d.ts.map +1 -0
  173. package/build-types/color-picker/types.d.ts +105 -1
  174. package/build-types/color-picker/types.d.ts.map +1 -1
  175. package/build-types/color-picker/use-deprecated-props.d.ts +1 -44
  176. package/build-types/color-picker/use-deprecated-props.d.ts.map +1 -1
  177. package/build-types/custom-gradient-picker/constants.d.ts +8 -8
  178. package/build-types/custom-gradient-picker/constants.d.ts.map +1 -1
  179. package/build-types/custom-gradient-picker/gradient-bar/constants.d.ts +7 -7
  180. package/build-types/custom-gradient-picker/gradient-bar/constants.d.ts.map +1 -1
  181. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts +5 -22
  182. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts.map +1 -1
  183. package/build-types/custom-gradient-picker/gradient-bar/index.d.ts +3 -9
  184. package/build-types/custom-gradient-picker/gradient-bar/index.d.ts.map +1 -1
  185. package/build-types/custom-gradient-picker/gradient-bar/test/utils.d.ts +2 -0
  186. package/build-types/custom-gradient-picker/gradient-bar/test/utils.d.ts.map +1 -0
  187. package/build-types/custom-gradient-picker/gradient-bar/utils.d.ts +44 -92
  188. package/build-types/custom-gradient-picker/gradient-bar/utils.d.ts.map +1 -1
  189. package/build-types/custom-gradient-picker/index.d.ts +27 -6
  190. package/build-types/custom-gradient-picker/index.d.ts.map +1 -1
  191. package/build-types/custom-gradient-picker/serializer.d.ts +13 -16
  192. package/build-types/custom-gradient-picker/serializer.d.ts.map +1 -1
  193. package/build-types/custom-gradient-picker/stories/index.d.ts +12 -0
  194. package/build-types/custom-gradient-picker/stories/index.d.ts.map +1 -0
  195. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts +3 -2
  196. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts.map +1 -1
  197. package/build-types/custom-gradient-picker/test/serializer.d.ts +2 -0
  198. package/build-types/custom-gradient-picker/test/serializer.d.ts.map +1 -0
  199. package/build-types/custom-gradient-picker/types.d.ts +120 -0
  200. package/build-types/custom-gradient-picker/types.d.ts.map +1 -0
  201. package/build-types/custom-gradient-picker/utils.d.ts +12 -4
  202. package/build-types/custom-gradient-picker/utils.d.ts.map +1 -1
  203. package/build-types/duotone-picker/color-list-picker/index.d.ts.map +1 -0
  204. package/build-types/{color-list-picker → duotone-picker/color-list-picker}/types.d.ts +2 -2
  205. package/build-types/duotone-picker/color-list-picker/types.d.ts.map +1 -0
  206. package/build-types/duotone-picker/custom-duotone-bar.d.ts +6 -0
  207. package/build-types/duotone-picker/custom-duotone-bar.d.ts.map +1 -0
  208. package/build-types/duotone-picker/duotone-picker.d.ts +38 -0
  209. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -0
  210. package/build-types/duotone-picker/duotone-swatch.d.ts +5 -0
  211. package/build-types/duotone-picker/duotone-swatch.d.ts.map +1 -0
  212. package/build-types/duotone-picker/index.d.ts +3 -0
  213. package/build-types/duotone-picker/index.d.ts.map +1 -0
  214. package/build-types/duotone-picker/stories/duotone-picker.d.ts +12 -0
  215. package/build-types/duotone-picker/stories/duotone-picker.d.ts.map +1 -0
  216. package/build-types/duotone-picker/stories/duotone-swatch.d.ts +14 -0
  217. package/build-types/duotone-picker/stories/duotone-swatch.d.ts.map +1 -0
  218. package/build-types/duotone-picker/types.d.ts +60 -0
  219. package/build-types/duotone-picker/types.d.ts.map +1 -0
  220. package/build-types/duotone-picker/utils.d.ts +52 -0
  221. package/build-types/duotone-picker/utils.d.ts.map +1 -0
  222. package/build-types/form-token-field/index.d.ts.map +1 -1
  223. package/build-types/form-token-field/types.d.ts +6 -0
  224. package/build-types/form-token-field/types.d.ts.map +1 -1
  225. package/build-types/gradient-picker/index.d.ts +49 -11
  226. package/build-types/gradient-picker/index.d.ts.map +1 -1
  227. package/build-types/gradient-picker/stories/index.d.ts +14 -0
  228. package/build-types/gradient-picker/stories/index.d.ts.map +1 -0
  229. package/build-types/gradient-picker/types.d.ts +87 -0
  230. package/build-types/gradient-picker/types.d.ts.map +1 -0
  231. package/build-types/palette-edit/index.d.ts.map +1 -1
  232. package/build-types/resizable-box/resize-tooltip/utils.d.ts +1 -1
  233. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  234. package/build-types/tab-panel/index.d.ts.map +1 -1
  235. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  236. package/build-types/tools-panel/types.d.ts +1 -0
  237. package/build-types/tools-panel/types.d.ts.map +1 -1
  238. package/build-types/utils/input/input-control.d.ts.map +1 -1
  239. package/package.json +19 -19
  240. package/src/angle-picker-control/angle-circle.tsx +0 -1
  241. package/src/angle-picker-control/index.tsx +14 -27
  242. package/src/angle-picker-control/styles/angle-picker-control-styles.tsx +16 -9
  243. package/src/animate/index.tsx +75 -0
  244. package/src/animate/stories/index.tsx +102 -0
  245. package/src/animate/types.ts +32 -0
  246. package/src/border-box-control/stories/index.tsx +1 -1
  247. package/src/box-control/axial-input-controls.tsx +1 -1
  248. package/src/circular-option-picker/style.scss +10 -0
  249. package/src/color-indicator/style.scss +1 -0
  250. package/src/color-picker/README.md +2 -2
  251. package/src/color-picker/color-input.tsx +1 -12
  252. package/src/color-picker/component.tsx +9 -18
  253. package/src/color-picker/hex-input.tsx +2 -7
  254. package/src/color-picker/hsl-input.tsx +2 -7
  255. package/src/color-picker/input-with-slider.tsx +1 -9
  256. package/src/color-picker/legacy-adapter.tsx +1 -2
  257. package/src/color-picker/picker.tsx +5 -6
  258. package/src/color-picker/rgb-input.tsx +2 -7
  259. package/src/color-picker/stories/index.tsx +51 -0
  260. package/src/color-picker/test/{index.js → index.tsx} +36 -18
  261. package/src/color-picker/types.ts +128 -1
  262. package/src/color-picker/use-deprecated-props.ts +2 -53
  263. package/src/combobox-control/stories/index.tsx +1 -1
  264. package/src/custom-gradient-picker/{constants.js → constants.ts} +2 -2
  265. package/src/custom-gradient-picker/gradient-bar/{control-points.js → control-points.tsx} +171 -134
  266. package/src/custom-gradient-picker/gradient-bar/{index.js → index.tsx} +32 -10
  267. package/src/custom-gradient-picker/gradient-bar/test/{utils.js → utils.ts} +58 -31
  268. package/src/custom-gradient-picker/gradient-bar/utils.ts +193 -0
  269. package/src/custom-gradient-picker/{index.js → index.tsx} +63 -22
  270. package/src/custom-gradient-picker/serializer.ts +82 -0
  271. package/src/custom-gradient-picker/stories/index.tsx +45 -0
  272. package/src/custom-gradient-picker/style.scss +25 -4
  273. package/src/custom-gradient-picker/test/{serializer.js → serializer.ts} +39 -33
  274. package/src/custom-gradient-picker/types.ts +137 -0
  275. package/src/custom-gradient-picker/{utils.js → utils.ts} +37 -22
  276. package/src/custom-select-control/test/index.js +6 -4
  277. package/src/{color-list-picker → duotone-picker/color-list-picker}/index.tsx +7 -6
  278. package/src/{color-list-picker → duotone-picker/color-list-picker}/types.ts +2 -2
  279. package/src/duotone-picker/{custom-duotone-bar.js → custom-duotone-bar.tsx} +7 -1
  280. package/src/duotone-picker/{duotone-picker.js → duotone-picker.tsx} +39 -2
  281. package/src/duotone-picker/{duotone-swatch.js → duotone-swatch.tsx} +2 -1
  282. package/src/duotone-picker/stories/{duotone-picker.js → duotone-picker.tsx} +15 -8
  283. package/src/duotone-picker/stories/{duotone-swatch.js → duotone-swatch.tsx} +9 -3
  284. package/src/duotone-picker/types.ts +61 -0
  285. package/src/duotone-picker/{utils.js → utils.ts} +29 -14
  286. package/src/flex/flex-item/README.md +1 -1
  287. package/src/form-token-field/README.md +1 -0
  288. package/src/form-token-field/index.tsx +10 -3
  289. package/src/form-token-field/style.scss +0 -7
  290. package/src/form-token-field/test/index.tsx +1 -0
  291. package/src/form-token-field/types.ts +6 -0
  292. package/src/gradient-picker/README.md +16 -23
  293. package/src/gradient-picker/{index.js → index.tsx} +70 -16
  294. package/src/gradient-picker/stories/{index.js → index.tsx} +19 -8
  295. package/src/gradient-picker/types.ts +89 -0
  296. package/src/item-group/test/index.js +5 -3
  297. package/src/palette-edit/index.tsx +4 -5
  298. package/src/resizable-box/resize-tooltip/utils.ts +1 -1
  299. package/src/sandbox/index.native.js +71 -78
  300. package/src/slot-fill/test/slot.js +8 -6
  301. package/src/style.scss +1 -1
  302. package/src/tab-panel/index.tsx +7 -2
  303. package/src/tools-panel/test/index.tsx +86 -0
  304. package/src/tools-panel/tools-panel/hook.ts +44 -4
  305. package/src/tools-panel/types.ts +1 -0
  306. package/src/tooltip/test/index.js +251 -301
  307. package/src/utils/input/input-control.js +1 -0
  308. package/tsconfig.json +1 -2
  309. package/tsconfig.tsbuildinfo +1 -1
  310. package/build/color-list-picker/index.js.map +0 -1
  311. package/build-module/color-list-picker/index.js.map +0 -1
  312. package/build-types/color-list-picker/index.d.ts.map +0 -1
  313. package/build-types/color-list-picker/types.d.ts.map +0 -1
  314. package/src/animate/index.js +0 -60
  315. package/src/animate/stories/index.js +0 -53
  316. package/src/color-picker/stories/index.js +0 -41
  317. package/src/custom-gradient-picker/gradient-bar/utils.js +0 -189
  318. package/src/custom-gradient-picker/serializer.js +0 -48
  319. package/src/custom-gradient-picker/stories/index.js +0 -33
  320. /package/build/{color-list-picker → animate}/types.js +0 -0
  321. /package/build-module/{color-list-picker → animate}/types.js +0 -0
  322. /package/build-module/{color-list-picker → animate}/types.js.map +0 -0
  323. /package/{build/color-list-picker → build-module/custom-gradient-picker}/types.js.map +0 -0
  324. /package/build-types/{color-list-picker → duotone-picker/color-list-picker}/index.d.ts +0 -0
  325. /package/src/custom-gradient-picker/gradient-bar/{constants.js → constants.ts} +0 -0
  326. /package/src/custom-gradient-picker/styles/{custom-gradient-picker-styles.js → custom-gradient-picker-styles.tsx} +0 -0
  327. /package/src/{color-list-picker → duotone-picker/color-list-picker}/style.scss +0 -0
  328. /package/src/duotone-picker/{index.js → index.ts} +0 -0
@@ -22,7 +22,11 @@ import { TokensAndInputWrapperFlex } from './styles';
22
22
  import SuggestionsList from './suggestions-list';
23
23
  import type { FormTokenFieldProps, TokenItem } from './types';
24
24
  import { FlexItem } from '../flex';
25
- import { StyledLabel } from '../base-control/styles/base-control-styles';
25
+ import {
26
+ StyledHelp,
27
+ StyledLabel,
28
+ } from '../base-control/styles/base-control-styles';
29
+ import { Spacer } from '../spacer';
26
30
 
27
31
  const identity = ( value: string ) => value;
28
32
 
@@ -67,6 +71,7 @@ export function FormTokenField( props: FormTokenFieldProps ) {
67
71
  __experimentalShowHowTo = true,
68
72
  __next36pxDefaultSize = false,
69
73
  __experimentalAutoSelectFirstMatch = false,
74
+ __nextHasNoMarginBottom = false,
70
75
  } = props;
71
76
 
72
77
  const instanceId = useInstanceId( FormTokenField );
@@ -716,17 +721,19 @@ export function FormTokenField( props: FormTokenFieldProps ) {
716
721
  />
717
722
  ) }
718
723
  </div>
724
+ { ! __nextHasNoMarginBottom && <Spacer marginBottom={ 2 } /> }
719
725
  { __experimentalShowHowTo && (
720
- <p
726
+ <StyledHelp
721
727
  id={ `components-form-token-suggestions-howto-${ instanceId }` }
722
728
  className="components-form-token-field__help"
729
+ __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
723
730
  >
724
731
  { tokenizeOnSpace
725
732
  ? __(
726
733
  'Separate with commas, spaces, or the Enter key.'
727
734
  )
728
735
  : __( 'Separate with commas or the Enter key.' ) }
729
- </p>
736
+ </StyledHelp>
730
737
  ) }
731
738
  </div>
732
739
  );
@@ -1,7 +1,6 @@
1
1
  .components-form-token-field__input-container {
2
2
  @include input-control();
3
3
  width: 100%;
4
- margin: 0 0 $grid-unit-10 0;
5
4
  padding: 0;
6
5
  cursor: text;
7
6
 
@@ -48,12 +47,6 @@
48
47
  }
49
48
  }
50
49
 
51
- .components-form-token-field__help {
52
- font-size: $helptext-font-size;
53
- font-style: normal;
54
- color: $gray-700;
55
- }
56
-
57
50
  // Tokens
58
51
  .components-form-token-field__token {
59
52
  font-size: $default-font-size;
@@ -44,6 +44,7 @@ const FormTokenFieldWithState = ( {
44
44
  setSelectedValue( tokens );
45
45
  onChange?.( tokens );
46
46
  } }
47
+ __nextHasNoMarginBottom
47
48
  />
48
49
  );
49
50
  };
@@ -169,6 +169,12 @@ export interface FormTokenFieldProps
169
169
  * Custom renderer for suggestions.
170
170
  */
171
171
  __experimentalRenderItem?: ( args: { item: string } ) => ReactNode;
172
+ /**
173
+ * Start opting into the new margin-free styles that will become the default in a future version.
174
+ *
175
+ * @default false
176
+ */
177
+ __nextHasNoMarginBottom?: boolean;
172
178
  }
173
179
 
174
180
  /**
@@ -49,63 +49,56 @@ const myGradientPicker = () => {
49
49
 
50
50
  The component accepts the following props:
51
51
 
52
- ### value
52
+ ### `className`: `string`
53
+
54
+ The class name added to the wrapper.
55
+
56
+ - Required: No
57
+
58
+ ### `value`: `string`
53
59
 
54
60
  The current value of the gradient. Pass a css gradient like `linear-gradient(90deg, rgb(6, 147, 227) 0%, rgb(155, 81, 224) 100%)`. Optionally pass in a `null` value to specify no gradient is currently selected.
55
61
 
56
- - Type: `string`
57
62
  - Required: No
58
63
  - Default: `linear-gradient(90deg, rgb(6, 147, 227) 0%, rgb(155, 81, 224) 100%)`
59
64
 
60
- ### onChange
65
+ ### `onChange`: `( currentGradient: string | undefined ) => void`
61
66
 
62
67
  The function called when a new gradient has been defined. It is passed the `currentGradient` as an argument.
63
68
 
64
- - Type: `Function`
65
69
  - Required: Yes
66
70
 
67
- ### gradients
71
+ ### `gradients`: `GradientsProp[]`
68
72
 
69
- An array of objects of predefined gradients which show up as `CircularOptionPicker` above the gradient selector.
73
+ An array of objects of predefined gradients displayed above the gradient selector.
70
74
 
71
- - Type: `array`
72
75
  - Required: No
76
+ - Default: `[]`
73
77
 
74
- ### clearable
78
+ ### `clearable`: `boolean`
75
79
 
76
80
  Whether the palette should have a clearing button or not.
77
81
 
78
- - Type: `Boolean`
79
82
  - Required: No
80
83
  - Default: true
81
84
 
82
- ### clearGradient
83
-
84
- Called when a new gradient has been defined. It is passed the `currentGradient` as an argument.
85
-
86
- - Type: `Function`
87
- - Required: No
88
-
89
- ### disableCustomGradients
85
+ ### `disableCustomGradients`: `boolean`
90
86
 
91
87
  If true, the gradient picker will not be displayed and only defined gradients from `gradients` are available.
92
88
 
93
- - Type: `Boolean`
94
89
  - Required: No
95
90
  - Default: false
96
91
 
97
- ### __nextHasNoMargin
92
+ ### `__nextHasNoMargin`: `boolean`
98
93
 
99
94
  Start opting into the new margin-free styles that will become the default in a future version, currently scheduled to be WordPress 6.4. (The prop can be safely removed once this happens.)
100
95
 
101
- - Type: `Boolean`
102
96
  - Required: No
103
97
  - Default: `false`
104
98
 
105
- ### headingLevel
99
+ ### `headingLevel`: `1 | 2 | 3 | 4 | 5 | 6 | '1' | '2' | '3' | '4' | '5' | '6'`
106
100
 
107
- The heading level.
101
+ The heading level. Only applies in cases where gradients are provided from multiple origins (ie. when the array passed as the `gradients` prop contains two or more items).
108
102
 
109
- - Type: `1 | 2 | 3 | 4 | 5 | 6 | '1' | '2' | '3' | '4' | '5' | '6'`
110
103
  - Required: No
111
104
  - Default: `2`
@@ -1,5 +1,3 @@
1
- // @ts-nocheck
2
-
3
1
  /**
4
2
  * WordPress dependencies
5
3
  */
@@ -15,13 +13,21 @@ import CustomGradientPicker from '../custom-gradient-picker';
15
13
  import { VStack } from '../v-stack';
16
14
  import { ColorHeading } from '../color-palette/styles';
17
15
  import { Spacer } from '../spacer';
16
+ import type {
17
+ GradientPickerComponentProps,
18
+ PickerProps,
19
+ OriginObject,
20
+ GradientObject,
21
+ } from './types';
18
22
 
19
23
  // The Multiple Origin Gradients have a `gradients` property (an array of
20
24
  // gradient objects), while Single Origin ones have a `gradient` property.
21
- const isMultipleOriginObject = ( obj ) =>
25
+ const isMultipleOriginObject = (
26
+ obj: Record< string, any >
27
+ ): obj is OriginObject =>
22
28
  Array.isArray( obj.gradients ) && ! ( 'gradient' in obj );
23
29
 
24
- const isMultipleOriginArray = ( arr ) => {
30
+ const isMultipleOriginArray = ( arr: any[] ): arr is OriginObject[] => {
25
31
  return (
26
32
  arr.length > 0 &&
27
33
  arr.every( ( gradientObj ) => isMultipleOriginObject( gradientObj ) )
@@ -35,7 +41,7 @@ function SingleOrigin( {
35
41
  onChange,
36
42
  value,
37
43
  actions,
38
- } ) {
44
+ }: PickerProps< GradientObject > ) {
39
45
  const gradientOptions = useMemo( () => {
40
46
  return gradients.map( ( { gradient, name }, index ) => (
41
47
  <CircularOptionPicker.Option
@@ -80,7 +86,7 @@ function MultipleOrigin( {
80
86
  value,
81
87
  actions,
82
88
  headingLevel,
83
- } ) {
89
+ }: PickerProps< OriginObject > ) {
84
90
  return (
85
91
  <VStack spacing={ 3 } className={ className }>
86
92
  { gradients.map( ( { name, gradients: gradientSet }, index ) => {
@@ -107,25 +113,72 @@ function MultipleOrigin( {
107
113
  );
108
114
  }
109
115
 
110
- export default function GradientPicker( {
116
+ function Component( props: PickerProps< any > ) {
117
+ if ( isMultipleOriginArray( props.gradients ) ) {
118
+ return <MultipleOrigin { ...props } />;
119
+ }
120
+ return <SingleOrigin { ...props } />;
121
+ }
122
+
123
+ /**
124
+ * GradientPicker is a React component that renders a color gradient picker to
125
+ * define a multi step gradient. There's either a _linear_ or a _radial_ type
126
+ * available.
127
+ *
128
+ * ```jsx
129
+ *import { GradientPicker } from '@wordpress/components';
130
+ *import { useState } from '@wordpress/element';
131
+ *
132
+ *const myGradientPicker = () => {
133
+ * const [ gradient, setGradient ] = useState( null );
134
+ *
135
+ * return (
136
+ * <GradientPicker
137
+ * __nextHasNoMargin
138
+ * value={ gradient }
139
+ * onChange={ ( currentGradient ) => setGradient( currentGradient ) }
140
+ * gradients={ [
141
+ * {
142
+ * name: 'JShine',
143
+ * gradient:
144
+ * 'linear-gradient(135deg,#12c2e9 0%,#c471ed 50%,#f64f59 100%)',
145
+ * slug: 'jshine',
146
+ * },
147
+ * {
148
+ * name: 'Moonlit Asteroid',
149
+ * gradient:
150
+ * 'linear-gradient(135deg,#0F2027 0%, #203A43 0%, #2c5364 100%)',
151
+ * slug: 'moonlit-asteroid',
152
+ * },
153
+ * {
154
+ * name: 'Rastafarie',
155
+ * gradient:
156
+ * 'linear-gradient(135deg,#1E9600 0%, #FFF200 0%, #FF0000 100%)',
157
+ * slug: 'rastafari',
158
+ * },
159
+ * ] }
160
+ * />
161
+ * );
162
+ *};
163
+ *```
164
+ *
165
+ */
166
+ export function GradientPicker( {
111
167
  /** Start opting into the new margin-free styles that will become the default in a future version. */
112
168
  __nextHasNoMargin = false,
113
169
  className,
114
- gradients,
170
+ gradients = [],
115
171
  onChange,
116
172
  value,
117
173
  clearable = true,
118
174
  disableCustomGradients = false,
119
175
  __experimentalIsRenderedInSidebar,
120
176
  headingLevel = 2,
121
- } ) {
177
+ }: GradientPickerComponentProps ) {
122
178
  const clearGradient = useCallback(
123
179
  () => onChange( undefined ),
124
180
  [ onChange ]
125
181
  );
126
- const Component = isMultipleOriginArray( gradients )
127
- ? MultipleOrigin
128
- : SingleOrigin;
129
182
 
130
183
  if ( ! __nextHasNoMargin ) {
131
184
  deprecated( 'Outer margin styles for wp.components.GradientPicker', {
@@ -137,7 +190,7 @@ export default function GradientPicker( {
137
190
 
138
191
  const deprecatedMarginSpacerProps = ! __nextHasNoMargin
139
192
  ? {
140
- marginTop: ! gradients?.length ? 3 : undefined,
193
+ marginTop: ! gradients.length ? 3 : undefined,
141
194
  marginBottom: ! clearable ? 6 : 0,
142
195
  }
143
196
  : {};
@@ -145,7 +198,7 @@ export default function GradientPicker( {
145
198
  return (
146
199
  // Outmost Spacer wrapper can be removed when deprecation period is over
147
200
  <Spacer marginBottom={ 0 } { ...deprecatedMarginSpacerProps }>
148
- <VStack spacing={ gradients?.length ? 4 : 0 }>
201
+ <VStack spacing={ gradients.length ? 4 : 0 }>
149
202
  { ! disableCustomGradients && (
150
203
  <CustomGradientPicker
151
204
  __nextHasNoMargin
@@ -156,10 +209,9 @@ export default function GradientPicker( {
156
209
  onChange={ onChange }
157
210
  />
158
211
  ) }
159
- { ( gradients?.length || clearable ) && (
212
+ { ( gradients.length || clearable ) && (
160
213
  <Component
161
214
  className={ className }
162
- clearable={ clearable }
163
215
  clearGradient={ clearGradient }
164
216
  gradients={ gradients }
165
217
  onChange={ onChange }
@@ -181,3 +233,5 @@ export default function GradientPicker( {
181
233
  </Spacer>
182
234
  );
183
235
  }
236
+
237
+ export default GradientPicker;
@@ -1,3 +1,7 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ComponentMeta, ComponentStory } from '@storybook/react';
1
5
  /**
2
6
  * WordPress dependencies
3
7
  */
@@ -6,18 +10,21 @@ import { useState } from '@wordpress/element';
6
10
  /**
7
11
  * Internal dependencies
8
12
  */
9
- import GradientPicker from '../';
13
+ import GradientPicker from '..';
10
14
 
11
- export default {
15
+ const meta: ComponentMeta< typeof GradientPicker > = {
12
16
  title: 'Components/GradientPicker',
13
17
  component: GradientPicker,
18
+ parameters: {
19
+ controls: { expanded: true },
20
+ docs: { source: { state: 'open' } },
21
+ actions: { argTypesRegex: '^on.*' },
22
+ },
14
23
  argTypes: {
15
- __nextHasNoMargin: { control: { type: 'boolean' } },
16
- clearable: { control: { type: 'boolean' } },
17
- disableCustomGradients: { control: { type: 'boolean' } },
18
- onChange: { action: 'onChange' },
24
+ value: { control: { type: null } },
19
25
  },
20
26
  };
27
+ export default meta;
21
28
 
22
29
  const GRADIENTS = [
23
30
  {
@@ -58,8 +65,12 @@ const GRADIENTS = [
58
65
  },
59
66
  ];
60
67
 
61
- const Template = ( { onChange, ...props } ) => {
62
- const [ gradient, setGradient ] = useState();
68
+ const Template: ComponentStory< typeof GradientPicker > = ( {
69
+ onChange,
70
+ ...props
71
+ } ) => {
72
+ const [ gradient, setGradient ] =
73
+ useState< ( typeof props )[ 'value' ] >( null );
63
74
  return (
64
75
  <GradientPicker
65
76
  { ...props }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import type { HeadingSize } from '../heading/types';
5
+
6
+ export type GradientObject = {
7
+ gradient: string;
8
+ name: string;
9
+ slug: string;
10
+ };
11
+ export type OriginObject = { name: string; gradients: GradientObject[] };
12
+ export type GradientsProp = GradientObject[] | OriginObject[];
13
+
14
+ type GradientPickerBaseProps = {
15
+ /**
16
+ * The class name added to the wrapper.
17
+ */
18
+ className?: string;
19
+ /**
20
+ * The function called when a new gradient has been defined. It is passed to
21
+ * the `currentGradient` as an argument.
22
+ */
23
+ onChange: ( currentGradient: string | undefined ) => void;
24
+ /**
25
+ * The current value of the gradient. Pass a css gradient string (See default value for example).
26
+ * Optionally pass in a `null` value to specify no gradient is currently selected.
27
+ *
28
+ * @default 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)'
29
+ */
30
+ value?: GradientObject[ 'gradient' ] | null;
31
+ /**
32
+ * Whether the palette should have a clearing button or not.
33
+ *
34
+ * @default true
35
+ */
36
+ clearable?: boolean;
37
+ /**
38
+ * The heading level. Only applies in cases where gradients are provided
39
+ * from multiple origins (ie. when the array passed as the `gradients` prop
40
+ * contains two or more items).
41
+ *
42
+ * @default 2
43
+ */
44
+ headingLevel?: HeadingSize;
45
+ };
46
+
47
+ export type GradientPickerComponentProps = GradientPickerBaseProps & {
48
+ /**
49
+ * An array of objects as predefined gradients displayed above the gradient
50
+ * selector. Alternatively, if there are multiple sets (or 'origins') of
51
+ * gradients, you can pass an array of objects each with a `name` and a
52
+ * `gradients` array which will in turn contain the predefined gradient objects.
53
+ *
54
+ * @default []
55
+ */
56
+ gradients?: GradientsProp;
57
+ /**
58
+ * Start opting in to the new margin-free styles that will become the default
59
+ * in a future version, currently scheduled to be WordPress 6.4. (The prop
60
+ * can be safely removed once this happens.)
61
+ *
62
+ * @default false
63
+ */
64
+ __nextHasNoMargin?: boolean;
65
+ /**
66
+ * If true, the gradient picker will not be displayed and only defined
67
+ * gradients from `gradients` will be shown.
68
+ *
69
+ * @default false
70
+ */
71
+ disableCustomGradients?: boolean;
72
+ /**
73
+ * Whether this is rendered in the sidebar.
74
+ *
75
+ * @default false
76
+ */
77
+ __experimentalIsRenderedInSidebar?: boolean;
78
+ };
79
+
80
+ export type PickerProps< TOriginType extends GradientObject | OriginObject > =
81
+ GradientPickerBaseProps & {
82
+ clearGradient: () => void;
83
+ onChange: (
84
+ currentGradient: string | undefined,
85
+ index: number
86
+ ) => void;
87
+ actions?: React.ReactNode;
88
+ gradients: TOriginType[];
89
+ };
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { fireEvent, render, screen } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
+ import userEvent from '@testing-library/user-event';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -72,7 +73,8 @@ describe( 'ItemGroup', () => {
72
73
  } );
73
74
 
74
75
  describe( 'Item', () => {
75
- it( 'should render as a `button` if the `onClick` handler is specified', () => {
76
+ it( 'should render as a `button` if the `onClick` handler is specified', async () => {
77
+ const user = userEvent.setup();
76
78
  const spy = jest.fn();
77
79
  render( <Item onClick={ spy }>Code is poetry</Item> );
78
80
 
@@ -80,7 +82,7 @@ describe( 'ItemGroup', () => {
80
82
 
81
83
  expect( button ).toBeInTheDocument();
82
84
 
83
- fireEvent.click( button );
85
+ await user.click( button );
84
86
 
85
87
  expect( spy ).toHaveBeenCalled();
86
88
  } );
@@ -133,7 +133,7 @@ function ColorPickerPopover< T extends Color | Gradient >( {
133
133
  __nextHasNoMargin
134
134
  __experimentalIsRenderedInSidebar
135
135
  value={ element.gradient }
136
- onChange={ ( newGradient: Gradient[ 'gradient' ] ) => {
136
+ onChange={ ( newGradient ) => {
137
137
  onChange( {
138
138
  ...element,
139
139
  gradient: newGradient,
@@ -532,7 +532,7 @@ export function PaletteEdit( {
532
532
  { hasElements && (
533
533
  <>
534
534
  { isEditing && (
535
- <PaletteEditListView< typeof elements[ number ] >
535
+ <PaletteEditListView< ( typeof elements )[ number ] >
536
536
  canOnlyChangeValues={ canOnlyChangeValues }
537
537
  elements={ elements }
538
538
  // @ts-expect-error TODO: Don't know how to resolve
@@ -548,13 +548,13 @@ export function PaletteEdit( {
548
548
  isGradient={ isGradient }
549
549
  onClose={ () => setEditingElement( null ) }
550
550
  onChange={ (
551
- newElement: typeof elements[ number ]
551
+ newElement: ( typeof elements )[ number ]
552
552
  ) => {
553
553
  debounceOnChange(
554
554
  // @ts-expect-error TODO: Don't know how to resolve
555
555
  elements.map(
556
556
  (
557
- currentElement: typeof elements[ number ],
557
+ currentElement: ( typeof elements )[ number ],
558
558
  currentIndex: number
559
559
  ) => {
560
560
  if (
@@ -572,7 +572,6 @@ export function PaletteEdit( {
572
572
  ) }
573
573
  { ! isEditing &&
574
574
  ( isGradient ? (
575
- // @ts-expect-error TODO: Remove when GradientPicker is typed.
576
575
  <GradientPicker
577
576
  __nextHasNoMargin
578
577
  gradients={ gradients }
@@ -13,7 +13,7 @@ export const POSITIONS = {
13
13
  corner: 'corner',
14
14
  } as const;
15
15
 
16
- export type Position = typeof POSITIONS[ keyof typeof POSITIONS ];
16
+ export type Position = ( typeof POSITIONS )[ keyof typeof POSITIONS ];
17
17
 
18
18
  interface UseResizeLabelProps {
19
19
  /** The label value. */