@mezzanine-ui/react 0.16.0 → 1.0.0-beta.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 (547) 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 +53 -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 +75 -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.d.ts +47 -6
  115. package/Drawer/Drawer.js +36 -11
  116. package/Drawer/index.d.ts +2 -1
  117. package/Dropdown/Dropdown.js +12 -22
  118. package/Dropdown/index.d.ts +2 -1
  119. package/Empty/Empty.d.ts +1 -16
  120. package/Empty/Empty.js +59 -7
  121. package/Empty/icons/EmptyMainInitialDataIcon.d.ts +4 -0
  122. package/Empty/icons/EmptyMainInitialDataIcon.js +9 -0
  123. package/Empty/icons/EmptyMainResultIcon.d.ts +4 -0
  124. package/Empty/icons/EmptyMainResultIcon.js +9 -0
  125. package/Empty/icons/EmptyMainSystemIcon.d.ts +4 -0
  126. package/Empty/icons/EmptyMainSystemIcon.js +9 -0
  127. package/Empty/index.d.ts +2 -1
  128. package/Empty/typings.d.ts +61 -0
  129. package/Form/FormControlContext.js +1 -0
  130. package/Form/FormHintText.d.ts +18 -0
  131. package/Form/FormHintText.js +17 -0
  132. package/Form/FormLabel.js +1 -0
  133. package/Form/index.d.ts +9 -5
  134. package/Form/index.js +1 -1
  135. package/Form/useAutoCompleteValueControl.js +2 -0
  136. package/Form/useCheckboxControlValue.js +0 -1
  137. package/Form/useSelectValueControl.js +2 -0
  138. package/InlineMessage/InlineMessage.d.ts +33 -0
  139. package/InlineMessage/InlineMessage.js +42 -0
  140. package/InlineMessage/InlineMessageGroup.d.ts +24 -0
  141. package/InlineMessage/InlineMessageGroup.js +21 -0
  142. package/InlineMessage/index.d.ts +4 -0
  143. package/InlineMessage/index.js +2 -0
  144. package/Input/ActionButton/ActionButton.d.ts +26 -0
  145. package/Input/ActionButton/ActionButton.js +14 -0
  146. package/Input/ActionButton/index.d.ts +2 -0
  147. package/Input/ActionButton/index.js +1 -0
  148. package/Input/Input.d.ts +147 -42
  149. package/Input/Input.js +195 -27
  150. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.d.ts +31 -0
  151. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.js +18 -0
  152. package/Input/PasswordStrengthIndicator/index.d.ts +2 -0
  153. package/Input/PasswordStrengthIndicator/index.js +1 -0
  154. package/Input/SelectButton/SelectButton.d.ts +20 -0
  155. package/Input/SelectButton/SelectButton.js +21 -0
  156. package/Input/SelectButton/index.d.ts +2 -0
  157. package/Input/SelectButton/index.js +1 -0
  158. package/Input/SpinnerButton/SpinnerButton.d.ts +19 -0
  159. package/Input/SpinnerButton/SpinnerButton.js +14 -0
  160. package/Input/SpinnerButton/index.d.ts +2 -0
  161. package/Input/SpinnerButton/index.js +1 -0
  162. package/Input/index.d.ts +3 -2
  163. package/Menu/Menu.js +1 -0
  164. package/Menu/index.d.ts +8 -4
  165. package/Message/Message.d.ts +6 -4
  166. package/Message/Message.js +86 -9
  167. package/Message/MessageTimerController.d.ts +14 -0
  168. package/Message/MessageTimerController.js +27 -0
  169. package/Message/index.d.ts +3 -2
  170. package/Modal/Modal.js +2 -2
  171. package/Modal/ModalActions.js +1 -0
  172. package/Modal/ModalControl.js +1 -0
  173. package/Modal/ModalHeader.js +1 -0
  174. package/Modal/index.d.ts +10 -5
  175. package/Modal/useModalContainer.d.ts +1 -1
  176. package/Modal/useModalContainer.js +2 -4
  177. package/Navigation/Navigation.js +37 -34
  178. package/Navigation/NavigationContext.js +1 -0
  179. package/Navigation/NavigationItem.js +1 -0
  180. package/Navigation/NavigationSubMenu.js +16 -26
  181. package/Navigation/index.d.ts +8 -4
  182. package/Notification/Notification.js +0 -1
  183. package/Notification/index.d.ts +3 -2
  184. package/Notifier/NotifierManager.d.ts +15 -2
  185. package/Notifier/NotifierManager.js +60 -18
  186. package/Notifier/createNotifier.d.ts +9 -0
  187. package/Notifier/createNotifier.js +3 -2
  188. package/Notifier/typings.d.ts +3 -1
  189. package/OverflowTooltip/OverflowCounterTag.d.ts +12 -0
  190. package/OverflowTooltip/OverflowCounterTag.js +48 -0
  191. package/OverflowTooltip/OverflowTooltip.d.ts +34 -0
  192. package/OverflowTooltip/OverflowTooltip.js +53 -0
  193. package/OverflowTooltip/index.d.ts +2 -0
  194. package/OverflowTooltip/index.js +2 -0
  195. package/PageFooter/PageFooter.d.ts +73 -8
  196. package/PageFooter/PageFooter.js +34 -3
  197. package/PageFooter/index.d.ts +2 -1
  198. package/PageHeader/PageHeader.d.ts +40 -0
  199. package/PageHeader/PageHeader.js +70 -0
  200. package/PageHeader/index.d.ts +2 -0
  201. package/PageHeader/index.js +1 -0
  202. package/PageToolbar/PageToolbar.d.ts +114 -0
  203. package/PageToolbar/PageToolbar.js +23 -0
  204. package/PageToolbar/index.d.ts +2 -0
  205. package/PageToolbar/index.js +1 -0
  206. package/PageToolbar/utils.d.ts +23 -0
  207. package/PageToolbar/utils.js +165 -0
  208. package/Pagination/Pagination.d.ts +23 -29
  209. package/Pagination/Pagination.js +3 -4
  210. package/Pagination/PaginationItem.d.ts +1 -1
  211. package/Pagination/PaginationItem.js +4 -3
  212. package/Pagination/PaginationJumper.d.ts +7 -9
  213. package/Pagination/PaginationJumper.js +3 -5
  214. package/Pagination/PaginationPageSize.d.ts +8 -11
  215. package/Pagination/PaginationPageSize.js +5 -4
  216. package/Pagination/index.d.ts +8 -4
  217. package/Pagination/usePagination.d.ts +3 -1
  218. package/Pagination/usePagination.js +12 -21
  219. package/Picker/FormattedInput.d.ts +17 -0
  220. package/Picker/FormattedInput.js +74 -0
  221. package/Picker/MaskFormat.d.ts +39 -0
  222. package/Picker/MaskFormat.js +94 -0
  223. package/Picker/PickerTrigger.d.ts +13 -3
  224. package/Picker/PickerTrigger.js +17 -2
  225. package/Picker/PickerTriggerWithSeparator.d.ts +124 -0
  226. package/Picker/PickerTriggerWithSeparator.js +80 -0
  227. package/Picker/RangePickerTrigger.d.ts +55 -4
  228. package/Picker/RangePickerTrigger.js +65 -7
  229. package/Picker/formatUtils.d.ts +34 -0
  230. package/Picker/formatUtils.js +124 -0
  231. package/Picker/index.d.ts +17 -6
  232. package/Picker/index.js +4 -1
  233. package/Picker/useDateInputFormatter.d.ts +52 -0
  234. package/Picker/useDateInputFormatter.js +382 -0
  235. package/Picker/usePickerValue.d.ts +1 -2
  236. package/Picker/usePickerValue.js +8 -13
  237. package/Popconfirm/Popconfirm.js +1 -1
  238. package/Popconfirm/index.d.ts +2 -1
  239. package/Popover/Popover.js +4 -8
  240. package/Popover/index.d.ts +2 -1
  241. package/Popper/Popper.d.ts +15 -10
  242. package/Popper/Popper.js +88 -17
  243. package/Popper/index.d.ts +2 -1
  244. package/Portal/Portal.d.ts +13 -5
  245. package/Portal/Portal.js +25 -10
  246. package/Portal/index.d.ts +4 -1
  247. package/Portal/index.js +1 -0
  248. package/Portal/portalRegistry.d.ts +17 -0
  249. package/Portal/portalRegistry.js +92 -0
  250. package/Progress/Progress.d.ts +23 -30
  251. package/Progress/Progress.js +71 -21
  252. package/Progress/index.d.ts +3 -2
  253. package/Provider/ConfigProvider.d.ts +1 -0
  254. package/Provider/ConfigProvider.js +1 -0
  255. package/Provider/context.js +1 -0
  256. package/Radio/Radio.d.ts +37 -4
  257. package/Radio/Radio.js +23 -12
  258. package/Radio/RadioGroup.d.ts +37 -8
  259. package/Radio/RadioGroup.js +6 -5
  260. package/Radio/RadioGroupContext.d.ts +2 -1
  261. package/Radio/RadioGroupContext.js +1 -0
  262. package/Radio/index.d.ts +5 -3
  263. package/ResultState/ResultState.d.ts +52 -0
  264. package/ResultState/ResultState.js +24 -0
  265. package/ResultState/index.d.ts +2 -0
  266. package/ResultState/index.js +1 -0
  267. package/Select/AutoComplete.d.ts +1 -1
  268. package/Select/AutoComplete.js +2 -1
  269. package/Select/Option.js +1 -0
  270. package/Select/Select.d.ts +1 -1
  271. package/Select/Select.js +2 -1
  272. package/Select/SelectControlContext.js +1 -0
  273. package/Select/SelectTrigger.d.ts +1 -87
  274. package/Select/SelectTrigger.js +26 -21
  275. package/Select/SelectTriggerTags.d.ts +1 -1
  276. package/Select/SelectTriggerTags.js +47 -18
  277. package/Select/TreeSelect.d.ts +1 -1
  278. package/Select/TreeSelect.js +2 -1
  279. package/Select/index.d.ts +14 -7
  280. package/Select/typings.d.ts +99 -0
  281. package/Select/useSelectTriggerTags.d.ts +15 -8
  282. package/Select/useSelectTriggerTags.js +83 -44
  283. package/Selection/Selection.d.ts +98 -0
  284. package/Selection/Selection.js +46 -0
  285. package/Selection/index.d.ts +12 -0
  286. package/Selection/index.js +5 -0
  287. package/Skeleton/Skeleton.d.ts +10 -3
  288. package/Skeleton/Skeleton.js +12 -4
  289. package/Skeleton/index.d.ts +2 -1
  290. package/Slider/Slider.d.ts +44 -7
  291. package/Slider/Slider.js +17 -13
  292. package/Slider/index.d.ts +5 -3
  293. package/Spin/Spin.d.ts +39 -0
  294. package/{Loading/Loading.js → Spin/Spin.js} +9 -9
  295. package/Spin/index.d.ts +2 -0
  296. package/Spin/index.js +1 -0
  297. package/Stepper/Step.d.ts +1 -35
  298. package/Stepper/Step.js +43 -8
  299. package/Stepper/Stepper.d.ts +1 -14
  300. package/Stepper/Stepper.js +49 -15
  301. package/Stepper/index.d.ts +5 -2
  302. package/Stepper/index.js +1 -0
  303. package/Stepper/typings.d.ts +77 -0
  304. package/Stepper/useStepDistance.d.ts +10 -0
  305. package/Stepper/useStepDistance.js +81 -0
  306. package/Stepper/useStepper.d.ts +21 -0
  307. package/Stepper/useStepper.js +26 -0
  308. package/Tab/Tab.d.ts +32 -0
  309. package/Tab/Tab.js +57 -0
  310. package/Tab/TabItem.d.ts +27 -0
  311. package/Tab/TabItem.js +18 -0
  312. package/Tab/index.d.ts +4 -0
  313. package/Tab/index.js +2 -0
  314. package/Table/Table.d.ts +75 -94
  315. package/Table/Table.js +216 -161
  316. package/Table/TableContext.d.ts +114 -51
  317. package/Table/TableContext.js +22 -3
  318. package/Table/components/TableBody.d.ts +5 -0
  319. package/Table/components/TableBody.js +102 -0
  320. package/Table/components/TableCell.d.ts +17 -0
  321. package/Table/components/TableCell.js +74 -0
  322. package/Table/components/TableColGroup.d.ts +4 -0
  323. package/Table/components/TableColGroup.js +206 -0
  324. package/Table/components/TableDragHandleCell.d.ts +9 -0
  325. package/Table/components/TableDragHandleCell.js +37 -0
  326. package/Table/components/TableExpandCell.d.ts +11 -0
  327. package/Table/components/TableExpandCell.js +44 -0
  328. package/Table/components/TableExpandedRow.d.ts +9 -0
  329. package/Table/components/TableExpandedRow.js +46 -0
  330. package/Table/components/TableHeader.d.ts +4 -0
  331. package/Table/components/TableHeader.js +125 -0
  332. package/Table/components/TablePagination.d.ts +3 -0
  333. package/Table/components/TablePagination.js +11 -0
  334. package/Table/components/TableResizeHandle.d.ts +13 -0
  335. package/Table/components/TableResizeHandle.js +115 -0
  336. package/Table/components/TableRow.d.ts +12 -0
  337. package/Table/components/TableRow.js +126 -0
  338. package/Table/components/TableSelectionCell.d.ts +13 -0
  339. package/Table/components/TableSelectionCell.js +35 -0
  340. package/Table/components/index.d.ts +10 -0
  341. package/Table/components/index.js +10 -0
  342. package/Table/hooks/index.d.ts +9 -0
  343. package/Table/hooks/index.js +8 -0
  344. package/Table/hooks/typings.d.ts +14 -0
  345. package/Table/hooks/useTableColumns.d.ts +8 -0
  346. package/Table/hooks/useTableColumns.js +91 -0
  347. package/Table/hooks/useTableDataSource.d.ts +57 -0
  348. package/Table/hooks/useTableDataSource.js +183 -0
  349. package/Table/hooks/useTableExpansion.d.ts +7 -0
  350. package/Table/hooks/useTableExpansion.js +52 -0
  351. package/Table/hooks/useTableFixedOffsets.d.ts +29 -0
  352. package/Table/hooks/useTableFixedOffsets.js +241 -0
  353. package/Table/hooks/useTableScroll.d.ts +12 -0
  354. package/Table/hooks/useTableScroll.js +58 -0
  355. package/Table/hooks/useTableSelection.d.ts +7 -0
  356. package/Table/hooks/useTableSelection.js +94 -0
  357. package/Table/hooks/useTableSorting.d.ts +6 -0
  358. package/Table/hooks/useTableSorting.js +32 -0
  359. package/Table/hooks/useTableVirtualization.d.ts +22 -0
  360. package/Table/hooks/useTableVirtualization.js +115 -0
  361. package/Table/index.d.ts +7 -7
  362. package/Table/index.js +22 -6
  363. package/Table/utils/index.d.ts +2 -0
  364. package/Table/utils/index.js +1 -0
  365. package/Table/utils/useTableRowSelection.d.ts +18 -0
  366. package/Table/utils/useTableRowSelection.js +63 -0
  367. package/Tag/Tag.d.ts +2 -25
  368. package/Tag/Tag.js +23 -13
  369. package/Tag/TagGroup.d.ts +12 -0
  370. package/Tag/TagGroup.js +41 -0
  371. package/Tag/index.d.ts +2 -1
  372. package/Tag/typings.d.ts +78 -0
  373. package/TextField/TextField.d.ts +78 -19
  374. package/TextField/TextField.js +58 -22
  375. package/TextField/index.d.ts +2 -1
  376. package/Textarea/Textarea.d.ts +19 -51
  377. package/Textarea/Textarea.js +13 -19
  378. package/Textarea/index.d.ts +2 -2
  379. package/TimePanel/TimePanel.d.ts +1 -22
  380. package/TimePanel/TimePanel.js +31 -26
  381. package/TimePanel/TimePanelAction.d.ts +2 -8
  382. package/TimePanel/TimePanelAction.js +2 -2
  383. package/TimePanel/TimePanelColumn.d.ts +0 -13
  384. package/TimePanel/TimePanelColumn.js +9 -11
  385. package/TimePanel/index.d.ts +6 -3
  386. package/TimePicker/TimePicker.d.ts +10 -1
  387. package/TimePicker/TimePicker.js +86 -35
  388. package/TimePicker/TimePickerPanel.d.ts +1 -2
  389. package/TimePicker/TimePickerPanel.js +2 -2
  390. package/TimePicker/index.d.ts +4 -2
  391. package/Toggle/Toggle.d.ts +46 -0
  392. package/Toggle/Toggle.js +29 -0
  393. package/Toggle/index.d.ts +3 -0
  394. package/Toggle/index.js +1 -0
  395. package/Tooltip/Tooltip.d.ts +13 -2
  396. package/Tooltip/Tooltip.js +56 -10
  397. package/Tooltip/index.d.ts +2 -1
  398. package/Tooltip/useDelayMouseEnterLeave.d.ts +1 -2
  399. package/Tooltip/useDelayMouseEnterLeave.js +10 -13
  400. package/Transition/Collapse.d.ts +2 -0
  401. package/Transition/Collapse.js +5 -6
  402. package/Transition/Fade.js +4 -4
  403. package/Transition/Rotate.d.ts +42 -0
  404. package/Transition/Rotate.js +30 -0
  405. package/Transition/Scale.d.ts +13 -0
  406. package/Transition/{Grow.js → Scale.js} +19 -16
  407. package/Transition/Slide.d.ts +7 -0
  408. package/Transition/{Zoom.js → Slide.js} +14 -12
  409. package/Transition/SlideFade.d.ts +3 -0
  410. package/Transition/SlideFade.js +5 -4
  411. package/Transition/Transition.d.ts +2 -2
  412. package/Transition/Translate.d.ts +14 -0
  413. package/Transition/Translate.js +94 -0
  414. package/Transition/index.d.ts +16 -6
  415. package/Transition/index.js +4 -2
  416. package/Transition/useAutoTransitionDuration.d.ts +1 -1
  417. package/Transition/useAutoTransitionDuration.js +3 -3
  418. package/Transition/useSetNodeTransition.js +0 -2
  419. package/Tree/TreeNode.js +7 -6
  420. package/Tree/index.d.ts +10 -5
  421. package/Typography/Typography.d.ts +6 -9
  422. package/Typography/Typography.js +7 -9
  423. package/Typography/index.d.ts +2 -5
  424. package/Upload/Upload.d.ts +175 -0
  425. package/Upload/Upload.js +279 -0
  426. package/Upload/UploadItem.d.ts +82 -0
  427. package/Upload/UploadItem.js +118 -0
  428. package/Upload/UploadPictureCard.d.ts +110 -0
  429. package/Upload/UploadPictureCard.js +101 -0
  430. package/Upload/Uploader.d.ts +161 -0
  431. package/Upload/Uploader.js +120 -0
  432. package/Upload/index.d.ts +8 -6
  433. package/Upload/index.js +4 -5
  434. package/Upload/upload-utils.d.ts +41 -0
  435. package/Upload/upload-utils.js +65 -0
  436. package/_internal/InputCheck/InputCheck.d.ts +15 -1
  437. package/_internal/InputCheck/InputCheck.js +6 -2
  438. package/_internal/InputCheck/InputCheckGroup.d.ts +11 -1
  439. package/_internal/InputCheck/InputCheckGroup.js +4 -2
  440. package/_internal/InputCheck/index.d.ts +4 -2
  441. package/_internal/InputTriggerPopper/InputTriggerPopper.js +15 -25
  442. package/_internal/InputTriggerPopper/index.d.ts +2 -1
  443. package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +3 -3
  444. package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +5 -28
  445. package/_internal/SlideFadeOverlay/index.d.ts +2 -1
  446. package/_internal/SlideFadeOverlay/useTopStack.js +1 -0
  447. package/dayjs.d.ts +21 -0
  448. package/dayjs.js +2 -0
  449. package/hooks/useComposeRefs.js +1 -1
  450. package/hooks/useLastCallback.js +3 -1
  451. package/hooks/useScrollLock.d.ts +28 -0
  452. package/hooks/useScrollLock.js +134 -0
  453. package/index.d.ts +128 -58
  454. package/index.js +90 -80
  455. package/luxon.d.ts +21 -0
  456. package/luxon.js +2 -0
  457. package/moment.d.ts +21 -0
  458. package/moment.js +2 -0
  459. package/package.json +14 -17
  460. package/utils/composeRefs.js +0 -1
  461. package/utils/flatten-children.d.ts +12 -0
  462. package/utils/flatten-children.js +37 -0
  463. package/utils/get-css-variable-value.d.ts +2 -0
  464. package/utils/get-css-variable-value.js +12 -0
  465. package/Button/IconButton.d.ts +0 -21
  466. package/Button/IconButton.js +0 -13
  467. package/DateTimePicker/DateTimePickerPanel.d.ts +0 -28
  468. package/DateTimePicker/DateTimePickerPanel.js +0 -49
  469. package/Form/FormMessage.d.ts +0 -7
  470. package/Form/FormMessage.js +0 -18
  471. package/Form/useInputWithTagsModeValue.js +0 -86
  472. package/Loading/Loading.d.ts +0 -33
  473. package/Loading/index.d.ts +0 -1
  474. package/Loading/index.js +0 -1
  475. package/Overlay/Overlay.js +0 -31
  476. package/Overlay/index.d.ts +0 -1
  477. package/Overlay/index.js +0 -1
  478. package/Picker/useRangePickerValue.d.ts +0 -23
  479. package/Picker/useRangePickerValue.js +0 -99
  480. package/Switch/Switch.d.ts +0 -43
  481. package/Switch/Switch.js +0 -28
  482. package/Switch/index.d.ts +0 -2
  483. package/Switch/index.js +0 -1
  484. package/Table/TableBody.d.ts +0 -10
  485. package/Table/TableBody.js +0 -30
  486. package/Table/TableBodyRow.d.ts +0 -11
  487. package/Table/TableBodyRow.js +0 -64
  488. package/Table/TableCell.d.ts +0 -19
  489. package/Table/TableCell.js +0 -24
  490. package/Table/TableExpandedTable.d.ts +0 -11
  491. package/Table/TableExpandedTable.js +0 -28
  492. package/Table/TableHeader.d.ts +0 -3
  493. package/Table/TableHeader.js +0 -35
  494. package/Table/draggable/useTableDraggable.d.ts +0 -14
  495. package/Table/draggable/useTableDraggable.js +0 -64
  496. package/Table/editable/TableEditRenderWrapper.d.ts +0 -7
  497. package/Table/editable/TableEditRenderWrapper.js +0 -15
  498. package/Table/expandable/TableExpandable.d.ts +0 -27
  499. package/Table/expandable/TableExpandable.js +0 -24
  500. package/Table/pagination/TablePagination.d.ts +0 -10
  501. package/Table/pagination/TablePagination.js +0 -25
  502. package/Table/pagination/useTablePagination.d.ts +0 -8
  503. package/Table/pagination/useTablePagination.js +0 -29
  504. package/Table/refresh/TableRefresh.d.ts +0 -10
  505. package/Table/refresh/TableRefresh.js +0 -20
  506. package/Table/rowSelection/TableRowSelection.d.ts +0 -18
  507. package/Table/rowSelection/TableRowSelection.js +0 -92
  508. package/Table/rowSelection/useTableRowSelection.d.ts +0 -6
  509. package/Table/rowSelection/useTableRowSelection.js +0 -53
  510. package/Table/sorting/TableSortingIcon.d.ts +0 -10
  511. package/Table/sorting/TableSortingIcon.js +0 -32
  512. package/Table/sorting/useTableSorting.d.ts +0 -11
  513. package/Table/sorting/useTableSorting.js +0 -120
  514. package/Table/useTableFetchMore.d.ts +0 -10
  515. package/Table/useTableFetchMore.js +0 -50
  516. package/Table/useTableLoading.d.ts +0 -5
  517. package/Table/useTableLoading.js +0 -19
  518. package/Table/useTableScroll.d.ts +0 -596
  519. package/Table/useTableScroll.js +0 -294
  520. package/Tabs/Tab.d.ts +0 -18
  521. package/Tabs/Tab.js +0 -16
  522. package/Tabs/TabPane.d.ts +0 -14
  523. package/Tabs/TabPane.js +0 -18
  524. package/Tabs/Tabs.d.ts +0 -39
  525. package/Tabs/Tabs.js +0 -47
  526. package/Tabs/index.d.ts +0 -3
  527. package/Tabs/index.js +0 -3
  528. package/Tabs/useTabsOverflow.d.ts +0 -8
  529. package/Tabs/useTabsOverflow.js +0 -61
  530. package/Transition/Grow.d.ts +0 -12
  531. package/Transition/Zoom.d.ts +0 -7
  532. package/Upload/UploadButton.d.ts +0 -9
  533. package/Upload/UploadButton.js +0 -23
  534. package/Upload/UploadInput.d.ts +0 -20
  535. package/Upload/UploadInput.js +0 -24
  536. package/Upload/UploadPicture.d.ts +0 -49
  537. package/Upload/UploadPicture.js +0 -51
  538. package/Upload/UploadPictureBlock.d.ts +0 -20
  539. package/Upload/UploadPictureBlock.js +0 -81
  540. package/Upload/UploadPictureWall.d.ts +0 -81
  541. package/Upload/UploadPictureWall.js +0 -168
  542. package/Upload/UploadPictureWallItem.d.ts +0 -15
  543. package/Upload/UploadPictureWallItem.js +0 -18
  544. package/Upload/UploadResult.d.ts +0 -35
  545. package/Upload/UploadResult.js +0 -29
  546. package/utils/scroll-lock.d.ts +0 -2
  547. package/utils/scroll-lock.js +0 -24
