@wordpress/components 19.17.0 → 20.0.1-next.d6164808d3.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 (599) hide show
  1. package/CHANGELOG.md +68 -1
  2. package/build/alignment-matrix-control/index.js +1 -1
  3. package/build/alignment-matrix-control/index.js.map +1 -1
  4. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +9 -9
  5. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  6. package/build/angle-picker-control/index.js +3 -0
  7. package/build/angle-picker-control/index.js.map +1 -1
  8. package/build/angle-picker-control/styles/angle-picker-control-styles.js +14 -4
  9. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  10. package/build/autocomplete/index.js +9 -11
  11. package/build/autocomplete/index.js.map +1 -1
  12. package/build/base-control/styles/base-control-styles.js +8 -8
  13. package/build/base-control/styles/base-control-styles.js.map +1 -1
  14. package/build/base-field/styles.js +5 -5
  15. package/build/base-field/styles.js.map +1 -1
  16. package/build/box-control/styles/box-control-visualizer-styles.js +8 -8
  17. package/build/box-control/styles/box-control-visualizer-styles.js.map +1 -1
  18. package/build/color-list-picker/index.js +16 -5
  19. package/build/color-list-picker/index.js.map +1 -1
  20. package/build/color-palette/index.js +22 -12
  21. package/build/color-palette/index.js.map +1 -1
  22. package/build/color-palette/index.native.js +3 -3
  23. package/build/color-palette/index.native.js.map +1 -1
  24. package/build/combobox-control/index.js +7 -4
  25. package/build/combobox-control/index.js.map +1 -1
  26. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/constants.js +0 -0
  27. package/build/custom-gradient-picker/gradient-bar/constants.js.map +1 -0
  28. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/control-points.js +34 -41
  29. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -0
  30. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/index.js +0 -1
  31. package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -0
  32. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/utils.js +0 -0
  33. package/build/custom-gradient-picker/gradient-bar/utils.js.map +1 -0
  34. package/build/custom-gradient-picker/index.js +19 -4
  35. package/build/custom-gradient-picker/index.js.map +1 -1
  36. package/build/custom-select-control/index.js +21 -11
  37. package/build/custom-select-control/index.js.map +1 -1
  38. package/build/custom-select-control/styles.js +34 -0
  39. package/build/custom-select-control/styles.js.map +1 -0
  40. package/build/date-time/constants.js +9 -0
  41. package/build/date-time/constants.js.map +1 -0
  42. package/build/date-time/date/index.js +175 -186
  43. package/build/date-time/date/index.js.map +1 -1
  44. package/build/date-time/date/styles.js +59 -40
  45. package/build/date-time/date/styles.js.map +1 -1
  46. package/build/date-time/date-time/index.js +5 -2
  47. package/build/date-time/date-time/index.js.map +1 -1
  48. package/build/date-time/time/index.js +22 -17
  49. package/build/date-time/time/index.js.map +1 -1
  50. package/build/date-time/utils.js +27 -0
  51. package/build/date-time/utils.js.map +1 -0
  52. package/build/dimension-control/index.js +2 -6
  53. package/build/dimension-control/index.js.map +1 -1
  54. package/build/disabled/index.js +28 -11
  55. package/build/disabled/index.js.map +1 -1
  56. package/build/disabled/styles/disabled-styles.js +3 -3
  57. package/build/disabled/styles/disabled-styles.js.map +1 -1
  58. package/build/{swatch → disabled}/types.js +0 -0
  59. package/build/{swatch → disabled}/types.js.map +0 -0
  60. package/build/dropdown/index.js +5 -6
  61. package/build/dropdown/index.js.map +1 -1
  62. package/build/duotone-picker/custom-duotone-bar.js +2 -2
  63. package/build/duotone-picker/custom-duotone-bar.js.map +1 -1
  64. package/build/duotone-picker/duotone-picker.js +9 -1
  65. package/build/duotone-picker/duotone-picker.js.map +1 -1
  66. package/build/duotone-picker/duotone-swatch.js +13 -3
  67. package/build/duotone-picker/duotone-swatch.js.map +1 -1
  68. package/build/focal-point-picker/index.js +4 -6
  69. package/build/focal-point-picker/index.js.map +1 -1
  70. package/build/focal-point-picker/styles/focal-point-style.js +4 -4
  71. package/build/focal-point-picker/styles/focal-point-style.js.map +1 -1
  72. package/build/font-size-picker/index.js +43 -14
  73. package/build/font-size-picker/index.js.map +1 -1
  74. package/build/font-size-picker/utils.js +32 -22
  75. package/build/font-size-picker/utils.js.map +1 -1
  76. package/build/form-token-field/index.js +11 -5
  77. package/build/form-token-field/index.js.map +1 -1
  78. package/build/gradient-picker/index.js +15 -3
  79. package/build/gradient-picker/index.js.map +1 -1
  80. package/build/guide/index.js +5 -3
  81. package/build/guide/index.js.map +1 -1
  82. package/build/guide/page-control.js +3 -7
  83. package/build/guide/page-control.js.map +1 -1
  84. package/build/item-group/styles.js +10 -10
  85. package/build/item-group/styles.js.map +1 -1
  86. package/build/mobile/bottom-sheet/index.native.js +3 -6
  87. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  88. package/build/mobile/global-styles-context/utils.native.js +3 -1
  89. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  90. package/build/mobile/image/index.native.js +6 -26
  91. package/build/mobile/image/index.native.js.map +1 -1
  92. package/build/mobile/picker/index.android.js +3 -3
  93. package/build/mobile/picker/index.android.js.map +1 -1
  94. package/build/modal/index.js +1 -3
  95. package/build/modal/index.js.map +1 -1
  96. package/build/navigable-container/container.js +9 -8
  97. package/build/navigable-container/container.js.map +1 -1
  98. package/build/navigator/navigator-back-button/hook.js +0 -4
  99. package/build/navigator/navigator-back-button/hook.js.map +1 -1
  100. package/build/navigator/navigator-button/hook.js +0 -4
  101. package/build/navigator/navigator-button/hook.js.map +1 -1
  102. package/build/notice/list.js +10 -6
  103. package/build/notice/list.js.map +1 -1
  104. package/build/palette-edit/index.js +1 -0
  105. package/build/palette-edit/index.js.map +1 -1
  106. package/build/palette-edit/styles.js +10 -10
  107. package/build/palette-edit/styles.js.map +1 -1
  108. package/build/popover/index.js +100 -97
  109. package/build/popover/index.js.map +1 -1
  110. package/build/popover/utils.js +178 -0
  111. package/build/popover/utils.js.map +1 -0
  112. package/build/range-control/index.js +3 -0
  113. package/build/range-control/index.js.map +1 -1
  114. package/build/range-control/styles/range-control-styles.js +43 -37
  115. package/build/range-control/styles/range-control-styles.js.map +1 -1
  116. package/build/select-control/chevron-down.js +30 -0
  117. package/build/select-control/chevron-down.js.map +1 -0
  118. package/build/select-control/index.js +7 -7
  119. package/build/select-control/index.js.map +1 -1
  120. package/build/select-control/styles/select-control-styles.js +30 -15
  121. package/build/select-control/styles/select-control-styles.js.map +1 -1
  122. package/build/snackbar/list.js +5 -3
  123. package/build/snackbar/list.js.map +1 -1
  124. package/build/spinner/index.js +2 -0
  125. package/build/spinner/index.js.map +1 -1
  126. package/build/text/styles.js +7 -7
  127. package/build/text/styles.js.map +1 -1
  128. package/build/toggle-group-control/toggle-group-control/component.js +16 -8
  129. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  130. package/build/toggle-group-control/toggle-group-control/styles.js +7 -5
  131. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  132. package/build/toggle-group-control/toggle-group-control-option/component.js +15 -5
  133. package/build/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  134. package/build/toggle-group-control/toggle-group-control-option-base/component.js +5 -1
  135. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  136. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +20 -7
  137. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  138. package/build/toggle-group-control/toggle-group-control-option-icon/component.js +26 -7
  139. package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  140. package/build/tools-panel/styles.js +11 -11
  141. package/build/tools-panel/styles.js.map +1 -1
  142. package/build/ui/context/context-connect.js +1 -3
  143. package/build/ui/context/context-connect.js.map +1 -1
  144. package/build/unit-control/index.js +2 -3
  145. package/build/unit-control/index.js.map +1 -1
  146. package/build/utils/colors-values.js +52 -142
  147. package/build/utils/colors-values.js.map +1 -1
  148. package/build/utils/config-values.js +1 -1
  149. package/build/utils/config-values.js.map +1 -1
  150. package/build/utils/input/input-control.js +1 -1
  151. package/build/utils/input/input-control.js.map +1 -1
  152. package/build/utils/rtl.js +6 -5
  153. package/build/utils/rtl.js.map +1 -1
  154. package/build/utils/strings.js +50 -0
  155. package/build/utils/strings.js.map +1 -0
  156. package/build-module/alignment-matrix-control/index.js +1 -1
  157. package/build-module/alignment-matrix-control/index.js.map +1 -1
  158. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +9 -9
  159. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  160. package/build-module/angle-picker-control/index.js +3 -0
  161. package/build-module/angle-picker-control/index.js.map +1 -1
  162. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +13 -4
  163. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  164. package/build-module/autocomplete/index.js +9 -10
  165. package/build-module/autocomplete/index.js.map +1 -1
  166. package/build-module/base-control/styles/base-control-styles.js +8 -8
  167. package/build-module/base-control/styles/base-control-styles.js.map +1 -1
  168. package/build-module/base-field/styles.js +5 -5
  169. package/build-module/base-field/styles.js.map +1 -1
  170. package/build-module/box-control/styles/box-control-visualizer-styles.js +8 -8
  171. package/build-module/box-control/styles/box-control-visualizer-styles.js.map +1 -1
  172. package/build-module/color-list-picker/index.js +13 -5
  173. package/build-module/color-list-picker/index.js.map +1 -1
  174. package/build-module/color-palette/index.js +22 -11
  175. package/build-module/color-palette/index.js.map +1 -1
  176. package/build-module/color-palette/index.native.js +4 -4
  177. package/build-module/color-palette/index.native.js.map +1 -1
  178. package/build-module/combobox-control/index.js +6 -3
  179. package/build-module/combobox-control/index.js.map +1 -1
  180. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/constants.js +0 -0
  181. package/build-module/custom-gradient-picker/gradient-bar/constants.js.map +1 -0
  182. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/control-points.js +34 -41
  183. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -0
  184. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/index.js +0 -1
  185. package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -0
  186. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/utils.js +0 -0
  187. package/build-module/custom-gradient-picker/gradient-bar/utils.js.map +1 -0
  188. package/build-module/custom-gradient-picker/index.js +16 -3
  189. package/build-module/custom-gradient-picker/index.js.map +1 -1
  190. package/build-module/custom-select-control/index.js +20 -12
  191. package/build-module/custom-select-control/index.js.map +1 -1
  192. package/build-module/custom-select-control/styles.js +22 -0
  193. package/build-module/custom-select-control/styles.js.map +1 -0
  194. package/build-module/date-time/constants.js +2 -0
  195. package/build-module/date-time/constants.js.map +1 -0
  196. package/build-module/date-time/date/index.js +178 -184
  197. package/build-module/date-time/date/index.js.map +1 -1
  198. package/build-module/date-time/date/styles.js +47 -38
  199. package/build-module/date-time/date/styles.js.map +1 -1
  200. package/build-module/date-time/date-time/index.js +4 -2
  201. package/build-module/date-time/date-time/index.js.map +1 -1
  202. package/build-module/date-time/time/index.js +20 -16
  203. package/build-module/date-time/time/index.js.map +1 -1
  204. package/build-module/date-time/utils.js +19 -0
  205. package/build-module/date-time/utils.js.map +1 -0
  206. package/build-module/dimension-control/index.js +1 -5
  207. package/build-module/dimension-control/index.js.map +1 -1
  208. package/build-module/disabled/index.js +28 -11
  209. package/build-module/disabled/index.js.map +1 -1
  210. package/build-module/disabled/styles/disabled-styles.js +3 -3
  211. package/build-module/disabled/styles/disabled-styles.js.map +1 -1
  212. package/build-module/{swatch → disabled}/types.js +0 -0
  213. package/build-module/{swatch → disabled}/types.js.map +0 -0
  214. package/build-module/dropdown/index.js +5 -6
  215. package/build-module/dropdown/index.js.map +1 -1
  216. package/build-module/duotone-picker/custom-duotone-bar.js +1 -1
  217. package/build-module/duotone-picker/custom-duotone-bar.js.map +1 -1
  218. package/build-module/duotone-picker/duotone-picker.js +7 -1
  219. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  220. package/build-module/duotone-picker/duotone-swatch.js +11 -3
  221. package/build-module/duotone-picker/duotone-swatch.js.map +1 -1
  222. package/build-module/focal-point-picker/index.js +4 -5
  223. package/build-module/focal-point-picker/index.js.map +1 -1
  224. package/build-module/focal-point-picker/styles/focal-point-style.js +4 -4
  225. package/build-module/focal-point-picker/styles/focal-point-style.js.map +1 -1
  226. package/build-module/font-size-picker/index.js +39 -14
  227. package/build-module/font-size-picker/index.js.map +1 -1
  228. package/build-module/font-size-picker/utils.js +31 -23
  229. package/build-module/font-size-picker/utils.js.map +1 -1
  230. package/build-module/form-token-field/index.js +12 -6
  231. package/build-module/form-token-field/index.js.map +1 -1
  232. package/build-module/gradient-picker/index.js +14 -3
  233. package/build-module/gradient-picker/index.js.map +1 -1
  234. package/build-module/guide/index.js +5 -3
  235. package/build-module/guide/index.js.map +1 -1
  236. package/build-module/guide/page-control.js +3 -6
  237. package/build-module/guide/page-control.js.map +1 -1
  238. package/build-module/item-group/styles.js +10 -10
  239. package/build-module/item-group/styles.js.map +1 -1
  240. package/build-module/mobile/bottom-sheet/index.native.js +3 -5
  241. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  242. package/build-module/mobile/global-styles-context/utils.native.js +2 -1
  243. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  244. package/build-module/mobile/image/index.native.js +8 -28
  245. package/build-module/mobile/image/index.native.js.map +1 -1
  246. package/build-module/mobile/picker/index.android.js +3 -3
  247. package/build-module/mobile/picker/index.android.js.map +1 -1
  248. package/build-module/modal/index.js +1 -2
  249. package/build-module/modal/index.js.map +1 -1
  250. package/build-module/navigable-container/container.js +9 -7
  251. package/build-module/navigable-container/container.js.map +1 -1
  252. package/build-module/navigator/navigator-back-button/hook.js +0 -4
  253. package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
  254. package/build-module/navigator/navigator-button/hook.js +0 -4
  255. package/build-module/navigator/navigator-button/hook.js.map +1 -1
  256. package/build-module/notice/list.js +10 -5
  257. package/build-module/notice/list.js.map +1 -1
  258. package/build-module/palette-edit/index.js +1 -0
  259. package/build-module/palette-edit/index.js.map +1 -1
  260. package/build-module/palette-edit/styles.js +10 -10
  261. package/build-module/palette-edit/styles.js.map +1 -1
  262. package/build-module/popover/index.js +100 -98
  263. package/build-module/popover/index.js.map +1 -1
  264. package/build-module/popover/utils.js +164 -0
  265. package/build-module/popover/utils.js.map +1 -0
  266. package/build-module/range-control/index.js +3 -0
  267. package/build-module/range-control/index.js.map +1 -1
  268. package/build-module/range-control/styles/range-control-styles.js +43 -37
  269. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  270. package/build-module/select-control/chevron-down.js +21 -0
  271. package/build-module/select-control/chevron-down.js.map +1 -0
  272. package/build-module/select-control/index.js +7 -7
  273. package/build-module/select-control/index.js.map +1 -1
  274. package/build-module/select-control/styles/select-control-styles.js +24 -13
  275. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  276. package/build-module/snackbar/list.js +5 -2
  277. package/build-module/snackbar/list.js.map +1 -1
  278. package/build-module/spinner/index.js +2 -0
  279. package/build-module/spinner/index.js.map +1 -1
  280. package/build-module/text/styles.js +7 -7
  281. package/build-module/text/styles.js.map +1 -1
  282. package/build-module/toggle-group-control/toggle-group-control/component.js +14 -7
  283. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  284. package/build-module/toggle-group-control/toggle-group-control/styles.js +5 -4
  285. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  286. package/build-module/toggle-group-control/toggle-group-control-option/component.js +17 -3
  287. package/build-module/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  288. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +5 -1
  289. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  290. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +16 -6
  291. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  292. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +27 -5
  293. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  294. package/build-module/tools-panel/styles.js +11 -11
  295. package/build-module/tools-panel/styles.js.map +1 -1
  296. package/build-module/ui/context/context-connect.js +1 -2
  297. package/build-module/ui/context/context-connect.js.map +1 -1
  298. package/build-module/unit-control/index.js +2 -2
  299. package/build-module/unit-control/index.js.map +1 -1
  300. package/build-module/utils/colors-values.js +52 -141
  301. package/build-module/utils/colors-values.js.map +1 -1
  302. package/build-module/utils/config-values.js +1 -1
  303. package/build-module/utils/config-values.js.map +1 -1
  304. package/build-module/utils/input/input-control.js +1 -1
  305. package/build-module/utils/input/input-control.js.map +1 -1
  306. package/build-module/utils/rtl.js +6 -4
  307. package/build-module/utils/rtl.js.map +1 -1
  308. package/build-module/utils/strings.js +37 -0
  309. package/build-module/utils/strings.js.map +1 -0
  310. package/build-style/style-rtl.css +176 -1227
  311. package/build-style/style.css +171 -1225
  312. package/build-types/color-palette/index.d.ts +2 -1
  313. package/build-types/color-palette/index.d.ts.map +1 -1
  314. package/build-types/color-picker/styles.d.ts +2 -2
  315. package/build-types/date-time/constants.d.ts +2 -0
  316. package/build-types/date-time/constants.d.ts.map +1 -0
  317. package/build-types/date-time/date/index.d.ts +3 -1
  318. package/build-types/date-time/date/index.d.ts.map +1 -1
  319. package/build-types/date-time/date/styles.d.ts +22 -8
  320. package/build-types/date-time/date/styles.d.ts.map +1 -1
  321. package/build-types/date-time/date/test/index.d.ts +1 -1
  322. package/build-types/date-time/date/test/index.d.ts.map +1 -1
  323. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  324. package/build-types/date-time/time/index.d.ts.map +1 -1
  325. package/build-types/date-time/utils.d.ts +8 -0
  326. package/build-types/date-time/utils.d.ts.map +1 -0
  327. package/build-types/disabled/index.d.ts +35 -28
  328. package/build-types/disabled/index.d.ts.map +1 -1
  329. package/build-types/disabled/stories/index.d.ts +13 -0
  330. package/build-types/disabled/stories/index.d.ts.map +1 -0
  331. package/build-types/disabled/styles/disabled-styles.d.ts +2 -1
  332. package/build-types/disabled/styles/disabled-styles.d.ts.map +1 -1
  333. package/build-types/disabled/test/index.d.ts +2 -0
  334. package/build-types/{flyout/flyout → disabled/test}/index.d.ts.map +1 -1
  335. package/build-types/disabled/types.d.ts +14 -0
  336. package/build-types/disabled/types.d.ts.map +1 -0
  337. package/build-types/dropdown/index.d.ts.map +1 -1
  338. package/build-types/form-token-field/index.d.ts.map +1 -1
  339. package/build-types/form-token-field/stories/index.d.ts +1 -0
  340. package/build-types/form-token-field/stories/index.d.ts.map +1 -1
  341. package/build-types/form-token-field/types.d.ts +7 -0
  342. package/build-types/form-token-field/types.d.ts.map +1 -1
  343. package/build-types/navigator/navigator-back-button/hook.d.ts +0 -3
  344. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  345. package/build-types/navigator/navigator-button/hook.d.ts +0 -3
  346. package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
  347. package/build-types/placeholder/test/index.d.ts +2 -0
  348. package/build-types/{flyout → placeholder/test}/index.d.ts.map +1 -1
  349. package/build-types/popover/index.d.ts +1 -1
  350. package/build-types/popover/index.d.ts.map +1 -1
  351. package/build-types/popover/utils.d.ts +26 -69
  352. package/build-types/popover/utils.d.ts.map +1 -1
  353. package/build-types/range-control/index.d.ts +2 -2
  354. package/build-types/range-control/index.d.ts.map +1 -1
  355. package/build-types/range-control/styles/range-control-styles.d.ts +5 -2
  356. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  357. package/build-types/range-control/types.d.ts +2 -2
  358. package/build-types/range-control/types.d.ts.map +1 -1
  359. package/build-types/select-control/chevron-down.d.ts +4 -0
  360. package/build-types/select-control/chevron-down.d.ts.map +1 -0
  361. package/build-types/select-control/index.d.ts.map +1 -1
  362. package/build-types/select-control/styles/select-control-styles.d.ts +8 -0
  363. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  364. package/build-types/spinner/index.d.ts.map +1 -1
  365. package/build-types/toggle-group-control/stories/index.d.ts +25 -0
  366. package/build-types/toggle-group-control/stories/index.d.ts.map +1 -0
  367. package/build-types/toggle-group-control/test/index.d.ts +2 -0
  368. package/build-types/toggle-group-control/test/index.d.ts.map +1 -0
  369. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +6 -3
  370. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  371. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +1 -0
  372. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  373. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +6 -7
  374. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts.map +1 -1
  375. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  376. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +4 -0
  377. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  378. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +11 -9
  379. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts.map +1 -1
  380. package/build-types/toggle-group-control/types.d.ts +23 -10
  381. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  382. package/build-types/ui/context/context-connect.d.ts +3 -0
  383. package/build-types/ui/context/context-connect.d.ts.map +1 -1
  384. package/build-types/ui/form-group/use-form-group.d.ts +2 -2
  385. package/build-types/unit-control/index.d.ts +2 -1
  386. package/build-types/unit-control/index.d.ts.map +1 -1
  387. package/build-types/unit-control/types.d.ts +5 -1
  388. package/build-types/unit-control/types.d.ts.map +1 -1
  389. package/build-types/utils/colors-values.d.ts +18 -97
  390. package/build-types/utils/colors-values.d.ts.map +1 -1
  391. package/build-types/utils/rtl.d.ts.map +1 -1
  392. package/build-types/utils/strings.d.ts +2 -0
  393. package/build-types/utils/strings.d.ts.map +1 -0
  394. package/package.json +22 -21
  395. package/src/alignment-matrix-control/index.js +1 -1
  396. package/src/alignment-matrix-control/stories/index.js +49 -24
  397. package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.js +1 -3
  398. package/src/angle-picker-control/index.js +7 -1
  399. package/src/angle-picker-control/stories/index.js +8 -5
  400. package/src/angle-picker-control/styles/angle-picker-control-styles.js +12 -3
  401. package/src/autocomplete/index.js +9 -18
  402. package/src/base-control/styles/base-control-styles.ts +1 -1
  403. package/src/base-field/styles.js +1 -1
  404. package/src/base-field/test/__snapshots__/index.js.snap +2 -2
  405. package/src/box-control/styles/box-control-visualizer-styles.js +0 -1
  406. package/src/box-control/test/index.js +8 -8
  407. package/src/button/test/index.js +188 -146
  408. package/src/color-list-picker/index.js +15 -3
  409. package/src/color-list-picker/style.scss +11 -0
  410. package/src/color-palette/index.js +32 -16
  411. package/src/color-palette/index.native.js +10 -6
  412. package/src/color-palette/stories/index.js +1 -1
  413. package/src/color-palette/test/__snapshots__/index.js.snap +17 -3
  414. package/src/combobox-control/index.js +6 -5
  415. package/src/combobox-control/stories/index.js +9 -3
  416. package/src/combobox-control/style.scss +0 -1
  417. package/src/confirm-dialog/test/index.js +85 -62
  418. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/constants.js +0 -0
  419. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/control-points.js +54 -50
  420. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/index.js +0 -3
  421. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/test/utils.js +0 -0
  422. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/utils.js +0 -0
  423. package/src/custom-gradient-picker/index.js +18 -3
  424. package/src/custom-gradient-picker/stories/index.js +4 -3
  425. package/src/custom-gradient-picker/style.scss +30 -27
  426. package/src/custom-select-control/README.md +10 -0
  427. package/src/custom-select-control/index.js +22 -16
  428. package/src/custom-select-control/stories/index.js +1 -1
  429. package/src/custom-select-control/style.scss +0 -12
  430. package/src/custom-select-control/styles.ts +28 -0
  431. package/src/custom-select-control/test/index.js +4 -1
  432. package/src/date-time/constants.ts +1 -0
  433. package/src/date-time/date/index.tsx +289 -184
  434. package/src/date-time/date/styles.ts +86 -27
  435. package/src/date-time/date/test/index.tsx +18 -28
  436. package/src/date-time/date-time/index.tsx +3 -2
  437. package/src/date-time/time/index.tsx +23 -19
  438. package/src/date-time/utils.ts +17 -0
  439. package/src/dimension-control/index.js +1 -5
  440. package/src/disabled/index.tsx +80 -0
  441. package/src/disabled/stories/index.tsx +87 -0
  442. package/src/disabled/styles/{disabled-styles.js → disabled-styles.tsx} +0 -0
  443. package/src/disabled/test/index.tsx +174 -0
  444. package/src/disabled/types.ts +13 -0
  445. package/src/dropdown/index.js +3 -5
  446. package/src/dropdown-menu/stories/index.js +13 -2
  447. package/src/duotone-picker/custom-duotone-bar.js +1 -1
  448. package/src/duotone-picker/duotone-picker.js +34 -26
  449. package/src/duotone-picker/duotone-swatch.js +12 -5
  450. package/src/duotone-picker/stories/duotone-picker.js +66 -0
  451. package/src/duotone-picker/stories/duotone-swatch.js +32 -0
  452. package/src/focal-point-picker/index.js +10 -5
  453. package/src/focal-point-picker/styles/focal-point-style.js +0 -1
  454. package/src/focal-point-picker/test/index.js +78 -45
  455. package/src/font-size-picker/index.js +161 -144
  456. package/src/font-size-picker/stories/index.js +1 -0
  457. package/src/font-size-picker/style.scss +8 -5
  458. package/src/font-size-picker/test/index.js +13 -6
  459. package/src/font-size-picker/test/{util.js → utils.js} +77 -1
  460. package/src/font-size-picker/utils.js +38 -23
  461. package/src/form-token-field/README.md +1 -0
  462. package/src/form-token-field/index.tsx +24 -10
  463. package/src/form-token-field/stories/index.tsx +8 -0
  464. package/src/form-token-field/test/index.js +31 -0
  465. package/src/form-token-field/types.ts +7 -0
  466. package/src/gradient-picker/index.js +22 -7
  467. package/src/gradient-picker/stories/index.js +56 -81
  468. package/src/guide/index.js +3 -1
  469. package/src/guide/page-control.js +1 -6
  470. package/src/guide/stories/index.js +12 -11
  471. package/src/guide/test/index.js +54 -37
  472. package/src/guide/test/page-control.js +14 -17
  473. package/src/higher-order/with-notices/test/index.js +4 -2
  474. package/src/higher-order/with-spoken-messages/test/index.js +1 -1
  475. package/src/item-group/styles.ts +3 -3
  476. package/src/menu-group/test/index.js +18 -7
  477. package/src/mobile/bottom-sheet/index.native.js +2 -4
  478. package/src/mobile/global-styles-context/utils.native.js +2 -1
  479. package/src/mobile/image/index.native.js +9 -30
  480. package/src/mobile/picker/index.android.js +10 -4
  481. package/src/mobile/picker/styles.native.scss +4 -4
  482. package/src/modal/index.js +1 -2
  483. package/src/modal/test/index.js +11 -9
  484. package/src/navigable-container/container.js +12 -18
  485. package/src/navigable-container/test/menu.js +14 -11
  486. package/src/navigator/navigator-back-button/hook.ts +0 -3
  487. package/src/navigator/navigator-button/hook.ts +0 -3
  488. package/src/notice/list.js +12 -10
  489. package/src/palette-edit/index.js +1 -0
  490. package/src/palette-edit/styles.js +6 -5
  491. package/src/placeholder/README.md +1 -1
  492. package/src/placeholder/style.scss +65 -20
  493. package/src/placeholder/test/index.tsx +174 -0
  494. package/src/popover/index.js +133 -112
  495. package/src/popover/stories/index.js +17 -3
  496. package/src/popover/test/__snapshots__/index.js.snap +6 -6
  497. package/src/popover/test/index.js +129 -36
  498. package/src/popover/utils.js +107 -0
  499. package/src/range-control/index.tsx +3 -0
  500. package/src/range-control/styles/range-control-styles.ts +9 -4
  501. package/src/range-control/types.ts +5 -2
  502. package/src/select-control/chevron-down.tsx +25 -0
  503. package/src/select-control/index.tsx +6 -9
  504. package/src/select-control/styles/select-control-styles.ts +23 -14
  505. package/src/slot-fill/test/slot.js +5 -5
  506. package/src/snackbar/list.js +3 -2
  507. package/src/spinner/index.tsx +2 -0
  508. package/src/style.scss +0 -2
  509. package/src/text/styles.js +1 -1
  510. package/src/text/test/index.tsx +1 -1
  511. package/src/toggle-group-control/stories/index.tsx +127 -0
  512. package/src/toggle-group-control/test/__snapshots__/{index.js.snap → index.tsx.snap} +28 -22
  513. package/src/toggle-group-control/test/{index.js → index.tsx} +2 -4
  514. package/src/toggle-group-control/toggle-group-control/README.md +2 -0
  515. package/src/toggle-group-control/toggle-group-control/component.tsx +18 -9
  516. package/src/toggle-group-control/toggle-group-control/styles.ts +9 -6
  517. package/src/toggle-group-control/toggle-group-control-option/component.tsx +19 -3
  518. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +3 -0
  519. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +18 -0
  520. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +6 -8
  521. package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +30 -7
  522. package/src/toggle-group-control/types.ts +74 -59
  523. package/src/toolbar/test/index.js +4 -4
  524. package/src/toolbar-group/test/index.js +9 -15
  525. package/src/tools-panel/styles.ts +2 -2
  526. package/src/tools-panel/test/index.js +3 -2
  527. package/src/tooltip/test/index.js +188 -172
  528. package/src/ui/context/context-connect.ts +3 -2
  529. package/src/unit-control/index.tsx +2 -2
  530. package/src/unit-control/types.ts +10 -1
  531. package/src/utils/colors-values.js +42 -137
  532. package/src/utils/config-values.js +1 -1
  533. package/src/utils/input/input-control.js +6 -6
  534. package/src/utils/rtl.js +6 -2
  535. package/src/utils/strings.ts +72 -0
  536. package/src/utils/test/strings.js +15 -0
  537. package/tsconfig.json +0 -1
  538. package/tsconfig.tsbuildinfo +1 -1
  539. package/build/custom-gradient-bar/constants.js.map +0 -1
  540. package/build/custom-gradient-bar/control-points.js.map +0 -1
  541. package/build/custom-gradient-bar/index.js.map +0 -1
  542. package/build/custom-gradient-bar/utils.js.map +0 -1
  543. package/build/date-time/date/utils.js +0 -34
  544. package/build/date-time/date/utils.js.map +0 -1
  545. package/build/swatch/index.js +0 -41
  546. package/build/swatch/index.js.map +0 -1
  547. package/build-module/custom-gradient-bar/constants.js.map +0 -1
  548. package/build-module/custom-gradient-bar/control-points.js.map +0 -1
  549. package/build-module/custom-gradient-bar/index.js.map +0 -1
  550. package/build-module/custom-gradient-bar/utils.js.map +0 -1
  551. package/build-module/date-time/date/utils.js +0 -22
  552. package/build-module/date-time/date/utils.js.map +0 -1
  553. package/build-module/swatch/index.js +0 -30
  554. package/build-module/swatch/index.js.map +0 -1
  555. package/build-types/color-picker/color-display.d.ts +0 -13
  556. package/build-types/color-picker/color-display.d.ts.map +0 -1
  557. package/build-types/date-time/date/test/utils.d.ts +0 -2
  558. package/build-types/date-time/date/test/utils.d.ts.map +0 -1
  559. package/build-types/date-time/date/utils.d.ts +0 -15
  560. package/build-types/date-time/date/utils.d.ts.map +0 -1
  561. package/build-types/flyout/context.d.ts +0 -6
  562. package/build-types/flyout/context.d.ts.map +0 -1
  563. package/build-types/flyout/flyout/component.d.ts +0 -21
  564. package/build-types/flyout/flyout/component.d.ts.map +0 -1
  565. package/build-types/flyout/flyout/hook.d.ts +0 -270
  566. package/build-types/flyout/flyout/hook.d.ts.map +0 -1
  567. package/build-types/flyout/flyout/index.d.ts +0 -3
  568. package/build-types/flyout/flyout-content/component.d.ts +0 -3
  569. package/build-types/flyout/flyout-content/component.d.ts.map +0 -1
  570. package/build-types/flyout/flyout-content/index.d.ts +0 -2
  571. package/build-types/flyout/flyout-content/index.d.ts.map +0 -1
  572. package/build-types/flyout/index.d.ts +0 -2
  573. package/build-types/flyout/styles.d.ts +0 -22
  574. package/build-types/flyout/styles.d.ts.map +0 -1
  575. package/build-types/flyout/types.d.ts +0 -80
  576. package/build-types/flyout/types.d.ts.map +0 -1
  577. package/build-types/flyout/utils.d.ts +0 -8
  578. package/build-types/flyout/utils.d.ts.map +0 -1
  579. package/build-types/swatch/index.d.ts +0 -5
  580. package/build-types/swatch/index.d.ts.map +0 -1
  581. package/build-types/swatch/types.d.ts +0 -11
  582. package/build-types/swatch/types.d.ts.map +0 -1
  583. package/build-types/utils/hooks/use-combined-ref.d.ts +0 -8
  584. package/build-types/utils/hooks/use-combined-ref.d.ts.map +0 -1
  585. package/src/date-time/date/datepicker.scss +0 -863
  586. package/src/date-time/date/style.scss +0 -85
  587. package/src/date-time/date/test/utils.ts +0 -32
  588. package/src/date-time/date/utils.ts +0 -20
  589. package/src/date-time/style.scss +0 -1
  590. package/src/disabled/index.js +0 -55
  591. package/src/disabled/stories/index.js +0 -61
  592. package/src/disabled/test/index.js +0 -240
  593. package/src/menu-group/test/__snapshots__/index.js.snap +0 -23
  594. package/src/placeholder/test/index.js +0 -163
  595. package/src/swatch/index.tsx +0 -22
  596. package/src/swatch/style.scss +0 -21
  597. package/src/swatch/types.ts +0 -11
  598. package/src/toggle-group-control/stories/index.js +0 -203
  599. package/src/tools-panel/test/__snapshots__/index.js.snap +0 -210
