@wordpress/components 22.1.0 → 23.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 (660) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/CONTRIBUTING.md +0 -21
  3. package/build/alignment-matrix-control/cell.js.map +1 -1
  4. package/build/alignment-matrix-control/icon.js +4 -2
  5. package/build/alignment-matrix-control/icon.js.map +1 -1
  6. package/build/alignment-matrix-control/index.js +25 -1
  7. package/build/alignment-matrix-control/index.js.map +1 -1
  8. package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +13 -13
  9. package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +1 -1
  10. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +16 -16
  11. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  12. package/build/alignment-matrix-control/types.js +6 -0
  13. package/build/alignment-matrix-control/types.js.map +1 -0
  14. package/build/alignment-matrix-control/utils.js +9 -8
  15. package/build/alignment-matrix-control/utils.js.map +1 -1
  16. package/build/angle-picker-control/styles/angle-picker-control-styles.js +9 -9
  17. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  18. package/build/autocomplete/index.js +39 -12
  19. package/build/autocomplete/index.js.map +1 -1
  20. package/build/base-control/hooks.js +52 -0
  21. package/build/base-control/hooks.js.map +1 -0
  22. package/build/base-control/index.js +24 -7
  23. package/build/base-control/index.js.map +1 -1
  24. package/build/base-field/hook.js +0 -14
  25. package/build/base-field/hook.js.map +1 -1
  26. package/build/base-field/index.js.map +1 -1
  27. package/build/base-field/styles.js +5 -5
  28. package/build/base-field/styles.js.map +1 -1
  29. package/build/base-field/types.js +6 -0
  30. package/build/base-field/types.js.map +1 -0
  31. package/build/border-box-control/border-box-control/component.js +0 -3
  32. package/build/border-box-control/border-box-control/component.js.map +1 -1
  33. package/build/border-box-control/border-box-control/hook.js +0 -2
  34. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  35. package/build/border-box-control/border-box-control-split-controls/component.js +0 -2
  36. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  37. package/build/border-box-control/border-box-control-split-controls/hook.js +0 -2
  38. package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  39. package/build/border-control/border-control/component.js +1 -2
  40. package/build/border-control/border-control/component.js.map +1 -1
  41. package/build/border-control/border-control/hook.js +0 -2
  42. package/build/border-control/border-control/hook.js.map +1 -1
  43. package/build/border-control/border-control-dropdown/component.js +6 -11
  44. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  45. package/build/border-control/border-control-dropdown/hook.js +0 -2
  46. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  47. package/build/border-control/styles.js +16 -16
  48. package/build/border-control/styles.js.map +1 -1
  49. package/build/box-control/linked-button.js +3 -4
  50. package/build/box-control/linked-button.js.map +1 -1
  51. package/build/color-palette/index.js +7 -15
  52. package/build/color-palette/index.js.map +1 -1
  53. package/build/color-picker/input-with-slider.js +1 -0
  54. package/build/color-picker/input-with-slider.js.map +1 -1
  55. package/build/color-picker/styles.js +8 -8
  56. package/build/color-picker/styles.js.map +1 -1
  57. package/build/custom-select-control/index.js +14 -2
  58. package/build/custom-select-control/index.js.map +1 -1
  59. package/build/dashicon/index.js +1 -4
  60. package/build/dashicon/index.js.map +1 -1
  61. package/build/date-time/date-time/index.js +4 -4
  62. package/build/date-time/date-time/index.js.map +1 -1
  63. package/build/dimension-control/index.js.map +1 -1
  64. package/build/dropdown/index.js +45 -10
  65. package/build/dropdown/index.js.map +1 -1
  66. package/build/duotone-picker/duotone-picker.js +2 -2
  67. package/build/duotone-picker/duotone-picker.js.map +1 -1
  68. package/build/gradient-picker/index.js +4 -11
  69. package/build/gradient-picker/index.js.map +1 -1
  70. package/build/higher-order/navigate-regions/index.js +4 -3
  71. package/build/higher-order/navigate-regions/index.js.map +1 -1
  72. package/build/higher-order/with-fallback-styles/index.js +2 -2
  73. package/build/higher-order/with-fallback-styles/index.js.map +1 -1
  74. package/build/index.js +13 -9
  75. package/build/index.js.map +1 -1
  76. package/build/input-control/index.js +17 -5
  77. package/build/input-control/index.js.map +1 -1
  78. package/build/input-control/input-base.js +2 -0
  79. package/build/input-control/input-base.js.map +1 -1
  80. package/build/mobile/bottom-sheet/cell.native.js +1 -1
  81. package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
  82. package/build/mobile/bottom-sheet/picker-cell.native.js +1 -9
  83. package/build/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
  84. package/build/mobile/bottom-sheet/switch-cell.native.js +1 -3
  85. package/build/mobile/bottom-sheet/switch-cell.native.js.map +1 -1
  86. package/build/mobile/global-styles-context/index.native.js +8 -8
  87. package/build/mobile/global-styles-context/index.native.js.map +1 -1
  88. package/build/mobile/global-styles-context/utils.native.js +30 -12
  89. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  90. package/build/mobile/keyboard-aware-flat-list/index.ios.js +4 -2
  91. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  92. package/build/modal/index.js +8 -0
  93. package/build/modal/index.js.map +1 -1
  94. package/build/navigator/navigator-provider/component.js +12 -8
  95. package/build/navigator/navigator-provider/component.js.map +1 -1
  96. package/build/number-control/styles/number-control-styles.js +8 -8
  97. package/build/number-control/styles/number-control-styles.js.map +1 -1
  98. package/build/palette-edit/index.js +72 -33
  99. package/build/palette-edit/index.js.map +1 -1
  100. package/build/popover/index.js +10 -2
  101. package/build/popover/index.js.map +1 -1
  102. package/build/query-controls/index.js +1 -0
  103. package/build/query-controls/index.js.map +1 -1
  104. package/build/snackbar/index.js +35 -24
  105. package/build/snackbar/index.js.map +1 -1
  106. package/build/snackbar/list.js +14 -19
  107. package/build/snackbar/list.js.map +1 -1
  108. package/build/snackbar/types.js +6 -0
  109. package/build/snackbar/types.js.map +1 -0
  110. package/build/tab-panel/index.js +15 -9
  111. package/build/tab-panel/index.js.map +1 -1
  112. package/build/theme/color-algorithms.js +118 -0
  113. package/build/theme/color-algorithms.js.map +1 -0
  114. package/build/theme/index.js +21 -18
  115. package/build/theme/index.js.map +1 -1
  116. package/build/theme/styles.js +10 -7
  117. package/build/theme/styles.js.map +1 -1
  118. package/build/toggle-control/index.js +5 -2
  119. package/build/toggle-control/index.js.map +1 -1
  120. package/build/ui/context/context-system-provider.js +3 -1
  121. package/build/ui/context/context-system-provider.js.map +1 -1
  122. package/build/unit-control/index.js +5 -2
  123. package/build/unit-control/index.js.map +1 -1
  124. package/build/utils/colors-values.js +1 -1
  125. package/build/utils/colors-values.js.map +1 -1
  126. package/build/utils/config-values.js +0 -2
  127. package/build/utils/config-values.js.map +1 -1
  128. package/build/utils/hooks/use-controlled-value.js.map +1 -1
  129. package/build-module/alignment-matrix-control/cell.js.map +1 -1
  130. package/build-module/alignment-matrix-control/icon.js +4 -2
  131. package/build-module/alignment-matrix-control/icon.js.map +1 -1
  132. package/build-module/alignment-matrix-control/index.js +23 -1
  133. package/build-module/alignment-matrix-control/index.js.map +1 -1
  134. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +13 -13
  135. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +1 -1
  136. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +16 -16
  137. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  138. package/build-module/alignment-matrix-control/types.js +2 -0
  139. package/build-module/alignment-matrix-control/types.js.map +1 -0
  140. package/build-module/alignment-matrix-control/utils.js +13 -8
  141. package/build-module/alignment-matrix-control/utils.js.map +1 -1
  142. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +9 -9
  143. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  144. package/build-module/autocomplete/index.js +39 -11
  145. package/build-module/autocomplete/index.js.map +1 -1
  146. package/build-module/base-control/hooks.js +41 -0
  147. package/build-module/base-control/hooks.js.map +1 -0
  148. package/build-module/base-control/index.js +18 -8
  149. package/build-module/base-control/index.js.map +1 -1
  150. package/build-module/base-field/hook.js +0 -14
  151. package/build-module/base-field/hook.js.map +1 -1
  152. package/build-module/base-field/index.js.map +1 -1
  153. package/build-module/base-field/styles.js +5 -5
  154. package/build-module/base-field/styles.js.map +1 -1
  155. package/build-module/base-field/types.js +2 -0
  156. package/build-module/base-field/types.js.map +1 -0
  157. package/build-module/border-box-control/border-box-control/component.js +0 -3
  158. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  159. package/build-module/border-box-control/border-box-control/hook.js +0 -2
  160. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  161. package/build-module/border-box-control/border-box-control-split-controls/component.js +0 -2
  162. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  163. package/build-module/border-box-control/border-box-control-split-controls/hook.js +0 -2
  164. package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  165. package/build-module/border-control/border-control/component.js +1 -2
  166. package/build-module/border-control/border-control/component.js.map +1 -1
  167. package/build-module/border-control/border-control/hook.js +0 -2
  168. package/build-module/border-control/border-control/hook.js.map +1 -1
  169. package/build-module/border-control/border-control-dropdown/component.js +6 -11
  170. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  171. package/build-module/border-control/border-control-dropdown/hook.js +0 -2
  172. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  173. package/build-module/border-control/styles.js +17 -17
  174. package/build-module/border-control/styles.js.map +1 -1
  175. package/build-module/box-control/linked-button.js +3 -4
  176. package/build-module/box-control/linked-button.js.map +1 -1
  177. package/build-module/color-palette/index.js +7 -15
  178. package/build-module/color-palette/index.js.map +1 -1
  179. package/build-module/color-picker/input-with-slider.js +1 -0
  180. package/build-module/color-picker/input-with-slider.js.map +1 -1
  181. package/build-module/color-picker/styles.js +8 -8
  182. package/build-module/color-picker/styles.js.map +1 -1
  183. package/build-module/custom-select-control/index.js +14 -2
  184. package/build-module/custom-select-control/index.js.map +1 -1
  185. package/build-module/dashicon/index.js +1 -4
  186. package/build-module/dashicon/index.js.map +1 -1
  187. package/build-module/date-time/date-time/index.js +4 -4
  188. package/build-module/date-time/date-time/index.js.map +1 -1
  189. package/build-module/dimension-control/index.js +1 -2
  190. package/build-module/dimension-control/index.js.map +1 -1
  191. package/build-module/dropdown/index.js +44 -10
  192. package/build-module/dropdown/index.js.map +1 -1
  193. package/build-module/duotone-picker/duotone-picker.js +2 -2
  194. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  195. package/build-module/gradient-picker/index.js +4 -10
  196. package/build-module/gradient-picker/index.js.map +1 -1
  197. package/build-module/higher-order/navigate-regions/index.js +4 -3
  198. package/build-module/higher-order/navigate-regions/index.js.map +1 -1
  199. package/build-module/higher-order/with-fallback-styles/index.js +2 -2
  200. package/build-module/higher-order/with-fallback-styles/index.js.map +1 -1
  201. package/build-module/index.js +2 -3
  202. package/build-module/index.js.map +1 -1
  203. package/build-module/input-control/index.js +16 -5
  204. package/build-module/input-control/index.js.map +1 -1
  205. package/build-module/input-control/input-base.js +2 -0
  206. package/build-module/input-control/input-base.js.map +1 -1
  207. package/build-module/mobile/bottom-sheet/cell.native.js +1 -1
  208. package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
  209. package/build-module/mobile/bottom-sheet/picker-cell.native.js +1 -8
  210. package/build-module/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
  211. package/build-module/mobile/bottom-sheet/switch-cell.native.js +1 -2
  212. package/build-module/mobile/bottom-sheet/switch-cell.native.js.map +1 -1
  213. package/build-module/mobile/global-styles-context/index.native.js +8 -7
  214. package/build-module/mobile/global-styles-context/index.native.js.map +1 -1
  215. package/build-module/mobile/global-styles-context/utils.native.js +31 -13
  216. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  217. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  218. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  219. package/build-module/modal/index.js +8 -0
  220. package/build-module/modal/index.js.map +1 -1
  221. package/build-module/navigator/navigator-provider/component.js +12 -8
  222. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  223. package/build-module/number-control/styles/number-control-styles.js +8 -10
  224. package/build-module/number-control/styles/number-control-styles.js.map +1 -1
  225. package/build-module/palette-edit/index.js +73 -34
  226. package/build-module/palette-edit/index.js.map +1 -1
  227. package/build-module/popover/index.js +10 -2
  228. package/build-module/popover/index.js.map +1 -1
  229. package/build-module/query-controls/index.js +1 -0
  230. package/build-module/query-controls/index.js.map +1 -1
  231. package/build-module/snackbar/index.js +33 -23
  232. package/build-module/snackbar/index.js.map +1 -1
  233. package/build-module/snackbar/list.js +14 -22
  234. package/build-module/snackbar/list.js.map +1 -1
  235. package/build-module/snackbar/types.js +2 -0
  236. package/build-module/snackbar/types.js.map +1 -0
  237. package/build-module/tab-panel/index.js +15 -8
  238. package/build-module/tab-panel/index.js.map +1 -1
  239. package/build-module/theme/color-algorithms.js +105 -0
  240. package/build-module/theme/color-algorithms.js.map +1 -0
  241. package/build-module/theme/index.js +21 -17
  242. package/build-module/theme/index.js.map +1 -1
  243. package/build-module/theme/styles.js +8 -6
  244. package/build-module/theme/styles.js.map +1 -1
  245. package/build-module/toggle-control/index.js +4 -2
  246. package/build-module/toggle-control/index.js.map +1 -1
  247. package/build-module/ui/context/context-system-provider.js +3 -2
  248. package/build-module/ui/context/context-system-provider.js.map +1 -1
  249. package/build-module/unit-control/index.js +5 -2
  250. package/build-module/unit-control/index.js.map +1 -1
  251. package/build-module/utils/colors-values.js +1 -1
  252. package/build-module/utils/colors-values.js.map +1 -1
  253. package/build-module/utils/config-values.js +0 -2
  254. package/build-module/utils/config-values.js.map +1 -1
  255. package/build-module/utils/hooks/use-controlled-value.js.map +1 -1
  256. package/build-style/style-rtl.css +108 -104
  257. package/build-style/style.css +108 -104
  258. package/build-types/alignment-matrix-control/cell.d.ts +5 -0
  259. package/build-types/alignment-matrix-control/cell.d.ts.map +1 -0
  260. package/build-types/alignment-matrix-control/icon.d.ts +6 -0
  261. package/build-types/alignment-matrix-control/icon.d.ts.map +1 -0
  262. package/build-types/alignment-matrix-control/index.d.ts +30 -0
  263. package/build-types/alignment-matrix-control/index.d.ts.map +1 -0
  264. package/build-types/alignment-matrix-control/stories/index.d.ts +14 -0
  265. package/build-types/alignment-matrix-control/stories/index.d.ts.map +1 -0
  266. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts +19 -0
  267. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts.map +1 -0
  268. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts +23 -0
  269. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts.map +1 -0
  270. package/build-types/alignment-matrix-control/test/index.d.ts +2 -0
  271. package/build-types/alignment-matrix-control/test/index.d.ts.map +1 -0
  272. package/build-types/alignment-matrix-control/types.d.ts +39 -0
  273. package/build-types/alignment-matrix-control/types.d.ts.map +1 -0
  274. package/build-types/alignment-matrix-control/utils.d.ts +33 -0
  275. package/build-types/alignment-matrix-control/utils.d.ts.map +1 -0
  276. package/build-types/base-control/hooks.d.ts +23 -0
  277. package/build-types/base-control/hooks.d.ts.map +1 -0
  278. package/build-types/base-control/index.d.ts +17 -7
  279. package/build-types/base-control/index.d.ts.map +1 -1
  280. package/build-types/base-control/stories/index.d.ts.map +1 -1
  281. package/build-types/base-control/test/index.d.ts +2 -0
  282. package/build-types/base-control/test/index.d.ts.map +1 -0
  283. package/build-types/base-control/types.d.ts +8 -2
  284. package/build-types/base-control/types.d.ts.map +1 -1
  285. package/build-types/base-field/hook.d.ts +7 -31
  286. package/build-types/base-field/hook.d.ts.map +1 -1
  287. package/build-types/base-field/index.d.ts +1 -1
  288. package/build-types/base-field/index.d.ts.map +1 -1
  289. package/build-types/base-field/styles.d.ts +5 -5
  290. package/build-types/base-field/styles.d.ts.map +1 -1
  291. package/build-types/base-field/test/index.d.ts +2 -0
  292. package/build-types/base-field/test/index.d.ts.map +1 -0
  293. package/build-types/base-field/types.d.ts +29 -0
  294. package/build-types/base-field/types.d.ts.map +1 -0
  295. package/build-types/border-box-control/border-box-control/component.d.ts +1 -1
  296. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  297. package/build-types/border-box-control/border-box-control/hook.d.ts +2 -3
  298. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  299. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +2 -2
  300. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +1 -1
  301. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  302. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +2 -3
  303. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  304. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
  305. package/build-types/border-box-control/stories/index.d.ts +1 -1
  306. package/build-types/border-control/border-control/component.d.ts +1 -1
  307. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  308. package/build-types/border-control/border-control/hook.d.ts +2 -3
  309. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  310. package/build-types/border-control/border-control-dropdown/component.d.ts +1 -1
  311. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  312. package/build-types/border-control/border-control-dropdown/hook.d.ts +2 -3
  313. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  314. package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
  315. package/build-types/border-control/stories/index.d.ts +6 -6
  316. package/build-types/border-control/stories/index.d.ts.map +1 -1
  317. package/build-types/border-control/styles.d.ts.map +1 -1
  318. package/build-types/border-control/types.d.ts +1 -1
  319. package/build-types/border-control/types.d.ts.map +1 -1
  320. package/build-types/card/card/hook.d.ts +2 -2
  321. package/build-types/card/card-body/hook.d.ts +2 -2
  322. package/build-types/card/card-divider/hook.d.ts +2 -2
  323. package/build-types/card/card-footer/hook.d.ts +2 -2
  324. package/build-types/card/card-header/hook.d.ts +2 -2
  325. package/build-types/card/card-media/hook.d.ts +2 -2
  326. package/build-types/color-palette/index.d.ts +3 -4
  327. package/build-types/color-palette/index.d.ts.map +1 -1
  328. package/build-types/color-palette/stories/index.d.ts +6 -14
  329. package/build-types/color-palette/stories/index.d.ts.map +1 -1
  330. package/build-types/color-palette/styles.d.ts +1 -1
  331. package/build-types/color-palette/types.d.ts +4 -17
  332. package/build-types/color-palette/types.d.ts.map +1 -1
  333. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  334. package/build-types/color-picker/styles.d.ts +5 -5
  335. package/build-types/color-picker/styles.d.ts.map +1 -1
  336. package/build-types/custom-select-control/index.d.ts.map +1 -1
  337. package/build-types/dashicon/index.d.ts +6 -20
  338. package/build-types/dashicon/index.d.ts.map +1 -1
  339. package/build-types/dashicon/types.d.ts +14 -0
  340. package/build-types/dashicon/types.d.ts.map +1 -1
  341. package/build-types/date-time/date/styles.d.ts +3 -3
  342. package/build-types/date-time/date-time/styles.d.ts +3 -3
  343. package/build-types/date-time/time/styles.d.ts +8 -8
  344. package/build-types/disabled/stories/index.d.ts.map +1 -1
  345. package/build-types/dropdown/index.d.ts +29 -1
  346. package/build-types/dropdown/index.d.ts.map +1 -1
  347. package/build-types/dropdown/stories/index.d.ts +23 -0
  348. package/build-types/dropdown/stories/index.d.ts.map +1 -0
  349. package/build-types/dropdown/test/index.d.ts +2 -0
  350. package/build-types/dropdown/test/index.d.ts.map +1 -0
  351. package/build-types/dropdown/types.d.ts +101 -0
  352. package/build-types/dropdown/types.d.ts.map +1 -1
  353. package/build-types/elevation/hook.d.ts +2 -2
  354. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  355. package/build-types/flex/flex/hook.d.ts +2 -2
  356. package/build-types/flex/flex-block/hook.d.ts +2 -2
  357. package/build-types/flex/flex-item/hook.d.ts +2 -2
  358. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -5
  359. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts.map +1 -1
  360. package/build-types/grid/hook.d.ts +2 -2
  361. package/build-types/h-stack/component.d.ts +1 -1
  362. package/build-types/h-stack/hook.d.ts +2 -2
  363. package/build-types/heading/hook.d.ts +2 -2
  364. package/build-types/icon/stories/index.d.ts +22 -0
  365. package/build-types/icon/stories/index.d.ts.map +1 -0
  366. package/build-types/input-control/index.d.ts +1 -1
  367. package/build-types/input-control/index.d.ts.map +1 -1
  368. package/build-types/input-control/input-base.d.ts.map +1 -1
  369. package/build-types/input-control/stories/index.d.ts +1 -0
  370. package/build-types/input-control/stories/index.d.ts.map +1 -1
  371. package/build-types/input-control/types.d.ts +2 -1
  372. package/build-types/input-control/types.d.ts.map +1 -1
  373. package/build-types/item-group/item/hook.d.ts +2 -2
  374. package/build-types/item-group/item-group/hook.d.ts +2 -2
  375. package/build-types/modal/index.d.ts.map +1 -1
  376. package/build-types/modal/stories/index.d.ts.map +1 -1
  377. package/build-types/navigator/navigator-back-button/hook.d.ts +3 -3
  378. package/build-types/navigator/navigator-button/hook.d.ts +3 -3
  379. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  380. package/build-types/number-control/index.d.ts +2 -2
  381. package/build-types/number-control/index.d.ts.map +1 -1
  382. package/build-types/number-control/stories/index.d.ts +25 -0
  383. package/build-types/number-control/stories/index.d.ts.map +1 -0
  384. package/build-types/number-control/styles/number-control-styles.d.ts +6 -6
  385. package/build-types/number-control/styles/number-control-styles.d.ts.map +1 -1
  386. package/build-types/number-control/test/index.d.ts +2 -0
  387. package/build-types/number-control/test/index.d.ts.map +1 -0
  388. package/build-types/popover/index.d.ts +1 -1
  389. package/build-types/popover/index.d.ts.map +1 -1
  390. package/build-types/popover/stories/e2e/index.d.ts +1 -1
  391. package/build-types/range-control/index.d.ts +1 -1
  392. package/build-types/range-control/styles/range-control-styles.d.ts +2 -2
  393. package/build-types/resizable-box/resize-tooltip/index.d.ts +15 -19
  394. package/build-types/resizable-box/resize-tooltip/index.d.ts.map +1 -1
  395. package/build-types/resizable-box/resize-tooltip/label.d.ts +4 -3
  396. package/build-types/resizable-box/resize-tooltip/label.d.ts.map +1 -1
  397. package/build-types/scrollable/hook.d.ts +2 -2
  398. package/build-types/search-control/index.d.ts +1 -1
  399. package/build-types/search-control/stories/index.d.ts +2 -2
  400. package/build-types/snackbar/index.d.ts +19 -0
  401. package/build-types/snackbar/index.d.ts.map +1 -0
  402. package/build-types/snackbar/list.d.ts +18 -0
  403. package/build-types/snackbar/list.d.ts.map +1 -0
  404. package/build-types/snackbar/stories/index.d.ts +16 -0
  405. package/build-types/snackbar/stories/index.d.ts.map +1 -0
  406. package/build-types/snackbar/stories/list.d.ts +12 -0
  407. package/build-types/snackbar/stories/list.d.ts.map +1 -0
  408. package/build-types/snackbar/types.d.ts +111 -0
  409. package/build-types/snackbar/types.d.ts.map +1 -0
  410. package/build-types/spacer/hook.d.ts +2 -2
  411. package/build-types/spinner/index.d.ts +1 -1
  412. package/build-types/surface/hook.d.ts +2 -2
  413. package/build-types/tab-panel/index.d.ts +1 -1
  414. package/build-types/tab-panel/index.d.ts.map +1 -1
  415. package/build-types/tab-panel/types.d.ts +19 -1
  416. package/build-types/tab-panel/types.d.ts.map +1 -1
  417. package/build-types/text/hook.d.ts +2 -2
  418. package/build-types/text-control/index.d.ts +2 -2
  419. package/build-types/text-control/stories/index.d.ts.map +1 -1
  420. package/build-types/text-control/types.d.ts +1 -5
  421. package/build-types/text-control/types.d.ts.map +1 -1
  422. package/build-types/theme/color-algorithms.d.ts +20 -0
  423. package/build-types/theme/color-algorithms.d.ts.map +1 -0
  424. package/build-types/theme/index.d.ts +1 -1
  425. package/build-types/theme/index.d.ts.map +1 -1
  426. package/build-types/theme/stories/index.d.ts +4 -0
  427. package/build-types/theme/stories/index.d.ts.map +1 -1
  428. package/build-types/theme/styles.d.ts +3 -2
  429. package/build-types/theme/styles.d.ts.map +1 -1
  430. package/build-types/theme/test/color-algorithms.d.ts +2 -0
  431. package/build-types/theme/test/color-algorithms.d.ts.map +1 -0
  432. package/build-types/theme/types.d.ts +41 -3
  433. package/build-types/theme/types.d.ts.map +1 -1
  434. package/build-types/toggle-control/index.d.ts.map +1 -1
  435. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +2 -2
  436. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +2 -2
  437. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
  438. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  439. package/build-types/tools-panel/tools-panel/hook.d.ts +2 -2
  440. package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -2
  441. package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -2
  442. package/build-types/truncate/hook.d.ts +2 -2
  443. package/build-types/ui/context/context-system-provider.d.ts.map +1 -1
  444. package/build-types/ui/control-group/hook.d.ts +2 -2
  445. package/build-types/ui/control-label/hook.d.ts +2 -2
  446. package/build-types/ui/form-group/form-group.d.ts +2 -2
  447. package/build-types/ui/form-group/use-form-group.d.ts +5 -5
  448. package/build-types/unit-control/index.d.ts +2 -1
  449. package/build-types/unit-control/index.d.ts.map +1 -1
  450. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -2
  451. package/build-types/unit-control/types.d.ts +4 -0
  452. package/build-types/unit-control/types.d.ts.map +1 -1
  453. package/build-types/utils/config-values.d.ts +0 -2
  454. package/build-types/utils/hooks/use-controlled-value.d.ts +2 -1
  455. package/build-types/utils/hooks/use-controlled-value.d.ts.map +1 -1
  456. package/build-types/v-stack/component.d.ts +2 -2
  457. package/build-types/v-stack/hook.d.ts +2 -2
  458. package/build-types/v-stack/stories/index.d.ts +2 -2
  459. package/package.json +21 -20
  460. package/src/alignment-matrix-control/README.md +7 -7
  461. package/src/alignment-matrix-control/{cell.js → cell.tsx} +7 -1
  462. package/src/alignment-matrix-control/{icon.js → icon.tsx} +6 -3
  463. package/src/alignment-matrix-control/{index.js → index.tsx} +31 -4
  464. package/src/alignment-matrix-control/stories/{index.js → index.tsx} +17 -9
  465. package/src/alignment-matrix-control/styles/{alignment-matrix-control-icon-styles.js → alignment-matrix-control-icon-styles.ts} +11 -3
  466. package/src/alignment-matrix-control/styles/{alignment-matrix-control-styles.js → alignment-matrix-control-styles.ts} +13 -3
  467. package/src/alignment-matrix-control/test/{index.js → index.tsx} +5 -5
  468. package/src/alignment-matrix-control/types.ts +54 -0
  469. package/src/alignment-matrix-control/{utils.js → utils.tsx} +24 -14
  470. package/src/angle-picker-control/styles/angle-picker-control-styles.js +4 -0
  471. package/src/autocomplete/index.js +44 -15
  472. package/src/autocomplete/test/index.js +2 -0
  473. package/src/base-control/README.md +21 -12
  474. package/src/base-control/hooks.ts +45 -0
  475. package/src/base-control/index.tsx +18 -7
  476. package/src/base-control/stories/index.tsx +8 -10
  477. package/src/base-control/test/index.tsx +53 -0
  478. package/src/base-control/types.ts +8 -2
  479. package/src/base-field/README.md +21 -22
  480. package/src/base-field/{hook.js → hook.ts} +5 -15
  481. package/src/base-field/{index.js → index.ts} +0 -0
  482. package/src/base-field/{styles.js → styles.ts} +2 -2
  483. package/src/base-field/test/__snapshots__/{index.js.snap → index.tsx.snap} +4 -4
  484. package/src/base-field/test/{index.js → index.tsx} +10 -5
  485. package/src/base-field/types.ts +29 -0
  486. package/src/border-box-control/border-box-control/README.md +1 -0
  487. package/src/border-box-control/border-box-control/component.tsx +0 -7
  488. package/src/border-box-control/border-box-control/hook.ts +0 -2
  489. package/src/border-box-control/border-box-control-split-controls/component.tsx +0 -2
  490. package/src/border-box-control/border-box-control-split-controls/hook.ts +0 -2
  491. package/src/border-box-control/test/index.js +5 -1
  492. package/src/border-control/border-control/component.tsx +1 -4
  493. package/src/border-control/border-control/hook.ts +0 -2
  494. package/src/border-control/border-control-dropdown/component.tsx +11 -17
  495. package/src/border-control/border-control-dropdown/hook.ts +0 -2
  496. package/src/border-control/stories/index.tsx +0 -1
  497. package/src/border-control/styles.ts +1 -10
  498. package/src/border-control/test/index.js +70 -67
  499. package/src/border-control/types.ts +1 -4
  500. package/src/box-control/linked-button.js +8 -11
  501. package/src/box-control/test/index.js +207 -134
  502. package/src/button/stories/index.js +30 -0
  503. package/src/button/style.scss +17 -14
  504. package/src/button/test/index.js +32 -15
  505. package/src/card/test/index.tsx +32 -20
  506. package/src/checkbox-control/test/index.tsx +2 -0
  507. package/src/circular-option-picker/style.scss +1 -0
  508. package/src/color-palette/index.tsx +16 -18
  509. package/src/color-palette/stories/index.tsx +1 -18
  510. package/src/color-palette/test/__snapshots__/index.tsx.snap +4 -4
  511. package/src/color-palette/test/index.tsx +86 -36
  512. package/src/color-palette/types.ts +4 -18
  513. package/src/color-picker/README.md +1 -0
  514. package/src/color-picker/input-with-slider.tsx +1 -0
  515. package/src/color-picker/styles.ts +0 -4
  516. package/src/color-picker/test/index.js +2 -0
  517. package/src/combobox-control/test/index.js +2 -0
  518. package/src/confirm-dialog/README.md +3 -2
  519. package/src/confirm-dialog/test/index.js +2 -0
  520. package/src/custom-select-control/README.md +14 -0
  521. package/src/custom-select-control/index.js +14 -2
  522. package/src/dashicon/{index.js → index.tsx} +10 -4
  523. package/src/dashicon/types.ts +17 -0
  524. package/src/date-time/date/test/index.tsx +2 -0
  525. package/src/date-time/date-time/index.tsx +2 -2
  526. package/src/date-time/time/test/index.tsx +2 -0
  527. package/src/dimension-control/index.js +2 -3
  528. package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -8
  529. package/src/dimension-control/test/index.test.js +2 -0
  530. package/src/disabled/stories/index.tsx +6 -2
  531. package/src/disabled/test/index.tsx +23 -11
  532. package/src/dropdown/README.md +41 -46
  533. package/src/dropdown/{index.js → index.tsx} +57 -13
  534. package/src/dropdown/stories/{index.js → index.tsx} +21 -8
  535. package/src/dropdown/test/index.tsx +88 -0
  536. package/src/dropdown/types.ts +107 -0
  537. package/src/dropdown-menu/README.md +2 -3
  538. package/src/dropdown-menu/test/index.js +20 -12
  539. package/src/duotone-picker/duotone-picker.js +2 -2
  540. package/src/external-link/test/index.tsx +2 -0
  541. package/src/focal-point-picker/test/index.js +2 -0
  542. package/src/focal-point-picker/test/media.js +26 -21
  543. package/src/font-size-picker/test/index.tsx +2 -0
  544. package/src/form-file-upload/test/index.tsx +2 -0
  545. package/src/form-toggle/test/index.tsx +2 -0
  546. package/src/form-token-field/style.scss +1 -1
  547. package/src/form-token-field/test/index.tsx +3 -0
  548. package/src/gradient-picker/index.js +6 -10
  549. package/src/gradient-picker/stories/index.js +0 -1
  550. package/src/grid/test/grid.tsx +31 -31
  551. package/src/guide/test/index.js +2 -0
  552. package/src/higher-order/navigate-regions/index.js +5 -2
  553. package/src/higher-order/navigate-regions/style.scss +13 -59
  554. package/src/higher-order/with-fallback-styles/index.js +4 -2
  555. package/src/higher-order/with-filters/test/index.js +32 -43
  556. package/src/higher-order/with-focus-outside/test/index.js +2 -0
  557. package/src/higher-order/with-focus-return/test/index.js +3 -4
  558. package/src/higher-order/with-notices/test/index.js +1 -0
  559. package/src/icon/stories/index.tsx +103 -0
  560. package/src/index.js +2 -3
  561. package/src/input-control/index.tsx +42 -28
  562. package/src/input-control/input-base.tsx +8 -1
  563. package/src/input-control/stories/index.tsx +6 -0
  564. package/src/input-control/test/index.js +21 -0
  565. package/src/input-control/types.ts +2 -0
  566. package/src/isolated-event-container/test/index.js +2 -0
  567. package/src/mobile/bottom-sheet/cell.native.js +1 -1
  568. package/src/mobile/bottom-sheet/picker-cell.native.js +1 -6
  569. package/src/mobile/bottom-sheet/switch-cell.native.js +2 -2
  570. package/src/mobile/global-styles-context/index.native.js +9 -11
  571. package/src/mobile/global-styles-context/utils.native.js +17 -16
  572. package/src/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  573. package/src/mobile/link-settings/test/edit.native.js +68 -124
  574. package/src/modal/index.tsx +11 -0
  575. package/src/modal/stories/index.tsx +3 -0
  576. package/src/modal/test/index.tsx +13 -0
  577. package/src/navigable-container/test/navigable-menu.js +2 -0
  578. package/src/navigable-container/test/tababble-container.js +2 -0
  579. package/src/navigation/stories/index.js +6 -6
  580. package/src/navigation/stories/{controlled-state.js → utils/controlled-state.js} +3 -3
  581. package/src/navigation/stories/{default.js → utils/default.js} +3 -3
  582. package/src/navigation/stories/{group.js → utils/group.js} +4 -4
  583. package/src/navigation/stories/{hide-if-empty.js → utils/hide-if-empty.js} +3 -3
  584. package/src/navigation/stories/{more-examples.js → utils/more-examples.js} +4 -4
  585. package/src/navigation/stories/{search.js → utils/search.js} +5 -5
  586. package/src/navigation/test/index.js +2 -0
  587. package/src/navigator/navigator-provider/component.tsx +13 -10
  588. package/src/navigator/test/index.tsx +2 -0
  589. package/src/notice/test/index.js +8 -3
  590. package/src/notice/test/list.js +8 -5
  591. package/src/number-control/stories/{index.js → index.tsx} +24 -7
  592. package/src/number-control/styles/{number-control-styles.js → number-control-styles.ts} +5 -3
  593. package/src/number-control/test/index.tsx +602 -0
  594. package/src/palette-edit/index.js +88 -39
  595. package/src/palette-edit/test/index.js +25 -1
  596. package/src/panel/test/__snapshots__/body.js.snap +9 -0
  597. package/src/panel/test/body.js +71 -62
  598. package/src/placeholder/test/index.tsx +3 -0
  599. package/src/popover/index.tsx +10 -2
  600. package/src/popover/style.scss +12 -11
  601. package/src/popover/test/index.tsx +25 -15
  602. package/src/query-controls/index.js +1 -0
  603. package/src/range-control/test/index.tsx +57 -60
  604. package/src/resizable-box/style.scss +1 -0
  605. package/src/sandbox/test/index.js +13 -11
  606. package/src/search-control/style.scss +4 -0
  607. package/src/select-control/test/select-control.tsx +2 -0
  608. package/src/snackbar/README.md +63 -8
  609. package/src/snackbar/{index.js → index.tsx} +46 -28
  610. package/src/snackbar/{list.js → list.tsx} +20 -21
  611. package/src/snackbar/stories/index.tsx +96 -0
  612. package/src/snackbar/stories/list.tsx +98 -0
  613. package/src/snackbar/types.ts +116 -0
  614. package/src/tab-panel/README.md +9 -0
  615. package/src/tab-panel/index.tsx +15 -5
  616. package/src/tab-panel/style.scss +46 -34
  617. package/src/tab-panel/test/index.tsx +113 -0
  618. package/src/tab-panel/types.ts +20 -1
  619. package/src/text/test/__snapshots__/index.tsx.snap +1 -0
  620. package/src/text/test/index.tsx +98 -46
  621. package/src/text-control/stories/index.tsx +0 -1
  622. package/src/text-control/types.ts +1 -6
  623. package/src/text-highlight/test/index.tsx +1 -0
  624. package/src/theme/README.md +32 -2
  625. package/src/theme/color-algorithms.ts +138 -0
  626. package/src/theme/index.tsx +23 -16
  627. package/src/theme/stories/index.tsx +67 -0
  628. package/src/theme/styles.ts +22 -17
  629. package/src/theme/test/color-algorithms.ts +100 -0
  630. package/src/theme/test/index.tsx +68 -35
  631. package/src/theme/types.ts +43 -3
  632. package/src/toggle-control/index.tsx +4 -2
  633. package/src/toggle-group-control/test/index.tsx +15 -2
  634. package/src/toolbar/style.scss +1 -1
  635. package/src/toolbar-group/test/index.js +10 -6
  636. package/src/tools-panel/stories/index.js +1 -1
  637. package/src/tools-panel/stories/{tools-panel-with-item-group-slot.js → utils/tools-panel-with-item-group-slot.js} +14 -11
  638. package/src/tools-panel/test/index.js +20 -14
  639. package/src/tooltip/README.md +7 -0
  640. package/src/tooltip/stories/index.js +68 -78
  641. package/src/tooltip/style.scss +2 -2
  642. package/src/tooltip/test/index.js +111 -18
  643. package/src/ui/context/context-system-provider.js +3 -2
  644. package/src/ui/context/test/context-system-provider.js +5 -4
  645. package/src/ui/control-label/test/index.js +3 -5
  646. package/src/unit-control/README.md +9 -1
  647. package/src/unit-control/index.tsx +3 -0
  648. package/src/unit-control/test/index.tsx +4 -0
  649. package/src/unit-control/types.ts +4 -0
  650. package/src/utils/colors-values.js +1 -1
  651. package/src/utils/config-values.js +0 -2
  652. package/src/utils/hooks/test/use-latest-ref.js +2 -0
  653. package/src/utils/hooks/use-controlled-value.ts +2 -2
  654. package/src/utils/theme-variables.scss +20 -0
  655. package/tsconfig.json +2 -4
  656. package/tsconfig.tsbuildinfo +1 -1
  657. package/src/dropdown/test/index.js +0 -98
  658. package/src/icon/stories/index.js +0 -128
  659. package/src/number-control/test/index.js +0 -478
  660. package/src/snackbar/stories/index.js +0 -89
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { camelCase } from 'change-case';
5
- import { find, get } from 'lodash';
5
+ import { get } from 'lodash';
6
6
  import { Dimensions } from 'react-native';
