@wordpress/components 19.11.0 → 19.12.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 (385) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +1 -1
  3. package/build/alignment-matrix-control/index.js +5 -2
  4. package/build/alignment-matrix-control/index.js.map +1 -1
  5. package/build/autocomplete/autocompleter-ui.js +1 -1
  6. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  7. package/build/autocomplete/autocompleter-ui.native.js +2 -2
  8. package/build/autocomplete/autocompleter-ui.native.js.map +1 -1
  9. package/build/autocomplete/index.js +12 -10
  10. package/build/autocomplete/index.js.map +1 -1
  11. package/build/border-box-control/border-box-control/hook.js +2 -2
  12. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  13. package/build/border-box-control/border-box-control-split-controls/component.js +2 -0
  14. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  15. package/build/border-box-control/border-box-control-split-controls/hook.js +13 -4
  16. package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  17. package/build/border-box-control/border-box-control-visualizer/hook.js +6 -2
  18. package/build/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  19. package/build/border-box-control/styles.js +21 -11
  20. package/build/border-box-control/styles.js.map +1 -1
  21. package/build/border-control/border-control/hook.js +2 -2
  22. package/build/border-control/border-control/hook.js.map +1 -1
  23. package/build/color-palette/index.js +9 -2
  24. package/build/color-palette/index.js.map +1 -1
  25. package/build/color-palette/index.native.js +4 -1
  26. package/build/color-palette/index.native.js.map +1 -1
  27. package/build/color-picker/color-copy-button.js +87 -0
  28. package/build/color-picker/color-copy-button.js.map +1 -0
  29. package/build/color-picker/component.js +5 -15
  30. package/build/color-picker/component.js.map +1 -1
  31. package/build/color-picker/hex-input.js +18 -1
  32. package/build/color-picker/hex-input.js.map +1 -1
  33. package/build/color-picker/styles.js +11 -11
  34. package/build/color-picker/styles.js.map +1 -1
  35. package/build/custom-gradient-picker/utils.js +1 -1
  36. package/build/custom-gradient-picker/utils.js.map +1 -1
  37. package/build/date-time/{date.js → date/index.js} +51 -12
  38. package/build/date-time/date/index.js.map +1 -0
  39. package/build/date-time/date/styles.js +70 -0
  40. package/build/date-time/date/styles.js.map +1 -0
  41. package/build/date-time/{utils.js → date/utils.js} +0 -0
  42. package/build/date-time/date/utils.js.map +1 -0
  43. package/build/date-time/date-time/index.js +175 -0
  44. package/build/date-time/date-time/index.js.map +1 -0
  45. package/build/date-time/date-time/styles.js +32 -0
  46. package/build/date-time/date-time/styles.js.map +1 -0
  47. package/build/date-time/index.js +2 -109
  48. package/build/date-time/index.js.map +1 -1
  49. package/build/date-time/time/index.js +322 -0
  50. package/build/date-time/time/index.js.map +1 -0
  51. package/build/date-time/time/styles.js +139 -0
  52. package/build/date-time/time/styles.js.map +1 -0
  53. package/build/date-time/{timezone.js → time/timezone.js} +4 -2
  54. package/build/date-time/time/timezone.js.map +1 -0
  55. package/build/draggable/index.native.js +10 -5
  56. package/build/draggable/index.native.js.map +1 -1
  57. package/build/dropdown/index.js +4 -1
  58. package/build/dropdown/index.js.map +1 -1
  59. package/build/input-control/index.js +9 -4
  60. package/build/input-control/index.js.map +1 -1
  61. package/build/input-control/input-field.js +1 -26
  62. package/build/input-control/input-field.js.map +1 -1
  63. package/build/input-control/reducer/reducer.js +36 -24
  64. package/build/input-control/reducer/reducer.js.map +1 -1
  65. package/build/input-control/reducer/state.js +0 -1
  66. package/build/input-control/reducer/state.js.map +1 -1
  67. package/build/input-control/utils.js +45 -0
  68. package/build/input-control/utils.js.map +1 -1
  69. package/build/popover/index.js +40 -33
  70. package/build/popover/index.js.map +1 -1
  71. package/build/search-control/index.js +4 -6
  72. package/build/search-control/index.js.map +1 -1
  73. package/build/select-control/index.js +3 -1
  74. package/build/select-control/index.js.map +1 -1
  75. package/build/spacer/hook.js +11 -3
  76. package/build/spacer/hook.js.map +1 -1
  77. package/build/surface/component.js +7 -7
  78. package/build/surface/component.js.map +1 -1
  79. package/build/surface/hook.js +8 -11
  80. package/build/surface/hook.js.map +1 -1
  81. package/build/surface/index.js.map +1 -1
  82. package/build/surface/styles.js +8 -48
  83. package/build/surface/styles.js.map +1 -1
  84. package/build/textarea-control/index.js +40 -6
  85. package/build/textarea-control/index.js.map +1 -1
  86. package/build/textarea-control/styles/textarea-control-styles.js +3 -3
  87. package/build/textarea-control/styles/textarea-control-styles.js.map +1 -1
  88. package/build/textarea-control/types.js +6 -0
  89. package/build/textarea-control/types.js.map +1 -0
  90. package/build/utils/hooks/index.js +0 -8
  91. package/build/utils/hooks/index.js.map +1 -1
  92. package/build-module/alignment-matrix-control/index.js +5 -2
  93. package/build-module/alignment-matrix-control/index.js.map +1 -1
  94. package/build-module/autocomplete/autocompleter-ui.js +1 -1
  95. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  96. package/build-module/autocomplete/autocompleter-ui.native.js +2 -2
  97. package/build-module/autocomplete/autocompleter-ui.native.js.map +1 -1
  98. package/build-module/autocomplete/index.js +13 -11
  99. package/build-module/autocomplete/index.js.map +1 -1
  100. package/build-module/border-box-control/border-box-control/hook.js +2 -2
  101. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  102. package/build-module/border-box-control/border-box-control-split-controls/component.js +2 -0
  103. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  104. package/build-module/border-box-control/border-box-control-split-controls/hook.js +11 -4
  105. package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  106. package/build-module/border-box-control/border-box-control-visualizer/hook.js +4 -2
  107. package/build-module/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  108. package/build-module/border-box-control/styles.js +13 -8
  109. package/build-module/border-box-control/styles.js.map +1 -1
  110. package/build-module/border-control/border-control/hook.js +2 -2
  111. package/build-module/border-control/border-control/hook.js.map +1 -1
  112. package/build-module/color-palette/index.js +7 -5
  113. package/build-module/color-palette/index.js.map +1 -1
  114. package/build-module/color-palette/index.native.js +4 -1
  115. package/build-module/color-palette/index.native.js.map +1 -1
  116. package/build-module/color-picker/color-copy-button.js +73 -0
  117. package/build-module/color-picker/color-copy-button.js.map +1 -0
  118. package/build-module/color-picker/component.js +6 -15
  119. package/build-module/color-picker/component.js.map +1 -1
  120. package/build-module/color-picker/hex-input.js +18 -1
  121. package/build-module/color-picker/hex-input.js.map +1 -1
  122. package/build-module/color-picker/styles.js +9 -9
  123. package/build-module/color-picker/styles.js.map +1 -1
  124. package/build-module/custom-gradient-picker/utils.js +1 -1
  125. package/build-module/custom-gradient-picker/utils.js.map +1 -1
  126. package/build-module/date-time/{date.js → date/index.js} +46 -14
  127. package/build-module/date-time/date/index.js.map +1 -0
  128. package/build-module/date-time/date/styles.js +61 -0
  129. package/build-module/date-time/date/styles.js.map +1 -0
  130. package/build-module/date-time/{utils.js → date/utils.js} +0 -0
  131. package/build-module/date-time/date/utils.js.map +1 -0
  132. package/build-module/date-time/date-time/index.js +144 -0
  133. package/build-module/date-time/date-time/index.js.map +1 -0
  134. package/build-module/date-time/date-time/styles.js +22 -0
  135. package/build-module/date-time/date-time/styles.js.map +1 -0
  136. package/build-module/date-time/index.js +1 -105
  137. package/build-module/date-time/index.js.map +1 -1
  138. package/build-module/date-time/time/index.js +302 -0
  139. package/build-module/date-time/time/index.js.map +1 -0
  140. package/build-module/date-time/time/styles.js +118 -0
  141. package/build-module/date-time/time/styles.js.map +1 -0
  142. package/build-module/date-time/{timezone.js → time/timezone.js} +3 -2
  143. package/build-module/date-time/time/timezone.js.map +1 -0
  144. package/build-module/draggable/index.native.js +10 -5
  145. package/build-module/draggable/index.native.js.map +1 -1
  146. package/build-module/dropdown/index.js +4 -1
  147. package/build-module/dropdown/index.js.map +1 -1
  148. package/build-module/input-control/index.js +8 -4
  149. package/build-module/input-control/index.js.map +1 -1
  150. package/build-module/input-control/input-field.js +1 -25
  151. package/build-module/input-control/input-field.js.map +1 -1
  152. package/build-module/input-control/reducer/reducer.js +38 -26
  153. package/build-module/input-control/reducer/reducer.js.map +1 -1
  154. package/build-module/input-control/reducer/state.js +0 -1
  155. package/build-module/input-control/reducer/state.js.map +1 -1
  156. package/build-module/input-control/utils.js +48 -2
  157. package/build-module/input-control/utils.js.map +1 -1
  158. package/build-module/popover/index.js +40 -33
  159. package/build-module/popover/index.js.map +1 -1
  160. package/build-module/search-control/index.js +6 -7
  161. package/build-module/search-control/index.js.map +1 -1
  162. package/build-module/select-control/index.js +3 -1
  163. package/build-module/select-control/index.js.map +1 -1
  164. package/build-module/spacer/hook.js +10 -2
  165. package/build-module/spacer/hook.js.map +1 -1
  166. package/build-module/surface/component.js +7 -7
  167. package/build-module/surface/component.js.map +1 -1
  168. package/build-module/surface/hook.js +8 -11
  169. package/build-module/surface/hook.js.map +1 -1
  170. package/build-module/surface/index.js.map +1 -1
  171. package/build-module/surface/styles.js +8 -48
  172. package/build-module/surface/styles.js.map +1 -1
  173. package/build-module/textarea-control/index.js +36 -5
  174. package/build-module/textarea-control/index.js.map +1 -1
  175. package/build-module/textarea-control/styles/textarea-control-styles.js +3 -3
  176. package/build-module/textarea-control/styles/textarea-control-styles.js.map +1 -1
  177. package/build-module/textarea-control/types.js +2 -0
  178. package/build-module/textarea-control/types.js.map +1 -0
  179. package/build-module/utils/hooks/index.js +0 -1
  180. package/build-module/utils/hooks/index.js.map +1 -1
  181. package/build-style/style-rtl.css +13 -188
  182. package/build-style/style.css +13 -191
  183. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  184. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +1 -0
  185. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  186. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
  187. package/build-types/border-box-control/styles.d.ts +3 -2
  188. package/build-types/border-box-control/styles.d.ts.map +1 -1
  189. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  190. package/build-types/card/types.d.ts +1 -1
  191. package/build-types/card/types.d.ts.map +1 -1
  192. package/build-types/checkbox-control/test/index.d.ts +2 -0
  193. package/build-types/checkbox-control/test/index.d.ts.map +1 -0
  194. package/build-types/color-palette/index.d.ts +1 -0
  195. package/build-types/color-palette/index.d.ts.map +1 -1
  196. package/build-types/{date-time → color-palette}/test/utils.d.ts +0 -0
  197. package/build-types/color-palette/test/utils.d.ts.map +1 -0
  198. package/build-types/color-picker/color-copy-button.d.ts +4 -0
  199. package/build-types/color-picker/color-copy-button.d.ts.map +1 -0
  200. package/build-types/color-picker/component.d.ts.map +1 -1
  201. package/build-types/color-picker/hex-input.d.ts.map +1 -1
  202. package/build-types/color-picker/styles.d.ts +1 -1
  203. package/build-types/color-picker/styles.d.ts.map +1 -1
  204. package/build-types/color-picker/types.d.ts +8 -0
  205. package/build-types/color-picker/types.d.ts.map +1 -1
  206. package/build-types/date-time/{date.d.ts → date/index.d.ts} +3 -2
  207. package/build-types/date-time/date/index.d.ts.map +1 -0
  208. package/build-types/date-time/date/styles.d.ts +23 -0
  209. package/build-types/date-time/date/styles.d.ts.map +1 -0
  210. package/build-types/date-time/date/test/index.d.ts +2 -0
  211. package/build-types/date-time/date/test/index.d.ts.map +1 -0
  212. package/build-types/date-time/date/test/utils.d.ts +2 -0
  213. package/build-types/date-time/date/test/utils.d.ts.map +1 -0
  214. package/build-types/date-time/{utils.d.ts → date/utils.d.ts} +0 -0
  215. package/build-types/date-time/date/utils.d.ts.map +1 -0
  216. package/build-types/date-time/date-time/index.d.ts +33 -0
  217. package/build-types/date-time/date-time/index.d.ts.map +1 -0
  218. package/build-types/date-time/date-time/styles.d.ts +6 -0
  219. package/build-types/date-time/date-time/styles.d.ts.map +1 -0
  220. package/build-types/date-time/index.d.ts +2 -28
  221. package/build-types/date-time/index.d.ts.map +1 -1
  222. package/build-types/date-time/stories/{index.d.ts → date-time.d.ts} +2 -2
  223. package/build-types/date-time/stories/date-time.d.ts.map +1 -0
  224. package/build-types/date-time/{time.d.ts → time/index.d.ts} +2 -2
  225. package/build-types/date-time/time/index.d.ts.map +1 -0
  226. package/build-types/date-time/time/styles.d.ts +111 -0
  227. package/build-types/date-time/time/styles.d.ts.map +1 -0
  228. package/build-types/date-time/time/test/index.d.ts +2 -0
  229. package/build-types/date-time/time/test/index.d.ts.map +1 -0
  230. package/build-types/date-time/{timezone.d.ts → time/timezone.d.ts} +0 -0
  231. package/build-types/date-time/time/timezone.d.ts.map +1 -0
  232. package/build-types/date-time/types.d.ts +14 -15
  233. package/build-types/date-time/types.d.ts.map +1 -1
  234. package/build-types/dropdown/index.d.ts.map +1 -1
  235. package/build-types/input-control/index.d.ts.map +1 -1
  236. package/build-types/input-control/input-field.d.ts.map +1 -1
  237. package/build-types/input-control/reducer/reducer.d.ts +5 -3
  238. package/build-types/input-control/reducer/reducer.d.ts.map +1 -1
  239. package/build-types/input-control/reducer/state.d.ts +2 -2
  240. package/build-types/input-control/reducer/state.d.ts.map +1 -1
  241. package/build-types/input-control/utils.d.ts +17 -0
  242. package/build-types/input-control/utils.d.ts.map +1 -1
  243. package/build-types/popover/index.d.ts +1 -0
  244. package/build-types/popover/index.d.ts.map +1 -1
  245. package/build-types/select-control/index.d.ts.map +1 -1
  246. package/build-types/select-control/types.d.ts +1 -1
  247. package/build-types/select-control/types.d.ts.map +1 -1
  248. package/build-types/surface/component.d.ts +3 -2
  249. package/build-types/surface/component.d.ts.map +1 -1
  250. package/build-types/surface/hook.d.ts +4 -4
  251. package/build-types/surface/hook.d.ts.map +1 -1
  252. package/build-types/surface/index.d.ts +2 -2
  253. package/build-types/surface/index.d.ts.map +1 -1
  254. package/build-types/surface/stories/index.d.ts +12 -0
  255. package/build-types/surface/stories/index.d.ts.map +1 -0
  256. package/build-types/surface/styles.d.ts +10 -21
  257. package/build-types/surface/styles.d.ts.map +1 -1
  258. package/build-types/surface/test/index.d.ts +2 -0
  259. package/build-types/surface/test/index.d.ts.map +1 -0
  260. package/build-types/surface/types.d.ts +1 -1
  261. package/build-types/surface/types.d.ts.map +1 -1
  262. package/build-types/textarea-control/index.d.ts +29 -0
  263. package/build-types/textarea-control/index.d.ts.map +1 -0
  264. package/build-types/textarea-control/stories/index.d.ts +12 -0
  265. package/build-types/textarea-control/stories/index.d.ts.map +1 -0
  266. package/build-types/textarea-control/styles/textarea-control-styles.d.ts +6 -0
  267. package/build-types/textarea-control/styles/textarea-control-styles.d.ts.map +1 -0
  268. package/build-types/textarea-control/types.d.ts +26 -0
  269. package/build-types/textarea-control/types.d.ts.map +1 -0
  270. package/build-types/utils/hooks/index.d.ts +0 -1
  271. package/package.json +18 -18
  272. package/src/alignment-matrix-control/index.js +4 -2
  273. package/src/autocomplete/autocompleter-ui.js +1 -1
  274. package/src/autocomplete/autocompleter-ui.native.js +2 -2
  275. package/src/autocomplete/index.js +21 -9
  276. package/src/border-box-control/border-box-control/hook.ts +2 -2
  277. package/src/border-box-control/border-box-control-split-controls/component.tsx +2 -0
  278. package/src/border-box-control/border-box-control-split-controls/hook.ts +18 -4
  279. package/src/border-box-control/border-box-control-visualizer/hook.ts +5 -2
  280. package/src/border-box-control/styles.ts +6 -2
  281. package/src/border-control/border-control/hook.ts +8 -2
  282. package/src/box-control/test/index.js +120 -109
  283. package/src/card/types.ts +1 -1
  284. package/src/checkbox-control/test/__snapshots__/index.tsx.snap +42 -0
  285. package/src/checkbox-control/test/index.tsx +109 -0
  286. package/src/color-palette/index.js +11 -4
  287. package/src/color-palette/index.native.js +3 -0
  288. package/src/color-palette/stories/index.js +25 -1
  289. package/src/color-palette/test/utils.ts +24 -0
  290. package/src/color-picker/color-copy-button.tsx +76 -0
  291. package/src/color-picker/component.tsx +18 -38
  292. package/src/color-picker/hex-input.tsx +16 -0
  293. package/src/color-picker/styles.ts +5 -1
  294. package/src/color-picker/types.ts +9 -0
  295. package/src/custom-gradient-picker/utils.js +1 -1
  296. package/src/date-time/README.md +16 -0
  297. package/src/date-time/{datepicker.scss → date/datepicker.scss} +0 -0
  298. package/src/date-time/{date.tsx → date/index.tsx} +38 -15
  299. package/src/date-time/date/style.scss +75 -0
  300. package/src/date-time/date/styles.ts +55 -0
  301. package/src/date-time/{test/date.tsx → date/test/index.tsx} +1 -1
  302. package/src/date-time/{test → date/test}/utils.ts +0 -0
  303. package/src/date-time/{utils.ts → date/utils.ts} +0 -0
  304. package/src/date-time/date-time/index.tsx +217 -0
  305. package/src/date-time/date-time/styles.ts +8 -0
  306. package/src/date-time/index.ts +9 -0
  307. package/src/date-time/stories/{index.tsx → date-time.tsx} +1 -1
  308. package/src/date-time/style.scss +1 -262
  309. package/src/date-time/time/index.tsx +356 -0
  310. package/src/date-time/time/styles.ts +119 -0
  311. package/src/date-time/{test/time.tsx → time/test/index.tsx} +85 -38
  312. package/src/date-time/{timezone.tsx → time/timezone.tsx} +5 -2
  313. package/src/date-time/types.ts +16 -18
  314. package/src/draggable/index.native.js +14 -3
  315. package/src/draggable/test/index.native.js +130 -0
  316. package/src/dropdown/index.js +5 -1
  317. package/src/input-control/index.tsx +8 -2
  318. package/src/input-control/input-field.tsx +10 -30
  319. package/src/input-control/reducer/reducer.ts +40 -26
  320. package/src/input-control/reducer/state.ts +2 -3
  321. package/src/input-control/utils.ts +55 -1
  322. package/src/popover/index.js +42 -27
  323. package/src/query-controls/README.md +1 -1
  324. package/src/search-control/index.js +6 -7
  325. package/src/select-control/README.md +11 -0
  326. package/src/select-control/index.tsx +6 -1
  327. package/src/select-control/types.ts +1 -1
  328. package/src/slot-fill/README.md +1 -1
  329. package/src/spacer/hook.ts +13 -13
  330. package/src/surface/README.md +15 -15
  331. package/src/surface/{component.js → component.tsx} +13 -7
  332. package/src/surface/{hook.js → hook.ts} +13 -12
  333. package/src/surface/{index.js → index.ts} +0 -0
  334. package/src/surface/stories/index.tsx +40 -0
  335. package/src/surface/{styles.js → styles.ts} +15 -44
  336. package/src/surface/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  337. package/src/surface/test/{index.js → index.tsx} +2 -1
  338. package/src/surface/types.ts +1 -1
  339. package/src/textarea-control/README.md +14 -20
  340. package/src/textarea-control/index.tsx +86 -0
  341. package/src/textarea-control/stories/index.tsx +58 -0
  342. package/src/textarea-control/styles/{textarea-control-styles.js → textarea-control-styles.ts} +0 -0
  343. package/src/textarea-control/types.ts +30 -0
  344. package/src/utils/hooks/index.js +0 -1
  345. package/tsconfig.json +1 -0
  346. package/tsconfig.tsbuildinfo +1 -1
  347. package/build/color-picker/color-display.js +0 -184
  348. package/build/color-picker/color-display.js.map +0 -1
  349. package/build/date-time/date.js.map +0 -1
  350. package/build/date-time/time.js +0 -289
  351. package/build/date-time/time.js.map +0 -1
  352. package/build/date-time/timezone.js.map +0 -1
  353. package/build/date-time/utils.js.map +0 -1
  354. package/build/utils/hooks/use-combined-ref.js +0 -32
  355. package/build/utils/hooks/use-combined-ref.js.map +0 -1
  356. package/build-module/color-picker/color-display.js +0 -170
  357. package/build-module/color-picker/color-display.js.map +0 -1
  358. package/build-module/date-time/date.js.map +0 -1
  359. package/build-module/date-time/time.js +0 -271
  360. package/build-module/date-time/time.js.map +0 -1
  361. package/build-module/date-time/timezone.js.map +0 -1
  362. package/build-module/date-time/utils.js.map +0 -1
  363. package/build-module/utils/hooks/use-combined-ref.js +0 -28
  364. package/build-module/utils/hooks/use-combined-ref.js.map +0 -1
  365. package/build-types/color-picker/color-display.d.ts +0 -14
  366. package/build-types/color-picker/color-display.d.ts.map +0 -1
  367. package/build-types/date-time/date.d.ts.map +0 -1
  368. package/build-types/date-time/stories/index.d.ts.map +0 -1
  369. package/build-types/date-time/test/date.d.ts +0 -2
  370. package/build-types/date-time/test/date.d.ts.map +0 -1
  371. package/build-types/date-time/test/time.d.ts +0 -2
  372. package/build-types/date-time/test/time.d.ts.map +0 -1
  373. package/build-types/date-time/test/utils.d.ts.map +0 -1
  374. package/build-types/date-time/time.d.ts.map +0 -1
  375. package/build-types/date-time/timezone.d.ts.map +0 -1
  376. package/build-types/date-time/utils.d.ts.map +0 -1
  377. package/build-types/utils/hooks/use-combined-ref.d.ts +0 -8
  378. package/build-types/utils/hooks/use-combined-ref.d.ts.map +0 -1
  379. package/src/color-picker/color-display.tsx +0 -169
  380. package/src/date-time/index.tsx +0 -196
  381. package/src/date-time/time.tsx +0 -321
  382. package/src/surface/stories/index.js +0 -46
  383. package/src/textarea-control/index.js +0 -45
  384. package/src/textarea-control/stories/index.js +0 -48
  385. package/src/utils/hooks/use-combined-ref.ts +0 -28
