@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
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { render } from '@testing-library/react';
5
- import type { RenderResult } from '@testing-library/react';
6
5
 
7
6
  /**
8
7
  * Internal dependencies
@@ -10,39 +9,40 @@ import type { RenderResult } from '@testing-library/react';
10
9
  import { Surface } from '../index';
11
10
 
12
11
  describe( 'props', () => {
13
- let base: RenderResult;
14
- beforeEach( () => {
15
- base = render( <Surface>Surface</Surface> );
16
- } );
17
-
18
12
  test( 'should render correctly', () => {
19
- expect( base.container ).toMatchSnapshot();
13
+ const { container } = render( <Surface>Surface</Surface> );
14
+ expect( container ).toMatchSnapshot();
20
15
  } );
21
16
 
22
17
  test( 'should render variants', () => {
18
+ const view = render( <Surface>Surface</Surface> );
23
19
  const { container } = render(
24
20
  <Surface variant="secondary">Surface</Surface>
25
21
  );
26
- expect( container ).toMatchDiffSnapshot( base.container );
22
+ expect( container ).toMatchDiffSnapshot( view.container );
27
23
  } );
28
24
 
29
25
  test( 'should render borderLeft', () => {
26
+ const view = render( <Surface>Surface</Surface> );
30
27
  const { container } = render( <Surface borderLeft>Surface</Surface> );
31
- expect( container ).toMatchDiffSnapshot( base.container );
28
+ expect( container ).toMatchDiffSnapshot( view.container );
32
29
  } );
33
30
 
34
31
  test( 'should render borderRight', () => {
32
+ const view = render( <Surface>Surface</Surface> );
35
33
  const { container } = render( <Surface borderRight>Surface</Surface> );
36
- expect( container ).toMatchDiffSnapshot( base.container );
34
+ expect( container ).toMatchDiffSnapshot( view.container );
37
35
  } );
38
36
 
39
37
  test( 'should render borderTop', () => {
38
+ const view = render( <Surface>Surface</Surface> );
40
39
  const { container } = render( <Surface borderTop>Surface</Surface> );
41
- expect( container ).toMatchDiffSnapshot( base.container );
40
+ expect( container ).toMatchDiffSnapshot( view.container );
42
41
  } );
43
42
 
44
43
  test( 'should render borderBottom', () => {
44
+ const view = render( <Surface>Surface</Surface> );
45
45
  const { container } = render( <Surface borderBottom>Surface</Surface> );
46
- expect( container ).toMatchDiffSnapshot( base.container );
46
+ expect( container ).toMatchDiffSnapshot( view.container );
47
47
  } );
48
48
  } );
@@ -7,7 +7,7 @@ import { find } from 'lodash';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { useState, useEffect } from '@wordpress/element';
10
+ import { useState, useEffect, useCallback } from '@wordpress/element';
11
11
  import { useInstanceId } from '@wordpress/compose';
12
12
 
13
13
  /**
@@ -85,10 +85,13 @@ export function TabPanel( {
85
85
  const instanceId = useInstanceId( TabPanel, 'tab-panel' );
86
86
  const [ selected, setSelected ] = useState< string >();
87
87
 
88
- const handleTabSelection = ( tabKey: string ) => {
89
- setSelected( tabKey );
90
- onSelect?.( tabKey );
91
- };
88
+ const handleTabSelection = useCallback(
89
+ ( tabKey: string ) => {
90
+ setSelected( tabKey );
91
+ onSelect?.( tabKey );
92
+ },
93
+ [ onSelect ]
94
+ );
92
95
 
93
96
  const onNavigate = ( _childIndex: number, child: HTMLButtonElement ) => {
94
97
  child.click();
@@ -100,7 +103,7 @@ export function TabPanel( {
100
103
  if ( ! selectedTab?.name && tabs.length > 0 ) {
101
104
  handleTabSelection( initialTabName || tabs[ 0 ].name );
102
105
  }
103
- }, [ tabs, selectedTab?.name, initialTabName ] );
106
+ }, [ tabs, selectedTab?.name, initialTabName, handleTabSelection ] );
104
107
 
105
108
  return (
106
109
  <div className={ className }>
@@ -33,13 +33,12 @@
33
33
  }
34
34
 
35
35
  &:focus:not(:disabled) {
36
- box-shadow: inset 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
36
+ box-shadow: inset 0 var(--wp-admin-border-width-focus) $components-color-accent;
37
37
  }
38
38
 
39
-
40
39
  &.is-active {
41
40
  // The transparent shadow ensures no jumpiness when focus animates on an active tab.
42
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent, inset 0 0 -$border-width-tab 0 0 var(--wp-admin-theme-color);
41
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent, inset 0 0 -$border-width-tab 0 0 $components-color-accent;
43
42
  position: relative;
44
43
 
45
44
  // This border appears in Windows High Contrast mode instead of the box-shadow.
@@ -55,10 +54,10 @@
55
54
  }
56
55
 
57
56
  &:focus {
58
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
57
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) $components-color-accent;
59
58
  }
60
59
 
61
60
  &.is-active:focus {
62
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color), inset 0 -#{$border-width-tab * 2} 0 0 var(--wp-admin-theme-color);
61
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) $components-color-accent, inset 0 -#{$border-width-tab * 2} 0 0 $components-color-accent;
63
62
  }
64
63
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -92,11 +92,11 @@ describe( 'Text', () => {
92
92
  } );
93
93
 
94
94
  test( 'should render highlighted words', async () => {
95
- const wrapper = render(
95
+ const { container } = render(
96
96
  <Text highlightWords={ [ 'm' ] }>Lorem ipsum.</Text>
97
97
  );
98
- expect( wrapper.container.firstChild?.childNodes ).toHaveLength( 5 );
99
- const words = await wrapper.findAllByText( 'm' );
98
+ expect( container.firstChild?.childNodes ).toHaveLength( 5 );
99
+ const words = await screen.findAllByText( 'm' );
100
100
  expect( words ).toHaveLength( 2 );
101
101
  words.forEach( ( word ) => expect( word.tagName ).toEqual( 'MARK' ) );
102
102
  } );
@@ -81,6 +81,7 @@ Default.args = {
81
81
  { value: 'right', label: 'Right' },
82
82
  { value: 'justify', label: 'Justify' },
83
83
  ].map( mapPropsToOptionComponent ),
84
+ isBlock: true,
84
85
  label: 'Label',
85
86
  };
86
87
 
@@ -121,6 +122,7 @@ WithIcons.args = {
121
122
  { value: 'uppercase', label: 'Uppercase', icon: formatUppercase },
122
123
  { value: 'lowercase', label: 'Lowercase', icon: formatLowercase },
123
124
  ].map( mapPropsToOptionIconComponent ),
125
+ isBlock: false,
124
126
  };
125
127
 
126
128
  /**
@@ -41,6 +41,7 @@ exports[`ToggleGroupControl should render correctly with icons 1`] = `
41
41
  .emotion-8 {
42
42
  background: #fff;
43
43
  border: 1px solid transparent;
44
+ border-radius: 2px;
44
45
  display: -webkit-inline-box;
45
46
  display: -webkit-inline-flex;
46
47
  display: -ms-inline-flexbox;
@@ -51,8 +52,6 @@ exports[`ToggleGroupControl should render correctly with icons 1`] = `
51
52
  -webkit-transition: -webkit-transform 100ms linear;
52
53
  transition: transform 100ms linear;
53
54
  min-height: 36px;
54
- border-color: #757575;
55
- border-radius: 2px;
56
55
  }
57
56
 
58
57
  @media ( prefers-reduced-motion: reduce ) {
@@ -66,8 +65,8 @@ exports[`ToggleGroupControl should render correctly with icons 1`] = `
66
65
  }
67
66
 
68
67
  .emotion-8:focus-within {
69
- border-color: var( --wp-admin-theme-color-darker-10, #006ba1);
70
- box-shadow: 0 0 0 0.5px var( --wp-admin-theme-color, #007cba);
68
+ border-color: var(--wp-components-color-accent-darker-10, var(--wp-admin-theme-color-darker-10, #006ba1));
69
+ box-shadow: 0 0 0 0.5px var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));
71
70
  outline: none;
72
71
  z-index: 1;
73
72
  }
@@ -377,6 +376,7 @@ exports[`ToggleGroupControl should render correctly with text options 1`] = `
377
376
  .emotion-8 {
378
377
  background: #fff;
379
378
  border: 1px solid transparent;
379
+ border-radius: 2px;
380
380
  display: -webkit-inline-box;
381
381
  display: -webkit-inline-flex;
382
382
  display: -ms-inline-flexbox;
@@ -387,8 +387,6 @@ exports[`ToggleGroupControl should render correctly with text options 1`] = `
387
387
  -webkit-transition: -webkit-transform 100ms linear;
388
388
  transition: transform 100ms linear;
389
389
  min-height: 36px;
390
- border-color: #757575;
391
- border-radius: 2px;
392
390
  }
393
391
 
394
392
  @media ( prefers-reduced-motion: reduce ) {
@@ -402,8 +400,8 @@ exports[`ToggleGroupControl should render correctly with text options 1`] = `
402
400
  }
403
401
 
404
402
  .emotion-8:focus-within {
405
- border-color: var( --wp-admin-theme-color-darker-10, #006ba1);
406
- box-shadow: 0 0 0 0.5px var( --wp-admin-theme-color, #007cba);
403
+ border-color: var(--wp-components-color-accent-darker-10, var(--wp-admin-theme-color-darker-10, #006ba1));
404
+ box-shadow: 0 0 0 0.5px var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));
407
405
  outline: none;
408
406
  z-index: 1;
409
407
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, fireEvent, screen } from '@testing-library/react';
4
+ import { render, screen, waitFor } from '@testing-library/react';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
7
  /**
@@ -73,7 +73,10 @@ describe( 'ToggleGroupControl', () => {
73
73
  expect( container ).toMatchSnapshot();
74
74
  } );
75
75
  } );
76
- it( 'should call onChange with proper value', () => {
76
+ it( 'should call onChange with proper value', async () => {
77
+ const user = userEvent.setup( {
78
+ advanceTimers: jest.advanceTimersByTime,
79
+ } );
77
80
  const mockOnChange = jest.fn();
78
81
 
79
82
  render(
@@ -86,13 +89,15 @@ describe( 'ToggleGroupControl', () => {
86
89
  </ToggleGroupControl>
87
90
  );
88
91
 
89
- const firstRadio = screen.getByRole( 'radio', { name: 'R' } );
90
-
91
- fireEvent.click( firstRadio );
92
+ await user.click( screen.getByRole( 'radio', { name: 'R' } ) );
92
93
 
93
94
  expect( mockOnChange ).toHaveBeenCalledWith( 'rigas' );
94
95
  } );
95
- it( 'should render tooltip where `showTooltip` === `true`', () => {
96
+
97
+ it( 'should render tooltip where `showTooltip` === `true`', async () => {
98
+ const user = userEvent.setup( {
99
+ advanceTimers: jest.advanceTimersByTime,
100
+ } );
96
101
  render(
97
102
  <ToggleGroupControl label="Test Toggle Group Control">
98
103
  { optionsWithTooltip }
@@ -103,14 +108,19 @@ describe( 'ToggleGroupControl', () => {
103
108
  'Click for Delicious Gnocchi'
104
109
  );
105
110
 
106
- fireEvent.focus( firstRadio );
111
+ await user.hover( firstRadio );
107
112
 
108
- expect(
109
- screen.getByText( 'Click for Delicious Gnocchi' )
110
- ).toBeInTheDocument();
113
+ await waitFor( () =>
114
+ expect(
115
+ screen.getByText( 'Click for Delicious Gnocchi' )
116
+ ).toBeVisible()
117
+ );
111
118
  } );
112
119
 
113
- it( 'should not render tooltip', () => {
120
+ it( 'should not render tooltip', async () => {
121
+ const user = userEvent.setup( {
122
+ advanceTimers: jest.advanceTimersByTime,
123
+ } );
114
124
  render(
115
125
  <ToggleGroupControl label="Test Toggle Group Control">
116
126
  { optionsWithTooltip }
@@ -121,11 +131,13 @@ describe( 'ToggleGroupControl', () => {
121
131
  'Click for Sumptuous Caponata'
122
132
  );
123
133
 
124
- fireEvent.focus( secondRadio );
134
+ await user.hover( secondRadio );
125
135
 
126
- expect(
127
- screen.queryByText( 'Click for Sumptuous Caponata' )
128
- ).not.toBeInTheDocument();
136
+ await waitFor( () =>
137
+ expect(
138
+ screen.queryByText( 'Click for Sumptuous Caponata' )
139
+ ).not.toBeInTheDocument()
140
+ );
129
141
  } );
130
142
 
131
143
  describe( 'isDeselectable', () => {
@@ -196,7 +208,7 @@ describe( 'ToggleGroupControl', () => {
196
208
  );
197
209
 
198
210
  await user.click(
199
- await screen.getByRole( 'button', {
211
+ screen.getByRole( 'button', {
200
212
  name: 'R',
201
213
  pressed: true,
202
214
  } )
@@ -208,7 +220,7 @@ describe( 'ToggleGroupControl', () => {
208
220
  name: 'R',
209
221
  pressed: false,
210
222
  } )
211
- ).toBeInTheDocument();
223
+ ).toBeVisible();
212
224
  } );
213
225
 
214
226
  it( 'should tab to the next option button', async () => {
@@ -50,9 +50,16 @@ Determines if segments should be rendered with equal widths.
50
50
  - Required: No
51
51
  - Default: `false`
52
52
 
53
+ ### `isDeselectable`: `boolean`
54
+
55
+ Whether an option can be deselected by clicking it again.
56
+
57
+ - Required: No
58
+ - Default: `false`
59
+
53
60
  ### `isBlock`: `boolean`
54
61
 
55
- Renders `ToggleGroupControl` as a (CSS) block element.
62
+ Renders `ToggleGroupControl` as a (CSS) block element, spanning the entire width of the available space. This is the recommended style when the options are text-based and not icons.
56
63
 
57
64
  - Required: No
58
65
  - Default: `false`
@@ -50,7 +50,7 @@ function UnconnectedToggleGroupControl(
50
50
  const classes = useMemo(
51
51
  () =>
52
52
  cx(
53
- styles.ToggleGroupControl( { isDeselectable, size } ),
53
+ styles.ToggleGroupControl( { isBlock, isDeselectable, size } ),
54
54
  isBlock && styles.block,
55
55
  className
56
56
  ),
@@ -11,14 +11,15 @@ import { CONFIG, COLORS, reduceMotion } from '../../utils';
11
11
  import type { ToggleGroupControlProps } from '../types';
12
12
 
13
13
  export const ToggleGroupControl = ( {
14
+ isBlock,
14
15
  isDeselectable,
15
16
  size,
16
- }: {
17
- isDeselectable?: boolean;
17
+ }: Pick< ToggleGroupControlProps, 'isBlock' | 'isDeselectable' > & {
18
18
  size: NonNullable< ToggleGroupControlProps[ 'size' ] >;
19
19
  } ) => css`
20
20
  background: ${ COLORS.ui.background };
21
21
  border: 1px solid transparent;
22
+ border-radius: ${ CONFIG.controlBorderRadius };
22
23
  display: inline-flex;
23
24
  min-width: 0;
24
25
  padding: 2px;
@@ -27,24 +28,29 @@ export const ToggleGroupControl = ( {
27
28
  ${ reduceMotion( 'transition' ) }
28
29
 
29
30
  ${ toggleGroupControlSize( size ) }
30
- ${ ! isDeselectable && enclosingBorder }
31
+ ${ ! isDeselectable && enclosingBorders( isBlock ) }
31
32
  `;
32
33
 
33
- const enclosingBorder = css`
34
- border-color: ${ COLORS.ui.border };
35
- border-radius: ${ CONFIG.controlBorderRadius };
34
+ const enclosingBorders = ( isBlock: ToggleGroupControlProps[ 'isBlock' ] ) => {
35
+ const enclosingBorder = css`
36
+ border-color: ${ COLORS.ui.border };
37
+ `;
38
+
39
+ return css`
40
+ ${ isBlock && enclosingBorder }
36
41
 
37
- &:hover {
38
- border-color: ${ COLORS.ui.borderHover };
39
- }
42
+ &:hover {
43
+ border-color: ${ COLORS.ui.borderHover };
44
+ }
40
45
 
41
- &:focus-within {
42
- border-color: ${ COLORS.ui.borderFocus };
43
- box-shadow: ${ CONFIG.controlBoxShadowFocus };
44
- outline: none;
45
- z-index: 1;
46
- }
47
- `;
46
+ &:focus-within {
47
+ border-color: ${ COLORS.ui.borderFocus };
48
+ box-shadow: ${ CONFIG.controlBoxShadowFocus };
49
+ outline: none;
50
+ z-index: 1;
51
+ }
52
+ `;
53
+ };
48
54
 
49
55
  export const toggleGroupControlSize = (
50
56
  size: NonNullable< ToggleGroupControlProps[ 'size' ] >
@@ -92,7 +92,8 @@ export type ToggleGroupControlProps = Pick<
92
92
  */
