@mezzanine-ui/react 0.16.0 → 1.0.0-alpha.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 (454) hide show
  1. package/Accordion/AccordionControlContext.js +1 -0
  2. package/Accordion/AccordionDetails.js +1 -0
  3. package/Accordion/AccordionSummary.js +10 -10
  4. package/Accordion/index.d.ts +6 -3
  5. package/Alert/index.d.ts +3 -2
  6. package/AlertBanner/AlertBanner.d.ts +93 -0
  7. package/AlertBanner/AlertBanner.js +154 -0
  8. package/AlertBanner/index.d.ts +2 -0
  9. package/AlertBanner/index.js +1 -0
  10. package/Anchor/Anchor.js +1 -1
  11. package/Anchor/index.d.ts +2 -1
  12. package/AppBar/index.d.ts +8 -4
  13. package/{Overlay/Overlay.d.ts → Backdrop/Backdrop.d.ts} +12 -16
  14. package/Backdrop/Backdrop.js +40 -0
  15. package/Backdrop/index.d.ts +2 -0
  16. package/Backdrop/index.js +1 -0
  17. package/Badge/Badge.d.ts +20 -14
  18. package/Badge/Badge.js +14 -16
  19. package/Badge/BadgeContainer.d.ts +1 -1
  20. package/Badge/BadgeContainer.js +1 -1
  21. package/Badge/index.d.ts +3 -2
  22. package/Badge/typings.d.ts +48 -0
  23. package/Breadcrumb/Breadcrumb.d.ts +6 -0
  24. package/Breadcrumb/Breadcrumb.js +25 -0
  25. package/Breadcrumb/BreadcrumbItem.d.ts +4 -0
  26. package/Breadcrumb/BreadcrumbItem.js +45 -0
  27. package/Breadcrumb/index.d.ts +2 -0
  28. package/Breadcrumb/index.js +1 -0
  29. package/Breadcrumb/typings.d.ts +70 -0
  30. package/Button/Button.js +24 -19
  31. package/Button/ButtonGroup.d.ts +6 -28
  32. package/Button/ButtonGroup.js +7 -16
  33. package/Button/index.d.ts +4 -10
  34. package/Button/index.js +2 -3
  35. package/Button/typings.d.ts +11 -26
  36. package/Calendar/Calendar.d.ts +31 -2
  37. package/Calendar/Calendar.js +74 -19
  38. package/Calendar/CalendarCell.d.ts +4 -0
  39. package/Calendar/CalendarCell.js +3 -3
  40. package/Calendar/CalendarConfigProviderDayjs.d.ts +21 -0
  41. package/Calendar/CalendarConfigProviderDayjs.js +15 -0
  42. package/Calendar/CalendarConfigProviderLuxon.d.ts +21 -0
  43. package/Calendar/CalendarConfigProviderLuxon.js +15 -0
  44. package/Calendar/CalendarConfigProviderMoment.d.ts +21 -0
  45. package/Calendar/CalendarConfigProviderMoment.js +15 -0
  46. package/Calendar/CalendarContext.d.ts +14 -7
  47. package/Calendar/CalendarContext.js +8 -13
  48. package/Calendar/CalendarControls.d.ts +16 -0
  49. package/Calendar/CalendarControls.js +3 -7
  50. package/Calendar/CalendarDayOfWeek.js +4 -3
  51. package/Calendar/CalendarDays.d.ts +9 -1
  52. package/Calendar/CalendarDays.js +63 -38
  53. package/Calendar/CalendarFooterActions.d.ts +13 -0
  54. package/Calendar/CalendarFooterActions.js +14 -0
  55. package/Calendar/CalendarFooterControl.d.ts +16 -0
  56. package/Calendar/CalendarFooterControl.js +14 -0
  57. package/Calendar/CalendarHalfYears.d.ts +39 -0
  58. package/Calendar/CalendarHalfYears.js +62 -0
  59. package/Calendar/CalendarMonths.js +16 -4
  60. package/Calendar/CalendarQuarters.d.ts +37 -0
  61. package/Calendar/CalendarQuarters.js +64 -0
  62. package/Calendar/CalendarQuickSelect.d.ts +21 -0
  63. package/Calendar/CalendarQuickSelect.js +15 -0
  64. package/Calendar/CalendarWeeks.d.ts +1 -1
  65. package/Calendar/CalendarWeeks.js +89 -44
  66. package/Calendar/CalendarYears.js +13 -3
  67. package/Calendar/RangeCalendar.d.ts +59 -0
  68. package/Calendar/RangeCalendar.js +232 -0
  69. package/Calendar/index.d.ts +33 -10
  70. package/Calendar/index.js +7 -0
  71. package/Calendar/useCalendarControlModifiers.d.ts +4 -4
  72. package/Calendar/useCalendarControlModifiers.js +40 -8
  73. package/Calendar/useCalendarControls.d.ts +2 -0
  74. package/Calendar/useCalendarControls.js +19 -2
  75. package/Calendar/useCalendarModeStack.js +1 -0
  76. package/Calendar/useRangeCalendarControls.d.ts +18 -0
  77. package/Calendar/useRangeCalendarControls.js +115 -0
  78. package/Card/CardActions.js +1 -1
  79. package/Card/index.d.ts +4 -2
  80. package/Checkbox/CheckAll.d.ts +16 -6
  81. package/Checkbox/CheckAll.js +40 -26
  82. package/Checkbox/Checkbox.d.ts +100 -22
  83. package/Checkbox/Checkbox.js +73 -16
  84. package/Checkbox/CheckboxGroup.d.ts +100 -18
  85. package/Checkbox/CheckboxGroup.js +169 -24
  86. package/Checkbox/CheckboxGroupContext.d.ts +0 -2
  87. package/Checkbox/CheckboxGroupContext.js +1 -0
  88. package/Checkbox/index.d.ts +16 -4
  89. package/Checkbox/index.js +6 -2
  90. package/Checkbox/typings.d.ts +37 -0
  91. package/ClearActions/ClearActions.d.ts +41 -0
  92. package/ClearActions/ClearActions.js +23 -0
  93. package/ClearActions/index.d.ts +3 -0
  94. package/ClearActions/index.js +5 -0
  95. package/ConfirmActions/ConfirmActions.d.ts +2 -1
  96. package/ConfirmActions/index.d.ts +2 -1
  97. package/DatePicker/DatePicker.d.ts +12 -1
  98. package/DatePicker/DatePicker.js +41 -9
  99. package/DatePicker/DatePickerCalendar.d.ts +2 -5
  100. package/DatePicker/DatePickerCalendar.js +37 -37
  101. package/DatePicker/index.d.ts +4 -2
  102. package/DateRangePicker/DateRangePicker.d.ts +18 -2
  103. package/DateRangePicker/DateRangePicker.js +143 -100
  104. package/DateRangePicker/DateRangePickerCalendar.d.ts +13 -9
  105. package/DateRangePicker/DateRangePickerCalendar.js +7 -94
  106. package/DateRangePicker/index.d.ts +6 -3
  107. package/DateRangePicker/useDateRangeCalendarControls.js +11 -6
  108. package/DateRangePicker/useDateRangePickerValue.d.ts +38 -15
  109. package/DateRangePicker/useDateRangePickerValue.js +142 -63
  110. package/DateTimePicker/DateTimePicker.d.ts +31 -10
  111. package/DateTimePicker/DateTimePicker.js +179 -94
  112. package/DateTimePicker/index.d.ts +2 -2
  113. package/DateTimePicker/index.js +0 -1
  114. package/Drawer/Drawer.js +2 -2
  115. package/Drawer/index.d.ts +2 -1
  116. package/Dropdown/Dropdown.js +12 -22
  117. package/Dropdown/index.d.ts +2 -1
  118. package/Empty/Empty.d.ts +1 -16
  119. package/Empty/Empty.js +36 -7
  120. package/Empty/icons/EmptyMainInitialDataIcon.d.ts +4 -0
  121. package/Empty/icons/EmptyMainInitialDataIcon.js +9 -0
  122. package/Empty/icons/EmptyMainResultIcon.d.ts +4 -0
  123. package/Empty/icons/EmptyMainResultIcon.js +9 -0
  124. package/Empty/icons/EmptyMainSystemIcon.d.ts +4 -0
  125. package/Empty/icons/EmptyMainSystemIcon.js +9 -0
  126. package/Empty/index.d.ts +2 -1
  127. package/Empty/typings.d.ts +52 -0
  128. package/Form/FormControlContext.js +1 -0
  129. package/Form/FormHintText.d.ts +18 -0
  130. package/Form/FormHintText.js +17 -0
  131. package/Form/FormLabel.js +1 -0
  132. package/Form/index.d.ts +9 -5
  133. package/Form/index.js +1 -1
  134. package/Form/useAutoCompleteValueControl.js +2 -0
  135. package/Form/useCheckboxControlValue.js +0 -1
  136. package/Form/useSelectValueControl.js +2 -0
  137. package/InlineMessage/InlineMessage.d.ts +33 -0
  138. package/InlineMessage/InlineMessage.js +42 -0
  139. package/InlineMessage/InlineMessageGroup.d.ts +24 -0
  140. package/InlineMessage/InlineMessageGroup.js +21 -0
  141. package/InlineMessage/index.d.ts +4 -0
  142. package/InlineMessage/index.js +2 -0
  143. package/Input/ActionButton/ActionButton.d.ts +26 -0
  144. package/Input/ActionButton/ActionButton.js +14 -0
  145. package/Input/ActionButton/index.d.ts +2 -0
  146. package/Input/ActionButton/index.js +1 -0
  147. package/Input/Input.d.ts +147 -42
  148. package/Input/Input.js +195 -27
  149. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.d.ts +31 -0
  150. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.js +18 -0
  151. package/Input/PasswordStrengthIndicator/index.d.ts +2 -0
  152. package/Input/PasswordStrengthIndicator/index.js +1 -0
  153. package/Input/SelectButton/SelectButton.d.ts +20 -0
  154. package/Input/SelectButton/SelectButton.js +21 -0
  155. package/Input/SelectButton/index.d.ts +2 -0
  156. package/Input/SelectButton/index.js +1 -0
  157. package/Input/SpinnerButton/SpinnerButton.d.ts +19 -0
  158. package/Input/SpinnerButton/SpinnerButton.js +14 -0
  159. package/Input/SpinnerButton/index.d.ts +2 -0
  160. package/Input/SpinnerButton/index.js +1 -0
  161. package/Input/index.d.ts +3 -2
  162. package/Menu/Menu.js +1 -0
  163. package/Menu/index.d.ts +8 -4
  164. package/Message/Message.d.ts +6 -4
  165. package/Message/Message.js +86 -9
  166. package/Message/MessageTimerController.d.ts +14 -0
  167. package/Message/MessageTimerController.js +27 -0
  168. package/Message/index.d.ts +3 -2
  169. package/Modal/Modal.js +2 -2
  170. package/Modal/ModalActions.js +1 -0
  171. package/Modal/ModalControl.js +1 -0
  172. package/Modal/ModalHeader.js +1 -0
  173. package/Modal/index.d.ts +10 -5
  174. package/Modal/useModalContainer.d.ts +1 -1
  175. package/Modal/useModalContainer.js +2 -4
  176. package/Navigation/Navigation.js +37 -34
  177. package/Navigation/NavigationContext.js +1 -0
  178. package/Navigation/NavigationItem.js +1 -0
  179. package/Navigation/NavigationSubMenu.js +16 -26
  180. package/Navigation/index.d.ts +8 -4
  181. package/Notification/Notification.js +0 -1
  182. package/Notification/index.d.ts +3 -2
  183. package/Notifier/NotifierManager.d.ts +15 -2
  184. package/Notifier/NotifierManager.js +60 -18
  185. package/Notifier/createNotifier.d.ts +9 -0
  186. package/Notifier/createNotifier.js +3 -2
  187. package/Notifier/typings.d.ts +3 -1
  188. package/OverflowTooltip/OverflowCounterTag.d.ts +12 -0
  189. package/OverflowTooltip/OverflowCounterTag.js +48 -0
  190. package/OverflowTooltip/OverflowTooltip.d.ts +34 -0
  191. package/OverflowTooltip/OverflowTooltip.js +53 -0
  192. package/OverflowTooltip/index.d.ts +2 -0
  193. package/OverflowTooltip/index.js +2 -0
  194. package/PageFooter/PageFooter.d.ts +73 -8
  195. package/PageFooter/PageFooter.js +34 -3
  196. package/PageFooter/index.d.ts +2 -1
  197. package/PageHeader/PageHeader.d.ts +36 -0
  198. package/PageHeader/PageHeader.js +65 -0
  199. package/PageHeader/index.d.ts +2 -0
  200. package/PageHeader/index.js +1 -0
  201. package/PageToolbar/PageToolbar.d.ts +67 -0
  202. package/PageToolbar/PageToolbar.js +114 -0
  203. package/PageToolbar/index.d.ts +2 -0
  204. package/PageToolbar/index.js +1 -0
  205. package/Pagination/Pagination.d.ts +23 -29
  206. package/Pagination/Pagination.js +3 -4
  207. package/Pagination/PaginationItem.d.ts +1 -1
  208. package/Pagination/PaginationItem.js +6 -3
  209. package/Pagination/PaginationJumper.d.ts +7 -9
  210. package/Pagination/PaginationJumper.js +3 -5
  211. package/Pagination/PaginationPageSize.d.ts +8 -11
  212. package/Pagination/PaginationPageSize.js +5 -4
  213. package/Pagination/index.d.ts +8 -4
  214. package/Pagination/usePagination.d.ts +3 -1
  215. package/Pagination/usePagination.js +30 -21
  216. package/Picker/FormattedInput.d.ts +17 -0
  217. package/Picker/FormattedInput.js +74 -0
  218. package/Picker/MaskFormat.d.ts +39 -0
  219. package/Picker/MaskFormat.js +94 -0
  220. package/Picker/PickerTrigger.d.ts +13 -3
  221. package/Picker/PickerTrigger.js +17 -2
  222. package/Picker/PickerTriggerWithSeparator.d.ts +124 -0
  223. package/Picker/PickerTriggerWithSeparator.js +80 -0
  224. package/Picker/RangePickerTrigger.d.ts +55 -4
  225. package/Picker/RangePickerTrigger.js +65 -7
  226. package/Picker/formatUtils.d.ts +34 -0
  227. package/Picker/formatUtils.js +124 -0
  228. package/Picker/index.d.ts +17 -6
  229. package/Picker/index.js +4 -1
  230. package/Picker/useDateInputFormatter.d.ts +52 -0
  231. package/Picker/useDateInputFormatter.js +382 -0
  232. package/Picker/usePickerValue.d.ts +1 -2
  233. package/Picker/usePickerValue.js +8 -13
  234. package/Popconfirm/Popconfirm.js +1 -1
  235. package/Popconfirm/index.d.ts +2 -1
  236. package/Popover/Popover.js +4 -8
  237. package/Popover/index.d.ts +2 -1
  238. package/Popper/Popper.d.ts +15 -10
  239. package/Popper/Popper.js +88 -17
  240. package/Popper/index.d.ts +2 -1
  241. package/Portal/Portal.d.ts +13 -5
  242. package/Portal/Portal.js +25 -10
  243. package/Portal/index.d.ts +4 -1
  244. package/Portal/index.js +1 -0
  245. package/Portal/portalRegistry.d.ts +17 -0
  246. package/Portal/portalRegistry.js +92 -0
  247. package/Progress/Progress.d.ts +23 -30
  248. package/Progress/Progress.js +71 -21
  249. package/Progress/index.d.ts +3 -2
  250. package/Provider/ConfigProvider.d.ts +1 -0
  251. package/Provider/ConfigProvider.js +1 -0
  252. package/Provider/context.js +1 -0
  253. package/Radio/Radio.d.ts +1 -1
  254. package/Radio/Radio.js +2 -1
  255. package/Radio/RadioGroup.d.ts +1 -1
  256. package/Radio/RadioGroup.js +1 -1
  257. package/Radio/RadioGroupContext.js +1 -0
  258. package/Radio/index.d.ts +4 -2
  259. package/ResultState/ResultState.d.ts +52 -0
  260. package/ResultState/ResultState.js +24 -0
  261. package/ResultState/index.d.ts +2 -0
  262. package/ResultState/index.js +1 -0
  263. package/Select/AutoComplete.d.ts +1 -1
  264. package/Select/AutoComplete.js +2 -1
  265. package/Select/Option.js +1 -0
  266. package/Select/Select.d.ts +1 -1
  267. package/Select/Select.js +2 -1
  268. package/Select/SelectControlContext.js +1 -0
  269. package/Select/SelectTrigger.d.ts +1 -87
  270. package/Select/SelectTrigger.js +26 -21
  271. package/Select/SelectTriggerTags.d.ts +1 -1
  272. package/Select/SelectTriggerTags.js +47 -18
  273. package/Select/TreeSelect.d.ts +1 -1
  274. package/Select/TreeSelect.js +2 -1
  275. package/Select/index.d.ts +14 -7
  276. package/Select/typings.d.ts +99 -0
  277. package/Select/useSelectTriggerTags.d.ts +15 -8
  278. package/Select/useSelectTriggerTags.js +83 -44
  279. package/Selection/Selection.d.ts +98 -0
  280. package/Selection/Selection.js +46 -0
  281. package/Selection/index.d.ts +12 -0
  282. package/Selection/index.js +5 -0
  283. package/Skeleton/Skeleton.d.ts +10 -3
  284. package/Skeleton/Skeleton.js +12 -4
  285. package/Skeleton/index.d.ts +2 -1
  286. package/Slider/Slider.d.ts +44 -7
  287. package/Slider/Slider.js +17 -13
  288. package/Slider/index.d.ts +5 -3
  289. package/Spin/Spin.d.ts +39 -0
  290. package/{Loading/Loading.js → Spin/Spin.js} +9 -9
  291. package/Spin/index.d.ts +2 -0
  292. package/Spin/index.js +1 -0
  293. package/Stepper/Step.d.ts +1 -35
  294. package/Stepper/Step.js +43 -8
  295. package/Stepper/Stepper.d.ts +1 -14
  296. package/Stepper/Stepper.js +49 -15
  297. package/Stepper/index.d.ts +5 -2
  298. package/Stepper/index.js +1 -0
  299. package/Stepper/typings.d.ts +77 -0
  300. package/Stepper/useStepDistance.d.ts +10 -0
  301. package/Stepper/useStepDistance.js +81 -0
  302. package/Stepper/useStepper.d.ts +21 -0
  303. package/Stepper/useStepper.js +26 -0
  304. package/Table/Table.js +2 -2
  305. package/Table/TableBody.js +3 -2
  306. package/Table/TableBodyRow.js +1 -0
  307. package/Table/TableContext.js +1 -0
  308. package/Table/TableExpandedTable.js +1 -0
  309. package/Table/TableHeader.js +1 -0
  310. package/Table/editable/TableEditRenderWrapper.js +1 -0
  311. package/Table/expandable/TableExpandable.js +1 -1
  312. package/Table/index.d.ts +7 -4
  313. package/Table/pagination/TablePagination.js +1 -0
  314. package/Table/pagination/useTablePagination.js +1 -0
  315. package/Table/refresh/TableRefresh.js +3 -1
  316. package/Table/rowSelection/TableRowSelection.js +3 -2
  317. package/Table/sorting/TableSortingIcon.js +2 -1
  318. package/Table/sorting/useTableSorting.js +1 -0
  319. package/Table/useTableFetchMore.js +1 -1
  320. package/Table/useTableScroll.d.ts +4 -8
  321. package/Table/useTableScroll.js +9 -7
  322. package/Tabs/TabPane.js +1 -0
  323. package/Tabs/Tabs.js +9 -4
  324. package/Tabs/index.d.ts +6 -3
  325. package/Tabs/useTabsOverflow.js +4 -3
  326. package/Tag/Tag.d.ts +2 -25
  327. package/Tag/Tag.js +23 -13
  328. package/Tag/TagGroup.d.ts +12 -0
  329. package/Tag/TagGroup.js +41 -0
  330. package/Tag/index.d.ts +2 -1
  331. package/Tag/typings.d.ts +78 -0
  332. package/TextField/TextField.d.ts +78 -19
  333. package/TextField/TextField.js +58 -22
  334. package/TextField/index.d.ts +2 -1
  335. package/Textarea/Textarea.d.ts +19 -51
  336. package/Textarea/Textarea.js +13 -19
  337. package/Textarea/index.d.ts +2 -2
  338. package/TimePanel/TimePanel.d.ts +1 -22
  339. package/TimePanel/TimePanel.js +31 -26
  340. package/TimePanel/TimePanelAction.d.ts +2 -8
  341. package/TimePanel/TimePanelAction.js +2 -2
  342. package/TimePanel/TimePanelColumn.d.ts +0 -13
  343. package/TimePanel/TimePanelColumn.js +9 -11
  344. package/TimePanel/index.d.ts +6 -3
  345. package/TimePicker/TimePicker.d.ts +10 -1
  346. package/TimePicker/TimePicker.js +86 -35
  347. package/TimePicker/TimePickerPanel.d.ts +1 -2
  348. package/TimePicker/TimePickerPanel.js +2 -2
  349. package/TimePicker/index.d.ts +4 -2
  350. package/Toggle/Toggle.d.ts +46 -0
  351. package/Toggle/Toggle.js +29 -0
  352. package/Toggle/index.d.ts +3 -0
  353. package/Toggle/index.js +1 -0
  354. package/Tooltip/Tooltip.d.ts +13 -2
  355. package/Tooltip/Tooltip.js +56 -10
  356. package/Tooltip/index.d.ts +2 -1
  357. package/Tooltip/useDelayMouseEnterLeave.d.ts +1 -2
  358. package/Tooltip/useDelayMouseEnterLeave.js +10 -13
  359. package/Transition/Collapse.d.ts +2 -0
  360. package/Transition/Collapse.js +5 -6
  361. package/Transition/Fade.js +4 -4
  362. package/Transition/Rotate.d.ts +42 -0
  363. package/Transition/Rotate.js +30 -0
  364. package/Transition/Scale.d.ts +13 -0
  365. package/Transition/{Grow.js → Scale.js} +19 -16
  366. package/Transition/Slide.d.ts +7 -0
  367. package/Transition/{Zoom.js → Slide.js} +14 -12
  368. package/Transition/SlideFade.d.ts +3 -0
  369. package/Transition/SlideFade.js +5 -4
  370. package/Transition/Transition.d.ts +2 -2
  371. package/Transition/Translate.d.ts +14 -0
  372. package/Transition/Translate.js +94 -0
  373. package/Transition/index.d.ts +16 -6
  374. package/Transition/index.js +4 -2
  375. package/Transition/useAutoTransitionDuration.d.ts +1 -1
  376. package/Transition/useAutoTransitionDuration.js +3 -3
  377. package/Transition/useSetNodeTransition.js +0 -2
  378. package/Tree/TreeNode.js +7 -6
  379. package/Tree/index.d.ts +10 -5
  380. package/Typography/Typography.d.ts +6 -9
  381. package/Typography/Typography.js +7 -9
  382. package/Typography/index.d.ts +2 -5
  383. package/Upload/Upload.d.ts +175 -0
  384. package/Upload/Upload.js +279 -0
  385. package/Upload/UploadItem.d.ts +82 -0
  386. package/Upload/UploadItem.js +118 -0
  387. package/Upload/UploadPictureCard.d.ts +110 -0
  388. package/Upload/UploadPictureCard.js +101 -0
  389. package/Upload/Uploader.d.ts +161 -0
  390. package/Upload/Uploader.js +120 -0
  391. package/Upload/index.d.ts +8 -6
  392. package/Upload/index.js +4 -5
  393. package/Upload/upload-utils.d.ts +41 -0
  394. package/Upload/upload-utils.js +65 -0
  395. package/_internal/InputCheck/index.d.ts +4 -2
  396. package/_internal/InputTriggerPopper/InputTriggerPopper.js +15 -25
  397. package/_internal/InputTriggerPopper/index.d.ts +2 -1
  398. package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +2 -2
  399. package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +4 -27
  400. package/_internal/SlideFadeOverlay/index.d.ts +2 -1
  401. package/_internal/SlideFadeOverlay/useTopStack.js +1 -0
  402. package/dayjs.d.ts +21 -0
  403. package/dayjs.js +2 -0
  404. package/hooks/useComposeRefs.js +1 -1
  405. package/hooks/useLastCallback.js +3 -1
  406. package/hooks/useScrollLock.d.ts +28 -0
  407. package/hooks/useScrollLock.js +134 -0
  408. package/index.d.ts +126 -58
  409. package/index.js +93 -80
  410. package/luxon.d.ts +21 -0
  411. package/luxon.js +2 -0
  412. package/moment.d.ts +21 -0
  413. package/moment.js +2 -0
  414. package/package.json +13 -17
  415. package/utils/composeRefs.js +0 -1
  416. package/utils/get-css-variable-value.d.ts +1 -0
  417. package/utils/get-css-variable-value.js +9 -0
  418. package/Button/IconButton.d.ts +0 -21
  419. package/Button/IconButton.js +0 -13
  420. package/DateTimePicker/DateTimePickerPanel.d.ts +0 -28
  421. package/DateTimePicker/DateTimePickerPanel.js +0 -49
  422. package/Form/FormMessage.d.ts +0 -7
  423. package/Form/FormMessage.js +0 -18
  424. package/Form/useInputWithTagsModeValue.js +0 -86
  425. package/Loading/Loading.d.ts +0 -33
  426. package/Loading/index.d.ts +0 -1
  427. package/Loading/index.js +0 -1
  428. package/Overlay/Overlay.js +0 -31
  429. package/Overlay/index.d.ts +0 -1
  430. package/Overlay/index.js +0 -1
  431. package/Picker/useRangePickerValue.d.ts +0 -23
  432. package/Picker/useRangePickerValue.js +0 -99
  433. package/Switch/Switch.d.ts +0 -43
  434. package/Switch/Switch.js +0 -28
  435. package/Switch/index.d.ts +0 -2
  436. package/Switch/index.js +0 -1
  437. package/Transition/Grow.d.ts +0 -12
  438. package/Transition/Zoom.d.ts +0 -7
  439. package/Upload/UploadButton.d.ts +0 -9
  440. package/Upload/UploadButton.js +0 -23
  441. package/Upload/UploadInput.d.ts +0 -20
  442. package/Upload/UploadInput.js +0 -24
  443. package/Upload/UploadPicture.d.ts +0 -49
  444. package/Upload/UploadPicture.js +0 -51
  445. package/Upload/UploadPictureBlock.d.ts +0 -20
  446. package/Upload/UploadPictureBlock.js +0 -81
  447. package/Upload/UploadPictureWall.d.ts +0 -81
  448. package/Upload/UploadPictureWall.js +0 -168
  449. package/Upload/UploadPictureWallItem.d.ts +0 -15
  450. package/Upload/UploadPictureWallItem.js +0 -18
  451. package/Upload/UploadResult.d.ts +0 -35
  452. package/Upload/UploadResult.js +0 -29
  453. package/utils/scroll-lock.d.ts +0 -2
  454. package/utils/scroll-lock.js +0 -24
