@wordpress/components 25.6.1 → 26.0.1-next.5a1d1283.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 (526) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/CONTRIBUTING.md +1 -1
  3. package/README.md +3 -8
  4. package/build/color-picker/hsv-color-picker.native.js +92 -0
  5. package/build/color-picker/hsv-color-picker.native.js.map +1 -0
  6. package/build/color-picker/hue-picker.native.js +195 -0
  7. package/build/color-picker/hue-picker.native.js.map +1 -0
  8. package/build/color-picker/index.native.js +3 -2
  9. package/build/color-picker/index.native.js.map +1 -1
  10. package/build/color-picker/saturation-picker.native.js +178 -0
  11. package/build/color-picker/saturation-picker.native.js.map +1 -0
  12. package/build/item-group/item/component.js +0 -1
  13. package/build/item-group/item/component.js.map +1 -1
  14. package/build/item-group/item-group/component.js +0 -1
  15. package/build/item-group/item-group/component.js.map +1 -1
  16. package/build/menu-item/index.js +6 -4
  17. package/build/menu-item/index.js.map +1 -1
  18. package/build/menu-item/types.js.map +1 -1
  19. package/build/mobile/link-settings/link-settings-navigation.native.js +1 -1
  20. package/build/mobile/link-settings/link-settings-navigation.native.js.map +1 -1
  21. package/build/navigation/index.js +0 -1
  22. package/build/navigation/index.js.map +1 -1
  23. package/build/navigator/navigator-provider/component.js +1 -2
  24. package/build/navigator/navigator-provider/component.js.map +1 -1
  25. package/build/palette-edit/styles.js +10 -10
  26. package/build/palette-edit/styles.js.map +1 -1
  27. package/build/popover/index.js +38 -75
  28. package/build/popover/index.js.map +1 -1
  29. package/build/popover/overlay-middlewares.js.map +1 -1
  30. package/build/popover/types.js.map +1 -1
  31. package/build/popover/utils.js +5 -50
  32. package/build/popover/utils.js.map +1 -1
  33. package/build/progress-bar/styles.js +6 -5
  34. package/build/progress-bar/styles.js.map +1 -1
  35. package/build/search-control/index.native.js +27 -24
  36. package/build/search-control/index.native.js.map +1 -1
  37. package/build/shortcut/index.js +13 -0
  38. package/build/shortcut/index.js.map +1 -1
  39. package/build/slot-fill/bubbles-virtually/slot-fill-context.js +3 -1
  40. package/build/slot-fill/bubbles-virtually/slot-fill-context.js.map +1 -1
  41. package/build/slot-fill/bubbles-virtually/slot.js +14 -8
  42. package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
  43. package/build/slot-fill/index.js +5 -0
  44. package/build/slot-fill/index.js.map +1 -1
  45. package/build/spinner/index.js +0 -1
  46. package/build/spinner/index.js.map +1 -1
  47. package/build/theme/index.js +0 -1
  48. package/build/theme/index.js.map +1 -1
  49. package/build/tools-panel/tools-panel/component.js +0 -1
  50. package/build/tools-panel/tools-panel/component.js.map +1 -1
  51. package/build/tools-panel/tools-panel-header/component.js +5 -1
  52. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  53. package/build/tree-select/index.js +0 -1
  54. package/build/tree-select/index.js.map +1 -1
  55. package/build/unit-control/index.js +0 -1
  56. package/build/unit-control/index.js.map +1 -1
  57. package/build/utils/hooks/use-cx.js +2 -1
  58. package/build/utils/hooks/use-cx.js.map +1 -1
  59. package/build/view/component.js +1 -2
  60. package/build/view/component.js.map +1 -1
  61. package/build-module/color-picker/hsv-color-picker.native.js +84 -0
  62. package/build-module/color-picker/hsv-color-picker.native.js.map +1 -0
  63. package/build-module/color-picker/hue-picker.native.js +185 -0
  64. package/build-module/color-picker/hue-picker.native.js.map +1 -0
  65. package/build-module/color-picker/index.native.js +2 -1
  66. package/build-module/color-picker/index.native.js.map +1 -1
  67. package/build-module/color-picker/saturation-picker.native.js +168 -0
  68. package/build-module/color-picker/saturation-picker.native.js.map +1 -0
  69. package/build-module/item-group/item/component.js +0 -1
  70. package/build-module/item-group/item/component.js.map +1 -1
  71. package/build-module/item-group/item-group/component.js +0 -1
  72. package/build-module/item-group/item-group/component.js.map +1 -1
  73. package/build-module/menu-item/index.js +4 -2
  74. package/build-module/menu-item/index.js.map +1 -1
  75. package/build-module/menu-item/types.js.map +1 -1
  76. package/build-module/mobile/link-settings/link-settings-navigation.native.js +1 -1
  77. package/build-module/mobile/link-settings/link-settings-navigation.native.js.map +1 -1
  78. package/build-module/navigation/index.js +0 -1
  79. package/build-module/navigation/index.js.map +1 -1
  80. package/build-module/navigator/navigator-provider/component.js +1 -2
  81. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  82. package/build-module/palette-edit/styles.js +10 -10
  83. package/build-module/palette-edit/styles.js.map +1 -1
  84. package/build-module/popover/index.js +42 -79
  85. package/build-module/popover/index.js.map +1 -1
  86. package/build-module/popover/overlay-middlewares.js.map +1 -1
  87. package/build-module/popover/types.js.map +1 -1
  88. package/build-module/popover/utils.js +4 -47
  89. package/build-module/popover/utils.js.map +1 -1
  90. package/build-module/progress-bar/styles.js +6 -5
  91. package/build-module/progress-bar/styles.js.map +1 -1
  92. package/build-module/search-control/index.native.js +28 -25
  93. package/build-module/search-control/index.native.js.map +1 -1
  94. package/build-module/shortcut/index.js +13 -0
  95. package/build-module/shortcut/index.js.map +1 -1
  96. package/build-module/slot-fill/bubbles-virtually/slot-fill-context.js +3 -1
  97. package/build-module/slot-fill/bubbles-virtually/slot-fill-context.js.map +1 -1
  98. package/build-module/slot-fill/bubbles-virtually/slot.js +14 -8
  99. package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
  100. package/build-module/slot-fill/index.js +6 -1
  101. package/build-module/slot-fill/index.js.map +1 -1
  102. package/build-module/spinner/index.js +0 -1
  103. package/build-module/spinner/index.js.map +1 -1
  104. package/build-module/theme/index.js +0 -1
  105. package/build-module/theme/index.js.map +1 -1
  106. package/build-module/tools-panel/tools-panel/component.js +0 -1
  107. package/build-module/tools-panel/tools-panel/component.js.map +1 -1
  108. package/build-module/tools-panel/tools-panel-header/component.js +5 -1
  109. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  110. package/build-module/tree-select/index.js +0 -1
  111. package/build-module/tree-select/index.js.map +1 -1
  112. package/build-module/unit-control/index.js +0 -1
  113. package/build-module/unit-control/index.js.map +1 -1
  114. package/build-module/utils/hooks/use-cx.js +2 -1
  115. package/build-module/utils/hooks/use-cx.js.map +1 -1
  116. package/build-module/view/component.js +1 -2
  117. package/build-module/view/component.js.map +1 -1
  118. package/build-types/alignment-matrix-control/stories/index.story.d.ts +2 -2
  119. package/build-types/alignment-matrix-control/stories/index.story.d.ts.map +1 -1
  120. package/build-types/angle-picker-control/stories/index.story.d.ts +2 -2
  121. package/build-types/angle-picker-control/stories/index.story.d.ts.map +1 -1
  122. package/build-types/animate/stories/index.story.d.ts +9 -9
  123. package/build-types/animate/stories/index.story.d.ts.map +1 -1
  124. package/build-types/base-control/stories/index.story.d.ts +4 -4
  125. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  126. package/build-types/border-box-control/stories/index.story.d.ts +2 -2
  127. package/build-types/border-box-control/stories/index.story.d.ts.map +1 -1
  128. package/build-types/border-control/stories/index.story.d.ts +2 -2
  129. package/build-types/border-control/stories/index.story.d.ts.map +1 -1
  130. package/build-types/button/stories/e2e/index.story.d.ts +3 -3
  131. package/build-types/button/stories/e2e/index.story.d.ts.map +1 -1
  132. package/build-types/button/stories/index.story.d.ts +10 -9
  133. package/build-types/button/stories/index.story.d.ts.map +1 -1
  134. package/build-types/button-group/stories/index.story.d.ts +3 -3
  135. package/build-types/button-group/stories/index.story.d.ts.map +1 -1
  136. package/build-types/card/stories/index.story.d.ts +2 -2
  137. package/build-types/card/stories/index.story.d.ts.map +1 -1
  138. package/build-types/checkbox-control/stories/index.story.d.ts +4 -4
  139. package/build-types/checkbox-control/stories/index.story.d.ts.map +1 -1
  140. package/build-types/circular-option-picker/stories/index.story.d.ts +2 -2
  141. package/build-types/circular-option-picker/stories/index.story.d.ts.map +1 -1
  142. package/build-types/color-indicator/stories/index.story.d.ts +3 -3
  143. package/build-types/color-indicator/stories/index.story.d.ts.map +1 -1
  144. package/build-types/color-palette/stories/index.story.d.ts +3 -3
  145. package/build-types/color-palette/stories/index.story.d.ts.map +1 -1
  146. package/build-types/color-palette/styles.d.ts +1 -1
  147. package/build-types/color-picker/stories/index.story.d.ts +2 -2
  148. package/build-types/color-picker/stories/index.story.d.ts.map +1 -1
  149. package/build-types/combobox-control/stories/index.story.d.ts +2 -2
  150. package/build-types/combobox-control/stories/index.story.d.ts.map +1 -1
  151. package/build-types/custom-gradient-picker/stories/index.story.d.ts +2 -2
  152. package/build-types/custom-gradient-picker/stories/index.story.d.ts.map +1 -1
  153. package/build-types/date-time/date/styles.d.ts +1 -1
  154. package/build-types/date-time/stories/date-time.story.d.ts +5 -5
  155. package/build-types/date-time/stories/date-time.story.d.ts.map +1 -1
  156. package/build-types/date-time/stories/date.story.d.ts +5 -5
  157. package/build-types/date-time/stories/date.story.d.ts.map +1 -1
  158. package/build-types/date-time/stories/time.story.d.ts +3 -3
  159. package/build-types/date-time/stories/time.story.d.ts.map +1 -1
  160. package/build-types/dimension-control/stories/index.story.d.ts.map +1 -1
  161. package/build-types/disabled/stories/index.story.d.ts +4 -4
  162. package/build-types/disabled/stories/index.story.d.ts.map +1 -1
  163. package/build-types/divider/stories/index.story.d.ts +5 -5
  164. package/build-types/divider/stories/index.story.d.ts.map +1 -1
  165. package/build-types/draggable/stories/index.story.d.ts +4 -4
  166. package/build-types/draggable/stories/index.story.d.ts.map +1 -1
  167. package/build-types/drop-zone/stories/index.story.d.ts +2 -2
  168. package/build-types/drop-zone/stories/index.story.d.ts.map +1 -1
  169. package/build-types/dropdown/stories/index.story.d.ts +6 -5
  170. package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
  171. package/build-types/dropdown-menu/stories/index.story.d.ts +2 -2
  172. package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
  173. package/build-types/dropdown-menu-v2/stories/index.story.d.ts +2 -2
  174. package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +1 -1
  175. package/build-types/duotone-picker/stories/duotone-picker.story.d.ts +2 -2
  176. package/build-types/duotone-picker/stories/duotone-picker.story.d.ts.map +1 -1
  177. package/build-types/duotone-picker/stories/duotone-swatch.story.d.ts +2 -2
  178. package/build-types/duotone-picker/stories/duotone-swatch.story.d.ts.map +1 -1
  179. package/build-types/elevation/stories/index.story.d.ts +5 -5
  180. package/build-types/elevation/stories/index.story.d.ts.map +1 -1
  181. package/build-types/external-link/stories/index.story.d.ts +3 -3
  182. package/build-types/external-link/stories/index.story.d.ts.map +1 -1
  183. package/build-types/flex/stories/index.story.d.ts +4 -4
  184. package/build-types/flex/stories/index.story.d.ts.map +1 -1
  185. package/build-types/focal-point-picker/stories/index.story.d.ts +2 -2
  186. package/build-types/focal-point-picker/stories/index.story.d.ts.map +1 -1
  187. package/build-types/font-size-picker/stories/e2e/index.story.d.ts +2 -2
  188. package/build-types/font-size-picker/stories/e2e/index.story.d.ts.map +1 -1
  189. package/build-types/font-size-picker/stories/index.story.d.ts +8 -8
  190. package/build-types/font-size-picker/stories/index.story.d.ts.map +1 -1
  191. package/build-types/form-file-upload/stories/index.story.d.ts +2 -2
  192. package/build-types/form-file-upload/stories/index.story.d.ts.map +1 -1
  193. package/build-types/form-toggle/stories/index.story.d.ts +3 -3
  194. package/build-types/form-toggle/stories/index.story.d.ts.map +1 -1
  195. package/build-types/form-token-field/stories/index.story.d.ts +7 -7
  196. package/build-types/form-token-field/stories/index.story.d.ts.map +1 -1
  197. package/build-types/gradient-picker/stories/index.story.d.ts +2 -2
  198. package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
  199. package/build-types/grid/stories/index.story.d.ts +3 -3
  200. package/build-types/grid/stories/index.story.d.ts.map +1 -1
  201. package/build-types/guide/stories/index.story.d.ts +2 -2
  202. package/build-types/guide/stories/index.story.d.ts.map +1 -1
  203. package/build-types/h-stack/stories/e2e/index.story.d.ts +3 -3
  204. package/build-types/h-stack/stories/e2e/index.story.d.ts.map +1 -1
  205. package/build-types/h-stack/stories/index.story.d.ts +3 -3
  206. package/build-types/h-stack/stories/index.story.d.ts.map +1 -1
  207. package/build-types/heading/stories/index.story.d.ts +3 -3
  208. package/build-types/heading/stories/index.story.d.ts.map +1 -1
  209. package/build-types/icon/stories/index.story.d.ts +4 -4
  210. package/build-types/icon/stories/index.story.d.ts.map +1 -1
  211. package/build-types/input-control/stories/index.story.d.ts +2 -2
  212. package/build-types/input-control/stories/index.story.d.ts.map +1 -1
  213. package/build-types/item-group/item/component.d.ts +0 -1
  214. package/build-types/item-group/item/component.d.ts.map +1 -1
  215. package/build-types/item-group/item-group/component.d.ts +0 -1
  216. package/build-types/item-group/item-group/component.d.ts.map +1 -1
  217. package/build-types/item-group/stories/index.story.d.ts +6 -6
  218. package/build-types/item-group/stories/index.story.d.ts.map +1 -1
  219. package/build-types/keyboard-shortcuts/stories/index.story.d.ts +2 -2
  220. package/build-types/keyboard-shortcuts/stories/index.story.d.ts.map +1 -1
  221. package/build-types/menu-group/stories/index.story.d.ts +3 -3
  222. package/build-types/menu-group/stories/index.story.d.ts.map +1 -1
  223. package/build-types/menu-item/index.d.ts +5 -58
  224. package/build-types/menu-item/index.d.ts.map +1 -1
  225. package/build-types/menu-item/stories/index.story.d.ts +74 -0
  226. package/build-types/menu-item/stories/index.story.d.ts.map +1 -0
  227. package/build-types/menu-item/types.d.ts +3 -2
  228. package/build-types/menu-item/types.d.ts.map +1 -1
  229. package/build-types/menu-items-choice/stories/index.story.d.ts +3 -3
  230. package/build-types/menu-items-choice/stories/index.story.d.ts.map +1 -1
  231. package/build-types/modal/stories/index.story.d.ts +4 -4
  232. package/build-types/modal/stories/index.story.d.ts.map +1 -1
  233. package/build-types/navigable-container/stories/navigable-menu.story.d.ts +3 -3
  234. package/build-types/navigable-container/stories/navigable-menu.story.d.ts.map +1 -1
  235. package/build-types/navigable-container/stories/tabbable-container.story.d.ts +3 -3
  236. package/build-types/navigable-container/stories/tabbable-container.story.d.ts.map +1 -1
  237. package/build-types/navigation/index.d.ts +0 -1
  238. package/build-types/navigation/index.d.ts.map +1 -1
  239. package/build-types/navigation/stories/index.story.d.ts +2 -2
  240. package/build-types/navigation/stories/index.story.d.ts.map +1 -1
  241. package/build-types/navigation/stories/utils/controlled-state.d.ts +2 -2
  242. package/build-types/navigation/stories/utils/controlled-state.d.ts.map +1 -1
  243. package/build-types/navigation/stories/utils/default.d.ts +2 -2
  244. package/build-types/navigation/stories/utils/default.d.ts.map +1 -1
  245. package/build-types/navigation/stories/utils/group.d.ts +2 -2
  246. package/build-types/navigation/stories/utils/group.d.ts.map +1 -1
  247. package/build-types/navigation/stories/utils/hide-if-empty.d.ts +2 -2
  248. package/build-types/navigation/stories/utils/hide-if-empty.d.ts.map +1 -1
  249. package/build-types/navigation/stories/utils/more-examples.d.ts +2 -2
  250. package/build-types/navigation/stories/utils/more-examples.d.ts.map +1 -1
  251. package/build-types/navigation/stories/utils/search.d.ts +2 -2
  252. package/build-types/navigation/stories/utils/search.d.ts.map +1 -1
  253. package/build-types/navigation/styles/navigation-styles.d.ts +1 -1
  254. package/build-types/navigator/navigator-provider/component.d.ts +0 -1
  255. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  256. package/build-types/navigator/stories/index.story.d.ts +5 -5
  257. package/build-types/navigator/stories/index.story.d.ts.map +1 -1
  258. package/build-types/notice/stories/index.story.d.ts +3 -3
  259. package/build-types/notice/stories/index.story.d.ts.map +1 -1
  260. package/build-types/number-control/stories/index.story.d.ts +2 -2
  261. package/build-types/number-control/stories/index.story.d.ts.map +1 -1
  262. package/build-types/palette-edit/stories/index.story.d.ts +2 -2
  263. package/build-types/palette-edit/stories/index.story.d.ts.map +1 -1
  264. package/build-types/palette-edit/styles.d.ts +1 -1
  265. package/build-types/palette-edit/styles.d.ts.map +1 -1
  266. package/build-types/panel/stories/index.story.d.ts +6 -6
  267. package/build-types/panel/stories/index.story.d.ts.map +1 -1
  268. package/build-types/placeholder/stories/index.story.d.ts +3 -3
  269. package/build-types/placeholder/stories/index.story.d.ts.map +1 -1
  270. package/build-types/popover/index.d.ts.map +1 -1
  271. package/build-types/popover/overlay-middlewares.d.ts +2 -2
  272. package/build-types/popover/overlay-middlewares.d.ts.map +1 -1
  273. package/build-types/popover/stories/index.story.d.ts +7 -7
  274. package/build-types/popover/stories/index.story.d.ts.map +1 -1
  275. package/build-types/popover/types.d.ts +6 -0
  276. package/build-types/popover/types.d.ts.map +1 -1
  277. package/build-types/popover/utils.d.ts +1 -21
  278. package/build-types/popover/utils.d.ts.map +1 -1
  279. package/build-types/progress-bar/stories/index.story.d.ts +3 -3
  280. package/build-types/progress-bar/stories/index.story.d.ts.map +1 -1
  281. package/build-types/progress-bar/styles.d.ts.map +1 -1
  282. package/build-types/query-controls/stories/index.story.d.ts +4 -4
  283. package/build-types/query-controls/stories/index.story.d.ts.map +1 -1
  284. package/build-types/radio-control/stories/index.story.d.ts +3 -3
  285. package/build-types/radio-control/stories/index.story.d.ts.map +1 -1
  286. package/build-types/range-control/stories/index.story.d.ts +9 -9
  287. package/build-types/range-control/stories/index.story.d.ts.map +1 -1
  288. package/build-types/resizable-box/stories/index.story.d.ts +2 -2
  289. package/build-types/resizable-box/stories/index.story.d.ts.map +1 -1
  290. package/build-types/responsive-wrapper/stories/index.story.d.ts +3 -3
  291. package/build-types/responsive-wrapper/stories/index.story.d.ts.map +1 -1
  292. package/build-types/sandbox/stories/index.story.d.ts +2 -2
  293. package/build-types/sandbox/stories/index.story.d.ts.map +1 -1
  294. package/build-types/scroll-lock/stories/index.story.d.ts +3 -3
  295. package/build-types/scroll-lock/stories/index.story.d.ts.map +1 -1
  296. package/build-types/scrollable/stories/index.story.d.ts +3 -3
  297. package/build-types/scrollable/stories/index.story.d.ts.map +1 -1
  298. package/build-types/search-control/stories/index.story.d.ts +2 -2
  299. package/build-types/search-control/stories/index.story.d.ts.map +1 -1
  300. package/build-types/select-control/stories/index.story.d.ts +2 -2
  301. package/build-types/select-control/stories/index.story.d.ts.map +1 -1
  302. package/build-types/shortcut/index.d.ts +13 -0
  303. package/build-types/shortcut/index.d.ts.map +1 -1
  304. package/build-types/shortcut/stories/index.story.d.ts +13 -0
  305. package/build-types/shortcut/stories/index.story.d.ts.map +1 -0
  306. package/build-types/slot-fill/bubbles-virtually/slot-fill-context.d.ts +1 -0
  307. package/build-types/slot-fill/bubbles-virtually/slot-fill-context.d.ts.map +1 -1
  308. package/build-types/slot-fill/bubbles-virtually/slot.d.ts +1 -6
  309. package/build-types/slot-fill/index.d.ts +1 -1
  310. package/build-types/slot-fill/index.d.ts.map +1 -1
  311. package/build-types/snackbar/stories/index.story.d.ts +7 -7
  312. package/build-types/snackbar/stories/index.story.d.ts.map +1 -1
  313. package/build-types/snackbar/stories/list.story.d.ts +3 -3
  314. package/build-types/snackbar/stories/list.story.d.ts.map +1 -1
  315. package/build-types/spacer/stories/index.story.d.ts +3 -3
  316. package/build-types/spacer/stories/index.story.d.ts.map +1 -1
  317. package/build-types/spinner/index.d.ts +0 -1
  318. package/build-types/spinner/index.d.ts.map +1 -1
  319. package/build-types/spinner/stories/index.story.d.ts +4 -4
  320. package/build-types/spinner/stories/index.story.d.ts.map +1 -1
  321. package/build-types/surface/stories/index.story.d.ts +3 -3
  322. package/build-types/surface/stories/index.story.d.ts.map +1 -1
  323. package/build-types/tab-panel/stories/index.story.d.ts +2 -2
  324. package/build-types/tab-panel/stories/index.story.d.ts.map +1 -1
  325. package/build-types/text-control/stories/index.story.d.ts +4 -4
  326. package/build-types/text-control/stories/index.story.d.ts.map +1 -1
  327. package/build-types/text-highlight/stories/index.story.d.ts +3 -3
  328. package/build-types/text-highlight/stories/index.story.d.ts.map +1 -1
  329. package/build-types/textarea-control/stories/index.story.d.ts +3 -3
  330. package/build-types/textarea-control/stories/index.story.d.ts.map +1 -1
  331. package/build-types/theme/index.d.ts +0 -1
  332. package/build-types/theme/index.d.ts.map +1 -1
  333. package/build-types/theme/stories/index.story.d.ts +4 -4
  334. package/build-types/theme/stories/index.story.d.ts.map +1 -1
  335. package/build-types/tip/stories/index.story.d.ts +3 -3
  336. package/build-types/tip/stories/index.story.d.ts.map +1 -1
  337. package/build-types/toggle-control/stories/index.story.d.ts +2 -2
  338. package/build-types/toggle-control/stories/index.story.d.ts.map +1 -1
  339. package/build-types/toggle-group-control/stories/index.story.d.ts +6 -6
  340. package/build-types/toggle-group-control/stories/index.story.d.ts.map +1 -1
  341. package/build-types/toolbar/stories/index.story.d.ts +2 -2
  342. package/build-types/toolbar/stories/index.story.d.ts.map +1 -1
  343. package/build-types/tools-panel/stories/index.story.d.ts +8 -8
  344. package/build-types/tools-panel/stories/index.story.d.ts.map +1 -1
  345. package/build-types/tools-panel/tools-panel/component.d.ts +0 -1
  346. package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
  347. package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
  348. package/build-types/tree-grid/stories/index.story.d.ts +2 -2
  349. package/build-types/tree-grid/stories/index.story.d.ts.map +1 -1
  350. package/build-types/tree-select/index.d.ts +0 -1
  351. package/build-types/tree-select/index.d.ts.map +1 -1
  352. package/build-types/tree-select/stories/index.story.d.ts +2 -2
  353. package/build-types/tree-select/stories/index.story.d.ts.map +1 -1
  354. package/build-types/truncate/stories/index.story.d.ts +4 -4
  355. package/build-types/truncate/stories/index.story.d.ts.map +1 -1
  356. package/build-types/unit-control/index.d.ts +0 -1
  357. package/build-types/unit-control/index.d.ts.map +1 -1
  358. package/build-types/unit-control/stories/index.story.d.ts +7 -7
  359. package/build-types/unit-control/stories/index.story.d.ts.map +1 -1
  360. package/build-types/utils/hooks/use-cx.d.ts +2 -1
  361. package/build-types/utils/hooks/use-cx.d.ts.map +1 -1
  362. package/build-types/v-stack/stories/e2e/index.story.d.ts +3 -3
  363. package/build-types/v-stack/stories/e2e/index.story.d.ts.map +1 -1
  364. package/build-types/v-stack/stories/index.story.d.ts +2 -2
  365. package/build-types/v-stack/stories/index.story.d.ts.map +1 -1
  366. package/build-types/view/component.d.ts +0 -1
  367. package/build-types/view/component.d.ts.map +1 -1
  368. package/build-types/view/stories/index.story.d.ts +3 -3
  369. package/build-types/view/stories/index.story.d.ts.map +1 -1
  370. package/build-types/visually-hidden/stories/index.story.d.ts +5 -5
  371. package/build-types/visually-hidden/stories/index.story.d.ts.map +1 -1
  372. package/build-types/z-stack/stories/index.story.d.ts +3 -3
  373. package/build-types/z-stack/stories/index.story.d.ts.map +1 -1
  374. package/package.json +20 -20
  375. package/src/alignment-matrix-control/stories/index.story.tsx +7 -3
  376. package/src/angle-picker-control/stories/index.story.tsx +3 -3
  377. package/src/animate/stories/index.story.tsx +12 -10
  378. package/src/base-control/stories/index.story.tsx +5 -9
  379. package/src/border-box-control/stories/index.story.tsx +5 -9
  380. package/src/border-control/stories/index.story.tsx +8 -14
  381. package/src/button/stories/e2e/index.story.tsx +3 -3
  382. package/src/button/stories/index.story.tsx +10 -10
  383. package/src/button-group/stories/index.story.tsx +4 -6
  384. package/src/card/stories/index.story.tsx +5 -5
  385. package/src/checkbox-control/stories/index.story.tsx +7 -6
  386. package/src/circular-option-picker/stories/index.story.tsx +16 -4
  387. package/src/color-indicator/stories/index.story.tsx +4 -6
  388. package/src/color-palette/stories/index.story.tsx +12 -21
  389. package/src/color-picker/hsv-color-picker.native.js +88 -0
  390. package/src/color-picker/hue-picker.native.js +194 -0
  391. package/src/color-picker/index.native.js +2 -1
  392. package/src/color-picker/saturation-picker.native.js +163 -0
  393. package/src/color-picker/stories/index.story.tsx +3 -3
  394. package/src/color-picker/style.native.scss +23 -0
  395. package/src/combobox-control/stories/index.story.tsx +3 -3
  396. package/src/custom-gradient-picker/stories/index.story.tsx +3 -3
  397. package/src/date-time/stories/date-time.story.tsx +8 -10
  398. package/src/date-time/stories/date.story.tsx +8 -9
  399. package/src/date-time/stories/time.story.tsx +4 -4
  400. package/src/dimension-control/stories/index.story.tsx +3 -3
  401. package/src/disabled/stories/index.story.tsx +4 -4
  402. package/src/divider/stories/index.story.tsx +6 -6
  403. package/src/draggable/stories/index.story.tsx +5 -7
  404. package/src/drop-zone/stories/index.story.tsx +3 -3
  405. package/src/dropdown/stories/index.story.tsx +8 -6
  406. package/src/dropdown-menu/stories/index.story.tsx +3 -3
  407. package/src/dropdown-menu-v2/stories/index.story.tsx +24 -10
  408. package/src/duotone-picker/stories/duotone-picker.story.tsx +3 -6
  409. package/src/duotone-picker/stories/duotone-swatch.story.tsx +3 -3
  410. package/src/elevation/stories/index.story.tsx +7 -7
  411. package/src/external-link/stories/index.story.tsx +4 -6
  412. package/src/flex/stories/index.story.tsx +6 -6
  413. package/src/focal-point-picker/stories/index.story.tsx +3 -3
  414. package/src/font-size-picker/stories/e2e/index.story.tsx +3 -3
  415. package/src/font-size-picker/stories/index.story.tsx +10 -10
  416. package/src/form-file-upload/stories/index.story.tsx +3 -3
  417. package/src/form-toggle/stories/index.story.tsx +4 -7
  418. package/src/form-token-field/stories/index.story.tsx +10 -11
  419. package/src/gradient-picker/stories/index.story.tsx +3 -3
  420. package/src/grid/stories/index.story.tsx +4 -4
  421. package/src/guide/stories/index.story.tsx +3 -3
  422. package/src/h-stack/stories/e2e/index.story.tsx +4 -4
  423. package/src/h-stack/stories/index.story.tsx +4 -4
  424. package/src/heading/stories/index.story.tsx +3 -3
  425. package/src/icon/stories/index.story.tsx +5 -5
  426. package/src/input-control/stories/index.story.tsx +5 -3
  427. package/src/item-group/item/component.tsx +0 -1
  428. package/src/item-group/item-group/component.tsx +0 -1
  429. package/src/item-group/stories/index.story.tsx +11 -12
  430. package/src/keyboard-shortcuts/stories/index.story.tsx +3 -3
  431. package/src/menu-group/stories/index.story.tsx +5 -5
  432. package/src/menu-item/README.md +1 -1
  433. package/src/menu-item/index.tsx +5 -2
  434. package/src/menu-item/stories/index.story.tsx +80 -0
  435. package/src/menu-item/types.ts +3 -2
  436. package/src/menu-items-choice/stories/index.story.tsx +4 -6
  437. package/src/mobile/link-settings/link-settings-navigation.native.js +1 -1
  438. package/src/modal/stories/index.story.tsx +5 -10
  439. package/src/navigable-container/stories/navigable-menu.story.tsx +3 -3
  440. package/src/navigable-container/stories/tabbable-container.story.tsx +3 -3
  441. package/src/navigation/index.tsx +0 -1
  442. package/src/navigation/stories/index.story.tsx +16 -2
  443. package/src/navigation/stories/utils/controlled-state.tsx +2 -2
  444. package/src/navigation/stories/utils/default.tsx +2 -2
  445. package/src/navigation/stories/utils/group.tsx +2 -2
  446. package/src/navigation/stories/utils/hide-if-empty.tsx +2 -2
  447. package/src/navigation/stories/utils/more-examples.tsx +2 -2
  448. package/src/navigation/stories/utils/search.tsx +2 -2
  449. package/src/navigator/navigator-provider/component.tsx +0 -1
  450. package/src/navigator/stories/index.story.tsx +9 -10
  451. package/src/notice/stories/index.story.tsx +6 -6
  452. package/src/number-control/stories/index.story.tsx +3 -3
  453. package/src/palette-edit/stories/index.story.tsx +3 -3
  454. package/src/palette-edit/styles.js +0 -1
  455. package/src/panel/stories/index.story.tsx +9 -11
  456. package/src/placeholder/stories/index.story.tsx +4 -6
  457. package/src/popover/README.md +2 -2
  458. package/src/popover/index.tsx +69 -103
  459. package/src/popover/overlay-middlewares.tsx +2 -2
  460. package/src/popover/stories/index.story.tsx +8 -10
  461. package/src/popover/test/index.tsx +15 -1
  462. package/src/popover/types.ts +6 -0
  463. package/src/popover/utils.ts +5 -56
  464. package/src/progress-bar/stories/index.story.tsx +4 -6
  465. package/src/progress-bar/styles.ts +4 -1
  466. package/src/query-controls/stories/index.story.tsx +5 -6
  467. package/src/radio-control/stories/index.story.tsx +4 -6
  468. package/src/radio-group/stories/index.story.js +1 -0
  469. package/src/range-control/stories/index.story.tsx +12 -18
  470. package/src/resizable-box/stories/index.story.tsx +3 -3
  471. package/src/responsive-wrapper/stories/index.story.tsx +4 -5
  472. package/src/sandbox/stories/index.story.tsx +3 -5
  473. package/src/scroll-lock/stories/index.story.tsx +3 -3
  474. package/src/scrollable/stories/index.story.tsx +4 -4
  475. package/src/search-control/index.native.js +39 -27
  476. package/src/search-control/stories/index.story.tsx +3 -3
  477. package/src/select-control/stories/index.story.tsx +3 -3
  478. package/src/shortcut/index.tsx +13 -0
  479. package/src/shortcut/stories/index.story.tsx +33 -0
  480. package/src/slot-fill/README.md +5 -5
  481. package/src/slot-fill/bubbles-virtually/slot-fill-context.js +3 -0
  482. package/src/slot-fill/bubbles-virtually/slot.js +17 -5
  483. package/src/slot-fill/index.js +6 -1
  484. package/src/slot-fill/stories/index.story.js +2 -0
  485. package/src/slot-fill/test/__snapshots__/slot.js.snap +12 -4
  486. package/src/snackbar/stories/index.story.tsx +10 -13
  487. package/src/snackbar/stories/list.story.tsx +3 -3
  488. package/src/spacer/stories/index.story.tsx +4 -4
  489. package/src/spinner/index.tsx +0 -1
  490. package/src/spinner/stories/index.story.tsx +5 -5
  491. package/src/surface/stories/index.story.tsx +4 -4
  492. package/src/tab-panel/stories/index.story.tsx +5 -13
  493. package/src/tab-panel/test/index.tsx +9 -25
  494. package/src/text-control/stories/index.story.tsx +7 -6
  495. package/src/text-highlight/stories/index.story.tsx +4 -6
  496. package/src/textarea-control/stories/index.story.tsx +4 -6
  497. package/src/theme/index.tsx +0 -1
  498. package/src/theme/stories/index.story.tsx +5 -5
  499. package/src/tip/stories/index.story.tsx +4 -4
  500. package/src/toggle-control/stories/index.story.tsx +3 -3
  501. package/src/toggle-group-control/stories/index.story.tsx +17 -11
  502. package/src/toolbar/stories/index.story.tsx +13 -3
  503. package/src/tools-panel/stories/index.story.tsx +17 -12
  504. package/src/tools-panel/tools-panel/component.tsx +0 -1
  505. package/src/tools-panel/tools-panel-header/component.tsx +3 -0
  506. package/src/tree-grid/stories/index.story.tsx +5 -3
  507. package/src/tree-select/index.tsx +0 -1
  508. package/src/tree-select/stories/index.story.tsx +3 -3
  509. package/src/truncate/stories/index.story.tsx +5 -7
  510. package/src/unit-control/index.tsx +0 -1
  511. package/src/unit-control/stories/index.story.tsx +10 -9
  512. package/src/utils/hooks/use-cx.ts +2 -1
  513. package/src/v-stack/stories/e2e/index.story.tsx +4 -4
  514. package/src/v-stack/stories/index.story.tsx +3 -3
  515. package/src/view/component.tsx +0 -1
  516. package/src/view/stories/index.story.tsx +4 -4
  517. package/src/visually-hidden/stories/index.story.tsx +7 -7
  518. package/src/z-stack/stories/index.story.tsx +4 -4
  519. package/tsconfig.tsbuildinfo +1 -1
  520. package/build/popover/limit-shift.js +0 -129
  521. package/build/popover/limit-shift.js.map +0 -1
  522. package/build-module/popover/limit-shift.js +0 -122
  523. package/build-module/popover/limit-shift.js.map +0 -1
  524. package/build-types/popover/limit-shift.d.ts +0 -87
  525. package/build-types/popover/limit-shift.d.ts.map +0 -1
  526. package/src/popover/limit-shift.ts +0 -205
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { ComponentMeta, ComponentStory } from '@storybook/react';
4
+ import type { Meta, StoryFn } from '@storybook/react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -16,9 +16,11 @@ import InputControl from '../../input-control';
16
16
  */