93
93
  isAdaptiveWidth?: boolean;
94
94
  /**
95
- * Renders `ToggleGroupControl` as a (CSS) block element.
95
+ * Renders `ToggleGroupControl` as a (CSS) block element, spanning the entire width of
96
+ * the available space. This is the recommended style when the options are text-based and not icons.
96
97
  *
97
98
  * @default false
98
99
  */
@@ -148,7 +148,7 @@ export const DropdownMenu = css`
148
148
  `;
149
149
 
150
150
  export const ResetLabel = styled.span`
151
- color: var( --wp-admin-theme-color-darker-10 );
151
+ color: ${ COLORS.ui.themeDark10 };
152
152
  font-size: 11px;
153
153
  font-weight: 500;
154
154
  line-height: 1.4;
@@ -108,11 +108,15 @@ export function useToolsPanelItem(
108
108
  const menuGroup = isShownByDefault ? 'default' : 'optional';
109
109
  const isMenuItemChecked = menuItems?.[ menuGroup ]?.[ label ];
110
110
  const wasMenuItemChecked = usePrevious( isMenuItemChecked );
111
+ const isRegistered = menuItems?.[ menuGroup ]?.[ label ] !== undefined;
111
112
 
112
113
  // Determine if the panel item's corresponding menu is being toggled and
113
114
  // trigger appropriate callback if it is.
114
115
  useEffect( () => {
115
- if ( isResetting || ! hasMatchingPanel ) {
116
+ // We check whether this item is currently registered as items rendered
117
+ // via fills can persist through the parent panel being remounted.
118
+ // See: https://github.com/WordPress/gutenberg/pull/45673
119
+ if ( ! isRegistered || isResetting || ! hasMatchingPanel ) {
116
120
  return;
117
121
  }
118
122
 
@@ -126,6 +130,7 @@ export function useToolsPanelItem(
126
130
  }, [
127
131
  hasMatchingPanel,
128
132
  isMenuItemChecked,
133
+ isRegistered,
129
134
  isResetting,
130
135
  isValueSet,
131
136
  wasMenuItemChecked,
@@ -97,7 +97,7 @@ describe( 'TreeGrid', () => {
97
97
  );
98
98
 
99
99
  screen.getByText( 'Row 1' ).focus();
100
- const row1Element = screen.getByText( 'Row 1' ).closest( 'tr' );
100
+ const row1Element = screen.getByRole( 'row', { name: 'Row 1' } );
101
101
 
102
102
  fireEvent.keyDown( screen.getByText( 'Row 1' ), {
103
103
  key: 'ArrowRight',
@@ -149,7 +149,7 @@ describe( 'TreeGrid', () => {
149
149
  );
150
150
 
151
151
  screen.getByText( 'Row 1' ).focus();
152
- const row1Element = screen.getByText( 'Row 1' ).closest( 'tr' );
152
+ const row1Element = screen.getByRole( 'row', { name: 'Row 1' } );
153
153
 
154
154
  fireEvent.keyDown( screen.getByText( 'Row 1' ), {
155
155
  key: 'ArrowLeft',
@@ -188,8 +188,8 @@ describe( 'TreeGrid', () => {
188
188
 
189
189
  screen.getByText( 'Row 2' ).focus();
190
190
 
191
- const row2Element = screen.getByText( 'Row 2' ).closest( 'tr' );
192
- const row3Element = screen.getByText( 'Row 3' ).closest( 'tr' );
191
+ const row2Element = screen.getByRole( 'row', { name: 'Row 2' } );
192
+ const row3Element = screen.getByRole( 'row', { name: 'Row 3' } );
193
193
 
194
194
  fireEvent.keyDown( screen.getByText( 'Row 2' ), {
195
195
  key: 'ArrowDown',
@@ -210,8 +210,8 @@ describe( 'TreeGrid', () => {
210
210
 
211
211
  screen.getByText( 'Row 1' ).focus();
212
212
 
213
- const row1Element = screen.getByText( 'Row 1' ).closest( 'tr' );
214
- const row3Element = screen.getByText( 'Row 3' ).closest( 'tr' );
213
+ const row1Element = screen.getByRole( 'row', { name: 'Row 1' } );
214
+ const row3Element = screen.getByRole( 'row', { name: 'Row 3' } );
215
215
 
216
216
  fireEvent.keyDown( screen.getByText( 'Row 1' ), {
217
217
  key: 'End',
@@ -232,8 +232,8 @@ describe( 'TreeGrid', () => {
232
232
 
233
233
  screen.getByText( 'Row 2' ).focus();
234
234
 
235
- const row2Element = screen.getByText( 'Row 2' ).closest( 'tr' );
236
- const row1Element = screen.getByText( 'Row 1' ).closest( 'tr' );
235
+ const row2Element = screen.getByRole( 'row', { name: 'Row 2' } );
236
+ const row1Element = screen.getByRole( 'row', { name: 'Row 1' } );
237
237
 
238
238
  fireEvent.keyDown( screen.getByText( 'Row 2' ), {
239
239
  key: 'ArrowUp',
@@ -254,8 +254,8 @@ describe( 'TreeGrid', () => {
254
254
 
255
255
  screen.getByText( 'Row 3' ).focus();
256
256
 
257
- const row3Element = screen.getByText( 'Row 3' ).closest( 'tr' );
258
- const row1Element = screen.getByText( 'Row 1' ).closest( 'tr' );
257
+ const row3Element = screen.getByRole( 'row', { name: 'Row 3' } );
258
+ const row1Element = screen.getByRole( 'row', { name: 'Row 1' } );
259
259
 
260
260
  fireEvent.keyDown( screen.getByText( 'Row 3' ), {
261
261
  key: 'Home',
@@ -276,8 +276,8 @@ describe( 'TreeGrid', () => {
276
276
 
277
277
  screen.getByText( 'Row 2' ).focus();
278
278
 
279
- const row2Element = screen.getByText( 'Row 2' ).closest( 'tr' );
280
- const row1Element = screen.getByText( 'Row 1' ).closest( 'tr' );
279
+ const row2Element = screen.getByRole( 'row', { name: 'Row 2' } );
280
+ const row1Element = screen.getByRole( 'row', { name: 'Row 1' } );
281
281
 
282
282
  fireEvent.keyDown( screen.getByText( 'Row 2' ), {
283
283
  key: 'ArrowUp',
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -10,34 +10,34 @@ import { Truncate } from '..';
10
10
 
11
11
  describe( 'props', () => {
12
12
  test( 'should render correctly', () => {
13
- const { container } = render( <Truncate>Lorem ipsum.</Truncate> );
14
- expect( container.firstChild ).toHaveTextContent( 'Lorem ipsum.' );
13
+ render( <Truncate>Lorem ipsum.</Truncate> );
14
+ expect( screen.getByText( 'Lorem ipsum.' ) ).toBeVisible();
15
15
  } );
16
16
 
17
17
  test( 'should render limit', () => {
18
- const { container } = render(
18
+ render(
19
19
  <Truncate limit={ 1 } ellipsizeMode="tail">
20
20
  Lorem ipsum.
21
21
  </Truncate>
22
22
  );
23
- expect( container.firstChild ).toHaveTextContent( 'L…' );
23
+ expect( screen.getByText( 'L…' ) ).toBeVisible();
24
24
  } );
25
25
 
26
26
  test( 'should render custom ellipsis', () => {
27
- const { container } = render(
27
+ render(
28
28
  <Truncate ellipsis="!!!" limit={ 5 } ellipsizeMode="tail">
29
29
  Lorem ipsum.
30
30
  </Truncate>
31
31
  );
32
- expect( container.firstChild ).toHaveTextContent( 'Lorem!!!' );
32
+ expect( screen.getByText( 'Lorem!!!' ) ).toBeVisible();
33
33
  } );
34
34
 
35
35
  test( 'should render custom ellipsizeMode', () => {
36
- const { container } = render(
36
+ render(
37
37
  <Truncate ellipsis="!!!" ellipsizeMode="middle" limit={ 5 }>
38
38
  Lorem ipsum.
39
39
  </Truncate>
40
40
  );
41
- expect( container.firstChild ).toHaveTextContent( 'Lo!!!m.' );
41
+ expect( screen.getByText( 'Lo!!!m.' ) ).toBeVisible();
42
42
  } );
43
43
  } );
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -20,44 +20,43 @@ const TextInput = ( { id: idProp, ...props } ) => {
20
20
  /* eslint-disable no-restricted-syntax */
21
21
  describe( 'props', () => {
22
22
  test( 'should render correctly', () => {
23
- const { container } = render(
23
+ render(
24
24
  <FormGroup id="fname" label="First name">
25
25
  <TextInput />
26
26
  </FormGroup>
27
27
  );
28
28
 
29
- const label = container.querySelector( 'label' );
30
- expect( label ).toHaveAttribute( 'for', 'fname' );
31
- expect( label ).toContainHTML( 'First name' );
32
-
33
- const input = container.querySelector( 'input' );
34
- expect( input ).toHaveAttribute( 'id', 'fname' );
29
+ expect(
30
+ screen.getByRole( 'textbox', { name: 'First name' } )
31
+ ).toBeVisible();
35
32
  } );
36
33
 
37
34
  test( 'should render label without prop correctly', () => {
38
- const { container } = render(
35
+ render(
39
36
  <FormGroup id="fname">
40
37
  <ControlLabel htmlFor="fname">First name</ControlLabel>
41
38
  <TextInput />
42
39
  </FormGroup>
43
40
  );
44
41
 
45
- const label = container.querySelector( 'label' );
46
- expect( label ).toHaveAttribute( 'for', 'fname' );
47
- expect( label ).toContainHTML( 'First name' );
42
+ expect(
43
+ screen.getByRole( 'textbox', { name: 'First name' } )
44
+ ).toBeVisible();
48
45
  } );
49
46
 
50
47
  test( 'should render labelHidden', () => {
51
- const { container } = render(
48
+ render(
52
49
  <FormGroup labelHidden id="fname" label="First name">
53
50
  <TextInput />
54
51
  </FormGroup>
55
52
  );
56
53
 
57
- const label = container.querySelector( 'label' );
58
- expect( label ).toContainHTML( 'First name' );
59
- // @todo: Refactor this after adding next VisuallyHidden.
60
- expect( label ).toHaveClass( 'components-visually-hidden' );
54
+ expect(
55
+ screen.getByRole( 'textbox', { name: 'First name' } )
56
+ ).toBeVisible();
57
+ expect( screen.getByText( 'First name' ) ).toHaveClass(
58
+ 'components-visually-hidden'
59
+ );
61
60
  } );
62
61
 
63
62
  test( 'should render alignLabel', () => {