@wordpress/components 21.1.2-next.4d3b314fd5.0 → 21.3.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 (401) hide show
  1. package/CHANGELOG.md +48 -3
  2. package/CONTRIBUTING.md +20 -0
  3. package/build/border-box-control/border-box-control/component.js +2 -0
  4. package/build/border-box-control/border-box-control/component.js.map +1 -1
  5. package/build/border-box-control/border-box-control/hook.js +4 -1
  6. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  7. package/build/border-box-control/utils.js +42 -2
  8. package/build/border-box-control/utils.js.map +1 -1
  9. package/build/border-control/border-control/component.js +2 -0
  10. package/build/border-control/border-control/component.js.map +1 -1
  11. package/build/combobox-control/index.js +0 -1
  12. package/build/combobox-control/index.js.map +1 -1
  13. package/build/custom-select-control/index.js +4 -2
  14. package/build/custom-select-control/index.js.map +1 -1
  15. package/build/disabled/index.js +6 -26
  16. package/build/disabled/index.js.map +1 -1
  17. package/build/font-size-picker/index.js +47 -56
  18. package/build/font-size-picker/index.js.map +1 -1
  19. package/build/font-size-picker/styles.js +65 -0
  20. package/build/font-size-picker/styles.js.map +1 -0
  21. package/build/font-size-picker/types.js +6 -0
  22. package/build/font-size-picker/types.js.map +1 -0
  23. package/build/font-size-picker/utils.js +18 -16
  24. package/build/font-size-picker/utils.js.map +1 -1
  25. package/build/form-token-field/suggestions-list.js +5 -5
  26. package/build/form-token-field/suggestions-list.js.map +1 -1
  27. package/build/form-token-field/token-input.js +20 -1
  28. package/build/form-token-field/token-input.js.map +1 -1
  29. package/build/higher-order/with-fallback-styles/index.js +1 -1
  30. package/build/higher-order/with-fallback-styles/index.js.map +1 -1
  31. package/build/index.js +14 -6
  32. package/build/index.js.map +1 -1
  33. package/build/modal/aria-helper.js +2 -3
  34. package/build/modal/aria-helper.js.map +1 -1
  35. package/build/modal/index.js +42 -11
  36. package/build/modal/index.js.map +1 -1
  37. package/build/modal/types.js +6 -0
  38. package/build/modal/types.js.map +1 -0
  39. package/build/navigator/index.js +8 -8
  40. package/build/navigator/index.js.map +1 -1
  41. package/build/navigator/navigator-back-button/component.js +5 -4
  42. package/build/navigator/navigator-back-button/component.js.map +1 -1
  43. package/build/navigator/navigator-back-button/index.js +1 -1
  44. package/build/navigator/navigator-back-button/index.js.map +1 -1
  45. package/build/navigator/navigator-button/component.js +5 -4
  46. package/build/navigator/navigator-button/component.js.map +1 -1
  47. package/build/navigator/navigator-button/index.js +1 -1
  48. package/build/navigator/navigator-button/index.js.map +1 -1
  49. package/build/navigator/navigator-provider/component.js +10 -7
  50. package/build/navigator/navigator-provider/component.js.map +1 -1
  51. package/build/navigator/navigator-provider/index.js +1 -1
  52. package/build/navigator/navigator-provider/index.js.map +1 -1
  53. package/build/navigator/navigator-screen/component.js +30 -26
  54. package/build/navigator/navigator-screen/component.js.map +1 -1
  55. package/build/navigator/navigator-screen/index.js +1 -1
  56. package/build/navigator/navigator-screen/index.js.map +1 -1
  57. package/build/resizable-box/resize-tooltip/utils.js +12 -14
  58. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  59. package/build/sandbox/index.js +68 -67
  60. package/build/sandbox/index.js.map +1 -1
  61. package/build/sandbox/index.native.js +66 -63
  62. package/build/sandbox/index.native.js.map +1 -1
  63. package/build/search-control/index.native.js +6 -2
  64. package/build/search-control/index.native.js.map +1 -1
  65. package/build/slot-fill/bubbles-virtually/slot-fill-context.js +8 -2
  66. package/build/slot-fill/bubbles-virtually/slot-fill-context.js.map +1 -1
  67. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js +31 -41
  68. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  69. package/build/slot-fill/bubbles-virtually/use-slot-fills.js +39 -0
  70. package/build/slot-fill/bubbles-virtually/use-slot-fills.js.map +1 -0
  71. package/build/slot-fill/bubbles-virtually/use-slot.js +13 -4
  72. package/build/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  73. package/build/slot-fill/index.js +8 -0
  74. package/build/slot-fill/index.js.map +1 -1
  75. package/build/tab-panel/index.js +4 -4
  76. package/build/tab-panel/index.js.map +1 -1
  77. package/build/theme/index.js +62 -0
  78. package/build/theme/index.js.map +1 -0
  79. package/build/theme/styles.js +33 -0
  80. package/build/theme/styles.js.map +1 -0
  81. package/build/theme/types.js +6 -0
  82. package/build/theme/types.js.map +1 -0
  83. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +8 -8
  84. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  85. package/build/tools-panel/tools-panel/hook.js +3 -3
  86. package/build/tools-panel/tools-panel/hook.js.map +1 -1
  87. package/build/tools-panel/tools-panel-item/hook.js +6 -6
  88. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  89. package/build/tooltip/index.js +4 -1
  90. package/build/tooltip/index.js.map +1 -1
  91. package/build/tooltip/index.native.js +17 -4
  92. package/build/tooltip/index.native.js.map +1 -1
  93. package/build-module/border-box-control/border-box-control/component.js +2 -0
  94. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  95. package/build-module/border-box-control/border-box-control/hook.js +4 -1
  96. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  97. package/build-module/border-box-control/utils.js +36 -1
  98. package/build-module/border-box-control/utils.js.map +1 -1
  99. package/build-module/border-control/border-control/component.js +2 -0
  100. package/build-module/border-control/border-control/component.js.map +1 -1
  101. package/build-module/combobox-control/index.js +0 -1
  102. package/build-module/combobox-control/index.js.map +1 -1
  103. package/build-module/custom-select-control/index.js +2 -1
  104. package/build-module/custom-select-control/index.js.map +1 -1
  105. package/build-module/disabled/index.js +7 -26
  106. package/build-module/disabled/index.js.map +1 -1
  107. package/build-module/font-size-picker/index.js +46 -54
  108. package/build-module/font-size-picker/index.js.map +1 -1
  109. package/build-module/font-size-picker/styles.js +54 -0
  110. package/build-module/font-size-picker/styles.js.map +1 -0
  111. package/build-module/font-size-picker/types.js +2 -0
  112. package/build-module/font-size-picker/types.js.map +1 -0
  113. package/build-module/font-size-picker/utils.js +22 -16
  114. package/build-module/font-size-picker/utils.js.map +1 -1
  115. package/build-module/form-token-field/suggestions-list.js +5 -5
  116. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  117. package/build-module/form-token-field/token-input.js +21 -2
  118. package/build-module/form-token-field/token-input.js.map +1 -1
  119. package/build-module/higher-order/with-fallback-styles/index.js +2 -2
  120. package/build-module/higher-order/with-fallback-styles/index.js.map +1 -1
  121. package/build-module/index.js +3 -2
  122. package/build-module/index.js.map +1 -1
  123. package/build-module/modal/aria-helper.js +2 -3
  124. package/build-module/modal/aria-helper.js.map +1 -1
  125. package/build-module/modal/index.js +44 -12
  126. package/build-module/modal/index.js.map +1 -1
  127. package/build-module/modal/types.js +2 -0
  128. package/build-module/modal/types.js.map +1 -0
  129. package/build-module/navigator/index.js +4 -4
  130. package/build-module/navigator/index.js.map +1 -1
  131. package/build-module/navigator/navigator-back-button/component.js +3 -3
  132. package/build-module/navigator/navigator-back-button/component.js.map +1 -1
  133. package/build-module/navigator/navigator-back-button/index.js +1 -1
  134. package/build-module/navigator/navigator-back-button/index.js.map +1 -1
  135. package/build-module/navigator/navigator-button/component.js +3 -3
  136. package/build-module/navigator/navigator-button/component.js.map +1 -1
  137. package/build-module/navigator/navigator-button/index.js +1 -1
  138. package/build-module/navigator/navigator-button/index.js.map +1 -1
  139. package/build-module/navigator/navigator-provider/component.js +8 -6
  140. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  141. package/build-module/navigator/navigator-provider/index.js +1 -1
  142. package/build-module/navigator/navigator-provider/index.js.map +1 -1
  143. package/build-module/navigator/navigator-screen/component.js +18 -25
  144. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  145. package/build-module/navigator/navigator-screen/index.js +1 -1
  146. package/build-module/navigator/navigator-screen/index.js.map +1 -1
  147. package/build-module/resizable-box/resize-tooltip/utils.js +13 -15
  148. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  149. package/build-module/sandbox/index.js +69 -67
  150. package/build-module/sandbox/index.js.map +1 -1
  151. package/build-module/sandbox/index.native.js +57 -53
  152. package/build-module/sandbox/index.native.js.map +1 -1
  153. package/build-module/search-control/index.native.js +6 -2
  154. package/build-module/search-control/index.native.js.map +1 -1
  155. package/build-module/slot-fill/bubbles-virtually/slot-fill-context.js +7 -2
  156. package/build-module/slot-fill/bubbles-virtually/slot-fill-context.js.map +1 -1
  157. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js +30 -42
  158. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  159. package/build-module/slot-fill/bubbles-virtually/use-slot-fills.js +27 -0
  160. package/build-module/slot-fill/bubbles-virtually/use-slot-fills.js.map +1 -0
  161. package/build-module/slot-fill/bubbles-virtually/use-slot.js +13 -5
  162. package/build-module/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  163. package/build-module/slot-fill/index.js +1 -0
  164. package/build-module/slot-fill/index.js.map +1 -1
  165. package/build-module/tab-panel/index.js +4 -4
  166. package/build-module/tab-panel/index.js.map +1 -1
  167. package/build-module/theme/index.js +52 -0
  168. package/build-module/theme/index.js.map +1 -0
  169. package/build-module/theme/styles.js +25 -0
  170. package/build-module/theme/styles.js.map +1 -0
  171. package/build-module/theme/types.js +2 -0
  172. package/build-module/theme/types.js.map +1 -0
  173. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +7 -7
  174. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  175. package/build-module/tools-panel/tools-panel/hook.js +3 -3
  176. package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
  177. package/build-module/tools-panel/tools-panel-item/hook.js +6 -6
  178. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  179. package/build-module/tooltip/index.js +4 -1
  180. package/build-module/tooltip/index.js.map +1 -1
  181. package/build-module/tooltip/index.native.js +17 -4
  182. package/build-module/tooltip/index.native.js.map +1 -1
  183. package/build-style/style-rtl.css +27 -120
  184. package/build-style/style.css +27 -120
  185. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  186. package/build-types/border-box-control/border-box-control/hook.d.ts +1 -0
  187. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  188. package/build-types/border-box-control/utils.d.ts +1 -3
  189. package/build-types/border-box-control/utils.d.ts.map +1 -1
  190. package/build-types/border-control/border-control/component.d.ts +1 -0
  191. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  192. package/build-types/border-control/border-control/hook.d.ts +1 -0
  193. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  194. package/build-types/border-control/stories/index.d.ts +6 -0
  195. package/build-types/border-control/stories/index.d.ts.map +1 -1
  196. package/build-types/border-control/types.d.ts +4 -0
  197. package/build-types/border-control/types.d.ts.map +1 -1
  198. package/build-types/confirm-dialog/types.d.ts +5 -1
  199. package/build-types/confirm-dialog/types.d.ts.map +1 -1
  200. package/build-types/custom-select-control/index.d.ts +13 -0
  201. package/build-types/custom-select-control/index.d.ts.map +1 -0
  202. package/build-types/custom-select-control/styles.d.ts +9 -0
  203. package/build-types/custom-select-control/styles.d.ts.map +1 -0
  204. package/build-types/disabled/index.d.ts.map +1 -1
  205. package/build-types/font-size-picker/index.d.ts +5 -0
  206. package/build-types/font-size-picker/index.d.ts.map +1 -0
  207. package/build-types/font-size-picker/stories/e2e/index.d.ts +16 -0
  208. package/build-types/font-size-picker/stories/e2e/index.d.ts.map +1 -0
  209. package/build-types/font-size-picker/stories/index.d.ts +31 -0
  210. package/build-types/font-size-picker/stories/index.d.ts.map +1 -0
  211. package/build-types/font-size-picker/styles.d.ts +27 -0
  212. package/build-types/font-size-picker/styles.d.ts.map +1 -0
  213. package/build-types/font-size-picker/test/index.d.ts +2 -0
  214. package/build-types/font-size-picker/test/index.d.ts.map +1 -0
  215. package/build-types/font-size-picker/test/utils.d.ts +2 -0
  216. package/build-types/font-size-picker/test/utils.d.ts.map +1 -0
  217. package/build-types/font-size-picker/types.d.ts +93 -0
  218. package/build-types/font-size-picker/types.d.ts.map +1 -0
  219. package/build-types/font-size-picker/utils.d.ts +41 -0
  220. package/build-types/font-size-picker/utils.d.ts.map +1 -0
  221. package/build-types/form-token-field/token-input.d.ts.map +1 -1
  222. package/build-types/modal/aria-helper.d.ts +4 -4
  223. package/build-types/modal/aria-helper.d.ts.map +1 -1
  224. package/build-types/modal/index.d.ts +35 -2
  225. package/build-types/modal/index.d.ts.map +1 -1
  226. package/build-types/modal/stories/index.d.ts +9 -0
  227. package/build-types/modal/stories/index.d.ts.map +1 -0
  228. package/build-types/modal/test/aria-helper.d.ts +2 -0
  229. package/build-types/modal/test/aria-helper.d.ts.map +1 -0
  230. package/build-types/modal/test/index.d.ts +2 -0
  231. package/build-types/modal/test/index.d.ts.map +1 -0
  232. package/build-types/modal/types.d.ts +134 -0
  233. package/build-types/modal/types.d.ts.map +1 -0
  234. package/build-types/navigator/index.d.ts +4 -4
  235. package/build-types/navigator/index.d.ts.map +1 -1
  236. package/build-types/navigator/navigator-back-button/component.d.ts +4 -2
  237. package/build-types/navigator/navigator-back-button/component.d.ts.map +1 -1
  238. package/build-types/navigator/navigator-back-button/hook.d.ts +1 -0
  239. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  240. package/build-types/navigator/navigator-back-button/index.d.ts +1 -1
  241. package/build-types/navigator/navigator-back-button/index.d.ts.map +1 -1
  242. package/build-types/navigator/navigator-button/component.d.ts +4 -2
  243. package/build-types/navigator/navigator-button/component.d.ts.map +1 -1
  244. package/build-types/navigator/navigator-button/hook.d.ts +1 -0
  245. package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
  246. package/build-types/navigator/navigator-button/index.d.ts +1 -1
  247. package/build-types/navigator/navigator-button/index.d.ts.map +1 -1
  248. package/build-types/navigator/navigator-provider/component.d.ts +2 -2
  249. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  250. package/build-types/navigator/navigator-provider/index.d.ts +1 -1
  251. package/build-types/navigator/navigator-provider/index.d.ts.map +1 -1
  252. package/build-types/navigator/navigator-screen/component.d.ts +2 -2
  253. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  254. package/build-types/navigator/navigator-screen/index.d.ts +1 -1
  255. package/build-types/navigator/navigator-screen/index.d.ts.map +1 -1
  256. package/build-types/navigator/stories/index.d.ts +9 -0
  257. package/build-types/navigator/stories/index.d.ts.map +1 -0
  258. package/build-types/navigator/test/index.d.ts +2 -0
  259. package/build-types/navigator/test/index.d.ts.map +1 -0
  260. package/build-types/navigator/types.d.ts +4 -1
  261. package/build-types/navigator/types.d.ts.map +1 -1
  262. package/build-types/slot-fill/bubbles-virtually/slot-fill-context.d.ts +2 -2
  263. package/build-types/slot-fill/bubbles-virtually/slot-fill-context.d.ts.map +1 -1
  264. package/build-types/slot-fill/bubbles-virtually/slot-fill-provider.d.ts.map +1 -1
  265. package/build-types/slot-fill/bubbles-virtually/use-slot-fills.d.ts +2 -0
  266. package/build-types/slot-fill/bubbles-virtually/use-slot-fills.d.ts.map +1 -0
  267. package/build-types/slot-fill/bubbles-virtually/use-slot.d.ts.map +1 -1
  268. package/build-types/slot-fill/index.d.ts +1 -0
  269. package/build-types/slot-fill/index.d.ts.map +1 -1
  270. package/build-types/tab-panel/index.d.ts.map +1 -1
  271. package/build-types/theme/index.d.ts +31 -0
  272. package/build-types/theme/index.d.ts.map +1 -0
  273. package/build-types/theme/stories/index.d.ts +13 -0
  274. package/build-types/theme/stories/index.d.ts.map +1 -0
  275. package/build-types/theme/styles.d.ts +10 -0
  276. package/build-types/theme/styles.d.ts.map +1 -0
  277. package/build-types/theme/test/index.d.ts +2 -0
  278. package/build-types/theme/test/index.d.ts.map +1 -0
  279. package/build-types/theme/types.d.ts +21 -0
  280. package/build-types/theme/types.d.ts.map +1 -0
  281. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +1 -1
  282. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  283. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  284. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  285. package/build-types/tooltip/index.d.ts.map +1 -1
  286. package/package.json +19 -18
  287. package/src/alignment-matrix-control/test/index.js +17 -62
  288. package/src/base-field/test/index.js +4 -6
  289. package/src/border-box-control/border-box-control/component.tsx +2 -0
  290. package/src/border-box-control/border-box-control/hook.ts +4 -0
  291. package/src/border-box-control/test/index.js +7 -2
  292. package/src/border-box-control/test/utils.js +48 -0
  293. package/src/border-box-control/utils.ts +44 -1
  294. package/src/border-control/border-control/README.md +6 -0
  295. package/src/border-control/border-control/component.tsx +2 -0
  296. package/src/border-control/types.ts +4 -0
  297. package/src/button/style.scss +25 -25
  298. package/src/button/test/index.js +3 -5
  299. package/src/combobox-control/index.js +0 -5
  300. package/src/combobox-control/test/index.js +1 -1
  301. package/src/confirm-dialog/types.ts +6 -0
  302. package/src/custom-select-control/index.js +2 -1
  303. package/src/date-time/time/test/index.tsx +2 -6
  304. package/src/disabled/index.tsx +11 -33
  305. package/src/disabled/test/index.tsx +14 -82
  306. package/src/dropdown/test/index.js +4 -3
  307. package/src/font-size-picker/{index.js → index.tsx} +114 -80
  308. package/src/font-size-picker/stories/e2e/{index.js → index.tsx} +13 -4
  309. package/src/font-size-picker/stories/{index.js → index.tsx} +42 -36
  310. package/src/font-size-picker/styles.ts +46 -0
  311. package/src/font-size-picker/test/{index.js → index.tsx} +3 -3
  312. package/src/font-size-picker/test/{utils.js → utils.ts} +11 -7
  313. package/src/font-size-picker/types.ts +98 -0
  314. package/src/font-size-picker/{utils.js → utils.ts} +52 -28
  315. package/src/form-file-upload/test/index.tsx +1 -1
  316. package/src/form-token-field/suggestions-list.tsx +5 -5
  317. package/src/form-token-field/test/index.tsx +22 -1
  318. package/src/form-token-field/token-input.tsx +25 -3
  319. package/src/higher-order/with-fallback-styles/index.js +6 -2
  320. package/src/higher-order/with-focus-outside/test/index.js +44 -45
  321. package/src/higher-order/with-focus-return/test/index.js +34 -30
  322. package/src/higher-order/with-notices/test/index.js +1 -1
  323. package/src/index.js +3 -1
  324. package/src/input-control/test/index.js +2 -2
  325. package/src/item-group/test/index.js +2 -2
  326. package/src/menu-item/test/index.js +0 -3
  327. package/src/mobile/bottom-sheet/test/range-cell.native.js +16 -14
  328. package/src/modal/README.md +53 -54
  329. package/src/modal/{aria-helper.js → aria-helper.ts} +5 -7
  330. package/src/modal/{index.js → index.tsx} +48 -12
  331. package/src/modal/stories/{index.js → index.tsx} +47 -42
  332. package/src/modal/test/{aria-helper.js → aria-helper.ts} +0 -0
  333. package/src/modal/test/{index.js → index.tsx} +13 -3
  334. package/src/modal/types.ts +144 -0
  335. package/src/navigation/test/index.js +1 -1
  336. package/src/navigator/index.ts +4 -4
  337. package/src/navigator/navigator-back-button/component.tsx +4 -4
  338. package/src/navigator/navigator-back-button/index.ts +1 -1
  339. package/src/navigator/navigator-button/component.tsx +4 -4
  340. package/src/navigator/navigator-button/index.ts +1 -1
  341. package/src/navigator/navigator-provider/component.tsx +6 -4
  342. package/src/navigator/navigator-provider/index.ts +1 -1
  343. package/src/navigator/navigator-screen/component.tsx +27 -26
  344. package/src/navigator/navigator-screen/index.ts +1 -1
  345. package/src/navigator/stories/index.tsx +210 -0
  346. package/src/navigator/test/index.tsx +509 -0
  347. package/src/navigator/types.ts +2 -0
  348. package/src/notice/test/__snapshots__/index.js.snap +39 -38
  349. package/src/notice/test/index.js +15 -36
  350. package/src/notice/test/list.js +6 -14
  351. package/src/number-control/test/index.js +3 -2
  352. package/src/panel/test/body.js +2 -2
  353. package/src/placeholder/style.scss +7 -2
  354. package/src/resizable-box/resize-tooltip/utils.ts +13 -13
  355. package/src/sandbox/index.js +75 -54
  356. package/src/sandbox/index.native.js +75 -52
  357. package/src/sandbox/test/index.js +7 -10
  358. package/src/search-control/index.native.js +6 -0
  359. package/src/shortcut/test/index.tsx +1 -1
  360. package/src/slot-fill/bubbles-virtually/slot-fill-context.js +6 -2
  361. package/src/slot-fill/bubbles-virtually/slot-fill-provider.js +53 -58
  362. package/src/slot-fill/bubbles-virtually/use-slot-fills.js +24 -0
  363. package/src/slot-fill/bubbles-virtually/use-slot.js +11 -6
  364. package/src/slot-fill/index.js +1 -0
  365. package/src/style.scss +4 -1
  366. package/src/tab-panel/index.tsx +4 -7
  367. package/src/text-highlight/test/index.tsx +1 -3
  368. package/src/theme/README.md +34 -0
  369. package/src/theme/index.tsx +51 -0
  370. package/src/theme/stories/index.tsx +47 -0
  371. package/src/theme/styles.ts +28 -0
  372. package/src/theme/test/index.tsx +101 -0
  373. package/src/theme/types.ts +21 -0
  374. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +1 -0
  375. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +9 -7
  376. package/src/toolbar/test/index.js +2 -2
  377. package/src/toolbar-group/test/index.js +6 -10
  378. package/src/tools-panel/test/index.js +4 -6
  379. package/src/tools-panel/tools-panel/hook.ts +2 -9
  380. package/src/tools-panel/tools-panel-item/hook.ts +17 -3
  381. package/src/tooltip/index.js +3 -0
  382. package/src/tooltip/index.native.js +15 -0
  383. package/src/tooltip/test/index.native.js +1 -2
  384. package/src/tree-grid/test/__snapshots__/cell.js.snap +1 -3
  385. package/src/tree-grid/test/__snapshots__/roving-tab-index-item.js.snap +17 -15
  386. package/src/tree-grid/test/__snapshots__/row.js.snap +25 -21
  387. package/src/tree-grid/test/cell.js +4 -4
  388. package/src/tree-grid/test/roving-tab-index-item.js +8 -8
  389. package/src/tree-grid/test/roving-tab-index.js +3 -3
  390. package/src/tree-grid/test/row.js +20 -16
  391. package/src/truncate/test/index.tsx +4 -4
  392. package/src/ui/shortcut/test/index.js +2 -1
  393. package/src/ui/spinner/test/index.js +14 -13
  394. package/src/ui/tooltip/test/index.js +16 -14
  395. package/src/utils/theme-variables.scss +8 -0
  396. package/src/visually-hidden/README.md +4 -0
  397. package/tsconfig.json +0 -2
  398. package/tsconfig.tsbuildinfo +1 -1
  399. package/src/font-size-picker/style.scss +0 -78
  400. package/src/navigator/stories/index.js +0 -194
  401. package/src/navigator/test/index.js +0 -407
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen, waitFor } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -9,35 +9,6 @@ import { render, screen, waitFor } from '@testing-library/react';
9
9
  import Disabled from '../';
