@wordpress/components 19.16.0 → 19.17.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 (434) hide show
  1. package/CHANGELOG.md +40 -4
  2. package/build/base-control/index.js +6 -3
  3. package/build/base-control/index.js.map +1 -1
  4. package/build/base-control/styles/base-control-styles.js +8 -8
  5. package/build/base-control/styles/base-control-styles.js.map +1 -1
  6. package/build/border-control/styles.js +17 -25
  7. package/build/border-control/styles.js.map +1 -1
  8. package/build/box-control/all-input-control.js +2 -27
  9. package/build/box-control/all-input-control.js.map +1 -1
  10. package/build/box-control/index.js +10 -5
  11. package/build/box-control/index.js.map +1 -1
  12. package/build/box-control/styles/box-control-styles.js +17 -9
  13. package/build/box-control/styles/box-control-styles.js.map +1 -1
  14. package/build/box-control/utils.js +35 -0
  15. package/build/box-control/utils.js.map +1 -1
  16. package/build/color-picker/styles.js +10 -8
  17. package/build/color-picker/styles.js.map +1 -1
  18. package/build/combobox-control/index.js +14 -6
  19. package/build/combobox-control/index.js.map +1 -1
  20. package/build/custom-select-control/index.js +3 -1
  21. package/build/custom-select-control/index.js.map +1 -1
  22. package/build/date-time/time/index.js +6 -2
  23. package/build/date-time/time/index.js.map +1 -1
  24. package/build/date-time/time/styles.js +17 -24
  25. package/build/date-time/time/styles.js.map +1 -1
  26. package/build/external-link/index.js +6 -0
  27. package/build/external-link/index.js.map +1 -1
  28. package/build/flex/flex/component.js +9 -9
  29. package/build/flex/flex/component.js.map +1 -1
  30. package/build/flex/flex/hook.js +6 -16
  31. package/build/flex/flex/hook.js.map +1 -1
  32. package/build/flex/flex/index.js.map +1 -1
  33. package/build/flex/flex-block/component.js +9 -9
  34. package/build/flex/flex-block/component.js.map +1 -1
  35. package/build/flex/flex-block/hook.js +0 -4
  36. package/build/flex/flex-block/hook.js.map +1 -1
  37. package/build/flex/flex-block/index.js.map +1 -1
  38. package/build/flex/flex-item/component.js +9 -9
  39. package/build/flex/flex-item/component.js.map +1 -1
  40. package/build/flex/flex-item/hook.js +1 -5
  41. package/build/flex/flex-item/hook.js.map +1 -1
  42. package/build/flex/flex-item/index.js.map +1 -1
  43. package/build/flex/index.js.map +1 -1
  44. package/build/flex/styles.js +5 -5
  45. package/build/flex/styles.js.map +1 -1
  46. package/build/focal-point-picker/styles/focal-point-picker-style.js +22 -22
  47. package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  48. package/build/focal-point-picker/styles/focal-point-style.js +5 -5
  49. package/build/focal-point-picker/styles/focal-point-style.js.map +1 -1
  50. package/build/font-size-picker/index.js +15 -6
  51. package/build/font-size-picker/index.js.map +1 -1
  52. package/build/form-token-field/index.js +6 -2
  53. package/build/form-token-field/index.js.map +1 -1
  54. package/build/form-token-field/suggestions-list.js +19 -6
  55. package/build/form-token-field/suggestions-list.js.map +1 -1
  56. package/build/index.js +7 -1
  57. package/build/index.js.map +1 -1
  58. package/build/input-control/input-base.js +1 -2
  59. package/build/input-control/input-base.js.map +1 -1
  60. package/build/input-control/reducer/actions.js +3 -1
  61. package/build/input-control/reducer/actions.js.map +1 -1
  62. package/build/input-control/reducer/reducer.js +28 -11
  63. package/build/input-control/reducer/reducer.js.map +1 -1
  64. package/build/input-control/reducer/state.js.map +1 -1
  65. package/build/input-control/styles/input-control-styles.js +26 -26
  66. package/build/input-control/styles/input-control-styles.js.map +1 -1
  67. package/build/mobile/global-styles-context/utils.native.js +23 -3
  68. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  69. package/build/mobile/image/index.native.js +23 -2
  70. package/build/mobile/image/index.native.js.map +1 -1
  71. package/build/mobile/link-picker/link-picker-screen.native.js +10 -4
  72. package/build/mobile/link-picker/link-picker-screen.native.js.map +1 -1
  73. package/build/mobile/picker/index.ios.js +16 -3
  74. package/build/mobile/picker/index.ios.js.map +1 -1
  75. package/build/placeholder/index.js +11 -14
  76. package/build/placeholder/index.js.map +1 -1
  77. package/build/placeholder/types.js +6 -0
  78. package/build/placeholder/types.js.map +1 -0
  79. package/build/popover/index.js +113 -62
  80. package/build/popover/index.js.map +1 -1
  81. package/build/range-control/styles/range-control-styles.js +40 -40
  82. package/build/range-control/styles/range-control-styles.js.map +1 -1
  83. package/build/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js +4 -4
  84. package/build/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js.map +1 -1
  85. package/build/select-control/styles/select-control-styles.js +6 -6
  86. package/build/select-control/styles/select-control-styles.js.map +1 -1
  87. package/build/style-provider/index.js +10 -7
  88. package/build/style-provider/index.js.map +1 -1
  89. package/build/style-provider/types.js +6 -0
  90. package/build/style-provider/types.js.map +1 -0
  91. package/build/swatch/index.js +2 -0
  92. package/build/swatch/index.js.map +1 -1
  93. package/build/swatch/types.js +6 -0
  94. package/build/swatch/types.js.map +1 -0
  95. package/build/text/hook.js +5 -8
  96. package/build/text/hook.js.map +1 -1
  97. package/build/tools-panel/styles.js +13 -10
  98. package/build/tools-panel/styles.js.map +1 -1
  99. package/build/tools-panel/tools-panel/hook.js +1 -1
  100. package/build/tools-panel/tools-panel/hook.js.map +1 -1
  101. package/build/ui/tooltip/styles.js +4 -4
  102. package/build/ui/tooltip/styles.js.map +1 -1
  103. package/build/unit-control/styles/unit-control-styles.js +34 -9
  104. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  105. package/build/utils/base-label.js +24 -0
  106. package/build/utils/base-label.js.map +1 -0
  107. package/build/utils/box-sizing.js +22 -0
  108. package/build/utils/box-sizing.js.map +1 -0
  109. package/build/utils/style-mixins.js +16 -0
  110. package/build/utils/style-mixins.js.map +1 -1
  111. package/build-module/base-control/index.js +7 -5
  112. package/build-module/base-control/index.js.map +1 -1
  113. package/build-module/base-control/styles/base-control-styles.js +9 -9
  114. package/build-module/base-control/styles/base-control-styles.js.map +1 -1
  115. package/build-module/border-control/styles.js +18 -26
  116. package/build-module/border-control/styles.js.map +1 -1
  117. package/build-module/box-control/all-input-control.js +3 -28
  118. package/build-module/box-control/all-input-control.js.map +1 -1
  119. package/build-module/box-control/index.js +4 -4
  120. package/build-module/box-control/index.js.map +1 -1
  121. package/build-module/box-control/styles/box-control-styles.js +18 -10
  122. package/build-module/box-control/styles/box-control-styles.js.map +1 -1
  123. package/build-module/box-control/utils.js +33 -0
  124. package/build-module/box-control/utils.js.map +1 -1
  125. package/build-module/color-picker/styles.js +9 -8
  126. package/build-module/color-picker/styles.js.map +1 -1
  127. package/build-module/combobox-control/index.js +13 -6
  128. package/build-module/combobox-control/index.js.map +1 -1
  129. package/build-module/custom-select-control/index.js +2 -1
  130. package/build-module/custom-select-control/index.js.map +1 -1
  131. package/build-module/date-time/time/index.js +6 -3
  132. package/build-module/date-time/time/index.js.map +1 -1
  133. package/build-module/date-time/time/styles.js +15 -21
  134. package/build-module/date-time/time/styles.js.map +1 -1
  135. package/build-module/external-link/index.js +6 -0
  136. package/build-module/external-link/index.js.map +1 -1
  137. package/build-module/flex/flex/component.js +9 -9
  138. package/build-module/flex/flex/component.js.map +1 -1
  139. package/build-module/flex/flex/hook.js +6 -15
  140. package/build-module/flex/flex/hook.js.map +1 -1
  141. package/build-module/flex/flex/index.js.map +1 -1
  142. package/build-module/flex/flex-block/component.js +9 -9
  143. package/build-module/flex/flex-block/component.js.map +1 -1
  144. package/build-module/flex/flex-block/hook.js +0 -4
  145. package/build-module/flex/flex-block/hook.js.map +1 -1
  146. package/build-module/flex/flex-block/index.js.map +1 -1
  147. package/build-module/flex/flex-item/component.js +9 -9
  148. package/build-module/flex/flex-item/component.js.map +1 -1
  149. package/build-module/flex/flex-item/hook.js +1 -5
  150. package/build-module/flex/flex-item/hook.js.map +1 -1
  151. package/build-module/flex/flex-item/index.js.map +1 -1
  152. package/build-module/flex/index.js.map +1 -1
  153. package/build-module/flex/styles.js +5 -5
  154. package/build-module/flex/styles.js.map +1 -1
  155. package/build-module/focal-point-picker/styles/focal-point-picker-style.js +22 -22
  156. package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  157. package/build-module/focal-point-picker/styles/focal-point-style.js +5 -5
  158. package/build-module/focal-point-picker/styles/focal-point-style.js.map +1 -1
  159. package/build-module/font-size-picker/index.js +14 -6
  160. package/build-module/font-size-picker/index.js.map +1 -1
  161. package/build-module/form-token-field/index.js +5 -2
  162. package/build-module/form-token-field/index.js.map +1 -1
  163. package/build-module/form-token-field/suggestions-list.js +19 -6
  164. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  165. package/build-module/index.js +1 -1
  166. package/build-module/index.js.map +1 -1
  167. package/build-module/input-control/input-base.js +1 -2
  168. package/build-module/input-control/input-base.js.map +1 -1
  169. package/build-module/input-control/reducer/actions.js +1 -0
  170. package/build-module/input-control/reducer/actions.js.map +1 -1
  171. package/build-module/input-control/reducer/reducer.js +28 -11
  172. package/build-module/input-control/reducer/reducer.js.map +1 -1
  173. package/build-module/input-control/reducer/state.js.map +1 -1
  174. package/build-module/input-control/styles/input-control-styles.js +27 -27
  175. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  176. package/build-module/mobile/global-styles-context/utils.native.js +23 -4
  177. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  178. package/build-module/mobile/image/index.native.js +25 -4
  179. package/build-module/mobile/image/index.native.js.map +1 -1
  180. package/build-module/mobile/link-picker/link-picker-screen.native.js +11 -4
  181. package/build-module/mobile/link-picker/link-picker-screen.native.js.map +1 -1
  182. package/build-module/mobile/picker/index.ios.js +14 -3
  183. package/build-module/mobile/picker/index.ios.js.map +1 -1
  184. package/build-module/placeholder/index.js +10 -15
  185. package/build-module/placeholder/index.js.map +1 -1
  186. package/build-module/placeholder/types.js +2 -0
  187. package/build-module/placeholder/types.js.map +1 -0
  188. package/build-module/popover/index.js +112 -62
  189. package/build-module/popover/index.js.map +1 -1
  190. package/build-module/range-control/styles/range-control-styles.js +40 -40
  191. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  192. package/build-module/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js +4 -4
  193. package/build-module/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js.map +1 -1
  194. package/build-module/select-control/styles/select-control-styles.js +6 -6
  195. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  196. package/build-module/style-provider/index.js +10 -5
  197. package/build-module/style-provider/index.js.map +1 -1
  198. package/build-module/style-provider/types.js +2 -0
  199. package/build-module/style-provider/types.js.map +1 -0
  200. package/build-module/swatch/index.js +2 -0
  201. package/build-module/swatch/index.js.map +1 -1
  202. package/build-module/swatch/types.js +2 -0
  203. package/build-module/swatch/types.js.map +1 -0
  204. package/build-module/text/hook.js +5 -7
  205. package/build-module/text/hook.js.map +1 -1
  206. package/build-module/tools-panel/styles.js +12 -11
  207. package/build-module/tools-panel/styles.js.map +1 -1
  208. package/build-module/tools-panel/tools-panel/hook.js +1 -1
  209. package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
  210. package/build-module/ui/tooltip/styles.js +4 -4
  211. package/build-module/ui/tooltip/styles.js.map +1 -1
  212. package/build-module/unit-control/styles/unit-control-styles.js +35 -9
  213. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  214. package/build-module/utils/base-label.js +18 -0
  215. package/build-module/utils/base-label.js.map +1 -0
  216. package/build-module/utils/box-sizing.js +16 -0
  217. package/build-module/utils/box-sizing.js.map +1 -0
  218. package/build-module/utils/style-mixins.js +2 -0
  219. package/build-module/utils/style-mixins.js.map +1 -1
  220. package/build-style/style-rtl.css +50 -30
  221. package/build-style/style.css +52 -30
  222. package/build-types/base-control/index.d.ts +4 -3
  223. package/build-types/base-control/index.d.ts.map +1 -1
  224. package/build-types/base-control/stories/index.d.ts +1 -1
  225. package/build-types/base-control/stories/index.d.ts.map +1 -1
  226. package/build-types/base-control/styles/base-control-styles.d.ts.map +1 -1
  227. package/build-types/base-control/types.d.ts +0 -1
  228. package/build-types/base-control/types.d.ts.map +1 -1
  229. package/build-types/border-control/styles.d.ts.map +1 -1
  230. package/build-types/color-picker/color-display.d.ts +13 -0
  231. package/build-types/color-picker/color-display.d.ts.map +1 -0
  232. package/build-types/color-picker/styles.d.ts.map +1 -1
  233. package/build-types/date-time/time/index.d.ts.map +1 -1
  234. package/build-types/date-time/time/styles.d.ts +0 -4
  235. package/build-types/date-time/time/styles.d.ts.map +1 -1
  236. package/build-types/external-link/index.d.ts.map +1 -1
  237. package/build-types/flex/flex/component.d.ts +5 -4
  238. package/build-types/flex/flex/component.d.ts.map +1 -1
  239. package/build-types/flex/flex/hook.d.ts +5 -2
  240. package/build-types/flex/flex/hook.d.ts.map +1 -1
  241. package/build-types/flex/flex/index.d.ts +2 -2
  242. package/build-types/flex/flex/index.d.ts.map +1 -1
  243. package/build-types/flex/flex-block/component.d.ts +5 -4
  244. package/build-types/flex/flex-block/component.d.ts.map +1 -1
  245. package/build-types/flex/flex-block/hook.d.ts +6 -3
  246. package/build-types/flex/flex-block/hook.d.ts.map +1 -1
  247. package/build-types/flex/flex-block/index.d.ts +2 -2
  248. package/build-types/flex/flex-block/index.d.ts.map +1 -1
  249. package/build-types/flex/flex-item/component.d.ts +5 -4
  250. package/build-types/flex/flex-item/component.d.ts.map +1 -1
  251. package/build-types/flex/flex-item/hook.d.ts +6 -3
  252. package/build-types/flex/flex-item/hook.d.ts.map +1 -1
  253. package/build-types/flex/flex-item/index.d.ts +2 -2
  254. package/build-types/flex/flex-item/index.d.ts.map +1 -1
  255. package/build-types/flex/index.d.ts +3 -3
  256. package/build-types/flex/index.d.ts.map +1 -1
  257. package/build-types/flex/stories/index.d.ts +13 -0
  258. package/build-types/flex/stories/index.d.ts.map +1 -0
  259. package/build-types/flex/styles.d.ts +5 -5
  260. package/build-types/flex/styles.d.ts.map +1 -1
  261. package/build-types/flex/test/index.d.ts +2 -0
  262. package/build-types/flex/test/index.d.ts.map +1 -0
  263. package/build-types/flex/types.d.ts +15 -11
  264. package/build-types/flex/types.d.ts.map +1 -1
  265. package/build-types/flyout/context.d.ts +6 -0
  266. package/build-types/flyout/context.d.ts.map +1 -0
  267. package/build-types/flyout/flyout/component.d.ts +21 -0
  268. package/build-types/flyout/flyout/component.d.ts.map +1 -0
  269. package/build-types/flyout/flyout/hook.d.ts +270 -0
  270. package/build-types/flyout/flyout/hook.d.ts.map +1 -0
  271. package/build-types/flyout/flyout/index.d.ts +3 -0
  272. package/build-types/flyout/flyout/index.d.ts.map +1 -0
  273. package/build-types/flyout/flyout-content/component.d.ts +3 -0
  274. package/build-types/flyout/flyout-content/component.d.ts.map +1 -0
  275. package/build-types/flyout/flyout-content/index.d.ts +2 -0
  276. package/build-types/flyout/flyout-content/index.d.ts.map +1 -0
  277. package/build-types/flyout/index.d.ts +2 -0
  278. package/build-types/flyout/index.d.ts.map +1 -0
  279. package/build-types/flyout/styles.d.ts +22 -0
  280. package/build-types/flyout/styles.d.ts.map +1 -0
  281. package/build-types/flyout/types.d.ts +80 -0
  282. package/build-types/flyout/types.d.ts.map +1 -0
  283. package/build-types/flyout/utils.d.ts +8 -0
  284. package/build-types/flyout/utils.d.ts.map +1 -0
  285. package/build-types/form-token-field/index.d.ts.map +1 -1
  286. package/build-types/form-token-field/stories/index.d.ts +6 -0
  287. package/build-types/form-token-field/stories/index.d.ts.map +1 -1
  288. package/build-types/form-token-field/suggestions-list.d.ts +1 -1
  289. package/build-types/form-token-field/suggestions-list.d.ts.map +1 -1
  290. package/build-types/form-token-field/types.d.ts +15 -3
  291. package/build-types/form-token-field/types.d.ts.map +1 -1
  292. package/build-types/input-control/input-base.d.ts.map +1 -1
  293. package/build-types/input-control/reducer/actions.d.ts +3 -1
  294. package/build-types/input-control/reducer/actions.d.ts.map +1 -1
  295. package/build-types/input-control/reducer/reducer.d.ts +2 -2
  296. package/build-types/input-control/reducer/reducer.d.ts.map +1 -1
  297. package/build-types/input-control/reducer/state.d.ts +2 -2
  298. package/build-types/input-control/reducer/state.d.ts.map +1 -1
  299. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  300. package/build-types/placeholder/index.d.ts +16 -0
  301. package/build-types/placeholder/index.d.ts.map +1 -0
  302. package/build-types/placeholder/stories/index.d.ts +12 -0
  303. package/build-types/placeholder/stories/index.d.ts.map +1 -0
  304. package/build-types/placeholder/types.d.ts +47 -0
  305. package/build-types/placeholder/types.d.ts.map +1 -0
  306. package/build-types/popover/index.d.ts +1 -1
  307. package/build-types/popover/index.d.ts.map +1 -1
  308. package/build-types/popover/utils.d.ts +70 -0
  309. package/build-types/popover/utils.d.ts.map +1 -0
  310. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  311. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  312. package/build-types/style-provider/index.d.ts +7 -4
  313. package/build-types/style-provider/index.d.ts.map +1 -1
  314. package/build-types/style-provider/types.d.ts +15 -0
  315. package/build-types/style-provider/types.d.ts.map +1 -0
  316. package/build-types/swatch/index.d.ts +5 -0
  317. package/build-types/swatch/index.d.ts.map +1 -0
  318. package/build-types/swatch/types.d.ts +11 -0
  319. package/build-types/swatch/types.d.ts.map +1 -0
  320. package/build-types/text/hook.d.ts.map +1 -1
  321. package/build-types/tools-panel/styles.d.ts +1 -1
  322. package/build-types/tools-panel/styles.d.ts.map +1 -1
  323. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  324. package/build-types/ui/tooltip/styles.d.ts.map +1 -1
  325. package/build-types/unit-control/index.d.ts +1 -1
  326. package/build-types/unit-control/stories/index.d.ts.map +1 -1
  327. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  328. package/build-types/unit-control/types.d.ts +1 -7
  329. package/build-types/unit-control/types.d.ts.map +1 -1
  330. package/build-types/utils/base-label.d.ts +2 -0
  331. package/build-types/utils/base-label.d.ts.map +1 -0
  332. package/build-types/utils/box-sizing.d.ts +2 -0
  333. package/build-types/utils/box-sizing.d.ts.map +1 -0
  334. package/build-types/utils/hooks/use-combined-ref.d.ts +8 -0
  335. package/build-types/utils/hooks/use-combined-ref.d.ts.map +1 -0
  336. package/build-types/utils/style-mixins.d.ts +2 -0
  337. package/package.json +17 -17
  338. package/src/base-control/index.tsx +5 -3
  339. package/src/base-control/stories/index.tsx +1 -0
  340. package/src/base-control/styles/base-control-styles.ts +9 -5
  341. package/src/base-control/types.ts +0 -1
  342. package/src/border-control/styles.ts +2 -1
  343. package/src/box-control/all-input-control.js +3 -27
  344. package/src/box-control/index.js +5 -6
  345. package/src/box-control/styles/box-control-styles.js +1 -2
  346. package/src/box-control/utils.js +32 -0
  347. package/src/color-picker/styles.ts +3 -0
  348. package/src/combobox-control/README.md +7 -0
  349. package/src/combobox-control/index.js +14 -4
  350. package/src/combobox-control/stories/index.js +49 -5
  351. package/src/custom-gradient-picker/style.scss +0 -12
  352. package/src/custom-select-control/index.js +3 -2
  353. package/src/custom-select-control/style.scss +1 -5
  354. package/src/date-time/time/index.tsx +7 -5
  355. package/src/date-time/time/styles.ts +3 -6
  356. package/src/external-link/index.tsx +10 -0
  357. package/src/flex/flex/README.md +19 -13
  358. package/src/flex/flex/{component.js → component.tsx} +15 -10
  359. package/src/flex/flex/{hook.js → hook.ts} +14 -13
  360. package/src/flex/flex/{index.js → index.ts} +0 -0
  361. package/src/flex/flex-block/README.md +3 -3
  362. package/src/flex/flex-block/{component.js → component.tsx} +15 -10
  363. package/src/flex/flex-block/{hook.js → hook.ts} +5 -5
  364. package/src/flex/flex-block/{index.js → index.ts} +0 -0
  365. package/src/flex/flex-item/README.md +6 -5
  366. package/src/flex/flex-item/{component.js → component.tsx} +15 -10
  367. package/src/flex/flex-item/{hook.js → hook.ts} +10 -7
  368. package/src/flex/flex-item/{index.js → index.ts} +0 -0
  369. package/src/flex/{index.js → index.ts} +0 -0
  370. package/src/flex/stories/index.tsx +81 -0
  371. package/src/flex/{styles.js → styles.ts} +0 -0
  372. package/src/flex/test/__snapshots__/{index.js.snap → index.tsx.snap} +49 -9
  373. package/src/flex/test/index.tsx +84 -0
  374. package/src/flex/types.ts +15 -11
  375. package/src/focal-point-picker/styles/focal-point-picker-style.js +0 -5
  376. package/src/focal-point-picker/styles/focal-point-style.js +0 -1
  377. package/src/font-size-picker/index.js +18 -7
  378. package/src/font-size-picker/stories/index.js +6 -0
  379. package/src/form-token-field/README.md +2 -1
  380. package/src/form-token-field/index.tsx +5 -2
  381. package/src/form-token-field/stories/index.tsx +14 -0
  382. package/src/form-token-field/style.scss +0 -5
  383. package/src/form-token-field/suggestions-list.tsx +21 -12
  384. package/src/form-token-field/types.ts +16 -2
  385. package/src/index.js +4 -1
  386. package/src/input-control/input-base.tsx +0 -1
  387. package/src/input-control/reducer/actions.ts +3 -1
  388. package/src/input-control/reducer/reducer.ts +27 -10
  389. package/src/input-control/reducer/state.ts +7 -2
  390. package/src/input-control/styles/input-control-styles.tsx +3 -1
  391. package/src/input-control/test/index.js +20 -4
  392. package/src/mobile/global-styles-context/utils.native.js +21 -4
  393. package/src/mobile/image/index.native.js +27 -2
  394. package/src/mobile/link-picker/link-picker-screen.native.js +12 -4
  395. package/src/mobile/picker/index.ios.js +16 -0
  396. package/src/mobile/picker/styles.native.scss +8 -0
  397. package/src/panel/style.scss +4 -1
  398. package/src/placeholder/README.md +49 -9
  399. package/src/placeholder/{index.js → index.tsx} +27 -23
  400. package/src/placeholder/stories/index.tsx +64 -0
  401. package/src/placeholder/style.scss +0 -4
  402. package/src/placeholder/types.ts +48 -0
  403. package/src/popover/README.md +7 -0
  404. package/src/popover/index.js +144 -70
  405. package/src/popover/stories/index.js +199 -98
  406. package/src/popover/style.scss +60 -6
  407. package/src/popover/test/index.js +23 -1
  408. package/src/range-control/styles/range-control-styles.ts +0 -12
  409. package/src/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js +1 -1
  410. package/src/select-control/styles/select-control-styles.ts +0 -1
  411. package/src/style-provider/index.tsx +41 -0
  412. package/src/style-provider/types.ts +15 -0
  413. package/src/swatch/{index.js → index.tsx} +4 -1
  414. package/src/swatch/types.ts +11 -0
  415. package/src/text/hook.js +5 -3
  416. package/src/toggle-group-control/test/__snapshots__/index.js.snap +24 -0
  417. package/src/tools-panel/styles.ts +7 -16
  418. package/src/tools-panel/test/__snapshots__/index.js.snap +2 -11
  419. package/src/tools-panel/tools-panel/hook.ts +6 -1
  420. package/src/ui/tooltip/styles.js +1 -0
  421. package/src/ui/tooltip/test/__snapshots__/index.js.snap +1 -0
  422. package/src/unit-control/stories/index.tsx +16 -23
  423. package/src/unit-control/styles/unit-control-styles.ts +93 -41
  424. package/src/unit-control/types.ts +1 -7
  425. package/src/utils/base-label.ts +13 -0
  426. package/src/utils/box-sizing.ts +14 -0
  427. package/src/utils/style-mixins.js +2 -0
  428. package/tsconfig.json +2 -0
  429. package/tsconfig.tsbuildinfo +1 -1
  430. package/src/flex/stories/index.js +0 -29
  431. package/src/flex/test/index.js +0 -77
  432. package/src/placeholder/stories/index.js +0 -44
  433. package/src/popover/stories/_utils.js +0 -64
  434. package/src/style-provider/index.js +0 -31
