@wordpress/components 22.0.0 → 22.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/build/angle-picker-control/index.js +3 -1
  3. package/build/angle-picker-control/index.js.map +1 -1
  4. package/build/autocomplete/index.js +7 -3
  5. package/build/autocomplete/index.js.map +1 -1
  6. package/build/border-box-control/border-box-control/component.js +1 -1
  7. package/build/border-box-control/border-box-control/component.js.map +1 -1
  8. package/build/border-box-control/border-box-control/hook.js +13 -1
  9. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  10. package/build/border-box-control/border-box-control-split-controls/hook.js +11 -1
  11. package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  12. package/build/border-control/border-control/component.js +2 -2
  13. package/build/border-control/border-control/component.js.map +1 -1
  14. package/build/border-control/border-control/hook.js +11 -1
  15. package/build/border-control/border-control/hook.js.map +1 -1
  16. package/build/border-control/border-control-dropdown/component.js +1 -1
  17. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  18. package/build/border-control/border-control-dropdown/hook.js +10 -2
  19. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  20. package/build/color-palette/index.js +1 -1
  21. package/build/color-palette/index.js.map +1 -1
  22. package/build/color-picker/input-with-slider.js +17 -3
  23. package/build/color-picker/input-with-slider.js.map +1 -1
  24. package/build/custom-select-control/index.js +5 -2
  25. package/build/custom-select-control/index.js.map +1 -1
  26. package/build/dashicon/index.js +17 -2
  27. package/build/dashicon/index.js.map +1 -1
  28. package/build/draggable/index.js +58 -38
  29. package/build/draggable/index.js.map +1 -1
  30. package/build/draggable/types.js +6 -0
  31. package/build/draggable/types.js.map +1 -0
  32. package/build/flex/flex/hook.js +2 -3
  33. package/build/flex/flex/hook.js.map +1 -1
  34. package/build/focal-point-picker/focal-point.js +2 -12
  35. package/build/focal-point-picker/focal-point.js.map +1 -1
  36. package/build/focal-point-picker/styles/focal-point-style.js +11 -51
  37. package/build/focal-point-picker/styles/focal-point-style.js.map +1 -1
  38. package/build/font-size-picker/constants.js +41 -0
  39. package/build/font-size-picker/constants.js.map +1 -0
  40. package/build/font-size-picker/font-size-picker-select.js +97 -0
  41. package/build/font-size-picker/font-size-picker-select.js.map +1 -0
  42. package/build/font-size-picker/font-size-picker-toggle-group.js +50 -0
  43. package/build/font-size-picker/font-size-picker-toggle-group.js.map +1 -0
  44. package/build/font-size-picker/index.js +39 -76
  45. package/build/font-size-picker/index.js.map +1 -1
  46. package/build/font-size-picker/utils.js +17 -89
  47. package/build/font-size-picker/utils.js.map +1 -1
  48. package/build/form-token-field/index.js +9 -6
  49. package/build/form-token-field/index.js.map +1 -1
  50. package/build/higher-order/navigate-regions/index.js +3 -0
  51. package/build/higher-order/navigate-regions/index.js.map +1 -1
  52. package/build/icon/index.js +3 -2
  53. package/build/icon/index.js.map +1 -1
  54. package/build/index.js +8 -0
  55. package/build/index.js.map +1 -1
  56. package/build/menu-group/index.js +17 -3
  57. package/build/menu-group/index.js.map +1 -1
  58. package/build/menu-group/types.js +6 -0
  59. package/build/menu-group/types.js.map +1 -0
  60. package/build/navigator/navigator-screen/component.js +9 -5
  61. package/build/navigator/navigator-screen/component.js.map +1 -1
  62. package/build/palette-edit/index.js +3 -1
  63. package/build/palette-edit/index.js.map +1 -1
  64. package/build/popover/index.js +8 -4
  65. package/build/popover/index.js.map +1 -1
  66. package/build/range-control/styles/range-control-styles.js +47 -57
  67. package/build/range-control/styles/range-control-styles.js.map +1 -1
  68. package/build/spinner/styles.js +4 -4
  69. package/build/spinner/styles.js.map +1 -1
  70. package/build/tab-panel/index.js +3 -4
  71. package/build/tab-panel/index.js.map +1 -1
  72. package/build/toggle-group-control/toggle-group-control/component.js +1 -0
  73. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  74. package/build/toggle-group-control/toggle-group-control/styles.js +11 -6
  75. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  76. package/build/tools-panel/styles.js +14 -14
  77. package/build/tools-panel/styles.js.map +1 -1
  78. package/build/tools-panel/tools-panel-item/hook.js +9 -5
  79. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  80. package/build/utils/colors-values.js +3 -2
  81. package/build/utils/colors-values.js.map +1 -1
  82. package/build/utils/input/base.js +2 -2
  83. package/build/utils/input/base.js.map +1 -1
  84. package/build/view/index.js.map +1 -1
  85. package/build-module/angle-picker-control/index.js +2 -1
  86. package/build-module/angle-picker-control/index.js.map +1 -1
  87. package/build-module/autocomplete/index.js +7 -3
  88. package/build-module/autocomplete/index.js.map +1 -1
  89. package/build-module/border-box-control/border-box-control/component.js +1 -1
  90. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  91. package/build-module/border-box-control/border-box-control/hook.js +13 -1
  92. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  93. package/build-module/border-box-control/border-box-control-split-controls/hook.js +11 -1
  94. package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  95. package/build-module/border-control/border-control/component.js +2 -2
  96. package/build-module/border-control/border-control/component.js.map +1 -1
  97. package/build-module/border-control/border-control/hook.js +11 -1
  98. package/build-module/border-control/border-control/hook.js.map +1 -1
  99. package/build-module/border-control/border-control-dropdown/component.js +1 -1
  100. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  101. package/build-module/border-control/border-control-dropdown/hook.js +10 -2
  102. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  103. package/build-module/color-palette/index.js +1 -1
  104. package/build-module/color-palette/index.js.map +1 -1
  105. package/build-module/color-picker/input-with-slider.js +17 -3
  106. package/build-module/color-picker/input-with-slider.js.map +1 -1
  107. package/build-module/custom-select-control/index.js +5 -2
  108. package/build-module/custom-select-control/index.js.map +1 -1
  109. package/build-module/dashicon/index.js +17 -2
  110. package/build-module/dashicon/index.js.map +1 -1
  111. package/build-module/draggable/index.js +59 -38
  112. package/build-module/draggable/index.js.map +1 -1
  113. package/build-module/draggable/types.js +2 -0
  114. package/build-module/draggable/types.js.map +1 -0
  115. package/build-module/flex/flex/hook.js +2 -3
  116. package/build-module/flex/flex/hook.js.map +1 -1
  117. package/build-module/focal-point-picker/focal-point.js +3 -13
  118. package/build-module/focal-point-picker/focal-point.js.map +1 -1
  119. package/build-module/focal-point-picker/styles/focal-point-style.js +6 -52
  120. package/build-module/focal-point-picker/styles/focal-point-style.js.map +1 -1
  121. package/build-module/font-size-picker/constants.js +31 -0
  122. package/build-module/font-size-picker/constants.js.map +1 -0
  123. package/build-module/font-size-picker/font-size-picker-select.js +83 -0
  124. package/build-module/font-size-picker/font-size-picker-select.js.map +1 -0
  125. package/build-module/font-size-picker/font-size-picker-toggle-group.js +40 -0
  126. package/build-module/font-size-picker/font-size-picker-toggle-group.js.map +1 -0
  127. package/build-module/font-size-picker/index.js +38 -76
  128. package/build-module/font-size-picker/index.js.map +1 -1
  129. package/build-module/font-size-picker/utils.js +15 -86
  130. package/build-module/font-size-picker/utils.js.map +1 -1
  131. package/build-module/form-token-field/index.js +9 -6
  132. package/build-module/form-token-field/index.js.map +1 -1
  133. package/build-module/higher-order/navigate-regions/index.js +3 -0
  134. package/build-module/higher-order/navigate-regions/index.js.map +1 -1
  135. package/build-module/icon/index.js +3 -2
  136. package/build-module/icon/index.js.map +1 -1
  137. package/build-module/index.js +1 -0
  138. package/build-module/index.js.map +1 -1
  139. package/build-module/menu-group/index.js +20 -2
  140. package/build-module/menu-group/index.js.map +1 -1
  141. package/build-module/menu-group/types.js +2 -0
  142. package/build-module/menu-group/types.js.map +1 -0
  143. package/build-module/navigator/navigator-screen/component.js +9 -5
  144. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  145. package/build-module/palette-edit/index.js +3 -1
  146. package/build-module/palette-edit/index.js.map +1 -1
  147. package/build-module/popover/index.js +8 -4
  148. package/build-module/popover/index.js.map +1 -1
  149. package/build-module/range-control/styles/range-control-styles.js +47 -57
  150. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  151. package/build-module/spinner/styles.js +4 -4
  152. package/build-module/spinner/styles.js.map +1 -1
  153. package/build-module/tab-panel/index.js +4 -5
  154. package/build-module/tab-panel/index.js.map +1 -1
  155. package/build-module/toggle-group-control/toggle-group-control/component.js +1 -0
  156. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  157. package/build-module/toggle-group-control/toggle-group-control/styles.js +12 -6
  158. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  159. package/build-module/tools-panel/styles.js +14 -14
  160. package/build-module/tools-panel/styles.js.map +1 -1
  161. package/build-module/tools-panel/tools-panel-item/hook.js +9 -5
  162. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  163. package/build-module/utils/colors-values.js +3 -2
  164. package/build-module/utils/colors-values.js.map +1 -1
  165. package/build-module/utils/input/base.js +2 -2
  166. package/build-module/utils/input/base.js.map +1 -1
  167. package/build-module/view/index.js.map +1 -1
  168. package/build-style/style-rtl.css +72 -44
  169. package/build-style/style.css +72 -44
  170. package/build-types/border-box-control/border-box-control/component.d.ts +4 -4
  171. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  172. package/build-types/border-box-control/border-box-control/hook.d.ts +6 -6
  173. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  174. package/build-types/border-box-control/border-box-control-linked-button/component.d.ts +4 -2
  175. package/build-types/border-box-control/border-box-control-linked-button/component.d.ts.map +1 -1
  176. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +3 -3
  177. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +5 -5
  178. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  179. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts +3 -2
  180. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts.map +1 -1
  181. package/build-types/border-box-control/stories/index.d.ts +3 -3
  182. package/build-types/border-box-control/types.d.ts +5 -38
  183. package/build-types/border-box-control/types.d.ts.map +1 -1
  184. package/build-types/border-control/border-control/component.d.ts +4 -2
  185. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  186. package/build-types/border-control/border-control/hook.d.ts +5 -5
  187. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  188. package/build-types/border-control/border-control-dropdown/component.d.ts +3 -3
  189. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  190. package/build-types/border-control/border-control-dropdown/hook.d.ts +5 -5
  191. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  192. package/build-types/border-control/stories/index.d.ts +24 -12
  193. package/build-types/border-control/stories/index.d.ts.map +1 -1
  194. package/build-types/border-control/types.d.ts +10 -51
  195. package/build-types/border-control/types.d.ts.map +1 -1
  196. package/build-types/color-palette/index.d.ts +16 -2
  197. package/build-types/color-palette/index.d.ts.map +1 -1
  198. package/build-types/color-palette/stories/index.d.ts +31 -2
  199. package/build-types/color-palette/stories/index.d.ts.map +1 -1
  200. package/build-types/color-palette/types.d.ts +14 -10
  201. package/build-types/color-palette/types.d.ts.map +1 -1
  202. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  203. package/build-types/custom-select-control/index.d.ts.map +1 -1
  204. package/build-types/dashicon/index.d.ts +6 -1
  205. package/build-types/dashicon/index.d.ts.map +1 -1
  206. package/build-types/date-time/types.d.ts +0 -16
  207. package/build-types/date-time/types.d.ts.map +1 -1
  208. package/build-types/draggable/index.d.ts +42 -66
  209. package/build-types/draggable/index.d.ts.map +1 -1
  210. package/build-types/draggable/stories/index.d.ts +12 -0
  211. package/build-types/draggable/stories/index.d.ts.map +1 -0
  212. package/build-types/draggable/types.d.ts +58 -0
  213. package/build-types/draggable/types.d.ts.map +1 -0
  214. package/build-types/flex/flex/hook.d.ts.map +1 -1
  215. package/build-types/focal-point-picker/focal-point.d.ts.map +1 -1
  216. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +1 -1
  217. package/build-types/focal-point-picker/styles/focal-point-style.d.ts +1 -12
  218. package/build-types/focal-point-picker/styles/focal-point-style.d.ts.map +1 -1
  219. package/build-types/font-size-picker/constants.d.ts +15 -0
  220. package/build-types/font-size-picker/constants.d.ts.map +1 -0
  221. package/build-types/font-size-picker/font-size-picker-select.d.ts +5 -0
  222. package/build-types/font-size-picker/font-size-picker-select.d.ts.map +1 -0
  223. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts +5 -0
  224. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts.map +1 -0
  225. package/build-types/font-size-picker/index.d.ts.map +1 -1
  226. package/build-types/font-size-picker/types.d.ts +13 -13
  227. package/build-types/font-size-picker/types.d.ts.map +1 -1
  228. package/build-types/font-size-picker/utils.d.ts +6 -18
  229. package/build-types/font-size-picker/utils.d.ts.map +1 -1
  230. package/build-types/form-token-field/index.d.ts.map +1 -1
  231. package/build-types/icon/index.d.ts +1 -1
  232. package/build-types/icon/index.d.ts.map +1 -1
  233. package/build-types/menu-group/index.d.ts +21 -1
  234. package/build-types/menu-group/index.d.ts.map +1 -1
  235. package/build-types/menu-group/test/index.d.ts +2 -0
  236. package/build-types/menu-group/test/index.d.ts.map +1 -0
  237. package/build-types/menu-group/types.d.ts +23 -0
  238. package/build-types/menu-group/types.d.ts.map +1 -0
  239. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  240. package/build-types/popover/index.d.ts.map +1 -1
  241. package/build-types/tab-panel/index.d.ts.map +1 -1
  242. package/build-types/toggle-group-control/stories/index.d.ts.map +1 -1
  243. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +1 -2
  244. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  245. package/build-types/toggle-group-control/types.d.ts +2 -1
  246. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  247. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  248. package/build-types/unit-control/index.d.ts +1 -1
  249. package/build-types/utils/colors-values.d.ts +1 -0
  250. package/build-types/utils/colors-values.d.ts.map +1 -1
  251. package/build-types/view/index.d.ts +1 -1
  252. package/build-types/view/index.d.ts.map +1 -1
  253. package/package.json +17 -17
  254. package/src/angle-picker-control/index.js +2 -1
  255. package/src/autocomplete/index.js +12 -3
  256. package/src/autocomplete/style.scss +1 -1
  257. package/src/base-field/test/__snapshots__/index.js.snap +9 -7
  258. package/src/base-field/test/index.js +27 -15
  259. package/src/border-box-control/border-box-control/README.md +5 -17
  260. package/src/border-box-control/border-box-control/component.tsx +1 -1
  261. package/src/border-box-control/border-box-control/hook.ts +18 -4
  262. package/src/border-box-control/border-box-control-split-controls/hook.ts +10 -0
  263. package/src/border-box-control/types.ts +32 -58
  264. package/src/border-control/border-control/README.md +4 -17
  265. package/src/border-control/border-control/component.tsx +2 -2
  266. package/src/border-control/border-control/hook.ts +10 -0
  267. package/src/border-control/border-control-dropdown/component.tsx +7 -6
  268. package/src/border-control/border-control-dropdown/hook.ts +9 -1
  269. package/src/border-control/types.ts +43 -80
  270. package/src/card/test/__snapshots__/index.tsx.snap +64 -368
  271. package/src/card/test/index.tsx +2 -2
  272. package/src/checkbox-control/style.scss +3 -3
  273. package/src/color-palette/README.md +12 -16
  274. package/src/color-palette/index.tsx +1 -1
  275. package/src/color-palette/style.scss +1 -1
  276. package/src/color-palette/types.ts +14 -10
  277. package/src/color-picker/input-with-slider.tsx +13 -2
  278. package/src/custom-select-control/index.js +7 -0
  279. package/src/custom-select-control/stories/index.js +1 -0
  280. package/src/custom-select-control/style.scss +6 -1
  281. package/src/custom-select-control/test/index.js +39 -0
  282. package/src/dashicon/index.js +21 -2
  283. package/src/date-time/date/test/index.tsx +2 -2
  284. package/src/date-time/types.ts +0 -19
  285. package/src/divider/test/index.tsx +4 -4
  286. package/src/draggable/README.md +13 -18
  287. package/src/draggable/{index.js → index.tsx} +71 -47
  288. package/src/draggable/stories/index.tsx +83 -0
  289. package/src/draggable/types.ts +58 -0
  290. package/src/drop-zone/style.scss +1 -1
  291. package/src/flex/flex/hook.ts +0 -3
  292. package/src/flex/test/index.tsx +29 -3
  293. package/src/focal-point-picker/focal-point.tsx +2 -24
  294. package/src/focal-point-picker/styles/focal-point-style.ts +8 -32
  295. package/src/font-size-picker/constants.ts +37 -0
  296. package/src/font-size-picker/font-size-picker-select.tsx +98 -0
  297. package/src/font-size-picker/font-size-picker-toggle-group.tsx +41 -0
  298. package/src/font-size-picker/index.tsx +55 -118
  299. package/src/font-size-picker/test/index.tsx +253 -44
  300. package/src/font-size-picker/test/utils.ts +58 -98
  301. package/src/font-size-picker/types.ts +25 -16
  302. package/src/font-size-picker/utils.ts +16 -102
  303. package/src/form-toggle/style.scss +3 -3
  304. package/src/form-token-field/index.tsx +13 -5
  305. package/src/form-token-field/style.scss +2 -2
  306. package/src/form-token-field/test/index.tsx +6 -6
  307. package/src/higher-order/navigate-regions/index.js +4 -0
  308. package/src/higher-order/navigate-regions/style.scss +72 -20
  309. package/src/higher-order/with-notices/test/index.js +1 -1
  310. package/src/icon/index.tsx +3 -2
  311. package/src/icon/test/index.js +10 -0
  312. package/src/index.js +1 -0
  313. package/src/item-group/stories/index.js +1 -1
  314. package/src/menu-group/{index.js → index.tsx} +22 -3
  315. package/src/menu-group/test/{index.js → index.tsx} +0 -0
  316. package/src/menu-group/types.ts +23 -0
  317. package/src/menu-item/style.scss +1 -1
  318. package/src/mobile/bottom-sheet/test/range-cell.native.js +4 -4
  319. package/src/mobile/html-text-input/test/index.native.js +2 -2
  320. package/src/mobile/link-settings/test/edit.native.js +29 -29
  321. package/src/mobile/link-settings/test/link-settings-navigation.native.js +5 -5
  322. package/src/navigator/navigator-screen/component.tsx +8 -3
  323. package/src/notice/README.md +2 -1
  324. package/src/notice/style.scss +1 -1
  325. package/src/palette-edit/index.js +3 -0
  326. package/src/panel/style.scss +1 -1
  327. package/src/popover/index.tsx +18 -7
  328. package/src/range-control/styles/range-control-styles.ts +2 -2
  329. package/src/resizable-box/style.scss +2 -2
  330. package/src/scrollable/test/index.tsx +7 -3
  331. package/src/search-control/style.scss +1 -1
  332. package/src/snackbar/style.scss +2 -2
  333. package/src/spacer/test/index.tsx +33 -3
  334. package/src/spinner/styles.ts +1 -1
  335. package/src/surface/test/index.tsx +12 -12
  336. package/src/tab-panel/index.tsx +9 -6
  337. package/src/tab-panel/style.scss +4 -5
  338. package/src/text/test/index.tsx +4 -4
  339. package/src/toggle-group-control/stories/index.tsx +2 -0
  340. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +6 -8
  341. package/src/toggle-group-control/test/index.tsx +29 -17
  342. package/src/toggle-group-control/toggle-group-control/README.md +8 -1
  343. package/src/toggle-group-control/toggle-group-control/component.tsx +1 -1
  344. package/src/toggle-group-control/toggle-group-control/styles.ts +22 -16
  345. package/src/toggle-group-control/types.ts +2 -1
  346. package/src/tools-panel/styles.ts +1 -1
  347. package/src/tools-panel/tools-panel-item/hook.ts +6 -1
  348. package/src/tree-grid/test/index.js +12 -12
  349. package/src/truncate/test/index.tsx +9 -9
  350. package/src/ui/form-group/test/index.js +16 -17
  351. package/src/utils/colors-values.js +4 -2
  352. package/src/utils/hooks/stories/use-cx.js +1 -1
  353. package/src/utils/input/base.js +2 -2
  354. package/src/view/{index.js → index.ts} +0 -0
  355. package/tsconfig.tsbuildinfo +1 -1
  356. package/src/draggable/stories/index.js +0 -72