@@ -0,0 +1,174 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { render, screen, within } from '@testing-library/react';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useResizeObserver } from '@wordpress/compose';
10
+ import { SVG, Path } from '@wordpress/primitives';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import BasePlaceholder from '../';
16
+ import type { WordPressComponentProps } from '../../ui/context';
17
+ import type { PlaceholderProps } from '../types';
18
+
19
+ jest.mock( '@wordpress/compose', () => {
20
+ return {
21
+ ...jest.requireActual( '@wordpress/compose' ),
22
+ useResizeObserver: jest.fn( () => [] ),
23
+ };
24
+ } );
25
+
26
+ /**
27
+ * Test icon that can be queried by `getByTestId`
28
+ */
29
+ const testIcon = (
30
+ <SVG data-testid="icon">
31
+ <Path />
32
+ </SVG>
33
+ );
34
+
35
+ const Placeholder = (
36
+ props: Omit<
37
+ WordPressComponentProps< PlaceholderProps< unknown >, 'div', false >,
38
+ 'ref'
39
+ >
40
+ ) => <BasePlaceholder data-testid="placeholder" { ...props } />;
41
+
42
+ const getPlaceholder = () => screen.getByTestId( 'placeholder' );
43
+
44
+ describe( 'Placeholder', () => {
45
+ beforeEach( () => {
46
+ // @ts-ignore
47
+ useResizeObserver.mockReturnValue( [
48
+ <div key="1" />,
49
+ { width: 320 },
50
+ ] );
51
+ } );
52
+
53
+ describe( 'basic rendering', () => {
54
+ it( 'should by default render label section and fieldset.', () => {
55
+ render( <Placeholder /> );
56
+ const placeholder = getPlaceholder();
57
+
58
+ expect( placeholder ).toHaveClass( 'components-placeholder' );
59
+
60
+ // Test for empty label. When the label is empty, the only way to
61
+ // query the div is with `querySelector`.
62
+ const label = placeholder.querySelector(
63
+ '.components-placeholder__label'
64
+ );
65
+ expect( label ).toBeInTheDocument();
66
+ expect( label ).toBeEmptyDOMElement();
67
+
68
+ // Test for non existent instructions. When the instructions is
69
+ // empty, the only way to query the div is with `querySelector`.
70
+ const placeholderInstructions = placeholder.querySelector(
71
+ '.components-placeholder__instructions'
72
+ );
73
+ expect( placeholderInstructions ).not.toBeInTheDocument();
74
+
75
+ // Test for empty fieldset.
76
+ const placeholderFieldset =
77
+ within( placeholder ).getByRole( 'group' );
78
+ expect( placeholderFieldset ).toBeInTheDocument();
79
+ expect( placeholderFieldset ).toBeEmptyDOMElement();
80
+ } );
81
+
82
+ it( 'should render an Icon in the label section', () => {
83
+ render( <Placeholder icon={ testIcon } /> );
84
+
85
+ const placeholder = getPlaceholder();
86
+ const icon = within( placeholder ).getByTestId( 'icon' );
87
+ expect( icon.parentNode ).toHaveClass(
88
+ 'components-placeholder__label'
89
+ );
90
+ expect( icon ).toBeInTheDocument();
91
+ } );
92
+
93
+ it( 'should render a label section', () => {
94
+ const label = 'WordPress';
95
+ render( <Placeholder label={ label } /> );
96
+ const placeholderLabel = screen.getByText( label );
97
+
98
+ expect( placeholderLabel ).toHaveClass(
99
+ 'components-placeholder__label'
100
+ );
101
+ expect( placeholderLabel ).toBeInTheDocument();
102
+ } );
103
+
104
+ it( 'should display a fieldset from the children property', () => {
105
+ const content = 'Fieldset';
106
+ render( <Placeholder>{ content }</Placeholder> );
107
+ const placeholderFieldset = screen.getByRole( 'group' );
108
+
109
+ expect( placeholderFieldset ).toBeInTheDocument();
110
+ expect( placeholderFieldset ).toHaveTextContent( content );
111
+ } );
112
+
113
+ it( 'should display a legend if instructions are passed', () => {
114
+ const instructions = 'Choose an option.';
115
+ render(
116
+ <Placeholder instructions={ instructions }>
117
+ <div>Fieldset</div>
118
+ </Placeholder>
119
+ );
120
+ const captionedFieldset = screen.getByRole( 'group', {
121
+ name: instructions,
122
+ } );
123
+
124
+ expect( captionedFieldset ).toBeInTheDocument();
125
+ } );
126
+
127
+ it( 'should add an additional className to the top container', () => {
128
+ render( <Placeholder className="wp-placeholder" /> );
129
+ const placeholder = getPlaceholder();
130
+
131
+ expect( placeholder ).toHaveClass( 'components-placeholder' );
132
+ expect( placeholder ).toHaveClass( 'wp-placeholder' );
133
+ } );
134
+
135
+ it( 'should add additional props to the top level container', () => {
136
+ render( <Placeholder data-test="test" /> );
137
+ const placeholder = getPlaceholder();
138
+
139
+ expect( placeholder ).toHaveAttribute( 'data-test', 'test' );
140
+ } );
141
+ } );
142
+
143
+ describe( 'resize aware', () => {
144
+ it( 'should not assign modifier class in first-pass `null` width from `useResizeObserver`', () => {
145
+ // @ts-ignore
146
+ useResizeObserver.mockReturnValue( [
147
+ <div key="1" />,
148
+ { width: 480 },
149
+ ] );
150
+
151
+ render( <Placeholder /> );
152
+ const placeholder = getPlaceholder();
153
+
154
+ expect( placeholder ).toHaveClass( 'is-large' );
155
+ expect( placeholder ).not.toHaveClass( 'is-medium' );
156
+ expect( placeholder ).not.toHaveClass( 'is-small' );
157
+ } );
158
+
159
+ it( 'should assign modifier class', () => {
160
+ // @ts-ignore
161
+ useResizeObserver.mockReturnValue( [
162
+ <div key="1" />,
163
+ { width: null },
164
+ ] );
165
+
166
+ render( <Placeholder /> );
167
+ const placeholder = getPlaceholder();
168
+
169
+ expect( placeholder ).not.toHaveClass( 'is-large' );
170
+ expect( placeholder ).not.toHaveClass( 'is-medium' );
171
+ expect( placeholder ).not.toHaveClass( 'is-small' );
172
+ } );
173
+ } );
174
+ } );
@@ -13,6 +13,8 @@ import {
13
13
  limitShift,
14
14
  size,
15
15
  } from '@floating-ui/react-dom';