7
7
 
8
8
  /**
@@ -113,9 +113,9 @@ export function getBlockColors(
113
113
  }
114
114
 
115
115
  if ( ! isCustomColor ) {
116
- const mappedColor = find( defaultColors, {
117
- slug: value,
118
- } );
116
+ const mappedColor = Object.values( defaultColors ?? {} ).find(
117
+ ( { slug } ) => slug === value
118
+ );
119
119
 
120
120
  if ( mappedColor ) {
121
121
  blockStyles[ styleKey ] = mappedColor.color;
@@ -143,6 +143,7 @@ export function getBlockTypography(
143
143
  const typographyStyles = {};
144
144
  const customBlockStyles = blockStyleAttributes?.style?.typography || {};
145
145
  const blockGlobalStyles = baseGlobalStyles?.blocks?.[ blockName ];
146
+ const parsedFontSizes = Object.values( fontSizes ?? {} );
146
147
 
147
148
  // Global styles.
148
149
  if ( blockGlobalStyles?.typography ) {
@@ -153,9 +154,9 @@ export function getBlockTypography(
153
154
  if ( parseInt( fontSize, 10 ) ) {
154
155
  typographyStyles.fontSize = fontSize;
155
156
  } else {
156
- const mappedFontSize = find( fontSizes, {
157
- slug: fontSize,
158
- } );
157
+ const mappedFontSize = parsedFontSizes.find(
158
+ ( { slug } ) => slug === fontSize
159
+ );
159
160
 
160
161
  if ( mappedFontSize ) {
161
162
  typographyStyles.fontSize = mappedFontSize?.size;
@@ -169,9 +170,9 @@ export function getBlockTypography(
169
170
  }
170
171
 
171
172
  if ( blockStyleAttributes?.fontSize && baseGlobalStyles ) {
172
- const mappedFontSize = find( fontSizes, {
173
- slug: blockStyleAttributes?.fontSize,
174
- } );
173
+ const mappedFontSize = parsedFontSizes.find(
174
+ ( { slug } ) => slug === blockStyleAttributes?.fontSize
175
+ );
175
176
 
176
177
  if ( mappedFontSize ) {
177
178
  typographyStyles.fontSize = mappedFontSize?.size;
@@ -212,9 +213,9 @@ export function parseStylesVariables( styles, mappedValues, customValues ) {
212
213
  const path = $2.split( '--' );
213
214
  const mappedPresetValue = mappedValues[ path[ 0 ] ];
214
215
  if ( mappedPresetValue && mappedPresetValue.slug ) {
215
- const matchedValue = find( mappedPresetValue.values, {
216
- slug: path[ 1 ],
217
- } );
216
+ const matchedValue = Object.values(
217
+ mappedPresetValue.values ?? {}
218
+ ).find( ( { slug } ) => slug === path[ 1 ] );
218
219
  return matchedValue?.[ mappedPresetValue.slug ];
219
220
  }
220
221
  return UNKNOWN_VALUE;
@@ -244,9 +245,9 @@ export function parseStylesVariables( styles, mappedValues, customValues ) {
244
245
  if ( variable === 'var' ) {
245
246
  stylesBase = stylesBase.replace( varRegex, ( _$1, $2 ) => {
246
247
  if ( mappedValues?.color ) {
247
- const matchedValue = find( mappedValues.color?.values, {
248
- slug: $2,
249
- } );
248
+ const matchedValue = mappedValues.color?.values?.find(
249
+ ( { slug } ) => slug === $2
250
+ );
250
251
  return `"${ matchedValue?.color }"`;
251
252
  }
252
253
  return UNKNOWN_VALUE;
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
5
5
  import { FlatList } from 'react-native';
6
- import { isEqual } from 'lodash';
6
+ import fastDeepEqual from 'fast-deep-equal/es6';
7
7
  import Animated, {
8
8
  useAnimatedScrollHandler,
9
9
  useSharedValue,
@@ -14,7 +14,7 @@ import Animated, {
14
14
  */