@@ -1,26 +1,30 @@
1
- import { RefObject } from 'react';
2
- import { CalendarProps } from '../Calendar';
1
+ import { DateType, CalendarMode } from '@mezzanine-ui/core/calendar';
2
+ import { RangeCalendarProps } from '../Calendar';
3
3
  import { InputTriggerPopperProps } from '../_internal/InputTriggerPopper';
4
- export interface DateRangePickerCalendarProps extends Pick<InputTriggerPopperProps, 'anchor' | 'fadeProps' | 'open'>, Pick<CalendarProps, 'value' | 'onChange' | 'disabledMonthSwitch' | 'disabledYearSwitch' | 'disableOnNext' | 'disableOnPrev' | 'displayMonthLocale' | 'mode' | 'isDateInRange' | 'isDateDisabled' | 'isMonthDisabled' | 'isMonthInRange' | 'isWeekDisabled' | 'isWeekInRange' | 'isYearDisabled' | 'isYearInRange' | 'onDateHover' | 'onWeekHover' | 'onMonthHover' | 'onYearHover' | 'referenceDate'> {
4
+ export interface DateRangePickerCalendarProps extends Pick<InputTriggerPopperProps, 'anchor' | 'fadeProps' | 'open'>, Pick<RangeCalendarProps, 'actions' | 'calendarProps' | 'disabledMonthSwitch' | 'disabledYearSwitch' | 'disableOnNext' | 'disableOnPrev' | 'disableOnDoubleNext' | 'disableOnDoublePrev' | 'displayMonthLocale' | 'displayWeekDayLocale' | 'firstCalendarRef' | 'isDateDisabled' | 'isDateInRange' | 'isMonthDisabled' | 'isMonthInRange' | 'isWeekDisabled' | 'isWeekInRange' | 'isYearDisabled' | 'isYearInRange' | 'isQuarterDisabled' | 'isQuarterInRange' | 'isHalfYearDisabled' | 'isHalfYearInRange' | 'onDateHover' | 'onWeekHover' | 'onMonthHover' | 'onYearHover' | 'onQuarterHover' | 'onHalfYearHover' | 'quickSelect' | 'renderAnnotations' | 'secondCalendarRef' | 'value'> {
5
5
  /**
6
- * Other props you may pass to calendar component.
6
+ * Use this prop to switch calendars.
7
+ * @default 'day'
7
8
  */
8
- calendarProps?: Omit<CalendarProps, keyof DateRangePickerCalendarProps>;
9
+ mode?: CalendarMode;
9
10
  /**
10
- * React Ref for the first(on the left side) calendar
11
+ * Click handler for every cell on calendars.
12
+ * When completing a range (second click), returns normalized [start, end].
13
+ * When starting a new range (first click), returns the clicked date.
11
14
  */
12
- firstCalendarRef?: RefObject<HTMLDivElement | null>;
15
+ onChange?: (value: [DateType, DateType | undefined]) => void;
13
16
  /**
14
17
  * Other props you may provide to `Popper` component
15
18
  */
16
19
  popperProps?: Omit<InputTriggerPopperProps, 'anchor' | 'children' | 'fadeProps' | 'open'>;
17
20
  /**
18
- * React Ref for the second(on the right side) calendar
21
+ * The reference date for getting the calendar.
19
22
  */
20
- secondCalendarRef?: RefObject<HTMLDivElement | null>;
23
+ referenceDate: DateType;
21
24
  }
22
25
  /**
23
26
  * The react component for `mezzanine` date range picker calendar.
27
+ * This is a wrapper around RangeCalendar with InputTriggerPopper for popup behavior.
24
28
  */
25
29
  declare const DateRangePickerCalendar: import("react").ForwardRefExoticComponent<DateRangePickerCalendarProps & import("react").RefAttributes<HTMLDivElement>>;
26
30
  export default DateRangePickerCalendar;
@@ -1,103 +1,16 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { dateRangePickerClasses } from '@mezzanine-ui/core/date-range-picker';
3
- import { forwardRef, useCallback, useState } from 'react';
4
- import { useDateRangeCalendarControls } from './useDateRangeCalendarControls.js';
5
- import { useCalendarContext } from '../Calendar/CalendarContext.js';
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef } from 'react';
6
4
  import InputTriggerPopper from '../_internal/InputTriggerPopper/InputTriggerPopper.js';
