@wordpress/components 28.2.0 → 28.3.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 (424) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/build/animation/index.js.map +1 -1
  3. package/build/autocomplete/autocompleter-ui.js +1 -0
  4. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  5. package/build/autocomplete/index.js.map +1 -1
  6. package/build/base-control/index.js +14 -7
  7. package/build/base-control/index.js.map +1 -1
  8. package/build/border-box-control/border-box-control-visualizer/component.js +0 -4
  9. package/build/border-box-control/border-box-control-visualizer/component.js.map +1 -1
  10. package/build/button/index.js +5 -3
  11. package/build/button/index.js.map +1 -1
  12. package/build/button/types.js.map +1 -1
  13. package/build/combobox-control/index.js +4 -1
  14. package/build/combobox-control/index.js.map +1 -1
  15. package/build/composite/current/index.js.map +1 -1
  16. package/build/custom-select-control-v2/custom-select.js +57 -33
  17. package/build/custom-select-control-v2/custom-select.js.map +1 -1
  18. package/build/custom-select-control-v2/default-component/index.js +0 -1
  19. package/build/custom-select-control-v2/default-component/index.js.map +1 -1
  20. package/build/custom-select-control-v2/item.js +2 -0
  21. package/build/custom-select-control-v2/item.js.map +1 -1
  22. package/build/custom-select-control-v2/legacy-component/index.js +18 -6
  23. package/build/custom-select-control-v2/legacy-component/index.js.map +1 -1
  24. package/build/custom-select-control-v2/styles.js +90 -78
  25. package/build/custom-select-control-v2/styles.js.map +1 -1
  26. package/build/custom-select-control-v2/types.js.map +1 -1
  27. package/build/date-time/date-time/index.js +3 -1
  28. package/build/date-time/date-time/index.js.map +1 -1
  29. package/build/date-time/index.js +7 -0
  30. package/build/date-time/index.js.map +1 -1
  31. package/build/date-time/time/index.js +62 -145
  32. package/build/date-time/time/index.js.map +1 -1
  33. package/build/date-time/time-input/index.js +159 -0
  34. package/build/date-time/time-input/index.js.map +1 -0
  35. package/build/date-time/types.js.map +1 -1
  36. package/build/date-time/utils.js +64 -0
  37. package/build/date-time/utils.js.map +1 -1
  38. package/build/disclosure/index.js +0 -1
  39. package/build/disclosure/index.js.map +1 -1
  40. package/build/divider/component.js +0 -1
  41. package/build/divider/component.js.map +1 -1
  42. package/build/divider/types.js.map +1 -1
  43. package/build/dropdown-menu/index.js +1 -0
  44. package/build/dropdown-menu/index.js.map +1 -1
  45. package/build/dropdown-menu-v2/index.js +0 -1
  46. package/build/dropdown-menu-v2/index.js.map +1 -1
  47. package/build/dropdown-menu-v2/styles.js +15 -16
  48. package/build/dropdown-menu-v2/styles.js.map +1 -1
  49. package/build/dropdown-menu-v2/types.js.map +1 -1
  50. package/build/font-size-picker/font-size-picker-select.js +2 -2
  51. package/build/font-size-picker/font-size-picker-select.js.map +1 -1
  52. package/build/font-size-picker/index.js +1 -1
  53. package/build/font-size-picker/index.js.map +1 -1
  54. package/build/font-size-picker/utils.js +0 -4
  55. package/build/font-size-picker/utils.js.map +1 -1
  56. package/build/form-token-field/token.js +4 -1
  57. package/build/form-token-field/token.js.map +1 -1
  58. package/build/higher-order/with-spoken-messages/index.js +1 -2
  59. package/build/higher-order/with-spoken-messages/index.js.map +1 -1
  60. package/build/menu-items-choice/types.js.map +1 -1
  61. package/build/popover/index.js +0 -4
  62. package/build/popover/index.js.map +1 -1
  63. package/build/popover/utils.js +0 -1
  64. package/build/popover/utils.js.map +1 -1
  65. package/build/private-apis.js +2 -4
  66. package/build/private-apis.js.map +1 -1
  67. package/build/progress-bar/styles.js +19 -13
  68. package/build/progress-bar/styles.js.map +1 -1
  69. package/build/radio-group/context.js +0 -1
  70. package/build/radio-group/context.js.map +1 -1
  71. package/build/radio-group/index.js +0 -1
  72. package/build/radio-group/index.js.map +1 -1
  73. package/build/radio-group/radio.js +0 -1
  74. package/build/radio-group/radio.js.map +1 -1
  75. package/build/range-control/index.js +4 -1
  76. package/build/range-control/index.js.map +1 -1
  77. package/build/range-control/styles/range-control-styles.js +34 -28
  78. package/build/range-control/styles/range-control-styles.js.map +1 -1
  79. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  80. package/build/select-control/index.js +1 -2
  81. package/build/select-control/index.js.map +1 -1
  82. package/build/select-control/styles/select-control-styles.js +13 -8
  83. package/build/select-control/styles/select-control-styles.js.map +1 -1
  84. package/build/tab-panel/index.js +0 -1
  85. package/build/tab-panel/index.js.map +1 -1
  86. package/build/tabs/index.js +0 -1
  87. package/build/tabs/index.js.map +1 -1
  88. package/build/tabs/styles.js +3 -5
  89. package/build/tabs/styles.js.map +1 -1
  90. package/build/tabs/tablist.js +148 -37
  91. package/build/tabs/tablist.js.map +1 -1
  92. package/build/tabs/types.js.map +1 -1
  93. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +0 -2
  94. package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  95. package/build/toggle-group-control/toggle-group-control/component.js +0 -2
  96. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  97. package/build/toggle-group-control/toggle-group-control-option-base/component.js +0 -4
  98. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  99. package/build/toolbar/toolbar/toolbar-container.js +0 -1
  100. package/build/toolbar/toolbar/toolbar-container.js.map +1 -1
  101. package/build/toolbar/toolbar/types.js.map +1 -1
  102. package/build/toolbar/toolbar-button/index.js +27 -19
  103. package/build/toolbar/toolbar-button/index.js.map +1 -1
  104. package/build/toolbar/toolbar-button/types.js.map +1 -1
  105. package/build/toolbar/toolbar-context/index.js +0 -1
  106. package/build/toolbar/toolbar-context/index.js.map +1 -1
  107. package/build/toolbar/toolbar-item/index.js +1 -1
  108. package/build/toolbar/toolbar-item/index.js.map +1 -1
  109. package/build/tooltip/index.js +3 -2
  110. package/build/tooltip/index.js.map +1 -1
  111. package/build/tooltip/types.js.map +1 -1
  112. package/build/unit-control/index.js +3 -3
  113. package/build/unit-control/index.js.map +1 -1
  114. package/build/unit-control/styles/unit-control-styles.js +7 -7
  115. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  116. package/build/utils/hooks/use-update-effect.js +4 -1
  117. package/build/utils/hooks/use-update-effect.js.map +1 -1
  118. package/build-module/animation/index.js +0 -1
  119. package/build-module/animation/index.js.map +1 -1
  120. package/build-module/autocomplete/autocompleter-ui.js +1 -0
  121. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  122. package/build-module/autocomplete/index.js.map +1 -1
  123. package/build-module/base-control/index.js +13 -6
  124. package/build-module/base-control/index.js.map +1 -1
  125. package/build-module/border-box-control/border-box-control-visualizer/component.js +0 -4
  126. package/build-module/border-box-control/border-box-control-visualizer/component.js.map +1 -1
  127. package/build-module/button/index.js +5 -3
  128. package/build-module/button/index.js.map +1 -1
  129. package/build-module/button/types.js.map +1 -1
  130. package/build-module/combobox-control/index.js +4 -1
  131. package/build-module/combobox-control/index.js.map +1 -1
  132. package/build-module/composite/current/index.js +0 -3
  133. package/build-module/composite/current/index.js.map +1 -1
  134. package/build-module/custom-select-control-v2/custom-select.js +58 -35
  135. package/build-module/custom-select-control-v2/custom-select.js.map +1 -1
  136. package/build-module/custom-select-control-v2/default-component/index.js +0 -1
  137. package/build-module/custom-select-control-v2/default-component/index.js.map +1 -1
  138. package/build-module/custom-select-control-v2/item.js +2 -0
  139. package/build-module/custom-select-control-v2/item.js.map +1 -1
  140. package/build-module/custom-select-control-v2/legacy-component/index.js +18 -6
  141. package/build-module/custom-select-control-v2/legacy-component/index.js.map +1 -1
  142. package/build-module/custom-select-control-v2/styles.js +88 -76
  143. package/build-module/custom-select-control-v2/styles.js.map +1 -1
  144. package/build-module/custom-select-control-v2/types.js.map +1 -1
  145. package/build-module/date-time/date-time/index.js +4 -1
  146. package/build-module/date-time/date-time/index.js.map +1 -1
  147. package/build-module/date-time/index.js +2 -1
  148. package/build-module/date-time/index.js.map +1 -1
  149. package/build-module/date-time/time/index.js +65 -149
  150. package/build-module/date-time/time/index.js.map +1 -1
  151. package/build-module/date-time/time-input/index.js +151 -0
  152. package/build-module/date-time/time-input/index.js.map +1 -0
  153. package/build-module/date-time/types.js.map +1 -1
  154. package/build-module/date-time/utils.js +61 -0
  155. package/build-module/date-time/utils.js.map +1 -1
  156. package/build-module/disclosure/index.js +0 -1
  157. package/build-module/disclosure/index.js.map +1 -1
  158. package/build-module/divider/component.js +0 -1
  159. package/build-module/divider/component.js.map +1 -1
  160. package/build-module/divider/types.js.map +1 -1
  161. package/build-module/dropdown-menu/index.js +1 -0
  162. package/build-module/dropdown-menu/index.js.map +1 -1
  163. package/build-module/dropdown-menu-v2/index.js +0 -1
  164. package/build-module/dropdown-menu-v2/index.js.map +1 -1
  165. package/build-module/dropdown-menu-v2/styles.js +14 -15
  166. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  167. package/build-module/dropdown-menu-v2/types.js.map +1 -1
  168. package/build-module/font-size-picker/font-size-picker-select.js +1 -1
  169. package/build-module/font-size-picker/font-size-picker-select.js.map +1 -1
  170. package/build-module/font-size-picker/index.js +1 -1
  171. package/build-module/font-size-picker/index.js.map +1 -1
  172. package/build-module/font-size-picker/utils.js +0 -4
  173. package/build-module/font-size-picker/utils.js.map +1 -1
  174. package/build-module/form-token-field/token.js +4 -1
  175. package/build-module/form-token-field/token.js.map +1 -1
  176. package/build-module/higher-order/with-spoken-messages/index.js +1 -2
  177. package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
  178. package/build-module/menu-items-choice/types.js.map +1 -1
  179. package/build-module/popover/index.js +0 -3
  180. package/build-module/popover/index.js.map +1 -1
  181. package/build-module/popover/utils.js +0 -1
  182. package/build-module/popover/utils.js.map +1 -1
  183. package/build-module/private-apis.js +2 -4
  184. package/build-module/private-apis.js.map +1 -1
  185. package/build-module/progress-bar/styles.js +21 -13
  186. package/build-module/progress-bar/styles.js.map +1 -1
  187. package/build-module/radio-group/context.js +0 -1
  188. package/build-module/radio-group/context.js.map +1 -1
  189. package/build-module/radio-group/index.js +0 -1
  190. package/build-module/radio-group/index.js.map +1 -1
  191. package/build-module/radio-group/radio.js +0 -1
  192. package/build-module/radio-group/radio.js.map +1 -1
  193. package/build-module/range-control/index.js +4 -1
  194. package/build-module/range-control/index.js.map +1 -1
  195. package/build-module/range-control/styles/range-control-styles.js +34 -28
  196. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  197. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  198. package/build-module/select-control/index.js +2 -3
  199. package/build-module/select-control/index.js.map +1 -1
  200. package/build-module/select-control/styles/select-control-styles.js +12 -7
  201. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  202. package/build-module/tab-panel/index.js +0 -1
  203. package/build-module/tab-panel/index.js.map +1 -1
  204. package/build-module/tabs/index.js +0 -1
  205. package/build-module/tabs/index.js.map +1 -1
  206. package/build-module/tabs/styles.js +3 -4
  207. package/build-module/tabs/styles.js.map +1 -1
  208. package/build-module/tabs/tablist.js +149 -38
  209. package/build-module/tabs/tablist.js.map +1 -1
  210. package/build-module/tabs/types.js.map +1 -1
  211. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +0 -1
  212. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  213. package/build-module/toggle-group-control/toggle-group-control/component.js +0 -1
  214. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  215. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +0 -2
  216. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  217. package/build-module/toolbar/toolbar/toolbar-container.js +0 -1
  218. package/build-module/toolbar/toolbar/toolbar-container.js.map +1 -1
  219. package/build-module/toolbar/toolbar/types.js.map +1 -1
  220. package/build-module/toolbar/toolbar-button/index.js +27 -19
  221. package/build-module/toolbar/toolbar-button/index.js.map +1 -1
  222. package/build-module/toolbar/toolbar-button/types.js.map +1 -1
  223. package/build-module/toolbar/toolbar-context/index.js +0 -1
  224. package/build-module/toolbar/toolbar-context/index.js.map +1 -1
  225. package/build-module/toolbar/toolbar-item/index.js +1 -1
  226. package/build-module/toolbar/toolbar-item/index.js.map +1 -1
  227. package/build-module/tooltip/index.js +3 -2
  228. package/build-module/tooltip/index.js.map +1 -1
  229. package/build-module/tooltip/types.js.map +1 -1
  230. package/build-module/unit-control/index.js +3 -3
  231. package/build-module/unit-control/index.js.map +1 -1
  232. package/build-module/unit-control/styles/unit-control-styles.js +7 -7
  233. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  234. package/build-module/utils/hooks/use-update-effect.js +4 -1
  235. package/build-module/utils/hooks/use-update-effect.js.map +1 -1
  236. package/build-style/style-rtl.css +18 -0
  237. package/build-style/style.css +18 -0
  238. package/build-types/animation/index.d.ts.map +1 -1
  239. package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
  240. package/build-types/autocomplete/index.d.ts.map +1 -1
  241. package/build-types/base-control/index.d.ts +6 -20
  242. package/build-types/base-control/index.d.ts.map +1 -1
  243. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  244. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts.map +1 -1
  245. package/build-types/button/deprecated.d.ts +4 -4
  246. package/build-types/button/index.d.ts.map +1 -1
  247. package/build-types/button/stories/e2e/index.story.d.ts.map +1 -1
  248. package/build-types/button/types.d.ts +27 -10
  249. package/build-types/button/types.d.ts.map +1 -1
  250. package/build-types/combobox-control/index.d.ts.map +1 -1
  251. package/build-types/composite/current/index.d.ts.map +1 -1
  252. package/build-types/custom-select-control-v2/custom-select.d.ts +2 -2
  253. package/build-types/custom-select-control-v2/custom-select.d.ts.map +1 -1
  254. package/build-types/custom-select-control-v2/default-component/index.d.ts.map +1 -1
  255. package/build-types/custom-select-control-v2/item.d.ts.map +1 -1
  256. package/build-types/custom-select-control-v2/legacy-component/index.d.ts.map +1 -1
  257. package/build-types/custom-select-control-v2/stories/default.story.d.ts +6 -3
  258. package/build-types/custom-select-control-v2/stories/default.story.d.ts.map +1 -1
  259. package/build-types/custom-select-control-v2/styles.d.ts +18 -26
  260. package/build-types/custom-select-control-v2/styles.d.ts.map +1 -1
  261. package/build-types/custom-select-control-v2/types.d.ts +12 -2
  262. package/build-types/custom-select-control-v2/types.d.ts.map +1 -1
  263. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  264. package/build-types/date-time/index.d.ts +2 -1
  265. package/build-types/date-time/index.d.ts.map +1 -1
  266. package/build-types/date-time/stories/time-input.story.d.ts +12 -0
  267. package/build-types/date-time/stories/time-input.story.d.ts.map +1 -0
  268. package/build-types/date-time/time/index.d.ts +1 -1
  269. package/build-types/date-time/time/index.d.ts.map +1 -1
  270. package/build-types/date-time/time-input/index.d.ts +5 -0
  271. package/build-types/date-time/time-input/index.d.ts.map +1 -0
  272. package/build-types/date-time/time-input/test/index.d.ts +2 -0
  273. package/build-types/date-time/time-input/test/index.d.ts.map +1 -0
  274. package/build-types/date-time/types.d.ts +54 -0
  275. package/build-types/date-time/types.d.ts.map +1 -1
  276. package/build-types/date-time/utils.d.ts +40 -0
  277. package/build-types/date-time/utils.d.ts.map +1 -1
  278. package/build-types/disclosure/index.d.ts.map +1 -1
  279. package/build-types/divider/component.d.ts.map +1 -1
  280. package/build-types/divider/types.d.ts.map +1 -1
  281. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  282. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
  283. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  284. package/build-types/dropdown-menu-v2/types.d.ts.map +1 -1
  285. package/build-types/font-size-picker/styles.d.ts +1 -1
  286. package/build-types/font-size-picker/utils.d.ts.map +1 -1
  287. package/build-types/form-token-field/token.d.ts.map +1 -1
  288. package/build-types/higher-order/with-spoken-messages/index.d.ts +1 -2
  289. package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -1
  290. package/build-types/menu-items-choice/types.d.ts +1 -1
  291. package/build-types/menu-items-choice/types.d.ts.map +1 -1
  292. package/build-types/navigator/navigator-back-button/component.d.ts +1 -1
  293. package/build-types/navigator/navigator-back-button/hook.d.ts +1 -1
  294. package/build-types/navigator/navigator-button/component.d.ts +1 -1
  295. package/build-types/navigator/navigator-button/hook.d.ts +1 -1
  296. package/build-types/navigator/navigator-to-parent-button/component.d.ts +1 -1
  297. package/build-types/popover/index.d.ts.map +1 -1
  298. package/build-types/popover/utils.d.ts.map +1 -1
  299. package/build-types/private-apis.d.ts.map +1 -1
  300. package/build-types/progress-bar/styles.d.ts.map +1 -1
  301. package/build-types/radio-group/context.d.ts.map +1 -1
  302. package/build-types/radio-group/index.d.ts.map +1 -1
  303. package/build-types/radio-group/radio.d.ts.map +1 -1
  304. package/build-types/range-control/index.d.ts.map +1 -1
  305. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  306. package/build-types/resizable-box/resize-tooltip/utils.d.ts +2 -2
  307. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  308. package/build-types/select-control/index.d.ts.map +1 -1
  309. package/build-types/select-control/styles/select-control-styles.d.ts +5 -0
  310. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  311. package/build-types/tab-panel/index.d.ts.map +1 -1
  312. package/build-types/tabs/index.d.ts.map +1 -1
  313. package/build-types/tabs/stories/index.story.d.ts.map +1 -1
  314. package/build-types/tabs/styles.d.ts.map +1 -1
  315. package/build-types/tabs/tablist.d.ts.map +1 -1
  316. package/build-types/tabs/types.d.ts.map +1 -1
  317. package/build-types/theme/stories/index.story.d.ts.map +1 -1
  318. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
  319. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  320. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  321. package/build-types/toolbar/toolbar/toolbar-container.d.ts.map +1 -1
  322. package/build-types/toolbar/toolbar/types.d.ts +6 -0
  323. package/build-types/toolbar/toolbar/types.d.ts.map +1 -1
  324. package/build-types/toolbar/toolbar-button/index.d.ts +3 -96
  325. package/build-types/toolbar/toolbar-button/index.d.ts.map +1 -1
  326. package/build-types/toolbar/toolbar-button/types.d.ts +18 -0
  327. package/build-types/toolbar/toolbar-button/types.d.ts.map +1 -1
  328. package/build-types/toolbar/toolbar-context/index.d.ts.map +1 -1
  329. package/build-types/toolbar/toolbar-item/index.d.ts +1 -3
  330. package/build-types/toolbar/toolbar-item/index.d.ts.map +1 -1
  331. package/build-types/tooltip/index.d.ts.map +1 -1
  332. package/build-types/tooltip/types.d.ts +4 -0
  333. package/build-types/tooltip/types.d.ts.map +1 -1
  334. package/build-types/unit-control/index.d.ts.map +1 -1
  335. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  336. package/build-types/utils/hooks/use-update-effect.d.ts +1 -1
  337. package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
  338. package/package.json +19 -19
  339. package/src/animation/index.tsx +0 -1
  340. package/src/autocomplete/autocompleter-ui.tsx +1 -0
  341. package/src/autocomplete/index.tsx +0 -1
  342. package/src/base-control/index.tsx +16 -6
  343. package/src/base-control/stories/index.story.tsx +0 -1
  344. package/src/border-box-control/border-box-control-visualizer/component.tsx +0 -5
  345. package/src/button/README.md +13 -0
  346. package/src/button/index.tsx +6 -4
  347. package/src/button/stories/e2e/index.story.tsx +2 -1
  348. package/src/button/test/index.tsx +17 -2
  349. package/src/button/types.ts +27 -10
  350. package/src/combobox-control/index.tsx +2 -0
  351. package/src/composite/current/index.ts +0 -2
  352. package/src/custom-select-control/test/index.js +42 -6
  353. package/src/custom-select-control-v2/custom-select.tsx +57 -22
  354. package/src/custom-select-control-v2/default-component/index.tsx +0 -1
  355. package/src/custom-select-control-v2/item.tsx +5 -1
  356. package/src/custom-select-control-v2/legacy-component/index.tsx +28 -7
  357. package/src/custom-select-control-v2/legacy-component/test/index.tsx +44 -8
  358. package/src/custom-select-control-v2/styles.ts +153 -83
  359. package/src/custom-select-control-v2/test/index.tsx +35 -5
  360. package/src/custom-select-control-v2/types.ts +18 -6
  361. package/src/date-time/README.md +8 -0
  362. package/src/date-time/date-time/index.tsx +2 -1
  363. package/src/date-time/index.ts +2 -1
  364. package/src/date-time/stories/time-input.story.tsx +36 -0
  365. package/src/date-time/time/index.tsx +77 -194
  366. package/src/date-time/time/test/index.tsx +61 -0
  367. package/src/date-time/time-input/index.tsx +196 -0
  368. package/src/date-time/time-input/test/index.tsx +171 -0
  369. package/src/date-time/types.ts +63 -0
  370. package/src/date-time/utils.ts +69 -0
  371. package/src/dimension-control/test/__snapshots__/index.test.js.snap +116 -96
  372. package/src/disclosure/index.tsx +0 -1
  373. package/src/divider/component.tsx +0 -1
  374. package/src/divider/types.ts +0 -1
  375. package/src/dropdown-menu/index.tsx +1 -0
  376. package/src/dropdown-menu-v2/index.tsx +0 -1
  377. package/src/dropdown-menu-v2/styles.ts +0 -1
  378. package/src/dropdown-menu-v2/types.ts +0 -1
  379. package/src/font-size-picker/font-size-picker-select.tsx +1 -1
  380. package/src/font-size-picker/index.tsx +1 -1
  381. package/src/font-size-picker/test/index.tsx +6 -6
  382. package/src/font-size-picker/utils.ts +0 -5
  383. package/src/form-token-field/token.tsx +2 -0
  384. package/src/higher-order/navigate-regions/style.scss +25 -13
  385. package/src/higher-order/with-spoken-messages/index.tsx +1 -2
  386. package/src/menu-items-choice/types.ts +2 -1
  387. package/src/palette-edit/test/index.tsx +1 -0
  388. package/src/popover/index.tsx +0 -2
  389. package/src/popover/utils.ts +0 -1
  390. package/src/private-apis.ts +2 -5
  391. package/src/progress-bar/styles.ts +18 -9
  392. package/src/radio-group/context.tsx +0 -1
  393. package/src/radio-group/index.tsx +0 -1
  394. package/src/radio-group/radio.tsx +0 -1
  395. package/src/range-control/index.tsx +2 -0
  396. package/src/range-control/styles/range-control-styles.ts +6 -2
  397. package/src/resizable-box/resize-tooltip/utils.ts +1 -1
  398. package/src/select-control/index.tsx +3 -4
  399. package/src/select-control/styles/select-control-styles.ts +17 -6
  400. package/src/tab-panel/index.tsx +0 -1
  401. package/src/tabs/index.tsx +0 -1
  402. package/src/tabs/stories/index.story.tsx +25 -18
  403. package/src/tabs/styles.ts +18 -14
  404. package/src/tabs/tablist.tsx +187 -43
  405. package/src/tabs/types.ts +0 -1
  406. package/src/theme/stories/index.story.tsx +2 -0
  407. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +0 -1
  408. package/src/toggle-group-control/toggle-group-control/component.tsx +0 -2
  409. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +0 -2
  410. package/src/toolbar/toolbar/README.md +9 -0
  411. package/src/toolbar/toolbar/style.scss +7 -0
  412. package/src/toolbar/toolbar/toolbar-container.tsx +0 -1
  413. package/src/toolbar/toolbar/types.ts +6 -0
  414. package/src/toolbar/toolbar-button/index.tsx +30 -17
  415. package/src/toolbar/toolbar-button/types.ts +19 -0
  416. package/src/toolbar/toolbar-context/index.ts +0 -1
  417. package/src/toolbar/toolbar-item/index.tsx +1 -1
  418. package/src/tooltip/index.tsx +3 -2
  419. package/src/tooltip/test/index.tsx +18 -0
  420. package/src/tooltip/types.ts +4 -0
  421. package/src/unit-control/index.tsx +3 -2
  422. package/src/unit-control/styles/unit-control-styles.ts +10 -4
  423. package/src/utils/hooks/use-update-effect.js +8 -1
  424. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["@wordpress/components/src/custom-select-control-v2/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\n// eslint-disable-next-line no-restricted-imports\nimport type * as Ariakit from '@ariakit/react';\nimport type { FocusEventHandler, MouseEventHandler } from 'react';\n\nexport type CustomSelectStore = {\n\t/**\n\t * The store object returned by Ariakit's `useSelectStore` hook.\n\t */\n\tstore: Ariakit.SelectStore;\n};\n\nexport type CustomSelectContext = CustomSelectStore | undefined;\n\ntype CustomSelectSize< Size = 'compact' | 'default' > = {\n\t/**\n\t * The size of the control.\n\t *\n\t * @default 'default'\n\t */\n\tsize?: Size;\n};\n\nexport type CustomSelectButtonSize = CustomSelectSize<\n\t'compact' | 'default' | 'small'\n>;\n\nexport type CustomSelectButtonProps = {\n\t/**\n\t * An optional default value for the control when used in uncontrolled mode.\n\t * If left `undefined`, the first non-disabled item will be used.\n\t */\n\tdefaultValue?: string | string[];\n\t/**\n\t * A function that receives the new value of the input.\n\t */\n\tonChange?: ( newValue: string | string[] ) => void;\n\t/**\n\t * Can be used to render select UI with custom styled values.\n\t */\n\trenderSelectedValue?: (\n\t\tselectedValue: string | string[]\n\t) => React.ReactNode;\n\t/**\n\t * The value of the control when used in uncontrolled mode.\n\t */\n\tvalue?: string | string[];\n};\n\nexport type _CustomSelectProps = CustomSelectButtonProps & {\n\t/**\n\t * The child elements. This should be composed of `CustomSelectItem` components.\n\t */\n\tchildren: React.ReactNode;\n\t/**\n\t * Used to visually hide the label. It will always be visible to screen readers.\n\t *\n\t * @default false\n\t */\n\thideLabelFromVision?: boolean;\n\t/**\n\t * Accessible label for the control.\n\t */\n\tlabel: string;\n};\n\nexport type CustomSelectProps = _CustomSelectProps &\n\tCustomSelectButtonProps &\n\tCustomSelectSize;\n\n/**\n * The legacy object structure for the options array.\n */\ntype LegacyOption = {\n\tkey: string;\n\tname: string;\n\tstyle?: React.CSSProperties;\n\tclassName?: string;\n\t__experimentalHint?: string;\n\t[ key: string ]: any;\n};\n\n/**\n * The legacy object returned from the onChange event.\n */\ntype LegacyOnChangeObject = {\n\thighlightedIndex?: number;\n\tinputValue?: string;\n\tisOpen?: boolean;\n\ttype?: string;\n\tselectedItem: LegacyOption;\n};\n\nexport type LegacyCustomSelectProps = {\n\t/**\n\t * Optional classname for the component.\n\t */\n\tclassName?: string;\n\t/**\n\t * Used to visually hide the label. It will always be visible to screen readers.\n\t *\n\t */\n\thideLabelFromVision?: boolean;\n\t/**\n\t * Pass in a description that will be shown to screen readers associated with the\n\t * select trigger button. If no value is passed, the text \"Currently selected:\n\t * selectedItem.name\" will be used fully translated.\n\t */\n\tdescribedBy?: string;\n\t/**\n\t * Label for the control.\n\t */\n\tlabel: string;\n\t/**\n\t * Function called with the control's internal state changes. The `selectedItem`\n\t * property contains the next selected item.\n\t */\n\tonChange?: ( newValue: LegacyOnChangeObject ) => void;\n\t/**\n\t * A handler for `onBlur` events.\n\t *\n\t * @ignore\n\t */\n\tonBlur?: FocusEventHandler< HTMLButtonElement >;\n\t/**\n\t * A handler for `onFocus` events.\n\t *\n\t * @ignore\n\t */\n\tonFocus?: FocusEventHandler< HTMLButtonElement >;\n\t/**\n\t * A handler for `onMouseOver` events.\n\t *\n\t * @ignore\n\t */\n\tonMouseOut?: MouseEventHandler< HTMLButtonElement >;\n\t/**\n\t * A handler for `onMouseOut` events.\n\t *\n\t * @ignore\n\t */\n\tonMouseOver?: MouseEventHandler< HTMLButtonElement >;\n\t/**\n\t * The options that can be chosen from.\n\t */\n\toptions: Array< LegacyOption >;\n\t/**\n\t * The size of the control.\n\t *\n\t * @default 'default'\n\t */\n\tsize?: 'default' | 'small' | '__unstable-large';\n\t/**\n\t * Can be used to externally control the value of the control.\n\t */\n\tvalue?: LegacyOption;\n\t/**\n\t * Legacy way to add additional text to the right of each option.\n\t *\n\t * @default false\n\t */\n\t__experimentalShowSelectedHint?: boolean;\n\t/**\n\t * Opt-in prop for an unconstrained width style which became the default in\n\t * WordPress 6.5. The prop is no longer needed and can be safely removed.\n\t *\n\t * @deprecated\n\t * @ignore\n\t */\n\t__nextUnconstrainedWidth?: boolean;\n\t/**\n\t * Start opting into the larger default height that will become the default size in a future version.\n\t *\n\t * @default false\n\t */\n\t__next40pxDefaultSize?: boolean;\n};\n\nexport type CustomSelectItemProps = {\n\t/**\n\t * The value of the select item. This will be used as the children if\n\t * children are left `undefined`.\n\t */\n\tvalue: string;\n\t/**\n\t * The children to display for each select item. The `value` will be\n\t * used if left `undefined`.\n\t */\n\tchildren?: React.ReactNode;\n\t/**\n\t * If true, the item will be disabled.\n\t *\n\t * You will need to add your own styles (e.g. reduced opacity) to visually show that they are disabled.\n\t * @default false\n\t */\n\tdisabled?: boolean;\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["@wordpress/components/src/custom-select-control-v2/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type * as Ariakit from '@ariakit/react';\nimport type { FocusEventHandler, MouseEventHandler } from 'react';\n\nexport type CustomSelectStore = {\n\t/**\n\t * The store object returned by Ariakit's `useSelectStore` hook.\n\t */\n\tstore: Ariakit.SelectStore;\n};\n\ntype CustomSelectSize< Size = 'compact' | 'default' > = {\n\t/**\n\t * The size of the control.\n\t *\n\t * @default 'default'\n\t */\n\tsize?: Size;\n};\n\nexport type CustomSelectButtonSize = CustomSelectSize<\n\t'compact' | 'default' | 'small'\n>;\n\nexport type CustomSelectContext =\n\t| ( CustomSelectStore & CustomSelectButtonSize )\n\t| undefined;\n\nexport type CustomSelectButtonProps = {\n\t/**\n\t * An optional default value for the control when used in uncontrolled mode.\n\t * If left `undefined`, the first non-disabled item will be used.\n\t */\n\tdefaultValue?: string | string[];\n\t/**\n\t * A function that receives the new value of the input.\n\t */\n\tonChange?: ( newValue: string | string[] ) => void;\n\t/**\n\t * Can be used to render select UI with custom styled values.\n\t */\n\trenderSelectedValue?: (\n\t\tselectedValue: string | string[]\n\t) => React.ReactNode;\n\t/**\n\t * The value of the control when used in uncontrolled mode.\n\t */\n\tvalue?: string | string[];\n};\n\n// Props only exposed on the internal implementation\nexport type _CustomSelectInternalProps = {\n\t/**\n\t * True if the consumer is emulating the legacy component behavior and look\n\t */\n\tisLegacy?: boolean;\n};\n\n// Props that are exposed in exported components\nexport type _CustomSelectProps = CustomSelectButtonProps & {\n\t/**\n\t * Additional className added to the root wrapper element.\n\t */\n\tclassName?: string;\n\t/**\n\t * The child elements. This should be composed of `CustomSelectItem` components.\n\t */\n\tchildren: React.ReactNode;\n\t/**\n\t * Used to visually hide the label. It will always be visible to screen readers.\n\t *\n\t * @default false\n\t */\n\thideLabelFromVision?: boolean;\n\t/**\n\t * Accessible label for the control.\n\t */\n\tlabel: string;\n};\n\nexport type CustomSelectProps = _CustomSelectProps & CustomSelectSize;\n\n/**\n * The legacy object structure for the options array.\n */\ntype LegacyOption = {\n\tkey: string;\n\tname: string;\n\tstyle?: React.CSSProperties;\n\tclassName?: string;\n\t__experimentalHint?: string;\n\t[ key: string ]: any;\n};\n\n/**\n * The legacy object returned from the onChange event.\n */\ntype LegacyOnChangeObject = {\n\thighlightedIndex?: number;\n\tinputValue?: string;\n\tisOpen?: boolean;\n\ttype?: string;\n\tselectedItem: LegacyOption;\n};\n\nexport type LegacyCustomSelectProps = {\n\t/**\n\t * Optional classname for the component.\n\t */\n\tclassName?: string;\n\t/**\n\t * Used to visually hide the label. It will always be visible to screen readers.\n\t *\n\t */\n\thideLabelFromVision?: boolean;\n\t/**\n\t * Pass in a description that will be shown to screen readers associated with the\n\t * select trigger button. If no value is passed, the text \"Currently selected:\n\t * selectedItem.name\" will be used fully translated.\n\t */\n\tdescribedBy?: string;\n\t/**\n\t * Label for the control.\n\t */\n\tlabel: string;\n\t/**\n\t * Function called with the control's internal state changes. The `selectedItem`\n\t * property contains the next selected item.\n\t */\n\tonChange?: ( newValue: LegacyOnChangeObject ) => void;\n\t/**\n\t * A handler for `onBlur` events.\n\t *\n\t * @ignore\n\t */\n\tonBlur?: FocusEventHandler< HTMLButtonElement >;\n\t/**\n\t * A handler for `onFocus` events.\n\t *\n\t * @ignore\n\t */\n\tonFocus?: FocusEventHandler< HTMLButtonElement >;\n\t/**\n\t * A handler for `onMouseOver` events.\n\t *\n\t * @ignore\n\t */\n\tonMouseOut?: MouseEventHandler< HTMLButtonElement >;\n\t/**\n\t * A handler for `onMouseOut` events.\n\t *\n\t * @ignore\n\t */\n\tonMouseOver?: MouseEventHandler< HTMLButtonElement >;\n\t/**\n\t * The options that can be chosen from.\n\t */\n\toptions: Array< LegacyOption >;\n\t/**\n\t * The size of the control.\n\t *\n\t * @default 'default'\n\t */\n\tsize?: 'default' | 'small' | '__unstable-large';\n\t/**\n\t * Can be used to externally control the value of the control.\n\t */\n\tvalue?: LegacyOption;\n\t/**\n\t * Legacy way to add additional text to the right of each option.\n\t *\n\t * @default false\n\t */\n\t__experimentalShowSelectedHint?: boolean;\n\t/**\n\t * Opt-in prop for an unconstrained width style which became the default in\n\t * WordPress 6.5. The prop is no longer needed and can be safely removed.\n\t *\n\t * @deprecated\n\t * @ignore\n\t */\n\t__nextUnconstrainedWidth?: boolean;\n\t/**\n\t * Start opting into the larger default height that will become the default size in a future version.\n\t *\n\t * @default false\n\t */\n\t__next40pxDefaultSize?: boolean;\n};\n\nexport type CustomSelectItemProps = {\n\t/**\n\t * The value of the select item. This will be used as the children if\n\t * children are left `undefined`.\n\t */\n\tvalue: string;\n\t/**\n\t * The children to display for each select item. The `value` will be\n\t * used if left `undefined`.\n\t */\n\tchildren?: React.ReactNode;\n\t/**\n\t * If true, the item will be disabled.\n\t *\n\t * You will need to add your own styles (e.g. reduced opacity) to visually show that they are disabled.\n\t * @default false\n\t */\n\tdisabled?: boolean;\n};\n"],"mappings":"","ignoreList":[]}
@@ -6,6 +6,7 @@
6
6
  * WordPress dependencies
7
7
  */
8
8
  import { forwardRef } from '@wordpress/element';
9
+
9
10
  /**
10
11
  * Internal dependencies
11
12
  */
@@ -20,6 +21,7 @@ const noop = () => {};
20
21
  function UnforwardedDateTimePicker({
21
22
  currentDate,
22
23
  is12Hour,
24
+ dateOrder,
23
25
  isInvalidDate,
24
26
  onMonthPreviewed = noop,
25
27
  onChange,
@@ -34,7 +36,8 @@ function UnforwardedDateTimePicker({
34
36
  children: [/*#__PURE__*/_jsx(TimePicker, {
35
37
  currentTime: currentDate,
36
38
  onChange: onChange,
37
- is12Hour: is12Hour
39
+ is12Hour: is12Hour,
40
+ dateOrder: dateOrder
38
41
  }), /*#__PURE__*/_jsx(DatePicker, {
39
42
  currentDate: currentDate,
40
43
  onChange: onChange,
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","default","DatePicker","TimePicker","Wrapper","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","noop","UnforwardedDateTimePicker","currentDate","is12Hour","isInvalidDate","onMonthPreviewed","onChange","events","startOfWeek","ref","className","spacing","children","currentTime","DateTimePicker"],"sources":["@wordpress/components/src/date-time/date-time/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\nimport { __, _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { default as DatePicker } from '../date';\nimport { default as TimePicker } from '../time';\nimport type { DateTimePickerProps } from '../types';\nimport { Wrapper } from './styles';\n\nexport { DatePicker, TimePicker };\n\nconst noop = () => {};\n\nfunction UnforwardedDateTimePicker(\n\t{\n\t\tcurrentDate,\n\t\tis12Hour,\n\t\tisInvalidDate,\n\t\tonMonthPreviewed = noop,\n\t\tonChange,\n\t\tevents,\n\t\tstartOfWeek,\n\t}: DateTimePickerProps,\n\tref: ForwardedRef< any >\n) {\n\treturn (\n\t\t<Wrapper ref={ ref } className=\"components-datetime\" spacing={ 4 }>\n\t\t\t<>\n\t\t\t\t<TimePicker\n\t\t\t\t\tcurrentTime={ currentDate }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tis12Hour={ is12Hour }\n\t\t\t\t/>\n\t\t\t\t<DatePicker\n\t\t\t\t\tcurrentDate={ currentDate }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tisInvalidDate={ isInvalidDate }\n\t\t\t\t\tevents={ events }\n\t\t\t\t\tonMonthPreviewed={ onMonthPreviewed }\n\t\t\t\t\tstartOfWeek={ startOfWeek }\n\t\t\t\t/>\n\t\t\t</>\n\t\t</Wrapper>\n\t);\n}\n\n/**\n * DateTimePicker is a React component that renders a calendar and clock for\n * date and time selection. The calendar and clock components can be accessed\n * individually using the `DatePicker` and `TimePicker` components respectively.\n *\n * ```jsx\n * import { DateTimePicker } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyDateTimePicker = () => {\n * const [ date, setDate ] = useState( new Date() );\n *\n * return (\n * <DateTimePicker\n * currentDate={ date }\n * onChange={ ( newDate ) => setDate( newDate ) }\n * is12Hour\n * />\n * );\n * };\n * ```\n */\nexport const DateTimePicker = forwardRef( UnforwardedDateTimePicker );\n\nexport default DateTimePicker;\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA,SAASA,UAAU,QAAQ,oBAAoB;AAG/C;AACA;AACA;AACA,SAASC,OAAO,IAAIC,UAAU,QAAQ,SAAS;AAC/C,SAASD,OAAO,IAAIE,UAAU,QAAQ,SAAS;AAE/C,SAASC,OAAO,QAAQ,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEnC,SAASR,UAAU,EAAEC,UAAU;AAE/B,MAAMQ,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AAErB,SAASC,yBAAyBA,CACjC;EACCC,WAAW;EACXC,QAAQ;EACRC,aAAa;EACbC,gBAAgB,GAAGL,IAAI;EACvBM,QAAQ;EACRC,MAAM;EACNC;AACoB,CAAC,EACtBC,GAAwB,EACvB;EACD,oBACCd,IAAA,CAACF,OAAO;IAACgB,GAAG,EAAGA,GAAK;IAACC,SAAS,EAAC,qBAAqB;IAACC,OAAO,EAAG,CAAG;IAAAC,QAAA,eACjEb,KAAA,CAAAF,SAAA;MAAAe,QAAA,gBACCjB,IAAA,CAACH,UAAU;QACVqB,WAAW,EAAGX,WAAa;QAC3BI,QAAQ,EAAGA,QAAU;QACrBH,QAAQ,EAAGA;MAAU,CACrB,CAAC,eACFR,IAAA,CAACJ,UAAU;QACVW,WAAW,EAAGA,WAAa;QAC3BI,QAAQ,EAAGA,QAAU;QACrBF,aAAa,EAAGA,aAAe;QAC/BG,MAAM,EAAGA,MAAQ;QACjBF,gBAAgB,EAAGA,gBAAkB;QACrCG,WAAW,EAAGA;MAAa,CAC3B,CAAC;IAAA,CACD;EAAC,CACK,CAAC;AAEZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMM,cAAc,GAAGzB,UAAU,CAAEY,yBAA0B,CAAC;AAErE,eAAea,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","default","DatePicker","TimePicker","Wrapper","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","noop","UnforwardedDateTimePicker","currentDate","is12Hour","dateOrder","isInvalidDate","onMonthPreviewed","onChange","events","startOfWeek","ref","className","spacing","children","currentTime","DateTimePicker"],"sources":["@wordpress/components/src/date-time/date-time/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { default as DatePicker } from '../date';\nimport { default as TimePicker } from '../time';\nimport type { DateTimePickerProps } from '../types';\nimport { Wrapper } from './styles';\n\nexport { DatePicker, TimePicker };\n\nconst noop = () => {};\n\nfunction UnforwardedDateTimePicker(\n\t{\n\t\tcurrentDate,\n\t\tis12Hour,\n\t\tdateOrder,\n\t\tisInvalidDate,\n\t\tonMonthPreviewed = noop,\n\t\tonChange,\n\t\tevents,\n\t\tstartOfWeek,\n\t}: DateTimePickerProps,\n\tref: ForwardedRef< any >\n) {\n\treturn (\n\t\t<Wrapper ref={ ref } className=\"components-datetime\" spacing={ 4 }>\n\t\t\t<>\n\t\t\t\t<TimePicker\n\t\t\t\t\tcurrentTime={ currentDate }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tis12Hour={ is12Hour }\n\t\t\t\t\tdateOrder={ dateOrder }\n\t\t\t\t/>\n\t\t\t\t<DatePicker\n\t\t\t\t\tcurrentDate={ currentDate }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tisInvalidDate={ isInvalidDate }\n\t\t\t\t\tevents={ events }\n\t\t\t\t\tonMonthPreviewed={ onMonthPreviewed }\n\t\t\t\t\tstartOfWeek={ startOfWeek }\n\t\t\t\t/>\n\t\t\t</>\n\t\t</Wrapper>\n\t);\n}\n\n/**\n * DateTimePicker is a React component that renders a calendar and clock for\n * date and time selection. The calendar and clock components can be accessed\n * individually using the `DatePicker` and `TimePicker` components respectively.\n *\n * ```jsx\n * import { DateTimePicker } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyDateTimePicker = () => {\n * const [ date, setDate ] = useState( new Date() );\n *\n * return (\n * <DateTimePicker\n * currentDate={ date }\n * onChange={ ( newDate ) => setDate( newDate ) }\n * is12Hour\n * />\n * );\n * };\n * ```\n */\nexport const DateTimePicker = forwardRef( UnforwardedDateTimePicker );\n\nexport default DateTimePicker;\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA,SAASA,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,SAASC,OAAO,IAAIC,UAAU,QAAQ,SAAS;AAC/C,SAASD,OAAO,IAAIE,UAAU,QAAQ,SAAS;AAE/C,SAASC,OAAO,QAAQ,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEnC,SAASR,UAAU,EAAEC,UAAU;AAE/B,MAAMQ,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AAErB,SAASC,yBAAyBA,CACjC;EACCC,WAAW;EACXC,QAAQ;EACRC,SAAS;EACTC,aAAa;EACbC,gBAAgB,GAAGN,IAAI;EACvBO,QAAQ;EACRC,MAAM;EACNC;AACoB,CAAC,EACtBC,GAAwB,EACvB;EACD,oBACCf,IAAA,CAACF,OAAO;IAACiB,GAAG,EAAGA,GAAK;IAACC,SAAS,EAAC,qBAAqB;IAACC,OAAO,EAAG,CAAG;IAAAC,QAAA,eACjEd,KAAA,CAAAF,SAAA;MAAAgB,QAAA,gBACClB,IAAA,CAACH,UAAU;QACVsB,WAAW,EAAGZ,WAAa;QAC3BK,QAAQ,EAAGA,QAAU;QACrBJ,QAAQ,EAAGA,QAAU;QACrBC,SAAS,EAAGA;MAAW,CACvB,CAAC,eACFT,IAAA,CAACJ,UAAU;QACVW,WAAW,EAAGA,WAAa;QAC3BK,QAAQ,EAAGA,QAAU;QACrBF,aAAa,EAAGA,aAAe;QAC/BG,MAAM,EAAGA,MAAQ;QACjBF,gBAAgB,EAAGA,gBAAkB;QACrCG,WAAW,EAAGA;MAAa,CAC3B,CAAC;IAAA,CACD;EAAC,CACK,CAAC;AAEZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMM,cAAc,GAAG1B,UAAU,CAAEY,yBAA0B,CAAC;AAErE,eAAec,cAAc","ignoreList":[]}
@@ -3,7 +3,8 @@
3
3
  */
4
4
  import { default as DatePicker } from './date';
5
5
  import { default as TimePicker } from './time';
6
+ import { default as TimeInput } from './time-input';
6
7
  import { default as DateTimePicker } from './date-time';
7
- export { DatePicker, TimePicker };
8
+ export { DatePicker, TimePicker, TimeInput };
8
9
  export default DateTimePicker;
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["default","DatePicker","TimePicker","DateTimePicker"],"sources":["@wordpress/components/src/date-time/index.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { default as DatePicker } from './date';\nimport { default as TimePicker } from './time';\nimport { default as DateTimePicker } from './date-time';\n\nexport { DatePicker, TimePicker };\nexport default DateTimePicker;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,IAAIC,UAAU,QAAQ,QAAQ;AAC9C,SAASD,OAAO,IAAIE,UAAU,QAAQ,QAAQ;AAC9C,SAASF,OAAO,IAAIG,cAAc,QAAQ,aAAa;AAEvD,SAASF,UAAU,EAAEC,UAAU;AAC/B,eAAeC,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["default","DatePicker","TimePicker","TimeInput","DateTimePicker"],"sources":["@wordpress/components/src/date-time/index.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { default as DatePicker } from './date';\nimport { default as TimePicker } from './time';\nimport { default as TimeInput } from './time-input';\nimport { default as DateTimePicker } from './date-time';\n\nexport { DatePicker, TimePicker, TimeInput };\nexport default DateTimePicker;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,IAAIC,UAAU,QAAQ,QAAQ;AAC9C,SAASD,OAAO,IAAIE,UAAU,QAAQ,QAAQ;AAC9C,SAASF,OAAO,IAAIG,SAAS,QAAQ,cAAc;AACnD,SAASH,OAAO,IAAII,cAAc,QAAQ,aAAa;AAEvD,SAASH,UAAU,EAAEC,UAAU,EAAEC,SAAS;AAC1C,eAAeC,cAAc","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { startOfMinute, format, set, setHours, setMonth } from 'date-fns';
4
+ import { startOfMinute, format, set, setMonth } from 'date-fns';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -13,43 +13,17 @@ import { __ } from '@wordpress/i18n';
13
13
  * Internal dependencies
14
14
  */
15
15
  import BaseControl from '../../base-control';
16
- import Button from '../../button';
17
- import ButtonGroup from '../../button-group';
18
16
  import SelectControl from '../../select-control';
19
17
  import TimeZone from './timezone';
20
- import { Wrapper, Fieldset, HoursInput, TimeSeparator, MinutesInput, MonthSelectWrapper, DayInput, YearInput, TimeWrapper } from './styles';
18
+ import { Wrapper, Fieldset, MonthSelectWrapper, DayInput, YearInput } from './styles';
21
19
  import { HStack } from '../../h-stack';
22
20
  import { Spacer } from '../../spacer';
23
- import { COMMIT, PRESS_DOWN, PRESS_UP } from '../../input-control/reducer/actions';
24
- import { inputToDate } from '../utils';
21
+ import { inputToDate, buildPadInputStateReducer, validateInputElementTarget } from '../utils';
25
22
  import { TIMEZONELESS_FORMAT } from '../constants';
23
+ import { TimeInput } from '../time-input';
26
24
  import { jsx as _jsx } from "react/jsx-runtime";
27
25
  import { jsxs as _jsxs } from "react/jsx-runtime";
28
- import { Fragment as _Fragment } from "react/jsx-runtime";
29
- function from12hTo24h(hours, isPm) {
30
- return isPm ? (hours % 12 + 12) % 24 : hours % 12;
31
- }
32
-
33
- /**
34
- * Creates an InputControl reducer used to pad an input so that it is always a
35
- * given width. For example, the hours and minutes inputs are padded to 2 so
36
- * that '4' appears as '04'.
37
- *
38
- * @param pad How many digits the value should be.
39
- */
40
- function buildPadInputStateReducer(pad) {
41
- return (state, action) => {
42
- const nextState = {
43
- ...state
44
- };
45
- if (action.type === COMMIT || action.type === PRESS_UP || action.type === PRESS_DOWN) {
46
- if (nextState.value !== undefined) {
47
- nextState.value = nextState.value.toString().padStart(pad, '0');
48
- }
49
- }
50
- return nextState;
51
- };
52
- }
26
+ const VALID_DATE_ORDERS = ['dmy', 'mdy', 'ymd'];
53
27
 
54
28
  /**
55
29
  * TimePicker is a React component that renders a clock for time selection.
@@ -74,7 +48,8 @@ function buildPadInputStateReducer(pad) {
74
48
  export function TimePicker({
75
49
  is12Hour,
76
50
  currentTime,
77
- onChange
51
+ onChange,
52
+ dateOrder: dateOrderProp
78
53
  }) {
79
54
  const [date, setDate] = useState(() =>
80
55
  // Truncate the date at the minutes, see: #15495.
@@ -90,41 +65,25 @@ export function TimePicker({
90
65
  month,
91
66
  year,
92
67
  minutes,
93
- hours,
94
- am
68
+ hours
95
69
  } = useMemo(() => ({
96
70
  day: format(date, 'dd'),
97
71
  month: format(date, 'MM'),
98
72
  year: format(date, 'yyyy'),
99
73
  minutes: format(date, 'mm'),
100
- hours: format(date, is12Hour ? 'hh' : 'HH'),
74
+ hours: format(date, 'HH'),
101
75
  am: format(date, 'a')
102
- }), [date, is12Hour]);
76
+ }), [date]);
103
77
  const buildNumberControlChangeCallback = method => {
104
78
  const callback = (value, {
105
79
  event
106
80
  }) => {
107
- var _ownerDocument$defaul;
108
- // `instanceof` checks need to get the instance definition from the
109
- // corresponding window object — therefore, the following logic makes
110
- // the component work correctly even when rendered inside an iframe.
111
- const HTMLInputElementInstance = (_ownerDocument$defaul = event.target?.ownerDocument.defaultView?.HTMLInputElement) !== null && _ownerDocument$defaul !== void 0 ? _ownerDocument$defaul : HTMLInputElement;
112
- if (!(event.target instanceof HTMLInputElementInstance)) {
113
- return;
114
- }
115
- if (!event.target.validity.valid) {
81
+ if (!validateInputElementTarget(event)) {
116
82
  return;
117
83
  }
118
84
 
119
85
  // We can safely assume value is a number if target is valid.
120
- let numberValue = Number(value);
121
-
122
- // If the 12-hour format is being used and the 'PM' period is
123
- // selected, then the incoming value (which ranges 1-12) should be
124
- // increased by 12 to match the expected 24-hour format.
125
- if (method === 'hours' && is12Hour) {
126
- numberValue = from12hTo24h(numberValue, am === 'PM');
127
- }
86
+ const numberValue = Number(value);
128
87
  const newDate = set(date, {
129
88
  [method]: numberValue
130
89
  });
@@ -133,17 +92,17 @@ export function TimePicker({
133
92
  };
134
93
  return callback;
135
94
  };
136
- function buildAmPmChangeCallback(value) {
137
- return () => {
138
- if (am === value) {
139
- return;
140
- }
141
- const parsedHours = parseInt(hours, 10);
142
- const newDate = setHours(date, from12hTo24h(parsedHours, value === 'PM'));
143
- setDate(newDate);
144
- onChange?.(format(newDate, TIMEZONELESS_FORMAT));
145
- };
146
- }
95
+ const onTimeInputChangeCallback = ({
96
+ hours: newHours,
97
+ minutes: newMinutes
98
+ }) => {
99
+ const newDate = set(date, {
100
+ hours: newHours,
101
+ minutes: newMinutes
102
+ });
103
+ setDate(newDate);
104
+ onChange?.(format(newDate, TIMEZONELESS_FORMAT));
105
+ };
147
106
  const dayField = /*#__PURE__*/_jsx(DayInput, {
148
107
  className: "components-datetime__time-field components-datetime__time-field-day" // Unused, for backwards compatibility.
149
108
  ,
@@ -160,7 +119,7 @@ export function TimePicker({
160
119
  isDragEnabled: false,
161
120
  isShiftStepEnabled: false,
162
121
  onChange: buildNumberControlChangeCallback('date')
163
- });
122
+ }, "day");
164
123
  const monthField = /*#__PURE__*/_jsx(MonthSelectWrapper, {
165
124
  children: /*#__PURE__*/_jsx(SelectControl, {
166
125
  className: "components-datetime__time-field components-datetime__time-field-month" // Unused, for backwards compatibility.
@@ -213,6 +172,38 @@ export function TimePicker({
213
172
  onChange?.(format(newDate, TIMEZONELESS_FORMAT));
214
173
  }
215
174
  })
175
+ }, "month");
176
+ const yearField = /*#__PURE__*/_jsx(YearInput, {
177
+ className: "components-datetime__time-field components-datetime__time-field-year" // Unused, for backwards compatibility.
178
+ ,
179
+ label: __('Year'),
180
+ hideLabelFromVision: true,
181
+ __next40pxDefaultSize: true,
182
+ value: year,
183
+ step: 1,
184
+ min: 1,
185
+ max: 9999,
186
+ required: true,
187
+ spinControls: "none",
188
+ isPressEnterToChange: true,
189
+ isDragEnabled: false,
190
+ isShiftStepEnabled: false,
191
+ onChange: buildNumberControlChangeCallback('year'),
192
+ __unstableStateReducer: buildPadInputStateReducer(4)
193
+ }, "year");
194
+ const defaultDateOrder = is12Hour ? 'mdy' : 'dmy';
195
+ const dateOrder = dateOrderProp && VALID_DATE_ORDERS.includes(dateOrderProp) ? dateOrderProp : defaultDateOrder;
196
+ const fields = dateOrder.split('').map(field => {
197
+ switch (field) {
198
+ case 'd':
199
+ return dayField;
200
+ case 'm':
201
+ return monthField;
202
+ case 'y':
203
+ return yearField;
204
+ default:
205
+ return null;
206
+ }
216
207
  });
217
208
  return /*#__PURE__*/_jsxs(Wrapper, {
218
209
  className: "components-datetime__time" // Unused, for backwards compatibility.
@@ -226,67 +217,13 @@ export function TimePicker({
226
217
  }), /*#__PURE__*/_jsxs(HStack, {
227
218
  className: "components-datetime__time-wrapper" // Unused, for backwards compatibility.
228
219
  ,
229
- children: [/*#__PURE__*/_jsxs(TimeWrapper, {
230
- className: "components-datetime__time-field components-datetime__time-field-time" // Unused, for backwards compatibility.
231
- ,
232
- children: [/*#__PURE__*/_jsx(HoursInput, {
233
- className: "components-datetime__time-field-hours-input" // Unused, for backwards compatibility.
234
- ,
235
- label: __('Hours'),
236
- hideLabelFromVision: true,
237
- __next40pxDefaultSize: true,
238
- value: hours,
239
- step: 1,
240
- min: is12Hour ? 1 : 0,
241
- max: is12Hour ? 12 : 23,
242
- required: true,
243
- spinControls: "none",
244
- isPressEnterToChange: true,
245
- isDragEnabled: false,
246
- isShiftStepEnabled: false,
247
- onChange: buildNumberControlChangeCallback('hours'),
248
- __unstableStateReducer: buildPadInputStateReducer(2)
249
- }), /*#__PURE__*/_jsx(TimeSeparator, {
250
- className: "components-datetime__time-separator" // Unused, for backwards compatibility.
251
- ,
252
- "aria-hidden": "true",
253
- children: ":"
254
- }), /*#__PURE__*/_jsx(MinutesInput, {
255
- className: "components-datetime__time-field-minutes-input" // Unused, for backwards compatibility.
256
- ,
257
- label: __('Minutes'),
258
- hideLabelFromVision: true,
259
- __next40pxDefaultSize: true,
260
- value: minutes,
261
- step: 1,
262
- min: 0,
263
- max: 59,
264
- required: true,
265
- spinControls: "none",
266
- isPressEnterToChange: true,
267
- isDragEnabled: false,
268
- isShiftStepEnabled: false,
269
- onChange: buildNumberControlChangeCallback('minutes'),
270
- __unstableStateReducer: buildPadInputStateReducer(2)
271
- })]
272
- }), is12Hour && /*#__PURE__*/_jsxs(ButtonGroup, {
273
- className: "components-datetime__time-field components-datetime__time-field-am-pm" // Unused, for backwards compatibility.
274
- ,
275
- children: [/*#__PURE__*/_jsx(Button, {
276
- className: "components-datetime__time-am-button" // Unused, for backwards compatibility.
277
- ,
278
- variant: am === 'AM' ? 'primary' : 'secondary',
279
- __next40pxDefaultSize: true,
280
- onClick: buildAmPmChangeCallback('AM'),
281
- children: __('AM')
282
- }), /*#__PURE__*/_jsx(Button, {
283
- className: "components-datetime__time-pm-button" // Unused, for backwards compatibility.
284
- ,
285
- variant: am === 'PM' ? 'primary' : 'secondary',
286
- __next40pxDefaultSize: true,
287
- onClick: buildAmPmChangeCallback('PM'),
288
- children: __('PM')
289
- })]
220
+ children: [/*#__PURE__*/_jsx(TimeInput, {
221
+ value: {
222
+ hours: Number(hours),
223
+ minutes: Number(minutes)
224
+ },
225
+ is12Hour: is12Hour,
226
+ onChange: onTimeInputChangeCallback
290
227
  }), /*#__PURE__*/_jsx(Spacer, {}), /*#__PURE__*/_jsx(TimeZone, {})]
291
228
  })]
292
229
  }), /*#__PURE__*/_jsxs(Fieldset, {
@@ -295,31 +232,10 @@ export function TimePicker({
295
232
  className: "components-datetime__time-legend" // Unused, for backwards compatibility.
296
233
  ,
297
234
  children: __('Date')
298
- }), /*#__PURE__*/_jsxs(HStack, {
235
+ }), /*#__PURE__*/_jsx(HStack, {
299
236
  className: "components-datetime__time-wrapper" // Unused, for backwards compatibility.
300
237
  ,
301
- children: [is12Hour ? /*#__PURE__*/_jsxs(_Fragment, {
302
- children: [monthField, dayField]
303
- }) : /*#__PURE__*/_jsxs(_Fragment, {
304
- children: [dayField, monthField]
305
- }), /*#__PURE__*/_jsx(YearInput, {
306
- className: "components-datetime__time-field components-datetime__time-field-year" // Unused, for backwards compatibility.
307
- ,
308
- label: __('Year'),
309
- hideLabelFromVision: true,
310
- __next40pxDefaultSize: true,
311
- value: year,
312
- step: 1,
313
- min: 1,
314
- max: 9999,
315
- required: true,
316
- spinControls: "none",
317
- isPressEnterToChange: true,
318
- isDragEnabled: false,
319
- isShiftStepEnabled: false,
320
- onChange: buildNumberControlChangeCallback('year'),
321
- __unstableStateReducer: buildPadInputStateReducer(4)
322
- })]
238
+ children: fields
323
239
  })]
324
240
  })]
325
241
  });
@@ -1 +1 @@
1
- {"version":3,"names":["startOfMinute","format","set","setHours","setMonth","useState","useMemo","useEffect","__","BaseControl","Button","ButtonGroup","SelectControl","TimeZone","Wrapper","Fieldset","HoursInput","TimeSeparator","MinutesInput","MonthSelectWrapper","DayInput","YearInput","TimeWrapper","HStack","Spacer","COMMIT","PRESS_DOWN","PRESS_UP","inputToDate","TIMEZONELESS_FORMAT","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","from12hTo24h","hours","isPm","buildPadInputStateReducer","pad","state","action","nextState","type","value","undefined","toString","padStart","TimePicker","is12Hour","currentTime","onChange","date","setDate","Date","day","month","year","minutes","am","buildNumberControlChangeCallback","method","callback","event","_ownerDocument$defaul","HTMLInputElementInstance","target","ownerDocument","defaultView","HTMLInputElement","validity","valid","numberValue","Number","newDate","buildAmPmChangeCallback","parsedHours","parseInt","dayField","className","label","hideLabelFromVision","__next40pxDefaultSize","step","min","max","required","spinControls","isPressEnterToChange","isDragEnabled","isShiftStepEnabled","monthField","children","__nextHasNoMarginBottom","options","VisualLabel","as","__unstableStateReducer","variant","onClick"],"sources":["@wordpress/components/src/date-time/time/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport { startOfMinute, format, set, setHours, setMonth } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useMemo, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BaseControl from '../../base-control';\nimport Button from '../../button';\nimport ButtonGroup from '../../button-group';\nimport SelectControl from '../../select-control';\nimport TimeZone from './timezone';\nimport type { TimePickerProps } from '../types';\nimport {\n\tWrapper,\n\tFieldset,\n\tHoursInput,\n\tTimeSeparator,\n\tMinutesInput,\n\tMonthSelectWrapper,\n\tDayInput,\n\tYearInput,\n\tTimeWrapper,\n} from './styles';\nimport { HStack } from '../../h-stack';\nimport { Spacer } from '../../spacer';\nimport type { InputChangeCallback } from '../../input-control/types';\nimport type { InputState } from '../../input-control/reducer/state';\nimport type { InputAction } from '../../input-control/reducer/actions';\nimport {\n\tCOMMIT,\n\tPRESS_DOWN,\n\tPRESS_UP,\n} from '../../input-control/reducer/actions';\nimport { inputToDate } from '../utils';\nimport { TIMEZONELESS_FORMAT } from '../constants';\n\nfunction from12hTo24h( hours: number, isPm: boolean ) {\n\treturn isPm ? ( ( hours % 12 ) + 12 ) % 24 : hours % 12;\n}\n\n/**\n * Creates an InputControl reducer used to pad an input so that it is always a\n * given width. For example, the hours and minutes inputs are padded to 2 so\n * that '4' appears as '04'.\n *\n * @param pad How many digits the value should be.\n */\nfunction buildPadInputStateReducer( pad: number ) {\n\treturn ( state: InputState, action: InputAction ) => {\n\t\tconst nextState = { ...state };\n\t\tif (\n\t\t\taction.type === COMMIT ||\n\t\t\taction.type === PRESS_UP ||\n\t\t\taction.type === PRESS_DOWN\n\t\t) {\n\t\t\tif ( nextState.value !== undefined ) {\n\t\t\t\tnextState.value = nextState.value\n\t\t\t\t\t.toString()\n\t\t\t\t\t.padStart( pad, '0' );\n\t\t\t}\n\t\t}\n\t\treturn nextState;\n\t};\n}\n\n/**\n * TimePicker is a React component that renders a clock for time selection.\n *\n * ```jsx\n * import { TimePicker } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyTimePicker = () => {\n * const [ time, setTime ] = useState( new Date() );\n *\n * return (\n * <TimePicker\n * currentTime={ date }\n * onChange={ ( newTime ) => setTime( newTime ) }\n * is12Hour\n * />\n * );\n * };\n * ```\n */\nexport function TimePicker( {\n\tis12Hour,\n\tcurrentTime,\n\tonChange,\n}: TimePickerProps ) {\n\tconst [ date, setDate ] = useState( () =>\n\t\t// Truncate the date at the minutes, see: #15495.\n\t\tcurrentTime ? startOfMinute( inputToDate( currentTime ) ) : new Date()\n\t);\n\n\t// Reset the state when currentTime changed.\n\t// TODO: useEffect() shouldn't be used like this, causes an unnecessary render\n\tuseEffect( () => {\n\t\tsetDate(\n\t\t\tcurrentTime\n\t\t\t\t? startOfMinute( inputToDate( currentTime ) )\n\t\t\t\t: new Date()\n\t\t);\n\t}, [ currentTime ] );\n\n\tconst { day, month, year, minutes, hours, am } = useMemo(\n\t\t() => ( {\n\t\t\tday: format( date, 'dd' ),\n\t\t\tmonth: format( date, 'MM' ),\n\t\t\tyear: format( date, 'yyyy' ),\n\t\t\tminutes: format( date, 'mm' ),\n\t\t\thours: format( date, is12Hour ? 'hh' : 'HH' ),\n\t\t\tam: format( date, 'a' ),\n\t\t} ),\n\t\t[ date, is12Hour ]\n\t);\n\n\tconst buildNumberControlChangeCallback = (\n\t\tmethod: 'hours' | 'minutes' | 'date' | 'year'\n\t) => {\n\t\tconst callback: InputChangeCallback = ( value, { event } ) => {\n\t\t\t// `instanceof` checks need to get the instance definition from the\n\t\t\t// corresponding window object — therefore, the following logic makes\n\t\t\t// the component work correctly even when rendered inside an iframe.\n\t\t\tconst HTMLInputElementInstance =\n\t\t\t\t( event.target as HTMLInputElement )?.ownerDocument.defaultView\n\t\t\t\t\t?.HTMLInputElement ?? HTMLInputElement;\n\n\t\t\tif ( ! ( event.target instanceof HTMLInputElementInstance ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! event.target.validity.valid ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We can safely assume value is a number if target is valid.\n\t\t\tlet numberValue = Number( value );\n\n\t\t\t// If the 12-hour format is being used and the 'PM' period is\n\t\t\t// selected, then the incoming value (which ranges 1-12) should be\n\t\t\t// increased by 12 to match the expected 24-hour format.\n\t\t\tif ( method === 'hours' && is12Hour ) {\n\t\t\t\tnumberValue = from12hTo24h( numberValue, am === 'PM' );\n\t\t\t}\n\n\t\t\tconst newDate = set( date, { [ method ]: numberValue } );\n\t\t\tsetDate( newDate );\n\t\t\tonChange?.( format( newDate, TIMEZONELESS_FORMAT ) );\n\t\t};\n\t\treturn callback;\n\t};\n\n\tfunction buildAmPmChangeCallback( value: 'AM' | 'PM' ) {\n\t\treturn () => {\n\t\t\tif ( am === value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst parsedHours = parseInt( hours, 10 );\n\n\t\t\tconst newDate = setHours(\n\t\t\t\tdate,\n\t\t\t\tfrom12hTo24h( parsedHours, value === 'PM' )\n\t\t\t);\n\t\t\tsetDate( newDate );\n\t\t\tonChange?.( format( newDate, TIMEZONELESS_FORMAT ) );\n\t\t};\n\t}\n\n\tconst dayField = (\n\t\t<DayInput\n\t\t\tclassName=\"components-datetime__time-field components-datetime__time-field-day\" // Unused, for backwards compatibility.\n\t\t\tlabel={ __( 'Day' ) }\n\t\t\thideLabelFromVision\n\t\t\t__next40pxDefaultSize\n\t\t\tvalue={ day }\n\t\t\tstep={ 1 }\n\t\t\tmin={ 1 }\n\t\t\tmax={ 31 }\n\t\t\trequired\n\t\t\tspinControls=\"none\"\n\t\t\tisPressEnterToChange\n\t\t\tisDragEnabled={ false }\n\t\t\tisShiftStepEnabled={ false }\n\t\t\tonChange={ buildNumberControlChangeCallback( 'date' ) }\n\t\t/>\n\t);\n\n\tconst monthField = (\n\t\t<MonthSelectWrapper>\n\t\t\t<SelectControl\n\t\t\t\tclassName=\"components-datetime__time-field components-datetime__time-field-month\" // Unused, for backwards compatibility.\n\t\t\t\tlabel={ __( 'Month' ) }\n\t\t\t\thideLabelFromVision\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tvalue={ month }\n\t\t\t\toptions={ [\n\t\t\t\t\t{ value: '01', label: __( 'January' ) },\n\t\t\t\t\t{ value: '02', label: __( 'February' ) },\n\t\t\t\t\t{ value: '03', label: __( 'March' ) },\n\t\t\t\t\t{ value: '04', label: __( 'April' ) },\n\t\t\t\t\t{ value: '05', label: __( 'May' ) },\n\t\t\t\t\t{ value: '06', label: __( 'June' ) },\n\t\t\t\t\t{ value: '07', label: __( 'July' ) },\n\t\t\t\t\t{ value: '08', label: __( 'August' ) },\n\t\t\t\t\t{ value: '09', label: __( 'September' ) },\n\t\t\t\t\t{ value: '10', label: __( 'October' ) },\n\t\t\t\t\t{ value: '11', label: __( 'November' ) },\n\t\t\t\t\t{ value: '12', label: __( 'December' ) },\n\t\t\t\t] }\n\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\tconst newDate = setMonth( date, Number( value ) - 1 );\n\t\t\t\t\tsetDate( newDate );\n\t\t\t\t\tonChange?.( format( newDate, TIMEZONELESS_FORMAT ) );\n\t\t\t\t} }\n\t\t\t/>\n\t\t</MonthSelectWrapper>\n\t);\n\n\treturn (\n\t\t<Wrapper\n\t\t\tclassName=\"components-datetime__time\" // Unused, for backwards compatibility.\n\t\t>\n\t\t\t<Fieldset>\n\t\t\t\t<BaseControl.VisualLabel\n\t\t\t\t\tas=\"legend\"\n\t\t\t\t\tclassName=\"components-datetime__time-legend\" // Unused, for backwards compatibility.\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Time' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t<HStack\n\t\t\t\t\tclassName=\"components-datetime__time-wrapper\" // Unused, for backwards compatibility.\n\t\t\t\t>\n\t\t\t\t\t<TimeWrapper\n\t\t\t\t\t\tclassName=\"components-datetime__time-field components-datetime__time-field-time\" // Unused, for backwards compatibility.\n\t\t\t\t\t>\n\t\t\t\t\t\t<HoursInput\n\t\t\t\t\t\t\tclassName=\"components-datetime__time-field-hours-input\" // Unused, for backwards compatibility.\n\t\t\t\t\t\t\tlabel={ __( 'Hours' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalue={ hours }\n\t\t\t\t\t\t\tstep={ 1 }\n\t\t\t\t\t\t\tmin={ is12Hour ? 1 : 0 }\n\t\t\t\t\t\t\tmax={ is12Hour ? 12 : 23 }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\tspinControls=\"none\"\n\t\t\t\t\t\t\tisPressEnterToChange\n\t\t\t\t\t\t\tisDragEnabled={ false }\n\t\t\t\t\t\t\tisShiftStepEnabled={ false }\n\t\t\t\t\t\t\tonChange={ buildNumberControlChangeCallback(\n\t\t\t\t\t\t\t\t'hours'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t__unstableStateReducer={ buildPadInputStateReducer(\n\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<TimeSeparator\n\t\t\t\t\t\t\tclassName=\"components-datetime__time-separator\" // Unused, for backwards compatibility.\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t</TimeSeparator>\n\t\t\t\t\t\t<MinutesInput\n\t\t\t\t\t\t\tclassName=\"components-datetime__time-field-minutes-input\" // Unused, for backwards compatibility.\n\t\t\t\t\t\t\tlabel={ __( 'Minutes' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalue={ minutes }\n\t\t\t\t\t\t\tstep={ 1 }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tmax={ 59 }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\tspinControls=\"none\"\n\t\t\t\t\t\t\tisPressEnterToChange\n\t\t\t\t\t\t\tisDragEnabled={ false }\n\t\t\t\t\t\t\tisShiftStepEnabled={ false }\n\t\t\t\t\t\t\tonChange={ buildNumberControlChangeCallback(\n\t\t\t\t\t\t\t\t'minutes'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t__unstableStateReducer={ buildPadInputStateReducer(\n\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TimeWrapper>\n\t\t\t\t\t{ is12Hour && (\n\t\t\t\t\t\t<ButtonGroup\n\t\t\t\t\t\t\tclassName=\"components-datetime__time-field components-datetime__time-field-am-pm\" // Unused, for backwards compatibility.\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"components-datetime__time-am-button\" // Unused, for backwards compatibility.\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tam === 'AM' ? 'primary' : 'secondary'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tonClick={ buildAmPmChangeCallback( 'AM' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'AM' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"components-datetime__time-pm-button\" // Unused, for backwards compatibility.\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tam === 'PM' ? 'primary' : 'secondary'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tonClick={ buildAmPmChangeCallback( 'PM' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'PM' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</ButtonGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t<Spacer />\n\t\t\t\t\t<TimeZone />\n\t\t\t\t</HStack>\n\t\t\t</Fieldset>\n\t\t\t<Fieldset>\n\t\t\t\t<BaseControl.VisualLabel\n\t\t\t\t\tas=\"legend\"\n\t\t\t\t\tclassName=\"components-datetime__time-legend\" // Unused, for backwards compatibility.\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Date' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t<HStack\n\t\t\t\t\tclassName=\"components-datetime__time-wrapper\" // Unused, for backwards compatibility.\n\t\t\t\t>\n\t\t\t\t\t{ is12Hour ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ monthField }\n\t\t\t\t\t\t\t{ dayField }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ dayField }\n\t\t\t\t\t\t\t{ monthField }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t<YearInput\n\t\t\t\t\t\tclassName=\"components-datetime__time-field components-datetime__time-field-year\" // Unused, for backwards compatibility.\n\t\t\t\t\t\tlabel={ __( 'Year' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvalue={ year }\n\t\t\t\t\t\tstep={ 1 }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\tmax={ 9999 }\n\t\t\t\t\t\trequired\n\t\t\t\t\t\tspinControls=\"none\"\n\t\t\t\t\t\tisPressEnterToChange\n\t\t\t\t\t\tisDragEnabled={ false }\n\t\t\t\t\t\tisShiftStepEnabled={ false }\n\t\t\t\t\t\tonChange={ buildNumberControlChangeCallback( 'year' ) }\n\t\t\t\t\t\t__unstableStateReducer={ buildPadInputStateReducer(\n\t\t\t\t\t\t\t4\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t</Fieldset>\n\t\t</Wrapper>\n\t);\n}\n\nexport default TimePicker;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["startOfMinute","format","set","setMonth","useState","useMemo","useEffect","__","BaseControl","SelectControl","TimeZone","Wrapper","Fieldset","MonthSelectWrapper","DayInput","YearInput","HStack","Spacer","inputToDate","buildPadInputStateReducer","validateInputElementTarget","TIMEZONELESS_FORMAT","TimeInput","jsx","_jsx","jsxs","_jsxs","VALID_DATE_ORDERS","TimePicker","is12Hour","currentTime","onChange","dateOrder","dateOrderProp","date","setDate","Date","day","month","year","minutes","hours","am","buildNumberControlChangeCallback","method","callback","value","event","numberValue","Number","newDate","onTimeInputChangeCallback","newHours","newMinutes","dayField","className","label","hideLabelFromVision","__next40pxDefaultSize","step","min","max","required","spinControls","isPressEnterToChange","isDragEnabled","isShiftStepEnabled","monthField","children","__nextHasNoMarginBottom","options","yearField","__unstableStateReducer","defaultDateOrder","includes","fields","split","map","field","VisualLabel","as"],"sources":["@wordpress/components/src/date-time/time/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport { startOfMinute, format, set, setMonth } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useMemo, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BaseControl from '../../base-control';\nimport SelectControl from '../../select-control';\nimport TimeZone from './timezone';\nimport type { TimeInputValue, TimePickerProps } from '../types';\nimport {\n\tWrapper,\n\tFieldset,\n\tMonthSelectWrapper,\n\tDayInput,\n\tYearInput,\n} from './styles';\nimport { HStack } from '../../h-stack';\nimport { Spacer } from '../../spacer';\nimport type { InputChangeCallback } from '../../input-control/types';\nimport {\n\tinputToDate,\n\tbuildPadInputStateReducer,\n\tvalidateInputElementTarget,\n} from '../utils';\nimport { TIMEZONELESS_FORMAT } from '../constants';\nimport { TimeInput } from '../time-input';\n\nconst VALID_DATE_ORDERS = [ 'dmy', 'mdy', 'ymd' ];\n\n/**\n * TimePicker is a React component that renders a clock for time selection.\n *\n * ```jsx\n * import { TimePicker } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyTimePicker = () => {\n * const [ time, setTime ] = useState( new Date() );\n *\n * return (\n * <TimePicker\n * currentTime={ date }\n * onChange={ ( newTime ) => setTime( newTime ) }\n * is12Hour\n * />\n * );\n * };\n * ```\n */\nexport function TimePicker( {\n\tis12Hour,\n\tcurrentTime,\n\tonChange,\n\tdateOrder: dateOrderProp,\n}: TimePickerProps ) {\n\tconst [ date, setDate ] = useState( () =>\n\t\t// Truncate the date at the minutes, see: #15495.\n\t\tcurrentTime ? startOfMinute( inputToDate( currentTime ) ) : new Date()\n\t);\n\n\t// Reset the state when currentTime changed.\n\t// TODO: useEffect() shouldn't be used like this, causes an unnecessary render\n\tuseEffect( () => {\n\t\tsetDate(\n\t\t\tcurrentTime\n\t\t\t\t? startOfMinute( inputToDate( currentTime ) )\n\t\t\t\t: new Date()\n\t\t);\n\t}, [ currentTime ] );\n\n\tconst { day, month, year, minutes, hours } = useMemo(\n\t\t() => ( {\n\t\t\tday: format( date, 'dd' ),\n\t\t\tmonth: format( date, 'MM' ),\n\t\t\tyear: format( date, 'yyyy' ),\n\t\t\tminutes: format( date, 'mm' ),\n\t\t\thours: format( date, 'HH' ),\n\t\t\tam: format( date, 'a' ),\n\t\t} ),\n\t\t[ date ]\n\t);\n\n\tconst buildNumberControlChangeCallback = ( method: 'date' | 'year' ) => {\n\t\tconst callback: InputChangeCallback = ( value, { event } ) => {\n\t\t\tif ( ! validateInputElementTarget( event ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We can safely assume value is a number if target is valid.\n\t\t\tconst numberValue = Number( value );\n\n\t\t\tconst newDate = set( date, { [ method ]: numberValue } );\n\t\t\tsetDate( newDate );\n\t\t\tonChange?.( format( newDate, TIMEZONELESS_FORMAT ) );\n\t\t};\n\t\treturn callback;\n\t};\n\n\tconst onTimeInputChangeCallback = ( {\n\t\thours: newHours,\n\t\tminutes: newMinutes,\n\t}: TimeInputValue ) => {\n\t\tconst newDate = set( date, {\n\t\t\thours: newHours,\n\t\t\tminutes: newMinutes,\n\t\t} );\n\t\tsetDate( newDate );\n\t\tonChange?.( format( newDate, TIMEZONELESS_FORMAT ) );\n\t};\n\n\tconst dayField = (\n\t\t<DayInput\n\t\t\tkey=\"day\"\n\t\t\tclassName=\"components-datetime__time-field components-datetime__time-field-day\" // Unused, for backwards compatibility.\n\t\t\tlabel={ __( 'Day' ) }\n\t\t\thideLabelFromVision\n\t\t\t__next40pxDefaultSize\n\t\t\tvalue={ day }\n\t\t\tstep={ 1 }\n\t\t\tmin={ 1 }\n\t\t\tmax={ 31 }\n\t\t\trequired\n\t\t\tspinControls=\"none\"\n\t\t\tisPressEnterToChange\n\t\t\tisDragEnabled={ false }\n\t\t\tisShiftStepEnabled={ false }\n\t\t\tonChange={ buildNumberControlChangeCallback( 'date' ) }\n\t\t/>\n\t);\n\n\tconst monthField = (\n\t\t<MonthSelectWrapper key=\"month\">\n\t\t\t<SelectControl\n\t\t\t\tclassName=\"components-datetime__time-field components-datetime__time-field-month\" // Unused, for backwards compatibility.\n\t\t\t\tlabel={ __( 'Month' ) }\n\t\t\t\thideLabelFromVision\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tvalue={ month }\n\t\t\t\toptions={ [\n\t\t\t\t\t{ value: '01', label: __( 'January' ) },\n\t\t\t\t\t{ value: '02', label: __( 'February' ) },\n\t\t\t\t\t{ value: '03', label: __( 'March' ) },\n\t\t\t\t\t{ value: '04', label: __( 'April' ) },\n\t\t\t\t\t{ value: '05', label: __( 'May' ) },\n\t\t\t\t\t{ value: '06', label: __( 'June' ) },\n\t\t\t\t\t{ value: '07', label: __( 'July' ) },\n\t\t\t\t\t{ value: '08', label: __( 'August' ) },\n\t\t\t\t\t{ value: '09', label: __( 'September' ) },\n\t\t\t\t\t{ value: '10', label: __( 'October' ) },\n\t\t\t\t\t{ value: '11', label: __( 'November' ) },\n\t\t\t\t\t{ value: '12', label: __( 'December' ) },\n\t\t\t\t] }\n\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\tconst newDate = setMonth( date, Number( value ) - 1 );\n\t\t\t\t\tsetDate( newDate );\n\t\t\t\t\tonChange?.( format( newDate, TIMEZONELESS_FORMAT ) );\n\t\t\t\t} }\n\t\t\t/>\n\t\t</MonthSelectWrapper>\n\t);\n\n\tconst yearField = (\n\t\t<YearInput\n\t\t\tkey=\"year\"\n\t\t\tclassName=\"components-datetime__time-field components-datetime__time-field-year\" // Unused, for backwards compatibility.\n\t\t\tlabel={ __( 'Year' ) }\n\t\t\thideLabelFromVision\n\t\t\t__next40pxDefaultSize\n\t\t\tvalue={ year }\n\t\t\tstep={ 1 }\n\t\t\tmin={ 1 }\n\t\t\tmax={ 9999 }\n\t\t\trequired\n\t\t\tspinControls=\"none\"\n\t\t\tisPressEnterToChange\n\t\t\tisDragEnabled={ false }\n\t\t\tisShiftStepEnabled={ false }\n\t\t\tonChange={ buildNumberControlChangeCallback( 'year' ) }\n\t\t\t__unstableStateReducer={ buildPadInputStateReducer( 4 ) }\n\t\t/>\n\t);\n\n\tconst defaultDateOrder = is12Hour ? 'mdy' : 'dmy';\n\tconst dateOrder =\n\t\tdateOrderProp && VALID_DATE_ORDERS.includes( dateOrderProp )\n\t\t\t? dateOrderProp\n\t\t\t: defaultDateOrder;\n\n\tconst fields = dateOrder.split( '' ).map( ( field ) => {\n\t\tswitch ( field ) {\n\t\t\tcase 'd':\n\t\t\t\treturn dayField;\n\t\t\tcase 'm':\n\t\t\t\treturn monthField;\n\t\t\tcase 'y':\n\t\t\t\treturn yearField;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t} );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tclassName=\"components-datetime__time\" // Unused, for backwards compatibility.\n\t\t>\n\t\t\t<Fieldset>\n\t\t\t\t<BaseControl.VisualLabel\n\t\t\t\t\tas=\"legend\"\n\t\t\t\t\tclassName=\"components-datetime__time-legend\" // Unused, for backwards compatibility.\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Time' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t<HStack\n\t\t\t\t\tclassName=\"components-datetime__time-wrapper\" // Unused, for backwards compatibility.\n\t\t\t\t>\n\t\t\t\t\t<TimeInput\n\t\t\t\t\t\tvalue={ {\n\t\t\t\t\t\t\thours: Number( hours ),\n\t\t\t\t\t\t\tminutes: Number( minutes ),\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tis12Hour={ is12Hour }\n\t\t\t\t\t\tonChange={ onTimeInputChangeCallback }\n\t\t\t\t\t/>\n\t\t\t\t\t<Spacer />\n\t\t\t\t\t<TimeZone />\n\t\t\t\t</HStack>\n\t\t\t</Fieldset>\n\t\t\t<Fieldset>\n\t\t\t\t<BaseControl.VisualLabel\n\t\t\t\t\tas=\"legend\"\n\t\t\t\t\tclassName=\"components-datetime__time-legend\" // Unused, for backwards compatibility.\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Date' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t<HStack\n\t\t\t\t\tclassName=\"components-datetime__time-wrapper\" // Unused, for backwards compatibility.\n\t\t\t\t>\n\t\t\t\t\t{ fields }\n\t\t\t\t</HStack>\n\t\t\t</Fieldset>\n\t\t</Wrapper>\n\t);\n}\n\nexport default TimePicker;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { __ } from '@wordpress/i18n';
10
+ import { Fragment } from '@wordpress/element';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import { TimeWrapper, TimeSeparator, HoursInput, MinutesInput, Fieldset } from '../time/styles';
16
+ import { HStack } from '../../h-stack';
17
+ import Button from '../../button';
18
+ import ButtonGroup from '../../button-group';
19
+ import { from12hTo24h, from24hTo12h, buildPadInputStateReducer, validateInputElementTarget } from '../utils';
20
+ import { useControlledValue } from '../../utils';
21
+ import BaseControl from '../../base-control';
22
+ import { jsx as _jsx } from "react/jsx-runtime";
23
+ import { jsxs as _jsxs } from "react/jsx-runtime";
24
+ export function TimeInput({
25
+ value: valueProp,
26
+ defaultValue,
27
+ is12Hour,
28
+ label,
29
+ minutesProps,
30
+ onChange
31
+ }) {
32
+ const [value = {
33
+ hours: new Date().getHours(),
34
+ minutes: new Date().getMinutes()
35
+ }, setValue] = useControlledValue({
36
+ value: valueProp,
37
+ onChange,
38
+ defaultValue
39
+ });
40
+ const dayPeriod = parseDayPeriod(value.hours);
41
+ const hours12Format = from24hTo12h(value.hours);
42
+ const buildNumberControlChangeCallback = method => {
43
+ return (_value, {
44
+ event
45
+ }) => {
46
+ if (!validateInputElementTarget(event)) {
47
+ return;
48
+ }
49
+
50
+ // We can safely assume value is a number if target is valid.
51
+ const numberValue = Number(_value);
52
+ setValue({
53
+ ...value,
54
+ [method]: method === 'hours' && is12Hour ? from12hTo24h(numberValue, dayPeriod === 'PM') : numberValue
55
+ });
56
+ };
57
+ };
58
+ const buildAmPmChangeCallback = _value => {
59
+ return () => {
60
+ if (dayPeriod === _value) {
61
+ return;
62
+ }
63
+ setValue({
64
+ ...value,
65
+ hours: from12hTo24h(hours12Format, _value === 'PM')
66
+ });
67
+ };
68
+ };
69
+ function parseDayPeriod(_hours) {
70
+ return _hours < 12 ? 'AM' : 'PM';
71
+ }
72
+ const Wrapper = label ? Fieldset : Fragment;
73
+ return /*#__PURE__*/_jsxs(Wrapper, {
74
+ children: [label && /*#__PURE__*/_jsx(BaseControl.VisualLabel, {
75
+ as: "legend",
76
+ children: label
77
+ }), /*#__PURE__*/_jsxs(HStack, {
78
+ alignment: "left",
79
+ expanded: false,
80
+ children: [/*#__PURE__*/_jsxs(TimeWrapper, {
81
+ className: "components-datetime__time-field components-datetime__time-field-time" // Unused, for backwards compatibility.
82
+ ,
83
+ children: [/*#__PURE__*/_jsx(HoursInput, {
84
+ className: "components-datetime__time-field-hours-input" // Unused, for backwards compatibility.
85
+ ,
86
+ label: __('Hours'),
87
+ hideLabelFromVision: true,
88
+ __next40pxDefaultSize: true,
89
+ value: String(is12Hour ? hours12Format : value.hours).padStart(2, '0'),
90
+ step: 1,
91
+ min: is12Hour ? 1 : 0,
92
+ max: is12Hour ? 12 : 23,
93
+ required: true,
94
+ spinControls: "none",
95
+ isPressEnterToChange: true,
96
+ isDragEnabled: false,
97
+ isShiftStepEnabled: false,
98
+ onChange: buildNumberControlChangeCallback('hours'),
99
+ __unstableStateReducer: buildPadInputStateReducer(2)
100
+ }), /*#__PURE__*/_jsx(TimeSeparator, {
101
+ className: "components-datetime__time-separator" // Unused, for backwards compatibility.
102
+ ,
103
+ "aria-hidden": "true",
104
+ children: ":"
105
+ }), /*#__PURE__*/_jsx(MinutesInput, {
106
+ className: clsx('components-datetime__time-field-minutes-input',
107
+ // Unused, for backwards compatibility.
108
+ minutesProps?.className),
109
+ label: __('Minutes'),
110
+ hideLabelFromVision: true,
111
+ __next40pxDefaultSize: true,
112
+ value: String(value.minutes).padStart(2, '0'),
113
+ step: 1,
114
+ min: 0,
115
+ max: 59,
116
+ required: true,
117
+ spinControls: "none",
118
+ isPressEnterToChange: true,
119
+ isDragEnabled: false,
120
+ isShiftStepEnabled: false,
121
+ onChange: (...args) => {
122
+ buildNumberControlChangeCallback('minutes')(...args);
123
+ minutesProps?.onChange?.(...args);
124
+ },
125
+ __unstableStateReducer: buildPadInputStateReducer(2),
126
+ ...minutesProps
127
+ })]
128
+ }), is12Hour && /*#__PURE__*/_jsxs(ButtonGroup, {
129
+ className: "components-datetime__time-field components-datetime__time-field-am-pm" // Unused, for backwards compatibility.
130
+ ,
131
+ children: [/*#__PURE__*/_jsx(Button, {
132
+ className: "components-datetime__time-am-button" // Unused, for backwards compatibility.
133
+ ,
134
+ variant: dayPeriod === 'AM' ? 'primary' : 'secondary',
135
+ __next40pxDefaultSize: true,
136
+ onClick: buildAmPmChangeCallback('AM'),
137
+ children: __('AM')
138
+ }), /*#__PURE__*/_jsx(Button, {
139
+ className: "components-datetime__time-pm-button" // Unused, for backwards compatibility.
140
+ ,
141
+ variant: dayPeriod === 'PM' ? 'primary' : 'secondary',
142
+ __next40pxDefaultSize: true,
143
+ onClick: buildAmPmChangeCallback('PM'),
144
+ children: __('PM')
145
+ })]
146
+ })]
147
+ })]
148
+ });
149
+ }
150
+ export default TimeInput;
151
+ //# sourceMappingURL=index.js.map