@wordpress/components 37.0.0 → 38.0.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 (483) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +46 -0
  3. package/build/autocomplete/index.cjs +3 -1
  4. package/build/autocomplete/index.cjs.map +2 -2
  5. package/build/color-picker/component.cjs +14 -5
  6. package/build/color-picker/component.cjs.map +2 -2
  7. package/build/color-picker/picker.cjs +95 -23
  8. package/build/color-picker/picker.cjs.map +2 -2
  9. package/build/confirm-dialog/component.cjs +86 -4
  10. package/build/confirm-dialog/component.cjs.map +3 -3
  11. package/build/content-editable-control/index.cjs +19 -9
  12. package/build/content-editable-control/index.cjs.map +3 -3
  13. package/build/custom-select-control/index.cjs +1 -2
  14. package/build/custom-select-control/index.cjs.map +2 -2
  15. package/build/disabled/index.cjs +87 -4
  16. package/build/disabled/index.cjs.map +4 -4
  17. package/build/form-token-field/index.cjs +87 -2
  18. package/build/form-token-field/index.cjs.map +3 -3
  19. package/build/gradient-picker/index.cjs +26 -20
  20. package/build/gradient-picker/index.cjs.map +2 -2
  21. package/build/input-control/index.cjs +0 -1
  22. package/build/input-control/index.cjs.map +2 -2
  23. package/build/input-control/styles/input-control-styles.cjs +23 -31
  24. package/build/input-control/styles/input-control-styles.cjs.map +2 -2
  25. package/build/private-apis.cjs +0 -2
  26. package/build/private-apis.cjs.map +3 -3
  27. package/build/range-control/index.cjs +0 -1
  28. package/build/range-control/index.cjs.map +2 -2
  29. package/build/sandbox/index.cjs +23 -4
  30. package/build/sandbox/index.cjs.map +3 -3
  31. package/build/search-control/index.cjs +93 -10
  32. package/build/search-control/index.cjs.map +4 -4
  33. package/build/select-control/index.cjs +0 -1
  34. package/build/select-control/index.cjs.map +2 -2
  35. package/build/select-control/styles/select-control-styles.cjs +9 -16
  36. package/build/select-control/styles/select-control-styles.cjs.map +2 -2
  37. package/build/slot-fill/fill.cjs.map +2 -2
  38. package/build/toggle-group-control/toggle-group-control/component.cjs +91 -8
  39. package/build/toggle-group-control/toggle-group-control/component.cjs.map +4 -4
  40. package/build/toggle-group-control/toggle-group-control-option-base/component.cjs +98 -17
  41. package/build/toggle-group-control/toggle-group-control-option-base/component.cjs.map +4 -4
  42. package/build/tools-panel/tools-panel/component.cjs +6 -0
  43. package/build/tools-panel/tools-panel/component.cjs.map +2 -2
  44. package/build/tools-panel/tools-panel/hook.cjs +87 -11
  45. package/build/tools-panel/tools-panel/hook.cjs.map +4 -4
  46. package/build/tools-panel/tools-panel-header/component.cjs +87 -2
  47. package/build/tools-panel/tools-panel-header/component.cjs.map +3 -3
  48. package/build/tools-panel/tools-panel-header/hook.cjs +90 -20
  49. package/build/tools-panel/tools-panel-header/hook.cjs.map +4 -4
  50. package/build/tools-panel/tools-panel-item/hook.cjs +88 -9
  51. package/build/tools-panel/tools-panel-item/hook.cjs.map +4 -4
  52. package/build/validated-form-controls/control-with-error.cjs +3 -0
  53. package/build/validated-form-controls/control-with-error.cjs.map +2 -2
  54. package/build-module/autocomplete/index.mjs +3 -1
  55. package/build-module/autocomplete/index.mjs.map +2 -2
  56. package/build-module/color-picker/component.mjs +14 -5
  57. package/build-module/color-picker/component.mjs.map +2 -2
  58. package/build-module/color-picker/picker.mjs +96 -24
  59. package/build-module/color-picker/picker.mjs.map +2 -2
  60. package/build-module/confirm-dialog/component.mjs +86 -4
  61. package/build-module/confirm-dialog/component.mjs.map +3 -3
  62. package/build-module/content-editable-control/index.mjs +21 -11
  63. package/build-module/content-editable-control/index.mjs.map +2 -2
  64. package/build-module/custom-select-control/index.mjs +1 -2
  65. package/build-module/custom-select-control/index.mjs.map +2 -2
  66. package/build-module/disabled/index.mjs +87 -4
  67. package/build-module/disabled/index.mjs.map +3 -3
  68. package/build-module/form-token-field/index.mjs +88 -3
  69. package/build-module/form-token-field/index.mjs.map +3 -3
  70. package/build-module/gradient-picker/index.mjs +26 -20
  71. package/build-module/gradient-picker/index.mjs.map +2 -2
  72. package/build-module/input-control/index.mjs +0 -1
  73. package/build-module/input-control/index.mjs.map +2 -2
  74. package/build-module/input-control/styles/input-control-styles.mjs +23 -31
  75. package/build-module/input-control/styles/input-control-styles.mjs.map +2 -2
  76. package/build-module/private-apis.mjs +0 -2
  77. package/build-module/private-apis.mjs.map +2 -2
  78. package/build-module/range-control/index.mjs +0 -1
  79. package/build-module/range-control/index.mjs.map +2 -2
  80. package/build-module/sandbox/index.mjs +13 -4
  81. package/build-module/sandbox/index.mjs.map +2 -2
  82. package/build-module/search-control/index.mjs +93 -10
  83. package/build-module/search-control/index.mjs.map +3 -3
  84. package/build-module/select-control/index.mjs +0 -1
  85. package/build-module/select-control/index.mjs.map +2 -2
  86. package/build-module/select-control/styles/select-control-styles.mjs +9 -16
  87. package/build-module/select-control/styles/select-control-styles.mjs.map +2 -2
  88. package/build-module/slot-fill/fill.mjs.map +2 -2
  89. package/build-module/toggle-group-control/toggle-group-control/component.mjs +92 -9
  90. package/build-module/toggle-group-control/toggle-group-control/component.mjs.map +3 -3
  91. package/build-module/toggle-group-control/toggle-group-control-option-base/component.mjs +99 -18
  92. package/build-module/toggle-group-control/toggle-group-control-option-base/component.mjs.map +3 -3
  93. package/build-module/tools-panel/tools-panel/component.mjs +6 -0
  94. package/build-module/tools-panel/tools-panel/component.mjs.map +2 -2
  95. package/build-module/tools-panel/tools-panel/hook.mjs +87 -11
  96. package/build-module/tools-panel/tools-panel/hook.mjs.map +3 -3
  97. package/build-module/tools-panel/tools-panel-header/component.mjs +87 -2
  98. package/build-module/tools-panel/tools-panel-header/component.mjs.map +3 -3
  99. package/build-module/tools-panel/tools-panel-header/hook.mjs +90 -20
  100. package/build-module/tools-panel/tools-panel-header/hook.mjs.map +3 -3
  101. package/build-module/tools-panel/tools-panel-item/hook.mjs +89 -10
  102. package/build-module/tools-panel/tools-panel-item/hook.mjs.map +3 -3
  103. package/build-module/validated-form-controls/control-with-error.mjs +3 -0
  104. package/build-module/validated-form-controls/control-with-error.mjs.map +2 -2
  105. package/build-style/style-rtl.css +20 -24
  106. package/build-style/style.css +20 -24
  107. package/build-types/autocomplete/index.d.ts +7 -3
  108. package/build-types/autocomplete/index.d.ts.map +1 -1
  109. package/build-types/border-box-control/border-box-control/component.d.ts +1 -3
  110. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  111. package/build-types/border-box-control/stories/index.story.d.ts +1 -3
  112. package/build-types/border-box-control/stories/index.story.d.ts.map +1 -1
  113. package/build-types/border-box-control/types.d.ts +1 -15
  114. package/build-types/border-box-control/types.d.ts.map +1 -1
  115. package/build-types/box-control/input-control.d.ts +3 -0
  116. package/build-types/box-control/input-control.d.ts.map +1 -0
  117. package/build-types/box-control/styles/box-control-styles.d.ts +4 -8
  118. package/build-types/box-control/styles/box-control-styles.d.ts.map +1 -1
  119. package/build-types/box-control/types.d.ts +1 -8
  120. package/build-types/box-control/types.d.ts.map +1 -1
  121. package/build-types/card/context.d.ts +3 -0
  122. package/build-types/card/context.d.ts.map +1 -0
  123. package/build-types/color-picker/component.d.ts.map +1 -1
  124. package/build-types/color-picker/picker.d.ts +17 -1
  125. package/build-types/color-picker/picker.d.ts.map +1 -1
  126. package/build-types/color-picker/styles.d.ts +4 -8
  127. package/build-types/color-picker/styles.d.ts.map +1 -1
  128. package/build-types/color-picker/types.d.ts +2 -0
  129. package/build-types/color-picker/types.d.ts.map +1 -1
  130. package/build-types/confirm-dialog/component.d.ts.map +1 -1
  131. package/build-types/content-editable-control/index.d.ts.map +1 -1
  132. package/build-types/context/wordpress-component.d.ts +2 -1
  133. package/build-types/context/wordpress-component.d.ts.map +1 -1
  134. package/build-types/custom-select-control/index.d.ts.map +1 -1
  135. package/build-types/custom-select-control/types.d.ts +1 -8
  136. package/build-types/custom-select-control/types.d.ts.map +1 -1
  137. package/build-types/date-time/date/index.d.ts +23 -0
  138. package/build-types/date-time/date/index.d.ts.map +1 -0
  139. package/build-types/date-time/date/styles.d.ts +45 -0
  140. package/build-types/date-time/date/styles.d.ts.map +1 -0
  141. package/build-types/date-time/date/test/index.d.ts +2 -0
  142. package/build-types/date-time/date/test/index.d.ts.map +1 -0
  143. package/build-types/date-time/date/test/use-lilius.d.ts +2 -0
  144. package/build-types/date-time/date/test/use-lilius.d.ts.map +1 -0
  145. package/build-types/date-time/date/use-lilius/index.d.ts +169 -0
  146. package/build-types/date-time/date/use-lilius/index.d.ts.map +1 -0
  147. package/build-types/date-time/time/index.d.ts +27 -0
  148. package/build-types/date-time/time/index.d.ts.map +1 -0
  149. package/build-types/date-time/time/styles.d.ts +93 -0
  150. package/build-types/date-time/time/styles.d.ts.map +1 -0
  151. package/build-types/date-time/time/test/index.d.ts +2 -0
  152. package/build-types/date-time/time/test/index.d.ts.map +1 -0
  153. package/build-types/date-time/time/time-input/index.d.ts +4 -0
  154. package/build-types/date-time/time/time-input/index.d.ts.map +1 -0
  155. package/build-types/date-time/time/time-input/test/index.d.ts +2 -0
  156. package/build-types/date-time/time/time-input/test/index.d.ts.map +1 -0
  157. package/build-types/date-time/time/timezone.d.ts +7 -0
  158. package/build-types/date-time/time/timezone.d.ts.map +1 -0
  159. package/build-types/date-time/time-picker/styles.d.ts +8 -16
  160. package/build-types/date-time/time-picker/styles.d.ts.map +1 -1
  161. package/build-types/disabled/index.d.ts.map +1 -1
  162. package/build-types/divider/styles.d.ts +10 -0
  163. package/build-types/divider/styles.d.ts.map +1 -0
  164. package/build-types/flex/styles.d.ts +17 -0
  165. package/build-types/flex/styles.d.ts.map +1 -0
  166. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -4
  167. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts.map +1 -1
  168. package/build-types/font-size-picker/index.d.ts +12 -2
  169. package/build-types/font-size-picker/index.d.ts.map +1 -1
  170. package/build-types/font-size-picker/stories/e2e/index.story.d.ts +12 -1
  171. package/build-types/font-size-picker/stories/e2e/index.story.d.ts.map +1 -1
  172. package/build-types/font-size-picker/types.d.ts +2 -15
  173. package/build-types/font-size-picker/types.d.ts.map +1 -1
  174. package/build-types/form-token-field/index.d.ts.map +1 -1
  175. package/build-types/gradient-picker/index.d.ts.map +1 -1
  176. package/build-types/gradient-picker/stories/index.story.d.ts +1 -0
  177. package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
  178. package/build-types/gradient-picker/test/index.d.ts +2 -0
  179. package/build-types/gradient-picker/test/index.d.ts.map +1 -0
  180. package/build-types/gradient-picker/types.d.ts +19 -4
  181. package/build-types/gradient-picker/types.d.ts.map +1 -1
  182. package/build-types/input-control/index.d.ts.map +1 -1
  183. package/build-types/input-control/styles/input-control-styles.d.ts +0 -6
  184. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  185. package/build-types/input-control/types.d.ts +1 -8
  186. package/build-types/input-control/types.d.ts.map +1 -1
  187. package/build-types/mobile/image/constants.d.ts +5 -0
  188. package/build-types/mobile/image/constants.d.ts.map +1 -0
  189. package/build-types/navigation/back-button/index.d.ts +7 -0
  190. package/build-types/navigation/back-button/index.d.ts.map +1 -0
  191. package/build-types/navigation/constants.d.ts +3 -0
  192. package/build-types/navigation/constants.d.ts.map +1 -0
  193. package/build-types/navigation/context.d.ts +4 -0
  194. package/build-types/navigation/context.d.ts.map +1 -0
  195. package/build-types/navigation/group/context.d.ts +7 -0
  196. package/build-types/navigation/group/context.d.ts.map +1 -0
  197. package/build-types/navigation/group/index.d.ts +7 -0
  198. package/build-types/navigation/group/index.d.ts.map +1 -0
  199. package/build-types/navigation/index.d.ts +46 -0
  200. package/build-types/navigation/index.d.ts.map +1 -0
  201. package/build-types/navigation/item/base-content.d.ts +3 -0
  202. package/build-types/navigation/item/base-content.d.ts.map +1 -0
  203. package/build-types/navigation/item/base.d.ts +3 -0
  204. package/build-types/navigation/item/base.d.ts.map +1 -0
  205. package/build-types/navigation/item/index.d.ts +7 -0
  206. package/build-types/navigation/item/index.d.ts.map +1 -0
  207. package/build-types/navigation/item/use-navigation-tree-item.d.ts +3 -0
  208. package/build-types/navigation/item/use-navigation-tree-item.d.ts.map +1 -0
  209. package/build-types/navigation/menu/context.d.ts +7 -0
  210. package/build-types/navigation/menu/context.d.ts.map +1 -0
  211. package/build-types/navigation/menu/index.d.ts +7 -0
  212. package/build-types/navigation/menu/index.d.ts.map +1 -0
  213. package/build-types/navigation/menu/menu-title-search.d.ts +3 -0
  214. package/build-types/navigation/menu/menu-title-search.d.ts.map +1 -0
  215. package/build-types/navigation/menu/menu-title.d.ts +3 -0
  216. package/build-types/navigation/menu/menu-title.d.ts.map +1 -0
  217. package/build-types/navigation/menu/search-no-results-found.d.ts +3 -0
  218. package/build-types/navigation/menu/search-no-results-found.d.ts.map +1 -0
  219. package/build-types/navigation/menu/use-navigation-tree-menu.d.ts +3 -0
  220. package/build-types/navigation/menu/use-navigation-tree-menu.d.ts.map +1 -0
  221. package/build-types/navigation/stories/index.story.d.ts +23 -0
  222. package/build-types/navigation/stories/index.story.d.ts.map +1 -0
  223. package/build-types/navigation/stories/utils/controlled-state.d.ts +7 -0
  224. package/build-types/navigation/stories/utils/controlled-state.d.ts.map +1 -0
  225. package/build-types/navigation/stories/utils/default.d.ts +10 -0
  226. package/build-types/navigation/stories/utils/default.d.ts.map +1 -0
  227. package/build-types/navigation/stories/utils/group.d.ts +10 -0
  228. package/build-types/navigation/stories/utils/group.d.ts.map +1 -0
  229. package/build-types/navigation/stories/utils/hide-if-empty.d.ts +10 -0
  230. package/build-types/navigation/stories/utils/hide-if-empty.d.ts.map +1 -0
  231. package/build-types/navigation/stories/utils/more-examples.d.ts +10 -0
  232. package/build-types/navigation/stories/utils/more-examples.d.ts.map +1 -0
  233. package/build-types/navigation/stories/utils/search.d.ts +10 -0
  234. package/build-types/navigation/stories/utils/search.d.ts.map +1 -0
  235. package/build-types/navigation/styles/navigation-styles.d.ts +55 -0
  236. package/build-types/navigation/styles/navigation-styles.d.ts.map +1 -0
  237. package/build-types/navigation/test/index.d.ts +2 -0
  238. package/build-types/navigation/test/index.d.ts.map +1 -0
  239. package/build-types/navigation/types.d.ts +266 -0
  240. package/build-types/navigation/types.d.ts.map +1 -0
  241. package/build-types/navigation/use-create-navigation-tree.d.ts +15 -0
  242. package/build-types/navigation/use-create-navigation-tree.d.ts.map +1 -0
  243. package/build-types/navigation/use-navigation-tree-nodes.d.ts +10 -0
  244. package/build-types/navigation/use-navigation-tree-nodes.d.ts.map +1 -0
  245. package/build-types/navigation/utils.d.ts +3 -0
  246. package/build-types/navigation/utils.d.ts.map +1 -0
  247. package/build-types/number-control/index.d.ts +2 -4
  248. package/build-types/number-control/index.d.ts.map +1 -1
  249. package/build-types/number-control/stories/index.story.d.ts +2 -4
  250. package/build-types/number-control/stories/index.story.d.ts.map +1 -1
  251. package/build-types/number-control/types.d.ts +1 -15
  252. package/build-types/number-control/types.d.ts.map +1 -1
  253. package/build-types/private-apis.d.ts.map +1 -1
  254. package/build-types/range-control/index.d.ts +2 -4
  255. package/build-types/range-control/index.d.ts.map +1 -1
  256. package/build-types/range-control/styles/range-control-styles.d.ts +2 -4
  257. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  258. package/build-types/range-control/types.d.ts +2 -16
  259. package/build-types/range-control/types.d.ts.map +1 -1
  260. package/build-types/sandbox/index.d.ts.map +1 -1
  261. package/build-types/sandbox/types.d.ts +11 -0
  262. package/build-types/sandbox/types.d.ts.map +1 -1
  263. package/build-types/search-control/index.d.ts.map +1 -1
  264. package/build-types/search-control/types.d.ts +1 -1
  265. package/build-types/search-control/types.d.ts.map +1 -1
  266. package/build-types/select-control/index.d.ts.map +1 -1
  267. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  268. package/build-types/select-control/types.d.ts +0 -7
  269. package/build-types/select-control/types.d.ts.map +1 -1
  270. package/build-types/slot-fill/fill.d.ts.map +1 -1
  271. package/build-types/slot-fill/stories/index.story.d.ts +1 -6
  272. package/build-types/slot-fill/stories/index.story.d.ts.map +1 -1
  273. package/build-types/surface/styles.d.ts +11 -0
  274. package/build-types/surface/styles.d.ts.map +1 -0
  275. package/build-types/theme/styles.d.ts +10 -0
  276. package/build-types/theme/styles.d.ts.map +1 -0
  277. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +0 -1
  278. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  279. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  280. package/build-types/toggle-group-control/types.d.ts +0 -7
  281. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  282. package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
  283. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  284. package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
  285. package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
  286. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  287. package/build-types/tree-select/types.d.ts +1 -8
  288. package/build-types/tree-select/types.d.ts.map +1 -1
  289. package/build-types/truncate/styles.d.ts +2 -0
  290. package/build-types/truncate/styles.d.ts.map +1 -0
  291. package/build-types/unit-control/index.d.ts +2 -4
  292. package/build-types/unit-control/index.d.ts.map +1 -1
  293. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -4
  294. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  295. package/build-types/unit-control/types.d.ts +1 -15
  296. package/build-types/unit-control/types.d.ts.map +1 -1
  297. package/build-types/utils/deprecated-36px-size.d.ts +7 -0
  298. package/build-types/utils/deprecated-36px-size.d.ts.map +1 -0
  299. package/build-types/validated-form-controls/components/number-control.d.ts +2 -4
  300. package/build-types/validated-form-controls/components/number-control.d.ts.map +1 -1
  301. package/build-types/validated-form-controls/components/range-control.d.ts +2 -4
  302. package/build-types/validated-form-controls/components/range-control.d.ts.map +1 -1
  303. package/build-types/validated-form-controls/components/stories/overview.story.d.ts +5 -0
  304. package/build-types/validated-form-controls/components/stories/overview.story.d.ts.map +1 -1
  305. package/build-types/validated-form-controls/components/toggle-group-control.d.ts +1 -2
  306. package/build-types/validated-form-controls/components/toggle-group-control.d.ts.map +1 -1
  307. package/build-types/validated-form-controls/control-with-error.d.ts.map +1 -1
  308. package/build-types/visually-hidden/test/index.d.ts +2 -0
  309. package/build-types/visually-hidden/test/index.d.ts.map +1 -0
  310. package/package.json +27 -27
  311. package/src/autocomplete/index.tsx +16 -3
  312. package/src/base-control/README.md +2 -2
  313. package/src/border-box-control/types.ts +4 -15
  314. package/src/box-control/types.ts +4 -8
  315. package/src/card/test/__snapshots__/index.tsx.snap +1 -1
  316. package/src/checkbox-control/test/__snapshots__/index.tsx.snap +1 -1
  317. package/src/color-indicator/test/__snapshots__/index.tsx.snap +1 -1
  318. package/src/color-picker/component.tsx +23 -19
  319. package/src/color-picker/picker.tsx +144 -21
  320. package/src/color-picker/test/index.tsx +502 -0
  321. package/src/color-picker/types.ts +2 -0
  322. package/src/combobox-control/style.scss +2 -2
  323. package/src/confirm-dialog/component.tsx +2 -4
  324. package/src/confirm-dialog/style.module.scss +7 -0
  325. package/src/confirm-dialog/test/index.tsx +5 -0
  326. package/src/content-editable-control/index.tsx +24 -5
  327. package/src/content-editable-control/style.module.scss +1 -1
  328. package/src/content-editable-control/test/index.tsx +20 -8
  329. package/src/context/test/__snapshots__/context-system-provider.js.snap +1 -1
  330. package/src/context/wordpress-component.ts +7 -2
  331. package/src/custom-gradient-picker/test/index.tsx +111 -1
  332. package/src/custom-select-control/index.tsx +1 -2
  333. package/src/custom-select-control/test/__snapshots__/index.tsx.snap +6 -0
  334. package/src/custom-select-control/test/index.tsx +23 -0
  335. package/src/custom-select-control/types.ts +1 -8
  336. package/src/disabled/index.tsx +7 -5
  337. package/src/disabled/style.module.scss +15 -0
  338. package/src/disabled/test/index.tsx +6 -4
  339. package/src/elevation/test/__snapshots__/index.tsx.snap +1 -1
  340. package/src/external-link/style.scss +6 -12
  341. package/src/flex/test/__snapshots__/index.tsx.snap +1 -1
  342. package/src/font-size-picker/types.ts +6 -15
  343. package/src/form-toggle/test/__snapshots__/index.tsx.snap +1 -1
  344. package/src/form-token-field/index.tsx +5 -4
  345. package/src/form-token-field/style.module.scss +6 -0
  346. package/src/form-token-field/style.scss +2 -2
  347. package/src/gradient-picker/README.md +21 -3
  348. package/src/gradient-picker/index.tsx +43 -28
  349. package/src/gradient-picker/stories/index.story.tsx +41 -5
  350. package/src/gradient-picker/test/index.tsx +148 -0
  351. package/src/gradient-picker/types.ts +24 -4
  352. package/src/h-stack/test/__snapshots__/index.tsx.snap +1 -1
  353. package/src/heading/test/__snapshots__/index.tsx.snap +1 -1
  354. package/src/higher-order/with-filters/test/__snapshots__/index.tsx.snap +1 -1
  355. package/src/input-control/index.tsx +0 -1
  356. package/src/input-control/styles/input-control-styles.tsx +0 -8
  357. package/src/input-control/test/__snapshots__/index.js.snap +11 -0
  358. package/src/input-control/test/index.js +28 -0
  359. package/src/input-control/types.ts +1 -8
  360. package/src/item-group/test/__snapshots__/index.js.snap +1 -1
  361. package/src/menu/README.md +2 -2
  362. package/src/menu-item/test/__snapshots__/index.js.snap +1 -1
  363. package/src/modal/test/index.tsx +42 -0
  364. package/src/notice/test/__snapshots__/index.tsx.snap +1 -1
  365. package/src/number-control/types.ts +1 -22
  366. package/src/panel/test/__snapshots__/body.tsx.snap +1 -1
  367. package/src/panel/test/__snapshots__/header.tsx.snap +1 -1
  368. package/src/panel/test/__snapshots__/index.tsx.snap +1 -1
  369. package/src/panel/test/__snapshots__/row.tsx.snap +1 -1
  370. package/src/private-apis.ts +0 -2
  371. package/src/range-control/index.tsx +0 -1
  372. package/src/range-control/types.ts +2 -15
  373. package/src/sandbox/index.tsx +22 -2
  374. package/src/sandbox/test/index.tsx +21 -0
  375. package/src/sandbox/types.ts +11 -0
  376. package/src/scrollable/test/__snapshots__/index.tsx.snap +1 -1
  377. package/src/search-control/index.tsx +23 -20
  378. package/src/search-control/style.module.scss +16 -0
  379. package/src/search-control/test/index.tsx +8 -0
  380. package/src/search-control/types.ts +1 -1
  381. package/src/select-control/index.tsx +0 -1
  382. package/src/select-control/styles/select-control-styles.ts +0 -7
  383. package/src/select-control/test/__snapshots__/select-control.tsx.snap +11 -0
  384. package/src/select-control/test/select-control.tsx +37 -0
  385. package/src/select-control/types.ts +0 -7
  386. package/src/shortcut/test/__snapshots__/index.tsx.snap +1 -1
  387. package/src/slot-fill/fill.tsx +3 -9
  388. package/src/slot-fill/stories/index.story.tsx +52 -10
  389. package/src/slot-fill/test/__snapshots__/slot.js.snap +1 -1
  390. package/src/slot-fill/test/slot.js +53 -11
  391. package/src/spacer/test/__snapshots__/index.tsx.snap +1 -1
  392. package/src/text/test/__snapshots__/index.tsx.snap +1 -1
  393. package/src/text-control/style.scss +1 -1
  394. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +29 -707
  395. package/src/toggle-group-control/test/index.tsx +33 -3
  396. package/src/toggle-group-control/toggle-group-control/component.tsx +11 -16
  397. package/src/toggle-group-control/toggle-group-control/style.module.scss +63 -0
  398. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +22 -24
  399. package/src/toggle-group-control/toggle-group-control-option-base/style.module.scss +88 -0
  400. package/src/toggle-group-control/types.ts +0 -7
  401. package/src/tools-panel/style.module.scss +117 -0
  402. package/src/tools-panel/test/index.tsx +105 -39
  403. package/src/tools-panel/tools-panel/component.tsx +12 -1
  404. package/src/tools-panel/tools-panel/hook.ts +13 -15
  405. package/src/tools-panel/tools-panel-header/component.tsx +6 -2
  406. package/src/tools-panel/tools-panel-header/hook.ts +7 -25
  407. package/src/tools-panel/tools-panel-item/hook.ts +16 -34
  408. package/src/tooltip/test/index.tsx +1 -1
  409. package/src/tree-grid/test/__snapshots__/cell.tsx.snap +1 -1
  410. package/src/tree-grid/test/__snapshots__/index.tsx.snap +1 -1
  411. package/src/tree-grid/test/__snapshots__/roving-tab-index-item.tsx.snap +1 -1
  412. package/src/tree-grid/test/__snapshots__/roving-tab-index.tsx.snap +1 -1
  413. package/src/tree-grid/test/__snapshots__/row.tsx.snap +1 -1
  414. package/src/tree-select/README.md +1 -1
  415. package/src/tree-select/types.ts +1 -8
  416. package/src/unit-control/types.ts +1 -18
  417. package/src/utils/theme-variables.scss +1 -0
  418. package/src/v-stack/test/__snapshots__/index.tsx.snap +1 -1
  419. package/src/validated-form-controls/components/stories/overview.story.tsx +51 -0
  420. package/src/validated-form-controls/control-with-error.tsx +9 -0
  421. package/src/validated-form-controls/style.scss +3 -3
  422. package/src/validated-form-controls/test/control-with-error.tsx +42 -0
  423. package/src/view/test/__snapshots__/index.js.snap +1 -1
  424. package/build/confirm-dialog/styles.cjs +0 -42
  425. package/build/confirm-dialog/styles.cjs.map +0 -7
  426. package/build/disabled/styles/disabled-styles.cjs +0 -42
  427. package/build/disabled/styles/disabled-styles.cjs.map +0 -7
  428. package/build/form-token-field/styles.cjs +0 -49
  429. package/build/form-token-field/styles.cjs.map +0 -7
  430. package/build/search-control/styles.cjs +0 -74
  431. package/build/search-control/styles.cjs.map +0 -7
  432. package/build/theme/color-algorithms.cjs +0 -131
  433. package/build/theme/color-algorithms.cjs.map +0 -7
  434. package/build/theme/index.cjs +0 -160
  435. package/build/theme/index.cjs.map +0 -7
  436. package/build/theme/types.cjs +0 -19
  437. package/build/theme/types.cjs.map +0 -7
  438. package/build/toggle-group-control/toggle-group-control/styles.cjs +0 -53
  439. package/build/toggle-group-control/toggle-group-control/styles.cjs.map +0 -7
  440. package/build/toggle-group-control/toggle-group-control-option-base/styles.cjs +0 -94
  441. package/build/toggle-group-control/toggle-group-control-option-base/styles.cjs.map +0 -7
  442. package/build/tools-panel/styles.cjs +0 -129
  443. package/build/tools-panel/styles.cjs.map +0 -7
  444. package/build/utils/use-deprecated-props.cjs +0 -41
  445. package/build/utils/use-deprecated-props.cjs.map +0 -7
  446. package/build-module/confirm-dialog/styles.mjs +0 -17
  447. package/build-module/confirm-dialog/styles.mjs.map +0 -7
  448. package/build-module/disabled/styles/disabled-styles.mjs +0 -17
  449. package/build-module/disabled/styles/disabled-styles.mjs.map +0 -7
  450. package/build-module/form-token-field/styles.mjs +0 -14
  451. package/build-module/form-token-field/styles.mjs.map +0 -7
  452. package/build-module/search-control/styles.mjs +0 -38
  453. package/build-module/search-control/styles.mjs.map +0 -7
  454. package/build-module/theme/color-algorithms.mjs +0 -94
  455. package/build-module/theme/color-algorithms.mjs.map +0 -7
  456. package/build-module/theme/index.mjs +0 -129
  457. package/build-module/theme/index.mjs.map +0 -7
  458. package/build-module/theme/types.mjs +0 -1
  459. package/build-module/theme/types.mjs.map +0 -7
  460. package/build-module/toggle-group-control/toggle-group-control/styles.mjs +0 -27
  461. package/build-module/toggle-group-control/toggle-group-control/styles.mjs.map +0 -7
  462. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.mjs +0 -56
  463. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.mjs.map +0 -7
  464. package/build-module/tools-panel/styles.mjs +0 -84
  465. package/build-module/tools-panel/styles.mjs.map +0 -7
  466. package/build-module/utils/use-deprecated-props.mjs +0 -16
  467. package/build-module/utils/use-deprecated-props.mjs.map +0 -7
  468. package/src/confirm-dialog/styles.ts +0 -18
  469. package/src/disabled/styles/disabled-styles.tsx +0 -23
  470. package/src/form-token-field/styles.ts +0 -15
  471. package/src/search-control/styles.ts +0 -27
  472. package/src/theme/README.md +0 -47
  473. package/src/theme/color-algorithms.ts +0 -142
  474. package/src/theme/index.tsx +0 -80
  475. package/src/theme/stories/index.story.tsx +0 -127
  476. package/src/theme/style.module.scss +0 -4
  477. package/src/theme/test/color-algorithms.ts +0 -100
  478. package/src/theme/test/index.tsx +0 -151
  479. package/src/theme/types.ts +0 -61
  480. package/src/toggle-group-control/toggle-group-control/styles.ts +0 -84
  481. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +0 -109
  482. package/src/tools-panel/styles.ts +0 -176
  483. package/src/utils/use-deprecated-props.ts +0 -14
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Panel basic rendering should render an additional className 1`] = `
4
4
  <div>
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`PanelRow should render with the custom class name 1`] = `
4
4
  <div>
@@ -9,7 +9,6 @@ import { useDrag } from '@use-gesture/react';
9
9
  import { positionToPlacement as __experimentalPopoverLegacyPositionToPlacement } from './popover/utils';
10
10
  import { Menu } from './menu';
11
11
  import { ComponentsContext } from './context/context-system-provider';
12
- import Theme from './theme';
13
12
  import { Tabs } from './tabs';
14
13
  import { kebabCase, normalizeTextString } from './utils/strings';
15
14
  import { withIgnoreIMEEvents } from './utils/with-ignore-ime-events';
@@ -39,7 +38,6 @@ lock( privateApis, {
39
38
  __experimentalPopoverLegacyPositionToPlacement,
40
39
  ComponentsContext,
41
40
  Tabs,
42
- Theme,
43
41
  Menu,
44
42
  kebabCase,
45
43
  withIgnoreIMEEvents,
@@ -68,7 +68,6 @@ function UnforwardedRangeControl(
68
68
  // Prevent passing legacy props to internal component.
69
69
  __nextHasNoMarginBottom: _,
70
70
  __next40pxDefaultSize: _next40pxDefaultSize,
71
- __shouldNotWarnDeprecated36pxSize: _shouldNotWarnDeprecated36pxSize,
72
71
  afterIcon,
73
72
  allowReset = false,
74
73
  beforeIcon,
@@ -13,6 +13,7 @@ import type {
13
13
  */
14
14
  import type { BaseControlProps } from '../base-control/types';
15
15
  import type { IconType } from '../icon';
16
+ import type { NumberControlProps } from '../number-control/types';
16
17
 
17
18
  export type NumericProps = {
18
19
  /**
@@ -78,6 +79,7 @@ export type RangeControlProps = Pick<
78
79
  BaseControlProps,
79
80
  '__nextHasNoMarginBottom' | 'hideLabelFromVision' | 'help'
80
81
  > &
82
+ Pick< NumberControlProps, '__next40pxDefaultSize' > &
81
83
  MarksProps & {
82
84
  /**
83
85
  * If this property is added, an Icon component will be rendered
@@ -199,13 +201,6 @@ export type RangeControlProps = Pick<
199
201
  * @default 10
200
202
  */
201
203
  shiftStep?: number;
202
- /**
203
- * Start opting into the larger default height that will become the default size in a future version.
204
- *
205
- * @deprecated Default behavior since WordPress 7.1. Prop can be safely removed.
206
- * @ignore
207
- */
208
- __next40pxDefaultSize?: boolean;
209
204
  /**
210
205
  * Forcing the Tooltip UI to show or hide. This is overridden to `false`
211
206
  * when `step` is set to the special string value `any`.
@@ -230,14 +225,6 @@ export type RangeControlProps = Pick<
230
225
  * @default true
231
226
  */
232
227
  withInputField?: boolean;
233
- /**
234
- * Do not throw a warning for the deprecated 36px default size.
235
- * For internal components of other components that already throw the warning.
236
- *
237
- * @deprecated Default behavior since WordPress 7.1. Prop can be safely removed.
238
- * @ignore
239
- */
240
- __shouldNotWarnDeprecated36pxSize?: boolean;
241
228
  };
242
229
 
243
230
  export type RailProps = MarksProps & {
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -262,11 +267,16 @@ function IsolatedSandBox( {
262
267
  scripts = [],
263
268
  onFocus,
264
269
  tabIndex,
270
+ allowPopups = false,
265
271
  }: SandBoxContentProps ) {
266
272
  const ref = useRef< HTMLIFrameElement >( null );
267
273
  const [ width, setWidth ] = useState( 0 );
268
274
  const [ height, setHeight ] = useState( 0 );
269
275
 
276
+ const sandbox = clsx( 'allow-scripts', 'allow-presentation', {
277
+ 'allow-popups': allowPopups,
278
+ } );
279
+
270
280
  const srcDoc = useMemo(
271
281
  () =>
272
282
  buildSandBoxDocument( {
@@ -351,7 +361,7 @@ function IsolatedSandBox( {
351
361
  title={ title }
352
362
  tabIndex={ tabIndex }
353
363
  className="components-sandbox"
354
- sandbox="allow-scripts allow-presentation"
364
+ sandbox={ sandbox }
355
365
  srcDoc={ srcDoc }
356
366
  onFocus={ onFocus }
357
367
  width={ Math.ceil( width ) }
@@ -382,11 +392,21 @@ function SameOriginSandBox( {
382
392
  scripts = [],
383
393
  onFocus,
384
394
  tabIndex,
395
+ allowPopups = false,
385
396
  }: SandBoxContentProps ) {
386
397
  const ref = useRef< HTMLIFrameElement >( null );
387
398
  const [ width, setWidth ] = useState( 0 );
388
399
  const [ height, setHeight ] = useState( 0 );
389
400
 
401
+ const sandbox = clsx(
402
+ 'allow-scripts',
403
+ 'allow-same-origin',
404
+ 'allow-presentation',
405
+ {
406
+ 'allow-popups': allowPopups,
407
+ }
408
+ );
409
+
390
410
  function isFrameAccessible() {
391
411
  try {
392
412
  return !! ref.current?.contentDocument?.body;
@@ -510,7 +530,7 @@ function SameOriginSandBox( {
510
530
  title={ title }
511
531
  tabIndex={ tabIndex }
512
532
  className="components-sandbox"
513
- sandbox="allow-scripts allow-same-origin allow-presentation"
533
+ sandbox={ sandbox }
514
534
  onFocus={ onFocus }
515
535
  width={ Math.ceil( width ) }
516
536
  height={ Math.ceil( height ) }
@@ -49,6 +49,27 @@ describe( 'SandBox', () => {
49
49
  );
50
50
  } );
51
51
 
52
+ it( 'should not include allow-popups by default', () => {
53
+ render( <SandBox html="<p>Hello</p>" title="No Popups" /> );
54
+
55
+ const iframe = screen.getByTitle< HTMLIFrameElement >( 'No Popups' );
56
+
57
+ expect( iframe.getAttribute( 'sandbox' ) ).not.toContain(
58
+ 'allow-popups'
59
+ );
60
+ } );
61
+
62
+ it( 'should include allow-popups when allowPopups is set', () => {
63
+ render( <SandBox html="<p>Hello</p>" title="Popups" allowPopups /> );
64
+
65
+ const iframe = screen.getByTitle< HTMLIFrameElement >( 'Popups' );
66
+
67
+ expect( iframe ).toHaveAttribute(
68
+ 'sandbox',
69
+ 'allow-scripts allow-presentation allow-popups'
70
+ );
71
+ } );
72
+
52
73
  it( 'should set srcdoc with the provided html content', () => {
53
74
  render( <SandBox html="<p>Hello</p>" title="Test Title" /> );
54
75
 
@@ -10,6 +10,17 @@ export type SandBoxProps = {
10
10
  * @default false
11
11
  */
12
12
  allowSameOrigin?: boolean;
13
+ /**
14
+ * Whether to include `allow-popups` in the iframe's sandbox attribute.
15
+ * When true, content inside the iframe is allowed to open new browsing
16
+ * contexts (e.g. links that open in a new tab, or `window.open`).
17
+ *
18
+ * Enable this for previews whose content includes links that should be
19
+ * followable, such as embeds.
20
+ *
21
+ * @default false
22
+ */
23
+ allowPopups?: boolean;
13
24
  /**
14
25
  * The HTML to render in the body of the iframe document.
15
26
  *
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`props should render correctly 1`] = `
4
4
  .emotion-0 {
@@ -17,22 +17,15 @@ import deprecated from '@wordpress/deprecated';
17
17
  * Internal dependencies
18
18
  */
19
19
  import Button from '../button';
20
+ import InputControl from '../input-control';
21
+ import Icon from '../icon';
20
22
  import { InputControlPrefixWrapper } from '../input-control/input-prefix-wrapper';
21
23
  import { InputControlSuffixWrapper } from '../input-control/input-suffix-wrapper';
22
24
  import type { WordPressComponentProps } from '../context/wordpress-component';
23
25
  import type { SearchControlProps, SuffixItemProps } from './types';
24
- import { StyledInputControl, StyledIcon } from './styles';
25
-
26
- function SuffixItem( {
27
- searchRef,
28
- value,
29
- onChange,
30
- onClose,
31
- }: SuffixItemProps ) {
32
- if ( ! onClose && ! value ) {
33
- return null;
34
- }
26
+ import styles from './style.module.scss';
35
27
 
28
+ function SuffixItem( { searchRef, onChange, onClose }: SuffixItemProps ) {
36
29
  if ( onClose ) {
37
30
  deprecated( '`onClose` prop in wp.components.SearchControl', {
38
31
  since: '6.8',
@@ -86,32 +79,42 @@ function UnforwardedSearchControl(
86
79
  SearchControl,
87
80
  'components-search-control'
88
81
  );
82
+ const hasSuffix = !! onClose || !! value;
89
83
 
90
84
  return (
91
- <StyledInputControl
85
+ <InputControl
92
86
  id={ instanceId }
93
87
  hideLabelFromVision={ hideLabelFromVision }
94
88
  label={ label }
95
89
  ref={ useMergeRefs( [ searchRef, forwardedRef ] ) }
96
90
  type="search"
97
91
  size={ size }
98
- className={ clsx( 'components-search-control', className ) }
92
+ className={ clsx(
93
+ styles.input,
94
+ 'components-search-control',
95
+ className
96
+ ) }
99
97
  onChange={ ( nextValue?: string ) => onChange( nextValue ?? '' ) }
100
98
  autoComplete="off"
101
99
  placeholder={ placeholder }
102
100
  value={ value ?? '' }
103
101
  prefix={
104
102
  <InputControlPrefixWrapper variant="icon">
105
- <StyledIcon icon={ search } fill="currentColor" />
103
+ <Icon
104
+ className={ styles.icon }
105
+ icon={ search }
106
+ fill="currentColor"
107
+ />
106
108
  </InputControlPrefixWrapper>
107
109
  }
108
110
  suffix={
109
- <SuffixItem
110
- searchRef={ searchRef }
111
- value={ value }
112
- onChange={ onChange }
113
- onClose={ onClose }
114
- />
111
+ hasSuffix && (
112
+ <SuffixItem
113
+ searchRef={ searchRef }
114
+ onChange={ onChange }
115
+ onClose={ onClose }
116
+ />
117
+ )
115
118
  }
116
119
  { ...filteredRestProps }
117
120
  />
@@ -0,0 +1,16 @@
1
+ .input {
2
+ input[type="search"] {
3
+ &::-webkit-search-decoration,
4
+ &::-webkit-search-cancel-button,
5
+ &::-webkit-search-results-button,
6
+ &::-webkit-search-results-decoration {
7
+ -webkit-appearance: none;
8
+ }
9
+ }
10
+ }
11
+
12
+ .icon {
13
+ &:dir(ltr) {
14
+ transform: scaleX(-1);
15
+ }
16
+ }
@@ -59,16 +59,24 @@ describe( 'SearchControl', () => {
59
59
  expect(
60
60
  screen.queryByRole( 'button', { name: 'Reset search' } )
61
61
  ).not.toBeInTheDocument();
62
+ const paddingInlineEndWithoutSuffix =
63
+ getComputedStyle( searchInput ).paddingInlineEnd;
62
64
 
63
65
  await type( 'test', searchInput );
64
66
  const resetButton = screen.getByRole( 'button', {
65
67
  name: 'Reset search',
66
68
  } );
67
69
  expect( resetButton ).toBeVisible();
70
+ expect( getComputedStyle( searchInput ).paddingInlineEnd ).not.toBe(
71
+ paddingInlineEndWithoutSuffix
72
+ );
68
73
 
69
74
  await click( resetButton );
70
75
  expect( searchInput ).toHaveValue( '' );
71
76
  expect( onChangeSpy ).toHaveBeenLastCalledWith( '' );
77
+ expect( getComputedStyle( searchInput ).paddingInlineEnd ).toBe(
78
+ paddingInlineEndWithoutSuffix
79
+ );
72
80
  } );
73
81
 
74
82
  it( 'should render a Close button (instead of Reset) when onClose function is provided', async () => {
@@ -70,7 +70,7 @@ export type SearchControlProps = Pick< InputControlProps, 'help' | 'value' > & {
70
70
 
71
71
  export type SuffixItemProps = Pick<
72
72
  SearchControlProps,
73
- 'value' | 'onChange' | 'onClose'
73
+ 'onChange' | 'onClose'
74
74
  > & {
75
75
  searchRef: React.RefObject< HTMLInputElement | null >;
76
76
  };
@@ -50,7 +50,6 @@ function UnforwardedSelectControl< V extends string >(
50
50
  __nextHasNoMarginBottom: _,
51
51
  __next40pxDefaultSize: _next40pxDefaultSize,
52
52
  __next36pxDefaultSize: _next36pxDefaultSize,
53
- __shouldNotWarnDeprecated36pxSize: _shouldNotWarnDeprecated36pxSize,
54
53
  className,
55
54
  disabled = false,
56
55
  help,
@@ -76,12 +76,6 @@ const sizeStyles = ( { multiple, selectSize = 'default' }: SelectProps ) => {
76
76
  paddingTop: 0,
77
77
  paddingBottom: 0,
78
78
  },
79
- '__unstable-large': {
80
- height: 40,
81
- minHeight: 40,
82
- paddingTop: 0,
83
- paddingBottom: 0,
84
- },
85
79
  };
86
80
 
87
81
  const style = sizes[ selectSize ] || sizes.default;
@@ -96,7 +90,6 @@ const sizePaddings = ( { multiple, selectSize = 'default' }: SelectProps ) => {
96
90
  default: CONFIG.controlPaddingX,
97
91
  small: CONFIG.controlPaddingXSmall,
98
92
  compact: CONFIG.controlPaddingXSmall,
99
- '__unstable-large': CONFIG.controlPaddingX,
100
93
  };
101
94
 
102
95
  const selectedPadding = padding[ selectSize ] || padding.default;
@@ -0,0 +1,11 @@
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
+
3
+ exports[`SelectControl Legacy size support treats __unstable-large the same as default 1`] = `
4
+ Snapshot Diff:
5
+ Compared values have no visual difference.
6
+ `;
7
+
8
+ exports[`SelectControl Legacy size support treats __unstable-large the same as default 2`] = `
9
+ Snapshot Diff:
10
+ Compared values have no visual difference.
11
+ `;
@@ -8,6 +8,7 @@ import userEvent from '@testing-library/user-event';
8
8
  * Internal dependencies
9
9
  */
10
10
  import SelectControl from '..';
11
+ import { InputControlPrefixWrapper } from '../../input-control/input-prefix-wrapper';
11
12
 
12
13
  describe( 'SelectControl', () => {
13
14
  it( 'should not render when no options or children are provided', () => {
@@ -225,4 +226,40 @@ describe( 'SelectControl', () => {
225
226
  } );
226
227
  } );
227
228
  /* eslint-enable jest/expect-expect */
229
+
230
+ describe( 'Legacy size support', () => {
231
+ it( 'treats __unstable-large the same as default', () => {
232
+ const prefix = (
233
+ <InputControlPrefixWrapper>$</InputControlPrefixWrapper>
234
+ );
235
+ const options = [ { value: 'one', label: 'One' } ];
236
+
237
+ render(
238
+ <SelectControl
239
+ label="Test"
240
+ options={ options }
241
+ prefix={ prefix }
242
+ />
243
+ );
244
+ render(
245
+ <SelectControl
246
+ label="Test"
247
+ options={ options }
248
+ prefix={ prefix }
249
+ // @ts-expect-error testing legacy runtime support for removed size type
250
+ size="__unstable-large"
251
+ />
252
+ );
253
+
254
+ const [ defaultPrefixWrapper, legacyPrefixWrapper ] =
255
+ screen.getAllByText( '$' );
256
+ const [ defaultSelect, legacySelect ] =
257
+ screen.getAllByRole( 'combobox' );
258
+
259
+ expect( legacyPrefixWrapper ).toMatchStyleDiffSnapshot(
260
+ defaultPrefixWrapper
261
+ );
262
+ expect( legacySelect ).toMatchStyleDiffSnapshot( defaultSelect );
263
+ } );
264
+ } );
228
265
  } );
@@ -35,13 +35,6 @@ type SelectControlBaseProps< V extends string > = Pick<
35
35
  * @ignore
36
36
  */
37
37
  __next40pxDefaultSize?: boolean;
38
- /**
39
- * Do not throw a warning for the deprecated 36px default size.
40
- * For internal components of other components that already throw the warning.
41
- *
42
- * @ignore
43
- */
44
- __shouldNotWarnDeprecated36pxSize?: boolean;
45
38
  /**
46
39
  * An array of option property objects to be rendered,
47
40
  * each with a `label` and `value` property, as well as any other
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Shortcut renders passed className 1`] = `
4
4
  <span
@@ -1,6 +1,3 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
1
  import { useObservableValue } from '@wordpress/compose';
5
2
  import {
6
3
  useContext,
@@ -9,9 +6,6 @@ import {
9
6
  createPortal,
10
7
  } from '@wordpress/element';
11
8
 
12
- /**
13
- * Internal dependencies
14
- */
15
9
  import SlotFillContext from './context';
16
10
  import type { FillComponentProps } from './types';
17
11
  import StyleProvider from '../style-provider';
@@ -62,9 +56,9 @@ export default function Fill( { name, children }: FillComponentProps ) {
62
56
  : children;
63
57
 
64
58
  // When using a `Fill`, the `children` will be rendered in the document of the
65
- // `Slot`. This means that we need to wrap the `children` in a `StyleProvider`
66
- // to make sure we're referencing the right document/iframe (instead of the
67
- // context of the `Fill`'s parent).
59
+ // `Slot`. Wrap the children in a `StyleProvider` so CSS module styles and
60
+ // legacy Emotion styles target that document/iframe instead of the document
61
+ // containing the `Fill`.
68
62
  return createPortal(
69
63
  <StyleProvider document={ portalEl.ownerDocument }>
70
64
  { wrappedChildren }
@@ -1,17 +1,34 @@
1
- /**
2
- * External dependencies
3
- */
4
1
  import type { Meta, StoryFn } from '@storybook/react-vite';
2
+ import type { ReactNode } from 'react';
5
3
 
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { createContext, useContext } from '@wordpress/element';
4
+ import {
5
+ createContext,
6
+ createPortal,
7
+ useContext,
8
+ useState,
9
+ } from '@wordpress/element';
10
10
 
11
- /**
12
- * Internal dependencies
13
- */
14
11
  import { Slot, Fill, Provider as SlotFillProvider } from '../';
12
+ import { Spacer } from '../../spacer';
13
+
14
+ function IframePortal( { children }: { children: ReactNode } ) {
15
+ const [ bodyNode, setBodyNode ] = useState< HTMLElement | null >( null );
16
+
17
+ return (
18
+ <iframe
19
+ title="Cross-document SlotFill styles"
20
+ srcDoc="<!doctype html><html><body></body></html>"
21
+ onLoad={ ( event ) => {
22
+ setBodyNode(
23
+ event.currentTarget.contentDocument?.body ?? null
24
+ );
25
+ } }
26
+ style={ { border: 0, height: 160, width: '100%' } }
27
+ >
28
+ { bodyNode && createPortal( children, bodyNode ) }
29
+ </iframe>
30
+ );
31
+ }
15
32
 
16
33
  const meta: Meta< typeof Slot > = {
17
34
  tags: [ 'manifest' ],
@@ -143,3 +160,28 @@ export const WithContext: StoryFn< typeof Slot > = ( props ) => {
143
160
  WithContext.args = {
144
161
  ...Default.args,
145
162
  };
163
+
164
+ export const CrossDocumentStyles: StoryFn< typeof Slot > = () => {
165
+ return (
166
+ <SlotFillProvider>
167
+ <p>
168
+ The content below should have 32px of padding inside its
169
+ outline.
170
+ </p>
171
+ <IframePortal>
172
+ <Slot name="cross-document-styles" bubblesVirtually />
173
+ </IframePortal>
174
+ <Fill name="cross-document-styles">
175
+ <Spacer
176
+ padding={ 8 }
177
+ style={ {
178
+ display: 'inline-block',
179
+ outline: '2px solid currentColor',
180
+ } }
181
+ >
182
+ SCSS module styles rendered in another document
183
+ </Spacer>
184
+ </Fill>
185
+ </SlotFillProvider>
186
+ );
187
+ };
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Slot bubblesVirtually false should subsume another slot by the same name 1`] = `
4
4
  <div>
@@ -1,18 +1,21 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { render, screen } from '@testing-library/react';
1
+ import { render, screen, within } from '@testing-library/react';
5
2
  import userEvent from '@testing-library/user-event';
6
3
 
7
- /**
8
- * Internal dependencies
9
- */
4
+ import { Component, createPortal, useState } from '@wordpress/element';
5
+ import { registerStyle } from '@wordpress/style-runtime';
6
+
10
7
  import { Slot, Fill, Provider, useSlotFills } from '../';
11
8
 
12
- /**
13
- * WordPress dependencies
14
- */
15
- import { Component } from '@wordpress/element';
9
+ function IframePortal( { children } ) {
10
+ const [ iframe, setIframe ] = useState( null );
11
+ const body = iframe?.contentDocument?.body;
12
+
13
+ return (
14
+ <iframe title="Slot document" ref={ setIframe }>
15
+ { body && createPortal( children, body ) }
16
+ </iframe>
17
+ );
18
+ }
16
19
 
17
20
  class Filler extends Component {
18
21
  constructor() {
@@ -287,6 +290,45 @@ describe( 'Slot', () => {
287
290
  expect( console ).toHaveWarned();
288
291
  } );
289
292
 
293
+ describe( 'cross-document styles', () => {
294
+ afterEach( () => {
295
+ delete globalThis.__wpStyleRuntime;
296
+ document.head.innerHTML = '';
297
+ } );
298
+
299
+ it( 'injects registered SCSS module styles into the Slot document', () => {
300
+ const styleHash = 'slot-fill-cross-document-style';
301
+ const css = '.slot-fill-cross-document{padding:32px;}';
302
+
303
+ // CSS module registration is skipped by the Jest transform, so mirror the
304
+ // generated production call explicitly.
305
+ registerStyle( styleHash, css );
306
+
307
+ render(
308
+ <Provider>
309
+ <IframePortal>
310
+ <Slot name="cross-document" bubblesVirtually />
311
+ </IframePortal>
312
+ <Fill name="cross-document">
313
+ <div className="slot-fill-cross-document">
314
+ Styled content
315
+ </div>
316
+ </Fill>
317
+ </Provider>
318
+ );
319
+ const iframeDocument =
320
+ screen.getByTitle( 'Slot document' ).contentDocument;
321
+
322
+ const styledElement = within( iframeDocument.body ).getByText(
323
+ 'Styled content'
324
+ );
325
+ expect(
326
+ iframeDocument.defaultView.getComputedStyle( styledElement )
327
+ .padding
328
+ ).toBe( '32px' );
329
+ } );
330
+ } );
331
+
290
332
  describe.each( [ false, true ] )(
291
333
  'bubblesVirtually %p',
292
334
  ( bubblesVirtually ) => {
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`props should render correctly 1`] = `
4
4
  <div
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Text should render align 1`] = `
4
4
  Snapshot Diff:
@@ -23,7 +23,7 @@
23
23
  margin: 0;
24
24
  background: $components-color-background;
25
25
  color: $components-color-foreground;
26
- @include input-control( $components-color-accent );
26
+ @include input-control;
27
27
  border-color: $components-color-border;
28
28
 
29
29
  // Subtract 1px to account for the border, which isn't included on the element