@wordpress/components 20.0.1-next.d6164808d3.0 → 20.0.2-next.957ca95e4c.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 (434) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/CONTRIBUTING.md +12 -12
  3. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +12 -12
  4. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  5. package/build/autocomplete/get-default-use-items.js +7 -1
  6. package/build/autocomplete/get-default-use-items.js.map +1 -1
  7. package/build/autocomplete/index.js +3 -1
  8. package/build/autocomplete/index.js.map +1 -1
  9. package/build/card/card/component.js +6 -11
  10. package/build/card/card/component.js.map +1 -1
  11. package/build/card/card/hook.js +0 -10
  12. package/build/card/card/hook.js.map +1 -1
  13. package/build/card/card/index.js.map +1 -1
  14. package/build/card/card-body/component.js +7 -8
  15. package/build/card/card-body/component.js.map +1 -1
  16. package/build/card/card-body/hook.js +0 -4
  17. package/build/card/card-body/hook.js.map +1 -1
  18. package/build/card/card-body/index.js.map +1 -1
  19. package/build/card/card-divider/component.js +7 -8
  20. package/build/card/card-divider/component.js.map +1 -1
  21. package/build/card/card-divider/hook.js +0 -4
  22. package/build/card/card-divider/hook.js.map +1 -1
  23. package/build/card/card-divider/index.js.map +1 -1
  24. package/build/card/card-footer/component.js +7 -8
  25. package/build/card/card-footer/component.js.map +1 -1
  26. package/build/card/card-footer/hook.js +0 -4
  27. package/build/card/card-footer/hook.js.map +1 -1
  28. package/build/card/card-footer/index.js.map +1 -1
  29. package/build/card/card-header/component.js +7 -8
  30. package/build/card/card-header/component.js.map +1 -1
  31. package/build/card/card-header/hook.js +0 -4
  32. package/build/card/card-header/hook.js.map +1 -1
  33. package/build/card/card-header/index.js.map +1 -1
  34. package/build/card/card-media/component.js +7 -7
  35. package/build/card/card-media/component.js.map +1 -1
  36. package/build/card/card-media/hook.js +0 -4
  37. package/build/card/card-media/hook.js.map +1 -1
  38. package/build/card/card-media/index.js.map +1 -1
  39. package/build/card/context.js.map +1 -1
  40. package/build/card/index.js.map +1 -1
  41. package/build/card/styles.js +17 -17
  42. package/build/card/styles.js.map +1 -1
  43. package/build/clipboard-button/index.js +16 -1
  44. package/build/clipboard-button/index.js.map +1 -1
  45. package/build/color-palette/index.js +6 -2
  46. package/build/color-palette/index.js.map +1 -1
  47. package/build/custom-gradient-picker/index.js +11 -0
  48. package/build/custom-gradient-picker/index.js.map +1 -1
  49. package/build/date-time/date/index.js +25 -6
  50. package/build/date-time/date/index.js.map +1 -1
  51. package/build/date-time/date/styles.js +22 -12
  52. package/build/date-time/date/styles.js.map +1 -1
  53. package/build/date-time/date-time/index.js +1 -3
  54. package/build/date-time/date-time/index.js.map +1 -1
  55. package/build/date-time/date-time/styles.js +19 -5
  56. package/build/date-time/date-time/styles.js.map +1 -1
  57. package/build/date-time/time/styles.js +12 -12
  58. package/build/date-time/time/styles.js.map +1 -1
  59. package/build/drop-zone/index.js +2 -4
  60. package/build/drop-zone/index.js.map +1 -1
  61. package/build/dropdown-menu/index.js +1 -3
  62. package/build/dropdown-menu/index.js.map +1 -1
  63. package/build/dropdown-menu/index.native.js +0 -17
  64. package/build/dropdown-menu/index.native.js.map +1 -1
  65. package/build/focal-point-picker/controls.js +4 -4
  66. package/build/focal-point-picker/controls.js.map +1 -1
  67. package/build/focal-point-picker/focal-point.js +4 -6
  68. package/build/focal-point-picker/focal-point.js.map +1 -1
  69. package/build/focal-point-picker/grid.js +6 -35
  70. package/build/focal-point-picker/grid.js.map +1 -1
  71. package/build/focal-point-picker/index.js +160 -330
  72. package/build/focal-point-picker/index.js.map +1 -1
  73. package/build/focal-point-picker/media.js +4 -34
  74. package/build/focal-point-picker/media.js.map +1 -1
  75. package/build/focal-point-picker/styles/focal-point-picker-style.js +14 -14
  76. package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  77. package/build/focal-point-picker/utils.js +2 -6
  78. package/build/focal-point-picker/utils.js.map +1 -1
  79. package/build/focusable-iframe/index.js +6 -0
  80. package/build/focusable-iframe/index.js.map +1 -1
  81. package/build/form-token-field/index.js +18 -15
  82. package/build/form-token-field/index.js.map +1 -1
  83. package/build/gradient-picker/index.js +12 -1
  84. package/build/gradient-picker/index.js.map +1 -1
  85. package/build/guide/index.js +8 -6
  86. package/build/guide/index.js.map +1 -1
  87. package/build/higher-order/with-constrained-tabbing/index.js +1 -1
  88. package/build/higher-order/with-constrained-tabbing/index.js.map +1 -1
  89. package/build/higher-order/with-spoken-messages/index.js +2 -0
  90. package/build/higher-order/with-spoken-messages/index.js.map +1 -1
  91. package/build/isolated-event-container/index.js +4 -0
  92. package/build/isolated-event-container/index.js.map +1 -1
  93. package/build/mobile/global-styles-context/utils.native.js +1 -1
  94. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  95. package/build/navigable-container/menu.js +3 -9
  96. package/build/navigable-container/menu.js.map +1 -1
  97. package/build/navigation/menu/menu-title-search.js +1 -3
  98. package/build/navigation/menu/menu-title-search.js.map +1 -1
  99. package/build/palette-edit/index.js +6 -2
  100. package/build/palette-edit/index.js.map +1 -1
  101. package/build/popover/index.js +15 -35
  102. package/build/popover/index.js.map +1 -1
  103. package/build/text-highlight/index.js +4 -4
  104. package/build/text-highlight/index.js.map +1 -1
  105. package/build/toggle-group-control/toggle-group-control/component.js +1 -1
  106. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  107. package/build/toggle-group-control/toggle-group-control/styles.js +23 -8
  108. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  109. package/build/tooltip/index.js +1 -7
  110. package/build/tooltip/index.js.map +1 -1
  111. package/build/tree-grid/index.js +4 -10
  112. package/build/tree-grid/index.js.map +1 -1
  113. package/build/utils/strings.js +13 -0
  114. package/build/utils/strings.js.map +1 -1
  115. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +12 -12
  116. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  117. package/build-module/autocomplete/get-default-use-items.js +6 -1
  118. package/build-module/autocomplete/get-default-use-items.js.map +1 -1
  119. package/build-module/autocomplete/index.js +2 -1
  120. package/build-module/autocomplete/index.js.map +1 -1
  121. package/build-module/card/card/component.js +5 -10
  122. package/build-module/card/card/component.js.map +1 -1
  123. package/build-module/card/card/hook.js +0 -9
  124. package/build-module/card/card/hook.js.map +1 -1
  125. package/build-module/card/card/index.js.map +1 -1
  126. package/build-module/card/card-body/component.js +7 -8
  127. package/build-module/card/card-body/component.js.map +1 -1
  128. package/build-module/card/card-body/hook.js +0 -4
  129. package/build-module/card/card-body/hook.js.map +1 -1
  130. package/build-module/card/card-body/index.js.map +1 -1
  131. package/build-module/card/card-divider/component.js +7 -8
  132. package/build-module/card/card-divider/component.js.map +1 -1
  133. package/build-module/card/card-divider/hook.js +0 -4
  134. package/build-module/card/card-divider/hook.js.map +1 -1
  135. package/build-module/card/card-divider/index.js.map +1 -1
  136. package/build-module/card/card-footer/component.js +7 -8
  137. package/build-module/card/card-footer/component.js.map +1 -1
  138. package/build-module/card/card-footer/hook.js +0 -4
  139. package/build-module/card/card-footer/hook.js.map +1 -1
  140. package/build-module/card/card-footer/index.js.map +1 -1
  141. package/build-module/card/card-header/component.js +7 -8
  142. package/build-module/card/card-header/component.js.map +1 -1
  143. package/build-module/card/card-header/hook.js +0 -4
  144. package/build-module/card/card-header/hook.js.map +1 -1
  145. package/build-module/card/card-header/index.js.map +1 -1
  146. package/build-module/card/card-media/component.js +7 -7
  147. package/build-module/card/card-media/component.js.map +1 -1
  148. package/build-module/card/card-media/hook.js +0 -4
  149. package/build-module/card/card-media/hook.js.map +1 -1
  150. package/build-module/card/card-media/index.js.map +1 -1
  151. package/build-module/card/context.js.map +1 -1
  152. package/build-module/card/index.js.map +1 -1
  153. package/build-module/card/styles.js +17 -17
  154. package/build-module/card/styles.js.map +1 -1
  155. package/build-module/clipboard-button/index.js +17 -1
  156. package/build-module/clipboard-button/index.js.map +1 -1
  157. package/build-module/color-palette/index.js +5 -2
  158. package/build-module/color-palette/index.js.map +1 -1
  159. package/build-module/custom-gradient-picker/index.js +10 -0
  160. package/build-module/custom-gradient-picker/index.js.map +1 -1
  161. package/build-module/date-time/date/index.js +27 -8
  162. package/build-module/date-time/date/index.js.map +1 -1
  163. package/build-module/date-time/date/styles.js +21 -5
  164. package/build-module/date-time/date/styles.js.map +1 -1
  165. package/build-module/date-time/date-time/index.js +2 -3
  166. package/build-module/date-time/date-time/index.js.map +1 -1
  167. package/build-module/date-time/date-time/styles.js +20 -1
  168. package/build-module/date-time/date-time/styles.js.map +1 -1
  169. package/build-module/date-time/time/styles.js +12 -12
  170. package/build-module/date-time/time/styles.js.map +1 -1
  171. package/build-module/drop-zone/index.js +2 -3
  172. package/build-module/drop-zone/index.js.map +1 -1
  173. package/build-module/dropdown-menu/index.js +1 -2
  174. package/build-module/dropdown-menu/index.js.map +1 -1
  175. package/build-module/dropdown-menu/index.native.js +0 -16
  176. package/build-module/dropdown-menu/index.native.js.map +1 -1
  177. package/build-module/focal-point-picker/controls.js +4 -4
  178. package/build-module/focal-point-picker/controls.js.map +1 -1
  179. package/build-module/focal-point-picker/focal-point.js +4 -6
  180. package/build-module/focal-point-picker/focal-point.js.map +1 -1
  181. package/build-module/focal-point-picker/grid.js +6 -34
  182. package/build-module/focal-point-picker/grid.js.map +1 -1
  183. package/build-module/focal-point-picker/index.js +158 -325
  184. package/build-module/focal-point-picker/index.js.map +1 -1
  185. package/build-module/focal-point-picker/media.js +4 -36
  186. package/build-module/focal-point-picker/media.js.map +1 -1
  187. package/build-module/focal-point-picker/styles/focal-point-picker-style.js +13 -14
  188. package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  189. package/build-module/focal-point-picker/utils.js +2 -6
  190. package/build-module/focal-point-picker/utils.js.map +1 -1
  191. package/build-module/focusable-iframe/index.js +6 -0
  192. package/build-module/focusable-iframe/index.js.map +1 -1
  193. package/build-module/form-token-field/index.js +18 -14
  194. package/build-module/form-token-field/index.js.map +1 -1
  195. package/build-module/gradient-picker/index.js +11 -1
  196. package/build-module/gradient-picker/index.js.map +1 -1
  197. package/build-module/guide/index.js +8 -5
  198. package/build-module/guide/index.js.map +1 -1
  199. package/build-module/higher-order/with-constrained-tabbing/index.js +1 -1
  200. package/build-module/higher-order/with-constrained-tabbing/index.js.map +1 -1
  201. package/build-module/higher-order/with-spoken-messages/index.js +2 -0
  202. package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
  203. package/build-module/isolated-event-container/index.js +3 -0
  204. package/build-module/isolated-event-container/index.js.map +1 -1
  205. package/build-module/mobile/global-styles-context/utils.native.js +2 -2
  206. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  207. package/build-module/navigable-container/menu.js +3 -8
  208. package/build-module/navigable-container/menu.js.map +1 -1
  209. package/build-module/navigation/menu/menu-title-search.js +1 -2
  210. package/build-module/navigation/menu/menu-title-search.js.map +1 -1
  211. package/build-module/palette-edit/index.js +6 -2
  212. package/build-module/palette-edit/index.js.map +1 -1
  213. package/build-module/popover/index.js +15 -35
  214. package/build-module/popover/index.js.map +1 -1
  215. package/build-module/text-highlight/index.js +2 -5
  216. package/build-module/text-highlight/index.js.map +1 -1
  217. package/build-module/toggle-group-control/toggle-group-control/component.js +2 -1
  218. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  219. package/build-module/toggle-group-control/toggle-group-control/styles.js +20 -6
  220. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  221. package/build-module/tooltip/index.js +1 -6
  222. package/build-module/tooltip/index.js.map +1 -1
  223. package/build-module/tree-grid/index.js +4 -9
  224. package/build-module/tree-grid/index.js.map +1 -1
  225. package/build-module/utils/strings.js +11 -0
  226. package/build-module/utils/strings.js.map +1 -1
  227. package/build-style/style-rtl.css +2 -21
  228. package/build-style/style.css +2 -21
  229. package/build-types/animation/index.d.ts +2 -0
  230. package/build-types/animation/index.d.ts.map +1 -0
  231. package/build-types/card/card/component.d.ts +3 -3
  232. package/build-types/card/card/component.d.ts.map +1 -1
  233. package/build-types/card/card/hook.d.ts +7 -2
  234. package/build-types/card/card/hook.d.ts.map +1 -1
  235. package/build-types/card/card/index.d.ts +2 -2
  236. package/build-types/card/card/index.d.ts.map +1 -1
  237. package/build-types/card/card-body/component.d.ts +3 -3
  238. package/build-types/card/card-body/component.d.ts.map +1 -1
  239. package/build-types/card/card-body/hook.d.ts +5 -2
  240. package/build-types/card/card-body/hook.d.ts.map +1 -1
  241. package/build-types/card/card-body/index.d.ts +2 -2
  242. package/build-types/card/card-body/index.d.ts.map +1 -1
  243. package/build-types/card/card-divider/component.d.ts +3 -3
  244. package/build-types/card/card-divider/component.d.ts.map +1 -1
  245. package/build-types/card/card-divider/hook.d.ts +5 -2
  246. package/build-types/card/card-divider/hook.d.ts.map +1 -1
  247. package/build-types/card/card-divider/index.d.ts +2 -2
  248. package/build-types/card/card-divider/index.d.ts.map +1 -1
  249. package/build-types/card/card-footer/component.d.ts +3 -3
  250. package/build-types/card/card-footer/component.d.ts.map +1 -1
  251. package/build-types/card/card-footer/hook.d.ts +5 -2
  252. package/build-types/card/card-footer/hook.d.ts.map +1 -1
  253. package/build-types/card/card-footer/index.d.ts +2 -2
  254. package/build-types/card/card-footer/index.d.ts.map +1 -1
  255. package/build-types/card/card-header/component.d.ts +3 -3
  256. package/build-types/card/card-header/component.d.ts.map +1 -1
  257. package/build-types/card/card-header/hook.d.ts +5 -2
  258. package/build-types/card/card-header/hook.d.ts.map +1 -1
  259. package/build-types/card/card-header/index.d.ts +2 -2
  260. package/build-types/card/card-header/index.d.ts.map +1 -1
  261. package/build-types/card/card-media/component.d.ts +3 -4
  262. package/build-types/card/card-media/component.d.ts.map +1 -1
  263. package/build-types/card/card-media/hook.d.ts +6 -5
  264. package/build-types/card/card-media/hook.d.ts.map +1 -1
  265. package/build-types/card/card-media/index.d.ts +2 -2
  266. package/build-types/card/card-media/index.d.ts.map +1 -1
  267. package/build-types/card/context.d.ts +3 -2
  268. package/build-types/card/context.d.ts.map +1 -1
  269. package/build-types/card/index.d.ts +6 -6
  270. package/build-types/card/index.d.ts.map +1 -1
  271. package/build-types/card/stories/index.d.ts +12 -0
  272. package/build-types/card/stories/index.d.ts.map +1 -0
  273. package/build-types/card/styles.d.ts +20 -22
  274. package/build-types/card/styles.d.ts.map +1 -1
  275. package/build-types/card/test/index.d.ts +2 -0
  276. package/build-types/card/test/index.d.ts.map +1 -0
  277. package/build-types/card/types.d.ts +7 -1
  278. package/build-types/card/types.d.ts.map +1 -1
  279. package/build-types/clipboard-button/index.d.ts +16 -0
  280. package/build-types/clipboard-button/index.d.ts.map +1 -0
  281. package/build-types/color-palette/index.d.ts.map +1 -1
  282. package/build-types/composite/index.d.ts +2 -0
  283. package/build-types/composite/index.d.ts.map +1 -0
  284. package/build-types/date-time/date/index.d.ts +1 -1
  285. package/build-types/date-time/date/index.d.ts.map +1 -1
  286. package/build-types/date-time/date/styles.d.ts +4 -0
  287. package/build-types/date-time/date/styles.d.ts.map +1 -1
  288. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  289. package/build-types/date-time/date-time/styles.d.ts +13 -0
  290. package/build-types/date-time/date-time/styles.d.ts.map +1 -1
  291. package/build-types/date-time/time/styles.d.ts.map +1 -1
  292. package/build-types/disclosure/index.d.ts +2 -0
  293. package/build-types/disclosure/index.d.ts.map +1 -0
  294. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  295. package/build-types/focusable-iframe/index.d.ts +8 -0
  296. package/build-types/focusable-iframe/index.d.ts.map +1 -0
  297. package/build-types/form-token-field/index.d.ts.map +1 -1
  298. package/build-types/form-token-field/test/index.d.ts +2 -0
  299. package/build-types/form-token-field/test/index.d.ts.map +1 -0
  300. package/build-types/higher-order/with-constrained-tabbing/index.d.ts +3 -0
  301. package/build-types/higher-order/with-constrained-tabbing/index.d.ts.map +1 -0
  302. package/build-types/higher-order/with-spoken-messages/index.d.ts +4 -0
  303. package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -0
  304. package/build-types/isolated-event-container/index.d.ts +3 -0
  305. package/build-types/isolated-event-container/index.d.ts.map +1 -0
  306. package/build-types/mobile/inserter-button/sparkles.d.ts +3 -0
  307. package/build-types/mobile/inserter-button/sparkles.d.ts.map +1 -0
  308. package/build-types/navigable-container/menu.d.ts.map +1 -1
  309. package/build-types/popover/index.d.ts +0 -1
  310. package/build-types/popover/index.d.ts.map +1 -1
  311. package/build-types/radio-context/index.d.ts +6 -0
  312. package/build-types/radio-context/index.d.ts.map +1 -0
  313. package/build-types/text-highlight/index.d.ts +0 -3
  314. package/build-types/text-highlight/index.d.ts.map +1 -1
  315. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  316. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +4 -0
  317. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  318. package/build-types/tooltip/index.d.ts.map +1 -1
  319. package/build-types/utils/strings.d.ts +8 -0
  320. package/build-types/utils/strings.d.ts.map +1 -1
  321. package/package.json +17 -17
  322. package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.js +1 -0
  323. package/src/autocomplete/get-default-use-items.js +6 -1
  324. package/src/autocomplete/index.js +2 -1
  325. package/src/card/card/{component.js → component.tsx} +13 -9
  326. package/src/card/card/{hook.js → hook.ts} +11 -11
  327. package/src/card/card/{index.js → index.ts} +0 -0
  328. package/src/card/card-body/{component.js → component.tsx} +13 -9
  329. package/src/card/card-body/{hook.js → hook.ts} +5 -5
  330. package/src/card/card-body/{index.js → index.ts} +0 -0
  331. package/src/card/card-divider/{component.js → component.tsx} +16 -10
  332. package/src/card/card-divider/{hook.js → hook.ts} +5 -5
  333. package/src/card/card-divider/{index.js → index.ts} +0 -0
  334. package/src/card/card-footer/{component.js → component.tsx} +13 -9
  335. package/src/card/card-footer/{hook.js → hook.ts} +5 -5
  336. package/src/card/card-footer/{index.js → index.ts} +0 -0
  337. package/src/card/card-header/{component.js → component.tsx} +13 -9
  338. package/src/card/card-header/{hook.js → hook.ts} +5 -5
  339. package/src/card/card-header/{index.js → index.ts} +0 -0
  340. package/src/card/card-media/{component.js → component.tsx} +13 -8
  341. package/src/card/card-media/{hook.js → hook.ts} +5 -5
  342. package/src/card/card-media/{index.js → index.ts} +0 -0
  343. package/src/card/{context.js → context.ts} +0 -0
  344. package/src/card/{index.js → index.ts} +0 -0
  345. package/src/card/stories/index.tsx +75 -0
  346. package/src/card/{styles.js → styles.ts} +0 -0
  347. package/src/card/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  348. package/src/card/test/{index.js → index.tsx} +3 -3
  349. package/src/card/types.ts +8 -1
  350. package/src/clipboard-button/index.js +13 -0
  351. package/src/color-palette/index.js +8 -5
  352. package/src/color-palette/style.scss +0 -14
  353. package/src/color-palette/test/__snapshots__/index.js.snap +11 -4
  354. package/src/custom-gradient-picker/index.js +12 -0
  355. package/src/custom-gradient-picker/stories/index.js +3 -0
  356. package/src/date-time/date/index.tsx +26 -6
  357. package/src/date-time/date/styles.ts +6 -0
  358. package/src/date-time/date/test/index.tsx +6 -2
  359. package/src/date-time/date-time/index.tsx +3 -4
  360. package/src/date-time/date-time/styles.ts +9 -0
  361. package/src/date-time/time/styles.ts +1 -0
  362. package/src/drop-zone/index.js +2 -3
  363. package/src/dropdown-menu/index.js +1 -2
  364. package/src/dropdown-menu/index.native.js +0 -13
  365. package/src/dropdown-menu/test/index.js +54 -58
  366. package/src/focal-point-picker/README.md +3 -6
  367. package/src/focal-point-picker/controls.js +4 -4
  368. package/src/focal-point-picker/focal-point.js +2 -8
  369. package/src/focal-point-picker/grid.js +5 -41
  370. package/src/focal-point-picker/index.js +161 -303
  371. package/src/focal-point-picker/media.js +4 -28
  372. package/src/focal-point-picker/styles/focal-point-picker-style.js +5 -8
  373. package/src/focal-point-picker/test/index.js +1 -1
  374. package/src/focal-point-picker/utils.js +2 -6
  375. package/src/focusable-iframe/index.js +5 -0
  376. package/src/form-token-field/index.tsx +17 -23
  377. package/src/form-token-field/test/index.tsx +2106 -0
  378. package/src/gradient-picker/README.md +9 -0
  379. package/src/gradient-picker/index.js +9 -0
  380. package/src/gradient-picker/stories/index.js +1 -0
  381. package/src/guide/index.js +6 -3
  382. package/src/guide/test/index.js +138 -1
  383. package/src/higher-order/with-constrained-tabbing/index.js +1 -1
  384. package/src/higher-order/with-spoken-messages/index.js +2 -0
  385. package/src/isolated-event-container/index.js +3 -0
  386. package/src/mobile/global-styles-context/utils.native.js +7 -2
  387. package/src/navigable-container/menu.js +3 -7
  388. package/src/navigation/menu/menu-title-search.js +1 -2
  389. package/src/palette-edit/index.js +14 -10
  390. package/src/palette-edit/style.scss +3 -11
  391. package/src/placeholder/style.scss +1 -4
  392. package/src/popover/index.js +17 -35
  393. package/src/popover/stories/index.js +0 -1
  394. package/src/text-highlight/index.tsx +1 -5
  395. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +62 -44
  396. package/src/toggle-group-control/toggle-group-control/component.tsx +3 -2
  397. package/src/toggle-group-control/toggle-group-control/styles.ts +5 -0
  398. package/src/tooltip/index.js +1 -5
  399. package/src/tree-grid/index.js +4 -9
  400. package/src/utils/strings.ts +11 -0
  401. package/tsconfig.json +45 -76
  402. package/tsconfig.tsbuildinfo +1 -1
  403. package/build/ui/__storybook-utils/example-grid.js +0 -88
  404. package/build/ui/__storybook-utils/example-grid.js.map +0 -1
  405. package/build/ui/__storybook-utils/index.js +0 -19
  406. package/build/ui/__storybook-utils/index.js.map +0 -1
  407. package/build/ui/__storybook-utils/page.js +0 -43
  408. package/build/ui/__storybook-utils/page.js.map +0 -1
  409. package/build/utils/keyboard.js +0 -41
  410. package/build/utils/keyboard.js.map +0 -1
  411. package/build-module/ui/__storybook-utils/example-grid.js +0 -69
  412. package/build-module/ui/__storybook-utils/example-grid.js.map +0 -1
  413. package/build-module/ui/__storybook-utils/index.js +0 -2
  414. package/build-module/ui/__storybook-utils/index.js.map +0 -1
  415. package/build-module/ui/__storybook-utils/page.js +0 -32
  416. package/build-module/ui/__storybook-utils/page.js.map +0 -1
  417. package/build-module/utils/keyboard.js +0 -33
  418. package/build-module/utils/keyboard.js.map +0 -1
  419. package/build-types/form-token-field/test/lib/fixtures.d.ts +0 -26
  420. package/build-types/form-token-field/test/lib/fixtures.d.ts.map +0 -1
  421. package/build-types/form-token-field/test/lib/token-field-wrapper.d.ts +0 -21
  422. package/build-types/form-token-field/test/lib/token-field-wrapper.d.ts.map +0 -1
  423. package/build-types/utils/keyboard.d.ts +0 -12
  424. package/build-types/utils/keyboard.d.ts.map +0 -1
  425. package/src/card/stories/index.js +0 -209
  426. package/src/form-token-field/test/index.js +0 -442
  427. package/src/form-token-field/test/lib/fixtures.js +0 -89
  428. package/src/form-token-field/test/lib/token-field-wrapper.tsx +0 -71
  429. package/src/guide/test/page-control.js +0 -40
  430. package/src/ui/__storybook-utils/example-grid.js +0 -61
  431. package/src/ui/__storybook-utils/index.js +0 -1
  432. package/src/ui/__storybook-utils/page.js +0 -29
  433. package/src/utils/keyboard.js +0 -28
  434. package/src/utils/test/keyboard.js +0 -34