7
- import Calendar from '../Calendar/Calendar.js';
8
- import cx from 'clsx';
5
+ import RangeCalendar from '../Calendar/RangeCalendar.js';
9
6
 
10
7
  /**
11
8
  * The react component for `mezzanine` date range picker calendar.
9
+ * This is a wrapper around RangeCalendar with InputTriggerPopper for popup behavior.
12
10
  */
13
11
  const DateRangePickerCalendar = forwardRef(function DateRangePickerCalendar(props, ref) {
14
- const { displayMonthLocale: displayMonthLocaleFromConfig, getMonth, getYear, setMonth, setYear, } = useCalendarContext();
15
- const { anchor, calendarProps, disabledMonthSwitch, disableOnNext, disableOnPrev, disabledYearSwitch, displayMonthLocale = displayMonthLocaleFromConfig, fadeProps, firstCalendarRef, isDateDisabled, isDateInRange, isMonthDisabled, isMonthInRange, isWeekDisabled, isWeekInRange, isYearDisabled, isYearInRange, mode = 'day', onChange: onChangeProp, onDateHover, onMonthHover, onWeekHover, onYearHover, open, popperProps, referenceDate: referenceDateProp, secondCalendarRef, value, } = props;
16
- const { className, ...restCalendarProps } = calendarProps || {};
17
- const { currentMode, onMonthControlClick: onMonthControlClickFromHook, onFirstNext, onFirstPrev, onSecondNext, onSecondPrev, onYearControlClick: onYearControlClickFromHook, popModeStack, referenceDates, updateFirstReferenceDate, updateSecondReferenceDate, } = useDateRangeCalendarControls(referenceDateProp, mode);
18
- const onChangeFactory = useCallback((calendar) => {
19
- const targetDate = referenceDates[calendar];
20
- const updateReferenceDate = calendar
21
- ? updateSecondReferenceDate
22
- : updateFirstReferenceDate;
23
- if (currentMode === 'day' || currentMode === 'week') {
24
- return (target) => {
25
- updateReferenceDate(target);
26
- popModeStack();
27
- if (currentMode === mode && onChangeProp) {
28
- onChangeProp(target);
29
- }
30
- };
31
- }
32
- if (currentMode === 'month') {
33
- return (target) => {
34
- const result = currentMode === mode
35
- ? target
36
- : setMonth(targetDate, getMonth(target));
37
- updateReferenceDate(result);
38
- popModeStack();
39
- if (currentMode === mode && onChangeProp) {
40
- onChangeProp(result);
41
- }
42
- };
43
- }
44
- if (currentMode === 'year') {
45
- return (target) => {
46
- const result = currentMode === mode
47
- ? target
48
- : setYear(targetDate, getYear(target));
49
- updateReferenceDate(result);
50
- popModeStack();
51
- if (currentMode === mode && onChangeProp) {
52
- onChangeProp(result);
53
- }
54
- };
55
- }
56
- }, [
57
- currentMode,
58
- getMonth,
59
- getYear,
60
- mode,
61
- onChangeProp,
62
- popModeStack,
63
- referenceDates,
64
- setMonth,
65
- setYear,
66
- updateFirstReferenceDate,
67
- updateSecondReferenceDate,
68
- ]);
69
- const [controlPanelOnLeft, setControlPanelOnLeft] = useState(true);
70
- const onMonthControlClickFactory = useCallback((calendar) => {
71
- if (calendar) {
72
- return () => {
73
- setControlPanelOnLeft(false);
74
- onMonthControlClickFromHook();
75
- };
76
- }
77
- return () => {
78
- setControlPanelOnLeft(true);
79
- onMonthControlClickFromHook();
80
- };
81
- }, [onMonthControlClickFromHook]);
82
- const onYearControlClickFactory = useCallback((calendar) => {
83
- if (calendar) {
84
- return () => {
85
- setControlPanelOnLeft(false);
86
- onYearControlClickFromHook();
87
- };
88
- }
89
- return () => {
90
- setControlPanelOnLeft(true);
91
- onYearControlClickFromHook();
92
- };
93
- }, [onYearControlClickFromHook]);
94
- const isSettingFirstCalendar = currentMode !== mode && controlPanelOnLeft;
95
- const isSettingSecondCalendar = currentMode !== mode && !controlPanelOnLeft;
96
- return (jsx(InputTriggerPopper, { ...popperProps, ref: ref, anchor: anchor, open: open, fadeProps: fadeProps, children: jsxs("div", { className: dateRangePickerClasses.calendarGroup, children: [jsx(Calendar, { ...restCalendarProps, className: cx(dateRangePickerClasses.calendar, {
97
- [dateRangePickerClasses.calendarInactive]: isSettingSecondCalendar,
98
- }, className), disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, isDateDisabled: isDateDisabled, isDateInRange: isDateInRange, isMonthDisabled: isMonthDisabled, isMonthInRange: isMonthInRange, isWeekDisabled: isWeekDisabled, isWeekInRange: isWeekInRange, isYearDisabled: isYearDisabled, isYearInRange: isYearInRange, mode: controlPanelOnLeft ? currentMode : mode, onChange: onChangeFactory(0), onDateHover: currentMode === mode ? onDateHover : undefined, onMonthHover: currentMode === mode ? onMonthHover : undefined, onWeekHover: currentMode === mode ? onWeekHover : undefined, onYearHover: currentMode === mode ? onYearHover : undefined, onMonthControlClick: onMonthControlClickFactory(0), onNext: isSettingFirstCalendar ? onFirstNext : undefined, onPrev: onFirstPrev, onYearControlClick: onYearControlClickFactory(0), ref: firstCalendarRef, referenceDate: referenceDates[0], value: isSettingFirstCalendar ? referenceDates[0] : value }), jsx(Calendar, { ...restCalendarProps, className: cx(dateRangePickerClasses.calendar, {
99
- [dateRangePickerClasses.calendarInactive]: isSettingFirstCalendar,
100
- }, className), disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, isDateDisabled: isDateDisabled, isDateInRange: isDateInRange, isMonthDisabled: isMonthDisabled, isMonthInRange: isMonthInRange, isWeekDisabled: isWeekDisabled, isWeekInRange: isWeekInRange, isYearDisabled: isYearDisabled, isYearInRange: isYearInRange, mode: !controlPanelOnLeft ? currentMode : mode, onChange: onChangeFactory(1), onDateHover: currentMode === mode ? onDateHover : undefined, onMonthHover: currentMode === mode ? onMonthHover : undefined, onWeekHover: currentMode === mode ? onWeekHover : undefined, onYearHover: currentMode === mode ? onYearHover : undefined, onMonthControlClick: onMonthControlClickFactory(1), onNext: onSecondNext, onPrev: isSettingSecondCalendar ? onSecondPrev : undefined, onYearControlClick: onYearControlClickFactory(1), ref: secondCalendarRef, referenceDate: referenceDates[1], value: isSettingSecondCalendar ? referenceDates[1] : value })] }) }));
12
+ const { actions, anchor, calendarProps, disabledMonthSwitch, disableOnNext, disableOnPrev, disableOnDoubleNext, disableOnDoublePrev, disabledYearSwitch, displayMonthLocale, displayWeekDayLocale, fadeProps, firstCalendarRef, isDateDisabled, isDateInRange, isHalfYearDisabled, isHalfYearInRange, isMonthDisabled, isMonthInRange, isQuarterDisabled, isQuarterInRange, isWeekDisabled, isWeekInRange, isYearDisabled, isYearInRange, mode = 'day', onChange, onDateHover, onHalfYearHover, onMonthHover, onQuarterHover, onWeekHover, onYearHover, open, popperProps, quickSelect, referenceDate, renderAnnotations, secondCalendarRef, value, } = props;
13
+ return (jsx(InputTriggerPopper, { ...popperProps, ref: ref, anchor: anchor, fadeProps: fadeProps, open: open, children: jsx(RangeCalendar, { actions: actions, calendarProps: calendarProps, disabledMonthSwitch: disabledMonthSwitch, disabledYearSwitch: disabledYearSwitch, disableOnDoubleNext: disableOnDoubleNext, disableOnDoublePrev: disableOnDoublePrev, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, displayMonthLocale: displayMonthLocale, displayWeekDayLocale: displayWeekDayLocale, firstCalendarRef: firstCalendarRef, isDateDisabled: isDateDisabled, isDateInRange: isDateInRange, isHalfYearDisabled: isHalfYearDisabled, isHalfYearInRange: isHalfYearInRange, isMonthDisabled: isMonthDisabled, isMonthInRange: isMonthInRange, isQuarterDisabled: isQuarterDisabled, isQuarterInRange: isQuarterInRange, isWeekDisabled: isWeekDisabled, isWeekInRange: isWeekInRange, isYearDisabled: isYearDisabled, isYearInRange: isYearInRange, mode: mode, onChange: onChange, onDateHover: onDateHover, onHalfYearHover: onHalfYearHover, onMonthHover: onMonthHover, onQuarterHover: onQuarterHover, onWeekHover: onWeekHover, onYearHover: onYearHover, quickSelect: quickSelect, referenceDate: referenceDate, renderAnnotations: renderAnnotations, secondCalendarRef: secondCalendarRef, value: value }) }));
101
14
  });
