@wordpress/components 28.12.0 → 28.13.1-next.082ed6819.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 (396) hide show
  1. package/CHANGELOG.md +43 -1
  2. package/build/autocomplete/autocompleter-ui.js +1 -0
  3. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  4. package/build/border-box-control/border-box-control/component.js +1 -0
  5. package/build/border-box-control/border-box-control/component.js.map +1 -1
  6. package/build/border-box-control/border-box-control-split-controls/component.js +2 -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 -1
  9. package/build/border-control/border-control/component.js.map +1 -1
  10. package/build/border-control/border-control/hook.js +3 -1
  11. package/build/border-control/border-control/hook.js.map +1 -1
  12. package/build/border-control/types.js.map +1 -1
  13. package/build/box-control/all-input-control.js +1 -0
  14. package/build/box-control/all-input-control.js.map +1 -1
  15. package/build/box-control/axial-input-controls.js +1 -0
  16. package/build/box-control/axial-input-controls.js.map +1 -1
  17. package/build/box-control/input-controls.js +1 -0
  18. package/build/box-control/input-controls.js.map +1 -1
  19. package/build/color-palette/index.js +2 -0
  20. package/build/color-palette/index.js.map +1 -1
  21. package/build/color-picker/color-copy-button.js +6 -4
  22. package/build/color-picker/color-copy-button.js.map +1 -1
  23. package/build/color-picker/component.js +1 -0
  24. package/build/color-picker/component.js.map +1 -1
  25. package/build/color-picker/styles.js +21 -28
  26. package/build/color-picker/styles.js.map +1 -1
  27. package/build/combobox-control/index.js +17 -12
  28. package/build/combobox-control/index.js.map +1 -1
  29. package/build/composite/hover.js +1 -1
  30. package/build/composite/hover.js.map +1 -1
  31. package/build/composite/typeahead.js +1 -1
  32. package/build/composite/typeahead.js.map +1 -1
  33. package/build/dashicon/types.js.map +1 -1
  34. package/build/dimension-control/index.js +7 -0
  35. package/build/dimension-control/index.js.map +1 -1
  36. package/build/disabled/index.js +8 -1
  37. package/build/disabled/index.js.map +1 -1
  38. package/build/duotone-picker/duotone-picker.js +2 -0
  39. package/build/duotone-picker/duotone-picker.js.map +1 -1
  40. package/build/font-size-picker/font-size-picker-toggle-group.js +1 -0
  41. package/build/font-size-picker/font-size-picker-toggle-group.js.map +1 -1
  42. package/build/font-size-picker/index.js +7 -0
  43. package/build/font-size-picker/index.js.map +1 -1
  44. package/build/form-file-upload/index.js +3 -1
  45. package/build/form-file-upload/index.js.map +1 -1
  46. package/build/gradient-picker/index.js +34 -32
  47. package/build/gradient-picker/index.js.map +1 -1
  48. package/build/gradient-picker/types.js.map +1 -1
  49. package/build/menu/styles.js +16 -16
  50. package/build/menu/styles.js.map +1 -1
  51. package/build/modal/index.js +2 -2
  52. package/build/modal/index.js.map +1 -1
  53. package/build/private-apis.js +0 -2
  54. package/build/private-apis.js.map +1 -1
  55. package/build/range-control/index.js +11 -0
  56. package/build/range-control/index.js.map +1 -1
  57. package/build/range-control/types.js.map +1 -1
  58. package/build/slot-fill/bubbles-virtually/fill.js +14 -31
  59. package/build/slot-fill/bubbles-virtually/fill.js.map +1 -1
  60. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js +13 -4
  61. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  62. package/build/slot-fill/bubbles-virtually/slot.js +11 -9
  63. package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
  64. package/build/slot-fill/bubbles-virtually/use-slot.js +1 -8
  65. package/build/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  66. package/build/slot-fill/fill.js +7 -24
  67. package/build/slot-fill/fill.js.map +1 -1
  68. package/build/slot-fill/index.js +5 -10
  69. package/build/slot-fill/index.js.map +1 -1
  70. package/build/slot-fill/provider.js +2 -2
  71. package/build/slot-fill/provider.js.map +1 -1
  72. package/build/slot-fill/slot.js +37 -77
  73. package/build/slot-fill/slot.js.map +1 -1
  74. package/build/slot-fill/types.js.map +1 -1
  75. package/build/text-control/index.js +7 -0
  76. package/build/text-control/index.js.map +1 -1
  77. package/build/toggle-group-control/toggle-group-control/component.js +9 -0
  78. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  79. package/build/toggle-group-control/toggle-group-control-option/component.js +1 -0
  80. package/build/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  81. package/build/toggle-group-control/toggle-group-control-option-icon/component.js +1 -1
  82. package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  83. package/build/toggle-group-control/types.js.map +1 -1
  84. package/build/utils/deprecated-36px-size.js +3 -2
  85. package/build/utils/deprecated-36px-size.js.map +1 -1
  86. package/build-module/autocomplete/autocompleter-ui.js +1 -0
  87. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  88. package/build-module/border-box-control/border-box-control/component.js +1 -0
  89. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  90. package/build-module/border-box-control/border-box-control-split-controls/component.js +2 -1
  91. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  92. package/build-module/border-control/border-control/component.js +2 -1
  93. package/build-module/border-control/border-control/component.js.map +1 -1
  94. package/build-module/border-control/border-control/hook.js +3 -1
  95. package/build-module/border-control/border-control/hook.js.map +1 -1
  96. package/build-module/border-control/types.js.map +1 -1
  97. package/build-module/box-control/all-input-control.js +1 -0
  98. package/build-module/box-control/all-input-control.js.map +1 -1
  99. package/build-module/box-control/axial-input-controls.js +1 -0
  100. package/build-module/box-control/axial-input-controls.js.map +1 -1
  101. package/build-module/box-control/input-controls.js +1 -0
  102. package/build-module/box-control/input-controls.js.map +1 -1
  103. package/build-module/color-palette/index.js +2 -0
  104. package/build-module/color-palette/index.js.map +1 -1
  105. package/build-module/color-picker/color-copy-button.js +6 -4
  106. package/build-module/color-picker/color-copy-button.js.map +1 -1
  107. package/build-module/color-picker/component.js +1 -0
  108. package/build-module/color-picker/component.js.map +1 -1
  109. package/build-module/color-picker/styles.js +20 -27
  110. package/build-module/color-picker/styles.js.map +1 -1
  111. package/build-module/combobox-control/index.js +18 -13
  112. package/build-module/combobox-control/index.js.map +1 -1
  113. package/build-module/composite/hover.js +1 -1
  114. package/build-module/composite/hover.js.map +1 -1
  115. package/build-module/composite/typeahead.js +1 -1
  116. package/build-module/composite/typeahead.js.map +1 -1
  117. package/build-module/dashicon/types.js.map +1 -1
  118. package/build-module/dimension-control/index.js +7 -0
  119. package/build-module/dimension-control/index.js.map +1 -1
  120. package/build-module/disabled/index.js +8 -1
  121. package/build-module/disabled/index.js.map +1 -1
  122. package/build-module/duotone-picker/duotone-picker.js +2 -0
  123. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  124. package/build-module/font-size-picker/font-size-picker-toggle-group.js +1 -0
  125. package/build-module/font-size-picker/font-size-picker-toggle-group.js.map +1 -1
  126. package/build-module/font-size-picker/index.js +7 -0
  127. package/build-module/font-size-picker/index.js.map +1 -1
  128. package/build-module/form-file-upload/index.js +3 -1
  129. package/build-module/form-file-upload/index.js.map +1 -1
  130. package/build-module/gradient-picker/index.js +34 -32
  131. package/build-module/gradient-picker/index.js.map +1 -1
  132. package/build-module/gradient-picker/types.js.map +1 -1
  133. package/build-module/menu/styles.js +16 -16
  134. package/build-module/menu/styles.js.map +1 -1
  135. package/build-module/modal/index.js +2 -2
  136. package/build-module/modal/index.js.map +1 -1
  137. package/build-module/private-apis.js +0 -2
  138. package/build-module/private-apis.js.map +1 -1
  139. package/build-module/range-control/index.js +11 -0
  140. package/build-module/range-control/index.js.map +1 -1
  141. package/build-module/range-control/types.js.map +1 -1
  142. package/build-module/slot-fill/bubbles-virtually/fill.js +15 -32
  143. package/build-module/slot-fill/bubbles-virtually/fill.js.map +1 -1
  144. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js +13 -4
  145. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  146. package/build-module/slot-fill/bubbles-virtually/slot.js +11 -9
  147. package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
  148. package/build-module/slot-fill/bubbles-virtually/use-slot.js +2 -9
  149. package/build-module/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  150. package/build-module/slot-fill/fill.js +7 -24
  151. package/build-module/slot-fill/fill.js.map +1 -1
  152. package/build-module/slot-fill/index.js +5 -8
  153. package/build-module/slot-fill/index.js.map +1 -1
  154. package/build-module/slot-fill/provider.js +2 -3
  155. package/build-module/slot-fill/provider.js.map +1 -1
  156. package/build-module/slot-fill/slot.js +38 -78
  157. package/build-module/slot-fill/slot.js.map +1 -1
  158. package/build-module/slot-fill/types.js.map +1 -1
  159. package/build-module/text-control/index.js +7 -0
  160. package/build-module/text-control/index.js.map +1 -1
  161. package/build-module/toggle-group-control/toggle-group-control/component.js +9 -0
  162. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  163. package/build-module/toggle-group-control/toggle-group-control-option/component.js +1 -0
  164. package/build-module/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  165. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +1 -1
  166. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  167. package/build-module/toggle-group-control/types.js.map +1 -1
  168. package/build-module/utils/deprecated-36px-size.js +3 -2
  169. package/build-module/utils/deprecated-36px-size.js.map +1 -1
  170. package/build-style/style-rtl.css +0 -7
  171. package/build-style/style.css +0 -7
  172. package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
  173. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  174. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  175. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  176. package/build-types/border-control/border-control/component.d.ts +1 -0
  177. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  178. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  179. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  180. package/build-types/border-control/border-control-style-picker/component.d.ts.map +1 -1
  181. package/build-types/border-control/stories/index.story.d.ts +10 -5
  182. package/build-types/border-control/stories/index.story.d.ts.map +1 -1
  183. package/build-types/border-control/types.d.ts +7 -0
  184. package/build-types/border-control/types.d.ts.map +1 -1
  185. package/build-types/box-control/all-input-control.d.ts.map +1 -1
  186. package/build-types/box-control/axial-input-controls.d.ts.map +1 -1
  187. package/build-types/box-control/input-controls.d.ts.map +1 -1
  188. package/build-types/box-control/styles/box-control-styles.d.ts +2 -1
  189. package/build-types/box-control/styles/box-control-styles.d.ts.map +1 -1
  190. package/build-types/checkbox-control/stories/index.story.d.ts.map +1 -1
  191. package/build-types/circular-option-picker/stories/index.story.d.ts.map +1 -1
  192. package/build-types/color-indicator/stories/index.story.d.ts.map +1 -1
  193. package/build-types/color-palette/index.d.ts.map +1 -1
  194. package/build-types/color-palette/stories/index.story.d.ts.map +1 -1
  195. package/build-types/color-picker/color-copy-button.d.ts.map +1 -1
  196. package/build-types/color-picker/component.d.ts.map +1 -1
  197. package/build-types/color-picker/stories/index.story.d.ts.map +1 -1
  198. package/build-types/color-picker/styles.d.ts +2 -4
  199. package/build-types/color-picker/styles.d.ts.map +1 -1
  200. package/build-types/combobox-control/index.d.ts +1 -0
  201. package/build-types/combobox-control/index.d.ts.map +1 -1
  202. package/build-types/combobox-control/stories/index.story.d.ts.map +1 -1
  203. package/build-types/composite/typeahead.d.ts.map +1 -1
  204. package/build-types/custom-gradient-picker/stories/index.story.d.ts.map +1 -1
  205. package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -1
  206. package/build-types/custom-select-control-v2/stories/index.story.d.ts.map +1 -1
  207. package/build-types/dashicon/types.d.ts +1 -1
  208. package/build-types/dashicon/types.d.ts.map +1 -1
  209. package/build-types/date-time/stories/date-time.story.d.ts.map +1 -1
  210. package/build-types/date-time/stories/date.story.d.ts.map +1 -1
  211. package/build-types/date-time/stories/time.story.d.ts.map +1 -1
  212. package/build-types/dimension-control/index.d.ts +1 -0
  213. package/build-types/dimension-control/index.d.ts.map +1 -1
  214. package/build-types/disabled/index.d.ts +8 -1
  215. package/build-types/disabled/index.d.ts.map +1 -1
  216. package/build-types/disabled/stories/index.story.d.ts.map +1 -1
  217. package/build-types/drop-zone/stories/index.story.d.ts.map +1 -1
  218. package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
  219. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -1
  220. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts.map +1 -1
  221. package/build-types/font-size-picker/index.d.ts.map +1 -1
  222. package/build-types/font-size-picker/stories/index.story.d.ts.map +1 -1
  223. package/build-types/form-file-upload/index.d.ts.map +1 -1
  224. package/build-types/form-file-upload/stories/index.story.d.ts.map +1 -1
  225. package/build-types/form-token-field/stories/index.story.d.ts.map +1 -1
  226. package/build-types/gradient-picker/index.d.ts +32 -32
  227. package/build-types/gradient-picker/index.d.ts.map +1 -1
  228. package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
  229. package/build-types/gradient-picker/types.d.ts +1 -5
  230. package/build-types/gradient-picker/types.d.ts.map +1 -1
  231. package/build-types/h-stack/stories/index.story.d.ts.map +1 -1
  232. package/build-types/input-control/stories/index.story.d.ts.map +1 -1
  233. package/build-types/menu-group/stories/index.story.d.ts.map +1 -1
  234. package/build-types/menu-item/stories/index.story.d.ts.map +1 -1
  235. package/build-types/menu-items-choice/stories/index.story.d.ts.map +1 -1
  236. package/build-types/number-control/stories/index.story.d.ts.map +1 -1
  237. package/build-types/placeholder/stories/index.story.d.ts.map +1 -1
  238. package/build-types/private-apis.d.ts.map +1 -1
  239. package/build-types/radio-control/stories/index.story.d.ts.map +1 -1
  240. package/build-types/range-control/index.d.ts +3 -1
  241. package/build-types/range-control/index.d.ts.map +1 -1
  242. package/build-types/range-control/stories/index.story.d.ts.map +1 -1
  243. package/build-types/range-control/types.d.ts +7 -0
  244. package/build-types/range-control/types.d.ts.map +1 -1
  245. package/build-types/responsive-wrapper/stories/index.story.d.ts.map +1 -1
  246. package/build-types/search-control/stories/index.story.d.ts.map +1 -1
  247. package/build-types/select-control/stories/index.story.d.ts.map +1 -1
  248. package/build-types/slot-fill/bubbles-virtually/fill.d.ts +1 -1
  249. package/build-types/slot-fill/bubbles-virtually/fill.d.ts.map +1 -1
  250. package/build-types/slot-fill/bubbles-virtually/slot-fill-provider.d.ts.map +1 -1
  251. package/build-types/slot-fill/bubbles-virtually/slot.d.ts.map +1 -1
  252. package/build-types/slot-fill/bubbles-virtually/use-slot-fills.d.ts +1 -1
  253. package/build-types/slot-fill/bubbles-virtually/use-slot-fills.d.ts.map +1 -1
  254. package/build-types/slot-fill/bubbles-virtually/use-slot.d.ts +3 -7
  255. package/build-types/slot-fill/bubbles-virtually/use-slot.d.ts.map +1 -1
  256. package/build-types/slot-fill/fill.d.ts.map +1 -1
  257. package/build-types/slot-fill/index.d.ts +5 -12
  258. package/build-types/slot-fill/index.d.ts.map +1 -1
  259. package/build-types/slot-fill/provider.d.ts.map +1 -1
  260. package/build-types/slot-fill/slot.d.ts +1 -1
  261. package/build-types/slot-fill/slot.d.ts.map +1 -1
  262. package/build-types/slot-fill/types.d.ts +15 -18
  263. package/build-types/slot-fill/types.d.ts.map +1 -1
  264. package/build-types/slot-fill/use-slot.d.ts +1 -1
  265. package/build-types/slot-fill/use-slot.d.ts.map +1 -1
  266. package/build-types/text-control/index.d.ts +1 -0
  267. package/build-types/text-control/index.d.ts.map +1 -1
  268. package/build-types/text-control/stories/index.story.d.ts.map +1 -1
  269. package/build-types/textarea-control/stories/index.story.d.ts.map +1 -1
  270. package/build-types/toggle-control/stories/index.story.d.ts.map +1 -1
  271. package/build-types/toggle-group-control/stories/index.story.d.ts.map +1 -1
  272. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +2 -0
  273. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  274. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -0
  275. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts.map +1 -1
  276. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  277. package/build-types/toggle-group-control/types.d.ts +7 -0
  278. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  279. package/build-types/tools-panel/stories/index.story.d.ts.map +1 -1
  280. package/build-types/tree-select/stories/index.story.d.ts.map +1 -1
  281. package/build-types/unit-control/stories/index.story.d.ts.map +1 -1
  282. package/build-types/utils/deprecated-36px-size.d.ts +2 -1
  283. package/build-types/utils/deprecated-36px-size.d.ts.map +1 -1
  284. package/build-types/v-stack/stories/index.story.d.ts.map +1 -1
  285. package/package.json +19 -19
  286. package/src/autocomplete/autocompleter-ui.tsx +1 -0
  287. package/src/base-control/stories/index.story.tsx +2 -1
  288. package/src/border-box-control/border-box-control/component.tsx +1 -0
  289. package/src/border-box-control/border-box-control-split-controls/component.tsx +1 -0
  290. package/src/border-control/border-control/component.tsx +1 -0
  291. package/src/border-control/border-control/hook.ts +2 -0
  292. package/src/border-control/types.ts +7 -0
  293. package/src/box-control/all-input-control.tsx +1 -0
  294. package/src/box-control/axial-input-controls.tsx +1 -0
  295. package/src/box-control/input-controls.tsx +1 -0
  296. package/src/checkbox-control/stories/index.story.tsx +2 -1
  297. package/src/circular-option-picker/stories/index.story.tsx +2 -1
  298. package/src/color-indicator/stories/index.story.tsx +2 -1
  299. package/src/color-palette/index.tsx +5 -1
  300. package/src/color-palette/stories/index.story.tsx +2 -1
  301. package/src/color-picker/color-copy-button.tsx +8 -10
  302. package/src/color-picker/component.tsx +1 -0
  303. package/src/color-picker/stories/index.story.tsx +2 -1
  304. package/src/color-picker/styles.ts +0 -13
  305. package/src/combobox-control/README.md +1 -0
  306. package/src/combobox-control/index.tsx +19 -13
  307. package/src/combobox-control/stories/index.story.tsx +3 -1
  308. package/src/combobox-control/style.scss +0 -6
  309. package/src/combobox-control/test/index.tsx +7 -1
  310. package/src/composite/hover.tsx +1 -1
  311. package/src/composite/typeahead.tsx +3 -1
  312. package/src/custom-gradient-picker/stories/index.story.tsx +2 -1
  313. package/src/custom-select-control/stories/index.story.tsx +2 -1
  314. package/src/custom-select-control-v2/stories/index.story.tsx +2 -1
  315. package/src/dashicon/types.ts +0 -2
  316. package/src/date-time/stories/date-time.story.tsx +2 -1
  317. package/src/date-time/stories/date.story.tsx +2 -1
  318. package/src/date-time/stories/time.story.tsx +2 -1
  319. package/src/dimension-control/README.md +1 -0
  320. package/src/dimension-control/index.tsx +8 -0
  321. package/src/dimension-control/stories/index.story.tsx +1 -0
  322. package/src/dimension-control/test/__snapshots__/index.test.js.snap +24 -24
  323. package/src/dimension-control/test/index.test.js +7 -1
  324. package/src/disabled/README.md +9 -7
  325. package/src/disabled/index.tsx +8 -1
  326. package/src/disabled/stories/index.story.tsx +1 -0
  327. package/src/drop-zone/stories/index.story.tsx +2 -1
  328. package/src/dropdown-menu/stories/index.story.tsx +2 -1
  329. package/src/duotone-picker/duotone-picker.tsx +2 -0
  330. package/src/font-size-picker/README.md +1 -0
  331. package/src/font-size-picker/font-size-picker-toggle-group.tsx +1 -0
  332. package/src/font-size-picker/index.tsx +8 -0
  333. package/src/font-size-picker/stories/index.story.tsx +1 -0
  334. package/src/font-size-picker/test/index.tsx +5 -1
  335. package/src/form-file-upload/index.tsx +9 -3
  336. package/src/form-file-upload/stories/index.story.tsx +2 -1
  337. package/src/form-token-field/stories/index.story.tsx +2 -1
  338. package/src/gradient-picker/README.md +107 -69
  339. package/src/gradient-picker/docs-manifest.json +5 -0
  340. package/src/gradient-picker/index.tsx +34 -32
  341. package/src/gradient-picker/stories/index.story.tsx +2 -1
  342. package/src/gradient-picker/types.ts +3 -5
  343. package/src/h-stack/stories/index.story.tsx +2 -1
  344. package/src/higher-order/with-constrained-tabbing/README.md +13 -3
  345. package/src/higher-order/with-focus-return/README.md +9 -2
  346. package/src/input-control/stories/index.story.tsx +2 -1
  347. package/src/menu/styles.ts +1 -1
  348. package/src/menu-group/stories/index.story.tsx +2 -1
  349. package/src/menu-item/stories/index.story.tsx +2 -1
  350. package/src/menu-items-choice/stories/index.story.tsx +2 -1
  351. package/src/modal/index.tsx +2 -2
  352. package/src/modal/stories/index.story.tsx +1 -1
  353. package/src/number-control/stories/index.story.tsx +2 -1
  354. package/src/placeholder/stories/index.story.tsx +1 -0
  355. package/src/private-apis.ts +0 -2
  356. package/src/radio-control/stories/index.story.tsx +2 -1
  357. package/src/range-control/README.md +4 -3
  358. package/src/range-control/index.tsx +11 -0
  359. package/src/range-control/stories/index.story.tsx +9 -1
  360. package/src/range-control/test/index.tsx +7 -1
  361. package/src/range-control/types.ts +7 -0
  362. package/src/responsive-wrapper/stories/index.story.tsx +2 -1
  363. package/src/search-control/stories/index.story.tsx +2 -1
  364. package/src/select-control/stories/index.story.tsx +2 -1
  365. package/src/slot-fill/README.md +26 -15
  366. package/src/slot-fill/bubbles-virtually/fill.tsx +18 -28
  367. package/src/slot-fill/bubbles-virtually/slot-fill-provider.tsx +26 -16
  368. package/src/slot-fill/bubbles-virtually/slot.tsx +13 -9
  369. package/src/slot-fill/bubbles-virtually/use-slot.ts +3 -26
  370. package/src/slot-fill/fill.ts +7 -22
  371. package/src/slot-fill/index.tsx +5 -7
  372. package/src/slot-fill/provider.tsx +8 -17
  373. package/src/slot-fill/slot.tsx +48 -85
  374. package/src/slot-fill/types.ts +14 -51
  375. package/src/text-control/README.md +1 -0
  376. package/src/text-control/index.tsx +8 -0
  377. package/src/text-control/stories/index.story.tsx +3 -1
  378. package/src/text-control/test/text-control.tsx +7 -1
  379. package/src/textarea-control/stories/index.story.tsx +2 -1
  380. package/src/toggle-control/stories/index.story.tsx +2 -1
  381. package/src/toggle-group-control/stories/index.story.tsx +3 -1
  382. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +12 -12
  383. package/src/toggle-group-control/test/index.tsx +7 -1
  384. package/src/toggle-group-control/toggle-group-control/README.md +2 -1
  385. package/src/toggle-group-control/toggle-group-control/component.tsx +10 -0
  386. package/src/toggle-group-control/toggle-group-control-option/README.md +1 -1
  387. package/src/toggle-group-control/toggle-group-control-option/component.tsx +1 -0
  388. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +1 -1
  389. package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +1 -1
  390. package/src/toggle-group-control/types.ts +7 -0
  391. package/src/tools-panel/stories/index.story.tsx +3 -0
  392. package/src/tree-select/stories/index.story.tsx +2 -1
  393. package/src/unit-control/stories/index.story.tsx +2 -1
  394. package/src/utils/deprecated-36px-size.ts +3 -0
  395. package/src/v-stack/stories/index.story.tsx +2 -1
  396. package/tsconfig.tsbuildinfo +1 -1
