@wordpress/components 19.8.4 → 19.11.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 (630) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/CONTRIBUTING.md +80 -7
  3. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +11 -11
  4. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  5. package/build/border-box-control/border-box-control/component.js +22 -7
  6. package/build/border-box-control/border-box-control/component.js.map +1 -1
  7. package/build/border-box-control/border-box-control-linked-button/hook.js +3 -2
  8. package/build/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  9. package/build/border-box-control/border-box-control-split-controls/component.js +21 -8
  10. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  11. package/build/border-box-control/border-box-control-visualizer/hook.js +3 -2
  12. package/build/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  13. package/build/border-box-control/styles.js +11 -15
  14. package/build/border-box-control/styles.js.map +1 -1
  15. package/build/border-control/border-control/component.js +5 -3
  16. package/build/border-control/border-control/component.js.map +1 -1
  17. package/build/border-control/border-control/hook.js +6 -3
  18. package/build/border-control/border-control/hook.js.map +1 -1
  19. package/build/border-control/border-control-dropdown/component.js +6 -2
  20. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  21. package/build/border-control/border-control-dropdown/hook.js +5 -5
  22. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  23. package/build/border-control/styles.js +58 -29
  24. package/build/border-control/styles.js.map +1 -1
  25. package/build/box-control/index.js +0 -21
  26. package/build/box-control/index.js.map +1 -1
  27. package/build/box-control/utils.js +1 -8
  28. package/build/box-control/utils.js.map +1 -1
  29. package/build/button/index.js +3 -5
  30. package/build/button/index.js.map +1 -1
  31. package/build/button/index.native.js +16 -2
  32. package/build/button/index.native.js.map +1 -1
  33. package/build/button-group/index.js +24 -7
  34. package/build/button-group/index.js.map +1 -1
  35. package/build/{flyout → button-group}/types.js +0 -0
  36. package/build/button-group/types.js.map +1 -0
  37. package/build/checkbox-control/index.js +34 -7
  38. package/build/checkbox-control/index.js.map +1 -1
  39. package/build/checkbox-control/types.js +6 -0
  40. package/build/checkbox-control/types.js.map +1 -0
  41. package/build/circular-option-picker/index.js +1 -2
  42. package/build/circular-option-picker/index.js.map +1 -1
  43. package/build/color-palette/index.js +5 -12
  44. package/build/color-palette/index.js.map +1 -1
  45. package/build/date-time/date.js +43 -19
  46. package/build/date-time/date.js.map +1 -1
  47. package/build/date-time/index.js +28 -3
  48. package/build/date-time/index.js.map +1 -1
  49. package/build/date-time/time.js +42 -40
  50. package/build/date-time/time.js.map +1 -1
  51. package/build/date-time/timezone.js +4 -3
  52. package/build/date-time/timezone.js.map +1 -1
  53. package/build/date-time/types.js +6 -0
  54. package/build/date-time/types.js.map +1 -0
  55. package/build/date-time/utils.js +6 -4
  56. package/build/date-time/utils.js.map +1 -1
  57. package/build/disabled/index.js +4 -76
  58. package/build/disabled/index.js.map +1 -1
  59. package/build/draggable/index.native.js +223 -0
  60. package/build/draggable/index.native.js.map +1 -0
  61. package/build/dropdown/index.js +7 -5
  62. package/build/dropdown/index.js.map +1 -1
  63. package/build/focal-point-picker/index.native.js +3 -3
  64. package/build/focal-point-picker/index.native.js.map +1 -1
  65. package/build/heading/hook.js +1 -1
  66. package/build/heading/hook.js.map +1 -1
  67. package/build/index.js +0 -8
  68. package/build/index.js.map +1 -1
  69. package/build/index.native.js +16 -0
  70. package/build/index.native.js.map +1 -1
  71. package/build/input-control/index.js +27 -4
  72. package/build/input-control/index.js.map +1 -1
  73. package/build/input-control/styles/input-control-styles.js +42 -30
  74. package/build/input-control/styles/input-control-styles.js.map +1 -1
  75. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  76. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  77. package/build/mobile/bottom-sheet/index.native.js +1 -1
  78. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  79. package/build/mobile/bottom-sheet-select-control/index.native.js +4 -2
  80. package/build/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  81. package/build/mobile/html-text-input/index.native.js +19 -8
  82. package/build/mobile/html-text-input/index.native.js.map +1 -1
  83. package/build/mobile/keyboard-aware-flat-list/index.android.js +28 -5
  84. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  85. package/build/mobile/keyboard-aware-flat-list/index.ios.js +47 -24
  86. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  87. package/build/navigation/styles/navigation-styles.js +12 -12
  88. package/build/navigation/styles/navigation-styles.js.map +1 -1
  89. package/build/notice/index.native.js +44 -40
  90. package/build/notice/index.native.js.map +1 -1
  91. package/build/notice/list.native.js +27 -45
  92. package/build/notice/list.native.js.map +1 -1
  93. package/build/palette-edit/index.js +38 -7
  94. package/build/palette-edit/index.js.map +1 -1
  95. package/build/popover/index.js +223 -323
  96. package/build/popover/index.js.map +1 -1
  97. package/build/resizable-box/resize-tooltip/utils.js +5 -8
  98. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  99. package/build/sandbox/index.js +2 -2
  100. package/build/sandbox/index.js.map +1 -1
  101. package/build/sandbox/index.native.js +1 -1
  102. package/build/sandbox/index.native.js.map +1 -1
  103. package/build/select-control/index.js +31 -4
  104. package/build/select-control/index.js.map +1 -1
  105. package/build/select-control/styles/select-control-styles.js +17 -14
  106. package/build/select-control/styles/select-control-styles.js.map +1 -1
  107. package/build/surface/styles.js +8 -8
  108. package/build/surface/styles.js.map +1 -1
  109. package/build/text/hook.js +5 -5
  110. package/build/text/hook.js.map +1 -1
  111. package/build/text/styles/text-mixins.native.js +1 -1
  112. package/build/text/styles/text-mixins.native.js.map +1 -1
  113. package/build/text/styles.js +7 -7
  114. package/build/text/styles.js.map +1 -1
  115. package/build/text-control/index.js +35 -28
  116. package/build/text-control/index.js.map +1 -1
  117. package/build/text-control/types.js +6 -0
  118. package/build/text-control/types.js.map +1 -0
  119. package/build/toggle-group-control/toggle-group-control/component.js +1 -3
  120. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  121. package/build/toggle-group-control/toggle-group-control-option-icon/component.js +6 -4
  122. package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  123. package/build/tools-panel/tools-panel-header/component.js +52 -36
  124. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  125. package/build/tooltip/index.js +2 -2
  126. package/build/tooltip/index.js.map +1 -1
  127. package/build/ui/spinner/component.js +1 -1
  128. package/build/ui/spinner/component.js.map +1 -1
  129. package/build/unit-control/index.js +3 -3
  130. package/build/unit-control/index.js.map +1 -1
  131. package/build/unit-control/styles/unit-control-styles.js +11 -20
  132. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  133. package/build/unit-control/utils.js.map +1 -1
  134. package/build/utils/colors-values.js +9 -24
  135. package/build/utils/colors-values.js.map +1 -1
  136. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +11 -11
  137. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  138. package/build-module/border-box-control/border-box-control/component.js +22 -7
  139. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  140. package/build-module/border-box-control/border-box-control-linked-button/hook.js +3 -2
  141. package/build-module/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  142. package/build-module/border-box-control/border-box-control-split-controls/component.js +21 -8
  143. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  144. package/build-module/border-box-control/border-box-control-visualizer/hook.js +3 -2
  145. package/build-module/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  146. package/build-module/border-box-control/styles.js +9 -15
  147. package/build-module/border-box-control/styles.js.map +1 -1
  148. package/build-module/border-control/border-control/component.js +5 -3
  149. package/build-module/border-control/border-control/component.js.map +1 -1
  150. package/build-module/border-control/border-control/hook.js +6 -3
  151. package/build-module/border-control/border-control/hook.js.map +1 -1
  152. package/build-module/border-control/border-control-dropdown/component.js +6 -2
  153. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  154. package/build-module/border-control/border-control-dropdown/hook.js +5 -5
  155. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  156. package/build-module/border-control/styles.js +56 -29
  157. package/build-module/border-control/styles.js.map +1 -1
  158. package/build-module/box-control/index.js +1 -20
  159. package/build-module/box-control/index.js.map +1 -1
  160. package/build-module/box-control/utils.js +0 -6
  161. package/build-module/box-control/utils.js.map +1 -1
  162. package/build-module/button/index.js +3 -4
  163. package/build-module/button/index.js.map +1 -1
  164. package/build-module/button/index.native.js +16 -3
  165. package/build-module/button/index.native.js.map +1 -1
  166. package/build-module/button-group/index.js +27 -7
  167. package/build-module/button-group/index.js.map +1 -1
  168. package/build-module/{flyout → button-group}/types.js +0 -0
  169. package/build-module/{flyout → button-group}/types.js.map +0 -0
  170. package/build-module/checkbox-control/index.js +31 -7
  171. package/build-module/checkbox-control/index.js.map +1 -1
  172. package/build-module/checkbox-control/types.js +2 -0
  173. package/{build/flyout → build-module/checkbox-control}/types.js.map +0 -0
  174. package/build-module/circular-option-picker/index.js +1 -2
  175. package/build-module/circular-option-picker/index.js.map +1 -1
  176. package/build-module/color-palette/index.js +5 -11
  177. package/build-module/color-palette/index.js.map +1 -1
  178. package/build-module/date-time/date.js +44 -19
  179. package/build-module/date-time/date.js.map +1 -1
  180. package/build-module/date-time/index.js +28 -4
  181. package/build-module/date-time/index.js.map +1 -1
  182. package/build-module/date-time/time.js +43 -41
  183. package/build-module/date-time/time.js.map +1 -1
  184. package/build-module/date-time/timezone.js +4 -3
  185. package/build-module/date-time/timezone.js.map +1 -1
  186. package/build-module/date-time/types.js +2 -0
  187. package/build-module/date-time/types.js.map +1 -0
  188. package/build-module/date-time/utils.js +6 -4
  189. package/build-module/date-time/utils.js.map +1 -1
  190. package/build-module/disabled/index.js +5 -76
  191. package/build-module/disabled/index.js.map +1 -1
  192. package/build-module/draggable/index.native.js +206 -0
  193. package/build-module/draggable/index.native.js.map +1 -0
  194. package/build-module/dropdown/index.js +7 -5
  195. package/build-module/dropdown/index.js.map +1 -1
  196. package/build-module/focal-point-picker/index.native.js +3 -3
  197. package/build-module/focal-point-picker/index.native.js.map +1 -1
  198. package/build-module/heading/hook.js +1 -1
  199. package/build-module/heading/hook.js.map +1 -1
  200. package/build-module/index.js +0 -1
  201. package/build-module/index.js.map +1 -1
  202. package/build-module/index.native.js +2 -1
  203. package/build-module/index.native.js.map +1 -1
  204. package/build-module/input-control/index.js +24 -3
  205. package/build-module/input-control/index.js.map +1 -1
  206. package/build-module/input-control/styles/input-control-styles.js +42 -30
  207. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  208. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  209. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  210. package/build-module/mobile/bottom-sheet/index.native.js +1 -1
  211. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  212. package/build-module/mobile/bottom-sheet-select-control/index.native.js +4 -2
  213. package/build-module/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  214. package/build-module/mobile/html-text-input/index.native.js +20 -9
  215. package/build-module/mobile/html-text-input/index.native.js.map +1 -1
  216. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +21 -5
  217. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  218. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +42 -25
  219. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  220. package/build-module/navigation/styles/navigation-styles.js +13 -13
  221. package/build-module/navigation/styles/navigation-styles.js.map +1 -1
  222. package/build-module/notice/index.native.js +45 -41
  223. package/build-module/notice/index.native.js.map +1 -1
  224. package/build-module/notice/list.native.js +28 -46
  225. package/build-module/notice/list.native.js.map +1 -1
  226. package/build-module/palette-edit/index.js +37 -7
  227. package/build-module/palette-edit/index.js.map +1 -1
  228. package/build-module/popover/index.js +225 -325
  229. package/build-module/popover/index.js.map +1 -1
  230. package/build-module/resizable-box/resize-tooltip/utils.js +4 -5
  231. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  232. package/build-module/sandbox/index.js +2 -2
  233. package/build-module/sandbox/index.js.map +1 -1
  234. package/build-module/sandbox/index.native.js +1 -1
  235. package/build-module/sandbox/index.native.js.map +1 -1
  236. package/build-module/select-control/index.js +29 -3
  237. package/build-module/select-control/index.js.map +1 -1
  238. package/build-module/select-control/styles/select-control-styles.js +17 -14
  239. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  240. package/build-module/surface/styles.js +8 -8
  241. package/build-module/surface/styles.js.map +1 -1
  242. package/build-module/text/hook.js +5 -5
  243. package/build-module/text/hook.js.map +1 -1
  244. package/build-module/text/styles/text-mixins.native.js +2 -2
  245. package/build-module/text/styles/text-mixins.native.js.map +1 -1
  246. package/build-module/text/styles.js +7 -7
  247. package/build-module/text/styles.js.map +1 -1
  248. package/build-module/text-control/index.js +35 -27
  249. package/build-module/text-control/index.js.map +1 -1
  250. package/build-module/text-control/types.js +2 -0
  251. package/build-module/text-control/types.js.map +1 -0
  252. package/build-module/toggle-group-control/toggle-group-control/component.js +2 -3
  253. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  254. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +1 -5
  255. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  256. package/build-module/tools-panel/tools-panel-header/component.js +51 -36
  257. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  258. package/build-module/tooltip/index.js +2 -2
  259. package/build-module/tooltip/index.js.map +1 -1
  260. package/build-module/ui/spinner/component.js +1 -1
  261. package/build-module/ui/spinner/component.js.map +1 -1
  262. package/build-module/unit-control/index.js +3 -3
  263. package/build-module/unit-control/index.js.map +1 -1
  264. package/build-module/unit-control/styles/unit-control-styles.js +11 -20
  265. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  266. package/build-module/unit-control/utils.js.map +1 -1
  267. package/build-module/utils/colors-values.js +19 -23
  268. package/build-module/utils/colors-values.js.map +1 -1
  269. package/build-style/style-rtl.css +55 -170
  270. package/build-style/style.css +51 -170
  271. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  272. package/build-types/border-box-control/border-box-control/hook.d.ts +3 -1
  273. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  274. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
  275. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  276. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +3 -1
  277. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  278. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
  279. package/build-types/border-box-control/styles.d.ts +2 -2
  280. package/build-types/border-box-control/styles.d.ts.map +1 -1
  281. package/build-types/border-box-control/types.d.ts +40 -13
  282. package/build-types/border-box-control/types.d.ts.map +1 -1
  283. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  284. package/build-types/border-control/border-control/hook.d.ts +2 -1
  285. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  286. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  287. package/build-types/border-control/border-control-dropdown/hook.d.ts +1 -0
  288. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  289. package/build-types/border-control/styles.d.ts +2 -1
  290. package/build-types/border-control/styles.d.ts.map +1 -1
  291. package/build-types/border-control/types.d.ts +18 -6
  292. package/build-types/border-control/types.d.ts.map +1 -1
  293. package/build-types/button/index.d.ts.map +1 -1
  294. package/build-types/button-group/index.d.ts +25 -0
  295. package/build-types/button-group/index.d.ts.map +1 -0
  296. package/build-types/button-group/stories/index.d.ts +12 -0
  297. package/build-types/button-group/stories/index.d.ts.map +1 -0
  298. package/build-types/button-group/types.d.ts +11 -0
  299. package/build-types/button-group/types.d.ts.map +1 -0
  300. package/build-types/checkbox-control/index.d.ts +26 -0
  301. package/build-types/checkbox-control/index.d.ts.map +1 -0
  302. package/build-types/checkbox-control/stories/index.d.ts +13 -0
  303. package/build-types/checkbox-control/stories/index.d.ts.map +1 -0
  304. package/build-types/checkbox-control/types.d.ts +35 -0
  305. package/build-types/checkbox-control/types.d.ts.map +1 -0
  306. package/build-types/circular-option-picker/index.d.ts.map +1 -1
  307. package/build-types/color-palette/index.d.ts.map +1 -1
  308. package/build-types/color-picker/styles.d.ts +3 -3
  309. package/build-types/date-time/date.d.ts +24 -0
  310. package/build-types/date-time/date.d.ts.map +1 -0
  311. package/build-types/date-time/index.d.ts +35 -0
  312. package/build-types/date-time/index.d.ts.map +1 -0
  313. package/build-types/date-time/stories/date.d.ts +14 -0
  314. package/build-types/date-time/stories/date.d.ts.map +1 -0
  315. package/build-types/date-time/stories/index.d.ts +14 -0
  316. package/build-types/date-time/stories/index.d.ts.map +1 -0
  317. package/build-types/date-time/stories/time.d.ts +12 -0
  318. package/build-types/date-time/stories/time.d.ts.map +1 -0
  319. package/build-types/date-time/stories/utils.d.ts +3 -0
  320. package/build-types/date-time/stories/utils.d.ts.map +1 -0
  321. package/build-types/date-time/test/date.d.ts +2 -0
  322. package/build-types/date-time/test/date.d.ts.map +1 -0
  323. package/build-types/date-time/test/time.d.ts +2 -0
  324. package/build-types/date-time/test/time.d.ts.map +1 -0
  325. package/build-types/date-time/test/utils.d.ts +2 -0
  326. package/build-types/date-time/test/utils.d.ts.map +1 -0
  327. package/build-types/date-time/time.d.ts +25 -0
  328. package/build-types/date-time/time.d.ts.map +1 -0
  329. package/build-types/date-time/timezone.d.ts +8 -0
  330. package/build-types/date-time/timezone.d.ts.map +1 -0
  331. package/build-types/date-time/types.d.ts +91 -0
  332. package/build-types/date-time/types.d.ts.map +1 -0
  333. package/build-types/date-time/utils.d.ts +15 -0
  334. package/build-types/date-time/utils.d.ts.map +1 -0
  335. package/build-types/disabled/index.d.ts.map +1 -1
  336. package/build-types/dropdown/index.d.ts.map +1 -1
  337. package/build-types/input-control/index.d.ts +23 -3
  338. package/build-types/input-control/index.d.ts.map +1 -1
  339. package/build-types/input-control/input-field.d.ts +1 -1
  340. package/build-types/input-control/input-field.d.ts.map +1 -1
  341. package/build-types/input-control/stories/index.d.ts +5 -5
  342. package/build-types/input-control/stories/index.d.ts.map +1 -1
  343. package/build-types/input-control/styles/input-control-styles.d.ts +1 -0
  344. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  345. package/build-types/input-control/types.d.ts +79 -3
  346. package/build-types/input-control/types.d.ts.map +1 -1
  347. package/build-types/number-control/styles/number-control-styles.d.ts +1 -1
  348. package/build-types/popover/index.d.ts +5 -8
  349. package/build-types/popover/index.d.ts.map +1 -1
  350. package/build-types/resizable-box/index.d.ts +1 -1
  351. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  352. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  353. package/build-types/select-control/index.d.ts +30 -26
  354. package/build-types/select-control/index.d.ts.map +1 -1
  355. package/build-types/select-control/stories/index.d.ts +23 -0
  356. package/build-types/select-control/stories/index.d.ts.map +1 -0
  357. package/build-types/select-control/styles/select-control-styles.d.ts +3 -4
  358. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  359. package/build-types/select-control/test/select-control.d.ts +2 -0
  360. package/build-types/select-control/test/select-control.d.ts.map +1 -0
  361. package/build-types/select-control/types.d.ts +52 -1
  362. package/build-types/select-control/types.d.ts.map +1 -1
  363. package/build-types/text-control/index.d.ts +2 -2
  364. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  365. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts.map +1 -1
  366. package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
  367. package/build-types/tools-panel/types.d.ts +0 -1
  368. package/build-types/tools-panel/types.d.ts.map +1 -1
  369. package/build-types/tooltip/index.d.ts.map +1 -1
  370. package/build-types/unit-control/index.d.ts +2 -2
  371. package/build-types/unit-control/index.d.ts.map +1 -1
  372. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  373. package/build-types/unit-control/test/index.d.ts +2 -0
  374. package/build-types/unit-control/test/index.d.ts.map +1 -0
  375. package/build-types/unit-control/test/utils.d.ts +2 -0
  376. package/build-types/unit-control/test/utils.d.ts.map +1 -0
  377. package/build-types/unit-control/types.d.ts +1 -1
  378. package/build-types/unit-control/types.d.ts.map +1 -1
  379. package/build-types/unit-control/utils.d.ts +3 -3
  380. package/build-types/unit-control/utils.d.ts.map +1 -1
  381. package/build-types/utils/colors-values.d.ts +6 -146
  382. package/build-types/utils/colors-values.d.ts.map +1 -1
  383. package/package.json +19 -19
  384. package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.js +5 -3
  385. package/src/autocomplete/style.scss +1 -1
  386. package/src/border-box-control/border-box-control/README.md +10 -14
  387. package/src/border-box-control/border-box-control/component.tsx +21 -4
  388. package/src/border-box-control/border-box-control-linked-button/hook.ts +10 -6
  389. package/src/border-box-control/border-box-control-split-controls/component.tsx +24 -7
  390. package/src/border-box-control/border-box-control-visualizer/hook.ts +11 -6
  391. package/src/border-box-control/stories/index.js +1 -0
  392. package/src/border-box-control/styles.ts +15 -8
  393. package/src/border-box-control/types.ts +40 -14
  394. package/src/border-control/border-control/README.md +0 -7
  395. package/src/border-control/border-control/component.tsx +4 -2
  396. package/src/border-control/border-control/hook.ts +5 -2
  397. package/src/border-control/border-control-dropdown/component.tsx +18 -11
  398. package/src/border-control/border-control-dropdown/hook.ts +7 -5
  399. package/src/border-control/stories/index.js +1 -0
  400. package/src/border-control/styles.ts +82 -22
  401. package/src/border-control/types.ts +18 -6
  402. package/src/box-control/README.md +0 -74
  403. package/src/box-control/index.js +0 -15
  404. package/src/box-control/stories/index.js +0 -29
  405. package/src/box-control/utils.js +0 -7
  406. package/src/button/index.js +2 -4
  407. package/src/button/index.native.js +33 -18
  408. package/src/button/test/index.js +16 -1
  409. package/src/button-group/index.tsx +47 -0
  410. package/src/button-group/stories/index.tsx +41 -0
  411. package/src/button-group/types.ts +11 -0
  412. package/src/checkbox-control/README.md +10 -8
  413. package/src/checkbox-control/{index.js → index.tsx} +49 -14
  414. package/src/checkbox-control/stories/{index.js → index.tsx} +49 -27
  415. package/src/checkbox-control/types.ts +36 -0
  416. package/src/circular-option-picker/index.js +1 -2
  417. package/src/circular-option-picker/style.scss +1 -0
  418. package/src/color-palette/README.md +0 -1
  419. package/src/color-palette/index.js +6 -13
  420. package/src/color-palette/style.scss +3 -18
  421. package/src/color-palette/test/__snapshots__/index.js.snap +2 -3
  422. package/src/confirm-dialog/stories/index.js +87 -99
  423. package/src/date-time/README.md +13 -10
  424. package/src/date-time/{date.js → date.tsx} +49 -20
  425. package/src/date-time/{index.js → index.tsx} +31 -5
  426. package/src/date-time/stories/date.tsx +73 -0
  427. package/src/date-time/stories/index.tsx +75 -0
  428. package/src/date-time/stories/time.tsx +51 -0
  429. package/src/date-time/stories/utils.ts +9 -0
  430. package/src/date-time/test/date.tsx +127 -0
  431. package/src/date-time/test/{time.js → time.tsx} +34 -19
  432. package/src/date-time/test/{utils.js → utils.ts} +1 -1
  433. package/src/date-time/{time.js → time.tsx} +57 -46
  434. package/src/date-time/{timezone.js → timezone.tsx} +4 -3
  435. package/src/date-time/types.ts +106 -0
  436. package/src/date-time/utils.ts +20 -0
  437. package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -4
  438. package/src/disabled/index.js +5 -90
  439. package/src/draggable/index.native.js +215 -0
  440. package/src/draggable/style.native.scss +3 -0
  441. package/src/dropdown/index.js +9 -4
  442. package/src/dropdown/style.scss +1 -1
  443. package/src/focal-point-picker/index.native.js +3 -3
  444. package/src/form-file-upload/test/index.js +20 -13
  445. package/src/heading/hook.ts +1 -1
  446. package/src/heading/test/__snapshots__/index.js.snap +3 -3
  447. package/src/index.js +0 -1
  448. package/src/index.native.js +1 -0
  449. package/src/input-control/README.md +3 -3
  450. package/src/input-control/index.tsx +23 -3
  451. package/src/input-control/stories/index.tsx +63 -0
  452. package/src/input-control/styles/input-control-styles.tsx +20 -7
  453. package/src/input-control/types.ts +79 -2
  454. package/src/item-group/stories/index.js +22 -18
  455. package/src/menu-item/style.scss +10 -0
  456. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  457. package/src/mobile/bottom-sheet/bottom-sheet-navigation/test/navigation-container.native.js +9 -2
  458. package/src/mobile/bottom-sheet/index.native.js +1 -1
  459. package/src/mobile/bottom-sheet-select-control/index.native.js +8 -2
  460. package/src/mobile/html-text-input/index.native.js +45 -29
  461. package/src/mobile/html-text-input/style.android.scss +2 -15
  462. package/src/mobile/html-text-input/style.ios.scss +2 -15
  463. package/src/mobile/html-text-input/{style-common.native.scss → style.scss} +16 -0
  464. package/src/mobile/keyboard-aware-flat-list/index.android.js +15 -5
  465. package/src/mobile/keyboard-aware-flat-list/index.ios.js +75 -46
  466. package/src/mobile/link-settings/test/link-settings-navigation.native.js +9 -1
  467. package/src/navigation/styles/navigation-styles.js +5 -5
  468. package/src/navigator/stories/index.js +16 -10
  469. package/src/notice/index.native.js +44 -54
  470. package/src/notice/list.native.js +27 -51
  471. package/src/notice/style.native.scss +1 -0
  472. package/src/palette-edit/index.js +37 -9
  473. package/src/palette-edit/style.scss +0 -7
  474. package/src/palette-edit/test/index.js +63 -0
  475. package/src/panel/README.md +1 -1
  476. package/src/placeholder/test/index.js +7 -0
  477. package/src/popover/README.md +7 -9
  478. package/src/popover/index.js +242 -417
  479. package/src/popover/style.scss +20 -190
  480. package/src/popover/test/__snapshots__/index.js.snap +6 -18
  481. package/src/query-controls/README.md +2 -2
  482. package/src/resizable-box/resize-tooltip/utils.ts +4 -5
  483. package/src/sandbox/index.js +2 -2
  484. package/src/sandbox/index.native.js +1 -1
  485. package/src/select-control/README.md +2 -2
  486. package/src/select-control/index.tsx +30 -29
  487. package/src/select-control/stories/index.tsx +90 -0
  488. package/src/select-control/styles/select-control-styles.ts +16 -12
  489. package/src/select-control/test/{select-control.js → select-control.tsx} +2 -2
  490. package/src/select-control/types.ts +66 -1
  491. package/src/surface/styles.js +1 -1
  492. package/src/tab-panel/style.scss +1 -1
  493. package/src/text/hook.js +1 -1
  494. package/src/text/styles/text-mixins.native.js +2 -2
  495. package/src/text/styles.js +1 -1
  496. package/src/text/test/__snapshots__/{index.js.snap → index.tsx.snap} +16 -0
  497. package/src/text/test/{index.js → index.tsx} +12 -6
  498. package/src/text-control/index.tsx +84 -0
  499. package/src/text-control/stories/index.tsx +66 -0
  500. package/src/text-control/types.ts +29 -0
  501. package/src/toggle-group-control/test/__snapshots__/index.js.snap +4 -10
  502. package/src/toggle-group-control/toggle-group-control/component.tsx +7 -3
  503. package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +1 -5
  504. package/src/toolbar-group/style.scss +20 -0
  505. package/src/tools-panel/test/__snapshots__/index.js.snap +2 -2
  506. package/src/tools-panel/test/index.js +71 -18
  507. package/src/tools-panel/tools-panel-header/component.tsx +75 -33
  508. package/src/tools-panel/types.ts +0 -1
  509. package/src/tooltip/index.js +8 -2
  510. package/src/tooltip/style.scss +2 -4
  511. package/src/tooltip/test/index.js +6 -0
  512. package/src/tooltip/test/index.native.js +1 -1
  513. package/src/ui/spinner/component.js +1 -1
  514. package/src/ui/spinner/test/__snapshots__/index.js.snap +3 -3
  515. package/src/unit-control/index.tsx +2 -5
  516. package/src/unit-control/styles/unit-control-styles.ts +3 -13
  517. package/src/unit-control/test/__snapshots__/index.tsx.snap +33 -0
  518. package/src/unit-control/test/{index.js → index.tsx} +295 -166
  519. package/src/unit-control/test/{utils.js → utils.ts} +38 -19
  520. package/src/unit-control/types.ts +4 -1
  521. package/src/unit-control/utils.ts +5 -3
  522. package/src/utils/colors-values.js +18 -22
  523. package/tsconfig.json +14 -3
  524. package/tsconfig.tsbuildinfo +1 -1
  525. package/build/box-control/visualizer.js +0 -165
  526. package/build/box-control/visualizer.js.map +0 -1
  527. package/build/flyout/context.js +0 -23
  528. package/build/flyout/context.js.map +0 -1
  529. package/build/flyout/flyout/component.js +0 -106
  530. package/build/flyout/flyout/component.js.map +0 -1
  531. package/build/flyout/flyout/hook.js +0 -53
  532. package/build/flyout/flyout/hook.js.map +0 -1
  533. package/build/flyout/flyout/index.js +0 -24
  534. package/build/flyout/flyout/index.js.map +0 -1
  535. package/build/flyout/flyout-content/component.js +0 -65
  536. package/build/flyout/flyout-content/component.js.map +0 -1
  537. package/build/flyout/flyout-content/index.js +0 -16
  538. package/build/flyout/flyout-content/index.js.map +0 -1
  539. package/build/flyout/index.js +0 -16
  540. package/build/flyout/index.js.map +0 -1
  541. package/build/flyout/styles.js +0 -46
  542. package/build/flyout/styles.js.map +0 -1
  543. package/build/flyout/utils.js +0 -36
  544. package/build/flyout/utils.js.map +0 -1
  545. package/build/mobile/html-text-input/container.android.js +0 -41
  546. package/build/mobile/html-text-input/container.android.js.map +0 -1
  547. package/build/mobile/html-text-input/container.ios.js +0 -60
  548. package/build/mobile/html-text-input/container.ios.js.map +0 -1
  549. package/build/popover/utils.js +0 -322
  550. package/build/popover/utils.js.map +0 -1
  551. package/build-module/box-control/visualizer.js +0 -154
  552. package/build-module/box-control/visualizer.js.map +0 -1
  553. package/build-module/flyout/context.js +0 -11
  554. package/build-module/flyout/context.js.map +0 -1
  555. package/build-module/flyout/flyout/component.js +0 -89
  556. package/build-module/flyout/flyout/component.js.map +0 -1
  557. package/build-module/flyout/flyout/hook.js +0 -44
  558. package/build-module/flyout/flyout/hook.js.map +0 -1
  559. package/build-module/flyout/flyout/index.js +0 -3
  560. package/build-module/flyout/flyout/index.js.map +0 -1
  561. package/build-module/flyout/flyout-content/component.js +0 -51
  562. package/build-module/flyout/flyout-content/component.js.map +0 -1
  563. package/build-module/flyout/flyout-content/index.js +0 -2
  564. package/build-module/flyout/flyout-content/index.js.map +0 -1
  565. package/build-module/flyout/index.js +0 -2
  566. package/build-module/flyout/index.js.map +0 -1
  567. package/build-module/flyout/styles.js +0 -27
  568. package/build-module/flyout/styles.js.map +0 -1
  569. package/build-module/flyout/utils.js +0 -25
  570. package/build-module/flyout/utils.js.map +0 -1
  571. package/build-module/mobile/html-text-input/container.android.js +0 -29
  572. package/build-module/mobile/html-text-input/container.android.js.map +0 -1
  573. package/build-module/mobile/html-text-input/container.ios.js +0 -48
  574. package/build-module/mobile/html-text-input/container.ios.js.map +0 -1
  575. package/build-module/popover/utils.js +0 -308
  576. package/build-module/popover/utils.js.map +0 -1
  577. package/build-types/flyout/context.d.ts +0 -6
  578. package/build-types/flyout/context.d.ts.map +0 -1
  579. package/build-types/flyout/flyout/component.d.ts +0 -21
  580. package/build-types/flyout/flyout/component.d.ts.map +0 -1
  581. package/build-types/flyout/flyout/hook.d.ts +0 -270
  582. package/build-types/flyout/flyout/hook.d.ts.map +0 -1
  583. package/build-types/flyout/flyout/index.d.ts +0 -3
  584. package/build-types/flyout/flyout/index.d.ts.map +0 -1
  585. package/build-types/flyout/flyout-content/component.d.ts +0 -3
  586. package/build-types/flyout/flyout-content/component.d.ts.map +0 -1
  587. package/build-types/flyout/flyout-content/index.d.ts +0 -2
  588. package/build-types/flyout/flyout-content/index.d.ts.map +0 -1
  589. package/build-types/flyout/index.d.ts +0 -2
  590. package/build-types/flyout/index.d.ts.map +0 -1
  591. package/build-types/flyout/styles.d.ts +0 -22
  592. package/build-types/flyout/styles.d.ts.map +0 -1
  593. package/build-types/flyout/types.d.ts +0 -80
  594. package/build-types/flyout/types.d.ts.map +0 -1
  595. package/build-types/flyout/utils.d.ts +0 -8
  596. package/build-types/flyout/utils.d.ts.map +0 -1
  597. package/build-types/popover/utils.d.ts +0 -70
  598. package/build-types/popover/utils.d.ts.map +0 -1
  599. package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts +0 -19
  600. package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts.map +0 -1
  601. package/src/box-control/visualizer.js +0 -116
  602. package/src/button-group/index.js +0 -17
  603. package/src/button-group/stories/index.js +0 -21
  604. package/src/date-time/stories/date.js +0 -17
  605. package/src/date-time/stories/index.js +0 -72
  606. package/src/date-time/stories/time.js +0 -32
  607. package/src/date-time/test/date.js +0 -97
  608. package/src/date-time/utils.js +0 -18
  609. package/src/flyout/context.js +0 -10
  610. package/src/flyout/flyout/README.md +0 -98
  611. package/src/flyout/flyout/component.js +0 -111
  612. package/src/flyout/flyout/hook.js +0 -45
  613. package/src/flyout/flyout/index.js +0 -2
  614. package/src/flyout/flyout-content/component.js +0 -53
  615. package/src/flyout/flyout-content/index.js +0 -1
  616. package/src/flyout/index.js +0 -1
  617. package/src/flyout/stories/index.js +0 -24
  618. package/src/flyout/styles.ts +0 -41
  619. package/src/flyout/test/__snapshots__/index.js.snap +0 -186
  620. package/src/flyout/test/index.js +0 -103
  621. package/src/flyout/types.ts +0 -84
  622. package/src/flyout/utils.js +0 -23
  623. package/src/input-control/stories/index.js +0 -71
  624. package/src/mobile/html-text-input/container.android.js +0 -23
  625. package/src/mobile/html-text-input/container.ios.js +0 -50
  626. package/src/popover/test/utils.js +0 -304
  627. package/src/popover/utils.js +0 -396
  628. package/src/select-control/stories/index.js +0 -104
  629. package/src/text-control/index.js +0 -72
  630. package/src/text-control/stories/index.js +0 -46