102
15
 
103
16
  export { DateRangePickerCalendar as default };
@@ -1,4 +1,7 @@
1
1
  export { useDateRangeCalendarControls } from './useDateRangeCalendarControls';
2
- export { UseDateRangePickerValueProps, useDateRangePickerValue, } from './useDateRangePickerValue';
3
- export { DateRangePickerCalendarProps, default as DateRangePickerCalendar, } from './DateRangePickerCalendar';
4
- export { DateRangePickerProps, default } from './DateRangePicker';
2
+ export { useDateRangePickerValue } from './useDateRangePickerValue';
3
+ export type { UseDateRangePickerValueProps } from './useDateRangePickerValue';
4
+ export { default as DateRangePickerCalendar } from './DateRangePickerCalendar';
5
+ export type { DateRangePickerCalendarProps } from './DateRangePickerCalendar';
6
+ export type { DateRangePickerProps } from './DateRangePicker';
7
+ export { default } from './DateRangePicker';
@@ -1,3 +1,4 @@
1
+ 'use client';
1
2
  import { useCallback, useState, useEffect } from 'react';
2
3
  import { calendarYearModuler } from '@mezzanine-ui/core/calendar';
3
4
  import { useCalendarControlModifiers } from '../Calendar/useCalendarControlModifiers.js';
