@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
@@ -6,42 +6,8 @@ import { __ } from '@wordpress/i18n';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import type {
10
- FontSize,
11
- FontSizeOption,
12
- FontSizeSelectOption,
13
- FontSizeToggleGroupOption,
14
- FontSizePickerProps,
15
- } from './types';
16
-
17
- const DEFAULT_FONT_SIZE = 'default';
18
- const DEFAULT_FONT_SIZE_OPTION = {
19
- slug: DEFAULT_FONT_SIZE,
20
- name: __( 'Default' ),
21
- };
22
- export const CUSTOM_FONT_SIZE = 'custom';
23
- const CUSTOM_FONT_SIZE_OPTION = {
24
- slug: CUSTOM_FONT_SIZE,
25
- name: __( 'Custom' ),
26
- };
27
-
28
- /**
29
- * In case we have at most five font sizes, show a `T-shirt size`
30
- * alias as a label of the font size. The label assumes that the font sizes
31
- * are ordered accordingly - from smallest to largest.
32
- */
33
- const FONT_SIZES_ALIASES = [
34
- /* translators: S stands for 'small' and is a size label. */
35
- __( 'S' ),
36
- /* translators: M stands for 'medium' and is a size label. */
37
- __( 'M' ),
38
- /* translators: L stands for 'large' and is a size label. */
39
- __( 'L' ),
40
- /* translators: XL stands for 'extra large' and is a size label. */
41
- __( 'XL' ),
42
- /* translators: XXL stands for 'extra extra large' and is a size label. */
43
- __( 'XXL' ),
44
- ];
9
+ import type { FontSizePickerProps, FontSize } from './types';
10
+ import { parseQuantityAndUnitFromRawValue } from '../unit-control';
45
11
 
46
12
  /**
47
13
  * Some themes use css vars for their font sizes, so until we
@@ -58,75 +24,23 @@ export function isSimpleCssValue(
58
24
  }
59
25
 
60
26
  /**
61
- * Return font size options in the proper format depending
62
- * on the currently used control (select, toggle group).
27
+ * If all of the given font sizes have the same unit (e.g. 'px'), return that
28
+ * unit. Otherwise return null.
63
29
  *
64
- * @param useSelectControl Whether to use a select control.
65
- * @param optionsArray Array of available font sizes objects.
66
- * @param disableCustomFontSizes Flag that indicates if custom font sizes are disabled.
67
- * @return Array of font sizes in proper format for the used control.
30
+ * @param fontSizes List of font sizes.
31
+ * @return The common unit, or null.
68
32
  */
