@wordpress/components 19.15.0 → 19.16.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 (439) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/build/angle-picker-control/index.js +2 -2
  3. package/build/angle-picker-control/index.js.map +1 -1
  4. package/build/base-control/styles/base-control-styles.js +8 -8
  5. package/build/base-control/styles/base-control-styles.js.map +1 -1
  6. package/build/border-control/border-control/component.js +38 -25
  7. package/build/border-control/border-control/component.js.map +1 -1
  8. package/build/border-control/border-control/hook.js +4 -7
  9. package/build/border-control/border-control/hook.js.map +1 -1
  10. package/build/border-control/border-control-dropdown/component.js +13 -7
  11. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  12. package/build/border-control/border-control-dropdown/hook.js +0 -4
  13. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  14. package/build/border-control/styles.js +33 -56
  15. package/build/border-control/styles.js.map +1 -1
  16. package/build/box-control/axial-input-controls.js +1 -1
  17. package/build/box-control/axial-input-controls.js.map +1 -1
  18. package/build/box-control/utils.js +2 -8
  19. package/build/box-control/utils.js.map +1 -1
  20. package/build/color-palette/index.js +14 -2
  21. package/build/color-palette/index.js.map +1 -1
  22. package/build/color-picker/hex-input.js +2 -1
  23. package/build/color-picker/hex-input.js.map +1 -1
  24. package/build/color-picker/input-with-slider.js +3 -2
  25. package/build/color-picker/input-with-slider.js.map +1 -1
  26. package/build/color-picker/styles.js +8 -15
  27. package/build/color-picker/styles.js.map +1 -1
  28. package/build/combobox-control/index.js +5 -7
  29. package/build/combobox-control/index.js.map +1 -1
  30. package/build/custom-select-control/index.js +26 -8
  31. package/build/custom-select-control/index.js.map +1 -1
  32. package/build/divider/component.js +0 -1
  33. package/build/divider/component.js.map +1 -1
  34. package/build/divider/index.js.map +1 -1
  35. package/build/divider/styles.js +5 -5
  36. package/build/divider/styles.js.map +1 -1
  37. package/build/dropdown/dropdown-content-wrapper.js +60 -0
  38. package/build/dropdown/dropdown-content-wrapper.js.map +1 -0
  39. package/build/dropdown/styles.js +42 -0
  40. package/build/dropdown/styles.js.map +1 -0
  41. package/build/dropdown/types.js +6 -0
  42. package/build/dropdown/types.js.map +1 -0
  43. package/build/elevation/component.js +15 -15
  44. package/build/elevation/component.js.map +1 -1
  45. package/build/elevation/hook.js +5 -17
  46. package/build/elevation/hook.js.map +1 -1
  47. package/build/elevation/index.js.map +1 -1
  48. package/build/elevation/styles.js +1 -1
  49. package/build/elevation/styles.js.map +1 -1
  50. package/build/flex/flex/component.js +11 -17
  51. package/build/flex/flex/component.js.map +1 -1
  52. package/build/flex/flex-block/component.js +9 -3
  53. package/build/flex/flex-block/component.js.map +1 -1
  54. package/build/flex/flex-item/component.js +9 -3
  55. package/build/flex/flex-item/component.js.map +1 -1
  56. package/build/index.js +24 -0
  57. package/build/index.js.map +1 -1
  58. package/build/input-control/index.js +7 -0
  59. package/build/input-control/index.js.map +1 -1
  60. package/build/input-control/input-base.js +23 -1
  61. package/build/input-control/input-base.js.map +1 -1
  62. package/build/input-control/input-prefix-wrapper.js +54 -0
  63. package/build/input-control/input-prefix-wrapper.js.map +1 -0
  64. package/build/input-control/input-suffix-wrapper.js +54 -0
  65. package/build/input-control/input-suffix-wrapper.js.map +1 -0
  66. package/build/input-control/styles/input-control-styles.js +61 -42
  67. package/build/input-control/styles/input-control-styles.js.map +1 -1
  68. package/build/mobile/image/index.native.js +7 -4
  69. package/build/mobile/image/index.native.js.map +1 -1
  70. package/build/mobile/media-edit/index.native.js +1 -7
  71. package/build/mobile/media-edit/index.native.js.map +1 -1
  72. package/build/popover/index.js +13 -10
  73. package/build/popover/index.js.map +1 -1
  74. package/build/radio-control/index.js +1 -3
  75. package/build/radio-control/index.js.map +1 -1
  76. package/build/range-control/utils.js +1 -1
  77. package/build/range-control/utils.js.map +1 -1
  78. package/build/sandbox/index.native.js +13 -2
  79. package/build/sandbox/index.native.js.map +1 -1
  80. package/build/scroll-lock/index.js +35 -6
  81. package/build/scroll-lock/index.js.map +1 -1
  82. package/build/select-control/index.js +1 -3
  83. package/build/select-control/index.js.map +1 -1
  84. package/build/select-control/styles/select-control-styles.js +31 -11
  85. package/build/select-control/styles/select-control-styles.js.map +1 -1
  86. package/build/shortcut/index.js +4 -13
  87. package/build/shortcut/index.js.map +1 -1
  88. package/build/shortcut/types.js +6 -0
  89. package/build/shortcut/types.js.map +1 -0
  90. package/build/spacer/component.js +3 -1
  91. package/build/spacer/component.js.map +1 -1
  92. package/build/toggle-group-control/toggle-group-control/component.js +4 -1
  93. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  94. package/build/toggle-group-control/toggle-group-control/styles.js +20 -4
  95. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  96. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +7 -9
  97. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  98. package/build/tooltip/index.js +51 -14
  99. package/build/tooltip/index.js.map +1 -1
  100. package/build/tree-select/index.js +2 -2
  101. package/build/tree-select/index.js.map +1 -1
  102. package/build/ui/context/use-context-system.js +7 -2
  103. package/build/ui/context/use-context-system.js.map +1 -1
  104. package/build/ui/utils/space.js +7 -1
  105. package/build/ui/utils/space.js.map +1 -1
  106. package/build/unit-control/styles/unit-control-styles.js +10 -26
  107. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  108. package/build-module/angle-picker-control/index.js +2 -2
  109. package/build-module/angle-picker-control/index.js.map +1 -1
  110. package/build-module/base-control/styles/base-control-styles.js +8 -8
  111. package/build-module/base-control/styles/base-control-styles.js.map +1 -1
  112. package/build-module/border-control/border-control/component.js +37 -25
  113. package/build-module/border-control/border-control/component.js.map +1 -1
  114. package/build-module/border-control/border-control/hook.js +4 -7
  115. package/build-module/border-control/border-control/hook.js.map +1 -1
  116. package/build-module/border-control/border-control-dropdown/component.js +12 -7
  117. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  118. package/build-module/border-control/border-control-dropdown/hook.js +0 -4
  119. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  120. package/build-module/border-control/styles.js +33 -49
  121. package/build-module/border-control/styles.js.map +1 -1
  122. package/build-module/box-control/axial-input-controls.js +1 -1
  123. package/build-module/box-control/axial-input-controls.js.map +1 -1
  124. package/build-module/box-control/utils.js +2 -7
  125. package/build-module/box-control/utils.js.map +1 -1
  126. package/build-module/color-palette/index.js +10 -1
  127. package/build-module/color-palette/index.js.map +1 -1
  128. package/build-module/color-picker/hex-input.js +2 -1
  129. package/build-module/color-picker/hex-input.js.map +1 -1
  130. package/build-module/color-picker/input-with-slider.js +3 -2
  131. package/build-module/color-picker/input-with-slider.js.map +1 -1
  132. package/build-module/color-picker/styles.js +9 -16
  133. package/build-module/color-picker/styles.js.map +1 -1
  134. package/build-module/combobox-control/index.js +5 -6
  135. package/build-module/combobox-control/index.js.map +1 -1
  136. package/build-module/custom-select-control/index.js +26 -10
  137. package/build-module/custom-select-control/index.js.map +1 -1
  138. package/build-module/divider/component.js +0 -1
  139. package/build-module/divider/component.js.map +1 -1
  140. package/build-module/divider/index.js.map +1 -1
  141. package/build-module/divider/styles.js +5 -5
  142. package/build-module/divider/styles.js.map +1 -1
  143. package/build-module/dropdown/dropdown-content-wrapper.js +47 -0
  144. package/build-module/dropdown/dropdown-content-wrapper.js.map +1 -0
  145. package/build-module/dropdown/styles.js +31 -0
  146. package/build-module/dropdown/styles.js.map +1 -0
  147. package/build-module/dropdown/types.js +2 -0
  148. package/build-module/dropdown/types.js.map +1 -0
  149. package/build-module/elevation/component.js +15 -15
  150. package/build-module/elevation/component.js.map +1 -1
  151. package/build-module/elevation/hook.js +5 -17
  152. package/build-module/elevation/hook.js.map +1 -1
  153. package/build-module/elevation/index.js.map +1 -1
  154. package/build-module/elevation/styles.js +1 -1
  155. package/build-module/elevation/styles.js.map +1 -1
  156. package/build-module/flex/flex/component.js +11 -17
  157. package/build-module/flex/flex/component.js.map +1 -1
  158. package/build-module/flex/flex-block/component.js +9 -3
  159. package/build-module/flex/flex-block/component.js.map +1 -1
  160. package/build-module/flex/flex-item/component.js +9 -3
  161. package/build-module/flex/flex-item/component.js.map +1 -1
  162. package/build-module/index.js +3 -0
  163. package/build-module/index.js.map +1 -1
  164. package/build-module/input-control/index.js +6 -0
  165. package/build-module/input-control/index.js.map +1 -1
  166. package/build-module/input-control/input-base.js +24 -3
  167. package/build-module/input-control/input-base.js.map +1 -1
  168. package/build-module/input-control/input-prefix-wrapper.js +41 -0
  169. package/build-module/input-control/input-prefix-wrapper.js.map +1 -0
  170. package/build-module/input-control/input-suffix-wrapper.js +41 -0
  171. package/build-module/input-control/input-suffix-wrapper.js.map +1 -0
  172. package/build-module/input-control/styles/input-control-styles.js +57 -41
  173. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  174. package/build-module/mobile/image/index.native.js +9 -6
  175. package/build-module/mobile/image/index.native.js.map +1 -1
  176. package/build-module/mobile/media-edit/index.native.js +1 -6
  177. package/build-module/mobile/media-edit/index.native.js.map +1 -1
  178. package/build-module/popover/index.js +13 -10
  179. package/build-module/popover/index.js.map +1 -1
  180. package/build-module/radio-control/index.js +1 -2
  181. package/build-module/radio-control/index.js.map +1 -1
  182. package/build-module/range-control/utils.js +1 -1
  183. package/build-module/range-control/utils.js.map +1 -1
  184. package/build-module/sandbox/index.native.js +13 -3
  185. package/build-module/sandbox/index.native.js.map +1 -1
  186. package/build-module/scroll-lock/index.js +32 -6
  187. package/build-module/scroll-lock/index.js.map +1 -1
  188. package/build-module/select-control/index.js +1 -2
  189. package/build-module/select-control/index.js.map +1 -1
  190. package/build-module/select-control/styles/select-control-styles.js +31 -11
  191. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  192. package/build-module/shortcut/index.js +4 -13
  193. package/build-module/shortcut/index.js.map +1 -1
  194. package/build-module/shortcut/types.js +2 -0
  195. package/build-module/shortcut/types.js.map +1 -0
  196. package/build-module/spacer/component.js +3 -1
  197. package/build-module/spacer/component.js.map +1 -1
  198. package/build-module/toggle-group-control/toggle-group-control/component.js +4 -1
  199. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  200. package/build-module/toggle-group-control/toggle-group-control/styles.js +15 -3
  201. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  202. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +6 -7
  203. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  204. package/build-module/tooltip/index.js +53 -16
  205. package/build-module/tooltip/index.js.map +1 -1
  206. package/build-module/tree-select/index.js +3 -3
  207. package/build-module/tree-select/index.js.map +1 -1
  208. package/build-module/ui/context/use-context-system.js +7 -2
  209. package/build-module/ui/context/use-context-system.js.map +1 -1
  210. package/build-module/ui/utils/space.js +7 -1
  211. package/build-module/ui/utils/space.js.map +1 -1
  212. package/build-module/unit-control/styles/unit-control-styles.js +10 -27
  213. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  214. package/build-style/style-rtl.css +12 -26
  215. package/build-style/style.css +12 -24
  216. package/build-types/base-control/styles/base-control-styles.d.ts.map +1 -1
  217. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  218. package/build-types/border-control/border-control/hook.d.ts +1 -1
  219. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  220. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  221. package/build-types/border-control/border-control-dropdown/hook.d.ts +0 -1
  222. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  223. package/build-types/border-control/stories/index.d.ts.map +1 -1
  224. package/build-types/border-control/styles.d.ts +1 -4
  225. package/build-types/border-control/styles.d.ts.map +1 -1
  226. package/build-types/card/card-divider/hook.d.ts +1 -1
  227. package/build-types/color-palette/index.d.ts +1 -0
  228. package/build-types/color-palette/index.d.ts.map +1 -1
  229. package/build-types/color-picker/hex-input.d.ts.map +1 -1
  230. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  231. package/build-types/color-picker/styles.d.ts.map +1 -1
  232. package/build-types/divider/component.d.ts +2 -3
  233. package/build-types/divider/component.d.ts.map +1 -1
  234. package/build-types/divider/index.d.ts +1 -1
  235. package/build-types/divider/index.d.ts.map +1 -1
  236. package/build-types/divider/styles.d.ts +6 -2
  237. package/build-types/divider/styles.d.ts.map +1 -1
  238. package/build-types/divider/test/index.d.ts +2 -0
  239. package/build-types/divider/test/index.d.ts.map +1 -0
  240. package/build-types/divider/types.d.ts +18 -10
  241. package/build-types/divider/types.d.ts.map +1 -1
  242. package/build-types/dropdown/dropdown-content-wrapper.d.ts +23 -0
  243. package/build-types/dropdown/dropdown-content-wrapper.d.ts.map +1 -0
  244. package/build-types/dropdown/styles.d.ts +7 -0
  245. package/build-types/dropdown/styles.d.ts.map +1 -0
  246. package/build-types/dropdown/types.d.ts +9 -0
  247. package/build-types/dropdown/types.d.ts.map +1 -0
  248. package/build-types/elevation/component.d.ts +11 -10
  249. package/build-types/elevation/component.d.ts.map +1 -1
  250. package/build-types/elevation/hook.d.ts +6 -7
  251. package/build-types/elevation/hook.d.ts.map +1 -1
  252. package/build-types/elevation/index.d.ts +2 -2
  253. package/build-types/elevation/index.d.ts.map +1 -1
  254. package/build-types/elevation/stories/index.d.ts +22 -0
  255. package/build-types/elevation/stories/index.d.ts.map +1 -0
  256. package/build-types/elevation/styles.d.ts +1 -1
  257. package/build-types/elevation/styles.d.ts.map +1 -1
  258. package/build-types/elevation/test/index.d.ts +2 -0
  259. package/build-types/elevation/test/index.d.ts.map +1 -0
  260. package/build-types/elevation/types.d.ts +12 -19
  261. package/build-types/elevation/types.d.ts.map +1 -1
  262. package/build-types/flex/flex/component.d.ts +11 -17
  263. package/build-types/flex/flex/component.d.ts.map +1 -1
  264. package/build-types/flex/flex-block/component.d.ts +9 -3
  265. package/build-types/flex/flex-block/component.d.ts.map +1 -1
  266. package/build-types/flex/flex-item/component.d.ts +9 -3
  267. package/build-types/flex/flex-item/component.d.ts.map +1 -1
  268. package/build-types/flex/types.d.ts +4 -1
  269. package/build-types/flex/types.d.ts.map +1 -1
  270. package/build-types/input-control/index.d.ts +1 -1
  271. package/build-types/input-control/index.d.ts.map +1 -1
  272. package/build-types/input-control/input-base.d.ts +1 -1
  273. package/build-types/input-control/input-base.d.ts.map +1 -1
  274. package/build-types/input-control/input-prefix-wrapper.d.ts +19 -0
  275. package/build-types/input-control/input-prefix-wrapper.d.ts.map +1 -0
  276. package/build-types/input-control/input-suffix-wrapper.d.ts +19 -0
  277. package/build-types/input-control/input-suffix-wrapper.d.ts.map +1 -0
  278. package/build-types/input-control/stories/index.d.ts +10 -0
  279. package/build-types/input-control/stories/index.d.ts.map +1 -1
  280. package/build-types/input-control/styles/input-control-styles.d.ts +21 -0
  281. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  282. package/build-types/input-control/types.d.ts +45 -3
  283. package/build-types/input-control/types.d.ts.map +1 -1
  284. package/build-types/popover/index.d.ts.map +1 -1
  285. package/build-types/radio-control/index.d.ts.map +1 -1
  286. package/build-types/range-control/types.d.ts +4 -2
  287. package/build-types/range-control/types.d.ts.map +1 -1
  288. package/build-types/range-control/utils.d.ts.map +1 -1
  289. package/build-types/scroll-lock/index.d.ts +32 -3
  290. package/build-types/scroll-lock/index.d.ts.map +1 -1
  291. package/build-types/scroll-lock/stories/index.d.ts +9 -0
  292. package/build-types/scroll-lock/stories/index.d.ts.map +1 -0
  293. package/build-types/scroll-lock/test/index.d.ts +2 -0
  294. package/build-types/scroll-lock/test/index.d.ts.map +1 -0
  295. package/build-types/select-control/index.d.ts.map +1 -1
  296. package/build-types/select-control/styles/select-control-styles.d.ts +1 -1
  297. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  298. package/build-types/select-control/types.d.ts +1 -1
  299. package/build-types/select-control/types.d.ts.map +1 -1
  300. package/build-types/shortcut/index.d.ts +5 -24
  301. package/build-types/shortcut/index.d.ts.map +1 -1
  302. package/build-types/shortcut/test/index.d.ts +2 -0
  303. package/build-types/shortcut/test/index.d.ts.map +1 -0
  304. package/build-types/shortcut/types.d.ts +14 -0
  305. package/build-types/shortcut/types.d.ts.map +1 -0
  306. package/build-types/spacer/component.d.ts +3 -1
  307. package/build-types/spacer/component.d.ts.map +1 -1
  308. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +5 -1
  309. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  310. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +0 -1
  311. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  312. package/build-types/toggle-group-control/types.d.ts +6 -0
  313. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  314. package/build-types/tooltip/index.d.ts.map +1 -1
  315. package/build-types/tree-select/index.d.ts.map +1 -1
  316. package/build-types/tree-select/types.d.ts +1 -0
  317. package/build-types/tree-select/types.d.ts.map +1 -1
  318. package/build-types/ui/context/use-context-system.d.ts.map +1 -1
  319. package/build-types/ui/utils/space.d.ts +7 -1
  320. package/build-types/ui/utils/space.d.ts.map +1 -1
  321. package/build-types/unit-control/index.d.ts +2 -2
  322. package/build-types/unit-control/index.d.ts.map +1 -1
  323. package/build-types/unit-control/styles/unit-control-styles.d.ts +0 -1
  324. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  325. package/build-types/unit-control/types.d.ts +1 -1
  326. package/build-types/unit-control/types.d.ts.map +1 -1
  327. package/package.json +17 -17
  328. package/src/angle-picker-control/index.js +1 -2
  329. package/src/base-control/styles/base-control-styles.ts +5 -0
  330. package/src/border-control/border-control/component.tsx +41 -32
  331. package/src/border-control/border-control/hook.ts +4 -9
  332. package/src/border-control/border-control-dropdown/component.tsx +50 -45
  333. package/src/border-control/border-control-dropdown/hook.ts +0 -5
  334. package/src/border-control/stories/index.tsx +3 -0
  335. package/src/border-control/styles.ts +23 -69
  336. package/src/border-control/test/index.js +19 -8
  337. package/src/box-control/axial-input-controls.js +1 -1
  338. package/src/box-control/utils.js +6 -13
  339. package/src/card/test/__snapshots__/index.js.snap +8 -8
  340. package/src/color-palette/index.js +19 -8
  341. package/src/color-palette/style.scss +5 -0
  342. package/src/color-palette/test/utils.ts +19 -1
  343. package/src/color-picker/hex-input.tsx +2 -1
  344. package/src/color-picker/input-with-slider.tsx +2 -1
  345. package/src/color-picker/styles.ts +0 -11
  346. package/src/combobox-control/index.js +5 -6
  347. package/src/confirm-dialog/README.md +1 -1
  348. package/src/custom-select-control/index.js +44 -26
  349. package/src/custom-select-control/stories/index.js +7 -2
  350. package/src/custom-select-control/style.scss +4 -29
  351. package/src/divider/README.md +12 -5
  352. package/src/divider/component.tsx +2 -3
  353. package/src/divider/index.ts +1 -1
  354. package/src/divider/stories/index.tsx +4 -4
  355. package/src/divider/styles.ts +7 -7
  356. package/src/divider/test/__snapshots__/{index.js.snap → index.tsx.snap} +7 -7
  357. package/src/divider/test/index.tsx +40 -0
  358. package/src/divider/types.ts +21 -15
  359. package/src/draggable/README.md +1 -1
  360. package/src/dropdown/dropdown-content-wrapper.tsx +59 -0
  361. package/src/dropdown/stories/index.js +60 -69
  362. package/src/dropdown/styles.ts +38 -0
  363. package/src/dropdown/types.ts +8 -0
  364. package/src/elevation/README.md +16 -14
  365. package/src/elevation/component.tsx +48 -0
  366. package/src/elevation/{hook.js → hook.ts} +20 -17
  367. package/src/elevation/{index.js → index.ts} +0 -0
  368. package/src/elevation/stories/index.tsx +85 -0
  369. package/src/elevation/{styles.js → styles.ts} +0 -0
  370. package/src/elevation/test/__snapshots__/{index.js.snap → index.tsx.snap} +19 -13
  371. package/src/elevation/test/index.tsx +64 -0
  372. package/src/elevation/types.ts +12 -19
  373. package/src/flex/flex/README.md +1 -5
  374. package/src/flex/flex/component.js +11 -17
  375. package/src/flex/flex-block/README.md +0 -4
  376. package/src/flex/flex-block/component.js +9 -3
  377. package/src/flex/flex-item/README.md +0 -4
  378. package/src/flex/flex-item/component.js +9 -3
  379. package/src/flex/stories/index.js +1 -1
  380. package/src/flex/types.ts +4 -1
  381. package/src/form-token-field/test/index.js +1 -1
  382. package/src/index.js +3 -0
  383. package/src/input-control/index.tsx +6 -0
  384. package/src/input-control/input-base.tsx +28 -12
  385. package/src/input-control/input-prefix-wrapper.tsx +48 -0
  386. package/src/input-control/input-suffix-wrapper.tsx +48 -0
  387. package/src/input-control/stories/index.tsx +15 -2
  388. package/src/input-control/styles/input-control-styles.tsx +25 -11
  389. package/src/input-control/types.ts +52 -3
  390. package/src/mobile/image/index.native.js +12 -7
  391. package/src/mobile/media-edit/index.native.js +2 -7
  392. package/src/modal/style.scss +5 -1
  393. package/src/popover/index.js +13 -9
  394. package/src/popover/stories/index.js +2 -0
  395. package/src/popover/style.scss +1 -1
  396. package/src/radio-control/index.tsx +1 -2
  397. package/src/range-control/README.md +1 -1
  398. package/src/range-control/test/index.tsx +30 -0
  399. package/src/range-control/types.ts +4 -2
  400. package/src/range-control/utils.ts +4 -1
  401. package/src/sandbox/index.native.js +14 -1
  402. package/src/scroll-lock/README.md +1 -1
  403. package/src/scroll-lock/{index.js → index.tsx} +34 -7
  404. package/src/scroll-lock/stories/index.tsx +96 -0
  405. package/src/scroll-lock/test/index.tsx +26 -0
  406. package/src/select-control/index.tsx +1 -2
  407. package/src/select-control/styles/select-control-styles.ts +33 -9
  408. package/src/select-control/types.ts +1 -0
  409. package/src/shortcut/{index.js → index.tsx} +5 -9
  410. package/src/shortcut/test/__snapshots__/index.tsx.snap +15 -0
  411. package/src/shortcut/test/index.tsx +41 -0
  412. package/src/shortcut/types.ts +10 -0
  413. package/src/spacer/component.tsx +3 -1
  414. package/src/toggle-group-control/stories/index.js +19 -3
  415. package/src/toggle-group-control/test/__snapshots__/index.js.snap +4 -4
  416. package/src/toggle-group-control/toggle-group-control/component.tsx +3 -3
  417. package/src/toggle-group-control/toggle-group-control/styles.ts +22 -2
  418. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +0 -4
  419. package/src/toggle-group-control/types.ts +6 -0
  420. package/src/tools-panel/tools-panel/README.md +94 -21
  421. package/src/tooltip/index.js +56 -10
  422. package/src/tooltip/stories/index.js +28 -13
  423. package/src/tooltip/style.scss +1 -1
  424. package/src/tree-select/index.tsx +5 -4
  425. package/src/tree-select/types.ts +4 -0
  426. package/src/ui/context/test/context-system-provider.js +101 -1
  427. package/src/ui/context/use-context-system.js +7 -2
  428. package/src/ui/utils/space.ts +7 -1
  429. package/src/unit-control/styles/unit-control-styles.ts +15 -13
  430. package/src/unit-control/test/__snapshots__/index.tsx.snap +4 -4
  431. package/src/unit-control/types.ts +1 -1
  432. package/tsconfig.tsbuildinfo +1 -1
  433. package/src/divider/test/index.js +0 -41
  434. package/src/elevation/component.js +0 -43
  435. package/src/elevation/stories/index.js +0 -148
  436. package/src/elevation/test/index.js +0 -51
  437. package/src/scroll-lock/stories/index.js +0 -71
  438. package/src/scroll-lock/test/index.js +0 -53
  439. package/src/shortcut/test/index.js +0 -37