16
+ // eslint-disable-next-line no-restricted-imports
17
+ import { motion, useReducedMotion } from 'framer-motion';
16
18
 
17
19
  /**
18
20
  * WordPress dependencies
@@ -24,6 +26,7 @@ import {
24
26
  createContext,
25
27
  useContext,
26
28
  useMemo,
29
+ useEffect,
27
30
  } from '@wordpress/element';
28
31
  import {
29
32
  useViewportMatch,
@@ -40,7 +43,11 @@ import { Path, SVG } from '@wordpress/primitives';
40
43
  import Button from '../button';
41
44
  import ScrollLock from '../scroll-lock';
42
45
  import { Slot, Fill, useSlot } from '../slot-fill';
43
- import { getAnimateClassName } from '../animate';
46
+ import {
47
+ getFrameOffset,
48
+ positionToPlacement,
49
+ placementToMotionAnimationProps,
50
+ } from './utils';
44
51
 
45
52
  /**
46
53
  * Name of slot in which popover should fill.
@@ -73,50 +80,48 @@ const ArrowTriangle = ( props ) => (
73
80
  </SVG>
74
81
  );
75
82
 
76
- const slotNameContext = createContext();
77
-
78
- const positionToPlacement = ( position ) => {
79
- const [ x, y, z ] = position.split( ' ' );
80
-
81
- if ( [ 'top', 'bottom' ].includes( x ) ) {
82
- let suffix = '';
83
- if ( ( !! z && z === 'left' ) || y === 'right' ) {
84
- suffix = '-start';
85
- } else if ( ( !! z && z === 'right' ) || y === 'left' ) {
86
- suffix = '-end';
87
- }
88
- return x + suffix;
89
- }
90
-
91
- return y;
92
- };
83
+ const MaybeAnimatedWrapper = forwardRef(
84
+ (
85
+ {
86
+ style: receivedInlineStyles,
87
+ placement,
88
+ shouldAnimate = false,
89
+ ...props
90
+ },
91
+ forwardedRef
92
+ ) => {
93
+ const shouldReduceMotion = useReducedMotion();
94
+
95
+ const { style: motionInlineStyles, ...otherMotionProps } = useMemo(
96
+ () => placementToMotionAnimationProps( placement ),
97
+ [ placement ]
98
+ );
93
99
 
94
- const placementToAnimationOrigin = ( placement ) => {
95
- const [ a, b ] = placement.split( '-' );
96
-
97
- let x, y;
98
- if ( a === 'top' || a === 'bottom' ) {
99
- x = a === 'top' ? 'bottom' : 'top';
100
- y = 'middle';
101
- if ( b === 'start' ) {
102
- y = 'left';
103
- } else if ( b === 'end' ) {
104
- y = 'right';
100
+ if ( shouldAnimate && ! shouldReduceMotion ) {
101
+ return (
102
+ <motion.div
103
+ style={ {
104
+ ...motionInlineStyles,
105
+ ...receivedInlineStyles,
106
+ } }
107
+ { ...otherMotionProps }
108
+ { ...props }
109
+ ref={ forwardedRef }
110
+ />
111
+ );
105
112
  }
106
- }
107
113
 
108
- if ( a === 'left' || a === 'right' ) {
109
- x = 'center';
110
- y = a === 'left' ? 'right' : 'left';
111
- if ( b === 'start' ) {
112
- x = 'top';
113
- } else if ( b === 'end' ) {
114
- x = 'bottom';
115
- }
114
+ return (
115
+ <div
116
+ style={ receivedInlineStyles }
117
+ { ...props }
118
+ ref={ forwardedRef }
119
+ />
120
+ );
116
121
  }
122
+ );
117
123
 
118
- return x + ' ' + y;
119
- };
124
+ const slotNameContext = createContext();
120
125
 
121
126
  const Popover = (
122
127
  {
@@ -130,7 +135,7 @@ const Popover = (
130
135
  isAlternate,
131
136
  position,
132
137
  placement: placementProp = 'bottom-start',
133
- offset,
138
+ offset: offsetProp = 0,
134
139
  focusOnMount = 'firstElement',
135
140
  anchorRef,
136
141
  anchorRect,
@@ -162,7 +167,7 @@ const Popover = (
162
167
  ? positionToPlacement( position )
163
168
  : placementProp;
164
169
 
165
- const ownerDocument = useMemo( () => {
170
+ const referenceOwnerDocument = useMemo( () => {
166
171
  let documentToReturn;
167
172
 
168
173
  if ( anchorRef?.top ) {
@@ -187,62 +192,57 @@ const Popover = (
187
192
 
188
193
  /**
189
194
  * Offsets the position of the popover when the anchor is inside an iframe.
195
+ *
196
+ * Store the offset in a ref, due to constraints with floating-ui:
197
+ * https://floating-ui.com/docs/react-dom#variables-inside-middleware-functions.
190
198
  */