69
- export function getFontSizeOptions(
70
- useSelectControl: boolean,
71
- optionsArray: FontSize[],
72
- disableCustomFontSizes: boolean
73
- ): FontSizeSelectOption[] | FontSizeToggleGroupOption[] | null {
74
- if ( disableCustomFontSizes && ! optionsArray.length ) {
33
+ export function getCommonSizeUnit( fontSizes: FontSize[] ) {
34
+ const [ firstFontSize, ...otherFontSizes ] = fontSizes;
35
+ if ( ! firstFontSize ) {
75
36
  return null;
76
37
  }
77
- return useSelectControl
78
- ? getSelectOptions( optionsArray, disableCustomFontSizes )
79
- : getToggleGroupOptions( optionsArray );
80
- }
81
-
82
- function getSelectOptions(
83
- optionsArray: FontSize[],
84
- disableCustomFontSizes: boolean
85
- ): FontSizeSelectOption[] {
86
- const options: FontSizeOption[] = [
87
- DEFAULT_FONT_SIZE_OPTION,
88
- ...optionsArray,
89
- ...( disableCustomFontSizes ? [] : [ CUSTOM_FONT_SIZE_OPTION ] ),
90
- ];
91
- return options.map( ( { slug, name, size } ) => ( {
92
- key: slug,
93
- name: name || slug,
94
- size,
95
- __experimentalHint:
96
- size && isSimpleCssValue( size ) && parseFloat( String( size ) ),
97
- } ) );
98
- }
99
-
100
- /**
101
- * Build options for the toggle group options.
102
- *
103
- * @param optionsArray An array of font size options.
104
- * @param labelAliases An array of alternative labels.
105
- * @return Remapped optionsArray.
106
- */
107
- export function getToggleGroupOptions(
108
- optionsArray: FontSize[],
109
- labelAliases: string[] = FONT_SIZES_ALIASES
110
- ): FontSizeToggleGroupOption[] {
111
- return optionsArray.map( ( { slug, size, name }, index ) => {
112
- return {
113
- key: slug,
114
- value: size,
115
- label: labelAliases[ index ],
116
- name: name || labelAliases[ index ],
117
- };
118
- } );
119
- }
120
-
121
- export function getSelectedOption(
122
- fontSizes: FontSize[],
123
- value: FontSizePickerProps[ 'value' ]
124
- ): FontSizeOption {
125
- if ( ! value ) {
126
- return DEFAULT_FONT_SIZE_OPTION;
127
- }
128
- return (
129
- fontSizes.find( ( font ) => font.size === value ) ||
130
- CUSTOM_FONT_SIZE_OPTION
38
+ const [ , firstUnit ] = parseQuantityAndUnitFromRawValue(
39
+ firstFontSize.size
131
40
  );
41
+ const areAllSizesSameUnit = otherFontSizes.every( ( fontSize ) => {
42
+ const [ , unit ] = parseQuantityAndUnitFromRawValue( fontSize.size );
43
+ return unit === firstUnit;
44
+ } );
45
+ return areAllSizesSameUnit ? firstUnit : null;
132
46
  }
@@ -38,13 +38,13 @@ $toggle-border-width: 1px;
38
38
 
39
39
  // Checked state.
40
40
  &.is-checked .components-form-toggle__track {
41
- background-color: var(--wp-admin-theme-color);
42
- border: $toggle-border-width solid var(--wp-admin-theme-color);
41
+ background-color: $components-color-accent;
42
+ border: $toggle-border-width solid $components-color-accent;
43
43
  border: #{ $toggle-height * 0.5 } solid transparent; // Expand the border to fake a solid in Windows High Contrast Mode.
44
44
  }
45
45
 
46
46
  .components-form-toggle__input:focus + .components-form-toggle__track {
47
- box-shadow: 0 0 0 2px $white, 0 0 0 (2px + $border-width-focus) var(--wp-admin-theme-color);
47
+ box-shadow: 0 0 0 2px $white, 0 0 0 (2px + $border-width-focus) $components-color-accent;
48
48
 
49
49
  // Windows High Contrast mode will show this outline, but not the box-shadow.
50
50
  outline: 2px solid transparent;
@@ -169,10 +169,18 @@ export function FormTokenField( props: FormTokenFieldProps ) {
169
169
  function onKeyDown( event: KeyboardEvent ) {
170
170
  let preventDefault = false;
171
171
 
172
- if ( event.defaultPrevented ) {
172
+ if (
173
+ event.defaultPrevented ||
174
+ // Ignore keydowns from IMEs
175
+ event.nativeEvent.isComposing ||
176
+ // Workaround for Mac Safari where the final Enter/Backspace of an IME composition
177
+ // is `isComposing=false`, even though it's technically still part of the composition.
178
+ // These can only be detected by keyCode.
179
+ event.keyCode === 229
180
+ ) {
173
181
  return;
174
182
  }
175
- switch ( event.code ) {
183
+ switch ( event.key ) {
176
184
  case 'Backspace':
177
185
  preventDefault = handleDeleteKey( deleteTokenBeforeInput );
178
186
  break;
@@ -213,9 +221,9 @@ export function FormTokenField( props: FormTokenFieldProps ) {
213
221
 
214
222
  function onKeyPress( event: KeyboardEvent ) {
215
223
  let preventDefault = false;
216
- // TODO: replace to event.code;
217
- switch ( event.charCode ) {
218
- case 44: // Comma.
224
+
225
+ switch ( event.key ) {
226
+ case ',':
219
227
  preventDefault = handleCommaKey();
220
228
  break;
221
229
  default:
@@ -88,7 +88,7 @@
88
88
 
89
89
  .components-form-token-field__token-text {
90
90
  background: transparent;
91
- color: var(--wp-admin-theme-color);
91
+ color: $components-color-accent;
92
92
  }
93
93
 
94
94
  .components-form-token-field__remove-token {
@@ -183,7 +183,7 @@
183
183
  cursor: pointer;
184
184
 
185
185
  &.is-selected {
186
- background: var(--wp-admin-theme-color);
186
+ background: $components-color-accent;
187
187
  color: $white;
188
188
  }
189
189
  }
@@ -277,8 +277,8 @@ describe( 'FormTokenField', () => {
277
277
 
278
278
  // There should be 1 "remove item" button for the "bergamot" token
279
279
  expect(
280
- screen.getAllByRole( 'button', { name: 'Remove item' } )
281
- ).toHaveLength( 1 );
280
+ screen.getByRole( 'button', { name: 'Remove item' } )
281
+ ).toBeInTheDocument();
282
282
 
283
283
  // Click the "X" button for the "bergamot" token (the only one)
284
284
  await user.click(
@@ -827,10 +827,10 @@ describe( 'FormTokenField', () => {
827
827
 
828
828
  // Currently, none of the suggestions are selected
829
829
  expect(
830
- within( suggestionList ).queryAllByRole( 'option', {
830
+ within( suggestionList ).queryByRole( 'option', {
831
831
  selected: true,
832
832
  } )
833
- ).toHaveLength( 0 );
833
+ ).not.toBeInTheDocument();
834
834
 
835
835
  // Pressing the down arrow will select "Salmon"
836
836
  await user.keyboard( '[ArrowDown]' );
@@ -900,10 +900,10 @@ describe( 'FormTokenField', () => {
900
900
 
901
901
  // Currently, none of the suggestions are selected
902
902
  expect(
903
- within( suggestionList ).queryAllByRole( 'option', {
903
+ within( suggestionList ).queryByRole( 'option', {
904
904
  selected: true,
905
905
  } )
906
- ).toHaveLength( 0 );
906
+ ).not.toBeInTheDocument();
907
907
 
908
908
  const tigerOption = within( suggestionList ).getByRole( 'option', {
909
909
  name: 'Tiger',
@@ -15,6 +15,10 @@ const defaultShortcuts = {
15
15
  modifier: 'ctrlShift',
16
16
  character: '`',
17
17
  },
18
+ {
19
+ modifier: 'ctrlShift',
20
+ character: '~',
21
+ },
18
22
  {
19
23
  modifier: 'access',
20
24
  character: 'p',
@@ -3,30 +3,82 @@
3
3
  position: relative;
4
4
  }
5
5
 
6
- .is-focusing-regions [role="region"] {
7
- // For browsers that don't support outline-offset (IE11).
8
- &:focus::after {
9
- content: "";
10
- position: absolute;
11
- top: 0;
12
- bottom: 0;
13
- left: 0;
14
- right: 0;
15
- pointer-events: none;
16
- outline: 4px solid transparent; // Shown in Windows High Contrast mode.
17
- box-shadow: inset 0 0 0 4px var(--wp-admin-theme-color);
6
+ .is-focusing-regions {
7
+ [role="region"]:focus {
8
+ outline: 4px solid $components-color-accent;
9
+ outline-offset: -4px;
10
+
11
+ .interface-navigable-region__stacker {
12
+ position: relative;
13
+ z-index: z-index(".is-focusing-regions [role='region']:focus .interface-navigable-region__stacker");
14
+ }
15
+ }
16
+
17
+ // Fixes for edge cases.
18
+ // Some of the regions are currently used for layout purposes as 'interface skeleton'
19
+ // items. When they're absolutely positioned or when they contain absolutely
20
+ // positioned elements, they may have no size therefore the focus style is not
21
+ // visible. For the future, it's important to take into consideration that
22
+ // the navigable regions should always have a computed size. For now, we can
23
+ // fix some edge cases but these CSS rules should be later removed in favor of
24
+ // a more abstracted approach to make the navigabel regions focus style work
25
+ // regardles of the CSS used on other components.
26
+
27
+ // Header top bar when Distraction free mode is on.
28
+ &.is-distraction-free .interface-interface-skeleton__header {
29
+ .interface-navigable-region__stacker,
30
+ .edit-post-header {
31
+ outline: inherit;
32
+ outline-offset: inherit;
33
+ }
18
34
  }
19
35
 
20
- @supports ( outline-offset: 1px ) {
21
- &:focus::after {
22
- content: none;
36
+ // Sidebar toggle button shown when navigating regions.
37
+ .interface-interface-skeleton__sidebar {
38
+ .interface-navigable-region__stacker,
39
+ .edit-post-layout__toggle-sidebar-panel {
40
+ outline: inherit;
41
+ outline-offset: inherit;
23
42
  }
43
+ }
24
44
 
25
- &:focus {
26
- outline-style: solid;
27
- outline-color: var(--wp-admin-theme-color);
28
- outline-width: 4px;
29
- outline-offset: -4px;
45
+ // Publish sidebar toggle button shown when navigating regions.
46
+ .interface-interface-skeleton__actions {
47
+ .interface-navigable-region__stacker,
48
+ .edit-post-layout__toggle-publish-panel {
49
+ outline: inherit;
50
+ outline-offset: inherit;
30
51
  }
31
52
  }
53
+
54
+ // Publish sidebar.
55
+ [role="region"].interface-interface-skeleton__actions:focus .editor-post-publish-panel {
56
+ outline: 4px solid $components-color-accent;
57
+ outline-offset: -4px;
58
+ }
59
+
60
+ // Edit site Navigation Drawer.
61
+ .interface-interface-skeleton__drawer {
62
+ z-index: z-index(".edit-site-navigation-toggle");
63
+
64
+ .interface-navigable-region__stacker,
65
+ .edit-site-navigation-toggle {
66
+ outline: inherit;
67
+ outline-offset: inherit;
68
+ }
69
+
70
+ .edit-site-navigation-toggle.is-open {
71
+ outline: none;
72
+ }
73
+
74
+ .edit-site-navigation-toggle__button {
75
+ z-index: -1;
76
+ }
77
+ }
78
+ }
79
+
80
+ // Fixes for edge cases.
81
+ // Edit site Drawer.
82
+ .interface-interface-skeleton__drawer .interface-navigable-region__stacker {
83
+ height: 100%;
32
84
  }
@@ -49,7 +49,7 @@ const BaseComponent = ( { noticeOperations, noticeUI, notifications } ) => {
49
49
  noticeOperations.createNotice( item )
50
50
  );
51
51
  }
52
- }, [] );
52
+ }, [ noticeOperations, notifications ] );
53
53
  return (
54
54
  <div>
55
55
  { noticeUI }
@@ -33,7 +33,7 @@ interface BaseProps< P > {
33
33
  /**
34
34
  * The size (width and height) of the icon.
35
35
  *
36
- * @default 24
36
+ * @default `20` when a Dashicon is rendered, `24` for all other icons.
37
37
  */
38
38
  size?: number;
39
39
  }
@@ -48,13 +48,14 @@ export type Props< P > = BaseProps< P > & AdditionalProps< IconType< P > >;
48
48
 
49
49
  function Icon< P >( {
50
50
  icon = null,
51
- size = 24,
51
+ size = 'string' === typeof icon ? 20 : 24,
52
52
  ...additionalProps
53
53
  }: Props< P > ) {
54
54
  if ( 'string' === typeof icon ) {
55
55
  return (
56
56
  <Dashicon
57
57
  icon={ icon }
58
+ size={ size }
58
59
  { ...( additionalProps as HTMLProps< HTMLSpanElement > ) }
59
60
  />
60
61
  );
@@ -32,6 +32,16 @@ describe( 'Icon', () => {
32
32
  );
33
33
  } );
34
34
 
35
+ it( 'renders a dashicon with custom size', () => {
36
+ render(
37
+ <Icon data-testid={ testId } icon="format-image" size={ 10 } />
38
+ );
39
+
40
+ expect( screen.getByTestId( testId ) ).toHaveStyle( 'width:10px' );
41
+ expect( screen.getByTestId( testId ) ).toHaveStyle( 'height:10px' );
42
+ expect( screen.getByTestId( testId ) ).toHaveStyle( 'font-size:10px' );
43
+ } );
44
+
35
45
  it( 'renders a function', () => {
36
46
  render( <Icon icon={ () => <span data-testid={ testId } /> } /> );
37
47
 
package/src/index.js CHANGED
@@ -126,6 +126,7 @@ export { default as PanelHeader } from './panel/header';
126
126
  export { default as PanelRow } from './panel/row';
127
127
  export { default as Placeholder } from './placeholder';
128
128
  export { default as Popover } from './popover';
129
+ export { positionToPlacement as __experimentalPopoverPositionToPlacement } from './popover/utils';
129
130
  export { default as QueryControls } from './query-controls';
130
131
  export { default as __experimentalRadio } from './radio-group/radio';
131
132
  export { default as __experimentalRadioGroup } from './radio-group';
@@ -150,7 +150,7 @@ const ItemWithChevron = ( {
150
150
 
151
151
  const itemClassName = useMemo(
152
152
  () => cx( ! alwaysVisible && appearingChevron, className ),
153
- [ alwaysVisible, className, cx ]
153
+ [ alwaysVisible, className, cx, appearingChevron ]
154
154
  );
155
155
 
156
156
  const chevronIconClassName = useMemo(
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  /**
3
2
  * External dependencies
4
3
  */
@@ -10,7 +9,27 @@ import classnames from 'classnames';
10
9
  import { Children } from '@wordpress/element';
11
10
  import { useInstanceId } from '@wordpress/compose';
12
11
 
13
- export function MenuGroup( props ) {
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import type { MenuGroupProps } from './types';
16
+
17
+ /**
18
+ * `MenuGroup` wraps a series of related `MenuItem` components into a common
19
+ * section.
20
+ *
21
+ * ```jsx
22
+ * import { MenuGroup, MenuItem } from '@wordpress/components';
23
+ *
24
+ * const MyMenuGroup = () => (
25
+ * <MenuGroup label="Settings">
26
+ * <MenuItem>Setting 1</MenuItem>
27
+ * <MenuItem>Setting 2</MenuItem>
28
+ * </MenuGroup>
29
+ * );
30
+ * ```
31
+ */
32
+ export function MenuGroup( props: MenuGroupProps ) {
14
33
  const { children, className = '', label, hideSeparator } = props;
15
34
  const instanceId = useInstanceId( MenuGroup );
16
35
 
@@ -34,7 +53,7 @@ export function MenuGroup( props ) {
34
53
  { label }
35
54
  </div>
36
55
  ) }
37
- <div role="group" aria-labelledby={ label ? labelId : null }>
56
+ <div role="group" aria-labelledby={ label ? labelId : undefined }>
38
57
  { children }
39
58
  </div>
40
59
  </div>
File without changes
@@ -0,0 +1,23 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ReactNode } from 'react';
5
+
6
+ export type MenuGroupProps = {
7
+ /**
8
+ * A CSS `class` to give to the container element.
9
+ */
10
+ className?: string;
11
+ /**
12
+ * Hide the top border on the container.
13
+ */
14
+ hideSeparator?: boolean;
15
+ /**
16
+ * Text to be displayed as the menu group header.
17
+ */
18
+ label?: string;
19
+ /**
20
+ * The children elements.
21
+ */
22
+ children?: ReactNode;
23
+ };
@@ -45,7 +45,7 @@
45
45
  // Override the button component's tertiary background and color.
46
46
  &.is-tertiary {
47
47
  background: none;
48
- color: var(--wp-admin-theme-color-darker-10);
48
+ color: $components-color-accent-darker-10;
49
49
  opacity: 0.3;
50
50
  }
51
51
  }
@@ -33,7 +33,7 @@ afterAll( () => {
33
33
 
34
34
  it( 'allows modifying units via a11y actions', async () => {
35
35
  const mockOpenUnitPicker = jest.fn();
36
- const { getByA11yLabel } = render(
36
+ const { getByLabelText } = render(
37
37
  <RangeCell
38
38
  label="Opacity"
39
39
  minimumValue={ 0 }
@@ -44,7 +44,7 @@ it( 'allows modifying units via a11y actions', async () => {
44
44
  />
45
45
  );
46
46
 
47
- const opacityControl = getByA11yLabel( /Opacity/ );
47
+ const opacityControl = getByLabelText( /Opacity/ );
48
48
  fireEvent( opacityControl, 'accessibilityAction', {
49
49
  nativeEvent: { actionName: 'activate' },
50
50
  } );
@@ -54,7 +54,7 @@ it( 'allows modifying units via a11y actions', async () => {
54
54
 
55
55
  describe( 'when range lacks an adjustable unit', () => {
56
56
  it( 'disallows modifying units via a11y actions', async () => {
57
- const { getByA11yLabel } = render(
57
+ const { getByLabelText } = render(
58
58
  <RangeCell
59
59
  label="Opacity"
60
60
  minimumValue={ 0 }
@@ -64,7 +64,7 @@ describe( 'when range lacks an adjustable unit', () => {
64
64
  />
65
65
  );
66
66
 
67
- const opacityControl = getByA11yLabel( /Opacity/ );
67
+ const opacityControl = getByLabelText( /Opacity/ );
68
68
  const { onAccessibilityAction } = opacityControl.props;
69
69
  expect( () =>
70
70
  onAccessibilityAction( { nativeEvent: { actionName: 'activate' } } )
@@ -10,12 +10,12 @@ import { HTMLTextInput } from '..';
10
10
 
11
11
  // Finds the Content TextInput in our HTMLInputView.
12
12
  const findContentTextInput = ( screen ) => {
13
- return screen.getByA11yLabel( 'html-view-content' );
13
+ return screen.getByLabelText( 'html-view-content' );
14
14
  };
15
15
 
16
16
  // Finds the Title TextInput in our HTMLInputView.
17
17
  const findTitleTextInput = ( screen ) => {
18
- return screen.getByA11yLabel( 'html-view-title' );
18
+ return screen.getByLabelText( 'html-view-title' );
19
19
  };
20
20
 
21
21
  const getStylesFromColorScheme = () => {