@@ -99,6 +99,7 @@ $color-palette-circle-spacing: 12px;
99
99
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2);
100
100
  // Show a thin circular outline in Windows high contrast mode, otherwise the button is invisible.
101
101
  border: 1px solid transparent;
102
+ box-sizing: inherit;
102
103
  }
103
104
 
104
105
  &:focus {
@@ -41,7 +41,6 @@ classes to be applied to the container.
41
41
 
42
42
  - Type: `String`
43
43
  - Required: No
44
- - Default: `Select or Upload Media`
45
44
 
46
45
  ### clearable
47
46
 
@@ -6,7 +6,6 @@ import { map } from 'lodash';
6
6
  import { colord, extend } from 'colord';
7
7
  import namesPlugin from 'colord/plugins/names';
8
8
  import a11yPlugin from 'colord/plugins/a11y';
9
- import classnames from 'classnames';
10
9
 
11
10
  /**
12
11
  * WordPress dependencies
@@ -116,12 +115,12 @@ function MultiplePalettes( {
116
115
  export function CustomColorPickerDropdown( { isRenderedInSidebar, ...props } ) {
117
116
  return (
118
117
  <Dropdown
119
- contentClassName={ classnames(
120
- 'components-color-palette__custom-color-dropdown-content',
121
- {
122
- 'is-rendered-in-sidebar': isRenderedInSidebar,
123
- }
124
- ) }
118
+ contentClassName="components-color-palette__custom-color-dropdown-content"
119
+ popoverProps={
120
+ isRenderedInSidebar
121
+ ? { placement: 'left-start', offset: 20 }
122
+ : undefined
123
+ }
125
124
  { ...props }
126
125
  />
127
126
  );
@@ -176,11 +175,6 @@ export default function ColorPalette( {
176
175
  />
177
176
  );
178
177
 
179
- let dropdownPosition;
180
- if ( __experimentalIsRenderedInSidebar ) {
181
- dropdownPosition = 'bottom left';
182
- }
183
-
184
178
  const colordColor = colord( value );
185
179
 
186
180
  const valueWithoutLeadingHash = value?.startsWith( '#' )
@@ -211,7 +205,6 @@ export default function ColorPalette( {
211
205
  <VStack spacing={ 3 } className={ className }>
212
206
  { ! disableCustomColors && (
213
207
  <CustomColorPickerDropdown
214
- position={ dropdownPosition }
215
208
  isRenderedInSidebar={ __experimentalIsRenderedInSidebar }
216
209
  renderContent={ renderCustomColorPicker }
217
210
  renderToggle={ ( { isOpen, onToggle } ) => (
@@ -30,31 +30,16 @@
30
30
  overflow: visible;
31
31
  box-shadow: 0 4px 4px rgba(0, 0, 0, 0.05);
32
32
  border: none;
33
+ outline: none;
33
34
  border-radius: $radius-block-ui;
34
- max-height: fit-content !important;
35
- & > div {
36
- padding: 0;
37
- }
35
+ padding: 0;
36
+
38
37
  .react-colorful__saturation {
39
38
  border-top-right-radius: $radius-block-ui;
40
39
  border-top-left-radius: $radius-block-ui;
41
40
  }
42
41
  }
43
42
 
44
- @include break-medium() {
45
- .components-dropdown__content.components-color-palette__custom-color-dropdown-content.is-rendered-in-sidebar {
46
- .components-popover__content.components-popover__content {
47
- margin-right: #{ math.div($sidebar-width, 2) + $grid-unit-20 };
48
- }
49
- &.is-from-top .components-popover__content {
50
- margin-top: #{ -($grid-unit-60 + $grid-unit-15) };
51
- }
52
- &.is-from-bottom .components-popover__content {
53
- margin-bottom: #{ -($grid-unit-60 + $grid-unit-15) };
54
- }
55
- }
56
- }
57
-
58
43
  .components-color-palette__custom-color-name {
59
44
  text-align: left;
60
45
  }
@@ -1186,13 +1186,12 @@ exports[`ColorPalette should render a dynamic toolbar of colors 1`] = `
1186
1186
  >
1187
1187
  <ForwardRef(Button)
1188
1188
  className="components-circular-option-picker__clear"
1189
- isSmall={true}
1190
1189
  onClick={[Function]}
1191
- variant="secondary"
1190
+ variant="tertiary"
1192
1191
  >
1193
1192
  <button
1194
1193
  aria-describedby={null}
1195
- className="components-button components-circular-option-picker__clear is-secondary is-small"
1194
+ className="components-button components-circular-option-picker__clear is-tertiary"
1196
1195
  onClick={[Function]}
1197
1196
  type="button"
1198
1197
  >
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { text } from '@storybook/addon-knobs';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -15,102 +10,42 @@ import Button from '../../button';
15
10
  import { Heading } from '../../heading';
16
11
  import { ConfirmDialog } from '..';
17
12
 
18
- export default {
13
+ const meta = {
19
14
  component: ConfirmDialog,
20
15
  title: 'Components (Experimental)/ConfirmDialog',
16
+ argTypes: {
17
+ children: {
18
+ control: { type: 'text' },
19
+ },
20
+ confirmButtonText: {
21
+ control: { type: 'text' },
22
+ },
23
+ cancelButtonText: {
24
+ control: { type: 'text' },
25
+ },
26
+ isOpen: {
27
+ control: { type: null },
28
+ },
29
+ onConfirm: {
30
+ control: { type: null },
31
+ },
32
+ onCancel: {
33
+ control: { type: null },
34
+ },
35
+ },
36
+ args: {
37
+ children: 'Would you like to privately publish the post now?',
38
+ },
21
39
  parameters: {
22
- knobs: { disable: false },
40
+ docs: { source: { state: 'open' } },
23
41
  },
24
42
  };
25
43
 
26
- const daText = () =>
27
- text( 'message', 'Would you like to privately publish the post now?' );
28
- const daCancelText = () => text( 'cancel button', 'No thanks' );
29
- const daConfirmText = () => text( 'confirm button', 'Yes please!' );
30
-
31
- // Simplest usage: just declare the component with the required `onConfirm` prop.
32
- export const _default = () => {
33
- const [ confirmVal, setConfirmVal ] = useState( "Hasn't confirmed yet" );
34
-
35
- return (
36
- <>
37
- <ConfirmDialog onConfirm={ () => setConfirmVal( 'Confirmed!' ) }>
38
- { daText() }
39
- </ConfirmDialog>
40
- <Heading level={ 1 }>{ confirmVal }</Heading>
41
- </>
42
- );
43
- };
44
-
45
- export const WithCustomButtonLabels = () => {
46
- const [ confirmVal, setConfirmVal ] = useState( "Hasn't confirmed yet" );
47
-
48
- return (
49
- <>
50
- <ConfirmDialog
51
- onConfirm={ () => setConfirmVal( 'Confirmed!' ) }
52
- cancelButtonText={ daCancelText() }
53
- confirmButtonText={ daConfirmText() }
54
- >
55
- { daText() }
56
- </ConfirmDialog>
57
- <Heading level={ 1 }>{ confirmVal }</Heading>
58
- </>
59
- );
60
- };
61
-
62
- export const WithJSXMessage = () => {
63
- const [ confirmVal, setConfirmVal ] = useState( "Hasn't confirmed yet" );
64
-
65
- return (
66
- <>
67
- <ConfirmDialog onConfirm={ () => setConfirmVal( 'Confirmed!' ) }>
68
- <Heading level={ 2 }>{ daText() }</Heading>
69
- </ConfirmDialog>
70
- <Heading level={ 1 }>{ confirmVal }</Heading>
71
- </>
72
- );
73
- };
74
-
75
- export const VeeeryLongMessage = () => {
76
- const [ confirmVal, setConfirmVal ] = useState( "Hasn't confirmed yet" );
44
+ export default meta;
77
45
 
78
- return (
79
- <>
80
- <ConfirmDialog onConfirm={ () => setConfirmVal( 'Confirmed!' ) }>
81
- { daText().repeat( 20 ) }
82
- </ConfirmDialog>
83
- <Heading level={ 1 }>{ confirmVal }</Heading>
84
- </>
85
- );
86
- };
87
-
88
- export const UncontrolledAndWithExplicitOnCancel = () => {
89
- const [ confirmVal, setConfirmVal ] = useState(
90
- "Hasn't confirmed or cancelled yet"
91
- );
92
-
93
- return (
94
- <>
95
- <ConfirmDialog
96
- onConfirm={ () => setConfirmVal( 'Confirmed!' ) }
97
- onCancel={ () => setConfirmVal( 'Cancelled' ) }
98
- >
99
- { daText() }
100
- </ConfirmDialog>
101
- <Heading level={ 1 }>{ confirmVal }</Heading>
102
- </>
103
- );
104
- };
105
-
106
- // Controlled `ConfirmDialog`s require both `onConfirm` *and* `onCancel to be passed
107
- // It's expected that the user will then use it to hide the dialog, too (see the
108
- // `setIsOpen` calls below).
109
- export const Controlled = () => {
46
+ const Template = ( args ) => {
110
47
  const [ isOpen, setIsOpen ] = useState( false );
111
- const [ confirmVal, setConfirmVal ] = useState(
112
- "Hasn't confirmed or cancelled yet"
113
- );
48
+ const [ confirmVal, setConfirmVal ] = useState( '' );
114
49
 
115
50
  const handleConfirm = () => {
116
51
  setConfirmVal( 'Confirmed!' );
@@ -121,22 +56,75 @@ export const Controlled = () => {
121
56
  setConfirmVal( 'Cancelled' );
122
57
  setIsOpen( false );
123
58
  };
124
-
125
59
  return (
126
60
  <>
61
+ <Button variant="primary" onClick={ () => setIsOpen( true ) }>
62
+ Open ConfirmDialog
63
+ </Button>
64
+
127
65
  <ConfirmDialog
66
+ { ...args }
128
67
  isOpen={ isOpen }
129
68
  onConfirm={ handleConfirm }
130
69
  onCancel={ handleCancel }
131
70
  >
132
- { daText() }
71
+ { args.children }
133
72
  </ConfirmDialog>
134
73
 
135
74
  <Heading level={ 1 }>{ confirmVal }</Heading>
136
-
137
- <Button variant="primary" onClick={ () => setIsOpen( true ) }>
138
- Open ConfirmDialog
139
- </Button>
140
75
  </>
141
76
  );
142
77
  };
78
+
79
+ // Simplest usage: just declare the component with the required `onConfirm` prop. Note: the `onCancel` prop is optional here, unless you'd like to render the component in Controlled mode (see below)
80
+ export const _default = Template.bind( {} );
81
+ const _defaultSnippet = `() => {
82
+ const [ isOpen, setIsOpen ] = useState( false );
83
+ const [ confirmVal, setConfirmVal ] = useState('');
84
+
85
+ const handleConfirm = () => {
86
+ setConfirmVal( 'Confirmed!' );
87
+ setIsOpen( false );
88
+ };
89
+
90
+ const handleCancel = () => {
91
+ setConfirmVal( 'Cancelled' );
92
+ setIsOpen( false );
93
+ };
94
+
95
+ return (
96
+ <>
97
+ <ConfirmDialog
98
+ isOpen={ isOpen }
99
+ onConfirm={ handleConfirm }
100
+ onCancel={ handleCancel }
101
+ >
102
+ Would you like to privately publish the post now?
103
+ </ConfirmDialog>
104
+
105
+ <Heading level={ 1 }>{ confirmVal }</Heading>
106
+
107
+ <Button variant="primary" onClick={ () => setIsOpen( true ) }>
108
+ Open ConfirmDialog
109
+ </Button>
110
+ </>
111
+ );
112
+ };`;
113
+ _default.args = {};
114
+ _default.parameters = {
115
+ docs: {
116
+ source: {
117
+ code: _defaultSnippet,
118
+ language: 'jsx',
119
+ type: 'auto',
120
+ format: 'true',
121
+ },
122
+ },
123
+ };
124
+
125
+ // To customize button text, pass the `cancelButtonText` and/or `confirmButtonText` props.
126
+ export const withCustomButtonLabels = Template.bind( {} );
127
+ withCustomButtonLabels.args = {
128
+ cancelButtonText: 'No thanks',
129
+ confirmButtonText: 'Yes please!',
130
+ };
@@ -35,22 +35,20 @@ const MyDateTimePicker = () => {
35
35
 
36
36
  The component accepts the following props:
37
37
 
38
- ### currentDate
38
+ ### `currentDate`: `Date | string | number | null`
39
39
 
40
40
  The current date and time at initialization. Optionally pass in a `null` value to specify no date is currently selected.
41
41
 
42
- - Type: `string`
43
42
  - Required: No
44
43
  - Default: today's date
45
44
 
46
- ### onChange
45
+ ### `onChange`: `( date: string | null ) => void`
47
46
 
48
47
  The function called when a new date or time has been selected. It is passed the `currentDate` as an argument.
49
48
 
50
- - Type: `Function`
51
- - Required: Yes
49
+ - Required: No
52
50
 
53
- ### is12Hour
51
+ ### `is12Hour`: `boolean`
54
52
 
55
53
  Whether we use a 12-hour clock. With a 12-hour clock, an AM/PM widget is displayed and the time format is assumed to be `MM-DD-YYYY` (as opposed to the default format `DD-MM-YYYY`).
56
54
 
@@ -58,16 +56,21 @@ Whether we use a 12-hour clock. With a 12-hour clock, an AM/PM widget is display
58
56
  - Required: No
59
57
  - Default: false
60
58
 
61
- ### isInvalidDate
59
+ ### `isInvalidDate`: `( date: Date ) => boolean`
62
60
 
63
61
  A callback function which receives a Date object representing a day as an argument, and should return a Boolean to signify if the day is valid or not.
64
62
 
65
- - Type: `Function`
66
63
  - Required: No
67
64
 
68
- ### onMonthPreviewed
65
+ ### `onMonthPreviewed`: `( date: Date ) => void`
69
66
 
70
67
  A callback invoked when selecting the previous/next month in the date picker. The callback receives the new month date in the ISO format as an argument.
71
68
 
72
- - Type: `Function`
69
+ - Required: No
70
+
71
+ ### `events`: `{ date: Date }[]`
72
+
73
+ List of events to show in the date picker. Each event will appear as a dot on the day of the event.
74
+
75
+ - Type: `Array`
73
76
  - Required: No
@@ -3,10 +3,17 @@
3
3
  */
4
4
  import moment from 'moment';
5
5
  import classnames from 'classnames';
6
-
7
- // react-dates doesn't tree-shake correctly, so we import from the individual
8
- // component here, to avoid including too much of the library
9
- import DayPickerSingleDateController from 'react-dates/lib/components/DayPickerSingleDateController';
6
+ import type { Moment } from 'moment';
7
+ import { noop } from 'lodash';
8
+
9
+ // `react-dates` doesn't tree-shake correctly, so we import from the individual
10
+ // component here.
11
+ // @ts-expect-error TypeScript won't find any type declarations at
12
+ // `react-dates/lib/components/DayPickerSingleDateController` as they're located
13
+ // at `react-dates`.
14
+ import UntypedDayPickerSingleDateController from 'react-dates/lib/components/DayPickerSingleDateController';
15
+ import type { DayPickerSingleDateController } from 'react-dates';
16
+ const TypedDayPickerSingleDateController = UntypedDayPickerSingleDateController as DayPickerSingleDateController;
10
17
 
11
18
  /**
12
19
  * WordPress dependencies
@@ -18,15 +25,13 @@ import { isRTL, _n, sprintf } from '@wordpress/i18n';
18
25
  * Internal dependencies
19
26
  */
20
27
  import { getMomentDate } from './utils';
28
+ import type { DatePickerDayProps, DatePickerProps } from './types';
21
29
 
22
- /**
23
- * Module Constants
24
- */
25
30
  const TIMEZONELESS_FORMAT = 'YYYY-MM-DDTHH:mm:ss';
26
31
  const ARIAL_LABEL_TIME_FORMAT = 'dddd, LL';
27
32
 
28
- function DatePickerDay( { day, events = [] } ) {
29
- const ref = useRef();
33
+ function DatePickerDay( { day, events = [] }: DatePickerDayProps ) {
34
+ const ref = useRef< HTMLDivElement >( null );
30
35
 
31
36
  /*
32
37
  * a11y hack to make the `There is/are n events` string
@@ -36,7 +41,7 @@ function DatePickerDay( { day, events = [] } ) {
36
41
  */
37
42
  useEffect( () => {
38
43
  // Bail when no parent node.
39
- if ( ! ref?.current?.parentNode ) {
44
+ if ( ! ( ref?.current?.parentNode instanceof Element ) ) {
40
45
  return;
41
46
  }
42
47
 
@@ -75,15 +80,34 @@ function DatePickerDay( { day, events = [] } ) {
75
80
  );
76
81
  }
77
82
 
78
- function DatePicker( {
83
+ /**
84
+ * DatePicker is a React component that renders a calendar for date selection.
85
+ *
86
+ * ```jsx
87
+ * import { DatePicker } from '@wordpress/components';
88
+ * import { useState } from '@wordpress/element';
89
+ *
90
+ * const MyDatePicker = () => {
91
+ * const [ date, setDate ] = useState( new Date() );
92
+ *
93
+ * return (
94
+ * <DatePicker
95
+ * currentDate={ date }
96
+ * onChange={ ( newDate ) => setDate( newDate ) }
97
+ * />
98
+ * );
99
+ * };
100
+ * ```
101
+ */
102
+ export function DatePicker( {
79
103
  currentDate,
80
104
  onChange,
81
105
  events,
82
106
  isInvalidDate,
83
107
  onMonthPreviewed,
84
- } ) {
85
- const nodeRef = useRef();
86
- const onMonthPreviewedHandler = ( newMonthDate ) => {
108
+ }: DatePickerProps ) {
109
+ const nodeRef = useRef< HTMLDivElement >( null );
110
+ const onMonthPreviewedHandler = ( newMonthDate: Moment ) => {
87
111
  onMonthPreviewed?.( newMonthDate.toISOString() );
88
112
  keepFocusInside();
89
113
  };
@@ -111,7 +135,7 @@ function DatePicker( {
111
135
  const focusRegion = nodeRef.current.querySelector(
112
136
  '.DayPicker_focusRegion'
113
137
  );
114
- if ( ! focusRegion ) {
138
+ if ( ! ( focusRegion instanceof HTMLElement ) ) {
115
139
  return;
116
140
  }
117
141
  // Keep the focus on focus region.
@@ -119,7 +143,11 @@ function DatePicker( {
119
143
  }
120
144
  };
121
145
 
122
- const onChangeMoment = ( newDate ) => {
146
+ const onChangeMoment = ( newDate: Moment | null ) => {
147
+ if ( ! newDate ) {
148
+ return;
149
+ }
150
+
123
151
  // If currentDate is null, use now as momentTime to designate hours, minutes, seconds.
124
152
  const momentDate = currentDate ? moment( currentDate ) : moment();
125
153
  const momentTime = {
@@ -128,13 +156,13 @@ function DatePicker( {
128
156
  seconds: 0,
129
157
  };
130
158
 
131
- onChange( newDate.set( momentTime ).format( TIMEZONELESS_FORMAT ) );
159
+ onChange?.( newDate.set( momentTime ).format( TIMEZONELESS_FORMAT ) );
132
160
 
133
161
  // Keep focus on the date picker.
134
162
  keepFocusInside();
135
163
  };
136
164
 
137
- const getEventsPerDay = ( day ) => {
165
+ const getEventsPerDay = ( day: Moment ) => {
138
166
  if ( ! events?.length ) {
139
167
  return [];
140
168
  }
@@ -148,7 +176,7 @@ function DatePicker( {
148
176
 
149
177
  return (
150
178
  <div className="components-datetime__date" ref={ nodeRef }>
151
- <DayPickerSingleDateController
179
+ <TypedDayPickerSingleDateController
152
180
  date={ momentDate }
153
181
  daySize={ 30 }
154
182
  focused
@@ -166,7 +194,7 @@ function DatePicker( {
166
194
  dayAriaLabelFormat={ ARIAL_LABEL_TIME_FORMAT }
167
195
  isRTL={ isRTL() }
168
196
  isOutsideRange={ ( date ) => {
169
- return isInvalidDate && isInvalidDate( date.toDate() );
197
+ return !! isInvalidDate && isInvalidDate( date.toDate() );
170
198
  } }
171
199
  onPrevMonthClick={ onMonthPreviewedHandler }
172
200
  onNextMonthClick={ onMonthPreviewedHandler }
@@ -176,6 +204,7 @@ function DatePicker( {
176
204
  events={ getEventsPerDay( day ) }
177
205
  />
178
206
  ) }
207
+ onFocusChange={ noop }
179
208
  />
180
209
  </div>
181
210
  );
@@ -5,6 +5,7 @@
5
5
  // See: https://github.com/airbnb/react-dates#initialize
6
6
  import 'react-dates/initialize';
7
7
  import { noop } from 'lodash';
8
+ import type { ForwardedRef } from 'react';
8
9
 
9
10
  /**
10
11
  * WordPress dependencies
@@ -18,10 +19,11 @@ import { __, _x } from '@wordpress/i18n';
18
19
  import Button from '../button';
19
20
  import { default as DatePicker } from './date';
20
21
  import { default as TimePicker } from './time';
22
+ import type { DateTimePickerProps } from './types';
21
23
 
22
24
  export { DatePicker, TimePicker };
23
25
 
24
- function DateTimePicker(
26
+ function UnforwardedDateTimePicker(
25
27
  {
26
28
  currentDate,
27
29
  is12Hour,
@@ -29,8 +31,8 @@ function DateTimePicker(
29
31
  onMonthPreviewed = noop,
30
32
  onChange,
31
33
  events,
32
- },
33
- ref
34
+ }: DateTimePickerProps,
35
+ ref: ForwardedRef< any >
34
36
  ) {
35
37
  const [ calendarHelpIsVisible, setCalendarHelpIsVisible ] = useState(
36
38
  false
@@ -148,7 +150,7 @@ function DateTimePicker(
148
150
  <Button
149
151
  className="components-datetime__date-reset-button"
150
152
  variant="link"
151
- onClick={ () => onChange( null ) }
153
+ onClick={ () => onChange?.( null ) }
152
154
  >
153
155
  { __( 'Reset' ) }
154
156
  </Button>
@@ -167,4 +169,28 @@ function DateTimePicker(
167
169
  );
168
170
  }
169
171
 
170
- export default forwardRef( DateTimePicker );
172
+ /**
173
+ * DateTimePicker is a React component that renders a calendar and clock for
174
+ * date and time selection. The calendar and clock components can be accessed
175
+ * individually using the `DatePicker` and `TimePicker` components respectively.
176
+ *
177
+ * ```jsx
178
+ * import { DateTimePicker } from '@wordpress/components';
179
+ * import { useState } from '@wordpress/element';
180
+ *
181
+ * const MyDateTimePicker = () => {
182
+ * const [ date, setDate ] = useState( new Date() );
183
+ *
184
+ * return (
185
+ * <DateTimePicker
186
+ * currentDate={ date }
187
+ * onChange={ ( newDate ) => setDate( newDate ) }
188
+ * is12Hour
189
+ * />
190
+ * );
191
+ * };
192
+ * ```
193
+ */
194
+ export const DateTimePicker = forwardRef( UnforwardedDateTimePicker );
195
+
196
+ export default DateTimePicker;
@@ -0,0 +1,73 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ComponentMeta, ComponentStory } from '@storybook/react';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useState, useEffect } from '@wordpress/element';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import DatePicker from '../date';
15
+ import { daysFromNow, isWeekend } from './utils';
16
+
17
+ const meta: ComponentMeta< typeof DatePicker > = {
18
+ title: 'Components/DatePicker',
19
+ component: DatePicker,
20
+ argTypes: {
21
+ currentDate: { control: 'date' },
22
+ onChange: { action: 'onChange', control: { type: null } },
23
+ },
24
+ parameters: {
25
+ controls: { expanded: true },
26
+ docs: { source: { state: 'open' } },
27
+ },
28
+ };
29
+ export default meta;
30
+
31
+ const Template: ComponentStory< typeof DatePicker > = ( {
32
+ currentDate,
33
+ onChange,
34
+ ...args
35
+ } ) => {
36
+ const [ date, setDate ] = useState( currentDate );
37
+ useEffect( () => {
38
+ setDate( currentDate );
39
+ }, [ currentDate ] );
40
+ return (
41
+ <DatePicker
42
+ { ...args }
43
+ currentDate={ date }
44
+ onChange={ ( newDate ) => {
45
+ setDate( newDate );
46
+ onChange?.( newDate );
47
+ } }
48
+ />
49
+ );
50
+ };
51
+
52
+ export const Default: ComponentStory< typeof DatePicker > = Template.bind( {} );
53
+
54
+ export const WithEvents: ComponentStory< typeof DatePicker > = Template.bind(
55
+ {}
56
+ );
57
+ WithEvents.args = {
58
+ currentDate: new Date(),
59
+ events: [
60
+ { date: daysFromNow( 2 ) },
61
+ { date: daysFromNow( 4 ) },
62
+ { date: daysFromNow( 6 ) },
63
+ { date: daysFromNow( 8 ) },
64
+ ],
65
+ };
66
+
67
+ export const WithInvalidDates: ComponentStory<
68
+ typeof DatePicker
69
+ > = Template.bind( {} );
70
+ WithInvalidDates.args = {
71
+ currentDate: new Date(),
72
+ isInvalidDate: isWeekend,
73
+ };