191
- const frameOffset = useMemo( () => {
192
- const { defaultView } = ownerDocument;
193
- const { frameElement } = defaultView;
194
-
195
- if ( ! frameElement || ownerDocument === document ) {
196
- return undefined;
197
- }
198
-
199
- const iframeRect = frameElement.getBoundingClientRect();
200
- return { x: iframeRect.left, y: iframeRect.top };
201
- }, [ ownerDocument ] );
199
+ const frameOffsetRef = useRef( getFrameOffset( referenceOwnerDocument ) );
200
+ /**
201
+ * Store the offset prop in a ref, due to constraints with floating-ui:
202
+ * https://floating-ui.com/docs/react-dom#variables-inside-middleware-functions.
203
+ */
204
+ const offsetRef = useRef( offsetProp );
202
205
 
203
206
  const middleware = [
204
- frameOffset || offset
205
- ? offsetMiddleware( ( { placement: currentPlacement } ) => {
206
- if ( ! frameOffset ) {
207
- return offset;
208
- }
209
-
210
- const isTopBottomPlacement =
211
- currentPlacement.includes( 'top' ) ||
212
- currentPlacement.includes( 'bottom' );
213
-
214
- // The main axis should represent the gap between the
215
- // floating element and the reference element. The cross
216
- // axis is always perpendicular to the main axis.
217
- const mainAxis = isTopBottomPlacement ? 'y' : 'x';
218
- const crossAxis = mainAxis === 'x' ? 'y' : 'x';
219
-
220
- // When the popover is before the reference, subtract the offset,
221
- // of the main axis else add it.
222
- const hasBeforePlacement =
223
- currentPlacement.includes( 'top' ) ||
224
- currentPlacement.includes( 'left' );
225
- const mainAxisModifier = hasBeforePlacement ? -1 : 1;
226
- const normalizedOffset = offset ? offset : 0;
227
-
228
- return {
229
- mainAxis:
230
- normalizedOffset +
231
- frameOffset[ mainAxis ] * mainAxisModifier,
232
- crossAxis: frameOffset[ crossAxis ],
233
- };
234
- } )
235
- : undefined,
207
+ offsetMiddleware( ( { placement: currentPlacement } ) => {
208
+ if ( ! frameOffsetRef.current ) {
209
+ return offsetRef.current;
210
+ }
211
+
212
+ const isTopBottomPlacement =
213
+ currentPlacement.includes( 'top' ) ||
214
+ currentPlacement.includes( 'bottom' );
215
+
216
+ // The main axis should represent the gap between the
217
+ // floating element and the reference element. The cross
218
+ // axis is always perpendicular to the main axis.
219
+ const mainAxis = isTopBottomPlacement ? 'y' : 'x';
220
+ const crossAxis = mainAxis === 'x' ? 'y' : 'x';
221
+
222
+ // When the popover is before the reference, subtract the offset,
223
+ // of the main axis else add it.
224
+ const hasBeforePlacement =
225
+ currentPlacement.includes( 'top' ) ||
226
+ currentPlacement.includes( 'left' );
227
+ const mainAxisModifier = hasBeforePlacement ? -1 : 1;
228
+
229
+ return {
230
+ mainAxis:
231
+ offsetRef.current +
232
+ frameOffsetRef.current[ mainAxis ] * mainAxisModifier,
233
+ crossAxis: frameOffsetRef.current[ crossAxis ],
234
+ };
235
+ } ),
236
236
  __unstableForcePosition ? undefined : flip(),
237
237
  __unstableForcePosition
238
238
  ? undefined
239
239
  : size( {
240
240
  apply( sizeProps ) {
241
- const { height } = sizeProps;
241
+ const { availableHeight } = sizeProps;
242
242
  if ( ! refs.floating.current ) return;
243
243
  // Reduce the height of the popover to the available space.
244
244
  Object.assign( refs.floating.current.firstChild.style, {
245
- maxHeight: `${ height }px`,
245
+ maxHeight: `${ availableHeight }px`,
246
246
  overflow: 'auto',
247
247
  } );
248
248
  },
@@ -296,6 +296,11 @@ const Popover = (
296
296
  middlewareData: { arrow: arrowData = {} },
297
297
  } = useFloating( { placement: normalizedPlacementFromProps, middleware } );
298
298
 
299
+ useEffect( () => {
300
+ offsetRef.current = offsetProp;
301
+ update();
302
+ }, [ offsetProp, update ] );
303
+
299
304
  // Update the `reference`'s ref.
300
305
  //
301
306
  // In floating-ui's terms:
@@ -371,7 +376,10 @@ const Popover = (
371
376
  refs.floating.current,
372
377
  update
373
378
  );
374
- }, [ anchorRef, anchorRect, getAnchorRect ] );
379
+ // 'reference' and 'refs.floating' are refs and don't need to be listed
380
+ // as dependencies (see https://github.com/WordPress/gutenberg/pull/41612)
381
+ // eslint-disable-next-line react-hooks/exhaustive-deps
382
+ }, [ anchorRef, anchorRect, getAnchorRect, update ] );
375
383
 