@@ -1,123 +1,176 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { boolean, select, text } from '@storybook/addon-knobs';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
9
- import { useState } from '@wordpress/element';
4
+ import { useState, useRef } from '@wordpress/element';
5
+ import { __unstableIframe as Iframe } from '@wordpress/block-editor';
10
6
 
11
7
  /**
12
8
  * Internal dependencies
13
9
  */
14
- import { DraggableWrapper } from './_utils';
15
- import Popover from '../';
16
10
  import Button from '../../button';
11
+ import { Provider as SlotFillProvider } from '../../slot-fill';
12
+ import Popover from '../';
13
+
14
+ // Format: "[yAxis] [xAxis]"
15
+ // Valid yAxis values: 'top', 'middle', 'bottom'
16
+ // Valid xAxis values: 'left', 'center', 'right'
17
+ const AVAILABLE_POSITIONS = [
18
+ 'top left',
19
+ 'top center',
20
+ 'top right',
21
+ 'middle left',
22
+ 'middle center',
23
+ 'middle right',
24
+ 'bottom left',
25
+ 'bottom center',
26
+ 'bottom right',
27
+ ];
28
+
29
+ // Follows floating UI's conventions
30
+ // See https://floating-ui.com/docs/computePosition#placement
31
+ const AVAILABLE_PLACEMENTS = [
32
+ 'top',
33
+ 'top-start',
34
+ 'top-end',
35
+ 'right',
36
+ 'right-start',
37
+ 'right-end',
38
+ 'bottom',
39
+ 'bottom-start',
40
+ 'bottom-end',
41
+ 'left',
42
+ 'left-start',
43
+ 'left-end',
44
+ ];
17
45
 