@@ -1,442 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import TestUtils, { act } from 'react-dom/test-utils';
5
- import ReactDOM from 'react-dom';
6
-
7
- /**
8
- * Internal dependencies
9
- */
10
- import fixtures from './lib/fixtures';
11
- import TokenFieldWrapper from './lib/token-field-wrapper';
12
-
13
- /**
14
- * Module variables
15
- */
16
- const keyCodes = {
17
- backspace: 8,
18
- tab: 9,
19
- enter: 13,
20
- leftArrow: 37,
21
- upArrow: 38,
22
- rightArrow: 39,
23
- downArrow: 40,
24
- delete: 46,
25
- comma: 188,
26
- };
27
-
28
- const charCodes = {
29
- comma: 44,
30
- };
31
-
32
- describe( 'FormTokenField', () => {
33
- let wrapper, wrapperElement, textInputElement, textInputComponent;
34
-
35
- function setText( text ) {
36
- TestUtils.Simulate.change( textInputElement(), {
37
- target: {
38
- value: text,
39
- },
40
- } );
41
- }
42
-
43
- function sendKeyDown( keyCode, shiftKey ) {
44
- TestUtils.Simulate.keyDown( wrapperElement(), {
45
- keyCode,
46
- shiftKey: !! shiftKey,
47
- } );
48
- }
49
-
50
- function sendKeyPress( charCode ) {
51
- TestUtils.Simulate.keyPress( wrapperElement(), { charCode } );
52
- }
53
-
54
- function getTokensHTML() {
55
- const textNodes = wrapperElement().querySelectorAll(
56
- '.components-form-token-field__token-text span[aria-hidden]'
57
- );
58
- return Array.from( textNodes ).map( ( node ) => node.innerHTML );
59
- }
60
-
61
- function getSuggestionsText( selector ) {
62
- const suggestionNodes = wrapperElement().querySelectorAll(
63
- selector || '.components-form-token-field__suggestion'
64
- );
65
-
66
- return Array.from( suggestionNodes ).map( getSuggestionNodeText );
67
- }
68
-
69
- function getSuggestionNodeText( node ) {
70
- if ( ! node.querySelector( 'span' ) ) {
71
- return node.outerHTML;
72
- }
73
-
74
- // This suggestion is part of a partial match; return up to three
75
- // sections of the suggestion (before match, match, and after
76
- // match).
77
- const div = document.createElement( 'div' );
78
- div.innerHTML = node.querySelector( 'span' ).outerHTML;
79
- return Array.from( div.firstChild.childNodes )
80
- .filter(
81
- ( childNode ) => childNode.nodeType !== childNode.COMMENT_NODE
82
- )
83
- .map( ( childNode ) => childNode.textContent );
84
- }
85
-
86
- function getSelectedSuggestion() {
87
- const selectedSuggestions = getSuggestionsText(
88
- '.components-form-token-field__suggestion.is-selected'
89
- );
90
-
91
- return selectedSuggestions[ 0 ] || null;
92
- }
93
-
94
- function setUp( props ) {
95
- wrapper = TestUtils.renderIntoDocument(
96
- <TokenFieldWrapper { ...props } />
97
- );
98
- /* eslint-disable react/no-find-dom-node */
99
- wrapperElement = () => ReactDOM.findDOMNode( wrapper );
100
- textInputElement = () =>
101
- TestUtils.findRenderedDOMComponentWithClass(
102
- wrapper,
103
- 'components-form-token-field__input'
104
- );
105
-
106
- textInputComponent = () =>
107
- TestUtils.findRenderedDOMComponentWithTag( wrapper, 'input' );
108
- /* eslint-enable react/no-find-dom-node */
109
- TestUtils.Simulate.focus( textInputElement() );
110
- }
111
-
112
- describe( 'displaying tokens', () => {
113
- it( 'should render default tokens', () => {
114
- setUp();
115
- wrapper.setState( {
116
- isExpanded: true,
117
- } );
118
- expect( wrapper.state.tokens ).toEqual( [ 'foo', 'bar' ] );
119
- } );
120
-
121
- it( 'should display tokens with escaped special characters properly', () => {
122
- setUp();
123
- wrapper.setState( {
124
- tokens: fixtures.specialTokens.textEscaped,
125
- isExpanded: true,
126
- } );
127
- expect( getTokensHTML() ).toEqual(
128
- fixtures.specialTokens.htmlEscaped
129
- );
130
- } );
131
-
132
- it( 'should display tokens with special characters properly', () => {
133
- setUp();
134
- // This test is not as realistic as the previous one: if a WP site
135
- // contains tag names with special characters, the API will always
136
- // return the tag names already escaped. However, this is still
137
- // worth testing, so we can be sure that token values with
138
- // dangerous characters in them don't have these characters carried
139
- // through unescaped to the HTML.
140
- wrapper.setState( {
141
- tokens: fixtures.specialTokens.textUnescaped,
142
- isExpanded: true,
143
- } );
144
- expect( getTokensHTML() ).toEqual(
145
- fixtures.specialTokens.htmlUnescaped
146
- );
147
- } );
148
- } );
149
-
150
- describe( 'suggestions', () => {
151
- it( 'should not render suggestions unless we type at least two characters', () => {
152
- setUp();
153
- wrapper.setState( {
154
- isExpanded: true,
155
- } );
156
- expect( getSuggestionsText() ).toEqual( [] );
157
- act( () => {
158
- setText( 'th' );
159
- } );
160
- expect( getSuggestionsText() ).toEqual(
161
- fixtures.matchingSuggestions.th
162
- );
163
- } );
164
-
165
- it( 'should show suggestions when input is empty if expandOnFocus is set to true', () => {
166
- setUp( { __experimentalExpandOnFocus: true } );
167
- wrapper.setState( {
168
- isExpanded: true,
169
- } );
170
- expect( getSuggestionsText() ).not.toEqual( [] );
171
- } );
172
-
173
- it( 'should remove already added tags from suggestions', () => {
174
- setUp();
175
- wrapper.setState( {
176
- tokens: Object.freeze( [ 'of', 'and' ] ),
177
- } );
178
- expect( getSuggestionsText() ).not.toEqual( getTokensHTML() );
179
- } );
180
-
181
- it( 'suggestions that begin with match are boosted', () => {
182
- setUp();
183
- wrapper.setState( {
184
- isExpanded: true,
185
- } );
186
- act( () => {
187
- setText( 'so' );
188
- } );
189
- expect( getSuggestionsText() ).toEqual(
190
- fixtures.matchingSuggestions.so
191
- );
192
- } );
193
-
194
- it( 'should match against the unescaped values of suggestions with special characters', () => {
195
- setUp();
196
-
197
- act( () => {
198
- wrapper.setState( {
199
- tokenSuggestions: fixtures.specialSuggestions.textUnescaped,
200
- isExpanded: true,
201
- } );
202
- } );
203
-
204
- act( () => {
205
- setText( '& S' );
206
- } );
207
-
208
- expect( getSuggestionsText() ).toEqual(
209
- fixtures.specialSuggestions.matchAmpersandUnescaped
210
- );
211
- } );
212
-
213
- it( 'should match against the unescaped values of suggestions with special characters (including spaces)', () => {
214
- setUp();
215
- act( () => {
216
- wrapper.setState( {
217
- tokenSuggestions: fixtures.specialSuggestions.textUnescaped,
218
- isExpanded: true,
219
- } );
220
- } );
221
- act( () => {
222
- setText( 's &' );
223
- } );
224
- expect( getSuggestionsText() ).toEqual(
225
- fixtures.specialSuggestions.matchAmpersandSequence
226
- );
227
- } );
228
-
229
- it( 'should not match against the escaped values of suggestions with special characters', () => {
230
- setUp();
231
- act( () => {
232
- setText( 'amp' );
233
- } );
234
- act( () => {
235
- wrapper.setState( {
236
- tokenSuggestions: fixtures.specialSuggestions.textUnescaped,
237
- isExpanded: true,
238
- } );
239
- } );
240
- expect( getSuggestionsText() ).toEqual(
241
- fixtures.specialSuggestions.matchAmpersandEscaped
242
- );
243
- } );
244
-
245
- it( 'should match suggestions even with trailing spaces', () => {
246
- setUp();
247
- wrapper.setState( {
248
- isExpanded: true,
249
- } );
250
- act( () => {
251
- setText( ' at ' );
252
- } );
253
- expect( getSuggestionsText() ).toEqual(
254
- fixtures.matchingSuggestions.at
255
- );
256
- } );
257
-
258
- it( 'should manage the selected suggestion based on both keyboard and mouse events', () => {
259
- setUp();
260
- wrapper.setState( {
261
- isExpanded: true,
262
- } );
263
- act( () => {
264
- setText( 'th' );
265
- } );
266
- expect( getSuggestionsText() ).toEqual(
267
- fixtures.matchingSuggestions.th
268
- );
269
- expect( getSelectedSuggestion() ).toBe( null );
270
- sendKeyDown( keyCodes.downArrow ); // 'the'.
271
- expect( getSelectedSuggestion() ).toEqual( [ 'th', 'e' ] );
272
- sendKeyDown( keyCodes.downArrow ); // 'that'.
273
- expect( getSelectedSuggestion() ).toEqual( [ 'th', 'at' ] );
274
-
275
- const hoverSuggestion = wrapperElement().querySelectorAll(
276
- '.components-form-token-field__suggestion'
277
- )[ 3 ]; // 'with'.
278
- expect( getSuggestionNodeText( hoverSuggestion ) ).toEqual( [
279
- 'wi',
280
- 'th',
281
- ] );
282
-
283
- // Before sending a hover event, we need to wait for
284
- // SuggestionList#_scrollingIntoView to become false.
285
- act( () => {
286
- jest.advanceTimersByTime( 100 );
287
- } );
288
-
289
- TestUtils.Simulate.mouseEnter( hoverSuggestion );
290
- expect( getSelectedSuggestion() ).toEqual( [ 'wi', 'th' ] );
291
- sendKeyDown( keyCodes.upArrow );
292
- expect( getSelectedSuggestion() ).toEqual( [ 'th', 'is' ] );
293
- sendKeyDown( keyCodes.upArrow );
294
- expect( getSelectedSuggestion() ).toEqual( [ 'th', 'at' ] );
295
- TestUtils.Simulate.click( hoverSuggestion );
296
- expect( getSelectedSuggestion() ).toBe( null );
297
- expect( getTokensHTML() ).toEqual( [ 'foo', 'bar', 'with' ] );
298
- } );
299
-
300
- it( 'should re-render when suggestions prop has changed', () => {
301
- setUp();
302
- act( () => {
303
- wrapper.setState( {
304
- tokenSuggestions: [],
305
- isExpanded: true,
306
- } );
307
- } );
308
- expect( getSuggestionsText() ).toEqual( [] );
309
- act( () => {
310
- setText( 'so' );
311
- } );
312
- expect( getSuggestionsText() ).toEqual( [] );
313
- act( () => {
314
- wrapper.setState( {
315
- tokenSuggestions: fixtures.specialSuggestions.default,
316
- } );
317
- } );
318
- expect( getSuggestionsText() ).toEqual(
319
- fixtures.matchingSuggestions.so
320
- );
321
- act( () => {
322
- wrapper.setState( {
323
- tokenSuggestions: [],
324
- } );
325
- } );
326
- expect( getSuggestionsText() ).toEqual( [] );
327
- } );
328
- } );
329
-
330
- describe( 'adding tokens', () => {
331
- it( 'should not allow adding blank tokens with Tab', () => {
332
- setUp();
333
- sendKeyDown( keyCodes.tab );
334
- expect( wrapper.state.tokens ).toEqual( [ 'foo', 'bar' ] );
335
- } );
336
-
337
- it( 'should not allow adding whitespace tokens with Tab', () => {
338
- setUp();
339
- act( () => {
340
- setText( ' ' );
341
- } );
342
- sendKeyDown( keyCodes.tab );
343
- expect( wrapper.state.tokens ).toEqual( [ 'foo', 'bar' ] );
344
- } );
345
-
346
- it( 'should add a token when Enter pressed', () => {
347
- setUp();
348
- act( () => {
349
- setText( 'baz' );
350
- } );
351
- sendKeyDown( keyCodes.enter );
352
- expect( wrapper.state.tokens ).toEqual( [ 'foo', 'bar', 'baz' ] );
353
- const textNode = textInputComponent();
354
- expect( textNode.value ).toBe( '' );
355
- } );
356
-
357
- it( 'should not allow adding blank tokens with Enter', () => {
358
- setUp();
359
- sendKeyDown( keyCodes.enter );
360
- expect( wrapper.state.tokens ).toEqual( [ 'foo', 'bar' ] );
361
- } );
362
-
363
- it( 'should not allow adding whitespace tokens with Enter', () => {
364
- setUp();
365
- setText( ' ' );
366
- sendKeyDown( keyCodes.enter );
367
- expect( wrapper.state.tokens ).toEqual( [ 'foo', 'bar' ] );
368
- } );
369
-
370
- it( 'should not allow adding whitespace tokens with comma', () => {
371
- setUp();
372
- setText( ' ' );
373
- sendKeyPress( charCodes.comma );
374
- expect( wrapper.state.tokens ).toEqual( [ 'foo', 'bar' ] );
375
- } );
376
-
377
- it( 'should add a token when comma pressed', () => {
378
- setUp();
379
- setText( 'baz' );
380
- sendKeyPress( charCodes.comma );
381
- expect( wrapper.state.tokens ).toEqual( [ 'foo', 'bar', 'baz' ] );
382
- } );
383
-
384
- it( 'should trim token values when adding', () => {
385
- setUp();
386
- setText( ' baz ' );
387
- sendKeyDown( keyCodes.enter );
388
- expect( wrapper.state.tokens ).toEqual( [ 'foo', 'bar', 'baz' ] );
389
- } );
390
-
391
- it( "should not add values that don't pass the validation", () => {
392
- setUp( {
393
- __experimentalValidateInput: ( newValue ) => newValue !== 'baz',
394
- } );
395
- setText( 'baz' );
396
- sendKeyDown( keyCodes.enter );
397
- expect( wrapper.state.tokens ).toEqual( [ 'foo', 'bar' ] );
398
- } );
399
-
400
- it( 'should automatically select the first matching suggestions when __experimentalAutoSelectFirstMatch is set to true', () => {
401
- setUp( { __experimentalAutoSelectFirstMatch: true } );
402
-
403
- wrapper.setState( {
404
- isExpanded: true,
405
- } );
406
-
407
- expect( getSuggestionsText() ).toEqual( [] );
408
-
409
- const searchText = 'so';
410
-
411
- act( () => {
412
- setText( searchText );
413
- } );
414
-
415
- const expectedFirstMatchTokens =
416
- fixtures.matchingSuggestions[ searchText ][ 0 ];
417
-
418
- expect( getSelectedSuggestion() ).toEqual(
419
- expectedFirstMatchTokens
420
- );
421
-
422
- sendKeyDown( keyCodes.enter );
423
-
424
- expect( wrapper.state.tokens ).toEqual( [
425
- 'foo',
426
- 'bar',
427
- expectedFirstMatchTokens.join( '' ),
428
- ] );
429
- } );
430
- } );
431
-
432
- describe( 'removing tokens', () => {
433
- it( 'should remove tokens when X icon clicked', () => {
434
- setUp();
435
- const forClickNode = wrapperElement().querySelector(
436
- '.components-form-token-field__remove-token'
437
- ).firstChild;
438
- TestUtils.Simulate.click( forClickNode );
439
- expect( wrapper.state.tokens ).toEqual( [ 'bar' ] );
440
- } );
441
- } );
442
- } );
@@ -1,89 +0,0 @@
1
- export default {
2
- specialTokens: {
3
- textEscaped: [ 'a b', 'i &lt;3 tags', '1&amp;2&amp;3&amp;4' ],
4
- htmlEscaped: [
5
- 'a&nbsp;&nbsp;&nbsp;b',
6
- 'i&nbsp;&lt;3&nbsp;tags',
7
- '1&amp;2&amp;3&amp;4',
8
- ],
9
- textUnescaped: [ 'a b', 'i <3 tags', '1&2&3&4' ],
10
- htmlUnescaped: [
11
- 'a&nbsp;&nbsp;&nbsp;b',
12
- 'i&nbsp;&lt;3&nbsp;tags',
13
- '1&amp;2&amp;3&amp;4',
14
- ],
15
- },
16
- specialSuggestions: {
17
- default: [
18
- 'the',
19
- 'of',
20
- 'and',
21
- 'to',
22
- 'a',
23
- 'in',
24
- 'for',
25
- 'is',
26
- 'on',
27
- 'that',
28
- 'by',
29
- 'this',
30
- 'with',
31
- 'i',
32
- 'you',
33
- 'it',
34
- 'not',
35
- 'or',
36
- 'be',
37
- 'are',
38
- 'from',
39
- 'at',
40
- 'as',
41
- 'your',
42
- 'all',
43
- 'have',
44
- 'new',
45
- 'more',
46
- 'an',
47
- 'was',
48
- 'we',
49
- 'associate',
50
- 'snake',
51
- 'pipes',
52
- 'sound',
53
- ],
54
- textEscaped: [
55
- '&lt;3',
56
- 'Stuff &amp; Things',
57
- 'Tags &amp; Stuff',
58
- 'Tags &amp; Stuff 2',
59
- ],
60
- textUnescaped: [
61
- '<3',
62
- 'Stuff & Things',
63
- 'Tags & Stuff',
64
- 'Tags & Stuff 2',
65
- ],
66
- matchAmpersandUnescaped: [
67
- [ 'Tags ', '& S', 'tuff' ],
68
- [ 'Tags ', '& S', 'tuff 2' ],
69
- ],
70
- matchAmpersandSequence: [
71
- [ 'Tag', 's &', ' Stuff' ],
72
- [ 'Tag', 's &', ' Stuff 2' ],
73
- ],
74
- matchAmpersandEscaped: [],
75
- },
76
- matchingSuggestions: {
77
- th: [
78
- [ 'th', 'e' ],
79
- [ 'th', 'at' ],
80
- [ 'th', 'is' ],
81
- [ 'wi', 'th' ],
82
- ],
83
- so: [
84
- [ 'so', 'und' ],
85
- [ 'as', 'so', 'ciate' ],
86
- ],
87
- at: [ [ 'at' ], [ 'th', 'at' ], [ 'associ', 'at', 'e' ] ],
88
- },
89
- };
@@ -1,71 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import type { ComponentProps } from 'react';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { Component } from '@wordpress/element';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import fixtures from './fixtures';
15
- import type { FormTokenFieldProps } from '../../types';
16
- import FormTokenField from '../../';
17
-
18
- const {
19
- specialSuggestions: { default: suggestions },
20
- } = fixtures;
21
-
22
- function unescapeAndFormatSpaces( str: string ) {
23
- const nbsp = String.fromCharCode( 160 );
24
- const escaped = new DOMParser().parseFromString( str, 'text/html' );
25
- return escaped.documentElement.textContent?.replace( / /g, nbsp ) ?? '';
26
- }
27
-
28
- class TokenFieldWrapper extends Component<
29
- FormTokenFieldProps,
30
- {
31
- tokenSuggestions: ComponentProps<
32
- typeof FormTokenField
33
- >[ 'suggestions' ];
34
- tokens: ComponentProps< typeof FormTokenField >[ 'value' ];
35
- isExpanded: boolean;
36
- }
37
- > {
38
- constructor( props: FormTokenFieldProps ) {
39
- super( props );
40
- this.state = {
41
- tokenSuggestions: suggestions,
42
- tokens: Object.freeze( [ 'foo', 'bar' ] ) as string[],
43
- isExpanded: false,
44
- };
45
- this.onTokensChange = this.onTokensChange.bind( this );
46
- }
47
-
48
- render() {
49
- return (
50
- <FormTokenField
51
- suggestions={
52
- this.state.isExpanded
53
- ? this.state.tokenSuggestions
54
- : undefined
55
- }
56
- value={ this.state.tokens }
57
- displayTransform={ unescapeAndFormatSpaces }
58
- onChange={ this.onTokensChange }
59
- { ...this.props }
60
- />
61
- );
62
- }
63
-
64
- onTokensChange(
65
- value: ComponentProps< typeof FormTokenField >[ 'value' ]
66
- ) {
67
- this.setState( { tokens: value } );
68
- }
69
- }
70
-
71
- export default TokenFieldWrapper;
@@ -1,40 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { render, screen } from '@testing-library/react';
5
- import userEvent from '@testing-library/user-event';
6
-
7
- /**
8
- * Internal dependencies
9
- */
10
- import PageControl from '../page-control';
11
-
12
- describe( 'PageControl', () => {
13
- it( 'renders an empty list when there are no pages', () => {
14
- render( <PageControl currentPage={ 0 } numberOfPages={ 0 } /> );
15
- expect( screen.queryByRole( 'button' ) ).not.toBeInTheDocument();
16
- } );
17
-
18
- it( 'renders a button for each page', () => {
19
- render( <PageControl currentPage={ 0 } numberOfPages={ 5 } /> );
20
- expect( screen.getAllByRole( 'button' ) ).toHaveLength( 5 );
21
- } );
22
-
23
- it( 'sets the current page when a button is clicked', async () => {
24
- const user = userEvent.setup( {
25
- advanceTimers: jest.advanceTimersByTime,
26
- } );
27
- const setCurrentPage = jest.fn();
28
- render(
29
- <PageControl
30
- currentPage={ 0 }
31
- numberOfPages={ 2 }
32
- setCurrentPage={ setCurrentPage }
33
- />
34
- );
35
-
36
- await user.click( screen.getAllByRole( 'button' )[ 1 ] );
37
-
38
- expect( setCurrentPage ).toHaveBeenCalledWith( 1 );
39
- } );
40
- } );
@@ -1,61 +0,0 @@
1
- /**
2
- * Internal dependencies
3
- */
4
- import { Grid } from '../../grid';
5
- import { Surface } from '../../surface';
6
- import { Text } from '../../text';
7
- import { View } from '../../view';
8
- import { VStack } from '../../v-stack';
9
-
10
- const Container = ( { children } ) => (
11
- <div
12
- style={ {
13
- maxWidth: 1280,
14
- width: '100%',
15
- marginLeft: 'auto',
16
- marginRight: 'auto',
17
- } }
18
- >
19
- { children }
20
- </div>
21
- );
22
-
23
- export const ExampleGrid = ( { children } ) => (
24
- <Container>
25
- <Grid columns={ [ 2, 2, 4 ] } gap="1px">
26
- { children }
27
- </Grid>
28
- </Container>
29
- );
30
-
31
- export const ExampleGridItem = ( { children } ) => (
32
- <Surface
33
- variant="secondary"
34
- style={ {
35
- padding: 20,
36
- } }
37
- >
38
- <VStack alignment="center">{ children }</VStack>
39
- </Surface>
40
- );
41
-
42
- export const ExampleMetaContent = ( { title, items = [] } ) => {
43
- return (
44
- <Grid templateColumns="60px 1fr">
45
- <View>
46
- <Text size="caption" weight="bold" align="right" isBlock>
47
- { title }
48
- </Text>
49
- </View>
50
- <VStack spacing={ 1 }>
51
- { items.map( ( item, index ) => (
52
- <View key={ index }>
53
- <Text size="caption" isBlock>
54
- { item }
55
- </Text>
56
- </View>
57
- ) ) }
58
- </VStack>
59
- </Grid>
60
- );
61
- };
@@ -1 +0,0 @@
1
- export * from './example-grid';