376
384
  // This is only needed for a smooth transition when moving blocks.
377
385
  useLayoutEffect( () => {
@@ -384,27 +392,43 @@ const Popover = (
384
392
  return () => {
385
393
  observer.disconnect();
386
394
  };
387
- }, [ __unstableObserveElement ] );
395
+ }, [ __unstableObserveElement, update ] );
388
396
 
389
397
  // If the reference element is in a different ownerDocument (e.g. iFrame),
390
398
  // we need to manually update the floating's position as the reference's owner
391
- // document scrolls.
399
+ // document scrolls. Also update the frame offset if the view resizes.
392
400
  useLayoutEffect( () => {
393
- if ( ownerDocument === document ) {
401
+ if ( referenceOwnerDocument === document ) {
402
+ frameOffsetRef.current = undefined;
394
403
  return;
395
404
  }
396
405
 
397
- ownerDocument.addEventListener( 'scroll', update );
398
- return () => ownerDocument.removeEventListener( 'scroll', update );
399
- }, [ ownerDocument ] );
406
+ const { defaultView } = referenceOwnerDocument;
400
407
 
401
- /** @type {false | string} */
402
- const animateClassName =
403
- !! animate &&
404
- getAnimateClassName( {
405
- type: 'appear',
406
- origin: placementToAnimationOrigin( computedPlacement ),
407
- } );
408
+ referenceOwnerDocument.addEventListener( 'scroll', update );
409
+
410
+ let updateFrameOffset;
411
+ const hasFrameElement =
412
+ !! referenceOwnerDocument?.defaultView?.frameElement;
413
+ if ( hasFrameElement ) {
414
+ updateFrameOffset = () => {
415
+ frameOffsetRef.current = getFrameOffset(
416
+ referenceOwnerDocument
417
+ );
418
+ update();
419
+ };
420
+ updateFrameOffset();
421
+ defaultView.addEventListener( 'resize', updateFrameOffset );
422
+ }
423
+
424
+ return () => {
425
+ referenceOwnerDocument.removeEventListener( 'scroll', update );
426
+
427
+ if ( updateFrameOffset ) {
428
+ defaultView.removeEventListener( 'resize', updateFrameOffset );
429
+ }
430
+ };
431
+ }, [ referenceOwnerDocument, update ] );
408
432
 