@@ -1,121 +1,206 @@
1
+ 'use client';
1
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { ClockIcon } from '@mezzanine-ui/icons';
3
- import { forwardRef, useContext, useMemo, useState, useCallback, useRef, useEffect } from 'react';
3
+ import { CalendarTimeIcon } from '@mezzanine-ui/icons';
4
+ import { forwardRef, useState, useRef, useEffect, useMemo, useCallback } from 'react';
4
5
  import { useComposeRefs } from '../hooks/useComposeRefs.js';
5
- import DateTimePickerPanel from './DateTimePickerPanel.js';
6
+ import TimePickerPanel from '../TimePicker/TimePickerPanel.js';
6
7
  import { useCalendarContext } from '../Calendar/CalendarContext.js';
7
- import { usePickerValue } from '../Picker/usePickerValue.js';
8
8
  import { usePickerDocumentEventClose } from '../Picker/usePickerDocumentEventClose.js';
9
9
  import Icon from '../Icon/Icon.js';
10
- import PickerTrigger from '../Picker/PickerTrigger.js';
11
- import { FormControlContext } from '../Form/FormControlContext.js';
10
+ import PickerTriggerWithSeparator from '../Picker/PickerTriggerWithSeparator.js';
11
+ import DatePickerCalendar from '../DatePicker/DatePickerCalendar.js';
12
12
 
