@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
package/Table/Table.js CHANGED
@@ -1,182 +1,237 @@
1
+ 'use client';
1
2
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { forwardRef, useRef, useMemo, Fragment } from 'react';
3
- import { DragDropContext, Droppable } from '@hello-pangea/dnd';
3
+ import { forwardRef, useRef, useMemo, useState, useCallback } from 'react';
4
4
  import { tableClasses } from '@mezzanine-ui/core/table';
5
- import { TableContext, TableDataContext, TableComponentContext } from './TableContext.js';
6
- import TableHeader from './TableHeader.js';
7
- import TableBody from './TableBody.js';
8
- import TablePagination from './pagination/TablePagination.js';
9
- import TableRefresh from './refresh/TableRefresh.js';
10
- import { useTableRowSelection } from './rowSelection/useTableRowSelection.js';
11
- import { useTableSorting } from './sorting/useTableSorting.js';
12
- import { useTableLoading } from './useTableLoading.js';
13
- import { useTableFetchMore } from './useTableFetchMore.js';
14
- import { useTableDraggable } from './draggable/useTableDraggable.js';
15
- import useTableScroll from './useTableScroll.js';
16
- import { useComposeRefs } from '../hooks/useComposeRefs.js';
5
+ import { DragDropContext, Droppable } from '@hello-pangea/dnd';
6
+ import { TableContext, TableDataContext, TableSuperContext } from './TableContext.js';
7
+ import { TableBody } from './components/TableBody.js';
8
+ import { TableColGroup } from './components/TableColGroup.js';
9
+ import { TableHeader } from './components/TableHeader.js';
10
+ import { TablePagination } from './components/TablePagination.js';
11
+ import { useTableColumns } from './hooks/useTableColumns.js';
12
+ import { useTableExpansion } from './hooks/useTableExpansion.js';
13
+ import { useTableFixedOffsets } from './hooks/useTableFixedOffsets.js';
14
+ import { useTableScroll } from './hooks/useTableScroll.js';
15
+ import { useTableSelection } from './hooks/useTableSelection.js';
16
+ import { useTableSorting } from './hooks/useTableSorting.js';
17
17
  import { composeRefs } from '../utils/composeRefs.js';
18
- import Loading from '../Loading/Loading.js';
18
+ import { getNumericCSSVariablePixelValue } from '../utils/get-css-variable-value.js';
19
+ import { spacingPrefix } from '@mezzanine-ui/system/spacing';
19
20
  import cx from 'clsx';
20
21
 