18
46
  export default {
19
47
  title: 'Components/Popover',
20
48
  component: Popover,
21
- parameters: {
22
- knobs: { disable: false },
23
- },
24
- };
25
-
26
- export const _default = () => {
27
- const show = boolean( 'Example: Show', true );
28
- const children = text( 'children', 'Popover Content' );
29
- const animate = boolean( 'animate', false );
30
- const expandOnMobile = boolean( 'expandOnMobile', false );
31
- const focusOnMount = select(
32
- 'focusOnMount',
33
- {
34
- firstElement: 'firstElement',
35
- container: 'container',
49
+ argTypes: {
50
+ anchorRef: { control: { type: null } },
51
+ anchorRect: { control: { type: null } },
52
+ animate: { control: { type: 'boolean' } },
53
+ children: { control: { type: null } },
54
+ className: { control: { type: 'text' } },
55
+ expandOnMobile: { control: { type: 'boolean' } },
56
+ focusOnMount: {
57
+ control: { type: 'select' },
58
+ options: [ 'firstElement', 'container', false ],
36
59
  },
37
- 'firstElement'
38
- );
39
- const noArrow = boolean( 'noArrow', false );
40
- const isAlternate = boolean( 'isAlternate', false );
41
-
42
- const props = {
43
- animate,
44
- children,
45
- expandOnMobile,
46
- focusOnMount,
47
- noArrow,
48
- isAlternate,
49
- };
50
-
51
- if ( ! show ) {
52
- return null;
53
- }
54
-
55
- return <Popover { ...props } />;
60
+ getAnchorRect: { control: { type: null } },
61
+ headerTitle: { control: { type: 'text' } },
62
+ isAlternate: { control: { type: 'boolean' } },
63
+ noArrow: { control: { type: 'boolean' } },
64
+ onClose: { control: { type: null } },
65
+ offset: { control: { type: 'number' } },
66
+ onFocusOutside: { control: { type: null } },
67
+ placement: {
68
+ control: { type: 'select' },
69
+ options: AVAILABLE_PLACEMENTS,
70
+ },
71
+ position: {
72
+ control: { type: 'select' },
73
+ options: AVAILABLE_POSITIONS,
74
+ },
75
+ __unstableSlotName: { control: { type: null } },
76
+ __unstableObserveElement: { control: { type: null } },
77
+ __unstableForcePosition: { control: { type: 'boolean' } },
78
+ __unstableShift: { control: { type: 'boolean' } },
79
+ },
56
80
  };
57
81
 
58
- const DragExample = ( props ) => {
59
- const { label, content, ...restProps } = props;
82
+ const PopoverWithAnchor = ( args ) => {
83
+ const anchorRef = useRef( null );
60
84
 
61
85
  return (
62
- <div>
63
- <div style={ { position: 'absolute', color: '#555' } }>
64
- <p>Move the gray box around.</p>
65
- <p>
66
- The{ ' ' }
67
- <strong style={ { background: 'pink' } }>
68
- pink bordered
69
- </strong>{ ' ' }
70
- element is a parent.
71
- </p>
72
- <p>
73
- The{ ' ' }
74
- <strong style={ { background: 'cyan' } }>
75
- cyan bordered
76
- </strong>{ ' ' }
77
- element is a sibling to <strong>Popover</strong>.
78
- </p>
79
- <p>
80
- <strong>Popover</strong> aligns to the content within
81
- parent.
82
- </p>
83
- </div>
84
- <div
85
- style={ {
86
- height: '100vh',
87
- width: '100%',
88
- display: 'flex',
89
- alignItems: 'center',
90
- justifyContent: 'center',
91
- } }
86
+ <div
87
+ style={ {
88
+ height: '200px',
89
+ display: 'flex',
90
+ justifyContent: 'center',
91
+ alignItems: 'center',
92
+ } }
93
+ >
94
+ <p
95
+ style={ { padding: '8px', background: 'salmon' } }
96
+ ref={ anchorRef }
92
97
  >
93
- <DraggableWrapper
94
- style={ {
95
- background: '#ddd',
96
- border: '2px solid pink',
97
- borderRadius: 4,
98
- padding: 10,
99
- userSelect: 'none',
100
- } }
101
- >
102
- <div style={ { border: '2px solid cyan' } }>{ label }</div>
103
- <Popover { ...restProps }>{ content }</Popover>
104
- </DraggableWrapper>
105
- </div>
98
+ Popover&apos;s anchor
99
+ </p>
100
+ <Popover { ...args } anchorRef={ anchorRef } />
106
101
  </div>
107
102
  );
108
103
  };
109
104
 
110
- export const positioning = () => {
111
- const label = text( 'Example: Label', 'Drag Me!' );
112
- const content = text( 'Example: Content', 'Popover' );
113
- const noArrow = boolean( 'noArrow', false );
105
+ export const Default = ( args ) => {
106
+ const [ isVisible, setIsVisible ] = useState( false );
107
+ const toggleVisible = () => {
108
+ setIsVisible( ( state ) => ! state );
109
+ };
114
110
 
115
111
  return (
116
- <DragExample label={ label } content={ content } noArrow={ noArrow } />
112
+ <div
113
+ style={ {
114
+ minWidth: '600px',
115
+ minHeight: '600px',
116
+ display: 'flex',
117
+ alignItems: 'center',
118
+ justifyContent: 'center',
119
+ } }
120
+ >
121
+ <Button variant="secondary" onClick={ toggleVisible }>
122
+ Toggle Popover
123
+ { isVisible && <Popover { ...args } /> }
124
+ </Button>
125
+ </div>
117
126
  );
118
127
  };
128
+ Default.args = {
129
+ children: <>Popover&apos;s&nbsp;content</>,
130
+ };
119
131
 
120
- function DynamicHeightPopover() {
132
+ /**
133
+ * Resize / scroll the viewport to test the behavior of the popovers when they
134
+ * reach the viewport boundaries.
135
+ */
136
+ export const AllPlacements = ( { children, ...args } ) => (
137
+ <div
138
+ style={ {
139
+ minWidth: '600px',
140
+ marginLeft: 'auto',
141
+ marginRight: 'auto',
142
+ } }
143
+ >
144
+ <h2>
145
+ Resize / scroll the viewport to test the behavior of the popovers
146
+ when they reach the viewport boundaries.
147
+ </h2>
148
+ <div>
149
+ { AVAILABLE_PLACEMENTS.map( ( p ) => (
150
+ <PopoverWithAnchor key={ p } placement={ p } { ...args }>
151
+ { children }
152
+ <div>
153
+ <small>(placement: { p })</small>
154
+ </div>
155
+ </PopoverWithAnchor>
156
+ ) ) }
157
+ </div>
158
+ </div>
159
+ );
160
+ // Excluding placement and position since they all possible values
161
+ // are passed directly in code.
162
+ AllPlacements.parameters = {
163
+ controls: {
164
+ exclude: [ 'placement', 'position' ],
165
+ },
166
+ };
167
+ AllPlacements.args = {
168
+ ...Default.args,
169
+ noArrow: false,
170
+ offset: 10,
171
+ };
172
+
173
+ export const DynamicHeight = ( { children, ...args } ) => {
121
174
  const [ height, setHeight ] = useState( 200 );
122
175
  const increase = () => setHeight( height + 100 );
123
176
  const decrease = () => setHeight( height - 100 );
@@ -146,7 +199,7 @@ function DynamicHeightPopover() {
146
199
  </p>
147
200
 
148
201
  <div>
149
- <Popover>
202
+ <Popover { ...args }>
150
203
  <div
151
204
  style={ {
152
205
  height,
@@ -154,14 +207,62 @@ function DynamicHeightPopover() {
154
207
  padding: '20px',
155
208
  } }
156
209
  >
157
- Content with dynamic height
210
+ { children }
158
211
  </div>
159
212
  </Popover>
160
213
  </div>
161
214
  </div>
162
215
  );
163
- }
216
+ };
217
+ DynamicHeight.args = {
218
+ ...Default.args,
219
+ children: 'Content with dynamic height',
220
+ };
221
+
222
+ export const WithSlotOutsideIframe = ( args ) => {
223
+ const anchorRef = useRef( null );
224
+ const slotName = 'popover-with-slot-outside-iframe';
164
225
 
165
- export const dynamicHeight = () => {
166
- return <DynamicHeightPopover />;
226
+ return (
227
+ <SlotFillProvider>
228
+ <div>
229
+ <Popover.Slot name={ slotName } />
230
+ <Iframe
231
+ style={ {
232
+ width: '100%',
233
+ height: '100%',
234
+ } }
235
+ >
236
+ <div
237
+ style={ {
238
+ height: '200vh',
239
+ paddingTop: '10vh',
240
+ } }
241
+ >
242
+ <p
243
+ style={ {
244
+ padding: '8px',
245
+ background: 'salmon',
246
+ maxWidth: '200px',
247
+ marginTop: '30px',
248
+ marginLeft: 'auto',
249
+ marginRight: 'auto',
250
+ } }
251
+ ref={ anchorRef }
252
+ >
253
+ Popover&apos;s anchor
254
+ </p>
255
+ <Popover
256
+ { ...args }
257
+ __unstableSlotName={ slotName }
258
+ anchorRef={ anchorRef }
259
+ />
260
+ </div>
261
+ </Iframe>
262
+ </div>
263
+ </SlotFillProvider>
264
+ );
265
+ };
266
+ WithSlotOutsideIframe.args = {
267
+ ...Default.args,
167
268
  };
@@ -1,3 +1,5 @@
1
+ $arrow-triangle-base-size: 14px;
2
+
1
3
  .components-popover {
2
4
  z-index: z-index(".components-popover");
3
5
 
@@ -60,12 +62,64 @@
60
62
 
61
63
  .components-popover__arrow {
62
64
  position: absolute;
63
- background: $gray-400;
64
- width: 8px;
65
- height: 8px;
66
- transform: rotate(45deg);
67
- z-index: -1;
65
+ width: $arrow-triangle-base-size;
66
+ height: $arrow-triangle-base-size;
67
+ pointer-events: none;
68
+ display: flex;
69
+
70
+ // Thin line that helps to make sure that the underlying
71
+ // popover__content's outline is fully overlapped by the
72
+ // arrow
73
+ &::before {
74
+ content: "";
75
+ position: absolute;
76
+ top: -1px;
77
+ left: 1px;
78
+ height: 2px;
79
+ right: 1px;
80
+ background-color: $white;
81
+ }
82
+
83
+ // Position and rotate the arrow depending on the popover's placement.
84
+ // The `!important' is necessary to override the inline styles.
85
+ &.is-top {
86
+ bottom: -1 * $arrow-triangle-base-size !important;
87
+ transform: rotate(0);
88
+ }
89
+ &.is-right {
90
+ /*rtl:begin:ignore*/
91
+ left: -1 * $arrow-triangle-base-size !important;
92
+ transform: rotate(90deg);
93
+ }
94
+ &.is-bottom {
95
+ top: -1 * $arrow-triangle-base-size !important;
96
+ transform: rotate(180deg);
97
+ }
98
+ &.is-left {
99
+ /*rtl:begin:ignore*/
100
+ right: -1 * $arrow-triangle-base-size !important;
101
+ transform: rotate(-90deg);
102
+ /*rtl:end:ignore*/
103
+ }
104
+ }
105
+
106
+ .components-popover__triangle {
107
+ display: block;
108
+ flex: 1;
109
+ }
110
+
111
+ .components-popover__triangle-bg {
112
+ // Fill color is the same as the .components-popover__content's background
113
+ fill: $white;
114
+ }
115
+
116
+ .components-popover__triangle-border {
117
+ // Stroke colors are the same as the .components-popover__content's outline
118
+ fill: transparent;
119
+ stroke-width: $border-width;
120
+ stroke: $gray-400;
121
+
68
122
  .is-alternate & {
69
- background: $gray-900;
123
+ stroke: $gray-900;
70
124
  }
71
125
  }
@@ -1,7 +1,12 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { act, render } from '@testing-library/react';
4
+ import { act, render, screen } from '@testing-library/react';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useRef } from '@wordpress/element';
5
10
 
6
11
  /**
7
12
  * Internal dependencies
@@ -44,4 +49,21 @@ describe( 'Popover', () => {
44
49
 
45
50
  expect( result.container.querySelector( 'span' ) ).toMatchSnapshot();
46
51
  } );
52
+
53
+ it( 'should render correctly when anchorRef is provided', () => {
54
+ const PopoverWithAnchor = ( args ) => {
55
+ const anchorRef = useRef( null );
56
+
57
+ return (
58
+ <div>
59
+ <p ref={ anchorRef }>Anchor</p>
60
+ <Popover { ...args } anchorRef={ anchorRef } />
61
+ </div>
62
+ );
63
+ };
64
+
65
+ render( <PopoverWithAnchor>Popover content</PopoverWithAnchor> );
66
+
67
+ expect( screen.getByText( 'Popover content' ) ).toBeInTheDocument();
68
+ } );
47
69
  } );
@@ -28,7 +28,6 @@ const thumbSize = 12;
28
28
 
29
29
  export const Root = styled.div`
30
30
  -webkit-tap-highlight-color: transparent;
31
- box-sizing: border-box;
32
31
  align-items: flex-start;
33
32
  display: inline-flex;
34
33
  justify-content: flex-start;
@@ -45,7 +44,6 @@ const wrapperMargin = ( { marks }: WrapperProps ) =>
45
44
  css( { marginBottom: marks ? 16 : undefined } );
46
45
 
47
46
  export const Wrapper = styled.div< WrapperProps >`
48
- box-sizing: border-box;
49
47
  color: ${ COLORS.blue.medium.focus };
50
48
  display: block;
51
49
  flex: 1;
@@ -81,7 +79,6 @@ const railBackgroundColor = ( { disabled, railColor }: RailProps ) => {
81
79
 
82
80
  export const Rail = styled.span`
83
81
  background-color: ${ COLORS.lightGray[ 600 ] };
84
- box-sizing: border-box;
85
82
  left: 0;
86
83
  pointer-events: none;
87
84
  right: 0;
@@ -108,7 +105,6 @@ const trackBackgroundColor = ( { disabled, trackColor }: TrackProps ) => {
108
105
  export const Track = styled.span`
109
106
  background-color: currentColor;
110
107
  border-radius: ${ railHeight }px;
111
- box-sizing: border-box;
112
108
  height: ${ railHeight }px;
113
109
  pointer-events: none;
114
110
  display: block;
@@ -120,7 +116,6 @@ export const Track = styled.span`
120
116
  `;
121
117
 
122
118
  export const MarksWrapper = styled.span`
123
- box-sizing: border-box;
124
119
  display: block;
125
120
  pointer-events: none;
126
121
  position: relative;
@@ -141,7 +136,6 @@ const markFill = ( { disabled, isFilled }: RangeMarkProps ) => {
141
136
  };
142
137
 
143
138
  export const Mark = styled.span`
144
- box-sizing: border-box;
145
139
  height: ${ thumbSize }px;
146
140
  left: 0;
147
141
  position: absolute;
@@ -158,7 +152,6 @@ const markLabelFill = ( { isFilled }: RangeMarkProps ) => {
158
152
  };
159
153
 
160
154
  export const MarkLabel = styled.span`
161
- box-sizing: border-box;
162
155
  color: ${ COLORS.lightGray[ 600 ] };
163
156
  left: 0;
164
157
  font-size: 11px;
@@ -181,7 +174,6 @@ const thumbColor = ( { disabled }: ThumbProps ) =>
181
174
 
182
175
  export const ThumbWrapper = styled.span`
183
176
  align-items: center;
184
- box-sizing: border-box;
185
177
  display: flex;
186
178
  height: ${ thumbSize }px;
187
179
  justify-content: center;
@@ -223,7 +215,6 @@ const thumbFocus = ( { isFocused }: ThumbProps ) => {
223
215
  export const Thumb = styled.span< ThumbProps >`
224
216
  align-items: center;
225
217
  border-radius: 50%;
226
- box-sizing: border-box;
227
218
  height: 100%;
228
219
  outline: 0;
229
220
  position: absolute;
@@ -272,7 +263,6 @@ const tooltipPosition = ( { position }: TooltipProps ) => {
272
263
  export const Tooltip = styled.span< TooltipProps >`
273
264
  background: rgba( 0, 0, 0, 0.8 );
274
265
  border-radius: 2px;
275
- box-sizing: border-box;
276
266
  color: white;
277
267
  display: inline-block;
278
268
  font-size: 12px;
@@ -298,7 +288,6 @@ export const Tooltip = styled.span< TooltipProps >`
298
288
  // @todo: Refactor RangeControl with latest HStack configuration
299
289
  // @wordpress/components/ui/hstack.
300
290
  export const InputNumber = styled( NumberControl )`
301
- box-sizing: border-box;
302
291
  display: inline-block;
303
292
  font-size: 13px;
304
293
  margin-top: 0;
@@ -312,7 +301,6 @@ export const InputNumber = styled( NumberControl )`
312
301
  `;
313
302
 
314
303
  export const ActionRightWrapper = styled.span`
315
- box-sizing: border-box;
316
304
  display: block;
317
305
  margin-top: 0;
318
306
 
@@ -30,7 +30,7 @@ export const TooltipWrapper = styled.div`
30
30
  `;
31
31
 
32
32
  export const Tooltip = styled.div`
33
- background: ${ COLORS.ui.border };
33
+ background: ${ COLORS.gray[ 900 ] };
34
34
  border-radius: 2px;
35
35
  box-sizing: border-box;
36
36
  font-size: 12px;
@@ -140,7 +140,6 @@ export const Select = styled.select< SelectProps >`
140
140
  export const DownArrowWrapper = styled.div`
141
141
  align-items: center;
142
142
  bottom: 0;
143
- box-sizing: border-box;
144
143
  display: flex;
145
144
  padding: 0 4px;
146
145
  pointer-events: none;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { CacheProvider } from '@emotion/react';
5
+ import createCache from '@emotion/cache';
6
+ import memoize from 'memize';
7
+ import * as uuid from 'uuid';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import type { StyleProviderProps } from './types';
13
+
14
+ const uuidCache = new Set();
15
+
16
+ const memoizedCreateCacheWithContainer = memoize(
17
+ ( container: HTMLElement ) => {
18
+ // Emotion only accepts alphabetical and hyphenated keys so we just
19
+ // strip the numbers from the UUID. It _should_ be fine.
20
+ let key = uuid.v4().replace( /[0-9]/g, '' );
21
+ while ( uuidCache.has( key ) ) {
22
+ key = uuid.v4().replace( /[0-9]/g, '' );
23
+ }
24
+ uuidCache.add( key );
25
+ return createCache( { container, key } );
26
+ }
27
+ );
28
+
29
+ export function StyleProvider( props: StyleProviderProps ) {
30
+ const { children, document } = props;
31
+
32
+ if ( ! document ) {
33
+ return null;
34
+ }
35
+
36
+ const cache = memoizedCreateCacheWithContainer( document.head );
37
+
38
+ return <CacheProvider value={ cache }>{ children }</CacheProvider>;
39
+ }
40
+
41
+ export default StyleProvider;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ReactNode } from 'react';
5
+
6
+ export type StyleProviderProps = {
7
+ /**
8
+ * The children elements.
9
+ */
10
+ children: ReactNode;
11
+ /**
12
+ * Current document.
13
+ */
14
+ document: Document;
15
+ };
@@ -7,8 +7,11 @@ import { swatch } from '@wordpress/icons';
7
7
  * Internal dependencies
8
8
  */
9
9
  import Icon from '../icon';
10
+ import type { SwatchProps } from './types';
10
11
 
11
- function Swatch( { fill } ) {
12
+ // This component will be deprecated. Use `ColorIndicator` instead.
13
+ // TODO: Consolidate this component with `ColorIndicator`.
14
+ function Swatch( { fill }: SwatchProps ) {
12
15
  return fill ? (
13
16
  <span className="components-swatch" style={ { background: fill } } />
14
17
  ) : (
@@ -0,0 +1,11 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { CSSProperties } from 'react';
5
+
6
+ export type SwatchProps = {
7
+ /**
8
+ * The color to display in the swatch.
9
+ */
10
+ fill?: CSSProperties[ 'background' ];
11
+ };
package/src/text/hook.js CHANGED
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { css } from '@emotion/react';
5
- import { isPlainObject } from 'lodash';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -167,8 +166,11 @@ export default function useText( props ) {
167
166
  */
168
167
  if ( ! truncate && Array.isArray( children ) ) {
169
168
  content = Children.map( children, ( child ) => {
170
- // @ts-ignore
171
- if ( ! isPlainObject( child ) || ! ( 'props' in child ) ) {
169
+ if (
170
+ typeof child !== 'object' ||
171
+ child === null ||
172
+ ! ( 'props' in child )
173
+ ) {
172
174
  return child;
173
175
  }
174
176