10
10
  import userEvent from '@testing-library/user-event';
11
11
 
12
- jest.mock( '@wordpress/dom', () => {
13
- const focus = jest.requireActual( '../../../../dom/src' ).focus;
14
- return {
15
- focus: {
16
- ...focus,
17
- focusable: {
18
- ...focus.focusable,
19
- find( context: Element, options = { sequential: false } ) {
20
- // In JSDOM, all elements have zero'd widths and height.
21
- // This is a metric for focusable's `isVisible`, so find
22
- // and apply an arbitrary non-zero width.
23
- Array.from( context.querySelectorAll( '*' ) ).forEach(
24
- ( element ) => {
25
- Object.defineProperties( element, {
26
- offsetWidth: {
27
- get: () => 1,
28
- configurable: true,
29
- },
30
- } );
31
- }
32
- );
33
-
34
- return focus.focusable.find( context, options );
35
- },
36
- },
37
- },
38
- };
39
- } );
40
-
41
12
  describe( 'Disabled', () => {
42
13
  const Form = () => (
43
14
  <form title="form">
@@ -47,18 +18,14 @@ describe( 'Disabled', () => {
47
18
  );
48
19
 
49
20
  it( 'will disable all fields', () => {
50
- render(
21
+ const { container } = render(
51
22
  <Disabled>
52
23
  <Form />
53
24
  </Disabled>
54
25
  );
55
26
 
56
- const input = screen.getByRole( 'textbox' );
57
- const contentEditable = screen.getByTitle( 'edit my content' );
58
- expect( input ).toBeDisabled();
59
- expect( contentEditable ).toHaveAttribute( 'contenteditable', 'false' );
60
- expect( contentEditable ).not.toHaveAttribute( 'tabindex' );
61
- expect( contentEditable ).not.toHaveAttribute( 'disabled' );
27
+ // @ts-ignore
28
+ expect( container.firstChild ).toHaveAttribute( 'inert' );
62
29
  } );
63
30
 
64
31
  it( 'should cleanly un-disable via reconciliation', () => {
@@ -71,19 +38,15 @@ describe( 'Disabled', () => {
71
38
  <Form />
72
39
  );
73
40
 
74
- const { rerender } = render( <MaybeDisable /> );
41
+ const { container, rerender } = render( <MaybeDisable /> );
75
42
 
76
- const input = screen.getByRole( 'textbox' );
77
- const contentEditable = screen.getByTitle( 'edit my content' );
78
-
79
- expect( input ).toBeDisabled();
80
- expect( contentEditable ).toHaveAttribute( 'contenteditable', 'false' );
43
+ // @ts-ignore
44
+ expect( container.firstChild ).toHaveAttribute( 'inert' );
81
45
 
82
46
  rerender( <MaybeDisable isDisabled={ false } /> );
83
47
 
84
- expect( input ).not.toBeDisabled();
85
- expect( contentEditable ).toHaveAttribute( 'contenteditable', 'true' );
86
- expect( contentEditable ).toHaveAttribute( 'tabindex' );
48
+ // @ts-ignore
49
+ expect( container.firstChild ).not.toHaveAttribute( 'inert' );
87
50
  } );
88
51
 
89
52
  it( 'will disable or enable descendant fields based on the isDisabled prop value', () => {
@@ -93,46 +56,15 @@ describe( 'Disabled', () => {
93
56
  </Disabled>
94
57
  );
95
58
 
96
- const { rerender } = render( <MaybeDisable /> );
97
-
98
- const input = screen.getByRole( 'textbox' );
99
- const contentEditable = screen.getByTitle( 'edit my content' );
59
+ const { rerender, container } = render( <MaybeDisable /> );
100
60
 
101
- expect( input ).toBeDisabled();
102
- expect( contentEditable ).toHaveAttribute( 'contenteditable', 'false' );
61
+ // @ts-ignore
62
+ expect( container.firstChild ).toHaveAttribute( 'inert' );
103
63
 
104
64
  rerender( <MaybeDisable isDisabled={ false } /> );
105
65
 
106
- expect( input ).not.toBeDisabled();
107
- expect( contentEditable ).toHaveAttribute( 'contenteditable', 'true' );
108
- } );
109
-
110
- it( 'will disable all fields on sneaky DOM manipulation', async () => {
111
- render(
112
- <Disabled>
113
- <Form />
114
- </Disabled>
115
- );
116
-
117
- const form = screen.getByTitle( 'form' );
118
- form.insertAdjacentHTML(
119
- 'beforeend',
120
- '<input title="sneaky input" />'
121
- );
122
- form.insertAdjacentHTML(
123
- 'beforeend',
124
- '<div title="sneaky editable content" contentEditable tabIndex={ 0 } />'
125
- );
126
- const sneakyInput = screen.getByTitle( 'sneaky input' );
127
- const sneakyEditable = screen.getByTitle( 'sneaky editable content' );
128
-
129
- await waitFor( () => expect( sneakyInput ).toBeDisabled() );
130
- await waitFor( () =>
131
- expect( sneakyEditable ).toHaveAttribute(
132
- 'contenteditable',
133
- 'false'
134
- )
135
- );
66
+ // @ts-ignore
67
+ expect( container.firstChild ).not.toHaveAttribute( 'inert' );
136
68
  } );
137
69
 
138
70
  it( 'should preserve input values when toggling the isDisabled prop', async () => {
@@ -28,9 +28,10 @@ describe( 'Dropdown', () => {
28
28
  it( 'should toggle the dropdown properly', () => {
29
29
  const expectButtonExpanded = ( container, expanded ) => {
30
30
  expect( container.querySelectorAll( 'button' ) ).toHaveLength( 1 );
31
- expect(
32
- getButtonElement( container ).getAttribute( 'aria-expanded' )
33
- ).toBe( expanded.toString() );
31
+ expect( getButtonElement( container ) ).toHaveAttribute(
32
+ 'aria-expanded',
33
+ expanded.toString()
34
+ );
34
35
  };
35
36
 
36
37
  const {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classNames from 'classnames';
4
+ import type { ReactNode, ForwardedRef } from 'react';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -14,7 +14,6 @@ import { useState, useMemo, forwardRef } from '@wordpress/element';
14
14
  /**
15
15
  * Internal dependencies
16
16
  */
17
- import { BaseControl } from '../base-control';
18
17
  import Button from '../button';
19
18
  import RangeControl from '../range-control';
20
19
  import { Flex, FlexItem } from '../flex';
@@ -34,31 +33,50 @@ import {
34
33
  } from './utils';
35
34
  import { VStack } from '../v-stack';
36
35
  import { HStack } from '../h-stack';
36
+ import type {
37
+ FontSizePickerProps,
38
+ FontSizeSelectOption,
39
+ FontSizeToggleGroupOption,
40
+ } from './types';
41
+ import {
42
+ Container,
43
+ HeaderHint,
44
+ HeaderLabel,
45
+ Controls,
46
+ ResetButton,
47
+ } from './styles';
48
+ import { Spacer } from '../spacer';
37
49
 
38
50
  // This conditional is needed to maintain the spacing before the slider in the `withSlider` case.
39
- const MaybeVStack = ( { __nextHasNoMarginBottom, children } ) =>
51
+ const MaybeVStack = ( {
52
+ __nextHasNoMarginBottom,
53
+ children,
54
+ }: {
55
+ __nextHasNoMarginBottom: boolean;
56
+ children: ReactNode;
57
+ } ) =>
40
58
  ! __nextHasNoMarginBottom ? (
41
- children
59
+ <>{ children }</>
42
60
  ) : (
43
61
  <VStack spacing={ 6 } children={ children } />
44
62
  );
45
63
 
46
- function FontSizePicker(
47
- {
64
+ const UnforwardedFontSizePicker = (
65
+ props: FontSizePickerProps,
66
+ ref: ForwardedRef< any >
67
+ ) => {
68
+ const {
48
69
  /** Start opting into the new margin-free styles that will become the default in a future version. */
49
70
  __nextHasNoMarginBottom = false,
50
71
  fallbackFontSize,
51
72
  fontSizes = [],
52
73
  disableCustomFontSizes = false,
53
74
  onChange,
54
- /** @type {'default' | '__unstable-large'} */
55
75
  size = 'default',
56
76
  value,
57
77
  withSlider = false,
58
78
  withReset = true,
59
- },
60
- ref
61
- ) {
79
+ } = props;
62
80
  if ( ! __nextHasNoMarginBottom ) {
63
81
  deprecated( 'Bottom margin styles for wp.components.FontSizePicker', {
64
82
  since: '6.1',
@@ -70,7 +88,7 @@ function FontSizePicker(
70
88
  const hasUnits = [ typeof value, typeof fontSizes?.[ 0 ]?.size ].includes(
71
89
  'string'
72
90
  );
73
- const noUnitsValue = ! hasUnits ? value : parseInt( value );
91
+ const noUnitsValue = ! hasUnits ? value : parseInt( String( value ) );
74
92
  const isPixelValue = typeof value === 'number' || value?.endsWith?.( 'px' );
75
93
  const units = useCustomUnits( {
76
94
  availableUnits: [ 'px', 'em', 'rem' ],
@@ -106,17 +124,22 @@ function FontSizePicker(
106
124
  // If we have a custom value that is not available in the font sizes,
107
125
  // show it as a hint as long as it's a simple CSS value.
108
126
  if ( isCustomValue ) {
109
- return isSimpleCssValue( value ) && `(${ value })`;
127
+ return (
128
+ value !== undefined &&
129
+ isSimpleCssValue( value ) &&
130
+ `(${ value })`
131
+ );
110
132
  }
111
133
  if ( shouldUseSelectControl ) {
112
134
  return (
135
+ selectedOption?.size !== undefined &&
113
136
  isSimpleCssValue( selectedOption?.size ) &&
114
137
  `(${ selectedOption?.size })`
115
138
  );
116
139
  }
117
140
 
118
141
  // Calculate the `hint` for toggle group control.
119
- let hint = selectedOption.name;
142
+ let hint = selectedOption?.name || selectedOption.slug;
120
143
  if (
121
144
  ! fontSizesContainComplexValues &&
122
145
  typeof selectedOption.size === 'string'
@@ -146,59 +169,65 @@ function FontSizePicker(
146
169
  __( 'Currently selected font size: %s' ),
147
170
  selectedOption.name
148
171
  );
149
- const baseClassName = 'components-font-size-picker';
150
172
  return (
151
- <fieldset className={ baseClassName } { ...( ref ? {} : { ref } ) }>
173
+ <Container ref={ ref } className="components-font-size-picker">
152
174
  <VisuallyHidden as="legend">{ __( 'Font size' ) }</VisuallyHidden>
153
- <HStack className={ `${ baseClassName }__header` }>
154
- <BaseControl.VisualLabel>
155
- { __( 'Size' ) }
156
- { headerHint && (
157
- <span className={ `${ baseClassName }__header__hint` }>
158
- { headerHint }
159
- </span>
175
+ <Spacer>
176
+ <HStack className="components-font-size-picker__header">
177
+ <HeaderLabel>
178
+ { __( 'Size' ) }
179
+ { headerHint && (
180
+ <HeaderHint className="components-font-size-picker__header__hint">
181
+ { headerHint }
182
+ </HeaderHint>
183
+ ) }
184
+ </HeaderLabel>
185
+ { ! disableCustomFontSizes && (
186
+ <Button
187
+ label={
188
+ showCustomValueControl
189
+ ? __( 'Use size preset' )
190
+ : __( 'Set custom size' )
191
+ }
192
+ icon={ settings }
193
+ onClick={ () => {
194
+ setShowCustomValueControl(
195
+ ! showCustomValueControl
196
+ );
197
+ } }
198
+ isPressed={ showCustomValueControl }
199
+ isSmall
200
+ />
160
201
  ) }
161
- </BaseControl.VisualLabel>
162
- { ! disableCustomFontSizes && (
163
- <Button
164
- label={
165
- showCustomValueControl
166
- ? __( 'Use size preset' )
167
- : __( 'Set custom size' )
168
- }
169
- icon={ settings }
170
- onClick={ () => {
171
- setShowCustomValueControl(
172
- ! showCustomValueControl
173
- );
174
- } }
175
- isPressed={ showCustomValueControl }
176
- isSmall
177
- />
178
- ) }
179
- </HStack>
202
+ </HStack>
203
+ </Spacer>
180
204
  <MaybeVStack __nextHasNoMarginBottom={ __nextHasNoMarginBottom }>
181
- <div
182
- className={ classNames( `${ baseClassName }__controls`, {
183
- 'is-next-has-no-margin-bottom': __nextHasNoMarginBottom,
184
- } ) }
205
+ <Controls
206
+ className="components-font-size-picker__controls"
207
+ __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
185
208
  >
186
209
  { !! fontSizes.length &&
187
210
  shouldUseSelectControl &&
188
211
  ! showCustomValueControl && (
189
212
  <CustomSelectControl
190
213
  __nextUnconstrainedWidth
191
- className={ `${ baseClassName }__select` }
214
+ className="components-font-size-picker__select"
192
215
  label={ __( 'Font size' ) }
193
216
  hideLabelFromVision
194
217
  describedBy={ currentFontSizeSR }
195
- options={ options }
196
- value={ options.find(
218
+ options={ options as FontSizeSelectOption[] }
219
+ value={ (
220
+ options as FontSizeSelectOption[]
221
+ ).find(
197
222
  ( option ) =>
198
223
  option.key === selectedOption.slug
199
224
  ) }
200
- onChange={ ( { selectedItem } ) => {
201
- onChange(
225
+ onChange={ ( {
226
+ selectedItem,
227
+ }: {
228
+ selectedItem: FontSizeSelectOption;
229
+ } ) => {
230
+ onChange?.(
202
231
  hasUnits
203
232
  ? selectedItem.size
204
233
  : Number( selectedItem.size )
@@ -219,31 +248,30 @@ function FontSizePicker(
219
248
  hideLabelFromVision
220
249
  value={ value }
221
250
  onChange={ ( newValue ) => {
222
- onChange(
251
+ onChange?.(
223
252
  hasUnits ? newValue : Number( newValue )
224
253
  );
225
254
  } }
226
255
  isBlock
227
256
  size={ size }
228
257
  >
229
- { options.map( ( option ) => (
230
- <ToggleGroupControlOption
231
- key={ option.key }
232
- value={ option.value }
233
- label={ option.label }
234
- aria-label={ option.name }
235
- showTooltip={ true }
236
- />
237
- ) ) }
258
+ { ( options as FontSizeToggleGroupOption[] ).map(
259
+ ( option ) => (
260
+ <ToggleGroupControlOption
261
+ key={ option.key }
262
+ value={ option.value }
263
+ label={ option.label }
264
+ aria-label={ option.name }
265
+ showTooltip={ true }
266
+ />
267
+ )
268
+ ) }
238
269
  </ToggleGroupControl>
239
270
  ) }
240
271
  { ! withSlider &&
241
272
  ! disableCustomFontSizes &&
242
273
  showCustomValueControl && (
243
- <Flex
244
- justify="space-between"
245
- className={ `${ baseClassName }__custom-size-control` }
246
- >
274
+ <Flex className="components-font-size-picker__custom-size-control">
247
275
  <FlexItem isBlock>
248
276
  <UnitControl
249
277
  label={ __( 'Custom' ) }
@@ -252,12 +280,12 @@ function FontSizePicker(
252
280
  value={ value }
253
281
  onChange={ ( nextSize ) => {
254
282
  if (
255
- 0 === parseFloat( nextSize ) ||
256
- ! nextSize
283
+ ! nextSize ||
284
+ 0 === parseFloat( nextSize )
257
285
  ) {
258
- onChange( undefined );
286
+ onChange?.( undefined );
259
287
  } else {
260
- onChange(
288
+ onChange?.(
261
289
  hasUnits
262
290
  ? nextSize
263
291
  : parseInt(
@@ -272,40 +300,46 @@ function FontSizePicker(
272
300
  />
273
301
  </FlexItem>
274
302
  { withReset && (
275
- <FlexItem isBlock>
276
- <Button
277
- className="components-color-palette__clear"
303
+ <FlexItem>
304
+ <ResetButton
278
305
  disabled={ value === undefined }
279
306
  onClick={ () => {
280
- onChange( undefined );
307
+ onChange?.( undefined );
281
308
  } }
282
309
  isSmall
283
310
  variant="secondary"
311
+ size={ size }
284
312
  >
285
313
  { __( 'Reset' ) }
286
- </Button>
314
+ </ResetButton>
287
315
  </FlexItem>
288
316
  ) }
289
317
  </Flex>
290
318
  ) }
291
- </div>
319
+ </Controls>
292
320
  { withSlider && (
293
321
  <RangeControl
294
322
  __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
295
- className={ `${ baseClassName }__custom-input` }
323
+ className="components-font-size-picker__custom-input"
296
324
  label={ __( 'Custom Size' ) }
297
- value={ ( isPixelValue && noUnitsValue ) || '' }
325
+ value={
326
+ isPixelValue && noUnitsValue
327
+ ? Number( noUnitsValue )
328
+ : undefined
329
+ }
298
330
  initialPosition={ fallbackFontSize }
299
331
  onChange={ ( newValue ) => {
300
- onChange( hasUnits ? newValue + 'px' : newValue );
332
+ onChange?.( hasUnits ? newValue + 'px' : newValue );
301
333
  } }
302
334
  min={ 12 }
303
335
  max={ 100 }
304
336
  />
305
337
  ) }
306
338
  </MaybeVStack>
307
- </fieldset>
339
+ </Container>
308
340
  );
309
- }
341
+ };
342
+
343
+ export const FontSizePicker = forwardRef( UnforwardedFontSizePicker );
310
344
 
311
- export default forwardRef( FontSizePicker );
345
+ export default FontSizePicker;
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ComponentStory } from '@storybook/react';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -13,8 +18,11 @@ export default {
13
18
  component: FontSizePicker,
14
19
  };
15
20
 
16
- const FontSizePickerWithState = ( { initialValue, ...props } ) => {
17
- const [ fontSize, setFontSize ] = useState( initialValue );
21
+ const FontSizePickerWithState: ComponentStory< typeof FontSizePicker > = ( {
22
+ value,
23
+ ...props
24
+ } ) => {
25
+ const [ fontSize, setFontSize ] = useState( value );
18
26
  return (
19
27
  <FontSizePicker
20
28
  { ...props }
@@ -24,7 +32,8 @@ const FontSizePickerWithState = ( { initialValue, ...props } ) => {
24
32
  );
25
33
  };
26
34
 
27
- export const Default = FontSizePickerWithState.bind( {} );
35
+ export const Default: ComponentStory< typeof FontSizePicker > =
36
+ FontSizePickerWithState.bind( {} );
28
37
  Default.args = {
29
38
  fontSizes: [
30
39
  {
@@ -43,5 +52,5 @@ Default.args = {
43
52
  size: 26,
44
53
  },
45
54
  ],
46
- initialValue: 16,
55
+ value: 16,
47
56
  };