@@ -13,8 +13,9 @@ import {
13
13
  concatChildren,
14
14
  useEffect,
15
15
  useState,
16
+ useRef,
16
17
  } from '@wordpress/element';
17
- import { useDebounce } from '@wordpress/compose';
18
+ import { useDebounce, useMergeRefs } from '@wordpress/compose';
18
19
 
19
20
  /**
20
21
  * Internal dependencies
@@ -31,29 +32,45 @@ export const TOOLTIP_DELAY = 700;
31
32
 
32
33
  const eventCatcher = <div className="event-catcher" />;
33
34
 
34
- const getDisabledElement = ( { eventHandlers, child, childrenWithPopover } ) =>
35
- cloneElement(
35
+ const getDisabledElement = ( {
36
+ eventHandlers,
37
+ child,
38
+ childrenWithPopover,
39
+ mergedRefs,
40
+ } ) => {
41
+ return cloneElement(
36
42
  <span className="disabled-element-wrapper">
37
43
  { cloneElement( eventCatcher, eventHandlers ) }
38
44
  { cloneElement( child, {
39
45
  children: childrenWithPopover,
46
+ ref: mergedRefs,
40
47
  } ) }
41
48
  </span>,
42
- eventHandlers
49
+ { ...eventHandlers }
43
50
  );
51
+ };
44
52
 
45
- const getRegularElement = ( { child, eventHandlers, childrenWithPopover } ) =>
46
- cloneElement( child, {
53
+ const getRegularElement = ( {
54
+ child,
55
+ eventHandlers,
56
+ childrenWithPopover,
57
+ mergedRefs,
58
+ } ) => {
59
+ return cloneElement( child, {
47
60
  ...eventHandlers,
48
61
  children: childrenWithPopover,
62
+ ref: mergedRefs,
49
63
  } );
64
+ };
50
65
 
51
66
  const addPopoverToGrandchildren = ( {
67
+ anchorRef,
52
68
  grandchildren,
53
69
  isOver,
70
+ offset,
54
71
  position,
55
- text,
56
72
  shortcut,
73
+ text,
57
74
  } ) =>
58
75
  concatChildren(
59
76
  grandchildren,
@@ -64,7 +81,8 @@ const addPopoverToGrandchildren = ( {
64
81
  className="components-tooltip"
65
82
  aria-hidden="true"
66
83
  animate={ false }
67
- offset={ 12 }
84
+ offset={ offset }
85
+ anchorRef={ anchorRef }
68
86
  __unstableShift
69
87
  >
70
88
  { text }
@@ -111,7 +129,23 @@ function Tooltip( props ) {
111
129
  const [ isOver, setIsOver ] = useState( false );
112
130
  const delayedSetIsOver = useDebounce( setIsOver, delay );
113
131
 
132
+ // Create a reference to the Tooltip's child, to be passed to the Popover
133
+ // so that the Tooltip can be correctly positioned. Also, merge with the
134
+ // existing ref for the first child, so that its ref is preserved.
135
+ const childRef = useRef( null );
136
+ const existingChildRef = Children.toArray( children )[ 0 ]?.ref;
137
+ const mergedChildRefs = useMergeRefs( [ childRef, existingChildRef ] );
138
+
114
139
  const createMouseDown = ( event ) => {
140
+ // In firefox, the mouse down event is also fired when the select
141
+ // list is chosen.
142
+ // Cancel further processing because re-rendering of child components
143
+ // causes onChange to be triggered with the old value.
144
+ // See https://github.com/WordPress/gutenberg/pull/42483
145
+ if ( event.target.tagName === 'OPTION' ) {
146
+ return;
147
+ }
148
+
115
149
  // Preserve original child callback behavior.
116
150
  emitToChild( children, 'onMouseDown', event );
117
151
 
@@ -124,6 +158,15 @@ function Tooltip( props ) {
124
158
  };
125
159
 
126
160
  const createMouseUp = ( event ) => {
161
+ // In firefox, the mouse up event is also fired when the select
162
+ // list is chosen.
163
+ // Cancel further processing because re-rendering of child components
164
+ // causes onChange to be triggered with the old value.
165
+ // See https://github.com/WordPress/gutenberg/pull/42483
166
+ if ( event.target.tagName === 'OPTION' ) {
167
+ return;
168
+ }
169
+
127
170
  emitToChild( children, 'onMouseUp', event );
128
171
  document.removeEventListener( 'mouseup', cancelIsMouseDown );
129
172
  setIsMouseDown( false );
@@ -150,7 +193,7 @@ function Tooltip( props ) {
150
193
  // Mouse events behave unreliably in React for disabled elements,
151
194
  // firing on mouseenter but not mouseleave. Further, the default
152
195
  // behavior for disabled elements in some browsers is to ignore
153
- // mouse events. Don't bother trying to to handle them.
196
+ // mouse events. Don't bother trying to handle them.
154
197
  //
155
198
  // See: https://github.com/facebook/react/issues/4251
156
199
  if ( event.currentTarget.disabled ) {
@@ -214,10 +257,12 @@ function Tooltip( props ) {
214
257
  : getRegularElement;
215
258
 
216
259
  const popoverData = {
260
+ anchorRef: childRef,
217
261
  isOver,
262
+ offset: 4,
218
263
  position,
219
- text,
220
264
  shortcut,
265
+ text,
221
266
  };
222
267
  const childrenWithPopover = addPopoverToGrandchildren( {
223
268
  grandchildren,
@@ -228,6 +273,7 @@ function Tooltip( props ) {
228
273
  child,
229
274
  eventHandlers,
230
275
  childrenWithPopover,
276
+ mergedRefs: mergedChildRefs,
231
277
  } );
232
278
  }
233
279
 
@@ -35,19 +35,34 @@ export const _default = () => {
35
35
  const position = select( 'Position', positionOptions, 'top center' );
36
36
  const delay = number( 'Delay', 700 );
37
37
  return (
38
- <Tooltip text={ tooltipText } position={ position } delay={ delay }>
39
- <div
40
- style={ {
41
- margin: '50px auto',
42
- width: '200px',
43
- padding: '20px',
44
- textAlign: 'center',
45
- border: '1px solid #ccc',
46
- } }
47
- >
48
- Hover for more information
49
- </div>
50
- </Tooltip>
38
+ <>
39
+ <Tooltip text={ tooltipText } position={ position } delay={ delay }>
40
+ <div
41
+ style={ {
42
+ margin: '50px auto',
43
+ width: '200px',
44
+ padding: '20px',
45
+ textAlign: 'center',
46
+ border: '1px solid #ccc',
47
+ } }
48
+ >
49
+ Hover for more information
50
+ </div>
51
+ </Tooltip>
52
+ <Tooltip text={ tooltipText } position={ position } delay={ delay }>
53
+ <div
54
+ style={ {
55
+ margin: '50px auto',
56
+ width: 'min-content',
57
+ padding: '4px',
58
+ textAlign: 'center',
59
+ border: '1px solid #ccc',
60
+ } }
61
+ >
62
+ Small target
63
+ </div>
64
+ </Tooltip>
65
+ </>
51
66
  );
52
67
  };
53
68
 
@@ -2,7 +2,7 @@
2
2
  z-index: z-index(".components-tooltip");
3
3
 
4
4
  .components-popover__content {
5
- min-width: 0;
5
+ min-width: min-content;
6
6
  }
7
7
  }
8
8
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { unescape as unescapeString, compact } from 'lodash';
4
+ import { unescape as unescapeString } from 'lodash';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -11,7 +11,7 @@ import { useMemo } from '@wordpress/element';
11
11
  * Internal dependencies
12
12
  */