@@ -16,7 +17,7 @@ function useDateRangeCalendarControls(referenceDate, mode) {
16
17
  return (target) => addYear(target, calendar ? -1 : 1);
17
18
  }
18
19
  return (target) => addMonth(target, calendar ? -1 : 1);
19
- }, [addYear, addMonth, currentMode]);
20
+ }, [addYear, addMonth, mode]);
20
21
  const [referenceDates, setReferenceDates] = useState(() => {
21
22
  const adder = getAdder(0);
22
23
  return [referenceDate, adder(referenceDate)];
@@ -26,17 +27,19 @@ function useDateRangeCalendarControls(referenceDate, mode) {
26
27
  const adder = getAdder(0);
27
28
  return [referenceDate, adder(referenceDate)];
28
29
  });
29
- }, [referenceDate]);
30
+ }, [referenceDate, getAdder]);
30
31
  const updateFirstReferenceDate = useCallback((date) => {
31
32
  const adder = getAdder(0);
32
33
  setReferenceDates([date, adder(date)]);
33
- }, [addMonth]);
34
+ }, [getAdder]);
34
35
  const updateSecondReferenceDate = useCallback((date) => {
35
36
  const adder = getAdder(1);
36
37
  setReferenceDates([adder(date), date]);
37
- }, [addMonth]);
38
+ }, [getAdder]);
38
39
  const onPrevFactory = (target) => () => {
39
- const [handleMinus] = modifierGroup[currentMode];
40
+ var _a;
41
+ const modifiers = modifierGroup[currentMode];
42
+ const [handleMinus] = (_a = modifiers.single) !== null && _a !== void 0 ? _a : modifiers.double;
40
43
  const newAnchor = handleMinus(referenceDates[target]);
41
44
  const newDates = [...referenceDates];
42
45
  newDates[target] = newAnchor;
@@ -49,7 +52,9 @@ function useDateRangeCalendarControls(referenceDate, mode) {
49
52
  setReferenceDates(newDates);
50
53
  };
51
54
  const onNextFactory = (target) => () => {
52
- const [, handleAdd] = modifierGroup[currentMode];
55
+ var _a;
56
+ const modifiers = modifierGroup[currentMode];
57
+ const [, handleAdd] = (_a = modifiers.single) !== null && _a !== void 0 ? _a : modifiers.double;
53
58
  const newAnchor = handleAdd(referenceDates[target]);
54
59
  const newDates = [...referenceDates];
55
60
  newDates[target] = newAnchor;
@@ -1,28 +1,51 @@
1
1
  import { DateType } from '@mezzanine-ui/core/calendar';
2
2
  import { RangePickerPickingValue, RangePickerValue } from '@mezzanine-ui/core/picker';
3
- import { ChangeEventHandler, KeyboardEventHandler } from 'react';
4
- import { UseRangePickerValueProps } from '../Picker/useRangePickerValue';
3
+ import { RefObject } from 'react';
5
4
  import { DateRangePickerCalendarProps } from './DateRangePickerCalendar';
6
- export interface UseDateRangePickerValueProps extends Omit<UseRangePickerValueProps, 'onChange'> {
5
+ export interface UseDateRangePickerValueProps {
6
+ /**
7
+ * The format pattern for the inputs (e.g., "YYYY-MM-DD")
8
+ */
9
+ format: string;
10
+ /**
11
+ * Function to check if there are disabled dates in the range
12
+ */
13
+ hasDisabledDateInRange?: (start: DateType, end: DateType) => boolean;
14
+ /**
15
+ * Ref for the 'from' input element
16
+ */
17
+ inputFromRef: RefObject<HTMLInputElement | null>;
18
+ /**
19
+ * Ref for the 'to' input element
20
+ */
21
+ inputToRef: RefObject<HTMLInputElement | null>;
22
+ /**
23
+ * Calendar mode
24
+ */
7
25
  mode?: DateRangePickerCalendarProps['mode'];
26
+ /**
27
+ * Change handler called when range is complete
28
+ */
8
29
  onChange?: (value?: RangePickerValue) => void;
30
+ /**
31
+ * Controlled value
32
+ */
33
+ value?: RangePickerValue;
9
34
  }
10
- export declare function useDateRangePickerValue({ format, formats, inputFromRef, inputToRef, mode, onChange: onChangeProp, value: valueProp, }: UseDateRangePickerValueProps): {
35
+ export declare function useDateRangePickerValue({ format, hasDisabledDateInRange, inputFromRef: _inputFromRef, inputToRef, mode, onChange: onChangeProp, value: valueProp, }: UseDateRangePickerValueProps): {
11
36
  calendarValue: string[] | undefined;
37
+ checkIsInRange: (_date: DateType) => boolean;
12
38
  inputFromValue: string;
13
39
  inputToValue: string;
14
- onCalendarChange: (val?: DateType) => void;
40
+ onCalendarChange: (rangeValue: [DateType, DateType | undefined]) => void;
15
41
  onCalendarHover: import("react").Dispatch<import("react").SetStateAction<string | undefined>> | undefined;
16
- onChange: (target?: RangePickerPickingValue, callback?: {
17
- from: (date?: string) => string | undefined;
18
- to: (date?: string) => string | undefined;
19
- }) => RangePickerPickingValue | undefined;
42
+ onChange: (target?: RangePickerPickingValue) => RangePickerPickingValue | undefined;
20
43
  onClear: () => void;
21
- onFromBlur: import("react").FocusEventHandler<HTMLInputElement>;
22
- onFromKeyDown: KeyboardEventHandler<HTMLInputElement>;
23
- onInputFromChange: ChangeEventHandler<HTMLInputElement>;
24
- onInputToChange: ChangeEventHandler<HTMLInputElement>;
25
- onToBlur: import("react").FocusEventHandler<HTMLInputElement>;
26
- onToKeyDown: KeyboardEventHandler<HTMLInputElement>;
44
+ onFromBlur: () => void;
45
+ onFromFocus: () => void;
46
+ onInputFromChange: (formattedValue: string) => void;
47
+ onInputToChange: (formattedValue: string) => void;
48
+ onToBlur: () => void;
49
+ onToFocus: () => void;
27
50
  value: RangePickerPickingValue;
28
51
  };
@@ -1,46 +1,115 @@
1
- import { useState, useMemo } from 'react';
2
- import { useRangePickerValue } from '../Picker/useRangePickerValue.js';
1
+ 'use client';
2
+ import { useState, useCallback, useMemo } from 'react';
3
3
  import { useCalendarContext } from '../Calendar/CalendarContext.js';
4
4
 
5
- function useDateRangePickerValue({ format, formats, inputFromRef, inputToRef, mode, onChange: onChangeProp, value: valueProp, }) {
6
- const { addDay } = useCalendarContext();
7
- const { inputFromValue, inputToValue, onChange, onFromBlur, onFromKeyDown, onInputFromChange, onInputToChange, onToBlur, onToKeyDown, value, } = useRangePickerValue({
8
- format,
9
- formats,
10
- value: valueProp,
11
- inputFromRef,
12
- inputToRef,
13
- });
14
- const [from, to] = value;
5
+ function useDateRangePickerValue({ format, hasDisabledDateInRange, inputFromRef: _inputFromRef, inputToRef, mode, onChange: onChangeProp, value: valueProp, }) {
6
+ var _a, _b;
7
+ const { addDay, formatToString, isBefore, locale } = useCalendarContext();
8
+ const [internalFrom, setInternalFrom] = useState(valueProp === null || valueProp === void 0 ? void 0 : valueProp[0]);
9
+ const [internalTo, setInternalTo] = useState(valueProp === null || valueProp === void 0 ? void 0 : valueProp[1]);
10
+ // Track if user is currently selecting a new range
11
+ // When selecting, we use internal state; otherwise, we prefer valueProp
12
+ const [isSelecting, setIsSelecting] = useState(false);
13
+ const from = isSelecting ? internalFrom : ((_a = valueProp === null || valueProp === void 0 ? void 0 : valueProp[0]) !== null && _a !== void 0 ? _a : internalFrom);
14
+ const to = isSelecting ? internalTo : ((_b = valueProp === null || valueProp === void 0 ? void 0 : valueProp[1]) !== null && _b !== void 0 ? _b : internalTo);
15
+ const value = [from, to];
16
+ const formatDate = useCallback((date) => {
17
+ if (!date)
18
+ return '';
19
+ return formatToString(locale, date, format);
20
+ }, [formatToString, locale, format]);
21
+ const sortValues = useCallback((v1, v2) => {
22
+ return isBefore(v1, v2) ? [v1, v2] : [v2, v1];
23
+ }, [isBefore]);
24
+ const inputFromValue = formatDate(from);
25
+ const inputToValue = formatDate(to);
15
26
  const [hoverValue, setHoverValue] = useState(undefined);
16
- const onSyncHoverValueInputFromChange = (event) => {
17
- onInputFromChange(event);
27
+ const onInputFromChange = useCallback((formattedValue) => {
28
+ if (formattedValue) {
29
+ setIsSelecting(true);
30
+ if (to && isBefore(to, formattedValue)) {
31
+ setInternalFrom(to);
32
+ setInternalTo(formattedValue);
33
+ // Range is complete, trigger onChange (only in immediate mode)
34
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([to, formattedValue]);
35
+ }
36
+ else {
37
+ setInternalFrom(formattedValue);
38
+ // If to is also set, range is complete (only trigger in immediate mode)
39
+ if (to) {
40
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([formattedValue, to]);
41
+ }
42
+ }
43
+ }
44
+ else {
45
+ setInternalFrom(undefined);
46
+ }
18
47
  setHoverValue(undefined);
19
- };
20
- const onSyncHoverValueInputToChange = (event) => {
21
- onInputToChange(event);
48
+ }, [to, isBefore, onChangeProp]);
49
+ const onInputToChange = useCallback((formattedValue) => {
50
+ if (formattedValue) {
51
+ setIsSelecting(true);
52
+ if (from && isBefore(formattedValue, from)) {
53
+ setInternalTo(from);
54
+ setInternalFrom(formattedValue);
55
+ // Range is complete, trigger onChange (only in immediate mode)
56
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([formattedValue, from]);
57
+ }
58
+ else {
59
+ setInternalTo(formattedValue);
60
+ // If from is also set, range is complete (only trigger in immediate mode)
61
+ if (from) {
62
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([from, formattedValue]);
63
+ }
64
+ }
65
+ }
66
+ else {
67
+ setInternalTo(undefined);
68
+ }
22
69
  setHoverValue(undefined);
23
- };
24
- const onCalendarChange = (val) => {
25
- const firstVal = from || to;
26
- const newValue = (from && to) || (!from && !to)
27
- ? [val, undefined]
28
- : [firstVal, val];
29
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
30
- const [sortedFrom, sortedTo] = onChange(newValue, {
31
- from: (nextFrom) => nextFrom,
32
- to: (nextTo) => {
33
- if (!nextTo)
34
- return nextTo;
35
- /** week mode should use the last day of the week (default is the first day) */
36
- return mode === 'week' ? addDay(nextTo, 6) : nextTo;
37
- },
38
- });
39
- if (sortedFrom && sortedTo) {
40
- onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([sortedFrom, sortedTo]);
70
+ }, [from, isBefore, onChangeProp]);
71
+ const onCalendarChange = useCallback((rangeValue) => {
72
+ var _a;
73
+ const [newFrom, newTo] = rangeValue;
74
+ setInternalFrom(newFrom);
75
+ if (newTo) {
76
+ const adjustedTo = mode === 'week' ? addDay(newTo, 6) : newTo;
77
+ setInternalTo(adjustedTo);
78
+ if (newFrom && adjustedTo) {
79
+ const [sortedFrom, sortedTo] = sortValues(newFrom, adjustedTo);
80
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([sortedFrom, sortedTo]);
81
+ }
41
82
  }
42
- };
43
- /** Hover settings */
83
+ else {
84
+ setInternalTo(undefined);
85
+ setIsSelecting(true);
86
+ // 開始新的選取,則先清除值
87
+ if (from && to) {
88
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(undefined);
89
+ }
90
+ (_a = inputToRef.current) === null || _a === void 0 ? void 0 : _a.focus();
91
+ }
92
+ setHoverValue(undefined);
93
+ }, [mode, addDay, sortValues, onChangeProp, inputToRef, from, to]);
94
+ const onChange = useCallback((target) => {
95
+ // Reset selecting state when value is explicitly changed (e.g., cancel/close)
96
+ setIsSelecting(false);
97
+ if (!target) {
98
+ setInternalFrom(undefined);
99
+ setInternalTo(undefined);
100
+ return undefined;
101
+ }
102
+ const [newFrom, newTo] = target;
103
+ if (newFrom && newTo) {
104
+ const sorted = sortValues(newFrom, newTo);
105
+ setInternalFrom(sorted[0]);
106
+ setInternalTo(sorted[1]);
107
+ return sorted;
108
+ }
109
+ setInternalFrom(newFrom);
110
+ setInternalTo(newTo);
111
+ return target;
112
+ }, [sortValues]);
44
113
  const anchor1 = from || to;
45
114
  const anchor2 = from && to ? to : hoverValue;
46
115
  const calendarValue = useMemo(() => {
@@ -52,44 +121,54 @@ function useDateRangePickerValue({ format, formats, inputFromRef, inputToRef, mo
52
121
  }
53
122
  return undefined;
54
123
  }, [anchor1, anchor2]);
124
+ /**
125
+ * Check if date is in range, considering disabled dates
126
+ * Returns a function that can be used as isDateInRange handler
127
+ */
128
+ const checkIsInRange = useCallback((_date) => {
129
+ if (!anchor1 || !anchor2)
130
+ return false;
131
+ // Check if the range crosses any disabled dates
132
+ if (hasDisabledDateInRange === null || hasDisabledDateInRange === void 0 ? void 0 : hasDisabledDateInRange(anchor1, anchor2)) {
133
+ return false;
134
+ }
135
+ return true;
136
+ }, [anchor1, anchor2, hasDisabledDateInRange]);
55
137
  const onCalendarHover = !(from && to) && anchor1 ? setHoverValue : undefined;
56
- const onSyncHoverValueClear = () => {
57
- onChange(undefined);
138
+ const onClear = useCallback(() => {
139
+ setInternalFrom(undefined);
140
+ setInternalTo(undefined);
58
141
  setHoverValue(undefined);
142
+ setIsSelecting(false);
59
143
  onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(undefined);
60
- };
61
- const onFromKeyDownWithOnChange = (event) => {
62
- onFromKeyDown(event);
63
- if (event.key === 'Enter' && from && to) {
64
- onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([from, to]);
65
- }
66
- if (event.key === 'Escape') {
67
- onChange(valueProp);
68
- }
69
- };
70
- const onToKeyDownWithOnChange = (event) => {
71
- onToKeyDown(event);
72
- if (event.key === 'Enter' && from && to) {
73
- onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([from, to]);
74
- }
75
- if (event.key === 'Escape') {
76
- onChange(valueProp);
77
- }
78
- };
144
+ }, [onChangeProp]);
145
+ const onFromFocus = useCallback(() => {
146
+ // Optional: add focus logic
147
+ }, []);
148
+ const onToFocus = useCallback(() => {
149
+ // Optional: add focus logic
150
+ }, []);
151
+ const onFromBlur = useCallback(() => {
152
+ // Optional: add blur logic
153
+ }, []);
154
+ const onToBlur = useCallback(() => {
155
+ // Optional: add blur logic
156
+ }, []);
79
157
  return {
80
158
  calendarValue,
159
+ checkIsInRange,
81
160
  inputFromValue,
82
161
  inputToValue,
83
162
  onCalendarChange,
84
163
  onCalendarHover,
85
164
  onChange,
86
- onClear: onSyncHoverValueClear,
165
+ onClear,
87
166
  onFromBlur,
88
- onFromKeyDown: onFromKeyDownWithOnChange,
89
- onInputFromChange: onSyncHoverValueInputFromChange,
90
- onInputToChange: onSyncHoverValueInputToChange,
167
+ onFromFocus,
168
+ onInputFromChange,
169
+ onInputToChange,
91
170
  onToBlur,
92
- onToKeyDown: onToKeyDownWithOnChange,
171
+ onToFocus,
93
172
  value,
94
173
  };
95
174
  }
@@ -1,27 +1,48 @@
1
1
  import { DateType } from '@mezzanine-ui/core/calendar';
2
- import { PickerTriggerProps } from '../Picker';
3
- import { DateTimePickerPanelProps } from './DateTimePickerPanel';
4
- export interface DateTimePickerProps extends Omit<DateTimePickerPanelProps, 'onConfirm' | 'referenceDate'>, Omit<PickerTriggerProps, 'anchor' | 'defaultValue' | 'inputRef' | 'onChange' | 'onClear' | 'onClick' | 'onIconClick' | 'onKeyDown' | 'open' | 'suffixActionIcon' | 'value'> {
2
+ import { DatePickerCalendarProps } from '../DatePicker';
3
+ import { PickerTriggerWithSeparatorProps } from '../Picker';
4
+ import { TimePickerPanelProps } from '../TimePicker';
5
+ type FocusedInput = 'left' | 'right' | null;
6
+ export interface DateTimePickerProps extends Omit<DatePickerCalendarProps, 'anchor' | 'onChange' | 'open' | 'referenceDate' | 'value'>, Omit<TimePickerPanelProps, 'anchor' | 'onChange' | 'open' | 'popperProps' | 'value'>, Omit<PickerTriggerWithSeparatorProps, 'formatLeft' | 'formatRight' | 'inputLeftRef' | 'inputRightRef' | 'onBlurLeft' | 'onBlurRight' | 'onChangeLeft' | 'onChangeRight' | 'onFocusLeft' | 'onFocusRight' | 'onLeftComplete' | 'onRightComplete' | 'suffix' | 'valueLeft' | 'valueRight'> {
5
7
  /**
6
- * Default value for time picker.
8
+ * Default value for date-time picker.
7
9
  */
8
10
  defaultValue?: DateType;
9
11
  /**
10
- * The format for displaying time.
12
+ * The format for displaying date (left input).
11
13
  */
12
- format?: string;
14
+ formatDate?: string;
13
15
  /**
14
- * A function that fires when panel toggled. Receive open status in boolean format as props.
16
+ * The format for displaying time (right input).
15
17
  */
16
- onPanelToggle?: (open: boolean) => void;
18
+ formatTime?: string;
19
+ /**
20
+ * Change handler. Takes your declared `DateType` as argument.
21
+ * Called when both date and time values are complete.
22
+ */
23
+ onChange?: (target?: DateType) => void;
24
+ /**
25
+ * A function that fires when panel toggled. Receive open status and focused input as props.
26
+ */
27
+ onPanelToggle?: (open: boolean, focusedInput: FocusedInput) => void;
28
+ /**
29
+ * Other props you may provide to the time picker panel's `Popper` component
30
+ */
31
+ popperPropsTime?: TimePickerPanelProps['popperProps'];
17
32
  /**
18
33
  * The reference date for getting calendars. Default to current time.
19
34
  */
20
35
  referenceDate?: DateType;
36
+ /**
37
+ * Current value of date-time picker.
38
+ */
39
+ value?: DateType;
21
40
  }
22
41
  /**
23
- * The react component for `mezzanine` time picker.
24
- * Notice that any component related to time-picker should be used along with `CalendarContext`.
42
+ * The react component for `mezzanine` date-time picker.
43
+ * This component features two separate inputs for date and time,
44
+ * with independent calendar and time panels shown based on focus.
45
+ * Notice that any component related to date-time picker should be used along with `CalendarContext`.
25
46
  */
26
47
  declare const DateTimePicker: import("react").ForwardRefExoticComponent<DateTimePickerProps & import("react").RefAttributes<HTMLDivElement>>;
27
48
  export default DateTimePicker;