@wordpress/components 19.8.4 → 19.11.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 (630) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/CONTRIBUTING.md +80 -7
  3. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +11 -11
  4. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  5. package/build/border-box-control/border-box-control/component.js +22 -7
  6. package/build/border-box-control/border-box-control/component.js.map +1 -1
  7. package/build/border-box-control/border-box-control-linked-button/hook.js +3 -2
  8. package/build/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  9. package/build/border-box-control/border-box-control-split-controls/component.js +21 -8
  10. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  11. package/build/border-box-control/border-box-control-visualizer/hook.js +3 -2
  12. package/build/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  13. package/build/border-box-control/styles.js +11 -15
  14. package/build/border-box-control/styles.js.map +1 -1
  15. package/build/border-control/border-control/component.js +5 -3
  16. package/build/border-control/border-control/component.js.map +1 -1
  17. package/build/border-control/border-control/hook.js +6 -3
  18. package/build/border-control/border-control/hook.js.map +1 -1
  19. package/build/border-control/border-control-dropdown/component.js +6 -2
  20. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  21. package/build/border-control/border-control-dropdown/hook.js +5 -5
  22. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  23. package/build/border-control/styles.js +58 -29
  24. package/build/border-control/styles.js.map +1 -1
  25. package/build/box-control/index.js +0 -21
  26. package/build/box-control/index.js.map +1 -1
  27. package/build/box-control/utils.js +1 -8
  28. package/build/box-control/utils.js.map +1 -1
  29. package/build/button/index.js +3 -5
  30. package/build/button/index.js.map +1 -1
  31. package/build/button/index.native.js +16 -2
  32. package/build/button/index.native.js.map +1 -1
  33. package/build/button-group/index.js +24 -7
  34. package/build/button-group/index.js.map +1 -1
  35. package/build/{flyout → button-group}/types.js +0 -0
  36. package/build/button-group/types.js.map +1 -0
  37. package/build/checkbox-control/index.js +34 -7
  38. package/build/checkbox-control/index.js.map +1 -1
  39. package/build/checkbox-control/types.js +6 -0
  40. package/build/checkbox-control/types.js.map +1 -0
  41. package/build/circular-option-picker/index.js +1 -2
  42. package/build/circular-option-picker/index.js.map +1 -1
  43. package/build/color-palette/index.js +5 -12
  44. package/build/color-palette/index.js.map +1 -1
  45. package/build/date-time/date.js +43 -19
  46. package/build/date-time/date.js.map +1 -1
  47. package/build/date-time/index.js +28 -3
  48. package/build/date-time/index.js.map +1 -1
  49. package/build/date-time/time.js +42 -40
  50. package/build/date-time/time.js.map +1 -1
  51. package/build/date-time/timezone.js +4 -3
  52. package/build/date-time/timezone.js.map +1 -1
  53. package/build/date-time/types.js +6 -0
  54. package/build/date-time/types.js.map +1 -0
  55. package/build/date-time/utils.js +6 -4
  56. package/build/date-time/utils.js.map +1 -1
  57. package/build/disabled/index.js +4 -76
  58. package/build/disabled/index.js.map +1 -1
  59. package/build/draggable/index.native.js +223 -0
  60. package/build/draggable/index.native.js.map +1 -0
  61. package/build/dropdown/index.js +7 -5
  62. package/build/dropdown/index.js.map +1 -1
  63. package/build/focal-point-picker/index.native.js +3 -3
  64. package/build/focal-point-picker/index.native.js.map +1 -1
  65. package/build/heading/hook.js +1 -1
  66. package/build/heading/hook.js.map +1 -1
  67. package/build/index.js +0 -8
  68. package/build/index.js.map +1 -1
  69. package/build/index.native.js +16 -0
  70. package/build/index.native.js.map +1 -1
  71. package/build/input-control/index.js +27 -4
  72. package/build/input-control/index.js.map +1 -1
  73. package/build/input-control/styles/input-control-styles.js +42 -30
  74. package/build/input-control/styles/input-control-styles.js.map +1 -1
  75. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  76. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  77. package/build/mobile/bottom-sheet/index.native.js +1 -1
  78. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  79. package/build/mobile/bottom-sheet-select-control/index.native.js +4 -2
  80. package/build/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  81. package/build/mobile/html-text-input/index.native.js +19 -8
  82. package/build/mobile/html-text-input/index.native.js.map +1 -1
  83. package/build/mobile/keyboard-aware-flat-list/index.android.js +28 -5
  84. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  85. package/build/mobile/keyboard-aware-flat-list/index.ios.js +47 -24
  86. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  87. package/build/navigation/styles/navigation-styles.js +12 -12
  88. package/build/navigation/styles/navigation-styles.js.map +1 -1
  89. package/build/notice/index.native.js +44 -40
  90. package/build/notice/index.native.js.map +1 -1
  91. package/build/notice/list.native.js +27 -45
  92. package/build/notice/list.native.js.map +1 -1
  93. package/build/palette-edit/index.js +38 -7
  94. package/build/palette-edit/index.js.map +1 -1
  95. package/build/popover/index.js +223 -323
  96. package/build/popover/index.js.map +1 -1
  97. package/build/resizable-box/resize-tooltip/utils.js +5 -8
  98. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  99. package/build/sandbox/index.js +2 -2
  100. package/build/sandbox/index.js.map +1 -1
  101. package/build/sandbox/index.native.js +1 -1
  102. package/build/sandbox/index.native.js.map +1 -1
  103. package/build/select-control/index.js +31 -4
  104. package/build/select-control/index.js.map +1 -1
  105. package/build/select-control/styles/select-control-styles.js +17 -14
  106. package/build/select-control/styles/select-control-styles.js.map +1 -1
  107. package/build/surface/styles.js +8 -8
  108. package/build/surface/styles.js.map +1 -1
  109. package/build/text/hook.js +5 -5
  110. package/build/text/hook.js.map +1 -1
  111. package/build/text/styles/text-mixins.native.js +1 -1
  112. package/build/text/styles/text-mixins.native.js.map +1 -1
  113. package/build/text/styles.js +7 -7
  114. package/build/text/styles.js.map +1 -1
  115. package/build/text-control/index.js +35 -28
  116. package/build/text-control/index.js.map +1 -1
  117. package/build/text-control/types.js +6 -0
  118. package/build/text-control/types.js.map +1 -0
  119. package/build/toggle-group-control/toggle-group-control/component.js +1 -3
  120. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  121. package/build/toggle-group-control/toggle-group-control-option-icon/component.js +6 -4
  122. package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  123. package/build/tools-panel/tools-panel-header/component.js +52 -36
  124. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  125. package/build/tooltip/index.js +2 -2
  126. package/build/tooltip/index.js.map +1 -1
  127. package/build/ui/spinner/component.js +1 -1
  128. package/build/ui/spinner/component.js.map +1 -1
  129. package/build/unit-control/index.js +3 -3
  130. package/build/unit-control/index.js.map +1 -1
  131. package/build/unit-control/styles/unit-control-styles.js +11 -20
  132. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  133. package/build/unit-control/utils.js.map +1 -1
  134. package/build/utils/colors-values.js +9 -24
  135. package/build/utils/colors-values.js.map +1 -1
  136. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +11 -11
  137. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  138. package/build-module/border-box-control/border-box-control/component.js +22 -7
  139. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  140. package/build-module/border-box-control/border-box-control-linked-button/hook.js +3 -2
  141. package/build-module/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  142. package/build-module/border-box-control/border-box-control-split-controls/component.js +21 -8
  143. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  144. package/build-module/border-box-control/border-box-control-visualizer/hook.js +3 -2
  145. package/build-module/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  146. package/build-module/border-box-control/styles.js +9 -15
  147. package/build-module/border-box-control/styles.js.map +1 -1
  148. package/build-module/border-control/border-control/component.js +5 -3
  149. package/build-module/border-control/border-control/component.js.map +1 -1
  150. package/build-module/border-control/border-control/hook.js +6 -3
  151. package/build-module/border-control/border-control/hook.js.map +1 -1
  152. package/build-module/border-control/border-control-dropdown/component.js +6 -2
  153. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  154. package/build-module/border-control/border-control-dropdown/hook.js +5 -5
  155. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  156. package/build-module/border-control/styles.js +56 -29
  157. package/build-module/border-control/styles.js.map +1 -1
  158. package/build-module/box-control/index.js +1 -20
  159. package/build-module/box-control/index.js.map +1 -1
  160. package/build-module/box-control/utils.js +0 -6
  161. package/build-module/box-control/utils.js.map +1 -1
  162. package/build-module/button/index.js +3 -4
  163. package/build-module/button/index.js.map +1 -1
  164. package/build-module/button/index.native.js +16 -3
  165. package/build-module/button/index.native.js.map +1 -1
  166. package/build-module/button-group/index.js +27 -7
  167. package/build-module/button-group/index.js.map +1 -1
  168. package/build-module/{flyout → button-group}/types.js +0 -0
  169. package/build-module/{flyout → button-group}/types.js.map +0 -0
  170. package/build-module/checkbox-control/index.js +31 -7
  171. package/build-module/checkbox-control/index.js.map +1 -1
  172. package/build-module/checkbox-control/types.js +2 -0
  173. package/{build/flyout → build-module/checkbox-control}/types.js.map +0 -0
  174. package/build-module/circular-option-picker/index.js +1 -2
  175. package/build-module/circular-option-picker/index.js.map +1 -1
  176. package/build-module/color-palette/index.js +5 -11
  177. package/build-module/color-palette/index.js.map +1 -1
  178. package/build-module/date-time/date.js +44 -19
  179. package/build-module/date-time/date.js.map +1 -1
  180. package/build-module/date-time/index.js +28 -4
  181. package/build-module/date-time/index.js.map +1 -1
  182. package/build-module/date-time/time.js +43 -41
  183. package/build-module/date-time/time.js.map +1 -1
  184. package/build-module/date-time/timezone.js +4 -3
  185. package/build-module/date-time/timezone.js.map +1 -1
  186. package/build-module/date-time/types.js +2 -0
  187. package/build-module/date-time/types.js.map +1 -0
  188. package/build-module/date-time/utils.js +6 -4
  189. package/build-module/date-time/utils.js.map +1 -1
  190. package/build-module/disabled/index.js +5 -76
  191. package/build-module/disabled/index.js.map +1 -1
  192. package/build-module/draggable/index.native.js +206 -0
  193. package/build-module/draggable/index.native.js.map +1 -0
  194. package/build-module/dropdown/index.js +7 -5
  195. package/build-module/dropdown/index.js.map +1 -1
  196. package/build-module/focal-point-picker/index.native.js +3 -3
  197. package/build-module/focal-point-picker/index.native.js.map +1 -1
  198. package/build-module/heading/hook.js +1 -1
  199. package/build-module/heading/hook.js.map +1 -1
  200. package/build-module/index.js +0 -1
  201. package/build-module/index.js.map +1 -1
  202. package/build-module/index.native.js +2 -1
  203. package/build-module/index.native.js.map +1 -1
  204. package/build-module/input-control/index.js +24 -3
  205. package/build-module/input-control/index.js.map +1 -1
  206. package/build-module/input-control/styles/input-control-styles.js +42 -30
  207. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  208. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  209. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  210. package/build-module/mobile/bottom-sheet/index.native.js +1 -1
  211. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  212. package/build-module/mobile/bottom-sheet-select-control/index.native.js +4 -2
  213. package/build-module/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  214. package/build-module/mobile/html-text-input/index.native.js +20 -9
  215. package/build-module/mobile/html-text-input/index.native.js.map +1 -1
  216. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +21 -5
  217. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  218. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +42 -25
  219. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  220. package/build-module/navigation/styles/navigation-styles.js +13 -13
  221. package/build-module/navigation/styles/navigation-styles.js.map +1 -1
  222. package/build-module/notice/index.native.js +45 -41
  223. package/build-module/notice/index.native.js.map +1 -1
  224. package/build-module/notice/list.native.js +28 -46
  225. package/build-module/notice/list.native.js.map +1 -1
  226. package/build-module/palette-edit/index.js +37 -7
  227. package/build-module/palette-edit/index.js.map +1 -1
  228. package/build-module/popover/index.js +225 -325
  229. package/build-module/popover/index.js.map +1 -1
  230. package/build-module/resizable-box/resize-tooltip/utils.js +4 -5
  231. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  232. package/build-module/sandbox/index.js +2 -2
  233. package/build-module/sandbox/index.js.map +1 -1
  234. package/build-module/sandbox/index.native.js +1 -1
  235. package/build-module/sandbox/index.native.js.map +1 -1
  236. package/build-module/select-control/index.js +29 -3
  237. package/build-module/select-control/index.js.map +1 -1
  238. package/build-module/select-control/styles/select-control-styles.js +17 -14
  239. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  240. package/build-module/surface/styles.js +8 -8
  241. package/build-module/surface/styles.js.map +1 -1
  242. package/build-module/text/hook.js +5 -5
  243. package/build-module/text/hook.js.map +1 -1
  244. package/build-module/text/styles/text-mixins.native.js +2 -2
  245. package/build-module/text/styles/text-mixins.native.js.map +1 -1
  246. package/build-module/text/styles.js +7 -7
  247. package/build-module/text/styles.js.map +1 -1
  248. package/build-module/text-control/index.js +35 -27
  249. package/build-module/text-control/index.js.map +1 -1
  250. package/build-module/text-control/types.js +2 -0
  251. package/build-module/text-control/types.js.map +1 -0
  252. package/build-module/toggle-group-control/toggle-group-control/component.js +2 -3
  253. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  254. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +1 -5
  255. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  256. package/build-module/tools-panel/tools-panel-header/component.js +51 -36
  257. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  258. package/build-module/tooltip/index.js +2 -2
  259. package/build-module/tooltip/index.js.map +1 -1
  260. package/build-module/ui/spinner/component.js +1 -1
  261. package/build-module/ui/spinner/component.js.map +1 -1
  262. package/build-module/unit-control/index.js +3 -3
  263. package/build-module/unit-control/index.js.map +1 -1
  264. package/build-module/unit-control/styles/unit-control-styles.js +11 -20
  265. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  266. package/build-module/unit-control/utils.js.map +1 -1
  267. package/build-module/utils/colors-values.js +19 -23
  268. package/build-module/utils/colors-values.js.map +1 -1
  269. package/build-style/style-rtl.css +55 -170
  270. package/build-style/style.css +51 -170
  271. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  272. package/build-types/border-box-control/border-box-control/hook.d.ts +3 -1
  273. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  274. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
  275. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  276. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +3 -1
  277. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  278. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
  279. package/build-types/border-box-control/styles.d.ts +2 -2
  280. package/build-types/border-box-control/styles.d.ts.map +1 -1
  281. package/build-types/border-box-control/types.d.ts +40 -13
  282. package/build-types/border-box-control/types.d.ts.map +1 -1
  283. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  284. package/build-types/border-control/border-control/hook.d.ts +2 -1
  285. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  286. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  287. package/build-types/border-control/border-control-dropdown/hook.d.ts +1 -0
  288. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  289. package/build-types/border-control/styles.d.ts +2 -1
  290. package/build-types/border-control/styles.d.ts.map +1 -1
  291. package/build-types/border-control/types.d.ts +18 -6
  292. package/build-types/border-control/types.d.ts.map +1 -1
  293. package/build-types/button/index.d.ts.map +1 -1
  294. package/build-types/button-group/index.d.ts +25 -0
  295. package/build-types/button-group/index.d.ts.map +1 -0
  296. package/build-types/button-group/stories/index.d.ts +12 -0
  297. package/build-types/button-group/stories/index.d.ts.map +1 -0
  298. package/build-types/button-group/types.d.ts +11 -0
  299. package/build-types/button-group/types.d.ts.map +1 -0
  300. package/build-types/checkbox-control/index.d.ts +26 -0
  301. package/build-types/checkbox-control/index.d.ts.map +1 -0
  302. package/build-types/checkbox-control/stories/index.d.ts +13 -0
  303. package/build-types/checkbox-control/stories/index.d.ts.map +1 -0
  304. package/build-types/checkbox-control/types.d.ts +35 -0
  305. package/build-types/checkbox-control/types.d.ts.map +1 -0
  306. package/build-types/circular-option-picker/index.d.ts.map +1 -1
  307. package/build-types/color-palette/index.d.ts.map +1 -1
  308. package/build-types/color-picker/styles.d.ts +3 -3
  309. package/build-types/date-time/date.d.ts +24 -0
  310. package/build-types/date-time/date.d.ts.map +1 -0
  311. package/build-types/date-time/index.d.ts +35 -0
  312. package/build-types/date-time/index.d.ts.map +1 -0
  313. package/build-types/date-time/stories/date.d.ts +14 -0
  314. package/build-types/date-time/stories/date.d.ts.map +1 -0
  315. package/build-types/date-time/stories/index.d.ts +14 -0
  316. package/build-types/date-time/stories/index.d.ts.map +1 -0
  317. package/build-types/date-time/stories/time.d.ts +12 -0
  318. package/build-types/date-time/stories/time.d.ts.map +1 -0
  319. package/build-types/date-time/stories/utils.d.ts +3 -0
  320. package/build-types/date-time/stories/utils.d.ts.map +1 -0
  321. package/build-types/date-time/test/date.d.ts +2 -0
  322. package/build-types/date-time/test/date.d.ts.map +1 -0
  323. package/build-types/date-time/test/time.d.ts +2 -0
  324. package/build-types/date-time/test/time.d.ts.map +1 -0
  325. package/build-types/date-time/test/utils.d.ts +2 -0
  326. package/build-types/date-time/test/utils.d.ts.map +1 -0
  327. package/build-types/date-time/time.d.ts +25 -0
  328. package/build-types/date-time/time.d.ts.map +1 -0
  329. package/build-types/date-time/timezone.d.ts +8 -0
  330. package/build-types/date-time/timezone.d.ts.map +1 -0
  331. package/build-types/date-time/types.d.ts +91 -0
  332. package/build-types/date-time/types.d.ts.map +1 -0
  333. package/build-types/date-time/utils.d.ts +15 -0
  334. package/build-types/date-time/utils.d.ts.map +1 -0
  335. package/build-types/disabled/index.d.ts.map +1 -1
  336. package/build-types/dropdown/index.d.ts.map +1 -1
  337. package/build-types/input-control/index.d.ts +23 -3
  338. package/build-types/input-control/index.d.ts.map +1 -1
  339. package/build-types/input-control/input-field.d.ts +1 -1
  340. package/build-types/input-control/input-field.d.ts.map +1 -1
  341. package/build-types/input-control/stories/index.d.ts +5 -5
  342. package/build-types/input-control/stories/index.d.ts.map +1 -1
  343. package/build-types/input-control/styles/input-control-styles.d.ts +1 -0
  344. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  345. package/build-types/input-control/types.d.ts +79 -3
  346. package/build-types/input-control/types.d.ts.map +1 -1
  347. package/build-types/number-control/styles/number-control-styles.d.ts +1 -1
  348. package/build-types/popover/index.d.ts +5 -8
  349. package/build-types/popover/index.d.ts.map +1 -1
  350. package/build-types/resizable-box/index.d.ts +1 -1
  351. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  352. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  353. package/build-types/select-control/index.d.ts +30 -26
  354. package/build-types/select-control/index.d.ts.map +1 -1
  355. package/build-types/select-control/stories/index.d.ts +23 -0
  356. package/build-types/select-control/stories/index.d.ts.map +1 -0
  357. package/build-types/select-control/styles/select-control-styles.d.ts +3 -4
  358. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  359. package/build-types/select-control/test/select-control.d.ts +2 -0
  360. package/build-types/select-control/test/select-control.d.ts.map +1 -0
  361. package/build-types/select-control/types.d.ts +52 -1
  362. package/build-types/select-control/types.d.ts.map +1 -1
  363. package/build-types/text-control/index.d.ts +2 -2
  364. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  365. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts.map +1 -1
  366. package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
  367. package/build-types/tools-panel/types.d.ts +0 -1
  368. package/build-types/tools-panel/types.d.ts.map +1 -1
  369. package/build-types/tooltip/index.d.ts.map +1 -1
  370. package/build-types/unit-control/index.d.ts +2 -2
  371. package/build-types/unit-control/index.d.ts.map +1 -1
  372. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  373. package/build-types/unit-control/test/index.d.ts +2 -0
  374. package/build-types/unit-control/test/index.d.ts.map +1 -0
  375. package/build-types/unit-control/test/utils.d.ts +2 -0
  376. package/build-types/unit-control/test/utils.d.ts.map +1 -0
  377. package/build-types/unit-control/types.d.ts +1 -1
  378. package/build-types/unit-control/types.d.ts.map +1 -1
  379. package/build-types/unit-control/utils.d.ts +3 -3
  380. package/build-types/unit-control/utils.d.ts.map +1 -1
  381. package/build-types/utils/colors-values.d.ts +6 -146
  382. package/build-types/utils/colors-values.d.ts.map +1 -1
  383. package/package.json +19 -19
  384. package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.js +5 -3
  385. package/src/autocomplete/style.scss +1 -1
  386. package/src/border-box-control/border-box-control/README.md +10 -14
  387. package/src/border-box-control/border-box-control/component.tsx +21 -4
  388. package/src/border-box-control/border-box-control-linked-button/hook.ts +10 -6
  389. package/src/border-box-control/border-box-control-split-controls/component.tsx +24 -7
  390. package/src/border-box-control/border-box-control-visualizer/hook.ts +11 -6
  391. package/src/border-box-control/stories/index.js +1 -0
  392. package/src/border-box-control/styles.ts +15 -8
  393. package/src/border-box-control/types.ts +40 -14
  394. package/src/border-control/border-control/README.md +0 -7
  395. package/src/border-control/border-control/component.tsx +4 -2
  396. package/src/border-control/border-control/hook.ts +5 -2
  397. package/src/border-control/border-control-dropdown/component.tsx +18 -11
  398. package/src/border-control/border-control-dropdown/hook.ts +7 -5
  399. package/src/border-control/stories/index.js +1 -0
  400. package/src/border-control/styles.ts +82 -22
  401. package/src/border-control/types.ts +18 -6
  402. package/src/box-control/README.md +0 -74
  403. package/src/box-control/index.js +0 -15
  404. package/src/box-control/stories/index.js +0 -29
  405. package/src/box-control/utils.js +0 -7
  406. package/src/button/index.js +2 -4
  407. package/src/button/index.native.js +33 -18
  408. package/src/button/test/index.js +16 -1
  409. package/src/button-group/index.tsx +47 -0
  410. package/src/button-group/stories/index.tsx +41 -0
  411. package/src/button-group/types.ts +11 -0
  412. package/src/checkbox-control/README.md +10 -8
  413. package/src/checkbox-control/{index.js → index.tsx} +49 -14
  414. package/src/checkbox-control/stories/{index.js → index.tsx} +49 -27
  415. package/src/checkbox-control/types.ts +36 -0
  416. package/src/circular-option-picker/index.js +1 -2
  417. package/src/circular-option-picker/style.scss +1 -0
  418. package/src/color-palette/README.md +0 -1
  419. package/src/color-palette/index.js +6 -13
  420. package/src/color-palette/style.scss +3 -18
  421. package/src/color-palette/test/__snapshots__/index.js.snap +2 -3
  422. package/src/confirm-dialog/stories/index.js +87 -99
  423. package/src/date-time/README.md +13 -10
  424. package/src/date-time/{date.js → date.tsx} +49 -20
  425. package/src/date-time/{index.js → index.tsx} +31 -5
  426. package/src/date-time/stories/date.tsx +73 -0
  427. package/src/date-time/stories/index.tsx +75 -0
  428. package/src/date-time/stories/time.tsx +51 -0
  429. package/src/date-time/stories/utils.ts +9 -0
  430. package/src/date-time/test/date.tsx +127 -0
  431. package/src/date-time/test/{time.js → time.tsx} +34 -19
  432. package/src/date-time/test/{utils.js → utils.ts} +1 -1
  433. package/src/date-time/{time.js → time.tsx} +57 -46
  434. package/src/date-time/{timezone.js → timezone.tsx} +4 -3
  435. package/src/date-time/types.ts +106 -0
  436. package/src/date-time/utils.ts +20 -0
  437. package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -4
  438. package/src/disabled/index.js +5 -90
  439. package/src/draggable/index.native.js +215 -0
  440. package/src/draggable/style.native.scss +3 -0
  441. package/src/dropdown/index.js +9 -4
  442. package/src/dropdown/style.scss +1 -1
  443. package/src/focal-point-picker/index.native.js +3 -3
  444. package/src/form-file-upload/test/index.js +20 -13
  445. package/src/heading/hook.ts +1 -1
  446. package/src/heading/test/__snapshots__/index.js.snap +3 -3
  447. package/src/index.js +0 -1
  448. package/src/index.native.js +1 -0
  449. package/src/input-control/README.md +3 -3
  450. package/src/input-control/index.tsx +23 -3
  451. package/src/input-control/stories/index.tsx +63 -0
  452. package/src/input-control/styles/input-control-styles.tsx +20 -7
  453. package/src/input-control/types.ts +79 -2
  454. package/src/item-group/stories/index.js +22 -18
  455. package/src/menu-item/style.scss +10 -0
  456. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  457. package/src/mobile/bottom-sheet/bottom-sheet-navigation/test/navigation-container.native.js +9 -2
  458. package/src/mobile/bottom-sheet/index.native.js +1 -1
  459. package/src/mobile/bottom-sheet-select-control/index.native.js +8 -2
  460. package/src/mobile/html-text-input/index.native.js +45 -29
  461. package/src/mobile/html-text-input/style.android.scss +2 -15
  462. package/src/mobile/html-text-input/style.ios.scss +2 -15
  463. package/src/mobile/html-text-input/{style-common.native.scss → style.scss} +16 -0
  464. package/src/mobile/keyboard-aware-flat-list/index.android.js +15 -5
  465. package/src/mobile/keyboard-aware-flat-list/index.ios.js +75 -46
  466. package/src/mobile/link-settings/test/link-settings-navigation.native.js +9 -1
  467. package/src/navigation/styles/navigation-styles.js +5 -5
  468. package/src/navigator/stories/index.js +16 -10
  469. package/src/notice/index.native.js +44 -54
  470. package/src/notice/list.native.js +27 -51
  471. package/src/notice/style.native.scss +1 -0
  472. package/src/palette-edit/index.js +37 -9
  473. package/src/palette-edit/style.scss +0 -7
  474. package/src/palette-edit/test/index.js +63 -0
  475. package/src/panel/README.md +1 -1
  476. package/src/placeholder/test/index.js +7 -0
  477. package/src/popover/README.md +7 -9
  478. package/src/popover/index.js +242 -417
  479. package/src/popover/style.scss +20 -190
  480. package/src/popover/test/__snapshots__/index.js.snap +6 -18
  481. package/src/query-controls/README.md +2 -2
  482. package/src/resizable-box/resize-tooltip/utils.ts +4 -5
  483. package/src/sandbox/index.js +2 -2
  484. package/src/sandbox/index.native.js +1 -1
  485. package/src/select-control/README.md +2 -2
  486. package/src/select-control/index.tsx +30 -29
  487. package/src/select-control/stories/index.tsx +90 -0
  488. package/src/select-control/styles/select-control-styles.ts +16 -12
  489. package/src/select-control/test/{select-control.js → select-control.tsx} +2 -2
  490. package/src/select-control/types.ts +66 -1
  491. package/src/surface/styles.js +1 -1
  492. package/src/tab-panel/style.scss +1 -1
  493. package/src/text/hook.js +1 -1
  494. package/src/text/styles/text-mixins.native.js +2 -2
  495. package/src/text/styles.js +1 -1
  496. package/src/text/test/__snapshots__/{index.js.snap → index.tsx.snap} +16 -0
  497. package/src/text/test/{index.js → index.tsx} +12 -6
  498. package/src/text-control/index.tsx +84 -0
  499. package/src/text-control/stories/index.tsx +66 -0
  500. package/src/text-control/types.ts +29 -0
  501. package/src/toggle-group-control/test/__snapshots__/index.js.snap +4 -10
  502. package/src/toggle-group-control/toggle-group-control/component.tsx +7 -3
  503. package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +1 -5
  504. package/src/toolbar-group/style.scss +20 -0
  505. package/src/tools-panel/test/__snapshots__/index.js.snap +2 -2
  506. package/src/tools-panel/test/index.js +71 -18
  507. package/src/tools-panel/tools-panel-header/component.tsx +75 -33
  508. package/src/tools-panel/types.ts +0 -1
  509. package/src/tooltip/index.js +8 -2
  510. package/src/tooltip/style.scss +2 -4
  511. package/src/tooltip/test/index.js +6 -0
  512. package/src/tooltip/test/index.native.js +1 -1
  513. package/src/ui/spinner/component.js +1 -1
  514. package/src/ui/spinner/test/__snapshots__/index.js.snap +3 -3
  515. package/src/unit-control/index.tsx +2 -5
  516. package/src/unit-control/styles/unit-control-styles.ts +3 -13
  517. package/src/unit-control/test/__snapshots__/index.tsx.snap +33 -0
  518. package/src/unit-control/test/{index.js → index.tsx} +295 -166
  519. package/src/unit-control/test/{utils.js → utils.ts} +38 -19
  520. package/src/unit-control/types.ts +4 -1
  521. package/src/unit-control/utils.ts +5 -3
  522. package/src/utils/colors-values.js +18 -22
  523. package/tsconfig.json +14 -3
  524. package/tsconfig.tsbuildinfo +1 -1
  525. package/build/box-control/visualizer.js +0 -165
  526. package/build/box-control/visualizer.js.map +0 -1
  527. package/build/flyout/context.js +0 -23
  528. package/build/flyout/context.js.map +0 -1
  529. package/build/flyout/flyout/component.js +0 -106
  530. package/build/flyout/flyout/component.js.map +0 -1
  531. package/build/flyout/flyout/hook.js +0 -53
  532. package/build/flyout/flyout/hook.js.map +0 -1
  533. package/build/flyout/flyout/index.js +0 -24
  534. package/build/flyout/flyout/index.js.map +0 -1
  535. package/build/flyout/flyout-content/component.js +0 -65
  536. package/build/flyout/flyout-content/component.js.map +0 -1
  537. package/build/flyout/flyout-content/index.js +0 -16
  538. package/build/flyout/flyout-content/index.js.map +0 -1
  539. package/build/flyout/index.js +0 -16
  540. package/build/flyout/index.js.map +0 -1
  541. package/build/flyout/styles.js +0 -46
  542. package/build/flyout/styles.js.map +0 -1
  543. package/build/flyout/utils.js +0 -36
  544. package/build/flyout/utils.js.map +0 -1
  545. package/build/mobile/html-text-input/container.android.js +0 -41
  546. package/build/mobile/html-text-input/container.android.js.map +0 -1
  547. package/build/mobile/html-text-input/container.ios.js +0 -60
  548. package/build/mobile/html-text-input/container.ios.js.map +0 -1
  549. package/build/popover/utils.js +0 -322
  550. package/build/popover/utils.js.map +0 -1
  551. package/build-module/box-control/visualizer.js +0 -154
  552. package/build-module/box-control/visualizer.js.map +0 -1
  553. package/build-module/flyout/context.js +0 -11
  554. package/build-module/flyout/context.js.map +0 -1
  555. package/build-module/flyout/flyout/component.js +0 -89
  556. package/build-module/flyout/flyout/component.js.map +0 -1
  557. package/build-module/flyout/flyout/hook.js +0 -44
  558. package/build-module/flyout/flyout/hook.js.map +0 -1
  559. package/build-module/flyout/flyout/index.js +0 -3
  560. package/build-module/flyout/flyout/index.js.map +0 -1
  561. package/build-module/flyout/flyout-content/component.js +0 -51
  562. package/build-module/flyout/flyout-content/component.js.map +0 -1
  563. package/build-module/flyout/flyout-content/index.js +0 -2
  564. package/build-module/flyout/flyout-content/index.js.map +0 -1
  565. package/build-module/flyout/index.js +0 -2
  566. package/build-module/flyout/index.js.map +0 -1
  567. package/build-module/flyout/styles.js +0 -27
  568. package/build-module/flyout/styles.js.map +0 -1
  569. package/build-module/flyout/utils.js +0 -25
  570. package/build-module/flyout/utils.js.map +0 -1
  571. package/build-module/mobile/html-text-input/container.android.js +0 -29
  572. package/build-module/mobile/html-text-input/container.android.js.map +0 -1
  573. package/build-module/mobile/html-text-input/container.ios.js +0 -48
  574. package/build-module/mobile/html-text-input/container.ios.js.map +0 -1
  575. package/build-module/popover/utils.js +0 -308
  576. package/build-module/popover/utils.js.map +0 -1
  577. package/build-types/flyout/context.d.ts +0 -6
  578. package/build-types/flyout/context.d.ts.map +0 -1
  579. package/build-types/flyout/flyout/component.d.ts +0 -21
  580. package/build-types/flyout/flyout/component.d.ts.map +0 -1
  581. package/build-types/flyout/flyout/hook.d.ts +0 -270
  582. package/build-types/flyout/flyout/hook.d.ts.map +0 -1
  583. package/build-types/flyout/flyout/index.d.ts +0 -3
  584. package/build-types/flyout/flyout/index.d.ts.map +0 -1
  585. package/build-types/flyout/flyout-content/component.d.ts +0 -3
  586. package/build-types/flyout/flyout-content/component.d.ts.map +0 -1
  587. package/build-types/flyout/flyout-content/index.d.ts +0 -2
  588. package/build-types/flyout/flyout-content/index.d.ts.map +0 -1
  589. package/build-types/flyout/index.d.ts +0 -2
  590. package/build-types/flyout/index.d.ts.map +0 -1
  591. package/build-types/flyout/styles.d.ts +0 -22
  592. package/build-types/flyout/styles.d.ts.map +0 -1
  593. package/build-types/flyout/types.d.ts +0 -80
  594. package/build-types/flyout/types.d.ts.map +0 -1
  595. package/build-types/flyout/utils.d.ts +0 -8
  596. package/build-types/flyout/utils.d.ts.map +0 -1
  597. package/build-types/popover/utils.d.ts +0 -70
  598. package/build-types/popover/utils.d.ts.map +0 -1
  599. package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts +0 -19
  600. package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts.map +0 -1
  601. package/src/box-control/visualizer.js +0 -116
  602. package/src/button-group/index.js +0 -17
  603. package/src/button-group/stories/index.js +0 -21
  604. package/src/date-time/stories/date.js +0 -17
  605. package/src/date-time/stories/index.js +0 -72
  606. package/src/date-time/stories/time.js +0 -32
  607. package/src/date-time/test/date.js +0 -97
  608. package/src/date-time/utils.js +0 -18
  609. package/src/flyout/context.js +0 -10
  610. package/src/flyout/flyout/README.md +0 -98
  611. package/src/flyout/flyout/component.js +0 -111
  612. package/src/flyout/flyout/hook.js +0 -45
  613. package/src/flyout/flyout/index.js +0 -2
  614. package/src/flyout/flyout-content/component.js +0 -53
  615. package/src/flyout/flyout-content/index.js +0 -1
  616. package/src/flyout/index.js +0 -1
  617. package/src/flyout/stories/index.js +0 -24
  618. package/src/flyout/styles.ts +0 -41
  619. package/src/flyout/test/__snapshots__/index.js.snap +0 -186
  620. package/src/flyout/test/index.js +0 -103
  621. package/src/flyout/types.ts +0 -84
  622. package/src/flyout/utils.js +0 -23
  623. package/src/input-control/stories/index.js +0 -71
  624. package/src/mobile/html-text-input/container.android.js +0 -23
  625. package/src/mobile/html-text-input/container.ios.js +0 -50
  626. package/src/popover/test/utils.js +0 -304
  627. package/src/popover/utils.js +0 -396
  628. package/src/select-control/stories/index.js +0 -104
  629. package/src/text-control/index.js +0 -72
  630. package/src/text-control/stories/index.js +0 -46