15
15
  import { memo, useCallback, useRef } from '@wordpress/element';
16
16
 
17
- const List = memo( FlatList, isEqual );
17
+ const List = memo( FlatList, fastDeepEqual );
18
18
  const AnimatedKeyboardAwareScrollView = Animated.createAnimatedComponent(
19
19
  KeyboardAwareScrollView
20
20
  );
@@ -4,7 +4,7 @@
4
4
  * External dependencies
5
5
  */
6
6
  import Clipboard from '@react-native-clipboard/clipboard';
7
- import { fireEvent, initializeEditor, waitFor } from 'test/helpers';
7
+ import { fireEvent, initializeEditor } from 'test/helpers';
8
8
  /**
9
9
  * WordPress dependencies
10
10
  */
@@ -76,24 +76,18 @@ describe.each( [
76
76
  Clipboard.getString.mockReturnValue( url );
77
77
 
78
78
  // Act.
79
- const block = await waitFor( () =>
80
- subject.getByLabelText(
81
- type === 'core/image' ? /Image Block/ : /Button Block/
82
- )
79
+ const [ block ] = await subject.findAllByLabelText(
80
+ type === 'core/image' ? /Image Block/ : /Button Block/
83
81
  );
84
82
  fireEvent.press( block );
85
83
  fireEvent.press( block );
86
- fireEvent.press(
87
- await waitFor( () => subject.getByLabelText( 'Open Settings' ) )
88
- );
84
+ fireEvent.press( await subject.findByLabelText( 'Open Settings' ) );
89
85
 
90
86
  // Assert.
91
- const linkToField = await waitFor( () =>
92
- subject.getByLabelText(
93
- `Link to, ${
94
- type === 'core/image' ? 'None' : 'Search or type URL'
95
- }`
96
- )
87
+ const linkToField = await subject.findByLabelText(
88
+ `Link to, ${
89
+ type === 'core/image' ? 'None' : 'Search or type URL'
90
+ }`
97
91
  );
98
92
  expect( linkToField ).toBeTruthy();
99
93
  } );
@@ -113,37 +107,29 @@ describe.each( [
113
107
  Clipboard.getString.mockReturnValue( url );
114
108
 
115
109
  // Act.
116
- const block = await waitFor( () =>
117
- subject.getByLabelText(
118
- type === 'core/image' ? /Image Block/ : /Button Block/
119
- )
110
+ const [ block ] = await subject.findAllByLabelText(
111
+ type === 'core/image' ? /Image Block/ : /Button Block/
120
112
  );
121
113
  fireEvent.press( block );
122
114
  fireEvent.press( block );
123
115
  fireEvent.press(
124
- await waitFor( () =>
125
- subject.getByLabelText( 'Open Settings' )
126
- )
116
+ await subject.findByLabelText( 'Open Settings' )
127
117
  );
128
118
  fireEvent.press(
129
- await waitFor( () =>
130
- subject.getByLabelText(
131
- `Link to, ${
132
- type === 'core/image'
133
- ? 'None'
134
- : 'Search or type URL'
135
- }`
136
- )
119
+ await subject.findByLabelText(
120
+ `Link to, ${
121
+ type === 'core/image'
122
+ ? 'None'
123
+ : 'Search or type URL'
124
+ }`
137
125
  )
138
126
  );
139
127
  if ( type === 'core/image' ) {
140
128
  fireEvent.press(
141
- await waitFor( () =>
142
- subject.getByLabelText( /Custom URL/ )
143
- )
129
+ await subject.findByLabelText( /Custom URL/ )
144
130
  );
145
131
  }
146
- await waitFor( () => subject.getByLabelText( 'Apply' ) );
132
+ await subject.findByLabelText( 'Apply' );
147
133
 
148
134
  // Assert.
149
135
  expect(
@@ -166,60 +152,46 @@ describe.each( [
166
152
  Clipboard.getString.mockReturnValue( url );
167
153
 
168
154
  // Act.
169
- const block = await waitFor( () =>
170
- subject.getByLabelText(
171
- type === 'core/image' ? /Image Block/ : /Button Block/
172
- )
155
+ const [ block ] = await subject.findAllByLabelText(
156
+ type === 'core/image' ? /Image Block/ : /Button Block/
173
157
  );
174
158
  fireEvent.press( block );
175
159
  fireEvent.press( block );
176
160
  fireEvent.press(
177
- await waitFor( () =>
178
- subject.getByLabelText( 'Open Settings' )
179
- )
161
+ await subject.findByLabelText( 'Open Settings' )
180
162
  );
181
163
  fireEvent.press(
182
- await waitFor( () =>
183
- subject.getByLabelText(
184
- `Link to, ${
185
- type === 'core/image'
186
- ? 'None'
187
- : 'Search or type URL'
188
- }`
189
- )
164
+ await subject.findByLabelText(
165
+ `Link to, ${
166
+ type === 'core/image'
167
+ ? 'None'
168
+ : 'Search or type URL'
169
+ }`
190
170
  )
191
171
  );
192
172
  if ( type === 'core/image' ) {
193
173
  fireEvent.press(
194
- await waitFor( () =>
195
- subject.getByLabelText( 'Custom URL. Empty' )
196
- )
174
+ await subject.findByLabelText( 'Custom URL. Empty' )
197
175
  );
198
176
  }
199
177
  fireEvent.press(
200
- await waitFor( () =>
201
- subject.getByLabelText(
202
- `Copy URL from the clipboard, ${ url }`
203
- )
178
+ await subject.findByLabelText(
179
+ `Copy URL from the clipboard, ${ url }`
204
180
  )
205
181
  );
206
182
  fireEvent.press(
207
- await waitFor( () =>
208
- subject.getByLabelText(
209
- `Link to, ${
210
- type === 'core/image' ? 'Custom URL' : url
211
- }`
212
- )
183
+ await subject.findByLabelText(
184
+ `Link to, ${
185
+ type === 'core/image' ? 'Custom URL' : url
186
+ }`
213
187
  )
214
188
  );
215
189
  if ( type === 'core/image' ) {
216
190
  fireEvent.press(
217
- await waitFor( () =>
218
- subject.getByLabelText( `Custom URL, ${ url }` )
219
- )
191
+ await subject.findByLabelText( `Custom URL, ${ url }` )
220
192
  );
221
193
  }
222
- await waitFor( () => subject.getByLabelText( 'Apply' ) );
194
+ await subject.findByLabelText( 'Apply' );
223
195
 
224
196
  // Assert.
225
197
  expect(
@@ -245,51 +217,37 @@ describe.each( [
245
217
  Clipboard.getString.mockReturnValue( url );
246
218
 
247
219
  // Act.
248
- const block = await waitFor( () =>
249
- subject.getByLabelText(
250
- type === 'core/image'
251
- ? /Image Block/
252
- : /Button Block/
253
- )
220
+ const [ block ] = await subject.findAllByLabelText(
221
+ type === 'core/image' ? /Image Block/ : /Button Block/
254
222
  );
255
223
  fireEvent.press( block );
256
224
  fireEvent.press( block );
257
225
  fireEvent.press(
258
- await waitFor( () =>
259
- subject.getByLabelText( 'Open Settings' )
260
- )
226
+ await subject.findByLabelText( 'Open Settings' )
261
227
  );
262
228
  fireEvent.press(
263
- await waitFor( () =>
264
- subject.getByLabelText(
265
- `Link to, ${
266
- type === 'core/image'
267
- ? 'None'
268
- : 'Search or type URL'
269
- }`
270
- )
229
+ await subject.findByLabelText(
230
+ `Link to, ${
231
+ type === 'core/image'
232
+ ? 'None'
233
+ : 'Search or type URL'
234
+ }`
271
235
  )
272
236
  );
273
237
  if ( type === 'core/image' ) {
274
238
  fireEvent.press(
275
- await waitFor( () =>
276
- subject.getByLabelText( /Custom URL/ )
277
- )
239
+ await subject.findByLabelText( /Custom URL/ )
278
240
  );
279
241
  }
280
- await waitFor( () =>
281
- subject.getByLabelText(
282
- `Copy URL from the clipboard, ${ url }`
283
- )
242
+ await subject.findByLabelText(
243
+ `Copy URL from the clipboard, ${ url }`
284
244
  );
285
245
 
286
246
  // Assert.
287
- const clipboardUrl = await waitFor( () =>
288
- subject.getByText( url )
289
- );
247
+ const clipboardUrl = await subject.findByText( url );
290
248
  expect( clipboardUrl ).toBeTruthy();
291
- const clipboardNote = await waitFor( () =>
292
- subject.getByText( __( 'From clipboard' ) )
249
+ const clipboardNote = await subject.findByText(
250
+ __( 'From clipboard' )
293
251
  );
294
252
  expect( clipboardNote ).toBeTruthy();
295
253
  }
@@ -312,53 +270,39 @@ describe.each( [
312
270
  Clipboard.getString.mockReturnValue( url );
313
271
 
314
272
  // Act.
315
- const block = await waitFor( () =>
316
- subject.getByLabelText(
317
- type === 'core/image'
318
- ? /Image Block/
319
- : /Button Block/
320
- )
273
+ const [ block ] = await subject.findAllByLabelText(
274
+ type === 'core/image' ? /Image Block/ : /Button Block/
321
275
  );
322
276
  fireEvent.press( block );
323
277
  fireEvent.press( block );
324
278
  fireEvent.press(
325
- await waitFor( () =>
326
- subject.getByLabelText( 'Open Settings' )
327
- )
279
+ await subject.findByLabelText( 'Open Settings' )
328
280
  );
329
281
  fireEvent.press(
330
- await waitFor( () =>
331
- subject.getByLabelText(
332
- `Link to, ${
333
- type === 'core/image'
334
- ? 'None'
335
- : 'Search or type URL'
336
- }`
337
- )
282
+ await subject.findByLabelText(
283
+ `Link to, ${
284
+ type === 'core/image'
285
+ ? 'None'
286
+ : 'Search or type URL'
287
+ }`
338
288
  )
339
289
  );
340
290
  if ( type === 'core/image' ) {
341
291
  fireEvent.press(
342
- await waitFor( () =>
343
- subject.getByLabelText( /Custom URL/ )
344
- )
292
+ await subject.findByLabelText( /Custom URL/ )
345
293
  );
346
294
  }
347
295
  fireEvent.press(
348
- await waitFor( () =>
349
- subject.getByLabelText(
350
- `Copy URL from the clipboard, ${ url }`
351
- )
296
+ await subject.findByLabelText(
297
+ `Copy URL from the clipboard, ${ url }`
352
298
  )
353
299
  );
354
300
 
355
301
  // Assert.
356
- const linkToField = await waitFor( () =>
357
- subject.getByLabelText(
358
- `Link to, ${
359
- type === 'core/image' ? 'Custom URL' : url
360
- }`
361
- )
302
+ const linkToField = await subject.findByLabelText(
303
+ `Link to, ${
304
+ type === 'core/image' ? 'Custom URL' : url
305
+ }`
362
306
  );
363
307
  expect( linkToField ).toBeTruthy();
364
308
  }
@@ -98,6 +98,17 @@ function UnforwardedModal(
98
98
  }, [ bodyOpenClassName ] );
99
99
 
100
100
  function handleEscapeKeyDown( event: KeyboardEvent< HTMLDivElement > ) {
101
+ if (
102
+ // Ignore keydowns from IMEs
103
+ event.nativeEvent.isComposing ||
104
+ // Workaround for Mac Safari where the final Enter/Backspace of an IME composition
105
+ // is `isComposing=false`, even though it's technically still part of the composition.
106
+ // These can only be detected by keyCode.
107
+ event.keyCode === 229
108
+ ) {
109
+ return;
110
+ }
111
+
101
112
  if (
102
113
  shouldCloseOnEsc &&
103
114
  event.code === 'Escape' &&
@@ -12,6 +12,7 @@ import { useState } from '@wordpress/element';
12
12
  * Internal dependencies
13
13
  */
14
14
  import Button from '../../button';
15
+ import InputControl from '../../input-control';
15
16
  import Modal from '../';
16
17
  import type { ModalProps } from '../types';
17
18
 
@@ -75,6 +76,8 @@ const Template: ComponentStory< typeof Modal > = ( {
75
76
  anim id est laborum.
76
77
  </p>
77
78
 
79
+ <InputControl style={ { marginBottom: '20px' } } />
80
+
78
81
  <Button variant="secondary" onClick={ closeModal }>
79
82
  Close Modal
80
83
  </Button>
@@ -2,6 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { render, screen, within } from '@testing-library/react';
5
+ import userEvent from '@testing-library/user-event';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -69,4 +70,16 @@ describe( 'Modal', () => {
69
70
  const title = within( dialog ).queryByText( 'Test Title' );
70
71
  expect( title ).not.toBeInTheDocument();
71
72
  } );
73
+
74
+ it( 'should call onRequestClose when the escape key is pressed', async () => {
75
+ const user = userEvent.setup();
76
+ const onRequestClose = jest.fn();
77
+ render(
78
+ <Modal onRequestClose={ onRequestClose }>
79
+ <p>Modal content</p>
80
+ </Modal>
81
+ );
82
+ await user.keyboard( '[Escape]' );
83
+ expect( onRequestClose ).toHaveBeenCalled();
84
+ } );
72
85
  } );
@@ -9,6 +9,8 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import { NavigableMenu } from '../menu';
11
11
 
12
+ jest.useFakeTimers();
13
+
12
14
  const NavigableMenuTestCase = ( props ) => (
13
15
  <NavigableMenu { ...props }>
14
16
  <button>Item 1</button>
@@ -9,6 +9,8 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import { TabbableContainer } from '../tabbable';
11
11
 
12
+ jest.useFakeTimers();
13
+
12
14
  const TabbableContainerTestCase = ( props ) => (
13
15
  <TabbableContainer { ...props }>
14
16
  <button>Item 1</button>
@@ -6,12 +6,12 @@ import NavigationBackButton from '../back-button';
6
6
  import NavigationGroup from '../group';
7
7
  import NavigationItem from '../item';
8
8
  import NavigationMenu from '../menu';
9
- import { DefaultStory } from './default';
10
- import { GroupStory } from './group';
11
- import { ControlledStateStory } from './controlled-state';
12
- import { SearchStory } from './search';
13
- import { MoreExamplesStory } from './more-examples';
14
- import { HideIfEmptyStory } from './hide-if-empty';
9
+ import { DefaultStory } from './utils/default';
10
+ import { GroupStory } from './utils/group';
11
+ import { ControlledStateStory } from './utils/controlled-state';
12
+ import { SearchStory } from './utils/search';
13
+ import { MoreExamplesStory } from './utils/more-examples';
14
+ import { HideIfEmptyStory } from './utils/hide-if-empty';
15
15
  import './style.css';
16
16
 
17
17
  export default {
@@ -7,9 +7,9 @@ import { useState } from '@wordpress/element';
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import Navigation from '..';
11
- import NavigationItem from '../item';
12
- import NavigationMenu from '../menu';
10
+ import Navigation from '../..';
11
+ import NavigationItem from '../../item';
12
+ import NavigationMenu from '../../menu';
13
13
 
14
14
  export function ControlledStateStory() {
15
15
  const [ activeItem, setActiveItem ] = useState( 'item-1' );
@@ -6,9 +6,9 @@ import { useState } from '@wordpress/element';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import Navigation from '..';
10
- import NavigationItem from '../item';
11
- import NavigationMenu from '../menu';
9
+ import Navigation from '../..';
10
+ import NavigationItem from '../../item';
11
+ import NavigationMenu from '../../menu';
12
12
 
13
13
  export function DefaultStory() {
14
14
  const [ activeItem, setActiveItem ] = useState( 'item-1' );
@@ -6,10 +6,10 @@ import { useState } from '@wordpress/element';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import Navigation from '..';
10
- import NavigationItem from '../item';
11
- import NavigationMenu from '../menu';
12
- import NavigationGroup from '../group';
9
+ import Navigation from '../..';
10
+ import NavigationItem from '../../item';
11
+ import NavigationMenu from '../../menu';
12
+ import NavigationGroup from '../../group';
13
13
 
14
14
  export function GroupStory() {
15
15
  const [ activeItem, setActiveItem ] = useState( 'item-1' );
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
- import Navigation from '..';
5
- import NavigationItem from '../item';
6
- import NavigationMenu from '../menu';
4
+ import Navigation from '../..';
5
+ import NavigationItem from '../../item';
6
+ import NavigationMenu from '../../menu';
7
7
 
8
8
  export function HideIfEmptyStory() {
9
9
  return (
@@ -7,10 +7,10 @@ import { Icon, wordpress, home } from '@wordpress/icons';
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import Navigation from '..';
11
- import NavigationGroup from '../group';
12
- import NavigationItem from '../item';
13
- import NavigationMenu from '../menu';
10
+ import Navigation from '../..';
11
+ import NavigationGroup from '../../group';
12
+ import NavigationItem from '../../item';
13
+ import NavigationMenu from '../../menu';
14
14
 
15
15
  export function MoreExamplesStory() {
16
16
  const [ activeItem, setActiveItem ] = useState( 'child-1' );
@@ -6,11 +6,11 @@ import { useState } from '@wordpress/element';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import Navigation from '..';
10
- import NavigationGroup from '../group';
11
- import NavigationItem from '../item';
12
- import NavigationMenu from '../menu';
13
- import { normalizedSearch } from '../utils';
9
+ import Navigation from '../..';
10
+ import NavigationGroup from '../../group';
11
+ import NavigationItem from '../../item';
12
+ import NavigationMenu from '../../menu';
13
+ import { normalizedSearch } from '../../utils';
14
14
 
15
15
  const searchItems = [
16
16
  { item: 'foo', title: 'Foo' },
@@ -16,6 +16,8 @@ import Navigation from '..';
16
16
  import NavigationItem from '../item';
17
17
  import NavigationMenu from '../menu';
18
18
 
19
+ jest.useFakeTimers();
20
+
19
21
  const TestNavigation = ( { activeItem, rootTitle, showBadge } = {} ) => (
20
22
  <Navigation activeItem={ activeItem }>
21
23
  <NavigationMenu title={ rootTitle }>
@@ -43,8 +43,8 @@ function UnconnectedNavigatorProvider(
43
43
 
44
44
  const goTo: NavigatorContextType[ 'goTo' ] = useCallback(
45
45
  ( path, options = {} ) => {
46
- setLocationHistory( [
47
- ...locationHistory,
46
+ setLocationHistory( ( prevLocationHistory ) => [
47
+ ...prevLocationHistory,
48
48
  {
49
49
  ...options,
50
50
  path,
@@ -53,21 +53,24 @@ function UnconnectedNavigatorProvider(
53
53
  },
54
54
  ] );
55
55
  },
56
- [ locationHistory ]
56
+ []
57
57
  );
58
58
 
59
59
  const goBack: NavigatorContextType[ 'goBack' ] = useCallback( () => {
60
- if ( locationHistory.length > 1 ) {
61
- setLocationHistory( [
62
- ...locationHistory.slice( 0, -2 ),
60
+ setLocationHistory( ( prevLocationHistory ) => {
61
+ if ( prevLocationHistory.length <= 1 ) {
62
+ return prevLocationHistory;
63
+ }
64
+ return [
65
+ ...prevLocationHistory.slice( 0, -2 ),
63
66
  {
64
- ...locationHistory[ locationHistory.length - 2 ],
67
+ ...prevLocationHistory[ prevLocationHistory.length - 2 ],
65
68
  isBack: true,
66
69
  hasRestoredFocus: false,
67
70
  },
68
- ] );
69
- }
70
- }, [ locationHistory ] );
71
+ ];
72
+ } );
73
+ }, [] );
71
74
 
72
75
  const navigatorContextValue: NavigatorContextType = useMemo(
73
76
  () => ( {
@@ -20,6 +20,8 @@ import {
20
20
  NavigatorBackButton,
21
21
  } from '..';
22
22
 
23
+ jest.useFakeTimers();
24
+
23
25
  jest.mock( 'framer-motion', () => {
24
26
  const actual = jest.requireActual( 'framer-motion' );
25
27
  return {