@wordpress/components 28.13.0 → 28.14.1-next.cd6172eb0.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 (371) hide show
  1. package/CHANGELOG.md +43 -1
  2. package/build/angle-picker-control/index.js +1 -1
  3. package/build/angle-picker-control/index.js.map +1 -1
  4. package/build/autocomplete/index.js +0 -1
  5. package/build/autocomplete/index.js.map +1 -1
  6. package/build/border-box-control/border-box-control-split-controls/component.js +1 -1
  7. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  8. package/build/border-control/border-control/component.js +2 -0
  9. package/build/border-control/border-control/component.js.map +1 -1
  10. package/build/box-control/all-input-control.js +1 -0
  11. package/build/box-control/all-input-control.js.map +1 -1
  12. package/build/box-control/axial-input-controls.js +1 -0
  13. package/build/box-control/axial-input-controls.js.map +1 -1
  14. package/build/box-control/index.js +9 -2
  15. package/build/box-control/index.js.map +1 -1
  16. package/build/box-control/input-controls.js +1 -0
  17. package/build/box-control/input-controls.js.map +1 -1
  18. package/build/box-control/types.js.map +1 -1
  19. package/build/clipboard-button/index.js +5 -3
  20. package/build/clipboard-button/index.js.map +1 -1
  21. package/build/color-palette/index.native.js +0 -1
  22. package/build/color-palette/index.native.js.map +1 -1
  23. package/build/color-picker/input-with-slider.js +2 -2
  24. package/build/color-picker/input-with-slider.js.map +1 -1
  25. package/build/composite/item.js +0 -9
  26. package/build/composite/item.js.map +1 -1
  27. package/build/context/context-connect.js +0 -1
  28. package/build/context/context-connect.js.map +1 -1
  29. package/build/custom-gradient-picker/index.js +2 -0
  30. package/build/custom-gradient-picker/index.js.map +1 -1
  31. package/build/custom-gradient-picker/types.js.map +1 -1
  32. package/build/custom-select-control/index.js +8 -0
  33. package/build/custom-select-control/index.js.map +1 -1
  34. package/build/custom-select-control/types.js.map +1 -1
  35. package/build/drop-zone/index.js +19 -13
  36. package/build/drop-zone/index.js.map +1 -1
  37. package/build/drop-zone/types.js.map +1 -1
  38. package/build/dropdown-menu/index.js +1 -0
  39. package/build/dropdown-menu/index.js.map +1 -1
  40. package/build/duotone-picker/color-list-picker/index.js +9 -14
  41. package/build/duotone-picker/color-list-picker/index.js.map +1 -1
  42. package/build/external-link/index.js +0 -1
  43. package/build/external-link/index.js.map +1 -1
  44. package/build/font-size-picker/font-size-picker-select.js +1 -0
  45. package/build/font-size-picker/font-size-picker-select.js.map +1 -1
  46. package/build/font-size-picker/index.js +1 -0
  47. package/build/font-size-picker/index.js.map +1 -1
  48. package/build/form-file-upload/index.js +11 -1
  49. package/build/form-file-upload/index.js.map +1 -1
  50. package/build/form-file-upload/types.js.map +1 -1
  51. package/build/form-token-field/index.js +6 -1
  52. package/build/form-token-field/index.js.map +1 -1
  53. package/build/gradient-picker/index.js +2 -0
  54. package/build/gradient-picker/index.js.map +1 -1
  55. package/build/gradient-picker/types.js.map +1 -1
  56. package/build/menu/checkbox-item.js +5 -9
  57. package/build/menu/checkbox-item.js.map +1 -1
  58. package/build/menu/group-label.js +4 -1
  59. package/build/menu/group-label.js.map +1 -1
  60. package/build/menu/group.js +4 -1
  61. package/build/menu/group.js.map +1 -1
  62. package/build/menu/item-help-text.js +5 -0
  63. package/build/menu/item-help-text.js.map +1 -1
  64. package/build/menu/item-label.js +5 -0
  65. package/build/menu/item-label.js.map +1 -1
  66. package/build/menu/item.js +4 -8
  67. package/build/menu/item.js.map +1 -1
  68. package/build/menu/radio-item.js +5 -9
  69. package/build/menu/radio-item.js.map +1 -1
  70. package/build/menu/separator.js +5 -2
  71. package/build/menu/separator.js.map +1 -1
  72. package/build/modal/aria-helper.js +0 -1
  73. package/build/modal/aria-helper.js.map +1 -1
  74. package/build/modal/index.js +0 -1
  75. package/build/modal/index.js.map +1 -1
  76. package/build/number-control/index.js +8 -0
  77. package/build/number-control/index.js.map +1 -1
  78. package/build/number-control/types.js.map +1 -1
  79. package/build/range-control/index.js +2 -1
  80. package/build/range-control/index.js.map +1 -1
  81. package/build/resizable-box/index.js +9 -1
  82. package/build/resizable-box/index.js.map +1 -1
  83. package/build/slot-fill/bubbles-virtually/fill.js +8 -12
  84. package/build/slot-fill/bubbles-virtually/fill.js.map +1 -1
  85. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js +6 -10
  86. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  87. package/build/slot-fill/bubbles-virtually/slot.js +4 -10
  88. package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
  89. package/build/slot-fill/types.js.map +1 -1
  90. package/build/style-provider/index.js +0 -1
  91. package/build/style-provider/index.js.map +1 -1
  92. package/build/tabs/tab.js +0 -17
  93. package/build/tabs/tab.js.map +1 -1
  94. package/build/toolbar/toolbar-button/index.js +2 -0
  95. package/build/toolbar/toolbar-button/index.js.map +1 -1
  96. package/build/tools-panel/tools-panel/component.js +2 -0
  97. package/build/tools-panel/tools-panel/component.js.map +1 -1
  98. package/build/unit-control/index.js +10 -1
  99. package/build/unit-control/index.js.map +1 -1
  100. package/build/unit-control/types.js.map +1 -1
  101. package/build-module/angle-picker-control/index.js +1 -1
  102. package/build-module/angle-picker-control/index.js.map +1 -1
  103. package/build-module/autocomplete/index.js +0 -1
  104. package/build-module/autocomplete/index.js.map +1 -1
  105. package/build-module/border-box-control/border-box-control-split-controls/component.js +1 -1
  106. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  107. package/build-module/border-control/border-control/component.js +2 -0
  108. package/build-module/border-control/border-control/component.js.map +1 -1
  109. package/build-module/box-control/all-input-control.js +1 -0
  110. package/build-module/box-control/all-input-control.js.map +1 -1
  111. package/build-module/box-control/axial-input-controls.js +1 -0
  112. package/build-module/box-control/axial-input-controls.js.map +1 -1
  113. package/build-module/box-control/index.js +9 -2
  114. package/build-module/box-control/index.js.map +1 -1
  115. package/build-module/box-control/input-controls.js +1 -0
  116. package/build-module/box-control/input-controls.js.map +1 -1
  117. package/build-module/box-control/types.js.map +1 -1
  118. package/build-module/clipboard-button/index.js +5 -3
  119. package/build-module/clipboard-button/index.js.map +1 -1
  120. package/build-module/color-palette/index.native.js +0 -1
  121. package/build-module/color-palette/index.native.js.map +1 -1
  122. package/build-module/color-picker/input-with-slider.js +2 -2
  123. package/build-module/color-picker/input-with-slider.js.map +1 -1
  124. package/build-module/composite/item.js +0 -9
  125. package/build-module/composite/item.js.map +1 -1
  126. package/build-module/context/context-connect.js +0 -1
  127. package/build-module/context/context-connect.js.map +1 -1
  128. package/build-module/custom-gradient-picker/index.js +2 -0
  129. package/build-module/custom-gradient-picker/index.js.map +1 -1
  130. package/build-module/custom-gradient-picker/types.js.map +1 -1
  131. package/build-module/custom-select-control/index.js +8 -0
  132. package/build-module/custom-select-control/index.js.map +1 -1
  133. package/build-module/custom-select-control/types.js.map +1 -1
  134. package/build-module/drop-zone/index.js +19 -13
  135. package/build-module/drop-zone/index.js.map +1 -1
  136. package/build-module/drop-zone/types.js.map +1 -1
  137. package/build-module/dropdown-menu/index.js +1 -0
  138. package/build-module/dropdown-menu/index.js.map +1 -1
  139. package/build-module/duotone-picker/color-list-picker/index.js +10 -15
  140. package/build-module/duotone-picker/color-list-picker/index.js.map +1 -1
  141. package/build-module/external-link/index.js +0 -1
  142. package/build-module/external-link/index.js.map +1 -1
  143. package/build-module/font-size-picker/font-size-picker-select.js +1 -0
  144. package/build-module/font-size-picker/font-size-picker-select.js.map +1 -1
  145. package/build-module/font-size-picker/index.js +1 -0
  146. package/build-module/font-size-picker/index.js.map +1 -1
  147. package/build-module/form-file-upload/index.js +13 -2
  148. package/build-module/form-file-upload/index.js.map +1 -1
  149. package/build-module/form-file-upload/types.js.map +1 -1
  150. package/build-module/form-token-field/index.js +6 -1
  151. package/build-module/form-token-field/index.js.map +1 -1
  152. package/build-module/gradient-picker/index.js +2 -0
  153. package/build-module/gradient-picker/index.js.map +1 -1
  154. package/build-module/gradient-picker/types.js.map +1 -1
  155. package/build-module/menu/checkbox-item.js +5 -9
  156. package/build-module/menu/checkbox-item.js.map +1 -1
  157. package/build-module/menu/group-label.js +4 -1
  158. package/build-module/menu/group-label.js.map +1 -1
  159. package/build-module/menu/group.js +4 -1
  160. package/build-module/menu/group.js.map +1 -1
  161. package/build-module/menu/item-help-text.js +6 -1
  162. package/build-module/menu/item-help-text.js.map +1 -1
  163. package/build-module/menu/item-label.js +6 -1
  164. package/build-module/menu/item-label.js.map +1 -1
  165. package/build-module/menu/item.js +4 -8
  166. package/build-module/menu/item.js.map +1 -1
  167. package/build-module/menu/radio-item.js +5 -9
  168. package/build-module/menu/radio-item.js.map +1 -1
  169. package/build-module/menu/separator.js +5 -2
  170. package/build-module/menu/separator.js.map +1 -1
  171. package/build-module/modal/aria-helper.js +0 -1
  172. package/build-module/modal/aria-helper.js.map +1 -1
  173. package/build-module/modal/index.js +0 -1
  174. package/build-module/modal/index.js.map +1 -1
  175. package/build-module/number-control/index.js +8 -0
  176. package/build-module/number-control/index.js.map +1 -1
  177. package/build-module/number-control/types.js.map +1 -1
  178. package/build-module/range-control/index.js +2 -1
  179. package/build-module/range-control/index.js.map +1 -1
  180. package/build-module/resizable-box/index.js +9 -1
  181. package/build-module/resizable-box/index.js.map +1 -1
  182. package/build-module/slot-fill/bubbles-virtually/fill.js +9 -13
  183. package/build-module/slot-fill/bubbles-virtually/fill.js.map +1 -1
  184. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js +6 -10
  185. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  186. package/build-module/slot-fill/bubbles-virtually/slot.js +4 -10
  187. package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
  188. package/build-module/slot-fill/types.js.map +1 -1
  189. package/build-module/style-provider/index.js +0 -1
  190. package/build-module/style-provider/index.js.map +1 -1
  191. package/build-module/tabs/tab.js +0 -15
  192. package/build-module/tabs/tab.js.map +1 -1
  193. package/build-module/toolbar/toolbar-button/index.js +2 -0
  194. package/build-module/toolbar/toolbar-button/index.js.map +1 -1
  195. package/build-module/tools-panel/tools-panel/component.js +2 -0
  196. package/build-module/tools-panel/tools-panel/component.js.map +1 -1
  197. package/build-module/unit-control/index.js +10 -1
  198. package/build-module/unit-control/index.js.map +1 -1
  199. package/build-module/unit-control/types.js.map +1 -1
  200. package/build-style/style-rtl.css +9 -5
  201. package/build-style/style.css +9 -5
  202. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  203. package/build-types/box-control/all-input-control.d.ts.map +1 -1
  204. package/build-types/box-control/axial-input-controls.d.ts.map +1 -1
  205. package/build-types/box-control/index.d.ts +1 -0
  206. package/build-types/box-control/index.d.ts.map +1 -1
  207. package/build-types/box-control/input-controls.d.ts.map +1 -1
  208. package/build-types/box-control/stories/index.story.d.ts +42 -6
  209. package/build-types/box-control/stories/index.story.d.ts.map +1 -1
  210. package/build-types/box-control/styles/box-control-styles.d.ts +3 -2
  211. package/build-types/box-control/styles/box-control-styles.d.ts.map +1 -1
  212. package/build-types/box-control/types.d.ts +14 -2
  213. package/build-types/box-control/types.d.ts.map +1 -1
  214. package/build-types/clipboard-button/index.d.ts.map +1 -1
  215. package/build-types/color-picker/styles.d.ts +3 -2
  216. package/build-types/color-picker/styles.d.ts.map +1 -1
  217. package/build-types/composite/item.d.ts.map +1 -1
  218. package/build-types/custom-gradient-picker/index.d.ts +1 -1
  219. package/build-types/custom-gradient-picker/index.d.ts.map +1 -1
  220. package/build-types/custom-gradient-picker/types.d.ts +6 -0
  221. package/build-types/custom-gradient-picker/types.d.ts.map +1 -1
  222. package/build-types/custom-select-control/index.d.ts.map +1 -1
  223. package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -1
  224. package/build-types/custom-select-control/types.d.ts +7 -0
  225. package/build-types/custom-select-control/types.d.ts.map +1 -1
  226. package/build-types/date-time/time/styles.d.ts +8 -4
  227. package/build-types/date-time/time/styles.d.ts.map +1 -1
  228. package/build-types/drop-zone/index.d.ts +1 -1
  229. package/build-types/drop-zone/index.d.ts.map +1 -1
  230. package/build-types/drop-zone/types.d.ts +5 -0
  231. package/build-types/drop-zone/types.d.ts.map +1 -1
  232. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  233. package/build-types/duotone-picker/color-list-picker/index.d.ts.map +1 -1
  234. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -1
  235. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts.map +1 -1
  236. package/build-types/font-size-picker/font-size-picker-select.d.ts.map +1 -1
  237. package/build-types/font-size-picker/index.d.ts.map +1 -1
  238. package/build-types/form-file-upload/index.d.ts +2 -1
  239. package/build-types/form-file-upload/index.d.ts.map +1 -1
  240. package/build-types/form-file-upload/stories/index.story.d.ts.map +1 -1
  241. package/build-types/form-file-upload/types.d.ts +10 -8
  242. package/build-types/form-file-upload/types.d.ts.map +1 -1
  243. package/build-types/form-token-field/index.d.ts.map +1 -1
  244. package/build-types/form-token-field/stories/index.story.d.ts.map +1 -1
  245. package/build-types/gradient-picker/index.d.ts +1 -1
  246. package/build-types/gradient-picker/index.d.ts.map +1 -1
  247. package/build-types/gradient-picker/types.d.ts +6 -0
  248. package/build-types/gradient-picker/types.d.ts.map +1 -1
  249. package/build-types/lock-unlock.d.ts +2 -2
  250. package/build-types/menu/checkbox-item.d.ts.map +1 -1
  251. package/build-types/menu/group-label.d.ts.map +1 -1
  252. package/build-types/menu/group.d.ts.map +1 -1
  253. package/build-types/menu/index.d.ts.map +1 -1
  254. package/build-types/menu/item-help-text.d.ts.map +1 -1
  255. package/build-types/menu/item-label.d.ts.map +1 -1
  256. package/build-types/menu/item.d.ts.map +1 -1
  257. package/build-types/menu/radio-item.d.ts.map +1 -1
  258. package/build-types/menu/separator.d.ts.map +1 -1
  259. package/build-types/number-control/index.d.ts +2 -1
  260. package/build-types/number-control/index.d.ts.map +1 -1
  261. package/build-types/number-control/stories/index.story.d.ts +2 -1
  262. package/build-types/number-control/stories/index.story.d.ts.map +1 -1
  263. package/build-types/number-control/types.d.ts +7 -0
  264. package/build-types/number-control/types.d.ts.map +1 -1
  265. package/build-types/range-control/index.d.ts +1 -1
  266. package/build-types/range-control/index.d.ts.map +1 -1
  267. package/build-types/range-control/styles/range-control-styles.d.ts +2 -1
  268. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  269. package/build-types/resizable-box/index.d.ts.map +1 -1
  270. package/build-types/slot-fill/bubbles-virtually/fill.d.ts.map +1 -1
  271. package/build-types/slot-fill/bubbles-virtually/slot-fill-provider.d.ts.map +1 -1
  272. package/build-types/slot-fill/bubbles-virtually/slot.d.ts.map +1 -1
  273. package/build-types/slot-fill/bubbles-virtually/use-slot-fills.d.ts +1 -1
  274. package/build-types/slot-fill/types.d.ts +4 -3
  275. package/build-types/slot-fill/types.d.ts.map +1 -1
  276. package/build-types/tabs/tab.d.ts +3 -0
  277. package/build-types/tabs/tab.d.ts.map +1 -1
  278. package/build-types/toolbar/toolbar-button/index.d.ts.map +1 -1
  279. package/build-types/tools-panel/stories/index.story.d.ts.map +1 -1
  280. package/build-types/tools-panel/tools-panel/component.d.ts +2 -0
  281. package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
  282. package/build-types/unit-control/index.d.ts +3 -2
  283. package/build-types/unit-control/index.d.ts.map +1 -1
  284. package/build-types/unit-control/stories/index.story.d.ts.map +1 -1
  285. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -1
  286. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  287. package/build-types/unit-control/types.d.ts +7 -0
  288. package/build-types/unit-control/types.d.ts.map +1 -1
  289. package/package.json +20 -20
  290. package/src/angle-picker-control/index.tsx +1 -1
  291. package/src/border-box-control/border-box-control-split-controls/component.tsx +1 -1
  292. package/src/border-control/border-control/component.tsx +2 -0
  293. package/src/box-control/README.md +1 -0
  294. package/src/box-control/all-input-control.tsx +1 -0
  295. package/src/box-control/axial-input-controls.tsx +1 -0
  296. package/src/box-control/index.tsx +10 -2
  297. package/src/box-control/input-controls.tsx +1 -0
  298. package/src/box-control/stories/index.story.tsx +1 -0
  299. package/src/box-control/test/index.tsx +33 -26
  300. package/src/box-control/types.ts +71 -56
  301. package/src/clipboard-button/index.tsx +5 -3
  302. package/src/color-picker/input-with-slider.tsx +1 -1
  303. package/src/composite/item.tsx +1 -19
  304. package/src/custom-gradient-picker/index.tsx +2 -0
  305. package/src/custom-gradient-picker/types.ts +6 -0
  306. package/src/custom-select-control/README.md +2 -0
  307. package/src/custom-select-control/index.tsx +9 -0
  308. package/src/custom-select-control/stories/index.story.tsx +1 -0
  309. package/src/custom-select-control/test/index.tsx +13 -9
  310. package/src/custom-select-control/types.ts +7 -0
  311. package/src/drop-zone/index.tsx +21 -24
  312. package/src/drop-zone/types.ts +5 -0
  313. package/src/dropdown-menu/index.tsx +1 -0
  314. package/src/dropdown-menu/style.scss +1 -1
  315. package/src/duotone-picker/color-list-picker/index.tsx +8 -8
  316. package/src/duotone-picker/color-list-picker/style.scss +0 -6
  317. package/src/font-size-picker/font-size-picker-select.tsx +1 -0
  318. package/src/font-size-picker/index.tsx +1 -0
  319. package/src/form-file-upload/README.md +58 -48
  320. package/src/form-file-upload/docs-manifest.json +5 -0
  321. package/src/form-file-upload/index.tsx +12 -1
  322. package/src/form-file-upload/stories/index.story.tsx +1 -0
  323. package/src/form-file-upload/test/index.tsx +5 -1
  324. package/src/form-file-upload/types.ts +10 -8
  325. package/src/form-token-field/README.md +1 -0
  326. package/src/form-token-field/index.tsx +7 -0
  327. package/src/form-token-field/stories/index.story.tsx +2 -0
  328. package/src/form-token-field/test/index.tsx +5 -1
  329. package/src/gradient-picker/README.md +8 -0
  330. package/src/gradient-picker/index.tsx +2 -0
  331. package/src/gradient-picker/types.ts +6 -0
  332. package/src/menu/checkbox-item.tsx +9 -7
  333. package/src/menu/group-label.tsx +8 -1
  334. package/src/menu/group.tsx +8 -1
  335. package/src/menu/item-help-text.tsx +10 -1
  336. package/src/menu/item-label.tsx +10 -1
  337. package/src/menu/item.tsx +8 -6
  338. package/src/menu/radio-item.tsx +9 -7
  339. package/src/menu/separator.tsx +9 -2
  340. package/src/menu-items-choice/style.scss +1 -0
  341. package/src/number-control/README.md +2 -1
  342. package/src/number-control/index.tsx +9 -0
  343. package/src/number-control/stories/index.story.tsx +1 -0
  344. package/src/number-control/test/index.tsx +5 -1
  345. package/src/number-control/types.ts +7 -0
  346. package/src/range-control/index.tsx +1 -0
  347. package/src/resizable-box/index.tsx +10 -0
  348. package/src/resizable-box/style.scss +8 -0
  349. package/src/slot-fill/bubbles-virtually/fill.tsx +7 -11
  350. package/src/slot-fill/bubbles-virtually/slot-fill-provider.tsx +2 -13
  351. package/src/slot-fill/bubbles-virtually/slot.tsx +4 -7
  352. package/src/slot-fill/types.ts +4 -3
  353. package/src/tabs/tab.tsx +0 -18
  354. package/src/tabs/test/index.tsx +1492 -947
  355. package/src/toolbar/toolbar-button/index.tsx +2 -0
  356. package/src/tools-panel/stories/index.story.tsx +12 -0
  357. package/src/tools-panel/tools-panel/README.md +4 -0
  358. package/src/tools-panel/tools-panel/component.tsx +2 -0
  359. package/src/unit-control/README.md +3 -3
  360. package/src/unit-control/index.tsx +11 -1
  361. package/src/unit-control/stories/index.story.tsx +1 -0
  362. package/src/unit-control/test/index.tsx +5 -1
  363. package/src/unit-control/types.ts +7 -0
  364. package/tsconfig.tsbuildinfo +1 -1
  365. package/build/menu/use-temporary-focus-visible-fix.js +0 -27
  366. package/build/menu/use-temporary-focus-visible-fix.js.map +0 -1
  367. package/build-module/menu/use-temporary-focus-visible-fix.js +0 -20
  368. package/build-module/menu/use-temporary-focus-visible-fix.js.map +0 -1
  369. package/build-types/menu/use-temporary-focus-visible-fix.d.ts +0 -8
  370. package/build-types/menu/use-temporary-focus-visible-fix.d.ts.map +0 -1
  371. package/src/menu/use-temporary-focus-visible-fix.ts +0 -22