@@ -0,0 +1,356 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import moment from 'moment';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useState, useMemo, useEffect } from '@wordpress/element';
10
+ import { __ } from '@wordpress/i18n';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import Button from '../../button';
16
+ import ButtonGroup from '../../button-group';
17
+ import TimeZone from './timezone';
18
+ import type { TimePickerProps } from '../types';
19
+ import {
20
+ Wrapper,
21
+ Fieldset,
22
+ Legend,
23
+ HoursInput,
24
+ TimeSeparator,
25
+ MinutesInput,
26
+ MonthSelectWrapper,
27
+ MonthSelect,
28
+ DayInput,
29
+ YearInput,
30
+ TimeWrapper,
31
+ } from './styles';
32
+ import { HStack } from '../../h-stack';
33
+ import { Spacer } from '../../spacer';
34
+ import type { InputChangeCallback } from '../../input-control/types';
35
+ import type { InputState } from '../../input-control/reducer/state';
36
+ import {
37
+ COMMIT,
38
+ InputAction,
39
+ PRESS_DOWN,
40
+ PRESS_UP,
41
+ } from '../../input-control/reducer/actions';
42
+
43
+ const TIMEZONELESS_FORMAT = 'YYYY-MM-DDTHH:mm:ss';
44
+
45
+ function from12hTo24h( hours: number, isPm: boolean ) {
46
+ return isPm ? ( ( hours % 12 ) + 12 ) % 24 : hours % 12;
47
+ }
48
+
49
+ /**
50
+ * Creates an InputControl reducer used to pad an input so that it is always a
51
+ * given width. For example, the hours and minutes inputs are padded to 2 so
52
+ * that '4' appears as '04'.
53
+ *
54
+ * @param pad How many digits the value should be.
55
+ */
56
+ function buildPadInputStateReducer( pad: number ) {
57
+ return ( state: InputState, action: InputAction ) => {
58
+ const nextState = { ...state };
59
+ if (
60
+ action.type === COMMIT ||
61
+ action.type === PRESS_UP ||
62
+ action.type === PRESS_DOWN
63
+ ) {
64
+ if ( nextState.value !== undefined ) {
65
+ nextState.value = nextState.value
66
+ .toString()
67
+ .padStart( pad, '0' );
68
+ }
69
+ }
70
+ return nextState;
71
+ };
72
+ }
73
+
74
+ /**
75
+ * TimePicker is a React component that renders a clock for time selection.
76
+ *
77
+ * ```jsx
78
+ * import { TimePicker } from '@wordpress/components';
79
+ * import { useState } from '@wordpress/element';
80
+ *
81
+ * const MyTimePicker = () => {
82
+ * const [ time, setTime ] = useState( new Date() );
83
+ *
84
+ * return (
85
+ * <TimePicker
86
+ * currentTime={ date }
87
+ * onChange={ ( newTime ) => setTime( newTime ) }
88
+ * is12Hour
89
+ * />
90
+ * );
91
+ * };
92
+ * ```
93
+ */
94
+ export function TimePicker( {
95
+ is12Hour,
96
+ currentTime,
97
+ onChange,
98
+ }: TimePickerProps ) {
99
+ const [ date, setDate ] = useState( () =>
100
+ // Truncate the date at the minutes, see: #15495.
101
+ currentTime ? moment( currentTime ).startOf( 'minutes' ) : moment()
102
+ );
103
+
104
+ // Reset the state when currentTime changed.
105
+ useEffect( () => {
106
+ setDate(
107
+ currentTime ? moment( currentTime ).startOf( 'minutes' ) : moment()
108
+ );
109
+ }, [ currentTime ] );
110
+
111
+ const { day, month, year, minutes, hours, am } = useMemo(
112
+ () => ( {
113
+ day: date.format( 'DD' ),
114
+ month: date.format( 'MM' ),
115
+ year: date.format( 'YYYY' ),
116
+ minutes: date.format( 'mm' ),
117
+ hours: date.format( is12Hour ? 'hh' : 'HH' ),
118
+ am: Number( date.format( 'H' ) ) <= 11 ? 'AM' : 'PM',
119
+ } ),
120
+ [ date, is12Hour ]
121
+ );
122
+
123
+ const buildNumberControlChangeCallback = (
124
+ method: 'hours' | 'minutes' | 'date' | 'year'
125
+ ) => {
126
+ const callback: InputChangeCallback = ( value, { event } ) => {
127
+ if ( ! ( event.target instanceof HTMLInputElement ) ) {
128
+ return;
129
+ }
130
+
131
+ if ( ! event.target.validity.valid ) {
132
+ return;
133
+ }
134
+
135
+ // We can safely assume value is a number if target is valid.
136
+ let numberValue = Number( value );
137
+
138
+ // If the 12-hour format is being used and the 'PM' period is
139
+ // selected, then the incoming value (which ranges 1-12) should be
140
+ // increased by 12 to match the expected 24-hour format.
141
+ if ( method === 'hours' && is12Hour ) {
142
+ numberValue = from12hTo24h( numberValue, am === 'PM' );
143
+ }
144
+
145
+ const newDate = date.clone()[ method ]( numberValue );
146
+ setDate( newDate );
147
+ onChange?.( newDate.format( TIMEZONELESS_FORMAT ) );
148
+ };
149
+ return callback;
150
+ };
151
+
152
+ function buildAmPmChangeCallback( value: 'AM' | 'PM' ) {
153
+ return () => {
154
+ if ( am === value ) {
155
+ return;
156
+ }
157
+
158
+ const parsedHours = parseInt( hours, 10 );
159
+
160
+ const newDate = date
161
+ .clone()
162
+ .hours( from12hTo24h( parsedHours, value === 'PM' ) );
163
+ setDate( newDate );
164
+ onChange?.( newDate.format( TIMEZONELESS_FORMAT ) );
165
+ };
166
+ }
167
+
168
+ const dayField = (
169
+ <DayInput
170
+ className="components-datetime__time-field components-datetime__time-field-day" // Unused, for backwards compatibility.
171
+ label={ __( 'Day' ) }
172
+ hideLabelFromVision
173
+ __next36pxDefaultSize
174
+ value={ day }
175
+ step={ 1 }
176
+ min={ 1 }
177
+ max={ 31 }
178
+ required
179
+ hideHTMLArrows
180
+ isPressEnterToChange
181
+ isDragEnabled={ false }
182
+ isShiftStepEnabled={ false }
183
+ onChange={ buildNumberControlChangeCallback( 'date' ) }
184
+ />
185
+ );
186
+
187
+ const monthField = (
188
+ <MonthSelectWrapper>
189
+ <MonthSelect
190
+ className="components-datetime__time-field components-datetime__time-field-month" // Unused, for backwards compatibility.
191
+ label={ __( 'Month' ) }
192
+ hideLabelFromVision
193
+ __nextHasNoMarginBottom
194
+ value={ month }
195
+ options={ [
196
+ { value: '01', label: __( 'January' ) },
197
+ { value: '02', label: __( 'February' ) },
198
+ { value: '03', label: __( 'March' ) },
199
+ { value: '04', label: __( 'April' ) },
200
+ { value: '05', label: __( 'May' ) },
201
+ { value: '06', label: __( 'June' ) },
202
+ { value: '07', label: __( 'July' ) },
203
+ { value: '08', label: __( 'August' ) },
204
+ { value: '09', label: __( 'September' ) },
205
+ { value: '10', label: __( 'October' ) },
206
+ { value: '11', label: __( 'November' ) },
207
+ { value: '12', label: __( 'December' ) },
208
+ ] }
209
+ onChange={ ( value ) => {
210
+ const newDate = date.clone().month( Number( value ) - 1 );
211
+ setDate( newDate );
212
+ onChange?.( newDate.format( TIMEZONELESS_FORMAT ) );
213
+ } }
214
+ />
215
+ </MonthSelectWrapper>
216
+ );
217
+
218
+ return (
219
+ <Wrapper
220
+ className="components-datetime__time" // Unused, for backwards compatibility.
221
+ >
222
+ <Fieldset>
223
+ <Legend
224
+ className="components-datetime__time-legend" // Unused, for backwards compatibility.
225
+ >
226
+ { __( 'Time' ) }
227
+ </Legend>
228
+ <HStack
229
+ className="components-datetime__time-wrapper" // Unused, for backwards compatibility.
230
+ >
231
+ <TimeWrapper
232
+ className="components-datetime__time-field components-datetime__time-field-time" // Unused, for backwards compatibility.
233
+ >
234
+ <HoursInput
235
+ className="components-datetime__time-field-hours-input" // Unused, for backwards compatibility.
236
+ label={ __( 'Hours' ) }
237
+ hideLabelFromVision
238
+ __next36pxDefaultSize
239
+ value={ hours }
240
+ step={ 1 }
241
+ min={ is12Hour ? 1 : 0 }
242
+ max={ is12Hour ? 12 : 23 }
243
+ required
244
+ hideHTMLArrows
245
+ isPressEnterToChange
246
+ isDragEnabled={ false }
247
+ isShiftStepEnabled={ false }
248
+ onChange={ buildNumberControlChangeCallback(
249
+ 'hours'
250
+ ) }
251
+ __unstableStateReducer={ buildPadInputStateReducer(
252
+ 2
253
+ ) }
254
+ />
255
+ <TimeSeparator
256
+ className="components-datetime__time-separator" // Unused, for backwards compatibility.
257
+ aria-hidden="true"
258
+ >
259
+ :
260
+ </TimeSeparator>
261
+ <MinutesInput
262
+ className="components-datetime__time-field-minutes-input" // Unused, for backwards compatibility.
263
+ label={ __( 'Minutes' ) }
264
+ hideLabelFromVision
265
+ __next36pxDefaultSize
266
+ value={ minutes }
267
+ step={ 1 }
268
+ min={ 0 }
269
+ max={ 59 }
270
+ required
271
+ hideHTMLArrows
272
+ isPressEnterToChange
273
+ isDragEnabled={ false }
274
+ isShiftStepEnabled={ false }
275
+ onChange={ buildNumberControlChangeCallback(
276
+ 'minutes'
277
+ ) }
278
+ __unstableStateReducer={ buildPadInputStateReducer(
279
+ 2
280
+ ) }
281
+ />
282
+ </TimeWrapper>
283
+ { is12Hour && (
284
+ <ButtonGroup
285
+ className="components-datetime__time-field components-datetime__time-field-am-pm" // Unused, for backwards compatibility.
286
+ >
287
+ <Button
288
+ className="components-datetime__time-am-button" // Unused, for backwards compatibility.
289
+ variant={
290
+ am === 'AM' ? 'primary' : 'secondary'
291
+ }
292
+ onClick={ buildAmPmChangeCallback( 'AM' ) }
293
+ >
294
+ { __( 'AM' ) }
295
+ </Button>
296
+ <Button
297
+ className="components-datetime__time-pm-button" // Unused, for backwards compatibility.
298
+ variant={
299
+ am === 'PM' ? 'primary' : 'secondary'
300
+ }
301
+ onClick={ buildAmPmChangeCallback( 'PM' ) }
302
+ >
303
+ { __( 'PM' ) }
304
+ </Button>
305
+ </ButtonGroup>
306
+ ) }
307
+ <Spacer />
308
+ <TimeZone />
309
+ </HStack>
310
+ </Fieldset>
311
+ <Fieldset>
312
+ <Legend
313
+ className="components-datetime__time-legend" // Unused, for backwards compatibility.
314
+ >
315
+ { __( 'Date' ) }
316
+ </Legend>
317
+ <HStack
318
+ className="components-datetime__time-wrapper" // Unused, for backwards compatibility.
319
+ >
320
+ { is12Hour ? (
321
+ <>
322
+ { monthField }
323
+ { dayField }
324
+ </>
325
+ ) : (
326
+ <>
327
+ { dayField }
328
+ { monthField }
329
+ </>
330
+ ) }
331
+ <YearInput
332
+ className="components-datetime__time-field components-datetime__time-field-year" // Unused, for backwards compatibility.
333
+ label={ __( 'Year' ) }
334
+ hideLabelFromVision
335
+ __next36pxDefaultSize
336
+ value={ year }
337
+ step={ 1 }
338
+ min={ 1 }
339
+ max={ 9999 }
340
+ required
341
+ hideHTMLArrows
342
+ isPressEnterToChange
343
+ isDragEnabled={ false }
344
+ isShiftStepEnabled={ false }
345
+ onChange={ buildNumberControlChangeCallback( 'year' ) }
346
+ __unstableStateReducer={ buildPadInputStateReducer(
347
+ 4
348
+ ) }
349
+ />
350
+ </HStack>
351
+ </Fieldset>
352
+ </Wrapper>
353
+ );
354
+ }
355
+
356
+ export default TimePicker;
@@ -0,0 +1,119 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import styled from '@emotion/styled';
5
+ import { css } from '@emotion/react';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { COLORS, CONFIG } from '../../utils';
11
+ import { space } from '../../ui/utils/space';
12
+ import {
13
+ Input,
14
+ BackdropUI,
15
+ } from '../../input-control/styles/input-control-styles';
16
+ import NumberControl from '../../number-control';
17
+ import SelectControl from '../../select-control';
18
+ import { Select } from '../../select-control/styles/select-control-styles';
19
+
20
+ export const Wrapper = styled.div``;
21
+
22
+ export const Fieldset = styled.fieldset`
23
+ border: 0;
24
+ margin: 0 0 ${ space( 2 * 2 ) } 0;
25
+ padding: 0;
26
+
27
+ &:last-child {
28
+ margin-bottom: 0;
29
+ }
30
+ `;
31
+
32
+ export const Legend = styled.legend`
33
+ margin-bottom: ${ space( 2 ) };
34
+ padding: 0;
35
+ `;
36
+
37
+ export const TimeWrapper = styled.div`
38
+ direction: ltr;
39
+ display: flex;
40
+ `;
41
+
42
+ const baseInput = css`
43
+ &&& ${ Input } {
44
+ padding-left: ${ space( 2 ) };
45
+ padding-right: ${ space( 2 ) };
46
+ text-align: center;
47
+ }
48
+ `;
49
+
50
+ export const HoursInput = styled( NumberControl )`
51
+ ${ baseInput }
52
+
53
+ width: ${ space( 9 ) };
54
+
55
+ &&& ${ Input } {
56
+ padding-right: 0;
57
+ }
58
+
59
+ &&& ${ BackdropUI } {
60
+ border-right: 0;
61
+ border-top-right-radius: 0;
62
+ border-bottom-right-radius: 0;
63
+ }
64
+ `;
65
+
66
+ export const TimeSeparator = styled.span`
67
+ border-top: ${ CONFIG.borderWidth } solid ${ COLORS.gray[ 700 ] };
68
+ border-bottom: ${ CONFIG.borderWidth } solid ${ COLORS.gray[ 700 ] };
69
+ line-height: calc(
70
+ ${ CONFIG.controlHeight } - ${ CONFIG.borderWidth } * 2
71
+ );
72
+ display: inline-block;
73
+ `;
74
+
75
+ export const MinutesInput = styled( NumberControl )`
76
+ ${ baseInput }
77
+
78
+ width: ${ space( 9 ) };
79
+
80
+ &&& ${ Input } {
81
+ padding-left: 0;
82
+ }
83
+
84
+ &&& ${ BackdropUI } {
85
+ border-left: 0;
86
+ border-top-left-radius: 0;
87
+ border-bottom-left-radius: 0;
88
+ }
89
+ `;
90
+
91
+ // Ideally we wouldn't need a wrapper, but can't otherwise target the
92
+ // <BaseControl> in <SelectControl>
93
+ export const MonthSelectWrapper = styled.div`
94
+ flex-grow: 1;
95
+ `;
96
+
97
+ export const MonthSelect = styled( SelectControl )`
98
+ height: 36px;
99
+
100
+ ${ Select } {
101
+ line-height: 30px;
102
+ }
103
+ `;
104
+
105
+ export const DayInput = styled( NumberControl )`
106
+ ${ baseInput }
107
+
108
+ width: ${ space( 9 ) };
109
+ `;
110
+
111
+ export const YearInput = styled( NumberControl )`
112
+ ${ baseInput }
113
+
114
+ width: ${ space( 14 ) };
115
+ `;
116
+
117
+ export const TimeZone = styled.div`
118
+ text-decoration: underline dotted;
119
+ `;