13
13
  /**
14
- * The react component for `mezzanine` time picker.
15
- * Notice that any component related to time-picker should be used along with `CalendarContext`.
14
+ * The react component for `mezzanine` date-time picker.
15
+ * This component features two separate inputs for date and time,
16
+ * with independent calendar and time panels shown based on focus.
17
+ * Notice that any component related to date-time picker should be used along with `CalendarContext`.
16
18
  */
17
19
  const DateTimePicker = forwardRef(function DateTimePicker(props, ref) {
18
- const { disabled: disabledFromFormControl, fullWidth: fullWidthFromFormControl, required: requiredFromFormControl, severity, } = useContext(FormControlContext) || {};
19
- const { defaultDateFormat, defaultTimeFormat, getNow, startOf } = useCalendarContext();
20
- const defaultFormat = `${defaultDateFormat} ${defaultTimeFormat}`;
21
- const { calendarProps, className, clearable = true, confirmText, defaultValue, disabledMonthSwitch = false, disableOnNext, disableOnPrev, disabledYearSwitch = false, disabled = disabledFromFormControl, displayMonthLocale, error = severity === 'error' || false, fadeProps, format = defaultFormat, fullWidth = fullWidthFromFormControl, hideHour, hideMinute, hideSecond, hourPrefix, hourStep, inputProps, isDateDisabled, isMonthDisabled, isWeekDisabled, isYearDisabled, minutePrefix, minuteStep, onChange: onChangeProp, onPanelToggle: onPanelToggleProp, placeholder, popperProps, prefix, readOnly, referenceDate: referenceDateProp, required = requiredFromFormControl, secondPrefix, secondStep, size: sizeProp, value: valueProp, } = props;
22
- const { onBlur: onBlurProp, onKeyDown: onKeyDownProp, onFocus: onFocusProp, size: inputSize = format.length + 2, ...restInputProp } = inputProps || {};
23
- const formats = useMemo(() => [format, defaultFormat], [defaultFormat, format]);
24
- /** Panel open control */
25
- const [open, setOpen] = useState(false);
26
- const preventOpen = readOnly;
27
- const onPanelToggle = useCallback((nextOpen) => {
28
- if (!preventOpen) {
29
- setOpen(nextOpen);
30
- if (onPanelToggleProp) {
31
- onPanelToggleProp(nextOpen);
20
+ const { defaultDateFormat, defaultTimeFormat, formatToString, getNow, getHour, getMinute, getSecond, isValid, setHour, setMinute, setSecond, startOf, locale, } = useCalendarContext();
21
+ const {
22
+ // Calendar props
23
+ calendarProps, calendarRef, disabledMonthSwitch = false, disableOnDoubleNext, disableOnDoublePrev, disableOnNext, disableOnPrev, disabledYearSwitch = false, displayMonthLocale, isDateDisabled, isHalfYearDisabled, isMonthDisabled, isQuarterDisabled, isWeekDisabled, isYearDisabled, mode = 'day',
24
+ // Time panel props
25
+ hideHour, hideMinute, hideSecond, hourStep, minuteStep, secondStep,
26
+ // DateTimePicker specific props
27
+ className, clearable = true, defaultValue, disabled = false, error = false, fadeProps, formatDate = defaultDateFormat, formatTime = hideSecond ? 'HH:mm' : defaultTimeFormat, fullWidth = false, onClear: onClearProp, onChange: onChangeProp, onPanelToggle: onPanelToggleProp, placeholderLeft = formatDate, placeholderRight = formatTime, popperProps, popperPropsTime, prefix, readOnly, referenceDate: referenceDateProp, required = false, size, value: valueProp, ...restTriggerProps } = props;
28
+ // Internal state
29
+ const [focusedInput, setFocusedInput] = useState(null);
30
+ const [dateValue, setDateValue] = useState(defaultValue !== null && defaultValue !== void 0 ? defaultValue : valueProp);
31
+ const [timeValue, setTimeValue] = useState(defaultValue !== null && defaultValue !== void 0 ? defaultValue : valueProp);
32
+ // Refs
33
+ const inputLeftRef = useRef(null);
34
+ const inputRightRef = useRef(null);
35
+ const anchorRef = useRef(null);
36
+ const calendarPanelRef = useRef(null);
37
+ const timePanelRef = useRef(null);
38
+ const triggerComposedRef = useComposeRefs([anchorRef, ref]);
39
+ // Reference date for calendar
40
+ const [referenceDate, setReferenceDate] = useState(startOf(referenceDateProp || defaultValue || getNow(), 'day'));
41
+ // Sync external value
42
+ useEffect(() => {
43
+ if (valueProp !== undefined) {
44
+ setDateValue(valueProp);
45
+ setTimeValue(valueProp);
46
+ if (valueProp) {
47
+ setReferenceDate(startOf(valueProp, 'day'));
32
48
  }
33
49
  }
34
- }, [onPanelToggleProp, preventOpen]);
35
- const onFocus = useCallback((event) => {
36
- if (onFocusProp) {
37
- onFocusProp(event);
50
+ }, [valueProp, startOf]);
51
+ // Open state based on focused input
52
+ const openCalendar = focusedInput === 'left' && !readOnly;
53
+ const openTimePanel = focusedInput === 'right' && !readOnly;
54
+ // Format values for display
55
+ const displayDateValue = useMemo(() => {
56
+ if (!dateValue)
57
+ return '';
58
+ return formatToString(locale, dateValue, formatDate) || '';
59
+ }, [dateValue, formatDate, formatToString, locale]);
60
+ const displayTimeValue = useMemo(() => {
61
+ if (!timeValue)
62
+ return '';
63
+ return formatToString(locale, timeValue, formatTime) || '';
64
+ }, [timeValue, formatTime, formatToString, locale]);
65
+ // Panel toggle handler
66
+ const onPanelToggle = useCallback((open, input) => {
67
+ if (onPanelToggleProp) {
68
+ onPanelToggleProp(open, input);
38
69
  }
39
- onPanelToggle(true);
40
- }, [onFocusProp, onPanelToggle]);
41
- /** Controlling input value and bind change handler */
42
- const inputRef = useRef(null);
43
- const { inputValue, onBlur, onChange, onInputChange, onKeyDown, value: internalValue, } = usePickerValue({
44
- defaultValue,
45
- format,
46
- formats,
47
- inputRef,
48
- value: valueProp,
49
- });
50
- /** Panel confirm handler */
51
- const onConfirm = useCallback(() => {
52
- if (onChangeProp) {
53
- onChangeProp(internalValue);
70
+ }, [onPanelToggleProp]);
71
+ // Focus handlers
72
+ const onFocusLeft = useCallback(() => {
73
+ if (!readOnly) {
74
+ setFocusedInput('left');
75
+ onPanelToggle(true, 'left');
54
76
  }
55
- onPanelToggle(false);
56
- }, [internalValue, onChangeProp, onPanelToggle]);
57
- /** using internal reference date */
58
- const [referenceDate, setReferenceDate] = useState(startOf(referenceDateProp || defaultValue || getNow(), 'hour'));
59
- useEffect(() => {
60
- if (internalValue) {
61
- setReferenceDate(internalValue);
77
+ }, [onPanelToggle, readOnly]);
78
+ const onFocusRight = useCallback(() => {
79
+ if (!readOnly) {
80
+ setFocusedInput('right');
81
+ onPanelToggle(true, 'right');
62
82
  }
63
- }, [internalValue]);
64
- /** Bind input props */
65
- const onResolvedKeyDown = useCallback((event) => {
66
- if (onKeyDownProp) {
67
- onKeyDownProp(event);
83
+ }, [onPanelToggle, readOnly]);
84
+ // Combine date and time into a single value
85
+ const combineDateTime = useCallback((date, time) => {
86
+ if (!date)
87
+ return undefined;
88
+ const timeSource = time || getNow();
89
+ const result = setHour(setMinute(setSecond(date, getSecond(timeSource)), getMinute(timeSource)), getHour(timeSource));
90
+ return result;
91
+ }, [getNow, getHour, getMinute, getSecond, setHour, setMinute, setSecond]);
92
+ // Close handler
93
+ const onClose = useCallback(() => {
94
+ setFocusedInput(null);
95
+ onPanelToggle(false, null);
96
+ }, [onPanelToggle]);
97
+ // Trigger onChange when both date and time are set
98
+ const notifyChange = useCallback((date, time) => {
99
+ if (!onChangeProp)
100
+ return;
101
+ if (date && time) {
102
+ const combined = combineDateTime(date, time);
103
+ onChangeProp(combined);
68
104
  }
69
- onKeyDown(event);
70
- if (event.key === 'Enter') {
71
- onConfirm();
105
+ }, [combineDateTime, onChangeProp]);
106
+ // Handle left complete - auto focus right
107
+ const onLeftComplete = useCallback(() => {
108
+ if (timeValue) {
109
+ onClose();
72
110
  }
73
- }, [onConfirm, onKeyDown, onKeyDownProp]);
74
- const onResolvedBlur = useCallback((event) => {
75
- if (onBlurProp) {
76
- onBlurProp(event);
111
+ else {
112
+ setTimeout(() => {
113
+ var _a;
114
+ (_a = inputRightRef.current) === null || _a === void 0 ? void 0 : _a.focus();
115
+ }, 0);
77
116
  }
78
- onBlur(event);
79
- }, [onBlur, onBlurProp]);
80
- const resolvedInputProps = {
81
- ...restInputProp,
82
- size: inputSize,
83
- onFocus,
84
- onKeyDown: onResolvedKeyDown,
85
- onBlur: onResolvedBlur,
86
- };
87
- /** Popper positioning */
88
- const anchorRef = useRef(null);
89
- const panelRef = useRef(null);
90
- const triggerComposedRef = useComposeRefs([anchorRef, ref]);
91
- /** Blur, click away and key down close */
92
- const onClose = useCallback(() => {
93
- onChange(valueProp);
94
- onPanelToggle(false);
95
- }, [onChange, onPanelToggle, valueProp]);
117
+ }, [timeValue, onClose]);
118
+ // Handle left complete - auto focus right
119
+ const onRightComplete = useCallback(() => {
120
+ if (dateValue) {
121
+ onClose();
122
+ }
123
+ else {
124
+ setTimeout(() => {
125
+ var _a;
126
+ (_a = inputLeftRef.current) === null || _a === void 0 ? void 0 : _a.focus();
127
+ }, 0);
128
+ }
129
+ }, [dateValue, onClose]);
130
+ // Handle date change from input
131
+ const onChangeLeft = useCallback((isoValue) => {
132
+ if (!isoValue) {
133
+ setDateValue(undefined);
134
+ return;
135
+ }
136
+ if (isValid(isoValue)) {
137
+ setDateValue(isoValue);
138
+ setReferenceDate(startOf(isoValue, 'day'));
139
+ notifyChange(isoValue, timeValue);
140
+ }
141
+ }, [isValid, notifyChange, startOf, timeValue]);
142
+ const onChangeRight = useCallback((isoValue) => {
143
+ if (!isoValue) {
144
+ setTimeValue(undefined);
145
+ return;
146
+ }
147
+ if (isValid(isoValue)) {
148
+ setTimeValue(isoValue);
149
+ notifyChange(dateValue, isoValue);
150
+ }
151
+ }, [dateValue, isValid, notifyChange]);
152
+ const onCalendarChange = useCallback((target) => {
153
+ setDateValue(target);
154
+ setReferenceDate(startOf(target, 'day'));
155
+ notifyChange(target, timeValue);
156
+ onLeftComplete();
157
+ }, [notifyChange, startOf, timeValue, onLeftComplete]);
158
+ // Handle time change from panel
159
+ const onTimePanelChange = useCallback((target) => {
160
+ if (!target)
161
+ return;
162
+ setTimeValue(target);
163
+ notifyChange(dateValue, target);
164
+ onRightComplete();
165
+ }, [dateValue, notifyChange, onRightComplete]);
166
+ // Document event close for calendar
96
167
  usePickerDocumentEventClose({
97
- open,
98
168
  anchorRef,
99
- popperRef: panelRef,
100
- lastElementRefInFlow: inputRef,
169
+ lastElementRefInFlow: inputLeftRef,
170
+ onChangeClose: onClose,
101
171
  onClose,
172
+ open: openCalendar,
173
+ popperRef: calendarPanelRef,
174
+ });
175
+ // Document event close for time panel
176
+ usePickerDocumentEventClose({
177
+ anchorRef,
178
+ lastElementRefInFlow: inputRightRef,
102
179
  onChangeClose: onClose,
180
+ onClose,
181
+ open: openTimePanel,
182
+ popperRef: timePanelRef,
103
183
  });
104
- /** Bind on change to on clear */
105
- const onClear = () => {
106
- onChange(undefined);
184
+ const onClear = useCallback((evt) => {
185
+ setDateValue(undefined);
186
+ setTimeValue(undefined);
107
187
  onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(undefined);
108
- };
109
- /** Icon */
110
- const onIconClick = (e) => {
111
- e.stopPropagation();
112
- if (open) {
113
- onChange(valueProp);
188
+ onClearProp === null || onClearProp === void 0 ? void 0 : onClearProp(evt);
189
+ }, [onChangeProp, onClearProp]);
190
+ const onCalendarIconClick = useCallback(() => {
191
+ var _a;
192
+ if (readOnly || disabled)
193
+ return;
194
+ if (focusedInput) {
195
+ setFocusedInput(null);
196
+ onPanelToggle(false, null);
197
+ }
198
+ else {
199
+ (_a = inputLeftRef.current) === null || _a === void 0 ? void 0 : _a.focus();
114
200
  }
115
- onPanelToggle(!open);
116
- };
117
- const suffixActionIcon = jsx(Icon, { icon: ClockIcon, onClick: onIconClick });
118
- return (jsxs(Fragment, { children: [jsx(PickerTrigger, { 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: sizeProp, suffixActionIcon: suffixActionIcon, value: inputValue }), jsx(DateTimePickerPanel, { ref: panelRef, anchor: anchorRef, calendarProps: calendarProps, confirmText: confirmText, disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, fadeProps: fadeProps, hideHour: hideHour, hideMinute: hideMinute, hideSecond: hideSecond, hourPrefix: hourPrefix, hourStep: hourStep, isDateDisabled: isDateDisabled, isMonthDisabled: isMonthDisabled, isWeekDisabled: isWeekDisabled, isYearDisabled: isYearDisabled, minutePrefix: minutePrefix, minuteStep: minuteStep, onChange: onChange, onConfirm: onConfirm, open: open, popperProps: popperProps, referenceDate: referenceDate, secondPrefix: secondPrefix, secondStep: secondStep, value: internalValue })] }));
201
+ }, [disabled, focusedInput, onPanelToggle, readOnly]);
202
+ const suffix = (jsx(Icon, { "aria-label": "Open calendar", icon: CalendarTimeIcon, onClick: onCalendarIconClick }));
203
+ return (jsxs(Fragment, { children: [jsx(PickerTriggerWithSeparator, { ...restTriggerProps, ref: triggerComposedRef, className: className, clearable: clearable, disabled: disabled, error: error, formatLeft: formatDate, formatRight: formatTime, fullWidth: fullWidth, inputLeftRef: inputLeftRef, inputRightRef: inputRightRef, onBlurLeft: () => { }, onBlurRight: () => { }, onChangeLeft: onChangeLeft, onChangeRight: onChangeRight, onClear: onClear, onFocusLeft: onFocusLeft, onFocusRight: onFocusRight, onLeftComplete: onLeftComplete, onRightComplete: onRightComplete, placeholderLeft: placeholderLeft, placeholderRight: placeholderRight, prefix: prefix, readOnly: readOnly, required: required, size: size, suffix: suffix, valueLeft: displayDateValue, valueRight: displayTimeValue }), jsx(DatePickerCalendar, { ref: calendarPanelRef, anchor: anchorRef, calendarProps: calendarProps, calendarRef: calendarRef, disabledMonthSwitch: disabledMonthSwitch, disableOnDoubleNext: disableOnDoubleNext, disableOnDoublePrev: disableOnDoublePrev, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, fadeProps: fadeProps, isDateDisabled: isDateDisabled, isHalfYearDisabled: isHalfYearDisabled, isMonthDisabled: isMonthDisabled, isQuarterDisabled: isQuarterDisabled, isWeekDisabled: isWeekDisabled, isYearDisabled: isYearDisabled, mode: mode, onChange: onCalendarChange, open: openCalendar, popperProps: popperProps, referenceDate: referenceDate, value: dateValue }), jsx(TimePickerPanel, { ref: timePanelRef, anchor: anchorRef, fadeProps: fadeProps, hideHour: hideHour, hideMinute: hideMinute, hideSecond: hideSecond, hourStep: hourStep, minuteStep: minuteStep, onChange: onTimePanelChange, open: openTimePanel, popperProps: popperPropsTime, secondStep: secondStep, value: timeValue })] }));
119
204
  });
120
205
 
121
206
  export { DateTimePicker as default };
@@ -1,2 +1,2 @@
1
- export { DateTimePickerPanelProps, default as DateTimePickerPanel, } from './DateTimePickerPanel';
2
- export { DateTimePickerProps, default } from './DateTimePicker';
1
+ export type { DateTimePickerProps } from './DateTimePicker';
2
+ export { default } from './DateTimePicker';
@@ -1,2 +1 @@
1
- export { default as DateTimePickerPanel } from './DateTimePickerPanel.js';
2
1
  export { default } from './DateTimePicker.js';
@@ -1,12 +1,53 @@
1
- import { DrawerPlacement } from '@mezzanine-ui/core/drawer';
2
- import { SlideFadeOverlayProps } from '../_internal/SlideFadeOverlay';
1
+ import { DrawerSize } from '@mezzanine-ui/core/drawer';
3
2
  import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
4
- export interface DrawerProps extends Omit<SlideFadeOverlayProps, 'children'>, Pick<NativeElementPropsWithoutKeyAndRef<'div'>, 'children'> {
3
+ import { BackdropProps } from '../Backdrop';
4
+ export interface DrawerProps extends NativeElementPropsWithoutKeyAndRef<'div'>, Pick<BackdropProps, 'container' | 'disableCloseOnBackdropClick' | 'disablePortal' | 'onBackdropClick' | 'onClose' | 'open'> {
5
5
  /**
6
- * Whether the drawer placement.
7
- * @default 'left'
6
+ * Text for the ghost action button in the bottom action area.
8
7
  */
9
- placement?: DrawerPlacement;
8
+ bottomGhostActionText?: string;
9
+ /**
10
+ * Click handler for the ghost action button in the bottom action area.
11
+ */
12
+ bottomOnGhostActionClick?: VoidFunction;
13
+ /**
14
+ * Click handler for the primary action button in the bottom action area.
15
+ */
16
+ bottomOnPrimaryActionClick?: VoidFunction;
17
+ /**
18
+ * Click handler for the secondary action button in the bottom action area.
19
+ */
20
+ bottomOnSecondaryActionClick?: VoidFunction;
21
+ /**
22
+ * Text for the primary action button in the bottom action area.
23
+ */
24
+ bottomPrimaryActionText?: string;
25
+ /**
26
+ * Text for the secondary action button in the bottom action area.
27
+ */
28
+ bottomSecondaryActionText?: string;
29
+ /**
30
+ * Controls whether to disable closing drawer while escape key down.
31
+ * @default false
32
+ */
33
+ disableCloseOnEscapeKeyDown?: boolean;
34
+ /**
35
+ * Title text displayed in the drawer header.
36
+ */
37
+ headerTitle?: string;
38
+ /**
39
+ * Controls whether to display the bottom action area.
40
+ */
41
+ isBottomDisplay?: boolean;
42
+ /**
43
+ * Controls whether to display the header area.
44
+ */
45
+ isHeaderDisplay?: boolean;
46
+ /**
47
+ * Controls the width of the drawer.
48
+ * @default 'medium'
49
+ */
50
+ size?: DrawerSize;
10
51
  }
11
52
  declare const Drawer: import("react").ForwardRefExoticComponent<DrawerProps & import("react").RefAttributes<HTMLDivElement>>;
12
53
  export default Drawer;
package/Drawer/Drawer.js CHANGED
@@ -1,18 +1,43 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { forwardRef, useMemo } from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { forwardRef, useState } from 'react';
3
3
  import { drawerClasses } from '@mezzanine-ui/core/drawer';
4
- import SlideFadeOverlay from '../_internal/SlideFadeOverlay/SlideFadeOverlay.js';
4
+ import { useDocumentEscapeKeyDown } from '../hooks/useDocumentEscapeKeyDown.js';
5
+ import useTopStack from '../_internal/SlideFadeOverlay/useTopStack.js';
6
+ import ClearActions from '../ClearActions/ClearActions.js';
7
+ import Button from '../Button/Button.js';
8
+ import { MOTION_EASING, MOTION_DURATION } from '@mezzanine-ui/system/motion';
9
+ import Backdrop from '../Backdrop/Backdrop.js';
10
+ import Slide from '../Transition/Slide.js';
5
11
  import cx from 'clsx';
6
12
 
7
13
  const Drawer = forwardRef((props, ref) => {
8
- const { className, children, container, disableCloseOnBackdropClick = false, disableCloseOnEscapeKeyDown = false, disablePortal, hideBackdrop, invisibleBackdrop, onBackdropClick, onClose, open, placement = 'left', ...rest } = props;
9
- const slideFadeDirection = useMemo(() => ({
10
- top: 'down',
11
- left: 'right',
12
- right: 'left',
13
- bottom: 'up',
14
- }), []);
15
- return (jsx(SlideFadeOverlay, { className: drawerClasses.overlay, container: container, direction: slideFadeDirection[placement], disableCloseOnBackdropClick: disableCloseOnBackdropClick, disableCloseOnEscapeKeyDown: disableCloseOnEscapeKeyDown, disablePortal: disablePortal, hideBackdrop: hideBackdrop, invisibleBackdrop: invisibleBackdrop, onBackdropClick: onBackdropClick, onClose: onClose, open: open, ref: ref, children: jsx("div", { ...rest, className: cx(drawerClasses.host, drawerClasses[placement], className), children: children }) }));
14
+ const { bottomGhostActionText, bottomOnGhostActionClick, bottomOnPrimaryActionClick, bottomOnSecondaryActionClick, bottomPrimaryActionText, bottomSecondaryActionText, children, className, container, disableCloseOnBackdropClick = false, disableCloseOnEscapeKeyDown = false, disablePortal, headerTitle, isBottomDisplay, isHeaderDisplay, onBackdropClick, onClose, open, size = 'medium', ...rest } = props;
15
+ const [exited, setExited] = useState(true);
16
+ /**
17
+ * Escape keydown close: escape will only close the top drawer
18
+ */
19
+ const checkIsOnTheTop = useTopStack(open);
20
+ useDocumentEscapeKeyDown(() => {
21
+ if (!open || disableCloseOnEscapeKeyDown || !onClose) {
22
+ return;
23
+ }
24
+ return (event) => {
25
+ if (checkIsOnTheTop()) {
26
+ event.stopPropagation();
27
+ onClose();
28
+ }
29
+ };
30
+ }, [disableCloseOnEscapeKeyDown, checkIsOnTheTop, open, onClose]);
31
+ if (!open && exited) {
32
+ return null;
33
+ }
34
+ return (jsx(Backdrop, { className: drawerClasses.overlay, container: container, disableCloseOnBackdropClick: disableCloseOnBackdropClick, disablePortal: disablePortal, onBackdropClick: onBackdropClick, onClose: onClose, open: open, role: "presentation", children: jsx(Slide, { duration: {
35
+ enter: MOTION_DURATION.moderate,
36
+ exit: MOTION_DURATION.moderate,
37
+ }, easing: {
38
+ enter: MOTION_EASING.entrance,
39
+ exit: MOTION_EASING.exit,
40
+ }, in: open, onEntered: () => setExited(false), onExited: () => setExited(true), ref: ref, children: jsxs("div", { ...rest, className: cx(drawerClasses.host, drawerClasses.right, drawerClasses.size(size), className), children: [isHeaderDisplay && (jsxs("div", { className: drawerClasses.header, children: [headerTitle, jsx(ClearActions, { onClick: onClose })] })), jsx("div", { className: drawerClasses.content, children: children }), isBottomDisplay && (jsxs("div", { className: drawerClasses.bottom, children: [jsx("div", { children: bottomGhostActionText && bottomOnGhostActionClick && (jsx(Button, { onClick: bottomOnGhostActionClick, type: "button", variant: "base-ghost", children: bottomGhostActionText })) }), jsxs("div", { className: drawerClasses['bottom__actions'], children: [bottomSecondaryActionText && bottomOnSecondaryActionClick && (jsx(Button, { onClick: bottomOnSecondaryActionClick, type: "button", variant: "base-secondary", children: bottomSecondaryActionText })), bottomPrimaryActionText && bottomOnPrimaryActionClick && (jsx(Button, { onClick: bottomOnPrimaryActionClick, type: "button", variant: "base-primary", children: bottomPrimaryActionText }))] })] }))] }) }) }));
16
41
  });
17
42
 
18
43
  export { Drawer as default };
package/Drawer/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export type { DrawerPlacement } from '@mezzanine-ui/core/drawer';
2
- export { DrawerProps, default } from './Drawer';
2
+ export type { DrawerProps } from './Drawer';
3
+ export { default } from './Drawer';
@@ -1,29 +1,19 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef, useRef } from 'react';
3
+ import { size } from '@floating-ui/react-dom';
3
4
  import { useClickAway } from '../hooks/useClickAway.js';
4
5
  import { useComposeRefs } from '../hooks/useComposeRefs.js';
5
6
  import Popper from '../Popper/Popper.js';
6
7
 
7
- const popperOptions = {
8
- modifiers: [
9
- {
10
- name: 'sameWidth',
11
- enabled: true,
12
- phase: 'beforeWrite',
13
- requires: ['computeStyles'],
14
- fn: ({ state }) => {
15
- const reassignState = state;
16
- reassignState.styles.popper.width = 'auto';
17
- reassignState.styles.popper.minWidth = `${state.rects.reference.width}px`;
18
- },
19
- effect: ({ state }) => {
20
- const reassignState = state;
21
- reassignState.elements.popper.style.width = 'auto';
22
- reassignState.elements.popper.style.minWidth = `${state.elements.reference.getBoundingClientRect().width}px`;
23
- },
24
- },
25
- ],
26
- };
8
+ // Middleware to make the dropdown menu have the same width as the reference element
9
+ const sameWidthMiddleware = size({
10
+ apply({ rects, elements }) {
11
+ Object.assign(elements.floating.style, {
12
+ width: 'auto',
13
+ minWidth: `${rects.reference.width}px`,
14
+ });
15
+ },
16
+ });
27
17
  const Dropdown = forwardRef(function Dropdown(props, ref) {
28
18
  var _a;
29
19
  const { children, disableClickAway = false, menu, onClose, popperProps, ...rest } = props;
@@ -31,7 +21,7 @@ const Dropdown = forwardRef(function Dropdown(props, ref) {
31
21
  const popperRef = useRef(null);
32
22
  const composedRef = useComposeRefs([ref, popperRef]);
33
23
  const open = popperProps === null || popperProps === void 0 ? void 0 : popperProps.open;
34
- const modifiers = ((_a = popperProps === null || popperProps === void 0 ? void 0 : popperProps.options) === null || _a === void 0 ? void 0 : _a.modifiers) || [];
24
+ const middleware = ((_a = popperProps === null || popperProps === void 0 ? void 0 : popperProps.options) === null || _a === void 0 ? void 0 : _a.middleware) || [];
35
25
  useClickAway(() => {
36
26
  if (!open || disableClickAway || !onClose) {
37
27
  return;
@@ -45,7 +35,7 @@ const Dropdown = forwardRef(function Dropdown(props, ref) {
45
35
  return (jsxs(Fragment, { children: [children(anchor), jsx(Popper, { ...popperProps, ref: composedRef, ...rest, anchor: anchor, options: {
46
36
  placement: 'top-start',
47
37
  ...popperProps === null || popperProps === void 0 ? void 0 : popperProps.options,
48
- modifiers: [...(popperOptions.modifiers || []), ...modifiers],
38
+ middleware: [sameWidthMiddleware, ...middleware],
49
39
  }, children: menu })] }));
50
40
  });
51
41
 
@@ -1 +1,2 @@
1
- export { DropdownProps, default } from './Dropdown';
1
+ export type { DropdownProps } from './Dropdown';
2
+ export { default } from './Dropdown';
package/Empty/Empty.d.ts CHANGED
@@ -1,18 +1,3 @@
1
- import { ReactNode } from 'react';
2
- import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
3
- export interface EmptyProps extends Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'title'> {
4
- /**
5
- * if true, the empty component will be 100% height of it's parent
6
- */
7
- fullHeight?: boolean;
8
- /**
9
- * Override default icon.
10
- */
11
- image?: ReactNode;
12
- /**
13
- * Optionally given a title. If not required, simply use react children to display description.
14
- */
15
- title?: ReactNode;
16
- }
1
+ import { EmptyProps } from '.';
17
2
  declare const Empty: import("react").ForwardRefExoticComponent<EmptyProps & import("react").RefAttributes<HTMLDivElement>>;
18
3
  export default Empty;
package/Empty/Empty.js CHANGED
@@ -1,15 +1,67 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { forwardRef } from 'react';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { forwardRef, isValidElement, cloneElement } from 'react';
3
3
  import { emptyClasses } from '@mezzanine-ui/core/empty';
4
- import { FolderOpenIcon } from '@mezzanine-ui/icons';
4
+ import { SystemIcon, FolderOpenIcon, NotificationIcon, BoxIcon } from '@mezzanine-ui/icons';
5
+ import Button from '../Button/Button.js';
6
+ import ButtonGroup from '../Button/ButtonGroup.js';
7
+ import { EmptyMainInitialDataIcon } from './icons/EmptyMainInitialDataIcon.js';
8
+ import { EmptyMainResultIcon } from './icons/EmptyMainResultIcon.js';
9
+ import { EmptyMainSystemIcon } from './icons/EmptyMainSystemIcon.js';
10
+ import { flattenChildren } from '../utils/flatten-children.js';
5
11
  import Icon from '../Icon/Icon.js';
6
12
  import cx from 'clsx';
7
13
 
14
+ const iconMap = {
15
+ custom: null,
16
+ 'initial-data': BoxIcon,
17
+ notification: NotificationIcon,
18
+ result: FolderOpenIcon,
19
+ system: SystemIcon,
20
+ };
21
+ const mainIconMap = {
22
+ custom: null,
23
+ 'initial-data': jsx(EmptyMainInitialDataIcon, { className: emptyClasses.icon }),
24
+ notification: null,
25
+ result: jsx(EmptyMainResultIcon, { className: emptyClasses.icon }),
26
+ system: jsx(EmptyMainSystemIcon, { className: emptyClasses.icon }),
27
+ };
28
+ const renderButtonOrElement = (button, size, variant) => {
29
+ if (!button)
30
+ return null;
31
+ if (isValidElement(button)) {
32
+ return cloneElement(button, { size, variant });
33
+ }
34
+ return jsx(Button, { ...button, size: size, variant: variant });
35
+ };
8
36
  const Empty = forwardRef(function Empty(props, ref) {
9
- const { children, className, fullHeight, image = jsx(Icon, { className: emptyClasses.icon, icon: FolderOpenIcon }), title, ...rest } = props;
10
- return (jsxs("div", { ref: ref, ...rest, className: cx(emptyClasses.host, {
11
- [emptyClasses.fullHeight]: fullHeight,
12
- }, className), children: [image, title && jsx("div", { className: emptyClasses.title, children: title }), children && jsx("div", { className: emptyClasses.description, children: children })] }));
37
+ const { actions, children, className, description, pictogram, size = 'main', title, type = 'initial-data', ...rest } = props;
38
+ const icon = (size === 'main'
39
+ ? mainIconMap[type]
40
+ : iconMap[type] && (jsx(Icon, { className: emptyClasses.icon, icon: iconMap[type] }))) || null;
41
+ const flatChildren = flattenChildren(children);
42
+ const fragmentButtons = actions &&
43
+ ('secondaryButton' in actions ? (jsxs(Fragment, { children: [renderButtonOrElement(actions.secondaryButton, size, 'base-secondary'), renderButtonOrElement(actions.primaryButton, size, 'base-primary')] })) : (renderButtonOrElement(actions, size, 'base-secondary')));
44
+ const renderChildren = !fragmentButtons &&
45
+ flatChildren.length > 0 &&
46
+ flatChildren.map((child, index) => {
47
+ if (!isValidElement(child)) {
48
+ return null;
49
+ }
50
+ else if (child.type === Button) {
51
+ switch (index) {
52
+ case 0:
53
+ return renderButtonOrElement(child, size, 'base-secondary');
54
+ case 1:
55
+ return renderButtonOrElement(child, size, 'base-primary');
56
+ default:
57
+ console.warn('Only up to two Button components are allowed as children of Empty.');
58
+ return null;
59
+ }
60
+ }
61
+ console.warn('Only Button components are allowed as children of Empty.');
62
+ return null;
63
+ });
64
+ return (jsx("div", { ...rest, className: cx(emptyClasses.host, emptyClasses.size(size), className), ref: ref, children: jsxs("div", { className: emptyClasses.container, children: [pictogram ? jsx("div", { className: emptyClasses.icon, children: pictogram }) : icon, jsx("p", { className: emptyClasses.title, children: title }), description && jsx("p", { className: emptyClasses.description, children: description }), (actions || children) && size !== 'minor' && (jsx(ButtonGroup, { className: emptyClasses.actions, children: fragmentButtons || renderChildren }))] }) }));
13
65
  });
14
66
 
15
67
  export { Empty as default };
@@ -0,0 +1,4 @@
1
+ export interface EmptyMainInitialDataIconProps extends React.SVGProps<SVGSVGElement> {
2
+ size?: number;
3
+ }
4
+ export declare const EmptyMainInitialDataIcon: import("react").ForwardRefExoticComponent<Omit<EmptyMainInitialDataIconProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
@@ -0,0 +1,9 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+
4
+ const EmptyMainInitialDataIcon = forwardRef(function EmptyInitialDataIcon(props, ref) {
5
+ const { className, size = 64, ...rest } = props;
6
+ return (jsxs("svg", { ...rest, className: className, fill: "none", height: size, ref: ref, viewBox: "0 0 64 64", width: size, xmlns: "http://www.w3.org/2000/svg", children: [jsxs("defs", { children: [jsxs("linearGradient", { gradientUnits: "userSpaceOnUse", id: "paint0_linear_15033_10920", x1: "27.52", x2: "5.12", y1: "11.7333", y2: "52.6933", children: [jsx("stop", { stopColor: "#E5E7EB" }), jsx("stop", { offset: "1", stopColor: "#9DA4AE" })] }), jsxs("linearGradient", { gradientUnits: "userSpaceOnUse", id: "paint1_linear_15033_10920", x1: "43.2", x2: "38.2673", y1: "11.7333", y2: "52.0904", children: [jsx("stop", { stopColor: "#E5E7EB" }), jsx("stop", { offset: "1", stopColor: "#9DA4AE" })] }), jsx("clipPath", { id: "clip0_15033_10920", children: jsx("rect", { fill: "white", height: "64", width: "64" }) })] }), jsxs("g", { clipPath: "url(#clip0_15033_10920)", children: [jsx("path", { d: "M5.12 11.7333H27.52V52.6933H6.11999C5.56771 52.6933 5.12 52.2456 5.12 51.6933V11.7333Z", fill: "url(#paint0_linear_15033_10920)" }), jsx("path", { d: "M5.10416 11.7333H27.4282L22.3184 27.5737C22.1852 27.9867 21.8007 28.2667 21.3667 28.2667H1.14414C0.465656 28.2667 -0.0158672 27.6054 0.192428 26.9597L5.10416 11.7333Z", fill: "#E5E7EB" }), jsx("path", { d: "M27.52 11.7333H58.88V51.6933C58.88 52.2456 58.4323 52.6933 57.88 52.6933H27.52V11.7333Z", fill: "url(#paint1_linear_15033_10920)" }), jsx("path", { d: "M27.4282 11.7333H58.8871L63.7988 26.9597C64.0071 27.6054 63.5255 28.2667 62.8471 28.2667H33.4897C33.0557 28.2667 32.6712 27.9867 32.5379 27.5737L27.4282 11.7333Z", fill: "#E5E7EB" })] })] }));
7
+ });
8
+
9
+ export { EmptyMainInitialDataIcon };
@@ -0,0 +1,4 @@
1
+ export interface EmptyMainResultIconProps extends React.SVGProps<SVGSVGElement> {
2
+ size?: number;
3
+ }
4
+ export declare const EmptyMainResultIcon: import("react").ForwardRefExoticComponent<Omit<EmptyMainResultIconProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;