@@ -1,18 +1,27 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { forwardRef } from '@wordpress/element';
4
+ import { forwardRef, useContext } from '@wordpress/element';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
9
  import type { WordPressComponentProps } from '../context';
10
+ import { MenuContext } from './context';
10
11
  import * as Styled from './styles';
11
12
 
12
13
  export const MenuItemHelpText = forwardRef<
13
14
  HTMLSpanElement,
14
15
  WordPressComponentProps< { children: React.ReactNode }, 'span', true >
15
16
  >( function MenuItemHelpText( props, ref ) {
17
+ const menuContext = useContext( MenuContext );
18
+
19
+ if ( ! menuContext?.store ) {
20
+ throw new Error(
21
+ 'Menu.ItemHelpText can only be rendered inside a Menu component'
22
+ );
23
+ }
24
+
16
25
  return (
17
26
  <Styled.MenuItemHelpText numberOfLines={ 2 } ref={ ref } { ...props } />
18
27
  );
@@ -1,18 +1,27 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { forwardRef } from '@wordpress/element';
4
+ import { forwardRef, useContext } from '@wordpress/element';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
9
  import type { WordPressComponentProps } from '../context';
10
+ import { MenuContext } from './context';
10
11
  import * as Styled from './styles';
11
12
 
12
13
  export const MenuItemLabel = forwardRef<
13
14
  HTMLSpanElement,
14
15
  WordPressComponentProps< { children: React.ReactNode }, 'span', true >
15
16
  >( function MenuItemLabel( props, ref ) {
17
+ const menuContext = useContext( MenuContext );
18
+
19
+ if ( ! menuContext?.store ) {
20
+ throw new Error(
21
+ 'Menu.ItemLabel can only be rendered inside a Menu component'
22
+ );
23
+ }
24
+
16
25
  return (
17
26
  <Styled.MenuItemLabel numberOfLines={ 1 } ref={ ref } { ...props } />
18
27
  );
package/src/menu/item.tsx CHANGED
@@ -10,27 +10,29 @@ import type { WordPressComponentProps } from '../context';
10
10
  import type { MenuItemProps } from './types';
11
11
  import * as Styled from './styles';
12
12
  import { MenuContext } from './context';
13
- import { useTemporaryFocusVisibleFix } from './use-temporary-focus-visible-fix';
14
13
 
15
14
  export const MenuItem = forwardRef<
16
15
  HTMLDivElement,
17
16
  WordPressComponentProps< MenuItemProps, 'div', false >
18
17
  >( function MenuItem(
19
- { prefix, suffix, children, onBlur, hideOnClick = true, ...props },
18
+ { prefix, suffix, children, hideOnClick = true, ...props },
20
19
  ref
21
20
  ) {
22
- // TODO: Remove when https://github.com/ariakit/ariakit/issues/4083 is fixed
23
- const focusVisibleFixProps = useTemporaryFocusVisibleFix( { onBlur } );
24
21
  const menuContext = useContext( MenuContext );
25
22
 
23
+ if ( ! menuContext?.store ) {
24
+ throw new Error(
25
+ 'Menu.Item can only be rendered inside a Menu component'
26
+ );
27
+ }
28
+
26
29
  return (
27
30
  <Styled.MenuItem
28
31
  ref={ ref }
29
32
  { ...props }
30
- { ...focusVisibleFixProps }
31
33
  accessibleWhenDisabled
32
34
  hideOnClick={ hideOnClick }
33
- store={ menuContext?.store }
35
+ store={ menuContext.store }
34
36
  >
35
37
  <Styled.ItemPrefixWrapper>{ prefix }</Styled.ItemPrefixWrapper>
36
38
 
@@ -17,7 +17,6 @@ import { MenuContext } from './context';
17
17
  import type { MenuRadioItemProps } from './types';
18
18
  import * as Styled from './styles';
19
19
  import { SVG, Circle } from '@wordpress/primitives';
20
- import { useTemporaryFocusVisibleFix } from './use-temporary-focus-visible-fix';
21
20
 
22
21
  const radioCheck = (
23
22
  <SVG xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
@@ -29,24 +28,27 @@ export const MenuRadioItem = forwardRef<
29
28
  HTMLDivElement,
30
29
  WordPressComponentProps< MenuRadioItemProps, 'div', false >
31
30
  >( function MenuRadioItem(
32
- { suffix, children, onBlur, hideOnClick = false, ...props },
31
+ { suffix, children, hideOnClick = false, ...props },
33
32
  ref
34
33
  ) {
35
- // TODO: Remove when https://github.com/ariakit/ariakit/issues/4083 is fixed
36
- const focusVisibleFixProps = useTemporaryFocusVisibleFix( { onBlur } );
37
34
  const menuContext = useContext( MenuContext );
38
35
 
36
+ if ( ! menuContext?.store ) {
37
+ throw new Error(
38
+ 'Menu.RadioItem can only be rendered inside a Menu component'
39
+ );
40
+ }
41
+
39
42
  return (
40
43
  <Styled.MenuRadioItem
41
44
  ref={ ref }
42
45
  { ...props }
43
- { ...focusVisibleFixProps }
44
46
  accessibleWhenDisabled
45
47
  hideOnClick={ hideOnClick }
46
- store={ menuContext?.store }
48
+ store={ menuContext.store }
47
49
  >
48
50
  <Ariakit.MenuItemCheck
49
- store={ menuContext?.store }
51
+ store={ menuContext.store }
50
52
  render={ <Styled.ItemPrefixWrapper /> }
51
53
  // Override some ariakit inline styles
52
54
  style={ { width: 'auto', height: 'auto' } }
@@ -16,12 +16,19 @@ export const MenuSeparator = forwardRef<
16
16
  WordPressComponentProps< MenuSeparatorProps, 'hr', false >
17
17
  >( function MenuSeparator( props, ref ) {
18
18
  const menuContext = useContext( MenuContext );
19
+
20
+ if ( ! menuContext?.store ) {
21
+ throw new Error(
22
+ 'Menu.Separator can only be rendered inside a Menu component'
23
+ );
24
+ }
25
+
19
26
  return (
20
27
  <Styled.MenuSeparator
21
28
  ref={ ref }
22
29
  { ...props }
23
- store={ menuContext?.store }
24
- variant={ menuContext?.variant }
30
+ store={ menuContext.store }
31
+ variant={ menuContext.variant }
25
32
  />
26
33
  );
27
34
  } );
@@ -1,5 +1,6 @@
1
1
  .components-menu-items-choice,
2
2
  .components-menu-items-choice.components-button {
3
+ min-height: $button-size-next-default-40px;
3
4
  height: auto;
4
5
 
5
6
  svg {
@@ -16,6 +16,7 @@ const Example = () => {
16
16
 
17
17
  return (
18
18
  <NumberControl
19
+ __next40pxDefaultSize
19
20
  isShiftStepEnabled={ true }
20
21
  onChange={ setValue }
21
22
  shiftStep={ 10 }
@@ -146,4 +147,4 @@ Start opting into the larger default height that will become the default size in
146
147
 
147
148
  - Type: `Boolean`
148
149
  - Required: No
149
- - Default: `false`
150
+ - Default: `false`
@@ -26,6 +26,7 @@ import { HStack } from '../h-stack';
26
26
  import { Spacer } from '../spacer';
27
27
  import { useCx } from '../utils';
28
28
  import { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';
29
+ import { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';
29
30
 
30
31
  const noop = () => {};
31
32
 
@@ -53,9 +54,17 @@ function UnforwardedNumberControl(
53
54
  size = 'default',
54
55
  suffix,
55
56
  onChange = noop,
57
+ __shouldNotWarnDeprecated36pxSize,
56
58
  ...restProps
57
59
  } = useDeprecated36pxDefaultSizeProp< NumberControlProps >( props );
58
60
 
61
+ maybeWarnDeprecated36pxSize( {
62
+ componentName: 'NumberControl',
63
+ size,
64
+ __next40pxDefaultSize: restProps.__next40pxDefaultSize,
65
+ __shouldNotWarnDeprecated36pxSize,
66
+ } );
67
+
59
68
  if ( hideHTMLArrows ) {
60
69
  deprecated( 'wp.components.NumberControl hideHTMLArrows prop ', {
61
70
  alternative: 'spinControls="none"',
@@ -62,4 +62,5 @@ const Template: StoryFn< typeof NumberControl > = ( {
62
62
  export const Default = Template.bind( {} );
63
63
  Default.args = {
64
64
  label: 'Value',
65
+ __next40pxDefaultSize: true,
65
66
  };
@@ -12,9 +12,13 @@ import { useState } from '@wordpress/element';
12
12
  /**
13
13
  * Internal dependencies
14
14
  */
15
- import NumberControl from '..';
15
+ import _NumberControl from '..';
16
16
  import type { NumberControlProps } from '../types';
17
17
 
18
+ const NumberControl = (
19
+ props: React.ComponentProps< typeof _NumberControl >
20
+ ) => <_NumberControl __next40pxDefaultSize { ...props } />;
21
+
18
22
  function StatefulNumberControl( props: NumberControlProps ) {
19
23
  const [ value, setValue ] = useState( props.value );
20
24
  const handleOnChange = ( v: string | undefined ) => setValue( v );
@@ -91,4 +91,11 @@ export type NumberControlProps = Omit<
91
91
  * The value of the input.
92
92
  */
93
93
  value?: number | string;
94
+ /**
95
+ * Do not throw a warning for the deprecated 36px default size.
96
+ * For internal components of other components that already throw the warning.
97
+ *
98
+ * @ignore
99
+ */
100
+ __shouldNotWarnDeprecated36pxSize?: boolean;
94
101
  };
@@ -350,6 +350,7 @@ function UnforwardedRangeControl(
350
350
  step={ step }
351
351
  // @ts-expect-error TODO: Investigate if the `null` value is necessary
352
352
  value={ inputSliderValue }
353
+ __shouldNotWarnDeprecated36pxSize
353
354
  />
354
355
  ) }
355
356
  { allowReset && (
@@ -112,6 +112,16 @@ function UnforwardedResizableBox(
112
112
  showHandle && 'has-show-handle',
113
113
  className
114
114
  ) }
115
+ // Add a focusable element within the drag handle. Unfortunately,
116
+ // `re-resizable` does not make them properly focusable by default,
117
+ // causing focus to move the the block wrapper which triggers block
118
+ // drag.
119
+ handleComponent={ Object.fromEntries(
120
+ Object.keys( HANDLE_CLASSES ).map( ( key ) => [
121
+ key,
122
+ <div key={ key } tabIndex={ -1 } />,
123
+ ] )
124
+ ) }
115
125
  handleClasses={ HANDLE_CLASSES }
116
126
  handleStyles={ HANDLE_STYLES }
117
127
  ref={ ref }
@@ -15,6 +15,14 @@ $resize-handler-container-size: $resize-handler-size + ($grid-unit-05 * 2); // M
15
15
  .components-resizable-box__container.has-show-handle & {
16
16
  display: block;
17
17
  }
18
+
19
+ > div {
20
+ position: relative;
21
+ width: 100%;
22
+ height: 100%;
23
+ z-index: z-index(".components-resizable-box__handle");
24
+ outline: none;
25
+ }
18
26
  }
19
27
 
20
28
  // Make the image inside the resize to get the full width
@@ -4,7 +4,6 @@
4
4
  import { useObservableValue } from '@wordpress/compose';
5
5
  import {
6
6
  useContext,
7
- useReducer,
8
7
  useRef,
9
8
  useEffect,
10
9
  createPortal,
@@ -20,18 +19,15 @@ import type { FillComponentProps } from '../types';
20
19
  export default function Fill( { name, children }: FillComponentProps ) {
21
20
  const registry = useContext( SlotFillContext );
22
21
  const slot = useObservableValue( registry.slots, name );
23
- const [ , rerender ] = useReducer( () => [], [] );
24
- const ref = useRef( { rerender } );
22
+ const instanceRef = useRef( {} );
25
23
 
24
+ // We register fills so we can keep track of their existence.
25
+ // Slots can use the `useSlotFills` hook to know if there're already fills
26
+ // registered so they can choose to render themselves or not.
26
27
  useEffect( () => {
27
- // We register fills so we can keep track of their existence.
28
- // Some Slot implementations need to know if there're already fills
29
- // registered so they can choose to render themselves or not.
30
- const refValue = ref.current;
31
- registry.registerFill( name, refValue );
32
- return () => {
33
- registry.unregisterFill( name, refValue );
34
- };
28
+ const instance = instanceRef.current;
29
+ registry.registerFill( name, instance );
30
+ return () => registry.unregisterFill( name, instance );
35
31
  }, [ registry, name ] );
36
32
 
37
33
  if ( ! slot || ! slot.ref.current ) {
@@ -23,13 +23,7 @@ function createSlotRegistry(): SlotFillBubblesVirtuallyContext {
23
23
  ref,
24
24
  fillProps
25
25
  ) => {
26
- const slot = slots.get( name );
27
-
28
- slots.set( name, {
29
- ...slot,
30
- ref: ref || slot?.ref,
31
- fillProps: fillProps || slot?.fillProps || {},
32
- } );
26
+ slots.set( name, { ref, fillProps } );
33
27
  };
34
28
 
35
29
  const unregisterSlot: SlotFillBubblesVirtuallyContext[ 'unregisterSlot' ] =
@@ -66,12 +60,7 @@ function createSlotRegistry(): SlotFillBubblesVirtuallyContext {
66
60
  return;
67
61
  }
68
62
 
69
- slot.fillProps = fillProps;
70
- const slotFills = fills.get( name );
71
- if ( slotFills ) {
72
- // Force update fills.
73
- slotFills.forEach( ( fill ) => fill.rerender() );
74
- }
63
+ slots.set( name, { ref, fillProps } );
75
64
  };
76
65
 
77
66
  const registerFill: SlotFillBubblesVirtuallyContext[ 'registerFill' ] = (
@@ -39,8 +39,7 @@ function Slot(
39
39
  ...restProps
40
40
  } = props;
41
41
 
42
- const { registerSlot, unregisterSlot, ...registry } =
43
- useContext( SlotFillContext );
42
+ const registry = useContext( SlotFillContext );
44
43
 
45
44
  const ref = useRef< HTMLElement >( null );
46
45
 
@@ -54,11 +53,9 @@ function Slot(
54
53
  }, [ fillProps ] );
55
54
 
56
55
  useLayoutEffect( () => {
57
- registerSlot( name, ref, fillPropsRef.current );
58
- return () => {
59
- unregisterSlot( name, ref );
60
- };
61
- }, [ registerSlot, unregisterSlot, name ] );
56
+ registry.registerSlot( name, ref, fillPropsRef.current );
57
+ return () => registry.unregisterSlot( name, ref );
58
+ }, [ registry, name ] );
62
59
 
63
60
  useLayoutEffect( () => {
64
61
  registry.updateSlot( name, ref, fillPropsRef.current );
@@ -110,15 +110,16 @@ export type SlotFillProviderProps = {
110
110
 
111
111
  export type SlotRef = RefObject< HTMLElement >;
112
112
  export type Rerenderable = { rerender: () => void };
113
+ export type FillInstance = {};
113
114
 
114
115
  export type SlotFillBubblesVirtuallyContext = {
115
116
  slots: ObservableMap< SlotKey, { ref: SlotRef; fillProps: FillProps } >;
116
- fills: ObservableMap< SlotKey, Rerenderable[] >;
117
+ fills: ObservableMap< SlotKey, FillInstance[] >;
117
118
  registerSlot: ( name: SlotKey, ref: SlotRef, fillProps: FillProps ) => void;
118
119
  unregisterSlot: ( name: SlotKey, ref: SlotRef ) => void;
119
120
  updateSlot: ( name: SlotKey, ref: SlotRef, fillProps: FillProps ) => void;
120
- registerFill: ( name: SlotKey, ref: Rerenderable ) => void;
121
- unregisterFill: ( name: SlotKey, ref: Rerenderable ) => void;
121
+ registerFill: ( name: SlotKey, instance: FillInstance ) => void;
122
+ unregisterFill: ( name: SlotKey, instance: FillInstance ) => void;
122
123
 
123
124
  /**
124
125
  * This helps the provider know if it's using the default context value or not.
package/src/tabs/tab.tsx CHANGED
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import * as Ariakit from '@ariakit/react';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -29,18 +24,6 @@ export const Tab = forwardRef<
29
24
  >( function Tab( { children, tabId, disabled, render, ...otherProps }, ref ) {
30
25
  const { store, instanceId } = useTabsContext() ?? {};
31
26
 
32
- // If the active item is not connected, the tablist may end up in a state
33
- // where none of the tabs are tabbable. In this case, we force all tabs to
34
- // be tabbable, so that as soon as an item received focus, it becomes active
35
- // and Tablist goes back to working as expected.
36
- // eslint-disable-next-line @wordpress/no-unused-vars-before-return
37
- const tabbable = Ariakit.useStoreState( store, ( state ) => {
38
- return (
39
- state?.activeId !== null &&
40
- ! store?.item( state?.activeId )?.element?.isConnected
41
- );
42
- } );
43
-
44
27
  if ( ! store ) {
45
28
  warning( '`Tabs.Tab` must be wrapped in a `Tabs` component.' );
46
29
  return null;
@@ -55,7 +38,6 @@ export const Tab = forwardRef<
55
38
  id={ instancedTabId }
56
39
  disabled={ disabled }
57
40
  render={ render }
58
- tabbable={ tabbable }
59
41
  { ...otherProps }
60
42
  >
61
43
  <StyledTabChildren>{ children }</StyledTabChildren>