409
433
  const mergedFloatingRef = useMergeRefs( [
410
434
  floating,
@@ -418,16 +442,13 @@ const Popover = (
418
442
  let content = (
419
443
  // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
420
444
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
421
- <div
422
- className={ classnames(
423
- 'components-popover',
424
- className,
425
- animateClassName,
426
- {
427
- 'is-expanded': isExpanded,
428
- 'is-alternate': isAlternate,
429
- }
430
- ) }
445
+ <MaybeAnimatedWrapper
446
+ shouldAnimate={ animate && ! isExpanded }
447
+ placement={ computedPlacement }
448
+ className={ classnames( 'components-popover', className, {
449
+ 'is-expanded': isExpanded,
450
+ 'is-alternate': isAlternate,
451
+ } ) }
431
452
  { ...contentProps }
432
453
  ref={ mergedFloatingRef }
433
454
  { ...dialogProps }
@@ -476,7 +497,7 @@ const Popover = (
476
497
  <ArrowTriangle />
477
498
  </div>
478
499
  ) }
479
- </div>
500
+ </MaybeAnimatedWrapper>
480
501
  );
481
502
 
482
503
  if ( slot.ref ) {
@@ -126,7 +126,14 @@ export const Default = ( args ) => {
126
126
  );
127
127
  };
128
128
  Default.args = {
129
- children: <>Popover&apos;s&nbsp;content</>,
129
+ children: (
130
+ <div style={ { width: '280px', whiteSpace: 'normal' } }>
131
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
132
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
133
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
134
+ aliquip ex ea commodo consequat.
135
+ </div>
136
+ ),
130
137
  };
131
138
 
132
139
  /**
@@ -166,8 +173,15 @@ AllPlacements.parameters = {
166
173
  };
167
174
  AllPlacements.args = {
168
175
  ...Default.args,
176
+ children: (
177
+ <div style={ { width: '280px', whiteSpace: 'normal' } }>
178
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
179
+ eiusmod tempor incididunt ut labore et dolore magna aliqua.
180
+ </div>
181
+ ),
169
182
  noArrow: false,
170
183
  offset: 10,
184
+ __unstableForcePosition: true,
171
185
  };
172
186
 
173
187
  export const DynamicHeight = ( { children, ...args } ) => {
@@ -230,7 +244,7 @@ export const WithSlotOutsideIframe = ( args ) => {
230
244
  <Iframe
231
245
  style={ {
232
246
  width: '100%',
233
- height: '100%',
247
+ height: '400px',
234
248
  } }
235
249
  >
236
250
  <div
@@ -244,7 +258,7 @@ export const WithSlotOutsideIframe = ( args ) => {
244
258
  padding: '8px',
245
259
  background: 'salmon',
246
260
  maxWidth: '200px',
247
- marginTop: '30px',
261
+ marginTop: '100px',
248
262
  marginLeft: 'auto',
249
263
  marginRight: 'auto',
250
264
  } }
@@ -1,11 +1,11 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`Popover should pass additional props to portaled element 1`] = `
3
+ exports[`Popover Component should pass additional props to portaled element 1`] = `
4
4
  <span>
5
5
  <div
6
- class="components-popover components-animate__appear is-from-left is-from-top"
6
+ class="components-popover"
7
7
  role="tooltip"
8
- style="position: absolute;"
8
+ style="position: absolute; opacity: 0; transform: translateY(-2em) scale(0) translateZ(0); transform-origin: 0% 0% 0;"
9
9
  tabindex="-1"
10
10
  >
11
11
  <div
@@ -17,11 +17,11 @@ exports[`Popover should pass additional props to portaled element 1`] = `
17
17
  </span>
18
18
  `;
19
19
 
20
- exports[`Popover should render content 1`] = `
20
+ exports[`Popover Component should render content 1`] = `
21
21
  <span>
22
22
  <div
23
- class="components-popover components-animate__appear is-from-left is-from-top"
24
- style="position: absolute;"
23
+ class="components-popover"
24
+ style="position: absolute; opacity: 0; transform: translateY(-2em) scale(0) translateZ(0); transform-origin: 0% 0% 0;"
25
25
  tabindex="-1"
26
26
  >
27
27
  <div