21
- const Table = forwardRef(function Table(props, ref) {
22
- var _a;
23
- const { bodyClassName, bodyRowClassName, className, columns, components, dataSource: dataSourceProp, draggable: draggableProp, emptyProps, expandable: expandableProp, fetchMore: fetchMoreProp, headerClassName, loading: loadingProp, loadingTip = '資料載入中...', pagination: paginationProp, refresh: refreshProp, rowSelection: rowSelectionProp, scroll: scrollProp, scrollContainerClassName, ...rest } = props;
24
- const bodyRef = useRef(null);
25
- /** Feature rowSelection */
26
- const [selectedRowKeys, setSelectedRowKey] = useTableRowSelection({
27
- selectedRowKey: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.selectedRowKey,
28
- onChange: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.onChange,
29
- dataSource: dataSourceProp,
30
- disabledRowKeys: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.disabledRowKeys,
31
- });
32
- const rowSelection = useMemo(() => rowSelectionProp
33
- ? {
34
- selectedRowKeys,
35
- onChange: setSelectedRowKey,
36
- actions: rowSelectionProp.actions,
37
- disabledRowKeys: rowSelectionProp.disabledRowKeys,
22
+ function TableInner(props, ref) {
23
+ const { className, columns, dataSource, draggable, emptyProps, expandable, highlight = 'row', loading = false, loadingRowsCount = 10, nested = false, pagination, resizable = false, rowHeightPreset = 'base', rowSelection, scroll, showHeader = true, size = 'main', sticky = true, style, transitionState, ...restProps } = props;
24
+ const hostRef = useRef(null);
25
+ const scrollContainerRef = useRef(null);
26
+ const tableRef = useRef(null);
27
+ // mock loading dataSource
28
+ const dataSourceForRender = loading
29
+ ? Array.from({ length: Math.max(loadingRowsCount, 1) }).map((_, idx) => ({
30
+ key: idx,
31
+ }))
32
+ : dataSource;
33
+ // get row height from preset
34
+ const rowHeight = useMemo(() => {
35
+ switch (rowHeightPreset) {
36
+ case 'condensed':
37
+ return size === 'main'
38
+ ? getNumericCSSVariablePixelValue(`--${spacingPrefix}-size-container-condensed`)
39
+ : getNumericCSSVariablePixelValue(`--${spacingPrefix}-size-container-reduced`);
40
+ case 'detailed':
41
+ return size === 'main'
42
+ ? getNumericCSSVariablePixelValue(`--${spacingPrefix}-size-container-tiny`)
43
+ : getNumericCSSVariablePixelValue(`--${spacingPrefix}-size-container-tightened`);
44
+ case 'roomy':
45
+ return size === 'main'
46
+ ? getNumericCSSVariablePixelValue(`--${spacingPrefix}-size-container-small`)
47
+ : getNumericCSSVariablePixelValue(`--${spacingPrefix}-size-container-medium`);
48
+ case 'base':
49
+ default:
50
+ return size === 'main'
51
+ ? getNumericCSSVariablePixelValue(`--${spacingPrefix}-size-container-minimized`)
52
+ : getNumericCSSVariablePixelValue(`--${spacingPrefix}-size-container-minimal`);
38
53
  }
39
- : undefined, [rowSelectionProp, selectedRowKeys, setSelectedRowKey]);
40
- /** Feature sorting */
41
- const [dataSource, onSort, { sortedOn, sortedType, onResetAll, setDataSource },] = useTableSorting({
42
- dataSource: dataSourceProp,
43
- });
44
- /** Feature loading */
45
- const [loading, setLoading] = useTableLoading({
46
- loading: loadingProp,
54
+ }, [rowHeightPreset, size]);
55
+ // Highlight state for hover effects
56
+ const [hoveredRowIndex, setHoveredRowIndex] = useState(null);
57
+ const [hoveredColumnIndex, setHoveredColumnIndex] = useState(null);
58
+ const setHoveredCell = useCallback((rowIndex, columnIndex) => {
59
+ setHoveredRowIndex(rowIndex);
60
+ setHoveredColumnIndex(columnIndex);
61
+ }, []);
62
+ // Hooks
63
+ const sortingState = useTableSorting({
64
+ columns,
47
65
  });
48
- /** Feature fetchMore */
49
- const { fetchMore: onFetchMore, isFetching, isReachEnd, } = useTableFetchMore({
50
- callback: fetchMoreProp === null || fetchMoreProp === void 0 ? void 0 : fetchMoreProp.callback,
66
+ const selectionState = useTableSelection({
51
67
  dataSource,
52
- /** when pagination is given, fetchMore feature should be disabled */
53
- disabled: !!paginationProp,
54
- isReachEnd: fetchMoreProp === null || fetchMoreProp === void 0 ? void 0 : fetchMoreProp.isReachEnd,
55
- isFetching: fetchMoreProp === null || fetchMoreProp === void 0 ? void 0 : fetchMoreProp.isFetching,
68
+ rowSelection,
56
69
  });
57
- /** Feature refresh */
58
- const isRefreshShow = useMemo(() => { var _a;
59
- /** @default false */
60
- return (_a = refreshProp === null || refreshProp === void 0 ? void 0 : refreshProp.show) !== null && _a !== void 0 ? _a : false; }, [refreshProp === null || refreshProp === void 0 ? void 0 : refreshProp.show]);
61
- /** Feature Scrolling */
62
- const [scrollBody, scrollElement, isHorizontalScrolling] = useTableScroll({
63
- onFetchMore,
64
- loading,
65
- scrollBarSize: 4,
70
+ const expansionState = useTableExpansion({
71
+ expandable,
72
+ hasDragHandle: !!(draggable === null || draggable === void 0 ? void 0 : draggable.enabled),
66
73
  });
67
- /** Feature drag and drop */
68
- const { draggingId, onBeforeDragStart, onDragEnd } = useTableDraggable({
69
- dataSource,
70
- setDataSource,
71
- draggable: draggableProp,
74
+ const actionConfig = useMemo(() => ({
75
+ hasDragHandle: !!(draggable === null || draggable === void 0 ? void 0 : draggable.enabled),
76
+ dragHandleFixed: !!(draggable === null || draggable === void 0 ? void 0 : draggable.fixed),
77
+ hasExpansion: !!expandable,
78
+ expansionFixed: !!(expandable === null || expandable === void 0 ? void 0 : expandable.fixed),
79
+ hasSelection: !!rowSelection,
80
+ selectionFixed: !!(rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.fixed),
81
+ }), [draggable === null || draggable === void 0 ? void 0 : draggable.enabled, draggable === null || draggable === void 0 ? void 0 : draggable.fixed, expandable, rowSelection]);
82
+ const columnState = useTableColumns({
83
+ actionConfig,
84
+ columns,
72
85
  });
73
- /** context */
74
- const tableContextValue = useMemo(() => {
75
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
76
- return ({
77
- emptyProps,
78
- rowSelection,
79
- isHorizontalScrolling,
80
- sorting: {
81
- onSort,
82
- onResetAll,
83
- sortedOn,
84
- sortedType,
85
- },
86
- loading,
87
- setLoading,
88
- expanding: expandableProp,
89
- fetchMore: onFetchMore
90
- ? {
91
- onFetchMore,
92
- isFetching,
93
- isReachEnd,
94
- }
95
- : undefined,
96
- pagination: paginationProp
97
- ? {
98
- current: paginationProp.current,
99
- disableAutoSlicing: (_a = paginationProp.disableAutoSlicing) !== null && _a !== void 0 ? _a : false,
100
- onChange: paginationProp.onChange,
101
- total: (_b = paginationProp.total) !== null && _b !== void 0 ? _b : dataSource.length,
102
- options: {
103
- ...((_c = paginationProp.options) !== null && _c !== void 0 ? _c : {}),
104
- boundaryCount: (_e = (_d = paginationProp.options) === null || _d === void 0 ? void 0 : _d.boundaryCount) !== null && _e !== void 0 ? _e : 1,
105
- pageSize: (_g = (_f = paginationProp.options) === null || _f === void 0 ? void 0 : _f.pageSize) !== null && _g !== void 0 ? _g : 10,
106
- siblingCount: (_j = (_h = paginationProp.options) === null || _h === void 0 ? void 0 : _h.siblingCount) !== null && _j !== void 0 ? _j : 1,
107
- },
108
- }
109
- : undefined,
110
- scroll: scrollProp,
111
- draggable: draggableProp
112
- ? {
113
- ...draggableProp,
114
- draggingId,
115
- }
116
- : undefined,
117
- });
118
- }, [
119
- dataSource,
86
+ const scrollState = useTableScroll({
87
+ enabled: !nested,
88
+ });
89
+ // Fixed column offset calculations
90
+ const fixedOffsetsState = useTableFixedOffsets({
91
+ actionConfig,
92
+ columns: columns,
93
+ getResizedColumnWidth: columnState.getResizedColumnWidth,
94
+ });
95
+ // Stabilize draggable object
96
+ const draggableValue = useMemo(() => draggable
97
+ ? {
98
+ draggingId: null,
99
+ enabled: true,
100
+ fixed: draggable.fixed,
101
+ }
102
+ : undefined, [draggable]);
103
+ // Stabilize highlight object
104
+ const highlightValue = useMemo(() => ({
105
+ columnIndex: hoveredColumnIndex,
106
+ mode: highlight,
107
+ rowIndex: hoveredRowIndex,
108
+ setHoveredCell,
109
+ }), [highlight, hoveredColumnIndex, hoveredRowIndex, setHoveredCell]);
110
+ // Determine if virtual scrolling should be enabled
111
+ // Requires scroll.virtualized to be true AND scroll.y to be set
112
+ const virtualScrollEnabled = !!((scroll === null || scroll === void 0 ? void 0 : scroll.virtualized) && (scroll === null || scroll === void 0 ? void 0 : scroll.y));
113
+ // Context value - cast to any to avoid complex generic issues
114
+ const contextValue = useMemo(() => ({
115
+ columnState,
116
+ columns: columns,
117
+ dataSource: dataSourceForRender,
118
+ draggable: draggableValue,
120
119
  emptyProps,
121
- expandableProp,
122
- rowSelection,
123
- onSort,
124
- onResetAll,
125
- sortedOn,
126
- sortedType,
120
+ expansion: expansionState,
121
+ fixedOffsets: fixedOffsetsState,
122
+ resizable,
123
+ rowHeight,
124
+ highlight: highlightValue,
125
+ isScrollingHorizontally: scrollState.isScrollingHorizontally,
126
+ isInsideExpandedContentArea: nested,
127
127
  loading,
128
- setLoading,
129
- onFetchMore,
130
- isFetching,
131
- isReachEnd,
132
- paginationProp,
133
- isHorizontalScrolling,
134
- scrollProp,
135
- draggableProp,
136
- draggingId,
137
- ]);
138
- const tableDataContextValue = useMemo(() => ({
128
+ pagination: pagination || undefined,
129
+ scroll,
130
+ scrollContainerRef,
131
+ selection: selectionState,
132
+ size,
133
+ sorting: sortingState,
134
+ transitionState,
135
+ virtualScrollEnabled,
136
+ }), [
137
+ columnState,
139
138
  columns,
139
+ dataSourceForRender,
140
+ draggableValue,
141
+ emptyProps,
142
+ expansionState,
143
+ fixedOffsetsState,
144
+ resizable,
145
+ rowHeight,
146
+ highlightValue,
147
+ loading,
148
+ pagination,
149
+ scroll,
150
+ scrollContainerRef,
151
+ scrollState.isScrollingHorizontally,
152
+ selectionState,
153
+ size,
154
+ sortingState,
155
+ transitionState,
156
+ virtualScrollEnabled,
157
+ nested,
158
+ ]);
159
+ const dataContextValue = useMemo(() => ({
160
+ columns: columns,
140
161
  dataSource,
141
162
  }), [columns, dataSource]);
142
- const tableComponentContextValue = useMemo(() => {
163
+ const superContextValue = useMemo(() => {
143
164
  var _a;
144
165
  return ({
145
- bodyCell: (_a = components === null || components === void 0 ? void 0 : components.body) === null || _a === void 0 ? void 0 : _a.cell,
166
+ containerWidth: scrollState.containerWidth,
167
+ getResizedColumnWidth: columnState.getResizedColumnWidth,
168
+ scrollLeft: scrollState.scrollLeft,
169
+ expansionLeftPadding: (_a = expansionState === null || expansionState === void 0 ? void 0 : expansionState.expansionLeftPadding) !== null && _a !== void 0 ? _a : 0,
146
170
  });
147
- }, [(_a = components === null || components === void 0 ? void 0 : components.body) === null || _a === void 0 ? void 0 : _a.cell]);
148
- const tableRefs = useComposeRefs([ref, scrollBody.target]);
149
- const rowClassName = useMemo(() => {
150
- if (bodyRowClassName) {
151
- if (typeof bodyRowClassName === 'string') {
152
- return () => bodyRowClassName;
153
- }
154
- return (source) => bodyRowClassName === null || bodyRowClassName === void 0 ? void 0 : bodyRowClassName(source);
171
+ }, [
172
+ scrollState.scrollLeft,
173
+ expansionState === null || expansionState === void 0 ? void 0 : expansionState.expansionLeftPadding,
174
+ scrollState.containerWidth,
175
+ columnState.getResizedColumnWidth,
176
+ ]);
177
+ // Drag and drop handler
178
+ const handleDragEnd = useCallback((result) => {
179
+ var _a;
180
+ if (!result.destination || !draggable)
181
+ return;
182
+ const sourceIndex = result.source.index;
183
+ const destIndex = result.destination.index;
184
+ if (sourceIndex === destIndex)
185
+ return;
186
+ const newData = [...dataSource];
187
+ const [removed] = newData.splice(sourceIndex, 1);
188
+ newData.splice(destIndex, 0, removed);
189
+ (_a = draggable.onDragEnd) === null || _a === void 0 ? void 0 : _a.call(draggable, newData);
190
+ }, [dataSource, draggable]);
191
+ const sizeClass = size === 'sub' ? tableClasses.sub : tableClasses.main;
192
+ // Scroll container style
193
+ const scrollContainerStyle = useMemo(() => {
194
+ const containerStyle = {};
195
+ if (scroll === null || scroll === void 0 ? void 0 : scroll.y) {
196
+ containerStyle.maxHeight = scroll.y;
197
+ containerStyle.overflowY = 'auto';
198
+ }
199
+ if (scroll === null || scroll === void 0 ? void 0 : scroll.x) {
200
+ containerStyle.overflowX = 'auto';
201
+ }
202
+ if (nested) {
203
+ containerStyle.position = 'unset';
204
+ containerStyle.overflow = 'unset';
205
+ }
206
+ return containerStyle;
207
+ }, [scroll === null || scroll === void 0 ? void 0 : scroll.x, scroll === null || scroll === void 0 ? void 0 : scroll.y, nested]);
208
+ // Table style with min-width for horizontal scroll
209
+ const tableStyle = useMemo(() => {
210
+ const baseStyle = {};
211
+ if (scroll === null || scroll === void 0 ? void 0 : scroll.x) {
212
+ baseStyle.minWidth = scroll.x;
213
+ baseStyle.width = '100%';
155
214
  }
156
- return undefined;
157
- }, [bodyRowClassName]);
158
- return (jsx(TableContext.Provider, { value: tableContextValue, children: jsx(TableDataContext.Provider, { value: tableDataContextValue, children: jsx(TableComponentContext.Provider, { value: tableComponentContextValue, children: jsx(DragDropContext, { onBeforeDragStart: onBeforeDragStart, onDragEnd: onDragEnd, children: jsx(Loading, { loading: loading, stretch: true, tip: loadingTip, overlayProps: {
159
- className: tableClasses.loading,
160
- }, children: jsx(Droppable, { droppableId: "mzn-table-dnd", isDropDisabled: !(draggableProp === null || draggableProp === void 0 ? void 0 : draggableProp.enabled), children: (provided) => (jsxs(Fragment, { children: [jsx("div", { ...provided.droppableProps, ref: composeRefs([scrollBody.ref, provided.innerRef]), className: cx(tableClasses.scrollContainer, scrollContainerClassName), onScroll: scrollBody.onScroll, style: tableContextValue.scroll
161
- ? {
162
- '--table-scroll-x': tableContextValue.scroll.x
163
- ? `${tableContextValue.scroll.x}px`
164
- : '100%',
165
- '--table-scroll-y': tableContextValue.scroll.y
166
- ? `${tableContextValue.scroll.y}px`
167
- : 'unset',
168
- }
169
- : undefined, children: jsxs("table", { ref: tableRefs, ...rest, className: cx(tableClasses.host, className), children: [isRefreshShow ? (jsx("tbody", { children: jsx("tr", { children: jsx("td", { "aria-label": "Refresh", children: jsx(TableRefresh, { onClick: refreshProp.onClick }) }) }) })) : null, jsx(TableHeader, { className: headerClassName }), jsx(TableBody, { ref: bodyRef, className: bodyClassName, rowClassName: rowClassName }), jsx("tbody", { children: provided.placeholder })] }) }), paginationProp ? (jsx(TablePagination, { bodyRef: bodyRef })) : null, jsx("div", { ref: scrollElement.trackRef, "aria-label": "Scroll Track", style: scrollElement.trackStyle, onMouseDown: scrollElement.onMouseDown, onMouseUp: scrollElement.onMouseUp, role: "button", tabIndex: -1, className: "mzn-table-scroll-bar-track", children: jsx("div", { style: {
170
- width: '100%',
171
- height: '100%',
172
- position: 'relative',
173
- }, children: jsx("div", { ref: scrollElement.ref, "aria-label": "Scroll Bar", onMouseDown: scrollElement.onMouseDown, onMouseUp: scrollElement.onMouseUp, onMouseEnter: scrollElement.onMouseEnter, onMouseLeave: scrollElement.onMouseLeave, role: "button", style: scrollElement.style, tabIndex: -1, className: "mzn-table-scroll-bar", children: jsx("div", { style: {
174
- width: `${scrollElement.scrollBarSize}px`,
175
- height: '100%',
176
- borderRadius: '10px',
177
- backgroundColor: '#7d7d7d',
178
- transition: '0.1s',
179
- } }) }) }) })] })) }) }) }) }) }) }));
180
- });
215
+ return baseStyle;
216
+ }, [scroll === null || scroll === void 0 ? void 0 : scroll.x]);
217
+ const { setContainerRef } = scrollState;
218
+ const handleScrollContainerRef = useCallback((element) => {
219
+ scrollContainerRef.current = element;
220
+ setContainerRef(element);
221
+ }, [setContainerRef]);
222
+ const mainTable = (jsx(TableContext.Provider, { value: contextValue, children: jsx(TableDataContext.Provider, { value: dataContextValue, children: jsxs("div", { className: cx(tableClasses.host, className), ref: ref, style: style, ...restProps, children: [jsx("div", { className: cx(tableClasses.scrollContainer, {
223
+ [tableClasses.sticky]: !!sticky,
224
+ }), onScroll: scrollState.handleScroll, ref: handleScrollContainerRef, style: scrollContainerStyle, children: jsxs("table", { className: cx(tableClasses.root, sizeClass), ref: tableRef, style: tableStyle, children: [jsx(TableColGroup, {}), showHeader && jsx(TableHeader, {}), jsx(TableBody, {})] }) }), pagination && jsx(TablePagination, { ...pagination })] }) }) }));
225
+ if (nested) {
226
+ return mainTable;
227
+ }
228
+ return (jsx(DragDropContext, { onDragEnd: handleDragEnd, children: jsx(Droppable, { droppableId: "mzn-table-v2-dnd", children: (provided) => (jsxs("div", { ...provided.droppableProps, ref: composeRefs([hostRef, provided.innerRef]), children: [jsx(TableSuperContext.Provider, { value: superContextValue, children: mainTable }), provided.placeholder] })) }) }));
229
+ }
230
+ /**
231
+ * Table is a high-performance data table component with support for
232
+ * virtual scrolling, column resizing, fixed columns, row selection,
233
+ * sorting, expandable rows, and drag-and-drop row reordering.
234
+ */
235
+ const Table = forwardRef(TableInner);
181
236
 
182
- export { Table as default };
237
+ export { Table, Table as default };
@@ -1,53 +1,116 @@
1
- import { ReactNode } from 'react';
2
- import { TableRowSelection, TableColumn, TableExpandable, TablePagination, TableDataSource, TableRecord, ExpandRowBySources, TableScrolling, TableDraggable } from '@mezzanine-ui/core/table';
3
- import { EmptyProps } from '../Empty';
4
- /** typeof rowSelection */
5
- export interface RowSelectionContext extends Pick<TableRowSelection, 'actions'> {
6
- selectedRowKeys: string[];
7
- onChange(v: string): void;
8
- disabledRowKeys?: string[];
9
- }
10
- /** typeof sorting */
11
- export interface SortingContext {
12
- onSort(v: Pick<TableColumn<TableRecord<unknown>>, 'key' | 'dataIndex' | 'sorter' | 'onSorted'>): void;
13
- onResetAll(): void;
14
- sortedOn: string;
15
- sortedType: string;
16
- }
17
- /** typeof loading */
18
- export interface LoadingContext {
19
- setLoading(l: boolean): void;
20
- }
21
- /** typeof fetchMore */
22
- export interface FetchMoreContext {
23
- onFetchMore(): void;
24
- isFetching: boolean;
25
- isReachEnd: boolean;
26
- }
27
- export interface TableContextProps {
28
- isHorizontalScrolling?: boolean;
1
+ import type { HighlightMode, TableSize, TableColumn, TableDataSource, TableExpandable, TableRowSelection, TableScroll } from '@mezzanine-ui/core/table';
2
+ import type { EmptyProps } from '../Empty';
3
+ import type { PaginationProps } from '../Pagination';
4
+ import type { UseTableFixedOffsetsReturn } from './hooks/useTableFixedOffsets';
5
+ /** Sorting context state */
6
+ export interface TableSortingState {
7
+ onSort: (key: string) => void;
8
+ }
9
+ /** Selection context state */
10
+ export interface TableSelectionState<T extends TableDataSource = TableDataSource> {
11
+ config: TableRowSelection<T>;
12
+ isAllSelected: boolean;
13
+ isIndeterminate: boolean;
14
+ isRowDisabled: (record: T) => boolean;
15
+ isRowSelected: (key: string | number) => boolean;
16
+ selectedRowKeys: (string | number)[];
17
+ toggleAll: () => void;
18
+ toggleRow: (key: string | number, record: T) => void;
19
+ }
20
+ /** Expansion context state */
21
+ export interface TableExpansionState<T extends TableDataSource = TableDataSource> {
22
+ config: TableExpandable<T>;
23
+ expansionLeftPadding: number;
24
+ expandedRowKeys: (string | number)[];
25
+ isRowExpanded: (key: string | number) => boolean;
26
+ toggleExpand: (key: string | number, record: T) => void;
27
+ }
28
+ /** Column state with computed widths */
29
+ export interface TableColumnState {
30
+ resizedColumnWidths: Map<string, number>;
31
+ columns: TableColumn[];
32
+ fixedEndColumns: TableColumn[];
33
+ fixedStartColumns: TableColumn[];
34
+ getResizedColumnWidth: (key: string) => number | undefined;
35
+ scrollableColumns: TableColumn[];
36
+ setResizedColumnWidth: (key: string, width: number) => void;
37
+ totalFixedEndWidth: number;
38
+ totalFixedStartWidth: number;
39
+ }
40
+ /** Draggable state */
41
+ export interface TableDraggableState {
42
+ draggingId: string | null;
43
+ enabled: boolean;
44
+ fixed?: boolean | 'start';
45
+ }
46
+ /** Highlight state for hover effects */
47
+ export interface TableHighlightState {
48
+ /** Current column index being hovered */
49
+ columnIndex: number | null;
50
+ /** Highlight mode */
51
+ mode: HighlightMode;
52
+ /** Current row index being hovered */
53
+ rowIndex: number | null;
54
+ /** Set hovered cell */
55
+ setHoveredCell: (rowIndex: number | null, columnIndex: number | null) => void;
56
+ }
57
+ /** Transition state for row add/remove animations */
58
+ export interface TableTransitionState {
59
+ /** Keys of rows currently in adding state (highlighted) */
60
+ addingKeys: Set<string>;
61
+ /** Keys of rows currently in deleting state (red highlight) */
62
+ deletingKeys: Set<string>;
63
+ /** Keys of rows currently fading out */
64
+ fadingOutKeys: Set<string>;
65
+ }
66
+ /** Main table context */
67
+ export interface TableContextValue<T extends TableDataSource = TableDataSource> {
68
+ columnState?: TableColumnState;
69
+ columns: TableColumn<T>[];
70
+ /** Container width for scroll calculations */
71
+ dataSource: T[];
72
+ draggable?: TableDraggableState;
29
73
  emptyProps?: EmptyProps;
30
- rowSelection?: RowSelectionContext;
31
- sorting?: SortingContext;
74
+ expansion?: TableExpansionState<T>;
75
+ /** Fixed column offset calculations */
76
+ fixedOffsets?: UseTableFixedOffsetsReturn;
77
+ /** Whether columns are resizable by user interaction */
78
+ resizable?: boolean;
79
+ /** Row height */
80
+ rowHeight: number;
81
+ /** Highlight state for hover effects */
82
+ highlight?: TableHighlightState;
83
+ isScrollingHorizontally?: boolean;
32
84
  loading?: boolean;
33
- setLoading?(l: boolean): void;
34
- expanding?: Omit<TableExpandable<TableRecord<unknown>>, 'expandedRowRender'> & {
35
- expandedRowRender(record: TableRecord<unknown>): ReactNode | ExpandRowBySources;
36
- };
37
- fetchMore?: FetchMoreContext;
38
- pagination?: TablePagination;
39
- scroll?: TableScrolling;
40
- draggable?: TableDraggable & {
41
- draggingId: string;
42
- };
43
- }
44
- export declare const TableContext: import("react").Context<TableContextProps | null>;
45
- export interface TableDataContextProps {
46
- columns: TableColumn<TableRecord<unknown>>[];
47
- dataSource: TableDataSource[];
48
- }
49
- export declare const TableDataContext: import("react").Context<TableDataContextProps | null>;
50
- export interface TableComponentContextProps {
51
- bodyCell?: any;
52
- }
53
- export declare const TableComponentContext: import("react").Context<TableComponentContextProps | null>;
85
+ pagination?: PaginationProps;
86
+ size?: TableSize;
87
+ scroll?: TableScroll;
88
+ /** Ref to the scroll container div for virtualization */
89
+ scrollContainerRef?: React.RefObject<HTMLDivElement | null>;
90
+ selection?: TableSelectionState<T>;
91
+ sorting?: TableSortingState;
92
+ /** Transition state for row add/remove animations */
93
+ transitionState?: TableTransitionState;
94
+ /** Whether virtual scrolling is enabled */
95
+ virtualScrollEnabled?: boolean;
96
+ /** Whether the table is inside an expanded content area */
97
+ isInsideExpandedContentArea?: boolean;
98
+ }
99
+ export declare const TableContext: import("react").Context<TableContextValue<TableDataSource> | null>;
100
+ export declare function useTableContext<T extends TableDataSource = TableDataSource>(): TableContextValue<T>;
101
+ /** Data context for performance optimization */
102
+ export interface TableDataContextValue<T extends TableDataSource = TableDataSource> {
103
+ columns: TableColumn<T>[];
104
+ dataSource: T[];
105
+ }
106
+ export declare const TableDataContext: import("react").Context<TableDataContextValue<TableDataSource> | null>;
107
+ export declare function useTableDataContext<T extends TableDataSource = TableDataSource>(): TableDataContextValue<T>;
108
+ export interface TableSuperContextValue {
109
+ containerWidth?: number;
110
+ /** Get resized column width from root table (for child table column sync) */
111
+ getResizedColumnWidth?: (key: string) => number | undefined;
112
+ scrollLeft?: number;
113
+ expansionLeftPadding?: number;
114
+ }
115
+ export declare const TableSuperContext: import("react").Context<TableSuperContextValue | null>;
116
+ export declare function useTableSuperContext(): TableSuperContextValue;
@@ -1,7 +1,26 @@
1
- import { createContext } from 'react';
1
+ 'use client';
2
+ import { createContext, useContext } from 'react';
2
3
 
3
4
  const TableContext = createContext(null);
5
+ function useTableContext() {
6
+ const context = useContext(TableContext);
7
+ if (!context) {
8
+ throw new Error('useTableContext must be used within a Table component');
9
+ }
10
+ return context;
11
+ }
4
12
  const TableDataContext = createContext(null);
5
- const TableComponentContext = createContext(null);
13
+ function useTableDataContext() {
14
+ const context = useContext(TableDataContext);
15
+ if (!context) {
16
+ throw new Error('useTableDataContext must be used within a Table component');
17
+ }
18
+ return context;
19
+ }
20
+ const TableSuperContext = createContext(null);
21
+ function useTableSuperContext() {
22
+ const context = useContext(TableSuperContext) || {};
23
+ return context;
24
+ }
6
25
 
7
- export { TableComponentContext, TableContext, TableDataContext };
26
+ export { TableContext, TableDataContext, TableSuperContext, useTableContext, useTableDataContext, useTableSuperContext };
@@ -0,0 +1,5 @@
1
+ export interface TableBodyProps {
2
+ className?: string;
3
+ droppableRef?: React.Ref<HTMLTableSectionElement>;
4
+ }
5
+ export declare const TableBody: import("react").NamedExoticComponent<TableBodyProps & import("react").RefAttributes<HTMLTableSectionElement>>;