13
13
  import { SelectControl } from '../select-control';
14
- import type { TreeSelectProps, Tree, SelectOptions } from './types';
14
+ import type { TreeSelectProps, Tree, SelectOptions, Truthy } from './types';
15
15
 
16
16
  function getSelectOptions( tree: Tree[], level = 0 ): SelectOptions {
17
17
  return tree.flatMap( ( treeNode ) => [
@@ -72,6 +72,7 @@ function getSelectOptions( tree: Tree[], level = 0 ): SelectOptions {
72
72
  * }
73
73
  * ```
74
74
  */
75
+
75
76
  export function TreeSelect( {
76
77
  label,
77
78
  noOptionLabel,
@@ -81,10 +82,10 @@ export function TreeSelect( {
81
82
  ...props
82
83
  }: TreeSelectProps ) {
83
84
  const options = useMemo( () => {
84
- return compact( [
85
+ return [
85
86
  noOptionLabel && { value: '', label: noOptionLabel },
86
87
  ...getSelectOptions( tree ),
87
- ] );
88
+ ].filter( < T, >( option: T ): option is Truthy< T > => !! option );
88
89
  }, [ noOptionLabel, tree ] );
89
90
 
90
91
  return (
@@ -9,6 +9,10 @@ import type { ComponentProps } from 'react';
9
9
  import type SelectControl from '../select-control';
10
10
  import type { SelectControlProps } from '../select-control/types';
11
11
 
12
+ export type Truthy< T > = T extends false | '' | 0 | null | undefined
13
+ ? never
14
+ : T;
15
+
12
16
  export type SelectOptions = Required<
13
17
  ComponentProps< typeof SelectControl >
14
18
  >[ 'options' ];
@@ -1,9 +1,14 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
5
  import styled from '@emotion/styled';
6
6
 
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ import { cloneElement } from '@wordpress/element';
11
+
7
12
  /**
8
13
  * Internal dependencies
9
14
  */
@@ -101,3 +106,98 @@ describe( 'props', () => {
101
106
  expect( el.innerHTML ).not.toContain( 'WordPress.org' );
102
107
  } );
103
108
  } );
109
+
110
+ describe( 'children', () => {
111
+ test( 'should pass through children', () => {
112
+ const Component = ( props, ref ) => (
113
+ <View { ...useContextSystem( props, 'Component' ) } ref={ ref } />
114
+ );
115
+ const ConnectedComponent = contextConnect( Component, 'Component' );
116
+
117
+ render(
118
+ <ContextSystemProvider>
119
+ <ConnectedComponent>Pass through</ConnectedComponent>
120
+ </ContextSystemProvider>
121
+ );
122
+
123
+ expect( screen.getByText( 'Pass through' ) ).toBeInTheDocument();
124
+ } );
125
+
126
+ test( 'should not accept children via `context`', () => {
127
+ const Component = ( props, ref ) => (
128
+ <View { ...useContextSystem( props, 'Component' ) } ref={ ref } />
129
+ );
130
+ const ConnectedComponent = contextConnect( Component, 'Component' );
131
+
132
+ render(
133
+ <ContextSystemProvider
134
+ context={ { Component: { children: 'Override' } } }
135
+ >
136
+ <ConnectedComponent />
137
+ </ContextSystemProvider>
138
+ );
139
+
140
+ expect( screen.queryByText( 'Override' ) ).not.toBeInTheDocument();
141
+ } );
142
+
143
+ // This matches the behavior for normal, non-context-connected components.
144
+ test( 'should not override inherent children', () => {
145
+ const Component = ( props, ref ) => (
146
+ <View { ...useContextSystem( props, 'Component' ) } ref={ ref }>
147
+ Inherent
148
+ </View>
149
+ );
150
+ const ConnectedComponent = contextConnect( Component, 'Component' );
151
+ const NormalComponent = ( props ) => <div { ...props }>Inherent</div>;
152
+
153
+ render(
154
+ <ContextSystemProvider>
155
+ <ConnectedComponent />
156
+ <ConnectedComponent>Explicit children</ConnectedComponent>
157
+ <NormalComponent />
158
+ <NormalComponent>Explicit children</NormalComponent>
159
+ </ContextSystemProvider>
160
+ );
161
+
162
+ expect( screen.getAllByText( 'Inherent' ) ).toHaveLength( 4 );
163
+ } );
164
+
165
+ describe( 'when connected component does a `cloneElement()`', () => {
166
+ // eslint-disable-next-line no-unused-vars
167
+ const ComponentThatClones = ( { content, ...props }, _ref ) =>
168
+ cloneElement(
169
+ content,
170
+ useContextSystem( props, 'ComponentThatClones' )
171
+ );
172
+ const ConnectedComponentThatClones = contextConnect(
173
+ ComponentThatClones,
174
+ 'ComponentThatClones'
175
+ );
176
+
177
+ test( 'should not override cloned inherent children with implicit `undefined` children', () => {
178
+ render(
179
+ <ContextSystemProvider>
180
+ <ConnectedComponentThatClones
181
+ content={ <span>Inherent</span> }
182
+ />
183
+ </ContextSystemProvider>
184
+ );
185
+ expect( screen.getByText( 'Inherent' ) ).toBeInTheDocument();
186
+ } );
187
+
188
+ test( 'should override cloned inherent children with explicit children', () => {
189
+ render(
190
+ <ContextSystemProvider>
191
+ <ConnectedComponentThatClones
192
+ content={ <span>Inherent</span> }
193
+ >
194
+ Explicit children
195
+ </ConnectedComponentThatClones>
196
+ </ContextSystemProvider>
197
+ );
198
+ expect(
199
+ screen.getByText( 'Explicit children' )
200
+ ).toBeInTheDocument();
201
+ } );
202
+ } );
203
+ } );
@@ -71,8 +71,13 @@ export function useContextSystem( props, namespace ) {
71
71
  finalComponentProps[ key ] = overrideProps[ key ];
72
72
  }
73
73
 
74
- // @ts-ignore
75
- finalComponentProps.children = rendered;
74
+ // Setting an `undefined` explicitly can cause unintended overwrites
75
+ // when a `cloneElement()` is involved.
76
+ if ( rendered !== undefined ) {
77
+ // @ts-ignore
78
+ finalComponentProps.children = rendered;
79
+ }
80
+
76
81
  finalComponentProps.className = classes;
77
82
 
78
83
  return finalComponentProps;
@@ -1,5 +1,11 @@
1
1
  /**
2
- * A real number or something parsable as a number
2
+ * The argument value for the `space()` utility function.
3
+ *
4
+ * When this is a number or a numeric string, it will be interpreted as a
5
+ * multiplier for the grid base value (4px). For example, `space( 2 )` will be 8px.
6
+ *
7
+ * Otherwise, it will be interpreted as a literal CSS length value. For example,
8
+ * `space( 'auto' )` will be 'auto', and `space( '2px' )` will be 2px.
3
9
  */
4
10
  export type SpaceInput = number | string;
5
11
 
@@ -6,8 +6,9 @@ import styled from '@emotion/styled';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import { COLORS, rtl } from '../../utils';
9
+ import { COLORS, CONFIG, rtl } from '../../utils';
10
10
  import NumberControl from '../../number-control';
11
+ import { BackdropUI } from '../../input-control/styles/input-control-styles';
11
12
  import type { SelectSize } from '../types';
12
13
 
13
14
  // Using `selectSize` instead of `size` to avoid a type conflict with the
@@ -18,21 +19,17 @@ type SelectProps = {
18
19
 
19
20
  type InputProps = {
20
21
  disableUnits?: boolean;
21
- size: SelectSize;
22
22
  };
23
23
 
24
24
  export const Root = styled.div`
25
25
  box-sizing: border-box;
26
26
  position: relative;
27
- `;
28
-
29
- const paddingStyles = ( { disableUnits }: InputProps ) => {
30
- if ( disableUnits ) return '';
31
27
 
32
- return css`
33
- ${ rtl( { paddingRight: 8 } )() };
34
- `;
35
- };
28
+ /* Target the InputControl's backdrop and make focus styles smoother. */
29
+ &&& ${ BackdropUI } {
30
+ transition: box-shadow 0.1s linear;
31
+ }
32
+ `;
36
33
 
37
34
  const arrowStyles = ( { disableUnits }: InputProps ) => {
38
35
  if ( disableUnits ) return '';
@@ -58,7 +55,6 @@ export const ValueInput = styled( NumberControl )`
58
55
  width: 100%;
59
56
 
60
57
  ${ arrowStyles };
61
- ${ paddingStyles };
62
58
  }
63
59
  }
64
60
  `;
@@ -96,15 +92,21 @@ export const UnitSelect = styled.select< SelectProps >`
96
92
  cursor: pointer;
97
93
  border: 1px solid transparent;
98
94
  height: 100%;
95
+ /* Removing margin ensures focus styles neatly overlay the wrapper. */
96
+ margin: 0;
97
+ transition: box-shadow 0.1s linear, border 0.1s linear;
99
98
 
100
99
  &:hover {
101
100
  background-color: ${ COLORS.lightGray[ 300 ] };
102
101
  }
103
102
 
104
103
  &:focus {
105
- border-color: ${ COLORS.ui.borderFocus };
106
- outline: 2px solid transparent;
104
+ border: 1px solid ${ COLORS.ui.borderFocus };
105
+ box-shadow: inset 0 0 0 ${ CONFIG.borderWidth }
106
+ ${ COLORS.ui.borderFocus };
107
107
  outline-offset: 0;
108
+ outline: 2px solid transparent;
109
+ z-index: 1;
108
110
  }
109
111
 
110
112
  &:disabled {
@@ -7,11 +7,11 @@ Snapshot Diff:
7
7
 
8
8
  @@ -1,10 +1,10 @@
9
9
  <div
10
- class="components-unit-control-wrapper css-aa2xc3-Root e1bagdl33"
10
+ class="components-unit-control-wrapper css-zi0c81-Root e1bagdl33"
11
11
  >
12
12
  <div
13
- - class="components-flex components-input-control components-number-control components-unit-control e1bagdl32 ep48uk90 em5sgkm7 css-18wzek1-View-Flex-sx-Base-sx-Items-ItemsColumn-Root-rootLabelPositionStyles-Input-ValueInput-arrowStyles-paddingStyles em57xhy0"
14
- + class="components-flex components-input-control components-number-control components-unit-control hello e1bagdl32 ep48uk90 em5sgkm7 css-18wzek1-View-Flex-sx-Base-sx-Items-ItemsColumn-Root-rootLabelPositionStyles-Input-ValueInput-arrowStyles-paddingStyles em57xhy0"
13
+ - class="components-flex components-input-control components-number-control components-unit-control e1bagdl32 ep48uk90 em5sgkm7 css-1njfmeu-View-Flex-sx-Base-sx-Items-ItemsColumn-Root-rootLabelPositionStyles-Input-ValueInput-arrowStyles em57xhy0"
14
+ + class="components-flex components-input-control components-number-control components-unit-control hello e1bagdl32 ep48uk90 em5sgkm7 css-1njfmeu-View-Flex-sx-Base-sx-Items-ItemsColumn-Root-rootLabelPositionStyles-Input-ValueInput-arrowStyles em57xhy0"
15
15
  data-wp-c16t="true"
16
16
  data-wp-component="Flex"
17
17
  >
@@ -22,7 +22,7 @@ Snapshot Diff:
22
22
  >
23
23
  <input
24
24
  autocomplete="off"
25
- class="components-input-control__input css-gzm6eu-Input-dragStyles-fontSizeStyles-sizeStyles em5sgkm5"
25
+ class="components-input-control__input css-1hsyo1w-Input-dragStyles-fontSizeStyles-sizeStyles-customPaddings em5sgkm5"
26
26
  - id="inspector-input-control-1"
27
27
  + id="inspector-input-control-2"
28
28
  inputmode="numeric"
@@ -76,7 +76,7 @@ export type UnitSelectControlProps = {
76
76
  export type UnitControlProps = Omit< UnitSelectControlProps, 'unit' > &
77
77
  Pick<
78
78
  InputControlProps,
79
- 'hideLabelFromVision' | '__next36pxDefaultSize'
79
+ 'hideLabelFromVision' | 'prefix' | '__next36pxDefaultSize'
80
80
  > & {
81
81
  __unstableStateReducer?: StateReducer;
82
82
  __unstableInputWidth?: CSSProperties[ 'width' ];