@@ -18,7 +18,8 @@ const ICONS = { starEmpty, starFilled, styles, wordpress };
18
18
 
19
19
  const meta: Meta< typeof RangeControl > = {
20
20
  component: RangeControl,
21
- title: 'Components/RangeControl',
21
+ title: 'Components/Selection & Input/Common/RangeControl',
22
+ id: 'components-rangecontrol',
22
23
  argTypes: {
23
24
  afterIcon: {
24
25
  control: { type: 'select' },
@@ -71,6 +72,7 @@ const Template: StoryFn< typeof RangeControl > = ( { onChange, ...args } ) => {
71
72
  export const Default: StoryFn< typeof RangeControl > = Template.bind( {} );
72
73
  Default.args = {
73
74
  __nextHasNoMarginBottom: true,
75
+ __next40pxDefaultSize: true,
74
76
  help: 'Please select how transparent you would like this.',
75
77
  initialPosition: 50,
76
78
  label: 'Opacity',
@@ -106,6 +108,7 @@ export const WithAnyStep: StoryFn< typeof RangeControl > = ( {
106
108
  };
107
109
  WithAnyStep.args = {
108
110
  __nextHasNoMarginBottom: true,
111
+ __next40pxDefaultSize: true,
109
112
  label: 'Brightness',
110
113
  step: 'any',
111
114
  };
@@ -170,6 +173,7 @@ export const WithIntegerStepAndMarks: StoryFn< typeof RangeControl > =
170
173
 
171
174
  WithIntegerStepAndMarks.args = {
172
175
  __nextHasNoMarginBottom: true,
176
+ __next40pxDefaultSize: true,
173
177
  label: 'Integer Step',
174
178
  marks: marksBase,
175
179
  max: 10,
@@ -187,6 +191,7 @@ export const WithDecimalStepAndMarks: StoryFn< typeof RangeControl > =
187
191
 
188
192
  WithDecimalStepAndMarks.args = {
189
193
  __nextHasNoMarginBottom: true,
194
+ __next40pxDefaultSize: true,
190
195
  marks: [
191
196
  ...marksBase,
192
197
  { value: 3.5, label: '3.5' },
@@ -207,6 +212,7 @@ export const WithNegativeMinimumAndMarks: StoryFn< typeof RangeControl > =
207
212
 
208
213
  WithNegativeMinimumAndMarks.args = {
209
214
  __nextHasNoMarginBottom: true,
215
+ __next40pxDefaultSize: true,
210
216
  marks: marksWithNegatives,
211
217
  max: 10,
212
218
  min: -10,
@@ -223,6 +229,7 @@ export const WithNegativeRangeAndMarks: StoryFn< typeof RangeControl > =
223
229
 
224
230
  WithNegativeRangeAndMarks.args = {
225
231
  __nextHasNoMarginBottom: true,
232
+ __next40pxDefaultSize: true,
226
233
  marks: marksWithNegatives,
227
234
  max: -1,
228
235
  min: -10,
@@ -239,6 +246,7 @@ export const WithAnyStepAndMarks: StoryFn< typeof RangeControl > =
239
246
 
240
247
  WithAnyStepAndMarks.args = {
241
248
  __nextHasNoMarginBottom: true,
249
+ __next40pxDefaultSize: true,
242
250
  marks: marksBase,
243
251
  max: 10,
244
252
  min: 0,
@@ -18,7 +18,13 @@ const fireChangeEvent = ( input: HTMLInputElement, value?: number | string ) =>
18
18
  const RangeControl = (
19
19
  props: React.ComponentProps< typeof _RangeControl >
20
20
  ) => {
21
- return <_RangeControl { ...props } __nextHasNoMarginBottom />;
21
+ return (
22
+ <_RangeControl
23
+ { ...props }
24
+ __nextHasNoMarginBottom
25
+ __next40pxDefaultSize
26
+ />
27
+ );
22
28
  };
23
29
 
24
30
  describe( 'RangeControl', () => {
@@ -233,6 +233,13 @@ export type RangeControlProps = Pick<
233
233
  * @default true
234
234
  */
235
235
  withInputField?: boolean;
236
+ /**
237
+ * Do not throw a warning for the deprecated 36px default size.
238
+ * For internal components of other components that already throw the warning.
239
+ *
240
+ * @ignore
241
+ */
242
+ __shouldNotWarnDeprecated36pxSize?: boolean;
236
243
  };
237
244
 
238
245
  export type RailProps = MarksProps & {
@@ -10,7 +10,8 @@ import ResponsiveWrapper from '..';
10
10
 
11
11
  const meta: Meta< typeof ResponsiveWrapper > = {
12
12
  component: ResponsiveWrapper,
13
- title: 'Components/ResponsiveWrapper',
13
+ title: 'Components/Layout/ResponsiveWrapper',
14
+ id: 'components-responsivewrapper',
14
15
  argTypes: {
15
16
  children: { control: { type: null } },
16
17
  },
@@ -14,7 +14,8 @@ import { useState } from '@wordpress/element';
14
14
  import SearchControl from '..';
15
15
 
16
16
  const meta: Meta< typeof SearchControl > = {
17
- title: 'Components/SearchControl',
17
+ title: 'Components/Selection & Input/Common/SearchControl',
18
+ id: 'components-searchcontrol',
18
19
  component: SearchControl,
19
20
  argTypes: {
20
21
  onChange: { action: 'onChange' },
@@ -15,7 +15,8 @@ import SelectControl from '../';
15
15
  import { InputControlPrefixWrapper } from '../../input-control/input-prefix-wrapper';
16
16
 
17
17
  const meta: Meta< typeof SelectControl > = {
18
- title: 'Components/SelectControl',
18
+ title: 'Components/Selection & Input/Common/SelectControl',
19
+ id: 'components-selectcontrol',
19
20
  component: SelectControl,
20
21
  argTypes: {
21
22
  help: { control: { type: 'text' } },
@@ -1,18 +1,18 @@
1
- # Slot Fill
1
+ # Slot/Fill
2
2
 
3
- Slot and Fill are a pair of components which enable developers to render elsewhere in a React element tree, a pattern often referred to as "portal" rendering. It is a pattern for component extensibility, where a single Slot may be occupied by an indeterminate number of Fills elsewhere in the application.
3
+ `Slot` and `Fill` are a pair of components which enable developers to render React UI elsewhere in a React element tree, a pattern often referred to as "portal" rendering. It is a pattern for component extensibility, where a single `Slot` may be occupied by multiple `Fill`s rendered in different parts of the application.
4
4
 
5
- Slot Fill is heavily inspired by the [`react-slot-fill` library](https://github.com/camwest/react-slot-fill), but uses React's own portal rendering API.
5
+ Slot/Fill was originally inspired by the [`react-slot-fill` library](https://github.com/camwest/react-slot-fill).
6
6
 
7
7
  ## Usage
8
8
 
9
- At the root of your application, you must render a `SlotFillProvider` which coordinates Slot and Fill rendering.
9
+ At the root of your application, you must render a `SlotFillProvider` which coordinates `Slot` and `Fill` rendering.
10
10
 
11
- Then, render a Slot component anywhere in your application, giving it a name.
11
+ Then, render a `Slot` component anywhere in your application, giving it a `name`. The `name` is either a `string` or a symbol. Symbol names are useful for slots that are supposed to be private, accessible only to clients that have access to the symbol value.
12
12
 
13
- Any Fill will automatically occupy this Slot space, even if rendered elsewhere in the application.
13
+ Any `Fill` will render its UI in this `Slot` space, even if rendered elsewhere in the application.
14
14
 
15
- You can either use the Fill component directly, or a wrapper component type as in the below example to abstract the slot name from consumer awareness.
15
+ You can either use the `Fill` component directly, or create a wrapper component (as in the following example) to hide the slot name from the consumer.
16
16
 
17
17
  ```jsx
18
18
  import {
@@ -43,7 +43,7 @@ const MySlotFillProvider = () => {
43
43
  };
44
44
  ```
45
45
 
46
- There is also `createSlotFill` helper method which was created to simplify the process of matching the corresponding `Slot` and `Fill` components:
46
+ There is also the `createSlotFill` helper method which was created to simplify the process of matching the corresponding `Slot` and `Fill` components:
47
47
 
48
48
  ```jsx
49
49
  const { Fill, Slot } = createSlotFill( 'Toolbar' );
@@ -59,18 +59,27 @@ const Toolbar = () => (
59
59
 
60
60
  ## Props
61
61
 
62
- The `SlotFillProvider` component does not accept any props.
62
+ The `SlotFillProvider` component does not accept any props (except `children`).
63
63
 
64
64
  Both `Slot` and `Fill` accept a `name` string prop, where a `Slot` with a given `name` will render the `children` of any associated `Fill`s.
65
65
 
66
- `Slot` accepts a `bubblesVirtually` prop which changes the event bubbling behaviour:
66
+ `Slot` accepts a `bubblesVirtually` prop which changes the method how the `Fill` children are rendered. With `bubblesVirtually`, the `Fill` is rendered using a React portal. That affects the event bubbling and React context propagation behaviour:
67
67
 
68
- - By default, events will bubble to their parents on the DOM hierarchy (native event bubbling)
69
- - If `bubblesVirtually` is set to true, events will bubble to their virtual parent in the React elements hierarchy instead.
68
+ ### `bubblesVirtually=false`
70
69
 
71
- `Slot` with `bubblesVirtually` set to true also accept optional `className` and `style` props to add to the slot container.
70
+ - events will bubble to their parents on the DOM hierarchy (native event bubbling)
71
+ - the React elements inside the `Fill` will be rendered with React context of the `Slot`
72
+ - renders the `Fill` elements directly, inside a `Fragment`, with no wrapper DOM element
72
73
 
73
- `Slot` **without** `bubblesVirtually` accepts an optional `children` function prop, which takes `fills` as a param. It allows you to perform additional processing and wrap `fills` conditionally.
74
+ ### `bubblesVirtually=true`
75
+
76
+ - events will bubble to their virtual (React) parent in the React elements hierarchy
77
+ - the React elements inside the `Fill` will keep the React context of the `Fill` and its parents
78
+ - renders a wrapper DOM element inside which the `Fill` elements are rendered (used as an argument for React `createPortal`)
79
+
80
+ `Slot` with `bubblesVirtually=true` renders a wrapper DOM element (a `div` by default) and accepts additional props that customize this element, like `className` or `style`. You can also replace the `div` with another element by passing an `as` prop.
81
+
82
+ `Slot` **without** `bubblesVirtually` accepts an optional `children` prop, which is a function that receives `fills` array as a param. It allows you to perform additional processing: render a placeholder when there are no fills, or render a wrapper only when there are fills.
74
83
 
75
84
  _Example_:
76
85
 
@@ -90,7 +99,9 @@ const Toolbar = ( { isMobile } ) => (
90
99
  );
91
100
  ```
92
101
 
93
- Props can also be passed from a `Slot` to a `Fill` by using the prop `fillProps` on the `Slot`:
102
+ Additional information (props) can also be passed from a `Slot` to a `Fill` by a combination of:
103
+ 1. Adding a `fillProps` prop to the `Slot`.
104
+ 2. Passing a function as `children` to the `Fill`. This function will receive the `fillProps` as an argument.
94
105
 
95
106
  ```jsx
96
107
  const { Fill, Slot } = createSlotFill( 'Toolbar' );
@@ -1,50 +1,40 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useRef, useState, useEffect, createPortal } from '@wordpress/element';
4
+ import { useObservableValue } from '@wordpress/compose';
5
+ import {
6
+ useContext,
7
+ useReducer,
8
+ useRef,
9
+ useEffect,
10
+ createPortal,
11
+ } from '@wordpress/element';
5
12
 
6
13
  /**
7
14
  * Internal dependencies
8
15
  */
9
- import useSlot from './use-slot';
16
+ import SlotFillContext from './slot-fill-context';
10
17
  import StyleProvider from '../../style-provider';
11
18
  import type { FillComponentProps } from '../types';
12
19
 
13
- function useForceUpdate() {
14
- const [ , setState ] = useState( {} );
15
- const mountedRef = useRef( true );
16
-
17
- useEffect( () => {
18
- mountedRef.current = true;
19
- return () => {
20
- mountedRef.current = false;
21
- };
22
- }, [] );
23
-
24
- return () => {
25
- if ( mountedRef.current ) {
26
- setState( {} );
27
- }
28
- };
29
- }
30
-
31
- export default function Fill( props: FillComponentProps ) {
32
- const { name, children } = props;
33
- const { registerFill, unregisterFill, ...slot } = useSlot( name );
34
- const rerender = useForceUpdate();
20
+ export default function Fill( { name, children }: FillComponentProps ) {
21
+ const registry = useContext( SlotFillContext );
22
+ const slot = useObservableValue( registry.slots, name );
23
+ const [ , rerender ] = useReducer( () => [], [] );
35
24
  const ref = useRef( { rerender } );
36
25
 
37
26
  useEffect( () => {
38
27
  // We register fills so we can keep track of their existence.
39
28
  // Some Slot implementations need to know if there're already fills
40
29
  // registered so they can choose to render themselves or not.
41
- registerFill( ref );
30
+ const refValue = ref.current;
31
+ registry.registerFill( name, refValue );
42
32
  return () => {
43
- unregisterFill( ref );
33
+ registry.unregisterFill( name, refValue );
44
34
  };
45
- }, [ registerFill, unregisterFill ] );
35
+ }, [ registry, name ] );
46
36
 
47
- if ( ! slot.ref || ! slot.ref.current ) {
37
+ if ( ! slot || ! slot.ref.current ) {
48
38
  return null;
49
39
  }
50
40
 
@@ -34,15 +34,23 @@ function createSlotRegistry(): SlotFillBubblesVirtuallyContext {
34
34
 
35
35
  const unregisterSlot: SlotFillBubblesVirtuallyContext[ 'unregisterSlot' ] =
36
36
  ( name, ref ) => {
37
+ const slot = slots.get( name );
38
+ if ( ! slot ) {
39
+ return;
40
+ }
41
+
37
42
  // Make sure we're not unregistering a slot registered by another element
38
43
  // See https://github.com/WordPress/gutenberg/pull/19242#issuecomment-590295412
39
- if ( slots.get( name )?.ref === ref ) {
40
- slots.delete( name );
44
+ if ( slot.ref !== ref ) {
45
+ return;
41
46
  }
47
+
48
+ slots.delete( name );
42
49
  };
43
50
 
44
51
  const updateSlot: SlotFillBubblesVirtuallyContext[ 'updateSlot' ] = (
45
52
  name,
53
+ ref,
46
54
  fillProps
47
55
  ) => {
48
56
  const slot = slots.get( name );
@@ -50,6 +58,10 @@ function createSlotRegistry(): SlotFillBubblesVirtuallyContext {
50
58
  return;
51
59
  }
52
60
 
61
+ if ( slot.ref !== ref ) {
62
+ return;
63
+ }
64
+
53
65
  if ( isShallowEqual( slot.fillProps, fillProps ) ) {
54
66
  return;
55
67
  }
@@ -58,7 +70,7 @@ function createSlotRegistry(): SlotFillBubblesVirtuallyContext {
58
70
  const slotFills = fills.get( name );
59
71
  if ( slotFills ) {
60
72
  // Force update fills.
61
- slotFills.forEach( ( fill ) => fill.current.rerender() );
73
+ slotFills.forEach( ( fill ) => fill.rerender() );
62
74
  }
63
75
  };
64
76
 
@@ -69,20 +81,18 @@ function createSlotRegistry(): SlotFillBubblesVirtuallyContext {
69
81
  fills.set( name, [ ...( fills.get( name ) || [] ), ref ] );
70
82
  };
71
83
 
72
- const unregisterFill: SlotFillBubblesVirtuallyContext[ 'registerFill' ] = (
73
- name,
74
- ref
75
- ) => {
76
- const fillsForName = fills.get( name );
77
- if ( ! fillsForName ) {
78
- return;
79
- }
84
+ const unregisterFill: SlotFillBubblesVirtuallyContext[ 'unregisterFill' ] =
85
+ ( name, ref ) => {
86
+ const fillsForName = fills.get( name );
87
+ if ( ! fillsForName ) {
88
+ return;
89
+ }
80
90
 
81
- fills.set(
82
- name,
83
- fillsForName.filter( ( fillRef ) => fillRef !== ref )
84
- );
85
- };
91
+ fills.set(
92
+ name,
93
+ fillsForName.filter( ( fillRef ) => fillRef !== ref )
94
+ );
95
+ };
86
96
 
87
97
  return {
88
98
  slots,
@@ -35,29 +35,33 @@ function Slot(
35
35
  as,
36
36
  // `children` is not allowed. However, if it is passed,
37
37
  // it will be displayed as is, so remove `children`.
38
- // @ts-ignore
39
38
  children,
40
39
  ...restProps
41
40
  } = props;
42
41
 
43
42
  const { registerSlot, unregisterSlot, ...registry } =
44
43
  useContext( SlotFillContext );
44
+
45
45
  const ref = useRef< HTMLElement >( null );
46
46
 
47
+ // We don't want to unregister and register the slot whenever
48
+ // `fillProps` change, which would cause the fill to be re-mounted. Instead,
49
+ // we can just update the slot (see hook below).
50
+ // For more context, see https://github.com/WordPress/gutenberg/pull/44403#discussion_r994415973
51
+ const fillPropsRef = useRef( fillProps );
52
+ useLayoutEffect( () => {
53
+ fillPropsRef.current = fillProps;
54
+ }, [ fillProps ] );
55
+
47
56
  useLayoutEffect( () => {
48
- registerSlot( name, ref, fillProps );
57
+ registerSlot( name, ref, fillPropsRef.current );
49
58
  return () => {
50
59
  unregisterSlot( name, ref );
51
60
  };
52
- // We don't want to unregister and register the slot whenever
53
- // `fillProps` change, which would cause the fill to be re-mounted. Instead,
54
- // we can just update the slot (see hook below).
55
- // For more context, see https://github.com/WordPress/gutenberg/pull/44403#discussion_r994415973
56
61
  }, [ registerSlot, unregisterSlot, name ] );
57
- // fillProps may be an update that interacts with the layout, so we
58
- // useLayoutEffect.
62
+
59
63
  useLayoutEffect( () => {
60
- registry.updateSlot( name, fillProps );
64
+ registry.updateSlot( name, ref, fillPropsRef.current );
61
65
  } );
62
66
 
63
67
  return (
@@ -1,40 +1,17 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useMemo, useContext } from '@wordpress/element';
4
+ import { useContext } from '@wordpress/element';
5
5
  import { useObservableValue } from '@wordpress/compose';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
10
  import SlotFillContext from './slot-fill-context';
11
- import type {
12
- SlotFillBubblesVirtuallyFillRef,
13
- SlotFillBubblesVirtuallySlotRef,
14
- FillProps,
15
- SlotKey,
16
- } from '../types';
11
+ import type { SlotKey } from '../types';
17
12
 
18
13
  export default function useSlot( name: SlotKey ) {
19
14
  const registry = useContext( SlotFillContext );
20
15
  const slot = useObservableValue( registry.slots, name );
21
-
22
- const api = useMemo(
23
- () => ( {
24
- updateSlot: ( fillProps: FillProps ) =>
25
- registry.updateSlot( name, fillProps ),
26
- unregisterSlot: ( ref: SlotFillBubblesVirtuallySlotRef ) =>
27
- registry.unregisterSlot( name, ref ),
28
- registerFill: ( ref: SlotFillBubblesVirtuallyFillRef ) =>
29
- registry.registerFill( name, ref ),
30
- unregisterFill: ( ref: SlotFillBubblesVirtuallyFillRef ) =>
31
- registry.unregisterFill( name, ref ),
32
- } ),
33
- [ name, registry ]
34
- );
35
-
36
- return {
37
- ...slot,
38
- ...api,
39
- };
16
+ return { ...slot };
40
17
  }
@@ -11,7 +11,7 @@ import useSlot from './use-slot';
11
11
  import type { FillComponentProps } from './types';
12
12
 
13
13
  export default function Fill( { name, children }: FillComponentProps ) {
14
- const { registerFill, unregisterFill } = useContext( SlotFillContext );
14
+ const registry = useContext( SlotFillContext );
15
15
  const slot = useSlot( name );
16
16
 
17
17
  const ref = useRef( {
@@ -21,32 +21,17 @@ export default function Fill( { name, children }: FillComponentProps ) {
21
21
 
22
22
  useLayoutEffect( () => {
23
23
  const refValue = ref.current;
24
- registerFill( name, refValue );
25
- return () => unregisterFill( name, refValue );
26
- // The useLayoutEffects here are written to fire at specific times, and introducing new dependencies could cause unexpected changes in behavior.
27
- // We'll leave them as-is until a more detailed investigation/refactor can be performed.
28
- }, [] );
24
+ refValue.name = name;
25
+ registry.registerFill( name, refValue );
26
+ return () => registry.unregisterFill( name, refValue );
27
+ }, [ registry, name ] );
29
28
 
30
29
  useLayoutEffect( () => {
31
30
  ref.current.children = children;
32
31
  if ( slot ) {
33
- slot.forceUpdate();
32
+ slot.rerender();
34
33
  }
35
- // The useLayoutEffects here are written to fire at specific times, and introducing new dependencies could cause unexpected changes in behavior.
36
- // We'll leave them as-is until a more detailed investigation/refactor can be performed.
37
- }, [ children ] );
38
-
39
- useLayoutEffect( () => {
40
- if ( name === ref.current.name ) {
41
- // Ignore initial effect.
42
- return;
43
- }
44
- unregisterFill( ref.current.name, ref.current );
45
- ref.current.name = name;
46
- registerFill( name, ref.current );
47
- // The useLayoutEffects here are written to fire at specific times, and introducing new dependencies could cause unexpected changes in behavior.
48
- // We'll leave them as-is until a more detailed investigation/refactor can be performed.
49
- }, [ name ] );
34
+ }, [ slot, children ] );
50
35
 
51
36
  return null;
52
37
  }
@@ -84,17 +84,15 @@ export function createSlotFill( key: SlotKey ) {
84
84
  props: DistributiveOmit< SlotComponentProps, 'name' >
85
85
  ) => <Slot name={ key } { ...props } />;
86
86
  SlotComponent.displayName = `${ baseName }Slot`;
87
+ /**
88
+ * @deprecated 6.8.0
89
+ * Please use `slotFill.name` instead of `slotFill.Slot.__unstableName`.
90
+ */
87
91
  SlotComponent.__unstableName = key;
88
92
 
89
93
  return {
94
+ name: key,
90
95
  Fill: FillComponent,
91
96
  Slot: SlotComponent,
92
97
  };
93
98
  }
94
-
95
- export const createPrivateSlotFill = ( name: string ) => {
96
- const privateKey = Symbol( name );
97
- const privateSlotFill = createSlotFill( privateKey );
98
-
99
- return { privateKey, ...privateSlotFill };
100
- };
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import type { Component } from '@wordpress/element';
5
4
  import { useState } from '@wordpress/element';
6
5
 
7
6
  /**
@@ -11,20 +10,17 @@ import SlotFillContext from './context';
11
10
  import type {
12
11
  FillComponentProps,
13
12
  BaseSlotFillContext,
14
- BaseSlotComponentProps,
15
13
  SlotFillProviderProps,
16
14
  SlotKey,
15
+ Rerenderable,
17
16
  } from './types';
18
17
 
19
18
  function createSlotRegistry(): BaseSlotFillContext {
20
- const slots: Record< SlotKey, Component< BaseSlotComponentProps > > = {};
19
+ const slots: Record< SlotKey, Rerenderable > = {};
21
20
  const fills: Record< SlotKey, FillComponentProps[] > = {};
22
21
  let listeners: Array< () => void > = [];
23
22
 
24
- function registerSlot(
25
- name: SlotKey,
26
- slot: Component< BaseSlotComponentProps >
27
- ) {
23
+ function registerSlot( name: SlotKey, slot: Rerenderable ) {
28
24
  const previousSlot = slots[ name ];
29
25
  slots[ name ] = slot;
30
26
  triggerListeners();
@@ -38,7 +34,7 @@ function createSlotRegistry(): BaseSlotFillContext {
38
34
  // assigned into the instance, such that its own rendering of children
39
35
  // will be empty (the new Slot will subsume all fills for this name).
40
36
  if ( previousSlot ) {
41
- previousSlot.forceUpdate();
37
+ previousSlot.rerender();
42
38
  }
43
39
  }
44
40
 
@@ -47,10 +43,7 @@ function createSlotRegistry(): BaseSlotFillContext {
47
43
  forceUpdateSlot( name );
48
44
  }
49
45
 
50
- function unregisterSlot(
51
- name: SlotKey,
52
- instance: Component< BaseSlotComponentProps >
53
- ) {
46
+ function unregisterSlot( name: SlotKey, instance: Rerenderable ) {
54
47
  // If a previous instance of a Slot by this name unmounts, do nothing,
55
48
  // as the slot and its fills should only be removed for the current
56
49
  // known instance.
@@ -68,15 +61,13 @@ function createSlotRegistry(): BaseSlotFillContext {
68
61
  forceUpdateSlot( name );
69
62
  }
70
63
 
71
- function getSlot(
72
- name: SlotKey
73
- ): Component< BaseSlotComponentProps > | undefined {
64
+ function getSlot( name: SlotKey ): Rerenderable | undefined {
74
65
  return slots[ name ];
75
66
  }
76
67
 
77
68
  function getFills(
78
69
  name: SlotKey,
79
- slotInstance: Component< BaseSlotComponentProps >
70
+ slotInstance: Rerenderable
80
71
  ): FillComponentProps[] {
81
72
  // Fills should only be returned for the current instance of the slot
82
73
  // in which they occupy.
@@ -90,7 +81,7 @@ function createSlotRegistry(): BaseSlotFillContext {
90
81
  const slot = getSlot( name );
91
82
 
92
83
  if ( slot ) {
93
- slot.forceUpdate();
84
+ slot.rerender();
94
85
  }
95
86
  }
96
87