@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,19 +1,28 @@
1
1
  import { DateType } from '@mezzanine-ui/core/calendar';
2
2
  import { PickerTriggerProps } from '../Picker';
3
3
  import { TimePickerPanelProps } from './TimePickerPanel';
4
- export interface TimePickerProps extends Omit<TimePickerPanelProps, 'onConfirm'>, Omit<PickerTriggerProps, 'anchor' | 'defaultValue' | 'inputRef' | 'onChange' | 'onClear' | 'onClick' | 'onIconClick' | 'onKeyDown' | 'open' | 'suffixActionIcon' | 'value'> {
4
+ export interface TimePickerProps extends Omit<TimePickerPanelProps, 'anchor' | 'onChange' | 'open' | 'value'>, Omit<PickerTriggerProps, 'format' | 'inputRef' | 'onChange' | 'onClear' | 'suffix' | 'value'> {
5
5
  /**
6
6
  * Default value for time picker.
7
7
  */
8
8
  defaultValue?: DateType;
9
9
  /**
10
10
  * The format for displaying time.
11
+ * @default 'HH:mm:ss' or 'HH:mm' based on hideSecond
11
12
  */
12
13
  format?: string;
14
+ /**
15
+ * Change handler. Takes your declared `DateType` as argument.
16
+ */
17
+ onChange?: (target?: DateType) => void;
13
18
  /**
14
19
  * A function that fires when panel toggled. Receive open status in boolean format as props.
15
20
  */
16
21
  onPanelToggle?: (open: boolean) => void;
22
+ /**
23
+ * Current value of time picker.
24
+ */
25
+ value?: DateType;
17
26
  }
18
27
  /**
19
28
  * The react component for `mezzanine` time picker.
@@ -1,6 +1,7 @@
1
+ 'use client';
1
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
+ import { forwardRef, useCallback, useState, useMemo, useRef } from 'react';
2
4
  import { ClockIcon } from '@mezzanine-ui/icons';
3
- import { forwardRef, useContext, useMemo, useState, useCallback, useRef } from 'react';
4
5
  import { useComposeRefs } from '../hooks/useComposeRefs.js';
5
6
  import TimePickerPanel from './TimePickerPanel.js';
6
7
  import { useCalendarContext } from '../Calendar/CalendarContext.js';
@@ -8,18 +9,56 @@ import { usePickerValue } from '../Picker/usePickerValue.js';
8
9
  import { usePickerDocumentEventClose } from '../Picker/usePickerDocumentEventClose.js';
9
10
  import Icon from '../Icon/Icon.js';
10
11
  import PickerTrigger from '../Picker/PickerTrigger.js';
11
- import { FormControlContext } from '../Form/FormControlContext.js';
12
12
 
13
+ /**
14
+ * Validate if a time value matches the step constraint.
15
+ */
16
+ function isValidStep(value, step) {
17
+ if (step <= 1)
18
+ return true;
19
+ return value % step === 0;
20
+ }
13
21
  /**
14
22
  * The react component for `mezzanine` time picker.
15
23
  * Notice that any component related to time-picker should be used along with `CalendarContext`.
16
24
  */
17
25
  const TimePicker = forwardRef(function TimePicker(props, ref) {
18
- const { disabled: disabledFromFormControl, fullWidth: fullWidthFromFormControl, required: requiredFromFormControl, severity, } = useContext(FormControlContext) || {};
26
+ var _a;
19
27
  const { defaultTimeFormat } = useCalendarContext();
20
- const { className, clearable = true, confirmText, defaultValue, disabled = disabledFromFormControl, error = severity === 'error' || false, format = defaultTimeFormat, fullWidth = fullWidthFromFormControl, hideHour, hideMinute, hideSecond, hourPrefix, hourStep, inputProps, minutePrefix, minuteStep, onChange: onChangeProp, onPanelToggle: onPanelToggleProp, placeholder, popperProps, prefix, readOnly, required = requiredFromFormControl, secondPrefix, secondStep, size: sizeProp, value: valueProp, } = props;
21
- const { onBlur: onBlurProp, onKeyDown: onKeyDownProp, onFocus: onFocusProp, size: inputSize = format.length + 2, ...restInputProp } = inputProps || {};
22
- const formats = useMemo(() => [format], [format]);
28
+ const { className, clearable = true, defaultValue, disabled = false, error = false, fadeProps, fullWidth = false, hideHour, hideMinute, hideSecond, hourStep, inputProps, minuteStep, onChange: onChangeProp, onPanelToggle: onPanelToggleProp, placeholder, popperProps, prefix, readOnly, required = false, secondStep, size, value: valueProp, ...restTriggerProps } = props;
29
+ // Determine default format based on hideSecond
30
+ const resolvedFormat = (_a = props.format) !== null && _a !== void 0 ? _a : (hideSecond ? 'HH:mm' : defaultTimeFormat);
31
+ const { getHour, getMinute, getSecond } = useCalendarContext();
32
+ /**
33
+ * Validate time value against step constraints.
34
+ * Returns true if valid, false if the time doesn't match the step.
35
+ */
36
+ const validateTimeStep = useCallback((isoDate) => {
37
+ const hour = getHour(isoDate);
38
+ const minute = getMinute(isoDate);
39
+ const second = getSecond(isoDate);
40
+ if (!hideHour && hourStep && !isValidStep(hour, hourStep)) {
41
+ return false;
42
+ }
43
+ if (!hideMinute && minuteStep && !isValidStep(minute, minuteStep)) {
44
+ return false;
45
+ }
46
+ if (!hideSecond && secondStep && !isValidStep(second, secondStep)) {
47
+ return false;
48
+ }
49
+ return true;
50
+ }, [
51
+ getHour,
52
+ getMinute,
53
+ getSecond,
54
+ hideHour,
55
+ hideMinute,
56
+ hideSecond,
57
+ hourStep,
58
+ minuteStep,
59
+ secondStep,
60
+ ]);
61
+ const { onBlur: onBlurProp, onKeyDown: onKeyDownProp, onFocus: onFocusProp, ...restInputProp } = inputProps || {};
23
62
  /** Panel open control */
24
63
  const [open, setOpen] = useState(false);
25
64
  const preventOpen = readOnly;
@@ -31,38 +70,43 @@ const TimePicker = forwardRef(function TimePicker(props, ref) {
31
70
  }
32
71
  }
33
72
  }, [onPanelToggleProp, preventOpen]);
34
- const onFocus = useCallback((event) => {
35
- if (onFocusProp) {
36
- onFocusProp(event);
73
+ const onFocus = useMemo(() => {
74
+ if (readOnly) {
75
+ return undefined;
37
76
  }
38
- onPanelToggle(true);
39
- }, [onFocusProp, onPanelToggle]);
77
+ return (event) => {
78
+ if (onFocusProp) {
79
+ onFocusProp(event);
80
+ }
81
+ onPanelToggle(true);
82
+ };
83
+ }, [onPanelToggle, onFocusProp, readOnly]);
40
84
  /** Controlling input value and bind change handler */
41
85
  const inputRef = useRef(null);
42
86
  const { inputValue, onBlur, onChange, onInputChange, onKeyDown, value: internalValue, } = usePickerValue({
43
87
  defaultValue,
44
- format,
45
- formats,
88
+ format: resolvedFormat,
46
89
  inputRef,
47
90
  value: valueProp,
48
91
  });
49
- /** Panel confirm handler */
50
- const onConfirm = useCallback(() => {
51
- if (onChangeProp) {
52
- onChangeProp(internalValue);
92
+ /** Bind close control to handlers */
93
+ const onPanelChange = (val) => {
94
+ if (val) {
95
+ onChange(val);
96
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(val);
53
97
  }
54
- onPanelToggle(false);
55
- }, [internalValue, onChangeProp, onPanelToggle]);
56
- /** Bind input props */
57
- const onResolvedKeyDown = useCallback((event) => {
98
+ };
99
+ const onKeyDownWithCloseControl = useCallback((event) => {
100
+ onKeyDown(event);
58
101
  if (onKeyDownProp) {
59
102
  onKeyDownProp(event);
60
103
  }
61
- onKeyDown(event);
62
104
  if (event.key === 'Enter') {
63
- onConfirm();
105
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(internalValue);
106
+ onPanelToggle(false);
64
107
  }
65
- }, [onConfirm, onKeyDown, onKeyDownProp]);
108
+ }, [internalValue, onPanelToggle, onChangeProp, onKeyDown, onKeyDownProp]);
109
+ /** Resolve input props */
66
110
  const onResolvedBlur = useCallback((event) => {
67
111
  if (onBlurProp) {
68
112
  onBlurProp(event);
@@ -71,33 +115,36 @@ const TimePicker = forwardRef(function TimePicker(props, ref) {
71
115
  }, [onBlur, onBlurProp]);
72
116
  const resolvedInputProps = {
73
117
  ...restInputProp,
74
- size: inputSize,
75
118
  onFocus,
76
- onKeyDown: onResolvedKeyDown,
119
+ onKeyDown: onKeyDownWithCloseControl,
77
120
  onBlur: onResolvedBlur,
78
121
  };
79
122
  /** Popper positioning */
80
123
  const anchorRef = useRef(null);
124
+ const triggerComposedRef = useComposeRefs([ref, anchorRef]);
81
125
  const panelRef = useRef(null);
82
- const triggerComposedRef = useComposeRefs([anchorRef, ref]);
126
+ /** Clear handler */
127
+ const onClear = useCallback(() => {
128
+ onChange(undefined);
129
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(undefined);
130
+ }, [onChange, onChangeProp]);
83
131
  /** Blur, click away and key down close */
84
132
  const onClose = () => {
85
133
  onChange(valueProp);
86
134
  onPanelToggle(false);
87
135
  };
136
+ const onChangeClose = () => {
137
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(internalValue);
138
+ onPanelToggle(false);
139
+ };
88
140
  usePickerDocumentEventClose({
89
141
  open,
90
142
  anchorRef,
91
143
  popperRef: panelRef,
92
144
  lastElementRefInFlow: inputRef,
93
145
  onClose,
94
- onChangeClose: onClose,
146
+ onChangeClose,
95
147
  });
96
- /** Bind on change to on clear */
97
- const onClear = () => {
98
- onChange(undefined);
99
- onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(undefined);
100
- };
101
148
  /** Icon */
102
149
  const onIconClick = (e) => {
103
150
  e.stopPropagation();
@@ -106,8 +153,12 @@ const TimePicker = forwardRef(function TimePicker(props, ref) {
106
153
  }
107
154
  onPanelToggle(!open);
108
155
  };
109
- const suffixActionIcon = jsx(Icon, { icon: ClockIcon, onClick: onIconClick });
110
- 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(TimePickerPanel, { ref: panelRef, anchor: anchorRef, confirmText: confirmText, hideHour: hideHour, hideMinute: hideMinute, hideSecond: hideSecond, hourPrefix: hourPrefix, hourStep: hourStep, minutePrefix: minutePrefix, minuteStep: minuteStep, onChange: onChange, onConfirm: onConfirm, open: open, popperProps: popperProps, secondPrefix: secondPrefix, secondStep: secondStep, value: internalValue })] }));
156
+ const suffixIcon = (jsx(Icon, { "aria-label": "Open time picker", icon: ClockIcon, onClick: readOnly ? undefined : onIconClick }));
157
+ return (jsxs(Fragment, { children: [jsx(PickerTrigger, { ...restTriggerProps, ref: triggerComposedRef, className: className, clearable: clearable, disabled: disabled, error: error, format: resolvedFormat, fullWidth: fullWidth, inputProps: resolvedInputProps, inputRef: inputRef, onChange: (e) => {
158
+ onInputChange(e);
159
+ onPanelChange(e.target.value);
160
+ onPanelToggle(true);
161
+ }, onClear: onClear, onFocus: () => onPanelToggle(true), placeholder: placeholder, prefix: prefix, readOnly: readOnly, required: required, size: size, suffix: suffixIcon, validate: validateTimeStep, value: inputValue }), jsx(TimePickerPanel, { ref: panelRef, anchor: anchorRef, fadeProps: fadeProps, hideHour: hideHour, hideMinute: hideMinute, hideSecond: hideSecond, hourStep: hourStep, minuteStep: minuteStep, onChange: onPanelChange, open: open, popperProps: popperProps, secondStep: secondStep, value: internalValue })] }));
111
162
  });
112
163
 
113
164
  export { TimePicker as default };
@@ -1,8 +1,7 @@
1
1
  import { DateType } from '@mezzanine-ui/core/calendar';
2
2
  import { TimePanelProps } from '../TimePanel';
3
- import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
4
3
  import { InputTriggerPopperProps } from '../_internal/InputTriggerPopper';
5
- export interface TimePickerPanelProps extends Omit<TimePanelProps, Exclude<keyof NativeElementPropsWithoutKeyAndRef<'div'>, 'className' | 'style' | 'id'> | 'withoutAction' | 'onChange' | 'value'>, Pick<InputTriggerPopperProps, 'anchor' | 'fadeProps' | 'open'> {
4
+ export interface TimePickerPanelProps extends Pick<TimePanelProps, 'className' | 'hideHour' | 'hideMinute' | 'hideSecond' | 'hourStep' | 'minuteStep' | 'secondStep' | 'style'>, Pick<InputTriggerPopperProps, 'anchor' | 'fadeProps' | 'open'> {
6
5
  /**
7
6
  * Change Handler. Receive `DateType` as props.
8
7
  */
@@ -7,8 +7,8 @@ import TimePanel from '../TimePanel/TimePanel.js';
7
7
  * The react component for `mezzanine` time picker panel.
8
8
  */
9
9
  const TimePickerPanel = forwardRef(function TimePickerPanel(props, ref) {
10
- const { anchor, confirmText, fadeProps, hideHour, hideMinute, hideSecond, hourPrefix, hourStep, minutePrefix, minuteStep, onChange, onConfirm, open, popperProps, secondPrefix, secondStep, value, ...restHostProps } = props;
11
- return (jsx(InputTriggerPopper, { ...popperProps, ref: ref, anchor: anchor, open: open, fadeProps: fadeProps, children: jsx(TimePanel, { ...restHostProps, hideHour: hideHour, hourStep: hourStep, hideMinute: hideMinute, minuteStep: minuteStep, hideSecond: hideSecond, secondStep: secondStep, hourPrefix: hourPrefix, minutePrefix: minutePrefix, secondPrefix: secondPrefix, onChange: onChange, value: value, onConfirm: onConfirm, confirmText: confirmText }) }));
10
+ const { anchor, className, fadeProps, hideHour, hideMinute, hideSecond, hourStep, minuteStep, onChange, open, popperProps, secondStep, style, value, } = props;
11
+ return (jsx(InputTriggerPopper, { ...popperProps, ref: ref, anchor: anchor, open: open, fadeProps: fadeProps, children: jsx(TimePanel, { className: className, hideHour: hideHour, hideMinute: hideMinute, hideSecond: hideSecond, hourStep: hourStep, minuteStep: minuteStep, onChange: onChange, secondStep: secondStep, style: style, value: value }) }));
12
12
  });
13
13
 
14
14
  export { TimePickerPanel as default };
@@ -1,2 +1,4 @@
1
- export { TimePickerPanelProps, default as TimePickerPanel, } from './TimePickerPanel';
2
- export { TimePickerProps, default } from './TimePicker';
1
+ export { default as TimePickerPanel } from './TimePickerPanel';
2
+ export type { TimePickerPanelProps } from './TimePickerPanel';
3
+ export type { TimePickerProps } from './TimePicker';
4
+ export { default } from './TimePicker';
@@ -0,0 +1,46 @@
1
+ import { ChangeEventHandler } from 'react';
2
+ import { ToggleSize } from '@mezzanine-ui/core/toggle';
3
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
4
+ export interface ToggleProps extends Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'onChange'> {
5
+ /**
6
+ * Whether the toggle is checked.
7
+ */
8
+ checked?: boolean;
9
+ /**
10
+ * Whether the toggle is checked by default.
11
+ * Only used for uncontrolled.
12
+ */
13
+ defaultChecked?: boolean;
14
+ /**
15
+ * Whether the toggle is disabled.
16
+ * @default false
17
+ */
18
+ disabled?: boolean;
19
+ /**
20
+ * Since at Mezzanine we use a host element to wrap our input, most derived props will be passed to the host element.
21
+ * If you need direct control to the input element, use this prop to provide to it.
22
+ */
23
+ inputProps?: Omit<NativeElementPropsWithoutKeyAndRef<'input'>, 'checked' | 'defaultChecked' | 'disabled' | 'onChange' | 'placeholder' | 'type' | 'value' | `aria-${'disabled' | 'checked'}`>;
24
+ /**
25
+ * The label text displayed beside the toggle.
26
+ */
27
+ label?: string;
28
+ /**
29
+ * Invoked by input change event.
30
+ */
31
+ onChange?: ChangeEventHandler<HTMLInputElement>;
32
+ /**
33
+ * The size of toggle.
34
+ * @default 'main'
35
+ */
36
+ size?: ToggleSize;
37
+ /**
38
+ * Supporting text displayed below the label.
39
+ */
40
+ supportingText?: string;
41
+ }
42
+ /**
43
+ * The react component for `mezzanine` toggle.
44
+ */
45
+ declare const Toggle: import("react").ForwardRefExoticComponent<ToggleProps & import("react").RefAttributes<HTMLDivElement>>;
46
+ export default Toggle;
@@ -0,0 +1,29 @@
1
+ 'use client';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { forwardRef, useContext } from 'react';
4
+ import { toggleClasses } from '@mezzanine-ui/core/toggle';
5
+ import { useSwitchControlValue } from '../Form/useSwitchControlValue.js';
6
+ import Typography from '../Typography/Typography.js';
7
+ import { FormControlContext } from '../Form/FormControlContext.js';
8
+ import cx from 'clsx';
9
+
10
+ /**
11
+ * The react component for `mezzanine` toggle.
12
+ */
13
+ const Toggle = forwardRef(function Toggle(props, ref) {
14
+ const { disabled: disabledFromFormControl } = useContext(FormControlContext) || {};
15
+ const { checked: checkedProp, className, defaultChecked, disabled = disabledFromFormControl, inputProps, label, onChange: onChangeProp, size = 'main', supportingText, ...rest } = props;
16
+ const [checked, onChange] = useSwitchControlValue({
17
+ checked: checkedProp,
18
+ defaultChecked,
19
+ onChange: onChangeProp,
20
+ });
21
+ return (jsxs("div", { ref: ref, ...rest, className: cx(toggleClasses.host, {
22
+ [toggleClasses.checked]: checked,
23
+ [toggleClasses.disabled]: disabled,
24
+ [toggleClasses.main]: size === 'main',
25
+ [toggleClasses.sub]: size === 'sub',
26
+ }, className), children: [jsxs("div", { className: toggleClasses.inputContainer, children: [jsx("span", { className: toggleClasses.knob }), jsx("input", { ...inputProps, "aria-checked": checked, "aria-disabled": disabled, checked: checked, className: toggleClasses.input, disabled: disabled, onChange: onChange, type: "checkbox" })] }), label && (jsxs("div", { className: toggleClasses.textContainer, children: [jsx(Typography, { color: "text-neutral-solid", variant: "label-primary", children: label }), supportingText && (jsx(Typography, { color: "text-neutral", variant: "caption", children: supportingText }))] }))] }));
27
+ });
28
+
29
+ export { Toggle as default };
@@ -0,0 +1,3 @@
1
+ export type { ToggleSize } from '@mezzanine-ui/core/toggle';
2
+ export type { ToggleProps } from './Toggle';
3
+ export { default } from './Toggle';
@@ -0,0 +1 @@
1
+ export { default } from './Toggle.js';
@@ -1,13 +1,24 @@
1
1
  import { ReactElement, MouseEventHandler, ReactNode } from 'react';
2
2
  import { PopperProps } from '../Popper';
3
- export interface TooltipProps extends Omit<PopperProps, 'children' | 'title'> {
3
+ export interface TooltipProps extends Omit<PopperProps, 'arrow' | 'children' | 'disablePortal' | 'title'> {
4
4
  /**
5
- * child function that can receive events
5
+ * show arrow or not
6
+ * @default true
7
+ */
8
+ arrow?: boolean;
9
+ /**
10
+ * child function that can receive events and ref
6
11
  */
7
12
  children(opt: {
8
13
  onMouseEnter: MouseEventHandler;
9
14
  onMouseLeave: MouseEventHandler;
15
+ ref: React.RefCallback<HTMLElement>;
10
16
  }): ReactElement<any>;
17
+ /**
18
+ * Whether to disable portal. If true, it will be a normal component.
19
+ * @default true
20
+ */
21
+ disablePortal?: boolean;
11
22
  /**
12
23
  * delay time to hide when mouse leave. unit: s.
13
24
  * @default 0.1
@@ -1,28 +1,74 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
- import { forwardRef, useRef } from 'react';
2
+ import { forwardRef, useRef, useState, useCallback } from 'react';
3
3
  import { tooltipClasses } from '@mezzanine-ui/core/tooltip';
4
+ import { offset, flip, shift } from '@floating-ui/react-dom';
5
+ import { spacingPrefix } from '@mezzanine-ui/system/spacing';
4
6
  import { useComposeRefs } from '../hooks/useComposeRefs.js';
5
7
  import { useDelayMouseEnterLeave } from './useDelayMouseEnterLeave.js';
8
+ import { getCSSVariableValue } from '../utils/get-css-variable-value.js';
9
+ import { MOTION_EASING, MOTION_DURATION } from '@mezzanine-ui/system/motion';
10
+ import Fade from '../Transition/Fade.js';
6
11
  import Popper from '../Popper/Popper.js';
7
12
  import cx from 'clsx';
8
13
 
9
- const offsetModifier = {
10
- name: 'offset',
11
- options: { offset: [0, 8] },
12
- };
13
14
  /**
14
15
  * The react component for `mezzanine` tooltip.
15
16
  */
16
17
  const Tooltip = forwardRef(function Tooltip(props, ref) {
17
- const { anchor: anchorProp, children, className, mouseLeaveDelay = 0.1, open = false, options = {}, title, ...rest } = props;
18
- const { modifiers = [] } = options;
18
+ const { anchor: anchorProp, arrow: showArrow = true, children, className, disablePortal = true, mouseLeaveDelay = 0.1, open = false, options = {}, title, ...rest } = props;
19
+ const { middleware: middlewareProp = [] } = options;
19
20
  const tooltipRef = useRef(null);
21
+ const [targetRef, _setTargetRef] = useState({
22
+ current: null,
23
+ });
20
24
  const composedRef = useComposeRefs([ref, tooltipRef]);
21
- const { anchor, onLeave, onPopperEnter, onTargetEnter, visible } = useDelayMouseEnterLeave({ mouseLeaveDelay });
25
+ const { onLeave, onPopperEnter, onTargetEnter, visible } = useDelayMouseEnterLeave({ mouseLeaveDelay });
22
26
  /** tooltip shown only when title existed && visible is true */
23
27
  const isTooltipVisible = open || (visible && Boolean(title));
24
- return (jsxs(Fragment, { children: [jsx(Popper, { ...rest, ref: composedRef, anchor: anchorProp || anchor, className: cx(tooltipClasses.host, className), onMouseEnter: onPopperEnter, onMouseLeave: onLeave, open: isTooltipVisible, options: { ...options, modifiers: [...modifiers, offsetModifier] }, children: title }), typeof children === 'function' &&
25
- children({ onMouseEnter: onTargetEnter, onMouseLeave: onLeave })] }));
28
+ const offsetValue = Number(getCSSVariableValue(`--${spacingPrefix}-gap-base`).replace('rem', '')) * 16;
29
+ const placement = options.placement || 'top';
30
+ const isPlacementAtEdge = placement.endsWith('-start') || placement.endsWith('-end');
31
+ // 設置 target element,並重新渲染
32
+ const setTargetRef = useCallback((element) => {
33
+ _setTargetRef({ current: element });
34
+ }, []);
35
+ // middleware (shift, flip 會衝突,所以依照官方推薦設定 https://floating-ui.com/docs/flip#combining-with-shift)
36
+ const middleware = [offset({ mainAxis: offsetValue })];
37
+ const flipMiddleware = flip({
38
+ crossAxis: 'alignment',
39
+ fallbackAxisSideDirection: 'end',
40
+ });
41
+ const shiftMiddleware = shift();
42
+ if (placement.includes('-')) {
43
+ middleware.push(flipMiddleware, shiftMiddleware);
44
+ }
45
+ else {
46
+ middleware.push(shiftMiddleware, flipMiddleware);
47
+ }
48
+ return (jsxs(Fragment, { children: [jsx(Fade, { in: isTooltipVisible, duration: {
49
+ enter: MOTION_DURATION.fast,
50
+ exit: MOTION_DURATION.fast,
51
+ }, easing: {
52
+ enter: MOTION_EASING.standard,
53
+ exit: MOTION_EASING.standard,
54
+ }, children: jsx(Popper, { ...rest, ref: composedRef, anchor: anchorProp || targetRef.current, arrow: showArrow
55
+ ? {
56
+ className: tooltipClasses.arrow,
57
+ enabled: true,
58
+ padding: isPlacementAtEdge
59
+ ? Number(getCSSVariableValue(`--${spacingPrefix}-padding-horizontal-comfort`).replace('rem', '')) * 16
60
+ : 0,
61
+ }
62
+ : undefined, className: cx(tooltipClasses.host, className), disablePortal: disablePortal, onMouseEnter: onPopperEnter, onMouseLeave: onLeave, open: isTooltipVisible, options: {
63
+ ...options,
64
+ placement,
65
+ middleware: [...middleware, ...middlewareProp],
66
+ }, children: title }) }), typeof children === 'function' &&
67
+ children({
68
+ onMouseEnter: onTargetEnter,
69
+ onMouseLeave: onLeave,
70
+ ref: setTargetRef,
71
+ })] }));
26
72
  });
27
73
 
28
74
  export { Tooltip as default };
@@ -1 +1,2 @@
1
- export { default, TooltipProps } from './Tooltip';
1
+ export type { TooltipProps } from './Tooltip';
2
+ export { default } from './Tooltip';
@@ -2,10 +2,9 @@ export interface UseDelayMouseEnterLeave {
2
2
  mouseLeaveDelay?: number;
3
3
  }
4
4
  export interface DelayMouseEnterLeave {
5
- anchor: HTMLButtonElement | null;
6
5
  onLeave(v: any): void;
7
6
  onPopperEnter(v: any): void;
8
- onTargetEnter(v: React.MouseEvent<HTMLButtonElement, MouseEvent>): void;
7
+ onTargetEnter(v: React.MouseEvent<HTMLElement, MouseEvent>): void;
9
8
  visible: boolean;
10
9
  }
11
10
  export declare function useDelayMouseEnterLeave(opt: UseDelayMouseEnterLeave): DelayMouseEnterLeave;
@@ -1,36 +1,33 @@
1
- import { useState, useCallback } from 'react';
1
+ import { useState, useRef, useCallback } from 'react';
2
2
 
3
3
  function useDelayMouseEnterLeave(opt) {
4
4
  const { mouseLeaveDelay = 0.1 } = opt || {};
5
5
  /** state that control tooltip visible/invisible */
6
6
  const [visible, setVisible] = useState(false);
7
- /** tooltip reference anchor */
8
- const [anchor, setAnchor] = useState(null);
9
- /** timer for mouse leaving delay */
10
- let timer;
7
+ /** timer for mouse leaving delay - use ref to persist across renders */
8
+ const timerRef = useRef(null);
11
9
  const clearVisibilityDelayTimeout = useCallback(() => {
12
- if (timer) {
13
- clearTimeout(timer);
10
+ if (timerRef.current) {
11
+ clearTimeout(timerRef.current);
12
+ timerRef.current = null;
14
13
  }
15
14
  }, []);
16
15
  const onLeave = useCallback(() => {
17
- timer = setTimeout(() => {
16
+ timerRef.current = setTimeout(() => {
18
17
  setVisible(false);
19
18
  clearVisibilityDelayTimeout();
20
19
  }, mouseLeaveDelay * 1000);
21
- }, [mouseLeaveDelay]);
20
+ }, [mouseLeaveDelay, clearVisibilityDelayTimeout]);
22
21
  const onPopperEnter = useCallback(() => {
23
22
  clearVisibilityDelayTimeout();
24
23
  setVisible(true);
25
- }, []);
24
+ }, [clearVisibilityDelayTimeout]);
26
25
  const onTargetEnter = useCallback((event) => {
27
26
  event.stopPropagation();
28
- setAnchor(event.currentTarget);
29
27
  clearVisibilityDelayTimeout();
30
28
  setVisible(true);
31
- }, []);
29
+ }, [clearVisibilityDelayTimeout]);
32
30
  return {
33
- anchor,
34
31
  onLeave,
35
32
  onPopperEnter,
36
33
  onTargetEnter,
@@ -1,5 +1,6 @@
1
1
  import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
2
2
  import { TransitionImplementationProps } from './Transition';
3
+ /** @deprecated 設計師未定義,暫時標記為 deprecated */
3
4
  export interface CollapseProps extends TransitionImplementationProps, Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'children'> {
4
5
  /**
5
6
  * The height of the container while collapsed.
@@ -9,6 +10,7 @@ export interface CollapseProps extends TransitionImplementationProps, Omit<Nativ
9
10
  }
10
11
  /**
11
12
  * The react component for `mezzanine` transition collapse.
13
+ * @deprecated 設計師未定義,暫時標記為 deprecated
12
14
  */
13
15
  declare const Collapse: import("react").ForwardRefExoticComponent<CollapseProps & import("react").RefAttributes<HTMLElement>>;
14
16
  export default Collapse;
@@ -22,15 +22,16 @@ function getStyle(state, inProp, collapsedHeight) {
22
22
  return style;
23
23
  }
24
24
  const defaultEasing = {
25
- enter: MOTION_EASING.decelerated,
26
- exit: MOTION_EASING.accelerated,
25
+ enter: MOTION_EASING.entrance,
26
+ exit: MOTION_EASING.exit,
27
27
  };
28
28
  /**
29
29
  * The react component for `mezzanine` transition collapse.
30
+ * @deprecated 設計師未定義,暫時標記為 deprecated
30
31
  */
31
32
  const Collapse = forwardRef(function Collapse(props, ref) {
32
33
  const { appear, children, collapsedHeight: collapsedHeightProp = 0, delay = 0, duration = 'auto', easing = defaultEasing, in: inProp = false, lazyMount, keepMount, onEnter, onEntered, onEntering, onExit, onExiting, onExited, style, ...rest } = props;
33
- const { autoTransitionDuration, addEndListener } = useAutoTransitionDuration(duration);
34
+ const { autoTransitionDurationRef, addEndListener } = useAutoTransitionDuration(duration);
34
35
  const nodeRef = useRef(null);
35
36
  const wrapperRef = useRef(null);
36
37
  const collapsedHeight = typeof collapsedHeightProp === 'number'
@@ -44,7 +45,7 @@ const Collapse = forwardRef(function Collapse(props, ref) {
44
45
  properties: ['height'],
45
46
  resolveAutoDuration: () => {
46
47
  const autoSizeDuration = getAutoSizeDuration(getWrapperHeight());
47
- autoTransitionDuration.current = autoSizeDuration;
48
+ autoTransitionDurationRef.current = autoSizeDuration;
48
49
  return autoSizeDuration;
49
50
  },
50
51
  }, style);
@@ -57,7 +58,6 @@ const Collapse = forwardRef(function Collapse(props, ref) {
57
58
  lazyMount,
58
59
  keepMount: collapsedHeight !== '0px' ? true : keepMount,
59
60
  nodeRef,
60
- /* eslint-disable no-param-reassign */
61
61
  onEnter(node, isAppearing) {
62
62
  node.style.height = collapsedHeight;
63
63
  reflow(node);
@@ -99,7 +99,6 @@ const Collapse = forwardRef(function Collapse(props, ref) {
99
99
  onExited(node);
100
100
  }
101
101
  },
102
- /* eslint-enable no-param-reassign */
103
102
  };
104
103
  return (jsx(Transition, { ...transitionProps, children: (state) => (jsx("div", { ...rest, ref: composedNodeRef, style: { ...getStyle(state, inProp, collapsedHeight), ...style }, children: jsx("div", { ref: wrapperRef, style: { display: 'flex', width: '100%' }, children: jsx("div", { style: { width: '100%' }, children: children }) }) })) }));
105
104
  });
@@ -19,12 +19,12 @@ function getStyle(state, inProp) {
19
19
  return style;
20
20
  }
21
21
  const defaultDuration = {
22
- enter: MOTION_DURATION.short,
23
- exit: MOTION_DURATION.shorter,
22
+ enter: MOTION_DURATION.moderate,
23
+ exit: MOTION_DURATION.moderate,
24
24
  };
25
25
  const defaultEasing = {
26
- enter: MOTION_EASING.decelerated,
27
- exit: MOTION_EASING.accelerated,
26
+ enter: MOTION_EASING.entrance,
27
+ exit: MOTION_EASING.exit,
28
28
  };
29
29
  /**
30
30
  * The react component for `mezzanine` transition fade.
@@ -0,0 +1,42 @@
1
+ import { ReactElement } from 'react';
2
+ export interface RotateProps {
3
+ /**
4
+ * The child element to rotate.
5
+ */
6
+ children: ReactElement;
7
+ /**
8
+ * The rotation degrees when `open` is true.
9
+ * Common use case: arrow indicators in Select, Accordion, etc.
10
+ * @default 180
11
+ */
12
+ degrees?: number;
13
+ /**
14
+ * The duration of the rotation transition in milliseconds.
15
+ * @default MOTION_DURATION.fast (150ms)
16
+ */
17
+ duration?: number;
18
+ /**
19
+ * The easing function for the rotation transition.
20
+ * @default MOTION_EASING.standard
21
+ */
22
+ easing?: string;
23
+ /**
24
+ * Whether the element should be in the rotated state.
25
+ * @default false
26
+ */
27
+ in?: boolean;
28
+ /**
29
+ * The transform origin for child element.
30
+ * @default 'center'
31
+ */
32
+ transformOrigin?: string;
33
+ }
34
+ /**
35
+ * The react component for `mezzanine` transition rotate.
36
+ * Unlike other transition components, Rotate does not unmount the element.
37
+ * It simply rotates the element based on the `in` state.
38
+ *
39
+ * Common use case: arrow indicators that rotate to indicate expand/collapse state.
40
+ */
41
+ declare const Rotate: import("react").ForwardRefExoticComponent<RotateProps & import("react").RefAttributes<HTMLElement>>;
42
+ export default Rotate;