@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,13 +1,24 @@
1
1
  import { DateType } from '@mezzanine-ui/core/calendar';
2
2
  import { DatePickerCalendarProps } from './DatePickerCalendar';
3
3
  import { PickerTriggerProps } from '../Picker';
4
- export interface DatePickerProps extends Omit<DatePickerCalendarProps, 'anchor' | 'calendarRef' | 'onChange' | 'open' | 'referenceDate' | 'updateReferenceDate'>, Omit<PickerTriggerProps, 'defaultValue' | 'inputRef' | 'onChange' | 'onClear' | 'onClick' | 'onIconClick' | 'onKeyDown' | 'suffixActionIcon' | 'value'> {
4
+ export interface DatePickerProps extends Omit<DatePickerCalendarProps, 'anchor' | 'calendarRef' | 'disableOnDoubleNext' | 'disableOnDoublePrev' | 'onChange' | 'open' | 'referenceDate' | 'updateReferenceDate'>, Omit<PickerTriggerProps, 'defaultValue' | 'format' | 'inputRef' | 'onChange' | 'onClear' | 'onClick' | 'onIconClick' | 'onKeyDown' | 'value'> {
5
5
  /**
6
6
  * Default value for date picker.
7
7
  */
8
8
  defaultValue?: DateType;
9
+ /**
10
+ * Disabled "double next" button on calendar controls
11
+ * @default false
12
+ */
13
+ disableOnDoubleNext?: boolean;
14
+ /**
15
+ * Disabled "double prev" button on calendar controls
16
+ * @default false
17
+ */
18
+ disableOnDoublePrev?: boolean;
9
19
  /**
10
20
  * The format for displaying date.
21
+ * The length of the format must match the length of the actual generated value. For example, "gggg-wo" may cause a length mismatch when the week of year is a single digit. It is recommended to use the system's default format instead.
11
22
  */
12
23
  format?: string;
13
24
  /**
@@ -1,5 +1,6 @@
1
+ 'use client';
1
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { forwardRef, useContext, useMemo, useState, useCallback, useRef, useEffect } from 'react';
3
+ import { forwardRef, useCallback, useState, useMemo, useRef, useEffect } from 'react';
3
4
  import { getDefaultModeFormat } from '@mezzanine-ui/core/calendar';
4
5
  import { CalendarIcon } from '@mezzanine-ui/icons';
5
6
  import DatePickerCalendar from './DatePickerCalendar.js';
@@ -9,18 +10,46 @@ import { usePickerValue } from '../Picker/usePickerValue.js';
9
10
  import { usePickerDocumentEventClose } from '../Picker/usePickerDocumentEventClose.js';
10
11
  import Icon from '../Icon/Icon.js';
11
12
  import PickerTrigger from '../Picker/PickerTrigger.js';
12
- import { FormControlContext } from '../Form/FormControlContext.js';
13
13
 
14
14
  /**
15
15
  * The react component for `mezzanine` date picker.
16
16
  * Notice that any component related to date-picker should be used along with `CalendarContext`. <br />
17
17
  */
18
18
  const DatePicker = forwardRef(function DatePicker(props, ref) {
19
- const { disabled: disabledFromFormControl, fullWidth: fullWidthFromFormControl, required: requiredFromFormControl, severity, } = useContext(FormControlContext) || {};
20
- const { defaultDateFormat, getNow } = useCalendarContext();
21
- const { calendarProps, className, clearable = true, defaultValue, disabledMonthSwitch = false, disableOnNext, disableOnPrev, disabledYearSwitch = false, disabled = disabledFromFormControl || false, displayMonthLocale, error = severity === 'error' || false, fadeProps, format = defaultDateFormat, fullWidth = fullWidthFromFormControl || false, inputProps, isDateDisabled, isMonthDisabled, isWeekDisabled, isYearDisabled, mode = 'day', onCalendarToggle: onCalendarToggleProp, onChange: onChangeProp, placeholder, popperProps, prefix, readOnly, referenceDate: referenceDateProp, required = requiredFromFormControl || false, size, value: valueProp, ...restTriggerProps } = props;
19
+ const { getNow } = useCalendarContext();
20
+ const { calendarProps, className, clearable = true, defaultValue, disabledMonthSwitch = false, disableOnNext, disableOnPrev, disableOnDoubleNext, disableOnDoublePrev, disabledYearSwitch = false, disabled = false, displayMonthLocale, error = false, errorMessages, fadeProps, format: formatProp, fullWidth = false, inputProps, isDateDisabled, isMonthDisabled, isWeekDisabled, isYearDisabled, isQuarterDisabled, isHalfYearDisabled, mode = 'day', onCalendarToggle: onCalendarToggleProp, onChange: onChangeProp, placeholder, popperProps, prefix, readOnly, referenceDate: referenceDateProp, required = false, size, value: valueProp, ...restTriggerProps } = props;
21
+ const format = formatProp || getDefaultModeFormat(mode);
22
22
  const { onBlur: onBlurProp, onKeyDown: onKeyDownProp, onFocus: onFocusProp, size: inputSize = format.length + 2, ...restInputProp } = inputProps || {};
23
- const formats = useMemo(() => [format, defaultDateFormat, getDefaultModeFormat(mode)], [defaultDateFormat, format, mode]);
23
+ /**
24
+ * Validate date value against disabled constraints based on mode.
25
+ * Returns true if valid, false if the date is disabled.
26
+ */
27
+ const validateDate = useCallback((isoDate) => {
28
+ switch (mode) {
29
+ case 'day':
30
+ return !(isDateDisabled === null || isDateDisabled === void 0 ? void 0 : isDateDisabled(isoDate));
31
+ case 'week':
32
+ return !(isWeekDisabled === null || isWeekDisabled === void 0 ? void 0 : isWeekDisabled(isoDate));
33
+ case 'month':
34
+ return !(isMonthDisabled === null || isMonthDisabled === void 0 ? void 0 : isMonthDisabled(isoDate));
35
+ case 'quarter':
36
+ return !(isQuarterDisabled === null || isQuarterDisabled === void 0 ? void 0 : isQuarterDisabled(isoDate));
37
+ case 'year':
38
+ return !(isYearDisabled === null || isYearDisabled === void 0 ? void 0 : isYearDisabled(isoDate));
39
+ case 'half-year':
40
+ return !(isHalfYearDisabled === null || isHalfYearDisabled === void 0 ? void 0 : isHalfYearDisabled(isoDate));
41
+ default:
42
+ return true;
43
+ }
44
+ }, [
45
+ isDateDisabled,
46
+ isHalfYearDisabled,
47
+ isMonthDisabled,
48
+ isQuarterDisabled,
49
+ isWeekDisabled,
50
+ isYearDisabled,
51
+ mode,
52
+ ]);
24
53
  /** Calender display control */
25
54
  const [open, setOpen] = useState(false);
26
55
  const preventOpen = readOnly;
@@ -48,7 +77,6 @@ const DatePicker = forwardRef(function DatePicker(props, ref) {
48
77
  const { inputValue, onBlur, onChange, onInputChange, onKeyDown, value: internalValue, } = usePickerValue({
49
78
  defaultValue,
50
79
  format,
51
- formats,
52
80
  inputRef,
53
81
  value: valueProp,
54
82
  });
@@ -123,8 +151,12 @@ const DatePicker = forwardRef(function DatePicker(props, ref) {
123
151
  }
124
152
  onCalendarToggle(!open);
125
153
  };
126
- const suffixActionIcon = jsx(Icon, { icon: CalendarIcon, onClick: onIconClick });
127
- return (jsxs(Fragment, { children: [jsx(PickerTrigger, { ...restTriggerProps, ref: triggerComposedRef, className: className, clearable: clearable, disabled: disabled, error: error, fullWidth: fullWidth, inputProps: resolvedInputProps, inputRef: inputRef, onChange: onInputChange, onClear: onClear, placeholder: placeholder, prefix: prefix, readOnly: readOnly, required: required, size: size, suffixActionIcon: suffixActionIcon, value: inputValue }), jsx(DatePickerCalendar, { ref: calendarRef, anchor: anchorRef, calendarProps: calendarProps, disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, fadeProps: fadeProps, isDateDisabled: isDateDisabled, isMonthDisabled: isMonthDisabled, isWeekDisabled: isWeekDisabled, isYearDisabled: isYearDisabled, mode: mode, onChange: onCalendarChange, open: open, popperProps: popperProps, referenceDate: referenceDate, value: internalValue })] }));
154
+ const suffixActionIcon = (jsx(Icon, { "aria-label": "Open calendar", icon: CalendarIcon, onClick: readOnly ? undefined : onIconClick }));
155
+ return (jsxs(Fragment, { children: [jsx(PickerTrigger, { ...restTriggerProps, ref: triggerComposedRef, className: className, clearable: clearable, disabled: disabled, error: error, errorMessages: errorMessages, format: format, fullWidth: fullWidth, inputProps: resolvedInputProps, inputRef: inputRef, onChange: (e) => {
156
+ onInputChange(e);
157
+ onCalendarChange(e.target.value);
158
+ onCalendarToggle(true);
159
+ }, onClear: onClear, onFocus: () => onCalendarToggle(true), placeholder: placeholder, prefix: prefix, readOnly: readOnly, required: required, size: size, suffix: suffixActionIcon, validate: validateDate, value: inputValue }), jsx(DatePickerCalendar, { ref: calendarRef, anchor: anchorRef, calendarProps: calendarProps, disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disableOnDoubleNext: disableOnDoubleNext, disableOnDoublePrev: disableOnDoublePrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, fadeProps: fadeProps, isDateDisabled: isDateDisabled, isMonthDisabled: isMonthDisabled, isWeekDisabled: isWeekDisabled, isQuarterDisabled: isQuarterDisabled, isYearDisabled: isYearDisabled, isHalfYearDisabled: isHalfYearDisabled, mode: mode, onChange: onCalendarChange, open: open, popperProps: popperProps, referenceDate: referenceDate, value: internalValue })] }));
128
160
  });
129
161
 
130
162
  export { DatePicker as default };
@@ -2,11 +2,11 @@ import { CalendarMode, DateType } from '@mezzanine-ui/core/calendar';
2
2
  import { RefObject } from 'react';
3
3
  import { CalendarProps } from '../Calendar';
4
4
  import { InputTriggerPopperProps } from '../_internal/InputTriggerPopper';
5
- export interface DatePickerCalendarProps extends Pick<InputTriggerPopperProps, 'anchor' | 'fadeProps' | 'open'>, Pick<CalendarProps, 'disabledMonthSwitch' | 'disableOnNext' | 'disableOnPrev' | 'disabledYearSwitch' | 'displayMonthLocale' | 'isDateDisabled' | 'isMonthDisabled' | 'isWeekDisabled' | 'isYearDisabled' | 'onChange' | 'referenceDate'> {
5
+ export interface DatePickerCalendarProps extends Pick<InputTriggerPopperProps, 'anchor' | 'fadeProps' | 'open'>, Pick<CalendarProps, 'disabledMonthSwitch' | 'disableOnNext' | 'disableOnPrev' | 'disableOnDoubleNext' | 'disableOnDoublePrev' | 'disabledYearSwitch' | 'displayMonthLocale' | 'isDateDisabled' | 'isMonthDisabled' | 'isQuarterDisabled' | 'isHalfYearDisabled' | 'isWeekDisabled' | 'isYearDisabled' | 'onChange' | 'referenceDate'> {
6
6
  /**
7
7
  * Other calendar props you may provide to `Calendar`.
8
8
  */
9
- calendarProps?: Omit<CalendarProps, 'disableOnNext' | 'disableOnPrev' | 'displayMonthLocale' | 'isDateDisabled' | 'isMonthDisabled' | 'isWeekDisabled' | 'isYearDisabled' | 'locale' | 'mode' | 'onChange' | 'onMonthControlClick' | 'onNext' | 'onPrev' | 'onYearControlClick' | 'referenceDate' | 'updateReferenceDate' | 'value'>;
9
+ calendarProps?: Omit<CalendarProps, 'disableOnNext' | 'disableOnPrev' | 'disableOnDoubleNext' | 'disableOnDoublePrev' | 'displayMonthLocale' | 'isDateDisabled' | 'isMonthDisabled' | 'isQuarterDisabled' | 'isHalfYearDisabled' | 'isWeekDisabled' | 'isYearDisabled' | 'locale' | 'mode' | 'onChange' | 'onMonthControlClick' | 'onNext' | 'onDoubleNext' | 'onPrev' | 'onDoublePrev' | 'onYearControlClick' | 'referenceDate' | 'updateReferenceDate' | 'value'>;
10
10
  /**
11
11
  * React ref for calendar component.
12
12
  */
@@ -25,8 +25,5 @@ export interface DatePickerCalendarProps extends Pick<InputTriggerPopperProps, '
25
25
  */
26
26
  value?: DateType;
27
27
  }
28
- /**
29
- * The react component for `mezzanine` date picker calendar.
30
- */
31
28
  declare const DatePickerCalendar: import("react").ForwardRefExoticComponent<DatePickerCalendarProps & import("react").RefAttributes<HTMLDivElement>>;
32
29
  export default DatePickerCalendar;
@@ -1,3 +1,4 @@
1
+ 'use client';
1
2
  import { jsx } from 'react/jsx-runtime';
2
3
  import { forwardRef, useMemo } from 'react';
3
4
  import { useCalendarContext } from '../Calendar/CalendarContext.js';
@@ -5,61 +6,60 @@ import { useCalendarControls } from '../Calendar/useCalendarControls.js';
5
6
  import InputTriggerPopper from '../_internal/InputTriggerPopper/InputTriggerPopper.js';
6
7
  import Calendar from '../Calendar/Calendar.js';
7
8
 
8
- /**
9
- * The react component for `mezzanine` date picker calendar.
10
- */
11
9
  const DatePickerCalendar = forwardRef(function DatePickerCalendar(props, ref) {
12
- const { displayMonthLocale: displayMonthLocaleFromConfig, getMonth, getYear, setMonth, setYear, } = useCalendarContext();
13
- const { anchor, calendarProps, calendarRef, disabledMonthSwitch, disableOnNext, disableOnPrev, disabledYearSwitch, displayMonthLocale = displayMonthLocaleFromConfig, fadeProps, isDateDisabled, isMonthDisabled, isWeekDisabled, isYearDisabled, mode = 'day', onChange: onChangeProp, open, popperProps, referenceDate: referenceDateProp, value, } = props;
10
+ const { locale, getMonth, getYear, setMonth, setYear } = useCalendarContext();
11
+ const { anchor, calendarProps, calendarRef, disabledMonthSwitch, disableOnNext, disableOnPrev, disableOnDoubleNext, disableOnDoublePrev, disabledYearSwitch, displayMonthLocale = locale, fadeProps, isDateDisabled, isMonthDisabled, isQuarterDisabled, isHalfYearDisabled, isWeekDisabled, isYearDisabled, mode = 'day', onChange: onChangeProp, open, popperProps, referenceDate: referenceDateProp, value, } = props;
14
12
  const { className: calendarClassName, ...restCalendarProps } = calendarProps || {};
15
- const { currentMode, onMonthControlClick, onNext, onPrev, onYearControlClick, popModeStack, referenceDate, updateReferenceDate, } = useCalendarControls(referenceDateProp, mode);
16
- const onChange = useMemo(() => {
17
- if (currentMode === 'day' || currentMode === 'week') {
18
- return (target) => {
19
- updateReferenceDate(target);
20
- popModeStack();
21
- if (onChangeProp) {
22
- onChangeProp(target);
23
- }
24
- };
25
- }
26
- if (currentMode === 'month') {
27
- return (target) => {
28
- const result = currentMode === mode
29
- ? target
30
- : setMonth(referenceDate, getMonth(target));
31
- updateReferenceDate(result);
32
- popModeStack();
33
- if (currentMode === mode && onChangeProp) {
34
- onChangeProp(result);
35
- }
36
- };
37
- }
38
- if (currentMode === 'year') {
13
+ const { currentMode, onMonthControlClick, onNext, onPrev, onDoublePrev, onDoubleNext, onYearControlClick, popModeStack, referenceDate, updateReferenceDate, } = useCalendarControls(referenceDateProp, mode);
14
+ // Helper to handle mode switching with optional value transformation
15
+ const createModeChangeHandler = useMemo(() => {
16
+ return (transformValue) => {
39
17
  return (target) => {
40
- const result = currentMode === mode
41
- ? target
42
- : setYear(referenceDate, getYear(target));
18
+ const result = transformValue
19
+ ? transformValue(target, referenceDate)
20
+ : target;
43
21
  updateReferenceDate(result);
44
22
  popModeStack();
45
23
  if (currentMode === mode && onChangeProp) {
46
24
  onChangeProp(result);
47
25
  }
48
26
  };
49
- }
27
+ };
50
28
  }, [
51
29
  currentMode,
30
+ mode,
52
31
  referenceDate,
53
32
  updateReferenceDate,
54
33
  popModeStack,
55
- mode,
56
34
  onChangeProp,
57
- setMonth,
35
+ ]);
36
+ const onChange = useMemo(() => {
37
+ switch (currentMode) {
38
+ case 'day':
39
+ case 'week':
40
+ return createModeChangeHandler();
41
+ case 'month':
42
+ return createModeChangeHandler((target, reference) => currentMode === mode
43
+ ? target
44
+ : setMonth(reference, getMonth(target)));
45
+ case 'year':
46
+ return createModeChangeHandler((target, reference) => currentMode === mode ? target : setYear(reference, getYear(target)));
47
+ case 'quarter':
48
+ case 'half-year':
49
+ return createModeChangeHandler();
50
+ default:
51
+ return undefined;
52
+ }
53
+ }, [
54
+ currentMode,
55
+ mode,
56
+ createModeChangeHandler,
58
57
  getMonth,
59
- setYear,
58
+ setMonth,
60
59
  getYear,
60
+ setYear,
61
61
  ]);
62
- return (jsx(InputTriggerPopper, { ...popperProps, ref: ref, anchor: anchor, open: open, fadeProps: fadeProps, children: jsx(Calendar, { ...restCalendarProps, ref: calendarRef, className: calendarClassName, disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, isDateDisabled: isDateDisabled, isMonthDisabled: isMonthDisabled, isWeekDisabled: isWeekDisabled, isYearDisabled: isYearDisabled, mode: currentMode, onChange: onChange, onMonthControlClick: onMonthControlClick, onNext: onNext, onPrev: onPrev, onYearControlClick: onYearControlClick, referenceDate: referenceDate, value: value }) }));
62
+ return (jsx(InputTriggerPopper, { ...popperProps, ref: ref, anchor: anchor, open: open, fadeProps: fadeProps, children: jsx(Calendar, { ...restCalendarProps, ref: calendarRef, className: calendarClassName, disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disableOnDoubleNext: disableOnDoubleNext, disableOnDoublePrev: disableOnDoublePrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, isDateDisabled: isDateDisabled, isMonthDisabled: isMonthDisabled, isQuarterDisabled: isQuarterDisabled, isHalfYearDisabled: isHalfYearDisabled, isWeekDisabled: isWeekDisabled, isYearDisabled: isYearDisabled, mode: currentMode, onChange: onChange, onMonthControlClick: onMonthControlClick, onNext: onNext, onDoubleNext: onDoubleNext, onPrev: onPrev, onDoublePrev: onDoublePrev, onYearControlClick: onYearControlClick, referenceDate: referenceDate, value: value }) }));
63
63
  });
64
64
 
65
65
  export { DatePickerCalendar as default };
@@ -1,2 +1,4 @@
1
- export { DatePickerCalendarProps, default as DatePickerCalendar, } from './DatePickerCalendar';
2
- export { DatePickerProps, default } from './DatePicker';
1
+ export { default as DatePickerCalendar } from './DatePickerCalendar';
2
+ export type { DatePickerCalendarProps } from './DatePickerCalendar';
3
+ export type { DatePickerProps } from './DatePicker';
4
+ export { default } from './DatePicker';
@@ -1,8 +1,24 @@
1
1
  import { DateType } from '@mezzanine-ui/core/calendar';
2
2
  import { RangePickerValue } from '@mezzanine-ui/core/picker';
3
+ import { CalendarFooterActionsProps } from '../Calendar/CalendarFooterActions';
3
4
  import { DateRangePickerCalendarProps } from './DateRangePickerCalendar';
4
5
  import { RangePickerTriggerProps } from '../Picker';
5
- export interface DateRangePickerProps extends Pick<DateRangePickerCalendarProps, 'calendarProps' | 'disabledMonthSwitch' | 'disableOnNext' | 'disableOnPrev' | 'disabledYearSwitch' | 'displayMonthLocale' | 'fadeProps' | 'mode' | 'popperProps' | 'isDateDisabled' | 'isWeekDisabled' | 'isMonthDisabled' | 'isYearDisabled'>, Pick<RangePickerTriggerProps, 'className' | 'clearable' | 'disabled' | 'error' | 'fullWidth' | 'inputFromPlaceholder' | 'inputFromProps' | 'inputToPlaceholder' | 'inputToProps' | 'prefix' | 'readOnly' | 'required' | 'size'> {
6
+ export interface DateRangePickerProps extends Pick<DateRangePickerCalendarProps, 'calendarProps' | 'disabledMonthSwitch' | 'disableOnNext' | 'disableOnPrev' | 'disableOnDoubleNext' | 'disableOnDoublePrev' | 'disabledYearSwitch' | 'displayMonthLocale' | 'displayWeekDayLocale' | 'fadeProps' | 'firstCalendarRef' | 'isDateDisabled' | 'isWeekDisabled' | 'isMonthDisabled' | 'isYearDisabled' | 'isQuarterDisabled' | 'isHalfYearDisabled' | 'mode' | 'popperProps' | 'quickSelect' | 'renderAnnotations' | 'secondCalendarRef'>, Pick<RangePickerTriggerProps, 'className' | 'clearable' | 'disabled' | 'error' | 'errorMessagesFrom' | 'errorMessagesTo' | 'fullWidth' | 'inputFromPlaceholder' | 'inputFromProps' | 'inputToPlaceholder' | 'inputToProps' | 'prefix' | 'readOnly' | 'required' | 'size' | 'validateFrom' | 'validateTo'> {
7
+ /**
8
+ * Footer action buttons props.
9
+ * When provided, the calendar will NOT auto-close after range selection.
10
+ * This allows users to interact with the action buttons before confirming.
11
+ */
12
+ actions?: CalendarFooterActionsProps['actions'];
13
+ /**
14
+ * The confirm mode for date range selection.
15
+ * - `'immediate'` (default): onChange is triggered immediately after selecting both dates,
16
+ * and calendar auto-closes (unless actions prop is provided).
17
+ * - `'manual'`: onChange is triggered only when user clicks the confirm button.
18
+ * Default actions (Confirm/Cancel) will be auto-generated if not provided.
19
+ * @default 'immediate'
20
+ */
21
+ confirmMode?: 'immediate' | 'manual';
6
22
  /**
7
23
  * Default value for date range picker.
8
24
  */
@@ -31,7 +47,7 @@ export interface DateRangePickerProps extends Pick<DateRangePickerCalendarProps,
31
47
  }
32
48
  /**
33
49
  * The react component for `mezzanine` date range picker.
34
- * Notice that any component related to date-range-picker should be used along with `CalendarContext`. <br />
50
+ * Notice that any component related to date-range-picker should be used along with `CalendarContext`.
35
51
  */
36
52
  declare const DateRangePicker: import("react").ForwardRefExoticComponent<DateRangePickerProps & import("react").RefAttributes<HTMLDivElement>>;
37
53
  export default DateRangePicker;
@@ -1,5 +1,6 @@
1
+ 'use client';
1
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { forwardRef, useContext, useMemo, useState, useCallback, useRef, useEffect } from 'react';
3
+ import { forwardRef, useCallback, useState, useRef, useEffect, useMemo } from 'react';
3
4
  import { getDefaultModeFormat } from '@mezzanine-ui/core/calendar';
4
5
  import { CalendarIcon } from '@mezzanine-ui/icons';
5
6
  import DateRangePickerCalendar from './DateRangePickerCalendar.js';
@@ -9,23 +10,68 @@ import { useCalendarContext } from '../Calendar/CalendarContext.js';
9
10
  import { usePickerDocumentEventClose } from '../Picker/usePickerDocumentEventClose.js';
10
11
  import Icon from '../Icon/Icon.js';
11
12
  import RangePickerTrigger from '../Picker/RangePickerTrigger.js';
12
- import { FormControlContext } from '../Form/FormControlContext.js';
13
13
 
14
14
  /**
15
15
  * The react component for `mezzanine` date range picker.
16
- * Notice that any component related to date-range-picker should be used along with `CalendarContext`. <br />
16
+ * Notice that any component related to date-range-picker should be used along with `CalendarContext`.
17
17
  */
18
18
  const DateRangePicker = forwardRef(function DateRangePicker(props, ref) {
19
- const { disabled: disabledFromFormControl, fullWidth: fullWidthFromFormControl, required: requiredFromFormControl, severity, } = useContext(FormControlContext) || {};
20
- const { defaultDateFormat, getNow, isBetween } = useCalendarContext();
21
- const { calendarProps, className, clearable = true, defaultValue, disabledMonthSwitch = false, disableOnNext, disableOnPrev, disabledYearSwitch = false, disabled = disabledFromFormControl || false, displayMonthLocale, error = severity === 'error' || false, fadeProps, format = defaultDateFormat, fullWidth = fullWidthFromFormControl || false, inputFromPlaceholder, inputFromProps, inputToPlaceholder, inputToProps, isDateDisabled, isWeekDisabled, isMonthDisabled, isYearDisabled, mode = 'day', onCalendarToggle: onCalendarToggleProp, onChange: onChangeProp, popperProps, prefix, readOnly, referenceDate: referenceDateProp, required = requiredFromFormControl || false, size, value: valueProp, } = props;
22
- const { onBlur: onFromBlurProp, onKeyDown: onFromKeyDownProp, onFocus: onFromFocusProp, ...restInputFromProps } = inputFromProps || {};
23
- const { onBlur: onToBlurProp, onKeyDown: onToKeyDownProp, onFocus: onToFocusProp, ...restInputToProps } = inputToProps || {};
24
- const formats = useMemo(() => [format, defaultDateFormat, getDefaultModeFormat(mode)], [defaultDateFormat, format, mode]);
19
+ const { addDay, getNow, isBefore, isBetween } = useCalendarContext();
20
+ const { actions: actionsProp, calendarProps, className, clearable = true, confirmMode = 'immediate', defaultValue, disabledMonthSwitch = false, disableOnDoubleNext, disableOnDoublePrev, disableOnNext, disableOnPrev, disabled = false, disabledYearSwitch = false, displayMonthLocale, displayWeekDayLocale, error = false, errorMessagesFrom, errorMessagesTo, fadeProps, firstCalendarRef, format: formatProp, fullWidth = false, inputFromPlaceholder, inputFromProps, inputToPlaceholder, inputToProps, isDateDisabled, isHalfYearDisabled, isMonthDisabled, isQuarterDisabled, isWeekDisabled, isYearDisabled, mode = 'day', onCalendarToggle: onCalendarToggleProp, onChange: onChangeProp, popperProps, prefix, quickSelect, readOnly, referenceDate: referenceDateProp, renderAnnotations, required = false, secondCalendarRef, size, validateFrom, validateTo, value: valueProp, } = props;
21
+ const format = formatProp || getDefaultModeFormat(mode);
25
22
  function isBetweenRange(valueToCheck, t1, t2, granularity) {
26
23
  return (isBetween(valueToCheck, t1, t2, granularity) ||
27
24
  isBetween(valueToCheck, t2, t1, granularity));
28
25
  }
26
+ /** Check if there are disabled dates in the range */
27
+ const hasDisabledDateInRange = useCallback((start, end) => {
28
+ var _a, _b, _c, _d, _e, _f;
29
+ const [rangeStart, rangeEnd] = isBefore(start, end)
30
+ ? [start, end]
31
+ : [end, start];
32
+ let current = rangeStart;
33
+ while (isBefore(current, rangeEnd) || current === rangeEnd) {
34
+ let isDisabled = false;
35
+ switch (mode) {
36
+ case 'day':
37
+ isDisabled = (_a = isDateDisabled === null || isDateDisabled === void 0 ? void 0 : isDateDisabled(current)) !== null && _a !== void 0 ? _a : false;
38
+ break;
39
+ case 'week':
40
+ isDisabled = (_b = isWeekDisabled === null || isWeekDisabled === void 0 ? void 0 : isWeekDisabled(current)) !== null && _b !== void 0 ? _b : false;
41
+ break;
42
+ case 'month':
43
+ isDisabled = (_c = isMonthDisabled === null || isMonthDisabled === void 0 ? void 0 : isMonthDisabled(current)) !== null && _c !== void 0 ? _c : false;
44
+ break;
45
+ case 'year':
46
+ isDisabled = (_d = isYearDisabled === null || isYearDisabled === void 0 ? void 0 : isYearDisabled(current)) !== null && _d !== void 0 ? _d : false;
47
+ break;
48
+ case 'quarter':
49
+ isDisabled = (_e = isQuarterDisabled === null || isQuarterDisabled === void 0 ? void 0 : isQuarterDisabled(current)) !== null && _e !== void 0 ? _e : false;
50
+ break;
51
+ case 'half-year':
52
+ isDisabled = (_f = isHalfYearDisabled === null || isHalfYearDisabled === void 0 ? void 0 : isHalfYearDisabled(current)) !== null && _f !== void 0 ? _f : false;
53
+ break;
54
+ }
55
+ if (isDisabled) {
56
+ return true;
57
+ }
58
+ current = addDay(current, 1);
59
+ if (isBefore(rangeEnd, current)) {
60
+ break;
61
+ }
62
+ }
63
+ return false;
64
+ }, [
65
+ addDay,
66
+ isBefore,
67
+ mode,
68
+ isDateDisabled,
69
+ isWeekDisabled,
70
+ isMonthDisabled,
71
+ isYearDisabled,
72
+ isQuarterDisabled,
73
+ isHalfYearDisabled,
74
+ ]);
29
75
  /** Using internal reference date */
30
76
  const [referenceDate, updateReferenceDate] = useState(referenceDateProp || (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue[0]) || getNow());
31
77
  /** Calendar panel toggle */
@@ -34,35 +80,24 @@ const DateRangePicker = forwardRef(function DateRangePicker(props, ref) {
34
80
  const onCalendarToggle = useCallback((currentOpen) => {
35
81
  if (!preventOpen) {
36
82
  setOpen(currentOpen);
37
- if (onCalendarToggleProp) {
38
- onCalendarToggleProp(currentOpen);
39
- }
83
+ onCalendarToggleProp === null || onCalendarToggleProp === void 0 ? void 0 : onCalendarToggleProp(currentOpen);
40
84
  }
41
85
  }, [onCalendarToggleProp, preventOpen]);
42
- const onFromFocus = useCallback((event) => {
43
- if (onFromFocusProp) {
44
- onFromFocusProp(event);
45
- }
46
- onCalendarToggle(true);
47
- }, [onCalendarToggle, onFromFocusProp]);
48
- const onToFocus = useCallback((event) => {
49
- if (onToFocusProp) {
50
- onToFocusProp(event);
51
- }
52
- onCalendarToggle(true);
53
- }, [onCalendarToggle, onToFocusProp]);
54
86
  /** Values and onChange */
55
87
  const inputToRef = useRef(null);
56
88
  const inputFromRef = useRef(null);
57
- const { calendarValue, inputFromValue, inputToValue, onCalendarChange, onCalendarHover, onChange, onClear, onFromBlur, onFromKeyDown, onInputFromChange, onInputToChange, onToBlur, onToKeyDown, value: internalValue, } = useDateRangePickerValue({
89
+ // In manual mode, don't pass onChange to hook - we'll handle it via confirm button
90
+ const shouldTriggerOnChangeImmediately = confirmMode === 'immediate' && !actionsProp;
91
+ const { calendarValue, checkIsInRange, inputFromValue, inputToValue, onCalendarChange, onCalendarHover, onChange, onClear, onFromBlur, onFromFocus, onInputFromChange, onInputToChange, onToBlur, onToFocus, value: internalValue, } = useDateRangePickerValue({
58
92
  format,
59
- formats,
60
- value: valueProp,
93
+ hasDisabledDateInRange,
61
94
  inputFromRef,
62
95
  inputToRef,
63
96
  mode,
64
- onChange: onChangeProp,
97
+ onChange: shouldTriggerOnChangeImmediately ? onChangeProp : undefined,
98
+ value: valueProp,
65
99
  });
100
+ // Update reference date when internal value changes
66
101
  useEffect(() => {
67
102
  const [from, to] = internalValue;
68
103
  if (from) {
@@ -75,112 +110,120 @@ const DateRangePicker = forwardRef(function DateRangePicker(props, ref) {
75
110
  /** Bind calendar open control to handlers */
76
111
  const onCalendarChangeWithCloseControl = useCallback((val) => {
77
112
  onCalendarChange(val);
78
- const [from, to] = internalValue;
79
- const hasFirstValue = (from && !to) || (to && !from);
80
- if (hasFirstValue && val) {
113
+ // Close panel when range is complete (only if auto-close is enabled)
114
+ // Auto-close is disabled when actions are provided or in manual mode
115
+ if (val[0] && val[1] && shouldTriggerOnChangeImmediately) {
81
116
  onCalendarToggle(false);
82
117
  }
83
- }, [internalValue, onCalendarChange, onCalendarToggle]);
84
- const onFromKeyDownWithCloseControl = useCallback((event) => {
85
- onFromKeyDown(event);
118
+ }, [onCalendarChange, onCalendarToggle, shouldTriggerOnChangeImmediately]);
119
+ /** Handle confirm action (for manual mode) */
120
+ const onConfirm = useCallback(() => {
86
121
  const [from, to] = internalValue;
87
- if (event.key === 'Enter' && from && to) {
88
- onCalendarToggle(false);
122
+ if (from && to) {
123
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([from, to]);
124
+ // Sync internal state and reset isSelecting
125
+ onChange([from, to]);
89
126
  }
90
- }, [internalValue, onCalendarToggle, onFromKeyDown]);
91
- const onToKeyDownWithCloseControl = useCallback((event) => {
92
- onToKeyDown(event);
93
- const [from, to] = internalValue;
94
- if (event.key === 'Enter' && from && to) {
95
- onCalendarToggle(false);
127
+ onCalendarToggle(false);
128
+ }, [internalValue, onChange, onChangeProp, onCalendarToggle]);
129
+ /** Handle cancel action (for manual mode) */
130
+ const onCancel = useCallback(() => {
131
+ onChange(valueProp);
132
+ onCalendarToggle(false);
133
+ }, [onChange, onCalendarToggle, valueProp]);
134
+ /** Auto-generated actions for manual mode */
135
+ const actions = useMemo(() => {
136
+ // In manual mode, auto-generate actions
137
+ if (confirmMode === 'manual') {
138
+ const [from, to] = internalValue;
139
+ const isRangeComplete = Boolean(from && to);
140
+ return {
141
+ primaryButtonProps: {
142
+ children: 'Confirm',
143
+ disabled: !isRangeComplete,
144
+ onClick: onConfirm,
145
+ ...actionsProp === null || actionsProp === void 0 ? void 0 : actionsProp.primaryButtonProps,
146
+ },
147
+ secondaryButtonProps: {
148
+ children: 'Cancel',
149
+ onClick: onCancel,
150
+ ...actionsProp === null || actionsProp === void 0 ? void 0 : actionsProp.secondaryButtonProps,
151
+ },
152
+ };
96
153
  }
97
- }, [internalValue, onCalendarToggle, onToKeyDown]);
154
+ if (actionsProp) {
155
+ return actionsProp;
156
+ }
157
+ return undefined;
158
+ }, [actionsProp, confirmMode, internalValue, onConfirm, onCancel]);
98
159
  /** Calendar cell in range checker */
99
160
  const getIsInRangeHandler = (granularity) => {
100
161
  const [anchor1, anchor2] = calendarValue || [];
101
- return anchor1 && anchor2
102
- ? (date) => isBetweenRange(date, anchor1, anchor2, granularity)
103
- : undefined;
162
+ // If no range or disabled dates exist in range, return undefined
163
+ if (!anchor1 || !anchor2 || !checkIsInRange(anchor2)) {
164
+ return undefined;
165
+ }
166
+ return (date) => isBetweenRange(date, anchor1, anchor2, granularity);
104
167
  };
105
168
  /** Popper settings */
106
169
  const anchorRef = useRef(null);
107
170
  const calendarRef = useRef(null);
108
171
  const triggerComposedRef = useComposeRefs([anchorRef, ref]);
109
- /** Resolve input props */
110
- const onResolvedFromBlur = useCallback((event) => {
111
- if (onFromBlurProp) {
112
- onFromBlurProp(event);
113
- }
114
- onFromBlur(event);
115
- }, [onFromBlur, onFromBlurProp]);
116
- const onResolvedToBlur = useCallback((event) => {
117
- if (onToBlurProp) {
118
- onToBlurProp(event);
119
- }
120
- onToBlur(event);
121
- }, [onToBlur, onToBlurProp]);
122
- const onResolvedFromKeyDown = useCallback((event) => {
123
- if (onFromKeyDownProp) {
124
- onFromKeyDownProp(event);
125
- }
126
- onFromKeyDownWithCloseControl(event);
127
- }, [onFromKeyDownProp, onFromKeyDownWithCloseControl]);
128
- const onResolvedToKeyDown = useCallback((event) => {
129
- if (onToKeyDownProp) {
130
- onToKeyDownProp(event);
131
- }
132
- onToKeyDownWithCloseControl(event);
133
- }, [onToKeyDownProp, onToKeyDownWithCloseControl]);
134
- const resolvedInputFromProps = {
135
- ...restInputFromProps,
136
- onFocus: onFromFocus,
137
- onKeyDown: onResolvedFromKeyDown,
138
- onBlur: onResolvedFromBlur,
139
- size: format.length + 2,
140
- };
141
- const resolvedInputToProps = {
142
- ...restInputToProps,
143
- onFocus: onToFocus,
144
- onKeyDown: onResolvedToKeyDown,
145
- onBlur: onResolvedToBlur,
146
- size: format.length + 2,
147
- };
172
+ /** Input focus handlers */
173
+ const onFromFocusHandler = useCallback((_event) => {
174
+ onFromFocus();
175
+ onCalendarToggle(true);
176
+ }, [onCalendarToggle, onFromFocus]);
177
+ const onToFocusHandler = useCallback((_event) => {
178
+ onToFocus();
179
+ onCalendarToggle(true);
180
+ }, [onCalendarToggle, onToFocus]);
148
181
  /** Blur, click away and key down close */
149
- const onClose = () => {
182
+ const onClose = useCallback(() => {
150
183
  onChange(valueProp);
151
184
  onCalendarToggle(false);
152
- };
153
- const onChangeClose = () => {
185
+ }, [onChange, onCalendarToggle, valueProp]);
186
+ const onChangeClose = useCallback(() => {
187
+ // In manual mode, always restore to valueProp (don't auto-submit on click-away)
188
+ if (confirmMode === 'manual') {
189
+ onChange(valueProp);
190
+ onCalendarToggle(false);
191
+ return;
192
+ }
154
193
  const [from, to] = internalValue;
155
194
  if (from && to) {
156
- const newValue = onChange([from, to]);
157
- if (onChangeProp) {
158
- onChangeProp(newValue);
159
- }
195
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([from, to]);
160
196
  }
161
197
  else {
162
198
  onChange(valueProp);
163
199
  }
164
200
  onCalendarToggle(false);
165
- };
201
+ }, [
202
+ confirmMode,
203
+ internalValue,
204
+ onChange,
205
+ onCalendarToggle,
206
+ onChangeProp,
207
+ valueProp,
208
+ ]);
166
209
  usePickerDocumentEventClose({
167
- open,
168
210
  anchorRef,
169
- popperRef: calendarRef,
170
211
  lastElementRefInFlow: inputToRef,
171
- onClose,
172
212
  onChangeClose,
213
+ onClose,
214
+ open,
215
+ popperRef: calendarRef,
173
216
  });
174
- /** Icon */
175
- const onIconClick = (e) => {
217
+ /** Icon click handler */
218
+ const onIconClick = useCallback((e) => {
176
219
  e.stopPropagation();
177
220
  if (open) {
178
221
  onChange(valueProp);
179
222
  }
180
223
  onCalendarToggle(!open);
181
- };
224
+ }, [onChange, onCalendarToggle, open, valueProp]);
182
225
  const suffixActionIcon = jsx(Icon, { icon: CalendarIcon, onClick: onIconClick });
183
- return (jsxs(Fragment, { children: [jsx(RangePickerTrigger, { ref: triggerComposedRef, className: className, clearable: clearable, disabled: disabled, error: error, fullWidth: fullWidth, inputFromPlaceholder: inputFromPlaceholder, inputFromProps: resolvedInputFromProps, inputFromRef: inputFromRef, inputFromValue: inputFromValue, inputToPlaceholder: inputToPlaceholder, inputToProps: resolvedInputToProps, inputToRef: inputToRef, inputToValue: inputToValue, onClear: onClear, onInputFromChange: onInputFromChange, onInputToChange: onInputToChange, prefix: prefix, readOnly: readOnly, required: required, size: size, suffixActionIcon: suffixActionIcon }), jsx(DateRangePickerCalendar, { ref: calendarRef, open: open, anchor: anchorRef, calendarProps: calendarProps, disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, fadeProps: fadeProps, isDateDisabled: isDateDisabled, isDateInRange: getIsInRangeHandler('date'), isMonthDisabled: isMonthDisabled, isMonthInRange: getIsInRangeHandler('month'), isWeekDisabled: isWeekDisabled, isWeekInRange: getIsInRangeHandler('week'), isYearDisabled: isYearDisabled, isYearInRange: getIsInRangeHandler('year'), mode: mode, onChange: onCalendarChangeWithCloseControl, onDateHover: onCalendarHover, onWeekHover: onCalendarHover, onMonthHover: onCalendarHover, onYearHover: onCalendarHover, popperProps: popperProps, referenceDate: referenceDate, value: calendarValue })] }));
226
+ return (jsxs(Fragment, { children: [jsx(RangePickerTrigger, { className: className, clearable: clearable, disabled: disabled, error: error, errorMessagesFrom: errorMessagesFrom, errorMessagesTo: errorMessagesTo, format: format, fullWidth: fullWidth, inputFromPlaceholder: inputFromPlaceholder, inputFromProps: inputFromProps, inputFromRef: inputFromRef, inputFromValue: inputFromValue, inputToPlaceholder: inputToPlaceholder, inputToProps: inputToProps, inputToRef: inputToRef, inputToValue: inputToValue, onClear: onClear, onFromBlur: onFromBlur, onFromFocus: onFromFocusHandler, onInputFromChange: onInputFromChange, onInputToChange: onInputToChange, onToBlur: onToBlur, onToFocus: onToFocusHandler, prefix: prefix, readOnly: readOnly, ref: triggerComposedRef, required: required, size: size, suffixActionIcon: suffixActionIcon, validateFrom: validateFrom, validateTo: validateTo }), jsx(DateRangePickerCalendar, { actions: actions, anchor: anchorRef, calendarProps: calendarProps, disabledMonthSwitch: disabledMonthSwitch, disabledYearSwitch: disabledYearSwitch, disableOnDoubleNext: disableOnDoubleNext, disableOnDoublePrev: disableOnDoublePrev, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, displayMonthLocale: displayMonthLocale, displayWeekDayLocale: displayWeekDayLocale, fadeProps: fadeProps, firstCalendarRef: firstCalendarRef, isDateDisabled: isDateDisabled, isDateInRange: getIsInRangeHandler('date'), isHalfYearDisabled: isHalfYearDisabled, isHalfYearInRange: getIsInRangeHandler('half-year'), isMonthDisabled: isMonthDisabled, isMonthInRange: getIsInRangeHandler('month'), isQuarterDisabled: isQuarterDisabled, isQuarterInRange: getIsInRangeHandler('quarter'), isWeekDisabled: isWeekDisabled, isWeekInRange: getIsInRangeHandler('week'), isYearDisabled: isYearDisabled, isYearInRange: getIsInRangeHandler('year'), mode: mode, onChange: onCalendarChangeWithCloseControl, onDateHover: onCalendarHover, onHalfYearHover: onCalendarHover, onMonthHover: onCalendarHover, onQuarterHover: onCalendarHover, onWeekHover: onCalendarHover, onYearHover: onCalendarHover, open: open, popperProps: popperProps, quickSelect: quickSelect, ref: calendarRef, referenceDate: referenceDate, renderAnnotations: renderAnnotations, secondCalendarRef: secondCalendarRef, value: calendarValue })] }));
184
227
  });
185
228
 
186
229
  export { DateRangePicker as default };