@@ -10,20 +10,25 @@ import { View } from '../../view';
10
10
  import { Flex, FlexBlock, FlexItem } from '../';
11
11
 
12
12
  describe( 'props', () => {
13
- beforeEach( () => {
13
+ test( 'should render correctly', () => {
14
14
  render(
15
15
  <Flex data-testid="base-flex">
16
16
  <FlexItem>Item</FlexItem>
17
17
  <FlexBlock>Item</FlexBlock>
18
18
  </Flex>
19
19
  );
20
- } );
21
20
 
22
- test( 'should render correctly', () => {
23
21
  expect( screen.getByTestId( 'base-flex' ) ).toMatchSnapshot();
24
22
  } );
25
23
 
26
24
  test( 'should render + wrap non Flex children', () => {
25
+ render(
26
+ <Flex data-testid="base-flex">
27
+ <FlexItem>Item</FlexItem>
28
+ <FlexBlock>Item</FlexBlock>
29
+ </Flex>
30
+ );
31
+
27
32
  render(
28
33
  <Flex data-testid="flex">
29
34
  <FlexItem>Item</FlexItem>
@@ -39,6 +44,13 @@ describe( 'props', () => {
39
44
  } );
40
45
 
41
46
  test( 'should render align', () => {
47
+ render(
48
+ <Flex data-testid="base-flex">
49
+ <FlexItem>Item</FlexItem>
50
+ <FlexBlock>Item</FlexBlock>
51
+ </Flex>
52
+ );
53
+
42
54
  render(
43
55
  <Flex align="flex-start" data-testid="flex">
44
56
  <FlexItem>Item</FlexItem>
@@ -51,6 +63,13 @@ describe( 'props', () => {
51
63
  } );
52
64
 
53
65
  test( 'should render justify', () => {
66
+ render(
67
+ <Flex data-testid="base-flex">
68
+ <FlexItem>Item</FlexItem>
69
+ <FlexBlock>Item</FlexBlock>
70
+ </Flex>
71
+ );
72
+
54
73
  render(
55
74
  <Flex justify="flex-start" data-testid="flex">
56
75
  <FlexItem>Item</FlexItem>
@@ -63,6 +82,13 @@ describe( 'props', () => {
63
82
  } );
64
83
 
65
84
  test( 'should render spacing', () => {
85
+ render(
86
+ <Flex data-testid="base-flex">
87
+ <FlexItem>Item</FlexItem>
88
+ <FlexBlock>Item</FlexBlock>
89
+ </Flex>
90
+ );
91
+
66
92
  render(
67
93
  <>
68
94
  <Flex>
@@ -1,12 +1,7 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
- import {
5
- FocalPointWrapper,
6
- PointerIconPathFill,
7
- PointerIconPathOutline,
8
- PointerIconSVG,
9
- } from './styles/focal-point-style';
4
+ import { PointerCircle } from './styles/focal-point-style';
10
5
 
11
6
  /**
12
7
  * External dependencies
@@ -26,22 +21,5 @@ export default function FocalPoint( {
26
21
 
27
22
  const style = { left, top };
28
23
 
29
- return (
30
- <FocalPointWrapper { ...props } className={ classes } style={ style }>
31
- <PointerIconSVG
32
- className="components-focal-point-picker__icon"
33
- xmlns="http://www.w3.org/2000/svg"
34
- viewBox="0 0 30 30"
35
- >
36
- <PointerIconPathOutline
37
- className="components-focal-point-picker__icon-outline"
38
- d="M15 1C7.3 1 1 7.3 1 15s6.3 14 14 14 14-6.3 14-14S22.7 1 15 1zm0 22c-4.4 0-8-3.6-8-8s3.6-8 8-8 8 3.6 8 8-3.6 8-8 8z"
39
- />
40
- <PointerIconPathFill
41
- className="components-focal-point-picker__icon-fill"
42
- d="M15 3C8.4 3 3 8.4 3 15s5.4 12 12 12 12-5.4 12-12S21.6 3 15 3zm0 22C9.5 25 5 20.5 5 15S9.5 5 15 5s10 4.5 10 10-4.5 10-10 10z"
43
- />
44
- </PointerIconSVG>
45
- </FocalPointWrapper>
46
- );
24
+ return <PointerCircle { ...props } className={ classes } style={ style } />;
47
25
  }
@@ -3,45 +3,21 @@
3
3
  */
4
4
  import styled from '@emotion/styled';
5
5
 
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { Path, SVG } from '@wordpress/primitives';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import { COLORS } from '../../utils';
15
-
16
- export const FocalPointWrapper = styled.div`
6
+ export const PointerCircle = styled.div`
17
7
  background-color: transparent;
18
8
  cursor: grab;
19
- height: 30px;
20
- margin: -15px 0 0 -15px;
21
- opacity: 0.8;
9
+ height: 48px;
10
+ margin: -24px 0 0 -24px;
22
11
  position: absolute;
23
12
  user-select: none;
24
- width: 30px;
13
+ width: 48px;
25
14
  will-change: transform;
26
15
  z-index: 10000;
16
+ background: rgba( 255, 255, 255, 0.6 );
17
+ border-radius: 50%;
18
+ backdrop-filter: blur( 4px );
19
+ box-shadow: rgb( 0 0 0 / 20% ) 0px 0px 10px;
27
20
 
28
21
  ${ ( { isDragging }: { isDragging: boolean } ) =>
29
22
  isDragging && 'cursor: grabbing;' }
30
23
  `;
31
-
32
- export const PointerIconSVG = styled( SVG )`
33
- display: block;
34
- height: 100%;
35
- left: 0;
36
- position: absolute;
37
- top: 0;
38
- width: 100%;
39
- `;
40
-
41
- export const PointerIconPathOutline = styled( Path )`
42
- fill: white;
43
- `;
44
-
45
- export const PointerIconPathFill = styled( Path )`
46
- fill: ${ COLORS.ui.theme };
47
- `;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * List of T-shirt abbreviations.
8
+ *
9
+ * When there are 5 font sizes or fewer, we assume that the font sizes are
10
+ * ordered by size and show T-shirt labels.
11
+ */
12
+ export const T_SHIRT_ABBREVIATIONS = [
13
+ /* translators: S stands for 'small' and is a size label. */
14
+ __( 'S' ),
15
+ /* translators: M stands for 'medium' and is a size label. */
16
+ __( 'M' ),
17
+ /* translators: L stands for 'large' and is a size label. */
18
+ __( 'L' ),
19
+ /* translators: XL stands for 'extra large' and is a size label. */
20
+ __( 'XL' ),
21
+ /* translators: XXL stands for 'extra extra large' and is a size label. */
22
+ __( 'XXL' ),
23
+ ];
24
+
25
+ /**
26
+ * List of T-shirt names.
27
+ *
28
+ * When there are 5 font sizes or fewer, we assume that the font sizes are
29
+ * ordered by size and show T-shirt labels.
30
+ */
31
+ export const T_SHIRT_NAMES = [
32
+ __( 'Small' ),
33
+ __( 'Medium' ),
34
+ __( 'Large' ),
35
+ __( 'Extra Large' ),
36
+ __( 'Extra Extra Large' ),
37
+ ];
@@ -0,0 +1,98 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __, sprintf } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import CustomSelectControl from '../custom-select-control';
10
+ import { parseQuantityAndUnitFromRawValue } from '../unit-control';
11
+ import type {
12
+ FontSizePickerSelectProps,
13
+ FontSizePickerSelectOption,
14
+ } from './types';
15
+ import { getCommonSizeUnit, isSimpleCssValue } from './utils';
16
+
17
+ const DEFAULT_OPTION: FontSizePickerSelectOption = {
18
+ key: 'default',
19
+ name: __( 'Default' ),
20
+ value: undefined,
21
+ };
22
+
23
+ const CUSTOM_OPTION: FontSizePickerSelectOption = {
24
+ key: 'custom',
25
+ name: __( 'Custom' ),
26
+ };
27
+
28
+ const FontSizePickerSelect = ( props: FontSizePickerSelectProps ) => {
29
+ const {
30
+ fontSizes,
31
+ value,
32
+ disableCustomFontSizes,
33
+ size,
34
+ onChange,
35
+ onSelectCustom,
36
+ } = props;
37
+
38
+ const areAllSizesSameUnit = !! getCommonSizeUnit( fontSizes );
39
+
40
+ const options: FontSizePickerSelectOption[] = [
41
+ DEFAULT_OPTION,
42
+ ...fontSizes.map( ( fontSize ) => {
43
+ let hint;
44
+ if ( areAllSizesSameUnit ) {
45
+ const [ quantity ] = parseQuantityAndUnitFromRawValue(
46
+ fontSize.size
47
+ );
48
+ if ( quantity !== undefined ) {
49
+ hint = String( quantity );
50
+ }
51
+ } else if ( isSimpleCssValue( fontSize.size ) ) {
52
+ hint = String( fontSize.size );
53
+ }
54
+ return {
55
+ key: fontSize.slug,
56
+ name: fontSize.name || fontSize.slug,
57
+ value: fontSize.size,
58
+ __experimentalHint: hint,
59
+ };
60
+ } ),
61
+ ...( disableCustomFontSizes ? [] : [ CUSTOM_OPTION ] ),
62
+ ];
63
+
64
+ const selectedOption = value
65
+ ? options.find( ( option ) => option.value === value ) ?? CUSTOM_OPTION
66
+ : DEFAULT_OPTION;
67
+
68
+ return (
69
+ <CustomSelectControl
70
+ __nextUnconstrainedWidth
71
+ className="components-font-size-picker__select"
72
+ label={ __( 'Font size' ) }
73
+ hideLabelFromVision
74
+ describedBy={ sprintf(
75
+ // translators: %s: Currently selected font size.
76
+ __( 'Currently selected font size: %s' ),
77
+ selectedOption.name
78
+ ) }
79
+ options={ options }
80
+ value={ selectedOption }
81
+ __experimentalShowSelectedHint
82
+ onChange={ ( {
83
+ selectedItem,
84
+ }: {
85
+ selectedItem: FontSizePickerSelectOption;
86
+ } ) => {
87
+ if ( selectedItem === CUSTOM_OPTION ) {
88
+ onSelectCustom();
89
+ } else {
90
+ onChange( selectedItem.value );
91
+ }
92
+ } }
93
+ size={ size }
94
+ />
95
+ );
96
+ };
97
+
98
+ export default FontSizePickerSelect;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import {
10
+ ToggleGroupControl,
11
+ ToggleGroupControlOption,
12
+ } from '../toggle-group-control';
13
+ import { T_SHIRT_ABBREVIATIONS, T_SHIRT_NAMES } from './constants';
14
+ import type { FontSizePickerToggleGroupProps } from './types';
15
+
16
+ const FontSizePickerToggleGroup = ( props: FontSizePickerToggleGroupProps ) => {
17
+ const { fontSizes, value, __nextHasNoMarginBottom, size, onChange } = props;
18
+ return (
19
+ <ToggleGroupControl
20
+ __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
21
+ label={ __( 'Font size' ) }
22
+ hideLabelFromVision
23
+ value={ value }
24
+ onChange={ onChange }
25
+ isBlock
26
+ size={ size }
27
+ >
28
+ { fontSizes.map( ( fontSize, index ) => (
29
+ <ToggleGroupControlOption
30
+ key={ fontSize.slug }
31
+ value={ fontSize.size }
32
+ label={ T_SHIRT_ABBREVIATIONS[ index ] }
33
+ aria-label={ fontSize.name || T_SHIRT_NAMES[ index ] }
34
+ showTooltip
35
+ />
36
+ ) ) }
37
+ </ToggleGroupControl>
38
+ );
39
+ };
40
+
41
+ export default FontSizePickerToggleGroup;
@@ -7,7 +7,7 @@ import type { ForwardedRef } from 'react';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import deprecated from '@wordpress/deprecated';
10
- import { __, sprintf } from '@wordpress/i18n';
10
+ import { __ } from '@wordpress/i18n';
11
11
  import { settings } from '@wordpress/icons';
12
12
  import { useState, useMemo, forwardRef } from '@wordpress/element';
13
13
 
@@ -22,24 +22,10 @@ import {
22
22
  parseQuantityAndUnitFromRawValue,
23
23
  useCustomUnits,
24
24
  } from '../unit-control';
25
- import CustomSelectControl from '../custom-select-control';
26
25
  import { VisuallyHidden } from '../visually-hidden';
27
- import {
28
- ToggleGroupControl,
29
- ToggleGroupControlOption,
30
- } from '../toggle-group-control';
31
- import {
32
- getFontSizeOptions,
33
- getSelectedOption,
34
- isSimpleCssValue,
35
- CUSTOM_FONT_SIZE,
36
- } from './utils';
26
+ import { getCommonSizeUnit } from './utils';
37
27
  import { HStack } from '../h-stack';
38
- import type {
39
- FontSizePickerProps,
40
- FontSizeSelectOption,
41
- FontSizeToggleGroupOption,
42
- } from './types';
28
+ import type { FontSizePickerProps } from './types';
43
29
  import {
44
30
  Container,
45
31
  HeaderHint,
@@ -48,6 +34,9 @@ import {
48
34
  ResetButton,
49
35
  } from './styles';
50
36
  import { Spacer } from '../spacer';
37
+ import FontSizePickerSelect from './font-size-picker-select';
38
+ import FontSizePickerToggleGroup from './font-size-picker-toggle-group';
39
+ import { T_SHIRT_NAMES } from './constants';
51
40
 
52
41
  const UnforwardedFontSizePicker = (
53
42
  props: FontSizePickerProps,
@@ -65,6 +54,7 @@ const UnforwardedFontSizePicker = (
65
54
  withSlider = false,
66
55
  withReset = true,
67
56
  } = props;
57
+
68
58
  if ( ! __nextHasNoMarginBottom ) {
69
59
  deprecated( 'Bottom margin styles for wp.components.FontSizePicker', {
70
60
  since: '6.1',
@@ -77,85 +67,48 @@ const UnforwardedFontSizePicker = (
77
67
  availableUnits: [ 'px', 'em', 'rem' ],
78
68
  } );
79
69
 
80
- /**
81
- * The main font size UI displays a toggle group when the presets are less
82
- * than six and a select control when they are more.
83
- */
84
- const fontSizesContainComplexValues = fontSizes.some(
85
- ( { size: sizeArg } ) => ! isSimpleCssValue( sizeArg )
86
- );
87
70
  const shouldUseSelectControl = fontSizes.length > 5;
88
- const options = useMemo(
89
- () =>
90
- getFontSizeOptions(
91
- shouldUseSelectControl,
92
- fontSizes,
93
- disableCustomFontSizes
94
- ),
95
- [ shouldUseSelectControl, fontSizes, disableCustomFontSizes ]
71
+ const selectedFontSize = fontSizes.find(
72
+ ( fontSize ) => fontSize.size === value
96
73
  );
97
- const selectedOption = getSelectedOption( fontSizes, value );
98
- const isCustomValue = selectedOption.slug === CUSTOM_FONT_SIZE;
74
+ const isCustomValue = !! value && ! selectedFontSize;
75
+
99
76
  const [ showCustomValueControl, setShowCustomValueControl ] = useState(
100
77
  ! disableCustomFontSizes && isCustomValue
101
78
  );
79
+
102
80
  const headerHint = useMemo( () => {
103
81
  if ( showCustomValueControl ) {
104
- return `(${ __( 'Custom' ) })`;
82
+ return __( 'Custom' );
105
83
  }
106
84
 
107
- // If we have a custom value that is not available in the font sizes,
108
- // show it as a hint as long as it's a simple CSS value.
109
- if ( isCustomValue ) {
110
- return (
111
- value !== undefined &&
112
- isSimpleCssValue( value ) &&
113
- `(${ value })`
114
- );
115
- }
116
- if ( shouldUseSelectControl ) {
117
- return (
118
- selectedOption?.size !== undefined &&
119
- isSimpleCssValue( selectedOption?.size ) &&
120
- `(${ selectedOption?.size })`
121
- );
85
+ if ( ! shouldUseSelectControl ) {
86
+ if ( selectedFontSize ) {
87
+ return (
88
+ selectedFontSize.name ||
89
+ T_SHIRT_NAMES[ fontSizes.indexOf( selectedFontSize ) ]
90
+ );
91
+ }
92
+ return '';
122
93
  }
123
94
 
124
- // Calculate the `hint` for toggle group control.
125
- let hint = selectedOption?.name || selectedOption.slug;
126
- if (
127
- ! fontSizesContainComplexValues &&
128
- typeof selectedOption.size === 'string'
129
- ) {
130
- const [ , unit ] = parseQuantityAndUnitFromRawValue(
131
- selectedOption.size,
132
- units
133
- );
134
- hint += `(${ unit })`;
95
+ const commonUnit = getCommonSizeUnit( fontSizes );
96
+ if ( commonUnit ) {
97
+ return `(${ commonUnit })`;
135
98
  }
136
- return hint;
99
+
100
+ return '';
137
101
  }, [
138
102
  showCustomValueControl,
139
- selectedOption?.name,
140
- selectedOption?.size,
141
- value,
142
- isCustomValue,
143
103
  shouldUseSelectControl,
144
- fontSizesContainComplexValues,
104
+ selectedFontSize,
105
+ fontSizes,
145
106
  ] );
146
107
 
147
- if ( ! options ) {
108
+ if ( fontSizes.length === 0 && disableCustomFontSizes ) {
148
109
  return null;
149
110
  }
150
111
 
151
- // This is used for select control only. We need to add support
152
- // for ToggleGroupControl.
153
- const currentFontSizeSR = sprintf(
154
- // translators: %s: Currently selected font size.
155
- __( 'Currently selected font size: %s' ),
156
- selectedOption.name
157
- );
158
-
159
112
  // If neither the value or first font size is a string, then FontSizePicker
160
113
  // operates in a legacy "unitless" mode where UnitControl can only be used
161
114
  // to select px values and onChange() is always called with number values.
@@ -210,67 +163,51 @@ const UnforwardedFontSizePicker = (
210
163
  { !! fontSizes.length &&
211
164
  shouldUseSelectControl &&
212
165
  ! showCustomValueControl && (
213
- <CustomSelectControl
214
- __nextUnconstrainedWidth
215
- className="components-font-size-picker__select"
216
- label={ __( 'Font size' ) }
217
- hideLabelFromVision
218
- describedBy={ currentFontSizeSR }
219
- options={ options as FontSizeSelectOption[] }
220
- value={ ( options as FontSizeSelectOption[] ).find(
221
- ( option ) => option.key === selectedOption.slug
222
- ) }
223
- onChange={ ( {
224
- selectedItem,
225
- }: {
226
- selectedItem: FontSizeSelectOption;
227
- } ) => {
228
- if ( selectedItem.size === undefined ) {
166
+ <FontSizePickerSelect
167
+ fontSizes={ fontSizes }
168
+ value={ value }
169
+ disableCustomFontSizes={ disableCustomFontSizes }
170
+ size={ size }
171
+ onChange={ ( newValue ) => {
172
+ if ( newValue === undefined ) {
229
173
  onChange?.( undefined );
230
174
  } else {
231
175
  onChange?.(
232
176
  hasUnits
233
- ? selectedItem.size
234
- : Number( selectedItem.size )
177
+ ? newValue
178
+ : Number( newValue ),
179
+ fontSizes.find(
180
+ ( fontSize ) =>
181
+ fontSize.size === newValue
182
+ )
235
183
  );
236
184
  }
237
- if ( selectedItem.key === CUSTOM_FONT_SIZE ) {
238
- setShowCustomValueControl( true );
239
- }
240
185
  } }
241
- size={ size }
186
+ onSelectCustom={ () =>
187
+ setShowCustomValueControl( true )
188
+ }
242
189
  />
243
190
  ) }
244
191
  { ! shouldUseSelectControl && ! showCustomValueControl && (
245
- <ToggleGroupControl
246
- __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
247
- label={ __( 'Font size' ) }
248
- hideLabelFromVision
192
+ <FontSizePickerToggleGroup
193
+ fontSizes={ fontSizes }
249
194
  value={ value }
195
+ __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
196
+ size={ size }
250
197
  onChange={ ( newValue ) => {
251
198
  if ( newValue === undefined ) {
252
199
  onChange?.( undefined );
253
200
  } else {
254
201
  onChange?.(
255
- hasUnits ? newValue : Number( newValue )
202
+ hasUnits ? newValue : Number( newValue ),
203
+ fontSizes.find(
204
+ ( fontSize ) =>
205
+ fontSize.size === newValue
206
+ )
256
207
  );
257
208
  }
258
209
  } }
259
- isBlock
260
- size={ size }
261
- >
262
- { ( options as FontSizeToggleGroupOption[] ).map(
263
- ( option ) => (
264
- <ToggleGroupControlOption
265
- key={ option.key }
266
- value={ option.value }
267
- label={ option.label }
268
- aria-label={ option.name }
269
- showTooltip={ true }
270
- />
271
- )
272
- ) }
273
- </ToggleGroupControl>
210
+ />
274
211
  ) }
275
212
  { ! disableCustomFontSizes && showCustomValueControl && (
276
213
  <Flex className="components-font-size-picker__custom-size-control">