@@ -21,7 +21,6 @@ import AxialInputControls from './axial-input-controls';
21
21
  import BoxControlIcon from './icon';
22
22
  import { Text } from '../text';
23
23
  import LinkedButton from './linked-button';
24
- import Visualizer from './visualizer';
25
24
  import {
26
25
  Root,
27
26
  Header,
@@ -30,7 +29,6 @@ import {
30
29
  import { parseQuantityAndUnitFromRawValue } from '../unit-control/utils';
31
30
  import {
32
31
  DEFAULT_VALUES,
33
- DEFAULT_VISUALIZER_VALUES,
34
32
  getInitialSide,
35
33
  isValuesMixed,
36
34
  isValuesDefined,
@@ -50,7 +48,6 @@ export default function BoxControl( {
50
48
  id: idProp,
51
49
  inputProps = defaultInputProps,
52
50
  onChange = noop,
53
- onChangeShowVisualizer = noop,
54
51
  label = __( 'Box Control' ),
55
52
  values: valuesProp,
56
53
  units,
@@ -103,14 +100,6 @@ export default function BoxControl( {
103
100
  setIsDirty( true );
104
101
  };
105
102
 
106
- const handleOnHoverOn = ( next = {} ) => {
107
- onChangeShowVisualizer( { ...DEFAULT_VISUALIZER_VALUES, ...next } );
108
- };
109
-
110
- const handleOnHoverOff = ( next = {} ) => {
111
- onChangeShowVisualizer( { ...DEFAULT_VISUALIZER_VALUES, ...next } );
112
- };
113
-
114
103
  const handleOnReset = () => {
115
104
  onChange( resetValues );
116
105
  setValues( resetValues );
@@ -122,8 +111,6 @@ export default function BoxControl( {
122
111
  ...inputProps,
123
112
  onChange: handleOnChange,
124
113
  onFocus: handleOnFocus,
125
- onHoverOn: handleOnHoverOn,
126
- onHoverOff: handleOnHoverOff,
127
114
  isLinked,
128
115
  units,
129
116
  selectedUnits,
@@ -189,5 +176,3 @@ export default function BoxControl( {
189
176
  </Root>
190
177
  );
191
178
  }
192
-
193
- BoxControl.__Visualizer = Visualizer;
@@ -11,7 +11,6 @@ import { useState } from '@wordpress/element';
11
11
  * Internal dependencies
12
12
  */
13
13
  import BoxControl from '../';
14
- import BoxControlVisualizer from '../visualizer';
15
14
  import { Flex, FlexBlock } from '../../flex';
16
15
 
17
16
  export default {
@@ -36,7 +35,6 @@ function DemoExample( {
36
35
  splitOnAxis = false,
37
36
  } ) {
38
37
  const [ values, setValues ] = useState( defaultValues );
39
- const [ showVisualizer, setShowVisualizer ] = useState( {} );
40
38
 
41
39
  return (
42
40
  <Container align="top" gap={ 8 }>
@@ -47,31 +45,14 @@ function DemoExample( {
47
45
  values={ values }
48
46
  sides={ sides }
49
47
  onChange={ setValues }
50
- onChangeShowVisualizer={ setShowVisualizer }
51
48
  splitOnAxis={ splitOnAxis }
52
49
  />
53
50
  </Content>
54
51
  </FlexBlock>
55
- <FlexBlock>
56
- <Content>
57
- <BoxContainer>
58
- <BoxControlVisualizer
59
- showValues={ showVisualizer }
60
- values={ values }
61
- >
62
- <Box />
63
- </BoxControlVisualizer>
64
- </BoxContainer>
65
- </Content>
66
- </FlexBlock>
67
52
  </Container>
68
53
  );
69
54
  }
70
55
 
71
- export const visualizer = () => {
72
- return <DemoExample />;
73
- };
74
-
75
56
  export const arbitrarySides = () => {
76
57
  return (
77
58
  <DemoExample
@@ -108,16 +89,6 @@ const Container = styled( Flex )`
108
89
  max-width: 780px;
109
90
  `;
110
91
 
111
- const BoxContainer = styled.div`
112
- width: 300px;
113
- height: 300px;
114
- `;
115
-
116
- const Box = styled.div`
117
- background: #ddd;
118
- height: 300px;
119
- `;
120
-
121
92
  const Content = styled.div`
122
93
  padding: 20px;
123
94
  `;
@@ -31,13 +31,6 @@ export const DEFAULT_VALUES = {
31
31
  left: undefined,
32
32
  };
33
33
 
34
- export const DEFAULT_VISUALIZER_VALUES = {
35
- top: false,
36
- right: false,
37
- bottom: false,
38
- left: false,
39
- };
40
-
41
34
  export const ALL_SIDES = [ 'top', 'right', 'bottom', 'left' ];
42
35
 
43
36
  /**
@@ -3,7 +3,6 @@
3
3
  * External dependencies
4
4
  */
5
5
  import classnames from 'classnames';
6
- import { isArray } from 'lodash';
7
6
 
8
7
  /**
9
8
  * WordPress dependencies
@@ -140,8 +139,7 @@ export function Button( props, ref ) {
140
139
  // There's a label and...
141
140
  ( !! label &&
142
141
  // The children are empty and...
143
- ( ! children ||
144
- ( isArray( children ) && ! children.length ) ) &&
142
+ ! children?.length &&
145
143
  // The tooltip is not explicitly disabled.
146
144
  false !== showTooltip ) );
147
145
 
@@ -186,7 +184,7 @@ export function Button( props, ref ) {
186
184
  return (
187
185
  <>
188
186
  <Tooltip
189
- text={ describedBy ? describedBy : label }
187
+ text={ children?.length && describedBy ? describedBy : label }
190
188
  shortcut={ shortcut }
191
189
  position={ tooltipPosition }
192
190
  >
@@ -9,11 +9,12 @@ import {
9
9
  Platform,
10
10
  } from 'react-native';
11
11
  import { isArray } from 'lodash';
12
+ import { LongPressGestureHandler, State } from 'react-native-gesture-handler';
12
13
 
13
14
  /**
14
15
  * WordPress dependencies
15
16
  */
16
- import { Children, cloneElement } from '@wordpress/element';
17
+ import { Children, cloneElement, useCallback } from '@wordpress/element';
17
18
  import {
18
19
  usePreferredColorScheme,
19
20
  usePreferredColorSchemeStyle,
@@ -163,6 +164,15 @@ export function Button( props ) {
163
164
  } )
164
165
  : null;
165
166
 
167
+ const longPressHandler = useCallback(
168
+ ( { nativeEvent } ) => {
169
+ if ( nativeEvent.state === State.ACTIVE && onLongPress ) {
170
+ onLongPress();
171
+ }
172
+ },
173
+ [ onLongPress ]
174
+ );
175
+
166
176
  const element = (
167
177
  <TouchableOpacity
168
178
  activeOpacity={ 0.7 }
@@ -172,28 +182,33 @@ export function Button( props ) {
172
182
  accessibilityRole={ 'button' }
173
183
  accessibilityHint={ hint }
174
184
  onPress={ onClick }
175
- onLongPress={ onLongPress }
176
185
  style={ containerStyle }
177
186
  disabled={ isDisabled }
178
187
  testID={ testID }
179
188
  >
180
- <View style={ buttonViewStyle }>
181
- <View style={ { flexDirection: 'row' } }>
182
- { newIcon }
183
- { newChildren }
184
- { subscript && (
185
- <Text
186
- style={
187
- isPressed
188
- ? styles.subscriptActive
189
- : subscriptInactive
190
- }
191
- >
192
- { subscript }
193
- </Text>
194
- ) }
189
+ <LongPressGestureHandler
190
+ minDurationMs={ 500 }
191
+ maxDist={ 150 }
192
+ onHandlerStateChange={ longPressHandler }
193
+ >
194
+ <View style={ buttonViewStyle }>
195
+ <View style={ { flexDirection: 'row' } }>
196
+ { newIcon }
197
+ { newChildren }
198
+ { subscript && (
199
+ <Text
200
+ style={
201
+ isPressed
202
+ ? styles.subscriptActive
203
+ : subscriptInactive
204
+ }
205
+ >
206
+ { subscript }
207
+ </Text>
208
+ ) }
209
+ </View>
195
210
  </View>
196
- </View>
211
+ </LongPressGestureHandler>
197
212
  </TouchableOpacity>
198
213
  );
199
214
 
@@ -164,7 +164,7 @@ describe( 'Button', () => {
164
164
  expect( buttonDescription ).toBe( 'Description text' );
165
165
  } );
166
166
 
167
- it( 'should populate tooltip with describedBy content', () => {
167
+ it( 'should populate tooltip with label content for buttons without visible labels (no children)', () => {
168
168
  const buttonTooltip = shallow(
169
169
  <Button
170
170
  describedBy="Description text"
@@ -173,6 +173,21 @@ describe( 'Button', () => {
173
173
  />
174
174
  ).find( 'Tooltip' );
175
175
 
176
+ expect( buttonTooltip.prop( 'text' ) ).toBe( 'Label' );
177
+ } );
178
+
179
+ it( 'should populate tooltip with description content for buttons with visible labels (buttons with children)', () => {
180
+ const buttonTooltip = shallow(
181
+ <Button
182
+ label="Label"
183
+ describedBy="Description text"
184
+ icon={ plusCircle }
185
+ showTooltip
186
+ >
187
+ Children
188
+ </Button>
189
+ ).find( 'Tooltip' );
190
+
176
191
  expect( buttonTooltip.prop( 'text' ) ).toBe( 'Description text' );
177
192
  } );
178
193
 
@@ -0,0 +1,47 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+ import type { ForwardedRef } from 'react';
6
+
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ import { forwardRef } from '@wordpress/element';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import type { ButtonGroupProps } from './types';
16
+ import type { WordPressComponentProps } from '../ui/context';
17
+
18
+ function UnforwardedButtonGroup(
19
+ props: WordPressComponentProps< ButtonGroupProps, 'div', false >,
20
+ ref: ForwardedRef< HTMLDivElement >
21
+ ) {
22
+ const { className, ...restProps } = props;
23
+ const classes = classnames( 'components-button-group', className );
24
+
25
+ return (
26
+ <div ref={ ref } role="group" className={ classes } { ...restProps } />
27
+ );
28
+ }
29
+
30
+ /**
31
+ * ButtonGroup can be used to group any related buttons together. To emphasize
32
+ * related buttons, a group should share a common container.
33
+ *
34
+ * ```jsx
35
+ * import { Button, ButtonGroup } from '@wordpress/components';
36
+ *
37
+ * const MyButtonGroup = () => (
38
+ * <ButtonGroup>
39
+ * <Button variant="primary">Button 1</Button>
40
+ * <Button variant="primary">Button 2</Button>
41
+ * </ButtonGroup>
42
+ * );
43
+ * ```
44
+ */
45
+ export const ButtonGroup = forwardRef( UnforwardedButtonGroup );
46
+
47
+ export default ButtonGroup;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ComponentMeta, ComponentStory } from '@storybook/react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import ButtonGroup from '..';
10
+ import Button from '../../button';
11
+
12
+ const meta: ComponentMeta< typeof ButtonGroup > = {
13
+ title: 'Components/ButtonGroup',
14
+ component: ButtonGroup,
15
+ argTypes: {
16
+ children: { control: { type: null } },
17
+ },
18
+ parameters: {
19
+ controls: { expanded: true },
20
+ docs: { source: { state: 'open' } },
21
+ },
22
+ };
23
+ export default meta;
24
+
25
+ const Template: ComponentStory< typeof ButtonGroup > = ( args ) => {
26
+ const style = { margin: '0 4px' };
27
+ return (
28
+ <ButtonGroup { ...args }>
29
+ <Button variant="primary" style={ style }>
30
+ Button 1
31
+ </Button>
32
+ <Button variant="primary" style={ style }>
33
+ Button 2
34
+ </Button>
35
+ </ButtonGroup>
36
+ );
37
+ };
38
+
39
+ export const Default: ComponentStory< typeof ButtonGroup > = Template.bind(
40
+ {}
41
+ );
@@ -0,0 +1,11 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ReactNode } from 'react';
5
+
6
+ export type ButtonGroupProps = {
7
+ /**
8
+ * The children elements.
9
+ */
10
+ children: ReactNode;
11
+ };
@@ -77,37 +77,39 @@ const MyCheckboxControl = () => {
77
77
  The set of props accepted by the component will be specified below.
78
78
  Props not included in this set will be applied to the input element.
79
79
 
80
- #### label
80
+ #### `label`: `string`
81
81
 
82
82
  A label for the input field, that appears at the side of the checkbox.
83
83
  The prop will be rendered as content a label element.
84
84
  If no prop is passed an empty label is rendered.
85
85
 
86
- - Type: `String`
87
86
  - Required: No
88
87
 
89
- #### help
88
+ #### `help`: `string|WPElement`
90
89
 
91
90
  If this property is added, a help text will be generated using help property as the content.
92
91
 
93
- - Type: `String|WPElement`
94
92
  - Required: No
95
93
 
96
- #### checked
94
+ #### `checked`: `boolean`
97
95
 
98
96
  If checked is true the checkbox will be checked. If checked is false the checkbox will be unchecked.
99
97
  If no value is passed the checkbox will be unchecked.
100
98
 
101
- - Type: `Boolean`
102
99
  - Required: No
103
100
 
104
- #### onChange
101
+ #### `onChange`: `function`
105
102
 
106
103
  A function that receives the checked state (boolean) as input.
107
104
 
108
- - Type: `function`
109
105
  - Required: Yes
110
106
 
107
+ #### `indeterminate`: `boolean`
108
+
109
+ If indeterminate is true the state of the checkbox will be indeterminate.
110
+
111
+ - Required: No
112
+
111
113
  ## Related components
112
114
 
113
115
  - To select one option from a set, and you want to show all the available options at once, use the `RadioControl` component.
@@ -2,6 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
+ import type { ChangeEvent } from 'react';
5
6
 
6
7
  /**
7
8
  * WordPress dependencies
@@ -15,17 +16,48 @@ import { Icon, check, reset } from '@wordpress/icons';
15
16
  * Internal dependencies
16
17
  */
17
18
  import BaseControl from '../base-control';
19
+ import type { CheckboxControlProps } from './types';
20
+ import type { WordPressComponentProps } from '../ui/context';
21
+
22
+ /**
23
+ * Checkboxes allow the user to select one or more items from a set.
24
+ *
25
+ * ```jsx
26
+ * import { CheckboxControl } from '@wordpress/components';
27
+ * import { useState } from '@wordpress/element';
28
+ *
29
+ * const MyCheckboxControl = () => {
30
+ * const [ isChecked, setChecked ] = useState( true );
31
+ * return (
32
+ * <CheckboxControl
33
+ * label="Is author"
34
+ * help="Is the user a author or not?"
35
+ * checked={ isChecked }
36
+ * onChange={ setChecked }
37
+ * />
38
+ * );
39
+ * };
40
+ * ```
41
+ */
42
+ export function CheckboxControl(
43
+ // ref is omitted until we have `WordPressComponentPropsWithoutRef` or add
44
+ // ref forwarding to CheckboxControl.
45
+ props: Omit<
46
+ WordPressComponentProps< CheckboxControlProps, 'input', false >,
47
+ 'ref'
48
+ >
49
+ ) {
50
+ const {
51
+ label,
52
+ className,
53
+ heading,
54
+ checked,
55
+ indeterminate,
56
+ help,
57
+ onChange,
58
+ ...additionalProps
59
+ } = props;
18
60
 
19
- export default function CheckboxControl( {
20
- label,
21
- className,
22
- heading,
23
- checked,
24
- indeterminate,
25
- help,
26
- onChange,
27
- ...props
28
- } ) {
29
61
  if ( heading ) {
30
62
  deprecated( '`heading` prop in `CheckboxControl`', {
31
63
  alternative: 'a separate element to implement a heading',
@@ -38,9 +70,9 @@ export default function CheckboxControl( {
38
70
  false
39
71
  );
40
72
 
41
- // Run the following callback everytime the `ref` (and the additional
73
+ // Run the following callback every time the `ref` (and the additional
42
74
  // dependencies) change.
43
- const ref = useRefEffect(
75
+ const ref = useRefEffect< HTMLInputElement >(
44
76
  ( node ) => {
45
77
  if ( ! node ) {
46
78
  return;
@@ -56,7 +88,8 @@ export default function CheckboxControl( {
56
88
  );
57
89
  const instanceId = useInstanceId( CheckboxControl );
58
90
  const id = `inspector-checkbox-control-${ instanceId }`;
59
- const onChangeValue = ( event ) => onChange( event.target.checked );
91
+ const onChangeValue = ( event: ChangeEvent< HTMLInputElement > ) =>
92
+ onChange( event.target.checked );
60
93
 
61
94
  return (
62
95
  <BaseControl
@@ -75,7 +108,7 @@ export default function CheckboxControl( {
75
108
  onChange={ onChangeValue }
76
109
  checked={ checked }
77
110
  aria-describedby={ !! help ? id + '__help' : undefined }
78
- { ...props }
111
+ { ...additionalProps }
79
112
  />
80
113
  { showIndeterminateIcon ? (
81
114
  <Icon
@@ -101,3 +134,5 @@ export default function CheckboxControl( {
101
134
  </BaseControl>
102
135
  );
103
136
  }
137
+
138
+ export default CheckboxControl;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { text } from '@storybook/addon-knobs';
4
+ import type { ComponentMeta, ComponentStory } from '@storybook/react';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -11,42 +11,60 @@ import { useState } from '@wordpress/element';
11
11
  /**
12
12
  * Internal dependencies
13
13
  */
14
- import CheckboxControl from '../';
14
+ import CheckboxControl from '..';
15
15
 
16
- export default {
17
- title: 'Components/CheckboxControl',
16
+ const meta: ComponentMeta< typeof CheckboxControl > = {
18
17
  component: CheckboxControl,
18
+ title: 'Components/CheckboxControl',
19
+ argTypes: {
20
+ onChange: {
21
+ action: 'onChange',
22
+ },
23
+ checked: {
24
+ control: { type: null },
25
+ },
26
+ help: { control: { type: 'text' } },
27
+ },
19
28
  parameters: {
20
- knobs: { disable: false },
29
+ controls: {
30
+ expanded: true,
31
+ exclude: [ 'heading' ],
32
+ },
33
+ docs: { source: { state: 'open' } },
21
34
  },
22
35
  };
36
+ export default meta;
23
37
 
24
- const CheckboxControlWithState = ( { checked, ...props } ) => {
25
- const [ isChecked, setChecked ] = useState( checked );
38
+ const DefaultTemplate: ComponentStory< typeof CheckboxControl > = ( {
39
+ onChange,
40
+ ...args
41
+ } ) => {
42
+ const [ isChecked, setChecked ] = useState( true );
26
43
 
27
44
  return (
28
45
  <CheckboxControl
29
- { ...props }
46
+ { ...args }
30
47
  checked={ isChecked }
31
- onChange={ setChecked }
48
+ onChange={ ( v ) => {
49
+ setChecked( v );
50
+ onChange( v );
51
+ } }
32
52
  />
33
53
  );
34
54
  };
35
55
 
36
- export const _default = () => {
37
- const label = text( 'Label', 'Is author' );
38
-
39
- return <CheckboxControlWithState label={ label } checked />;
56
+ export const Default: ComponentStory<
57
+ typeof CheckboxControl
58
+ > = DefaultTemplate.bind( {} );
59
+ Default.args = {
60
+ label: 'Is author',
61
+ help: 'Is the user an author or not?',
40
62
  };
41
63
 
42
- export const all = () => {
43
- const label = text( 'Label', 'Is author' );
44
- const help = text( 'Help', 'Is the user an author or not?' );
45
-
46
- return <CheckboxControlWithState label={ label } help={ help } checked />;
47
- };
48
-
49
- export const Indeterminate = () => {
64
+ export const Indeterminate: ComponentStory< typeof CheckboxControl > = ( {
65
+ onChange,
66
+ ...args
67
+ } ) => {
50
68
  const [ fruits, setFruits ] = useState( { apple: false, orange: false } );
51
69
 
52
70
  const isAllChecked = Object.values( fruits ).every( Boolean );
@@ -56,15 +74,16 @@ export const Indeterminate = () => {
56
74
  return (
57
75
  <>
58
76
  <CheckboxControl
59
- label="Select All"
77
+ { ...args }
60
78
  checked={ isAllChecked }
61
79
  indeterminate={ isIndeterminate }
62
- onChange={ ( newValue ) =>
80
+ onChange={ ( v ) => {
63
81
  setFruits( {
64
- apple: newValue,
65
- orange: newValue,
66
- } )
67
- }
82
+ apple: v,
83
+ orange: v,
84
+ } );
85
+ onChange( v );
86
+ } }
68
87
  />
69
88
  <CheckboxControl
70
89
  label="Apple"
@@ -89,3 +108,6 @@ export const Indeterminate = () => {
89
108
  </>
90
109
  );
91
110
  };
111
+ Indeterminate.args = {
112
+ label: 'Select all',
113
+ };
@@ -0,0 +1,36 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ReactNode } from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import type { BaseControlProps } from '../base-control/types';
10
+
11
+ export type CheckboxControlProps = Pick< BaseControlProps, 'help' > & {
12
+ /**
13
+ * A function that receives the checked state (boolean) as input.
14
+ */
15
+ onChange: ( value: boolean ) => void;
16
+ /**
17
+ * A label for the input field, that appears at the side of the checkbox.
18
+ * The prop will be rendered as content a label element. If no prop is
19
+ * passed an empty label is rendered.
20
+ */
21
+ label?: string;
22
+ /**
23
+ * If checked is true the checkbox will be checked. If checked is false the
24
+ * checkbox will be unchecked. If no value is passed the checkbox will be
25
+ * unchecked.
26
+ */
27
+ checked?: boolean;
28
+ /**
29
+ * If indeterminate is true the state of the checkbox will be indeterminate.
30
+ */
31
+ indeterminate?: boolean;
32
+ /**
33
+ * @deprecated
34
+ */
35
+ heading?: ReactNode;
36
+ };
@@ -87,8 +87,7 @@ function ButtonAction( { className, children, ...additionalProps } ) {
87
87
  'components-circular-option-picker__clear',
88
88
  className
89
89
  ) }
90
- isSmall
91
- variant="secondary"
90
+ variant="tertiary"
92
91
  { ...additionalProps }
93
92
  >
94
93
  { children }