17
17
  import { wordpress } from '@wordpress/icons';
18
18
 
19
- const meta: ComponentMeta< typeof Panel > = {
19
+ const meta: Meta< typeof Panel > = {
20
20
  title: 'Components/Panel',
21
21
  component: Panel,
22
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
23
+ subcomponents: { PanelRow, PanelBody },
22
24
  argTypes: {
23
25
  children: { control: { type: null } },
24
26
  },
@@ -29,11 +31,9 @@ const meta: ComponentMeta< typeof Panel > = {
29
31
  };
30
32
  export default meta;
31
33
 
32
- const Template: ComponentStory< typeof Panel > = ( props ) => (
33
- <Panel { ...props } />
34
- );
34
+ const Template: StoryFn< typeof Panel > = ( props ) => <Panel { ...props } />;
35
35
 
36
- export const Default: ComponentStory< typeof Panel > = Template.bind( {} );
36
+ export const Default: StoryFn< typeof Panel > = Template.bind( {} );
37
37
  Default.args = {
38
38
  header: 'My panel',
39
39
  children: (
@@ -68,7 +68,7 @@ Default.args = {
68
68
  * `PanelRow` is a generic container for rows within a `PanelBody`.
69
69
  * It is a flex container with a top margin for spacing.
70
70
  */
71
- export const _PanelRow: ComponentStory< typeof Panel > = Template.bind( {} );
71
+ export const _PanelRow: StoryFn< typeof Panel > = Template.bind( {} );
72
72
  _PanelRow.args = {
73
73
  children: (
74
74
  <PanelBody title="My Profile">
@@ -85,9 +85,7 @@ _PanelRow.args = {
85
85
  ),
86
86
  };
87
87
 
88
- export const DisabledSection: ComponentStory< typeof Panel > = Template.bind(
89
- {}
90
- );
88
+ export const DisabledSection: StoryFn< typeof Panel > = Template.bind( {} );
91
89
  DisabledSection.args = {
92
90
  ...Default.args,
93
91
  children: (
@@ -99,7 +97,7 @@ DisabledSection.args = {
99
97
  ),
100
98
  };
101
99
 
102
- export const WithIcon: ComponentStory< typeof Panel > = Template.bind( {} );
100
+ export const WithIcon: StoryFn< typeof Panel > = Template.bind( {} );
103
101
  WithIcon.args = {
104
102
  ...Default.args,
105
103
  children: (
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { ComponentMeta, ComponentStory } from '@storybook/react';
4
+ import type { Meta, StoryFn } from '@storybook/react';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -17,7 +17,7 @@ import TextControl from '../../text-control';
17
17
 
18
18
  const ICONS = { starEmpty, starFilled, styles, wordpress };
19
19
 
20
- const meta: ComponentMeta< typeof Placeholder > = {
20
+ const meta: Meta< typeof Placeholder > = {
21
21
  component: Placeholder,
22
22
  title: 'Components/Placeholder',
23
23
  argTypes: {
@@ -37,7 +37,7 @@ const meta: ComponentMeta< typeof Placeholder > = {
37
37
  };
38
38
  export default meta;
39
39
 
40
- const Template: ComponentStory< typeof Placeholder > = ( args ) => {
40
+ const Template: StoryFn< typeof Placeholder > = ( args ) => {
41
41
  const [ value, setValue ] = useState( '' );
42
42
 
43
43
  return (
@@ -55,9 +55,7 @@ const Template: ComponentStory< typeof Placeholder > = ( args ) => {
55
55
  );
56
56
  };
57
57
 
58
- export const Default: ComponentStory< typeof Placeholder > = Template.bind(
59
- {}
60
- );
58
+ export const Default: StoryFn< typeof Placeholder > = Template.bind( {} );
61
59
  Default.args = {
62
60
  icon: 'wordpress',
63
61
  label: 'My Placeholder Label',
@@ -6,7 +6,7 @@ The behavior of the popover when it exceeds the viewport's edges can be controll
6
6
 
7
7
  ## Usage
8
8
 
9
- Render a Popover within the parent to which it should anchor.
9
+ Render a Popover adjacent to its container.
10
10
 
11
11
  If a Popover is returned by your component, it will be shown. To hide the popover, simply omit it from your component's render value.
12
12
 
@@ -60,7 +60,7 @@ const MyPopover = () => {
60
60
  };
61
61
  ```
62
62
 
63
- If you want Popover elements to render to a specific location on the page to allow style cascade to take effect, you must render a `Popover.Slot` further up the element tree:
63
+ By default Popovers render at the end of the body of your document. If you want Popover elements to render to a specific location on the page, you must render a `Popover.Slot` further up the element tree:
64
64
 
65
65
  ```jsx
66
66
  import { render } from '@wordpress/element';
@@ -3,11 +3,11 @@
3
3
  */
4
4
  import type { ForwardedRef, SyntheticEvent, RefCallback } from 'react';
5
5
  import classnames from 'classnames';
6
- import type { Middleware, MiddlewareArguments } from '@floating-ui/react-dom';
7
6
  import {
8
7
  useFloating,
9
8
  flip as flipMiddleware,
10
9
  shift as shiftMiddleware,
10
+ limitShift,
11
11
  autoUpdate,
12
12
  arrow,
13
13
  offset as offsetMiddleware,
@@ -30,6 +30,7 @@ import {
30
30
  useMemo,
31
31
  useState,
32
32
  useCallback,
33
+ createPortal,
33
34
  } from '@wordpress/element';
34
35
  import {
35
36
  useViewportMatch,
@@ -49,8 +50,6 @@ import ScrollLock from '../scroll-lock';
49
50
  import { Slot, Fill, useSlot } from '../slot-fill';
50
51
  import {
51
52
  computePopoverPosition,
52
- getFrameOffset,
53
- getFrameScale,
54
53
  positionToPlacement,
55
54
  placementToMotionAnimationProps,
56
55
  getReferenceOwnerDocument,
@@ -63,7 +62,6 @@ import type {
63
62
  PopoverAnchorRefReference,
64
63
  PopoverAnchorRefTopBottom,
65
64
  } from './types';
66
- import { limitShift as customLimitShift } from './limit-shift';
67
65
  import { overlayMiddlewares } from './overlay-middlewares';
68
66
 
69
67
  /**
@@ -139,6 +137,20 @@ const AnimatedWrapper = forwardRef(
139
137
 
140
138
  const slotNameContext = createContext< string | undefined >( undefined );
141
139
 
140
+ const fallbackContainerClassname = 'components-popover__fallback-container';
141
+ const getPopoverFallbackContainer = () => {
142
+ let container = document.body.querySelector(
143
+ '.' + fallbackContainerClassname
144
+ );
145
+ if ( ! container ) {
146
+ container = document.createElement( 'div' );
147
+ container.className = fallbackContainerClassname;
148
+ document.body.append( container );
149
+ }
150
+
151
+ return container;
152
+ };
153
+
142
154
  const UnforwardedPopover = (
143
155
  props: Omit<
144
156
  WordPressComponentProps< PopoverProps, 'div', false >,
@@ -167,6 +179,7 @@ const UnforwardedPopover = (
167
179
  flip = true,
168
180
  resize = true,
169
181
  shift = false,
182
+ inline = false,
170
183
  variant,
171
184
 
172
185
  // Deprecated props
@@ -246,69 +259,34 @@ const UnforwardedPopover = (
246
259
  ? positionToPlacement( position )
247
260
  : placementProp;
248
261
 
249
- /**
250
- * Offsets the position of the popover when the anchor is inside an iframe.
251
- *
252
- * Store the offset in a ref, due to constraints with floating-ui:
253
- * https://floating-ui.com/docs/react-dom#variables-inside-middleware-functions.
254
- */
255
- const frameOffsetRef = useRef( getFrameOffset( referenceOwnerDocument ) );
256
-
257
262
  const middleware = [
258
263
  ...( placementProp === 'overlay' ? overlayMiddlewares() : [] ),
259
- // Custom middleware which adjusts the popover's position by taking into
260
- // account the offset of the anchor's iframe (if any) compared to the page.
261
- {
262
- name: 'frameOffset',
263
- fn( { x, y }: MiddlewareArguments ) {
264
- if ( ! frameOffsetRef.current ) {
265
- return {
266
- x,
267
- y,
268
- };
269
- }
270
-
271
- return {
272
- x: x + frameOffsetRef.current.x,
273
- y: y + frameOffsetRef.current.y,
274
- data: {
275
- // This will be used in the customLimitShift() function.
276
- amount: frameOffsetRef.current,
277
- },
278
- };
279
- },
280
- },
281
264
  offsetMiddleware( offsetProp ),
282
- computedFlipProp ? flipMiddleware() : undefined,
283
- computedResizeProp
284
- ? size( {
285
- apply( sizeProps ) {
286
- const { firstElementChild } =
287
- refs.floating.current ?? {};
288
-
289
- // Only HTMLElement instances have the `style` property.
290
- if ( ! ( firstElementChild instanceof HTMLElement ) )
291
- return;
292
-
293
- // Reduce the height of the popover to the available space.
294
- Object.assign( firstElementChild.style, {
295
- maxHeight: `${ sizeProps.availableHeight }px`,
296
- overflow: 'auto',
297
- } );
298
- },
299
- } )
300
- : undefined,
301
- shift
302
- ? shiftMiddleware( {
303
- crossAxis: true,
304
- limiter: customLimitShift(),
305
- padding: 1, // Necessary to avoid flickering at the edge of the viewport.
306
- } )
307
- : undefined,
265
+ computedFlipProp && flipMiddleware(),
266
+ computedResizeProp &&
267
+ size( {
268
+ apply( sizeProps ) {
269
+ const { firstElementChild } = refs.floating.current ?? {};
270
+
271
+ // Only HTMLElement instances have the `style` property.
272
+ if ( ! ( firstElementChild instanceof HTMLElement ) )
273
+ return;
274
+
275
+ // Reduce the height of the popover to the available space.
276
+ Object.assign( firstElementChild.style, {
277
+ maxHeight: `${ sizeProps.availableHeight }px`,
278
+ overflow: 'auto',
279
+ } );
280
+ },
281
+ } ),
282
+ shift &&
283
+ shiftMiddleware( {
284
+ crossAxis: true,
285
+ limiter: limitShift(),
286
+ padding: 1, // Necessary to avoid flickering at the edge of the viewport.
287
+ } ),
308
288
  arrow( { element: arrowRef } ),
309
- ].filter(
310
- ( m: Middleware | undefined ): m is Middleware => m !== undefined
311
- );
289
+ ];
312
290
  const slotName = useContext( slotNameContext ) || __unstableSlotName;
313
291
  const slot = useSlot( slotName );
314
292
 
@@ -337,10 +315,6 @@ const UnforwardedPopover = (
337
315
  // Positioning coordinates
338
316
  x,
339
317
  y,
340
- // Callback refs (not regular refs). This allows the position to be updated.
341
- // when either elements change.
342
- reference: referenceCallbackRef,
343
- floating,
344
318
  // Object with "regular" refs to both "reference" and "floating"
345
319
  refs,
346
320
  // Type of CSS position property to use (absolute or fixed)
@@ -356,6 +330,7 @@ const UnforwardedPopover = (
356
330
  middleware,
357
331
  whileElementsMounted: ( referenceParam, floatingParam, updateParam ) =>
358
332
  autoUpdate( referenceParam, floatingParam, updateParam, {
333
+ layoutShift: false,
359
334
  animationFrame: true,
360
335
  } ),
361
336
  } );
@@ -390,17 +365,16 @@ const UnforwardedPopover = (
390
365
  fallbackReferenceElement,
391
366
  fallbackDocument: document,
392
367
  } );
393
- const scale = getFrameScale( resultingReferenceOwnerDoc );
368
+
394
369
  const resultingReferenceElement = getReferenceElement( {
395
370
  anchor,
396
371
  anchorRef,
397
372
  anchorRect,
398
373
  getAnchorRect,
399
374
  fallbackReferenceElement,
400
- scale,
401
375
  } );
402
376
 
403
- referenceCallbackRef( resultingReferenceElement );
377
+ refs.setReference( resultingReferenceElement );
404
378
 
405
379
  setReferenceOwnerDocument( resultingReferenceOwnerDoc );
406
380
  }, [
@@ -413,23 +387,17 @@ const UnforwardedPopover = (
413
387
  anchorRect,
414
388
  getAnchorRect,
415
389
  fallbackReferenceElement,
416
- referenceCallbackRef,
390
+ refs,
417
391
  ] );
418
392
 
419
393
  // If the reference element is in a different ownerDocument (e.g. iFrame),
420
394
  // we need to manually update the floating's position as the reference's owner
421
- // document scrolls. Also update the frame offset if the view resizes.
395
+ // document scrolls.
422
396
  useLayoutEffect( () => {
423
397
  if (
424
- // Reference and root documents are the same.
425
- referenceOwnerDocument === document ||
426
- // Reference and floating are in the same document.
427
- referenceOwnerDocument === refs.floating.current?.ownerDocument ||
428
- // The reference's document has no view (i.e. window)
429
- // or frame element (ie. it's not an iframe).
430
- ! referenceOwnerDocument?.defaultView?.frameElement
398
+ ! referenceOwnerDocument ||
399
+ ! referenceOwnerDocument.defaultView
431
400
  ) {
432
- frameOffsetRef.current = undefined;
433
401
  return;
434
402
  }
435
403
 
@@ -440,23 +408,17 @@ const UnforwardedPopover = (
440
408
  ? getScrollContainer( frameElement )
441
409
  : null;
442
410
 
443
- const updateFrameOffset = () => {
444
- frameOffsetRef.current = getFrameOffset( referenceOwnerDocument );
445
- update();
446
- };
447
- defaultView.addEventListener( 'resize', updateFrameOffset );
448
- scrollContainer?.addEventListener( 'scroll', updateFrameOffset );
449
-
450
- updateFrameOffset();
411
+ defaultView.addEventListener( 'resize', update );
412
+ scrollContainer?.addEventListener( 'scroll', update );
451
413
 
452
414
  return () => {
453
- defaultView.removeEventListener( 'resize', updateFrameOffset );
454
- scrollContainer?.removeEventListener( 'scroll', updateFrameOffset );
415
+ defaultView.removeEventListener( 'resize', update );
416
+ scrollContainer?.removeEventListener( 'scroll', update );
455
417
  };
456
- }, [ referenceOwnerDocument, update, refs.floating ] );
418
+ }, [ referenceOwnerDocument, update ] );
457
419
 
458
420
  const mergedFloatingRef = useMergeRefs( [
459
- floating,
421
+ refs.setFloating,
460
422
  dialogRef,
461
423
  forwardedRef,
462
424
  ] );
@@ -527,18 +489,12 @@ const UnforwardedPopover = (
527
489
  left:
528
490
  typeof arrowData?.x !== 'undefined' &&
529
491
  Number.isFinite( arrowData.x )
530
- ? `${
531
- arrowData.x +
532
- ( frameOffsetRef.current?.x ?? 0 )
533
- }px`
492
+ ? `${ arrowData.x }px`
534
493
  : '',
535
494
  top:
536
495
  typeof arrowData?.y !== 'undefined' &&
537
496
  Number.isFinite( arrowData.y )
538
- ? `${
539
- arrowData.y +
540
- ( frameOffsetRef.current?.y ?? 0 )
541
- }px`
497
+ ? `${ arrowData.y }px`
542
498
  : '',
543
499
  } }
544
500
  >
@@ -548,15 +504,25 @@ const UnforwardedPopover = (
548
504
  </AnimatedWrapper>
549
505
  );
550
506
 
551
- if ( slot.ref ) {
507
+ const shouldRenderWithinSlot = slot.ref && ! inline;
508
+ const hasAnchor = anchorRef || anchorRect || anchor;
509
+
510
+ if ( shouldRenderWithinSlot ) {
552
511
  content = <Fill name={ slotName }>{ content }</Fill>;
512
+ } else if ( ! inline ) {
513
+ content = createPortal( content, getPopoverFallbackContainer() );
553
514
  }
554
515
 
555
- if ( anchorRef || anchorRect || anchor ) {
516
+ if ( hasAnchor ) {
556
517
  return content;
557
518
  }
558
519
 
559
- return <span ref={ anchorRefFallback }>{ content }</span>;
520
+ return (
521
+ <>
522
+ <span ref={ anchorRefFallback } />
523
+ { content }
524
+ </>
525
+ );
560
526
  };
561
527
 
562
528
  /**
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { MiddlewareArguments } from '@floating-ui/react-dom';
4
+ import type { MiddlewareState } from '@floating-ui/react-dom';
5
5
  import { size } from '@floating-ui/react-dom';
6
6
 
7
7
  export function overlayMiddlewares() {
8
8
  return [
9
9
  {
10
10
  name: 'overlay',
11
- fn( { rects }: MiddlewareArguments ) {
11
+ fn( { rects }: MiddlewareState ) {
12
12
  return rects.reference;
13
13
  },
14
14
  },
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { ComponentStory, ComponentMeta } from '@storybook/react';
4
+ import type { StoryFn, Meta } from '@storybook/react';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -34,7 +34,7 @@ const AVAILABLE_PLACEMENTS: PopoverProps[ 'placement' ][] = [
34
34
  'overlay',
35
35
  ];
36
36
 
37
- const meta: ComponentMeta< typeof Popover > = {
37
+ const meta: Meta< typeof Popover > = {
38
38
  title: 'Components/Popover',
39
39
  component: Popover,
40
40
  argTypes: {
@@ -81,7 +81,7 @@ const PopoverWithAnchor = ( args: PopoverProps ) => {
81
81
  );
82
82
  };
83
83
 
84
- const Template: ComponentStory< typeof Popover > = ( args ) => {
84
+ const Template: StoryFn< typeof Popover > = ( args ) => {
85
85
  const [ isVisible, setIsVisible ] = useState( false );
86
86
  const toggleVisible = () => {
87
87
  setIsVisible( ( state ) => ! state );
@@ -116,7 +116,7 @@ const Template: ComponentStory< typeof Popover > = ( args ) => {
116
116
  );
117
117
  };
118
118
 
119
- export const Default: ComponentStory< typeof Popover > = Template.bind( {} );
119
+ export const Default: StoryFn< typeof Popover > = Template.bind( {} );
120
120
  Default.args = {
121
121
  children: (
122
122
  <div style={ { width: '280px', whiteSpace: 'normal' } }>
@@ -128,7 +128,7 @@ Default.args = {
128
128
  ),
129
129
  };
130
130
 
131
- export const Unstyled: ComponentStory< typeof Popover > = Template.bind( {} );
131
+ export const Unstyled: StoryFn< typeof Popover > = Template.bind( {} );
132
132
  Unstyled.args = {
133
133
  children: (
134
134
  <div style={ { width: '280px', whiteSpace: 'normal' } }>
@@ -141,7 +141,7 @@ Unstyled.args = {
141
141
  variant: 'unstyled',
142
142
  };
143
143
 
144
- export const AllPlacements: ComponentStory< typeof Popover > = ( {
144
+ export const AllPlacements: StoryFn< typeof Popover > = ( {
145
145
  children,
146
146
  ...args
147
147
  } ) => (
@@ -194,7 +194,7 @@ AllPlacements.args = {
194
194
  flip: false,
195
195
  };
196
196
 
197
- export const DynamicHeight: ComponentStory< typeof Popover > = ( {
197
+ export const DynamicHeight: StoryFn< typeof Popover > = ( {
198
198
  children,
199
199
  ...args
200
200
  } ) => {
@@ -246,9 +246,7 @@ DynamicHeight.args = {
246
246
  children: 'Content with dynamic height',
247
247
  };
248
248
 
249
- export const WithSlotOutsideIframe: ComponentStory< typeof Popover > = (
250
- args
251
- ) => {
249
+ export const WithSlotOutsideIframe: StoryFn< typeof Popover > = ( args ) => {
252
250
  return <PopoverInsideIframeRenderedInExternalSlot { ...args } />;
253
251
  };
254
252
  WithSlotOutsideIframe.args = {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen, waitFor } from '@testing-library/react';
4
+ import { render, screen, waitFor, getByText } from '@testing-library/react';
5
5
  import type { CSSProperties } from 'react';
6
6
 
7
7
  /**
@@ -112,6 +112,20 @@ describe( 'Popover', () => {
112
112
  expect( screen.getByRole( 'tooltip' ) ).toBeVisible()
113
113
  );
114
114
  } );
115
+
116
+ it( 'should render inline regardless of slot name', async () => {
117
+ const { container } = render(
118
+ <Popover inline __unstableSlotName="Popover">
119
+ Hello
120
+ </Popover>
121
+ );
122
+
123
+ await waitFor( () =>
124
+ // We want to explicitly check if it's within the container.
125
+ // eslint-disable-next-line testing-library/prefer-screen-queries
126
+ expect( getByText( container, 'Hello' ) ).toBeVisible()
127
+ );
128
+ } );
115
129
  } );
116
130
 
117
131
  describe( 'anchor', () => {
@@ -150,6 +150,12 @@ export type PopoverProps = {
150
150
  * @default undefined
151
151
  */
152
152
  variant?: 'unstyled' | 'toolbar';
153
+ /**
154
+ * Whether to render the popover inline or within the slot.
155
+ *
156
+ * @default false
157
+ */
158
+ inline?: boolean;
153
159
  // Deprecated props
154
160
  /**
155
161
  * Prevent the popover from flipping and resizing when meeting the viewport
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line no-restricted-imports
5
5
  import type { MotionProps } from 'framer-motion';
6
- import type { ReferenceType } from '@floating-ui/react-dom';
6
+ import type { ReferenceType, VirtualElement } from '@floating-ui/react-dom';
7
7
 
8
8
  /**
9
9
  * Internal dependencies
@@ -139,42 +139,6 @@ export const placementToMotionAnimationProps = (
139
139
  };
140
140
  };
141
141
 
142
- /**
143
- * Returns the offset of a document's frame element.
144
- *
145
- * @param document The iframe's owner document.
146
- *
147
- * @return The offset of the document's frame element, or undefined if the
148
- * document has no frame element.
149
- */
150
- export const getFrameOffset = (
151
- document?: Document
152
- ): { x: number; y: number } | undefined => {
153
- const frameElement = document?.defaultView?.frameElement;
154
- if ( ! frameElement ) {
155
- return;
156
- }
157
- const iframeRect = frameElement.getBoundingClientRect();
158
- return { x: iframeRect.left, y: iframeRect.top };
159
- };
160
-
161
- export const getFrameScale = (
162
- document?: Document
163
- ): {
164
- x: number;
165
- y: number;
166
- } => {
167
- const frameElement = document?.defaultView?.frameElement as HTMLElement;
168
- if ( ! frameElement ) {
169
- return { x: 1, y: 1 };
170
- }
171
- const rect = frameElement.getBoundingClientRect();
172
- return {
173
- x: rect.width / frameElement.offsetWidth,
174
- y: rect.height / frameElement.offsetHeight,
175
- };
176
- };
177
-
178
142
  export const getReferenceOwnerDocument = ( {
179
143
  anchor,
180
144
  anchorRef,
@@ -197,7 +161,10 @@ export const getReferenceOwnerDocument = ( {
197
161
  // with the `getBoundingClientRect()` function (like real elements).
198
162
  // See https://floating-ui.com/docs/virtual-elements for more info.
199
163
  let resultingReferenceOwnerDoc;
200
- if ( anchor ) {
164
+ if ( ( anchor as VirtualElement )?.contextElement ) {
165
+ resultingReferenceOwnerDoc = ( anchor as VirtualElement ).contextElement
166
+ ?.ownerDocument;
167
+ } else if ( anchor ) {
201
168
  resultingReferenceOwnerDoc = anchor.ownerDocument;
202
169
  } else if ( ( anchorRef as PopoverAnchorRefTopBottom | undefined )?.top ) {
203
170
  resultingReferenceOwnerDoc = ( anchorRef as PopoverAnchorRefTopBottom )
@@ -231,13 +198,11 @@ export const getReferenceElement = ( {
231
198
  anchorRect,
232
199
  getAnchorRect,
233
200
  fallbackReferenceElement,
234
- scale,
235
201
  }: Pick<
236
202
  PopoverProps,
237
203
  'anchorRef' | 'anchorRect' | 'getAnchorRect' | 'anchor'
238
204
  > & {
239
205
  fallbackReferenceElement: Element | null;
240
- scale: { x: number; y: number };
241
206
  } ): ReferenceType | null => {
242
207
  let referenceElement = null;
243
208
 
@@ -299,22 +264,6 @@ export const getReferenceElement = ( {
299
264
  referenceElement = fallbackReferenceElement.parentElement;
300
265
  }
301
266
 
302
- if ( referenceElement && ( scale.x !== 1 || scale.y !== 1 ) ) {
303
- // If the popover is inside an iframe, the coordinates of the
304
- // reference element need to be scaled to match the iframe's scale.
305
- const rect = referenceElement.getBoundingClientRect();
306
- referenceElement = {
307
- getBoundingClientRect() {
308
- return new window.DOMRect(
309
- rect.x * scale.x,
310
- rect.y * scale.y,
311
- rect.width * scale.x,
312
- rect.height * scale.y
313
- );
314
- },
315
- };
316
- }
317
-
318
267
  // Convert any `undefined` value to `null`.
319
268
  return referenceElement ?? null;
320
269
  };
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { ComponentMeta, ComponentStory } from '@storybook/react';
4
+ import type { Meta, StoryFn } from '@storybook/react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
9
  import { ProgressBar } from '..';
10
10
 
11
- const meta: ComponentMeta< typeof ProgressBar > = {
11
+ const meta: Meta< typeof ProgressBar > = {
12
12
  component: ProgressBar,
13
13
  title: 'Components (Experimental)/ProgressBar',
14
14
  argTypes: {
@@ -23,11 +23,9 @@ const meta: ComponentMeta< typeof ProgressBar > = {
23
23
  };
24
24
  export default meta;
25
25
 
26
- const Template: ComponentStory< typeof ProgressBar > = ( { ...args } ) => {
26
+ const Template: StoryFn< typeof ProgressBar > = ( { ...args } ) => {
27
27
  return <ProgressBar { ...args } />;
28
28
  };
29
29
 
30
- export const Default: ComponentStory< typeof ProgressBar > = Template.bind(
31
- {}
32
- );
30
+ export const Default: StoryFn< typeof ProgressBar > = Template.bind( {} );
33
31
  Default.args = {};