@rio-cloud/rio-uikit 2.3.0-beta.1 → 2.3.0-beta.2

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 (294) hide show
  1. package/DayPicker.js +6 -2
  2. package/DayPicker.js.map +1 -1
  3. package/DayPickerCalendar.d.ts +2 -0
  4. package/DayPickerCalendar.js +5 -0
  5. package/DayPickerCalendar.js.map +1 -0
  6. package/DayPickerPrototype.d.ts +2 -0
  7. package/DayPickerPrototype.js +5 -0
  8. package/DayPickerPrototype.js.map +1 -0
  9. package/TableNext.d.ts +2 -0
  10. package/TableNext.js +23 -0
  11. package/TableNext.js.map +1 -0
  12. package/TableToolbar.js +3 -2
  13. package/TableToolbar.js.map +1 -1
  14. package/components/assetTree/Tree.js +13 -13
  15. package/components/charts/Area.d.ts +5 -3
  16. package/components/charts/Area.js +4 -3
  17. package/components/charts/Area.js.map +1 -1
  18. package/components/charts/AreaChart.js.map +1 -1
  19. package/components/charts/ComposedChart.js.map +1 -1
  20. package/components/clearableInput/ClearableInput.d.ts +30 -0
  21. package/components/clearableInput/ClearableInput.js +81 -78
  22. package/components/clearableInput/ClearableInput.js.map +1 -1
  23. package/components/datepicker/DayPicker.d.ts +4 -51
  24. package/components/datepicker/DayPicker.js +264 -256
  25. package/components/datepicker/DayPicker.js.map +1 -1
  26. package/components/datepicker/DayPickerCalendar.d.ts +4 -0
  27. package/components/datepicker/DayPickerCalendar.js +129 -0
  28. package/components/datepicker/DayPickerCalendar.js.map +1 -0
  29. package/components/datepicker/DayPickerDropdown.d.ts +18 -0
  30. package/components/datepicker/DayPickerDropdown.js +75 -0
  31. package/components/datepicker/DayPickerDropdown.js.map +1 -0
  32. package/components/datepicker/DayPickerDropdownFooter.d.ts +7 -0
  33. package/components/datepicker/DayPickerDropdownFooter.js +7 -0
  34. package/components/datepicker/DayPickerDropdownFooter.js.map +1 -0
  35. package/components/datepicker/DayPickerDropdownSidebar.d.ts +8 -0
  36. package/components/datepicker/DayPickerDropdownSidebar.js +7 -0
  37. package/components/datepicker/DayPickerDropdownSidebar.js.map +1 -0
  38. package/components/datepicker/DayPickerInput.d.ts +28 -0
  39. package/components/datepicker/DayPickerInput.js +65 -0
  40. package/components/datepicker/DayPickerInput.js.map +1 -0
  41. package/components/datepicker/DayPickerPrototype.d.ts +53 -0
  42. package/components/datepicker/DayPickerPrototype.js +285 -0
  43. package/components/datepicker/DayPickerPrototype.js.map +1 -0
  44. package/components/datepicker/dayPickerRangeSelectionUtils.d.ts +15 -0
  45. package/components/datepicker/dayPickerRangeSelectionUtils.js +31 -0
  46. package/components/datepicker/dayPickerRangeSelectionUtils.js.map +1 -0
  47. package/components/datepicker/dayPickerTypes.d.ts +517 -0
  48. package/components/datepicker/dayPickerTypes.js +7 -0
  49. package/components/datepicker/dayPickerTypes.js.map +1 -0
  50. package/components/datepicker/dayPickerUtils.d.ts +10 -0
  51. package/components/datepicker/dayPickerUtils.js +92 -0
  52. package/components/datepicker/dayPickerUtils.js.map +1 -0
  53. package/components/datepicker/useDayPickerInputState.d.ts +32 -0
  54. package/components/datepicker/useDayPickerInputState.js +85 -0
  55. package/components/datepicker/useDayPickerInputState.js.map +1 -0
  56. package/components/datepicker/useStackedDayPickerCalendars.d.ts +5 -0
  57. package/components/datepicker/useStackedDayPickerCalendars.js +39 -0
  58. package/components/datepicker/useStackedDayPickerCalendars.js.map +1 -0
  59. package/components/divider/Divider.js +6 -6
  60. package/components/dropdown/ButtonDropdown.d.ts +4 -0
  61. package/components/dropdown/ButtonDropdown.js +70 -68
  62. package/components/dropdown/ButtonDropdown.js.map +1 -1
  63. package/components/dropdown/DropdownToggleButton.d.ts +1 -0
  64. package/components/dropdown/DropdownToggleButton.js +17 -15
  65. package/components/dropdown/DropdownToggleButton.js.map +1 -1
  66. package/components/fade/FadeExpander.js +17 -20
  67. package/components/fade/FadeExpander.js.map +1 -1
  68. package/components/loadMore/LoadMoreProgress.js +6 -7
  69. package/components/map/components/Map.js +3 -3
  70. package/components/map/utils/rendering.js +5 -5
  71. package/components/popover/Popover.js +4 -4
  72. package/components/radiobutton/RadioCardGroup.js +3 -3
  73. package/components/rioglyph/RioglyphIconType.d.ts +1 -1
  74. package/components/selects/Multiselect.d.ts +6 -0
  75. package/components/selects/Multiselect.js +164 -150
  76. package/components/selects/Multiselect.js.map +1 -1
  77. package/components/selects/Select.js +39 -37
  78. package/components/selects/Select.js.map +1 -1
  79. package/components/table/Table.d.ts +27 -248
  80. package/components/table/Table.js +237 -214
  81. package/components/table/Table.js.map +1 -1
  82. package/components/table/Table.types.d.ts +293 -121
  83. package/components/table/TableBody.d.ts +65 -5
  84. package/components/table/TableBody.js +132 -2
  85. package/components/table/TableBody.js.map +1 -1
  86. package/components/table/TableCardsSorting.js +25 -32
  87. package/components/table/TableCardsSorting.js.map +1 -1
  88. package/components/table/TableColumn.d.ts +13 -5
  89. package/components/table/TableColumn.js +112 -2
  90. package/components/table/TableColumn.js.map +1 -1
  91. package/components/table/TableExpandedContentRow.d.ts +7 -7
  92. package/components/table/TableExpandedContentRow.js +107 -2
  93. package/components/table/TableExpandedContentRow.js.map +1 -1
  94. package/components/table/TableExpandedRow.d.ts +9 -4
  95. package/components/table/TableExpandedRow.js +147 -2
  96. package/components/table/TableExpandedRow.js.map +1 -1
  97. package/components/table/TableExpanderButton.js +13 -11
  98. package/components/table/TableExpanderButton.js.map +1 -1
  99. package/components/table/TableFooter.d.ts +10 -6
  100. package/components/table/TableFooter.js +49 -2
  101. package/components/table/TableFooter.js.map +1 -1
  102. package/components/table/TableGroupFooterRow.d.ts +7 -7
  103. package/components/table/TableGroupFooterRow.js +27 -2
  104. package/components/table/TableGroupFooterRow.js.map +1 -1
  105. package/components/table/TableGroupRow.d.ts +7 -7
  106. package/components/table/TableGroupRow.js +33 -2
  107. package/components/table/TableGroupRow.js.map +1 -1
  108. package/components/table/TableHeader.d.ts +9 -4
  109. package/components/table/TableHeader.js +104 -2
  110. package/components/table/TableHeader.js.map +1 -1
  111. package/components/table/TableHeaderColumn.d.ts +14 -8
  112. package/components/table/TableHeaderColumn.js +78 -2
  113. package/components/table/TableHeaderColumn.js.map +1 -1
  114. package/components/table/TableHeaderRow.d.ts +1 -1
  115. package/components/table/TableHeaderRow.js +11 -2
  116. package/components/table/TableHeaderRow.js.map +1 -1
  117. package/components/table/TableRow.d.ts +9 -4
  118. package/components/table/TableRow.js +108 -2
  119. package/components/table/TableRow.js.map +1 -1
  120. package/components/table/TableSpacerRow.d.ts +3 -2
  121. package/components/table/TableSpacerRow.js +26 -2
  122. package/components/table/TableSpacerRow.js.map +1 -1
  123. package/components/table/TableToolbar.d.ts +4 -23
  124. package/components/table/TableToolbar.js +39 -28
  125. package/components/table/TableToolbar.js.map +1 -1
  126. package/components/table/TableToolbarColumn.d.ts +31 -0
  127. package/components/table/TableToolbarColumn.js +33 -0
  128. package/components/table/TableToolbarColumn.js.map +1 -0
  129. package/components/table/TableViewToggles.d.ts +3 -3
  130. package/components/table/TableViewToggles.js.map +1 -1
  131. package/components/table/context/TableInteractionContext.d.ts +26 -0
  132. package/components/table/context/TableInteractionContext.js +7 -0
  133. package/components/table/context/TableInteractionContext.js.map +1 -0
  134. package/components/table/context/TableLayoutContext.d.ts +25 -0
  135. package/components/table/context/TableLayoutContext.js +7 -0
  136. package/components/table/context/TableLayoutContext.js.map +1 -0
  137. package/components/table/context/TableRenderConfigContext.d.ts +27 -0
  138. package/components/table/context/TableRenderConfigContext.js +7 -0
  139. package/components/table/context/TableRenderConfigContext.js.map +1 -0
  140. package/components/table/context/TableRenderContext.d.ts +85 -0
  141. package/components/table/context/TableRenderContext.js +7 -0
  142. package/components/table/context/TableRenderContext.js.map +1 -0
  143. package/components/table/context/TableStructureContext.d.ts +31 -0
  144. package/components/table/context/TableStructureContext.js +17 -0
  145. package/components/table/context/TableStructureContext.js.map +1 -0
  146. package/components/table/layout/columnSizing.d.ts +2 -2
  147. package/components/table/layout/columnSizing.js.map +1 -1
  148. package/components/table/layout/useDraggableColumns.d.ts +3 -3
  149. package/components/table/layout/useDraggableColumns.js +17 -17
  150. package/components/table/layout/useDraggableColumns.js.map +1 -1
  151. package/components/table/layout/useHorizontalSectionSync.d.ts +3 -1
  152. package/components/table/layout/useHorizontalSectionSync.js +32 -28
  153. package/components/table/layout/useHorizontalSectionSync.js.map +1 -1
  154. package/components/table/layout/useMeasuredColumnMaxWidths.d.ts +3 -3
  155. package/components/table/layout/useMeasuredColumnMaxWidths.js.map +1 -1
  156. package/components/table/layout/useResizableColumns.d.ts +5 -4
  157. package/components/table/layout/useResizableColumns.js +108 -67
  158. package/components/table/layout/useResizableColumns.js.map +1 -1
  159. package/components/table/layout/useTableBodyScrollBottom.d.ts +12 -0
  160. package/components/table/layout/useTableBodyScrollBottom.js +37 -0
  161. package/components/table/layout/useTableBodyScrollBottom.js.map +1 -0
  162. package/components/table/layout/useTableLayout.d.ts +17 -6
  163. package/components/table/layout/useTableLayout.js +41 -38
  164. package/components/table/layout/useTableLayout.js.map +1 -1
  165. package/components/table/layout/useTableVirtualization.d.ts +6 -6
  166. package/components/table/layout/useTableVirtualization.js +22 -22
  167. package/components/table/layout/useTableVirtualization.js.map +1 -1
  168. package/components/table/model/resolveRowMeta.d.ts +3 -2
  169. package/components/table/model/resolveRowMeta.js.map +1 -1
  170. package/components/table/model/resolveTableClassConfig.d.ts +2 -3
  171. package/components/table/model/resolveTableClassConfig.js.map +1 -1
  172. package/components/table/model/tableView.types.d.ts +41 -0
  173. package/components/table/native/TableSettingsListItem.js +1 -1
  174. package/components/table/native/TableSettingsListItem.js.map +1 -1
  175. package/components/table/render/body/TableBodyContent.d.ts +21 -0
  176. package/components/table/render/body/TableBodyContent.js +52 -0
  177. package/components/table/render/body/TableBodyContent.js.map +1 -0
  178. package/components/table/render/body/TableEmptyRow.js +2 -2
  179. package/components/table/render/body/TableEmptyRow.js.map +1 -1
  180. package/components/table/render/header/TableBatchDropdown.d.ts +5 -1
  181. package/components/table/render/header/TableBatchDropdown.js +17 -15
  182. package/components/table/render/header/TableBatchDropdown.js.map +1 -1
  183. package/components/table/render/header/TableColumnFilter.d.ts +2 -2
  184. package/components/table/render/header/TableColumnFilter.js +16 -14
  185. package/components/table/render/header/TableColumnFilter.js.map +1 -1
  186. package/components/table/render/header/TableDraggableHeaderCell.d.ts +2 -1
  187. package/components/table/render/header/TableDraggableHeaderCell.js +44 -34
  188. package/components/table/render/header/TableDraggableHeaderCell.js.map +1 -1
  189. package/components/table/render/header/TableHeader.types.d.ts +11 -9
  190. package/components/table/render/header/TableHeaderCellContent.d.ts +2 -1
  191. package/components/table/render/header/TableHeaderCellContent.js.map +1 -1
  192. package/components/table/render/header/TableHeaderCellResizeHandle.d.ts +2 -1
  193. package/components/table/render/header/TableHeaderCellResizeHandle.js +8 -8
  194. package/components/table/render/header/TableHeaderCellResizeHandle.js.map +1 -1
  195. package/components/table/render/header/TableHeaderDragOverlay.d.ts +5 -4
  196. package/components/table/render/header/TableHeaderDragOverlay.js.map +1 -1
  197. package/components/table/render/header/TableStaticHeaderCell.d.ts +2 -1
  198. package/components/table/render/header/TableStaticHeaderCell.js +34 -22
  199. package/components/table/render/header/TableStaticHeaderCell.js.map +1 -1
  200. package/components/table/render/header/resolveAriaSort.d.ts +2 -1
  201. package/components/table/render/header/resolveAriaSort.js.map +1 -1
  202. package/components/table/render/header/resolveHeaderCellClassName.d.ts +4 -2
  203. package/components/table/render/header/resolveHeaderCellClassName.js +11 -10
  204. package/components/table/render/header/resolveHeaderCellClassName.js.map +1 -1
  205. package/components/table/render/header/resolveHeaderCellStyle.d.ts +2 -1
  206. package/components/table/render/header/resolveHeaderCellStyle.js.map +1 -1
  207. package/components/table/runtime/shouldAnimateBodyRows.d.ts +17 -0
  208. package/components/table/runtime/shouldAnimateBodyRows.js +5 -0
  209. package/components/table/runtime/shouldAnimateBodyRows.js.map +1 -0
  210. package/components/table/runtime/useRenderDraftState.d.ts +14 -0
  211. package/components/table/runtime/useRenderDraftState.js +80 -0
  212. package/components/table/runtime/useRenderDraftState.js.map +1 -0
  213. package/components/table/runtime/useResolvedRenderColumns.d.ts +43 -0
  214. package/components/table/runtime/useResolvedRenderColumns.js +113 -0
  215. package/components/table/runtime/useResolvedRenderColumns.js.map +1 -0
  216. package/components/table/runtime/useResolvedRenderHeader.d.ts +27 -0
  217. package/components/table/runtime/useResolvedRenderHeader.js +67 -0
  218. package/components/table/runtime/useResolvedRenderHeader.js.map +1 -0
  219. package/components/table/selection/useInternalTableSelectionState.d.ts +17 -0
  220. package/components/table/selection/useInternalTableSelectionState.js +28 -0
  221. package/components/table/selection/useInternalTableSelectionState.js.map +1 -0
  222. package/components/table/selection/useTableSelection.d.ts +3 -3
  223. package/components/table/selection/useTableSelection.js.map +1 -1
  224. package/components/table/shared/getCellContentOverflowClassName.d.ts +3 -0
  225. package/components/table/shared/getCellContentOverflowClassName.js +18 -0
  226. package/components/table/shared/getCellContentOverflowClassName.js.map +1 -0
  227. package/components/table/shared/getInteractiveRowProps.d.ts +3 -2
  228. package/components/table/shared/getInteractiveRowProps.js.map +1 -1
  229. package/hooks/useUrlState.js +3 -3
  230. package/package.json +16 -17
  231. package/utils/analytics/createAnalyticsOverlayTooltip.js +57 -57
  232. package/utils/analytics/createAnalyticsOverlayTooltip.js.map +1 -1
  233. package/utils/analytics/useAnalyticsOverlayDom.js +3 -3
  234. package/utils/routeUtils.d.ts +5 -2
  235. package/utils/routeUtils.js +17 -17
  236. package/utils/routeUtils.js.map +1 -1
  237. package/version.d.ts +1 -1
  238. package/version.js +1 -1
  239. package/version.js.map +1 -1
  240. package/components/table/TableCard.d.ts +0 -63
  241. package/components/table/TableCard.js +0 -150
  242. package/components/table/TableCard.js.map +0 -1
  243. package/components/table/model/buildTableViewModel.d.ts +0 -28
  244. package/components/table/model/buildTableViewModel.js +0 -221
  245. package/components/table/model/buildTableViewModel.js.map +0 -1
  246. package/components/table/model/resolveCellContent.d.ts +0 -2
  247. package/components/table/model/resolveCellContent.js +0 -5
  248. package/components/table/model/resolveCellContent.js.map +0 -1
  249. package/components/table/model/tableViewModel.types.d.ts +0 -153
  250. package/components/table/parse/parseBody.d.ts +0 -3
  251. package/components/table/parse/parseBody.js +0 -13
  252. package/components/table/parse/parseBody.js.map +0 -1
  253. package/components/table/parse/parseColumns.d.ts +0 -3
  254. package/components/table/parse/parseColumns.js +0 -81
  255. package/components/table/parse/parseColumns.js.map +0 -1
  256. package/components/table/parse/parseFooter.d.ts +0 -3
  257. package/components/table/parse/parseFooter.js +0 -39
  258. package/components/table/parse/parseFooter.js.map +0 -1
  259. package/components/table/parse/parseHeaders.d.ts +0 -4
  260. package/components/table/parse/parseHeaders.js +0 -89
  261. package/components/table/parse/parseHeaders.js.map +0 -1
  262. package/components/table/parse/parseRows.d.ts +0 -3
  263. package/components/table/parse/parseRows.js +0 -93
  264. package/components/table/parse/parseRows.js.map +0 -1
  265. package/components/table/parse/tableChildGuards.d.ts +0 -25
  266. package/components/table/parse/tableChildGuards.js +0 -29
  267. package/components/table/parse/tableChildGuards.js.map +0 -1
  268. package/components/table/render/body/TableBodyRow.d.ts +0 -16
  269. package/components/table/render/body/TableBodyRow.js +0 -84
  270. package/components/table/render/body/TableBodyRow.js.map +0 -1
  271. package/components/table/render/body/TableBodySection.d.ts +0 -20
  272. package/components/table/render/body/TableBodySection.js +0 -68
  273. package/components/table/render/body/TableBodySection.js.map +0 -1
  274. package/components/table/render/body/TableDataRow.d.ts +0 -15
  275. package/components/table/render/body/TableDataRow.js +0 -143
  276. package/components/table/render/body/TableDataRow.js.map +0 -1
  277. package/components/table/render/body/TableExpandedRow.d.ts +0 -8
  278. package/components/table/render/body/TableExpandedRow.js +0 -84
  279. package/components/table/render/body/TableExpandedRow.js.map +0 -1
  280. package/components/table/render/body/TableGroupRow.d.ts +0 -8
  281. package/components/table/render/body/TableGroupRow.js +0 -21
  282. package/components/table/render/body/TableGroupRow.js.map +0 -1
  283. package/components/table/render/body/TableSpacerRow.d.ts +0 -7
  284. package/components/table/render/body/TableSpacerRow.js +0 -15
  285. package/components/table/render/body/TableSpacerRow.js.map +0 -1
  286. package/components/table/render/footer/TableFooterCell.d.ts +0 -8
  287. package/components/table/render/footer/TableFooterCell.js +0 -31
  288. package/components/table/render/footer/TableFooterCell.js.map +0 -1
  289. package/components/table/render/footer/TableFooterSection.d.ts +0 -10
  290. package/components/table/render/footer/TableFooterSection.js +0 -28
  291. package/components/table/render/footer/TableFooterSection.js.map +0 -1
  292. package/components/table/render/header/TableHeaderSection.d.ts +0 -3
  293. package/components/table/render/header/TableHeaderSection.js +0 -104
  294. package/components/table/render/header/TableHeaderSection.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { jsxs as U, jsx as i } from "react/jsx-runtime";
1
+ import { jsxs as F, jsx as i } from "react/jsx-runtime";
2
2
  import { useState as o, useRef as V } from "react";
3
3
  import { isEqual as k } from "es-toolkit/predicate";
4
4
  import { noop as Oe, isEmpty as be } from "es-toolkit/compat";
@@ -7,42 +7,42 @@ import ve, { filterOptions as xe } from "./BaseSelectDropdown.js";
7
7
  import we from "../../hooks/useClickOutside.js";
8
8
  import De from "../../hooks/useEffectOnce.js";
9
9
  import Me from "../../hooks/useMergeRefs.js";
10
- import Ee from "./ClearButton.js";
11
- import Ne from "./SelectFilter.js";
10
+ import Ne from "./ClearButton.js";
11
+ import Ee from "./SelectFilter.js";
12
12
  import Ae from "./SelectedOption.js";
13
13
  import Te from "./WithFeedbackAndAddon.js";
14
14
  const u = -1, ze = (R) => {
15
15
  const {
16
- name: F,
17
- id: B = F,
16
+ name: O,
17
+ id: B = O,
18
18
  label: _,
19
19
  options: t = [],
20
20
  value: n,
21
- onChange: O = Oe,
21
+ onChange: b = Oe,
22
22
  placeholder: j,
23
23
  isLoading: L = !1,
24
24
  dropup: W = !1,
25
25
  pullRight: q = !1,
26
26
  autoDropDirection: z = !0,
27
27
  bsSize: g = "md",
28
- disabled: b = !1,
28
+ disabled: v = !1,
29
29
  tabIndex: X = 0,
30
30
  hasError: G = !1,
31
31
  useFilter: H = !1,
32
32
  useClear: J = !1,
33
33
  noItemMessage: Q,
34
- selectedOptionText: v,
34
+ selectedOptionText: x,
35
35
  showSelectedItemIcon: Y = !1,
36
36
  showUnselectedItemIcons: Z = !1,
37
37
  dropdownClassName: $,
38
- btnClassName: x,
39
- className: w,
40
- inputAddon: D,
41
- errorMessage: M,
38
+ btnClassName: w,
39
+ className: D,
40
+ inputAddon: M,
41
+ errorMessage: N,
42
42
  warningMessage: E,
43
43
  messageWhiteSpace: ee = "normal",
44
44
  ...te
45
- } = R, [r, N] = o(!1), [h, p] = o(null), [I, c] = o(!1), [A, d] = o(""), [se, l] = o(t), [T, oe] = o([]), [ne, m] = o(u), [y, f] = o(!1), re = V(), P = V(null), le = we(() => S()), ae = Me(re, le), C = (e, s) => {
45
+ } = R, [r, A] = o(!1), [h, p] = o(null), [I, c] = o(!1), [T, d] = o(""), [se, l] = o(t), [y, oe] = o([]), [ne, m] = o(u), [P, f] = o(!1), re = V(), U = V(null), le = we(() => S()), ae = Me(re, le), C = (e, s) => {
46
46
  s && !be(s) ? p(e.find((a) => a.id === s[0]) || null) : e && p(e.find((a) => a.selected) || null);
47
47
  };
48
48
  De(() => {
@@ -53,41 +53,41 @@ const u = -1, ze = (R) => {
53
53
  const [de, fe] = o(n);
54
54
  k(n, de) || (C(t, n), fe(n));
55
55
  const ue = (e = []) => {
56
- !e.length || (I || A) && T.length > 0 || oe(e);
56
+ !e.length || (I || T) && y.length > 0 || oe(e);
57
57
  }, pe = () => {
58
- p(null), c(!1), d(""), l(t), f(!1), m(u), O(void 0);
58
+ p(null), c(!1), d(""), l(t), f(!1), m(u), b(void 0);
59
59
  }, me = () => {
60
60
  const e = K(
61
61
  "dropdown-toggle",
62
62
  "form-control",
63
63
  "text-left",
64
- x && x,
64
+ w && w,
65
65
  g === "sm" && "input-sm",
66
66
  g === "lg" && "input-lg",
67
- b && "disabled"
68
- ), s = /* @__PURE__ */ U(
67
+ v && "disabled"
68
+ ), s = /* @__PURE__ */ F(
69
69
  "button",
70
70
  {
71
71
  type: "button",
72
72
  id: B,
73
- name: F,
73
+ name: O,
74
74
  className: e,
75
75
  "data-toggle": "dropdown",
76
76
  tabIndex: X,
77
77
  "aria-haspopup": "true",
78
78
  "aria-expanded": r,
79
79
  onClick: Ce,
80
- ref: P,
80
+ ref: U,
81
81
  children: [
82
82
  H && r && /* @__PURE__ */ i(
83
- Ne,
83
+ Ee,
84
84
  {
85
85
  isFilterActive: I,
86
- filterValue: A,
86
+ filterValue: T,
87
87
  onChange: he
88
88
  }
89
89
  ),
90
- v || /* @__PURE__ */ i(
90
+ x || /* @__PURE__ */ i(
91
91
  Ae,
92
92
  {
93
93
  label: _,
@@ -98,17 +98,19 @@ const u = -1, ze = (R) => {
98
98
  showUnselectedItemIcons: Z
99
99
  }
100
100
  ),
101
- /* @__PURE__ */ i(Ee, { showClear: J, selectedItem: h, onClear: pe }),
102
- /* @__PURE__ */ i("span", { className: "caret" })
101
+ /* @__PURE__ */ F("span", { className: "select-toggle-actions", children: [
102
+ /* @__PURE__ */ i(Ne, { showClear: J, selectedItem: h, onClear: pe }),
103
+ /* @__PURE__ */ i("span", { className: "caret" })
104
+ ] })
103
105
  ]
104
106
  }
105
107
  );
106
- return !D && !M && !E ? s : /* @__PURE__ */ i(
108
+ return !M && !N && !E ? s : /* @__PURE__ */ i(
107
109
  Te,
108
110
  {
109
111
  bsSize: g,
110
- inputAddon: D,
111
- errorMessage: M,
112
+ inputAddon: M,
113
+ errorMessage: N,
112
114
  warningMessage: E,
113
115
  messageWhiteSpace: ee,
114
116
  children: s
@@ -116,14 +118,14 @@ const u = -1, ze = (R) => {
116
118
  );
117
119
  }, ge = () => {
118
120
  let e = ne;
119
- return y && !h && (e = 0), /* @__PURE__ */ i(
121
+ return P && !h && (e = 0), /* @__PURE__ */ i(
120
122
  ve,
121
123
  {
122
124
  isOpen: r,
123
125
  isLoading: L,
124
126
  options: se,
125
127
  focusedItemIndex: e,
126
- keyboardUsed: y,
128
+ keyboardUsed: P,
127
129
  updateDOMValues: ue,
128
130
  onSelect: Ie,
129
131
  onClose: S,
@@ -141,19 +143,19 @@ const u = -1, ze = (R) => {
141
143
  c(!1), d(""), l(t), f(!1), m(u);
142
144
  return;
143
145
  }
144
- const a = xe(T, s, t), Fe = a.length > 0 ? 0 : u;
146
+ const a = xe(y, s, t), Fe = a.length > 0 ? 0 : u;
145
147
  c(!0), d(s), l(a), f(!0), m(Fe);
146
148
  }, Ie = (e) => {
147
- p(e || null), c(!1), d(""), l(t), O(e), S();
149
+ p(e || null), c(!1), d(""), l(t), b(e), S();
148
150
  }, Ce = (e) => {
149
- if (b || I)
151
+ if (v || I)
150
152
  return;
151
153
  const s = e.detail === 0;
152
- N(!r), f(s);
154
+ A(!r), f(s);
153
155
  }, S = () => {
154
- r && (N(!1), c(!1), d(""), l(t), f(!1), m(u), P.current?.focus());
155
- }, Se = K("select", "dropdown", r && "open", G && "has-error", w && w);
156
- return /* @__PURE__ */ U("div", { ...te, className: Se, ref: ae, children: [
156
+ r && (A(!1), c(!1), d(""), l(t), f(!1), m(u), U.current?.focus());
157
+ }, Se = K("select", "dropdown", r && "open", G && "has-error", D && D);
158
+ return /* @__PURE__ */ F("div", { ...te, className: Se, ref: ae, children: [
157
159
  me(),
158
160
  ge()
159
161
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../src/components/selects/Select.tsx"],"sourcesContent":["import type React from 'react';\nimport { useRef, useState } from 'react';\nimport { isEqual } from 'es-toolkit/predicate';\nimport { isEmpty, noop } from 'es-toolkit/compat';\n\nimport classNames from '../../utils/classNames';\nimport BaseSelectDropdown, { filterOptions, type OptionDOMValue, type SelectOption } from './BaseSelectDropdown';\nimport useClickOutside from '../../useClickOutside';\nimport useEffectOnce from '../../hooks/useEffectOnce';\nimport useMergeRefs from '../../hooks/useMergeRefs';\nimport ClearButton from './ClearButton';\nimport SelectFilter from './SelectFilter';\nimport SelectedOption from './SelectedOption';\nimport WithFeedbackAndAddon, { type WithFeedbackAndAddonProps } from './WithFeedbackAndAddon';\n\nexport type { SelectOption } from './BaseSelectDropdown';\n\nconst DEFAULT_FOCUSED_ITEM_INDEX = -1;\n\n/**\n * Note: Even with a pre-selected item, when it first opens the dropdown it renders the full options list,\n * not just the selected one. The filter is only usable while the dropdown is open.\n */\nexport type SelectProps<T extends SelectOption> = Omit<WithFeedbackAndAddonProps, 'bsSize'> & {\n /**\n * Passed through as HTML attribute to the toggle button.\n */\n name?: string;\n\n /**\n * Passed through as HTML attribute to the toggle button.\n *\n * @default Uses the value given to `name` if not provided explicitly.\n */\n id?: string;\n\n /**\n * The toggle label in front of the selected text.\n */\n label?: string | React.ReactNode;\n\n /**\n * Items to display in the dropdown menu.\n *\n * @default []\n */\n options?: T[];\n\n /**\n * Sets the ids of the selected options when the component is already mounted.\n */\n value?: string[];\n\n /**\n * Callback function triggered when an item is selected.\n *\n * @param selectedOption The option that was selected (or undefined if none was).\n *\n * @default () => {}\n */\n onChange?: (selectOption: T | undefined) => void;\n\n /**\n * Text to display when nothing is selected.\n */\n placeholder?: string | React.ReactNode;\n\n /**\n * Defines whether the dropdown opens upwards.\n *\n * Set to `true` additionally disables autoDrop feature.\n *\n * @default false\n */\n dropup?: boolean;\n\n /**\n * Defines whether the dropdown opens right aligned to the dropdown toggle.\n *\n * Set to 'true' additionally disables autoDrop feature.\n *\n * @default false\n */\n pullRight?: boolean;\n\n /**\n * Enables or disables the autoDrop positioning feature.\n *\n * When enabled, the option list opens below or above the input depending on the surrounding space.\n *\n * @default true\n */\n autoDropDirection?: boolean;\n\n /**\n * Defines the size of the select to be rendered.\n *\n * @default 'md'\n */\n bsSize?: 'sm' | 'md' | 'lg';\n\n /**\n * Option to disable the opening of the option list.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Sets the input's tabindex attribute.\n *\n * The tabindex attribute allows developers to make HTML elements focusable, allow or prevent them from being\n * sequentially focusable (usually with the Tab key, hence the name) and determine their relative ordering for\n * sequential focus navigation.\n *\n * @default 0\n */\n tabIndex?: number;\n\n /**\n * Defines whether the Bootstrap error classes shall be added to the toggle element.\n *\n * @default false\n */\n hasError?: boolean;\n\n /**\n * Defines whether the component should be filterable.\n *\n * @default false\n */\n useFilter?: boolean;\n\n /**\n * Set to show a clear button.\n *\n * @default false\n */\n useClear?: boolean;\n\n /**\n * Shows a loading spinner instead of the menu items if set to true.\n *\n * @default false\n */\n isLoading?: boolean;\n\n /**\n * Text that shall be shown when not match was found when filtering.\n */\n noItemMessage?: string | React.ReactNode;\n\n /**\n * Text or node to be rendered on the toggle select instead of the selected item label.\n */\n selectedOptionText?: string | React.ReactNode;\n\n /**\n * Set to show only the icon and not the label of selected item.\n *\n * @default false\n */\n showSelectedItemIcon?: boolean;\n\n /**\n * Set to show all item icons within the toggle element.\n *\n * Selected items are highlighted and unselected items are shown as inactive.\n *\n * @default false\n */\n showUnselectedItemIcons?: boolean;\n\n /**\n * Additional classes to be set to the dropdown.\n */\n dropdownClassName?: string;\n\n /**\n * Additional classes to be set to the select/input.\n */\n btnClassName?: string;\n\n /**\n * Additional classes to be set to the select wrapper.\n */\n className?: string;\n};\n\nconst Select = <T extends SelectOption>(props: SelectProps<T>) => {\n const {\n name,\n id = name,\n label,\n options = [],\n value,\n onChange = noop,\n placeholder,\n isLoading = false,\n dropup = false,\n pullRight = false,\n autoDropDirection = true,\n bsSize = 'md',\n disabled = false,\n tabIndex = 0,\n hasError = false,\n useFilter = false,\n useClear = false,\n noItemMessage,\n selectedOptionText,\n showSelectedItemIcon = false,\n showUnselectedItemIcons = false,\n dropdownClassName,\n btnClassName,\n className,\n\n inputAddon,\n errorMessage,\n warningMessage,\n messageWhiteSpace = 'normal',\n\n ...remainingProps\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const [selectedItem, setSelectedItem] = useState<SelectOption | null>(null);\n const [isFilterActive, setIsFilterActive] = useState(false);\n const [filterValue, setFilterValue] = useState('');\n const [filteredOptions, setFilteredOptions] = useState(options);\n const [itemDOMValues, setItemDOMValues] = useState<OptionDOMValue[]>([]);\n const [focusedItemIndex, setFocusedItemIndex] = useState(DEFAULT_FOCUSED_ITEM_INDEX);\n const [keyboardUsed, setKeyboardUsed] = useState(false);\n\n const refSelect = useRef();\n const refToggle = useRef<HTMLButtonElement>(null);\n\n const ref = useClickOutside(() => closeMenu());\n const mergedSelectRefs = useMergeRefs(refSelect, ref);\n\n const updateSelectedItem = (selectOptions: SelectOption[], updatedValue: string[] | undefined) => {\n if (updatedValue && !isEmpty(updatedValue)) {\n setSelectedItem(selectOptions.find(item => item.id === updatedValue[0]) || null);\n } else if (selectOptions) {\n setSelectedItem(selectOptions.find(item => item.selected) || null);\n }\n };\n\n useEffectOnce(() => {\n updateSelectedItem(options, value);\n });\n\n const [previousOptions, setPreviousOptions] = useState(options);\n if (!isEqual(options, previousOptions)) {\n updateSelectedItem(options, value);\n setFilteredOptions(options);\n setPreviousOptions(options);\n }\n\n const [previousValue, setPreviousValue] = useState(value);\n if (!isEqual(value, previousValue)) {\n updateSelectedItem(options, value);\n setPreviousValue(value);\n }\n\n const updateDOMValues = (itemDOMValuesToUpdated: OptionDOMValue[] = []) => {\n // Skip updates when we have nothing new, or when filtering is active and we already hold a full snapshot.\n if (!itemDOMValuesToUpdated.length) {\n return;\n }\n\n const shouldKeepPreviousSnapshot = (isFilterActive || filterValue) && itemDOMValues.length > 0;\n if (shouldKeepPreviousSnapshot) {\n return;\n }\n\n setItemDOMValues(itemDOMValuesToUpdated);\n };\n\n const handleClearSelectedItem = () => {\n setSelectedItem(null);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n\n onChange(undefined);\n };\n\n const renderToggle = () => {\n const toggleClasses = classNames(\n 'dropdown-toggle',\n 'form-control',\n 'text-left',\n btnClassName && btnClassName,\n bsSize === 'sm' && 'input-sm',\n bsSize === 'lg' && 'input-lg',\n disabled && 'disabled'\n );\n\n const toggleButton = (\n <button\n type='button'\n id={id}\n name={name}\n className={toggleClasses}\n data-toggle='dropdown'\n tabIndex={tabIndex}\n aria-haspopup='true'\n aria-expanded={isOpen}\n onClick={onToggle}\n ref={refToggle}\n >\n {useFilter && isOpen && (\n <SelectFilter\n isFilterActive={isFilterActive}\n filterValue={filterValue}\n onChange={handleFilterChange}\n />\n )}\n {selectedOptionText ? (\n selectedOptionText\n ) : (\n <SelectedOption\n label={label}\n placeholder={placeholder}\n selectedItem={selectedItem}\n options={options}\n showSelectedItemIcon={showSelectedItemIcon}\n showUnselectedItemIcons={showUnselectedItemIcons}\n />\n )}\n <ClearButton showClear={useClear} selectedItem={selectedItem} onClear={handleClearSelectedItem} />\n <span className='caret' />\n </button>\n );\n\n if (!inputAddon && !errorMessage && !warningMessage) {\n return toggleButton;\n }\n\n return (\n <WithFeedbackAndAddon\n bsSize={bsSize}\n inputAddon={inputAddon}\n errorMessage={errorMessage}\n warningMessage={warningMessage}\n messageWhiteSpace={messageWhiteSpace}\n >\n {toggleButton}\n </WithFeedbackAndAddon>\n );\n };\n\n const renderDropdownMenu = () => {\n // Start from the last tracked focus; only default to the first item when opened via keyboard and nothing is selected.\n let currentFocusedItemIndex = focusedItemIndex;\n\n // Do not auto-highlight a selected item on open; let keyboard navigation start from \"no focus\".\n // Only default to the first item when opened via keyboard and nothing was selected.\n if (keyboardUsed && !selectedItem) {\n currentFocusedItemIndex = 0;\n }\n\n return (\n <BaseSelectDropdown\n isOpen={isOpen}\n isLoading={isLoading}\n options={filteredOptions}\n focusedItemIndex={currentFocusedItemIndex}\n keyboardUsed={keyboardUsed}\n updateDOMValues={updateDOMValues}\n onSelect={onOptionChange}\n onClose={closeMenu}\n noItemMessage={noItemMessage}\n pullRight={pullRight}\n dropup={dropup}\n autoDropDirection={autoDropDirection}\n dropdownClassName={dropdownClassName}\n />\n );\n };\n\n const handleFilterChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n event.preventDefault();\n\n const targetFilterValue = event.currentTarget.value;\n\n // if cleared: reset to defaults and bail early\n if (targetFilterValue === '') {\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n return;\n }\n\n // otherwise: filter against the last known non-empty DOM snapshot\n const currentFilteredOptions = filterOptions(itemDOMValues, targetFilterValue, options);\n\n // highlight the first item of the search result if at least one item was found\n const newFocusedItemIndex = currentFilteredOptions.length > 0 ? 0 : DEFAULT_FOCUSED_ITEM_INDEX;\n\n setIsFilterActive(true);\n setFilterValue(targetFilterValue);\n setFilteredOptions(currentFilteredOptions);\n setKeyboardUsed(true);\n setFocusedItemIndex(newFocusedItemIndex);\n };\n\n const onOptionChange = (currentSelectedItem: T | undefined) => {\n setSelectedItem(currentSelectedItem || null);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n\n onChange(currentSelectedItem);\n\n closeMenu();\n };\n\n const onToggle = (event: React.MouseEvent<HTMLButtonElement>) => {\n // Don't toggle when component is disabled or\n // when filter is active, means entering some filter value\n // in order to avoid closing menu on space but allow to use it for filtering\n if (disabled || isFilterActive) {\n return;\n }\n\n // using the enter key on the toggle button will trigger a synthetic click event as all buttons are of\n // type submit by default in HTML. In order to differentiate between real click and a synthetic event\n // caused by they keyboard, use the event details. A synthetic event is always 0.\n const isKeyboardUsed = event.detail === 0;\n\n setIsOpen(!isOpen);\n setKeyboardUsed(isKeyboardUsed);\n };\n\n const closeMenu = () => {\n if (isOpen) {\n setIsOpen(false);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n refToggle.current?.focus();\n }\n };\n\n const classes = classNames('select', 'dropdown', isOpen && 'open', hasError && 'has-error', className && className);\n\n return (\n <div {...remainingProps} className={classes} ref={mergedSelectRefs}>\n {renderToggle()}\n {renderDropdownMenu()}\n </div>\n );\n};\n\nexport default Select;\n"],"names":["DEFAULT_FOCUSED_ITEM_INDEX","Select","props","name","id","label","options","value","onChange","noop","placeholder","isLoading","dropup","pullRight","autoDropDirection","bsSize","disabled","tabIndex","hasError","useFilter","useClear","noItemMessage","selectedOptionText","showSelectedItemIcon","showUnselectedItemIcons","dropdownClassName","btnClassName","className","inputAddon","errorMessage","warningMessage","messageWhiteSpace","remainingProps","isOpen","setIsOpen","useState","selectedItem","setSelectedItem","isFilterActive","setIsFilterActive","filterValue","setFilterValue","filteredOptions","setFilteredOptions","itemDOMValues","setItemDOMValues","focusedItemIndex","setFocusedItemIndex","keyboardUsed","setKeyboardUsed","refSelect","useRef","refToggle","ref","useClickOutside","closeMenu","mergedSelectRefs","useMergeRefs","updateSelectedItem","selectOptions","updatedValue","isEmpty","item","useEffectOnce","previousOptions","setPreviousOptions","isEqual","previousValue","setPreviousValue","updateDOMValues","itemDOMValuesToUpdated","handleClearSelectedItem","renderToggle","toggleClasses","classNames","toggleButton","jsxs","onToggle","jsx","SelectFilter","handleFilterChange","SelectedOption","ClearButton","WithFeedbackAndAddon","renderDropdownMenu","currentFocusedItemIndex","BaseSelectDropdown","onOptionChange","event","targetFilterValue","currentFilteredOptions","filterOptions","newFocusedItemIndex","currentSelectedItem","isKeyboardUsed","classes"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../src/components/selects/Select.tsx"],"sourcesContent":["import type React from 'react';\nimport { useRef, useState } from 'react';\nimport { isEqual } from 'es-toolkit/predicate';\nimport { isEmpty, noop } from 'es-toolkit/compat';\n\nimport classNames from '../../utils/classNames';\nimport BaseSelectDropdown, { filterOptions, type OptionDOMValue, type SelectOption } from './BaseSelectDropdown';\nimport useClickOutside from '../../useClickOutside';\nimport useEffectOnce from '../../hooks/useEffectOnce';\nimport useMergeRefs from '../../hooks/useMergeRefs';\nimport ClearButton from './ClearButton';\nimport SelectFilter from './SelectFilter';\nimport SelectedOption from './SelectedOption';\nimport WithFeedbackAndAddon, { type WithFeedbackAndAddonProps } from './WithFeedbackAndAddon';\n\nexport type { SelectOption } from './BaseSelectDropdown';\n\nconst DEFAULT_FOCUSED_ITEM_INDEX = -1;\n\n/**\n * Note: Even with a pre-selected item, when it first opens the dropdown it renders the full options list,\n * not just the selected one. The filter is only usable while the dropdown is open.\n */\nexport type SelectProps<T extends SelectOption> = Omit<WithFeedbackAndAddonProps, 'bsSize'> & {\n /**\n * Passed through as HTML attribute to the toggle button.\n */\n name?: string;\n\n /**\n * Passed through as HTML attribute to the toggle button.\n *\n * @default Uses the value given to `name` if not provided explicitly.\n */\n id?: string;\n\n /**\n * The toggle label in front of the selected text.\n */\n label?: string | React.ReactNode;\n\n /**\n * Items to display in the dropdown menu.\n *\n * @default []\n */\n options?: T[];\n\n /**\n * Sets the ids of the selected options when the component is already mounted.\n */\n value?: string[];\n\n /**\n * Callback function triggered when an item is selected.\n *\n * @param selectedOption The option that was selected (or undefined if none was).\n *\n * @default () => {}\n */\n onChange?: (selectOption: T | undefined) => void;\n\n /**\n * Text to display when nothing is selected.\n */\n placeholder?: string | React.ReactNode;\n\n /**\n * Defines whether the dropdown opens upwards.\n *\n * Set to `true` additionally disables autoDrop feature.\n *\n * @default false\n */\n dropup?: boolean;\n\n /**\n * Defines whether the dropdown opens right aligned to the dropdown toggle.\n *\n * Set to 'true' additionally disables autoDrop feature.\n *\n * @default false\n */\n pullRight?: boolean;\n\n /**\n * Enables or disables the autoDrop positioning feature.\n *\n * When enabled, the option list opens below or above the input depending on the surrounding space.\n *\n * @default true\n */\n autoDropDirection?: boolean;\n\n /**\n * Defines the size of the select to be rendered.\n *\n * @default 'md'\n */\n bsSize?: 'sm' | 'md' | 'lg';\n\n /**\n * Option to disable the opening of the option list.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Sets the input's tabindex attribute.\n *\n * The tabindex attribute allows developers to make HTML elements focusable, allow or prevent them from being\n * sequentially focusable (usually with the Tab key, hence the name) and determine their relative ordering for\n * sequential focus navigation.\n *\n * @default 0\n */\n tabIndex?: number;\n\n /**\n * Defines whether the Bootstrap error classes shall be added to the toggle element.\n *\n * @default false\n */\n hasError?: boolean;\n\n /**\n * Defines whether the component should be filterable.\n *\n * @default false\n */\n useFilter?: boolean;\n\n /**\n * Set to show a clear button.\n *\n * @default false\n */\n useClear?: boolean;\n\n /**\n * Shows a loading spinner instead of the menu items if set to true.\n *\n * @default false\n */\n isLoading?: boolean;\n\n /**\n * Text that shall be shown when not match was found when filtering.\n */\n noItemMessage?: string | React.ReactNode;\n\n /**\n * Text or node to be rendered on the toggle select instead of the selected item label.\n */\n selectedOptionText?: string | React.ReactNode;\n\n /**\n * Set to show only the icon and not the label of selected item.\n *\n * @default false\n */\n showSelectedItemIcon?: boolean;\n\n /**\n * Set to show all item icons within the toggle element.\n *\n * Selected items are highlighted and unselected items are shown as inactive.\n *\n * @default false\n */\n showUnselectedItemIcons?: boolean;\n\n /**\n * Additional classes to be set to the dropdown.\n */\n dropdownClassName?: string;\n\n /**\n * Additional classes to be set to the select/input.\n */\n btnClassName?: string;\n\n /**\n * Additional classes to be set to the select wrapper.\n */\n className?: string;\n};\n\nconst Select = <T extends SelectOption>(props: SelectProps<T>) => {\n const {\n name,\n id = name,\n label,\n options = [],\n value,\n onChange = noop,\n placeholder,\n isLoading = false,\n dropup = false,\n pullRight = false,\n autoDropDirection = true,\n bsSize = 'md',\n disabled = false,\n tabIndex = 0,\n hasError = false,\n useFilter = false,\n useClear = false,\n noItemMessage,\n selectedOptionText,\n showSelectedItemIcon = false,\n showUnselectedItemIcons = false,\n dropdownClassName,\n btnClassName,\n className,\n\n inputAddon,\n errorMessage,\n warningMessage,\n messageWhiteSpace = 'normal',\n\n ...remainingProps\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const [selectedItem, setSelectedItem] = useState<SelectOption | null>(null);\n const [isFilterActive, setIsFilterActive] = useState(false);\n const [filterValue, setFilterValue] = useState('');\n const [filteredOptions, setFilteredOptions] = useState(options);\n const [itemDOMValues, setItemDOMValues] = useState<OptionDOMValue[]>([]);\n const [focusedItemIndex, setFocusedItemIndex] = useState(DEFAULT_FOCUSED_ITEM_INDEX);\n const [keyboardUsed, setKeyboardUsed] = useState(false);\n\n const refSelect = useRef();\n const refToggle = useRef<HTMLButtonElement>(null);\n\n const ref = useClickOutside(() => closeMenu());\n const mergedSelectRefs = useMergeRefs(refSelect, ref);\n\n const updateSelectedItem = (selectOptions: SelectOption[], updatedValue: string[] | undefined) => {\n if (updatedValue && !isEmpty(updatedValue)) {\n setSelectedItem(selectOptions.find(item => item.id === updatedValue[0]) || null);\n } else if (selectOptions) {\n setSelectedItem(selectOptions.find(item => item.selected) || null);\n }\n };\n\n useEffectOnce(() => {\n updateSelectedItem(options, value);\n });\n\n const [previousOptions, setPreviousOptions] = useState(options);\n if (!isEqual(options, previousOptions)) {\n updateSelectedItem(options, value);\n setFilteredOptions(options);\n setPreviousOptions(options);\n }\n\n const [previousValue, setPreviousValue] = useState(value);\n if (!isEqual(value, previousValue)) {\n updateSelectedItem(options, value);\n setPreviousValue(value);\n }\n\n const updateDOMValues = (itemDOMValuesToUpdated: OptionDOMValue[] = []) => {\n // Skip updates when we have nothing new, or when filtering is active and we already hold a full snapshot.\n if (!itemDOMValuesToUpdated.length) {\n return;\n }\n\n const shouldKeepPreviousSnapshot = (isFilterActive || filterValue) && itemDOMValues.length > 0;\n if (shouldKeepPreviousSnapshot) {\n return;\n }\n\n setItemDOMValues(itemDOMValuesToUpdated);\n };\n\n const handleClearSelectedItem = () => {\n setSelectedItem(null);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n\n onChange(undefined);\n };\n\n const renderToggle = () => {\n const toggleClasses = classNames(\n 'dropdown-toggle',\n 'form-control',\n 'text-left',\n btnClassName && btnClassName,\n bsSize === 'sm' && 'input-sm',\n bsSize === 'lg' && 'input-lg',\n disabled && 'disabled'\n );\n\n const toggleButton = (\n <button\n type='button'\n id={id}\n name={name}\n className={toggleClasses}\n data-toggle='dropdown'\n tabIndex={tabIndex}\n aria-haspopup='true'\n aria-expanded={isOpen}\n onClick={onToggle}\n ref={refToggle}\n >\n {useFilter && isOpen && (\n <SelectFilter\n isFilterActive={isFilterActive}\n filterValue={filterValue}\n onChange={handleFilterChange}\n />\n )}\n {selectedOptionText ? (\n selectedOptionText\n ) : (\n <SelectedOption\n label={label}\n placeholder={placeholder}\n selectedItem={selectedItem}\n options={options}\n showSelectedItemIcon={showSelectedItemIcon}\n showUnselectedItemIcons={showUnselectedItemIcons}\n />\n )}\n <span className='select-toggle-actions'>\n <ClearButton showClear={useClear} selectedItem={selectedItem} onClear={handleClearSelectedItem} />\n <span className='caret' />\n </span>\n </button>\n );\n\n if (!inputAddon && !errorMessage && !warningMessage) {\n return toggleButton;\n }\n\n return (\n <WithFeedbackAndAddon\n bsSize={bsSize}\n inputAddon={inputAddon}\n errorMessage={errorMessage}\n warningMessage={warningMessage}\n messageWhiteSpace={messageWhiteSpace}\n >\n {toggleButton}\n </WithFeedbackAndAddon>\n );\n };\n\n const renderDropdownMenu = () => {\n // Start from the last tracked focus; only default to the first item when opened via keyboard and nothing is selected.\n let currentFocusedItemIndex = focusedItemIndex;\n\n // Do not auto-highlight a selected item on open; let keyboard navigation start from \"no focus\".\n // Only default to the first item when opened via keyboard and nothing was selected.\n if (keyboardUsed && !selectedItem) {\n currentFocusedItemIndex = 0;\n }\n\n return (\n <BaseSelectDropdown\n isOpen={isOpen}\n isLoading={isLoading}\n options={filteredOptions}\n focusedItemIndex={currentFocusedItemIndex}\n keyboardUsed={keyboardUsed}\n updateDOMValues={updateDOMValues}\n onSelect={onOptionChange}\n onClose={closeMenu}\n noItemMessage={noItemMessage}\n pullRight={pullRight}\n dropup={dropup}\n autoDropDirection={autoDropDirection}\n dropdownClassName={dropdownClassName}\n />\n );\n };\n\n const handleFilterChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n event.preventDefault();\n\n const targetFilterValue = event.currentTarget.value;\n\n // if cleared: reset to defaults and bail early\n if (targetFilterValue === '') {\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n return;\n }\n\n // otherwise: filter against the last known non-empty DOM snapshot\n const currentFilteredOptions = filterOptions(itemDOMValues, targetFilterValue, options);\n\n // highlight the first item of the search result if at least one item was found\n const newFocusedItemIndex = currentFilteredOptions.length > 0 ? 0 : DEFAULT_FOCUSED_ITEM_INDEX;\n\n setIsFilterActive(true);\n setFilterValue(targetFilterValue);\n setFilteredOptions(currentFilteredOptions);\n setKeyboardUsed(true);\n setFocusedItemIndex(newFocusedItemIndex);\n };\n\n const onOptionChange = (currentSelectedItem: T | undefined) => {\n setSelectedItem(currentSelectedItem || null);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n\n onChange(currentSelectedItem);\n\n closeMenu();\n };\n\n const onToggle = (event: React.MouseEvent<HTMLButtonElement>) => {\n // Don't toggle when component is disabled or\n // when filter is active, means entering some filter value\n // in order to avoid closing menu on space but allow to use it for filtering\n if (disabled || isFilterActive) {\n return;\n }\n\n // using the enter key on the toggle button will trigger a synthetic click event as all buttons are of\n // type submit by default in HTML. In order to differentiate between real click and a synthetic event\n // caused by they keyboard, use the event details. A synthetic event is always 0.\n const isKeyboardUsed = event.detail === 0;\n\n setIsOpen(!isOpen);\n setKeyboardUsed(isKeyboardUsed);\n };\n\n const closeMenu = () => {\n if (isOpen) {\n setIsOpen(false);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n refToggle.current?.focus();\n }\n };\n\n const classes = classNames('select', 'dropdown', isOpen && 'open', hasError && 'has-error', className && className);\n\n return (\n <div {...remainingProps} className={classes} ref={mergedSelectRefs}>\n {renderToggle()}\n {renderDropdownMenu()}\n </div>\n );\n};\n\nexport default Select;\n"],"names":["DEFAULT_FOCUSED_ITEM_INDEX","Select","props","name","id","label","options","value","onChange","noop","placeholder","isLoading","dropup","pullRight","autoDropDirection","bsSize","disabled","tabIndex","hasError","useFilter","useClear","noItemMessage","selectedOptionText","showSelectedItemIcon","showUnselectedItemIcons","dropdownClassName","btnClassName","className","inputAddon","errorMessage","warningMessage","messageWhiteSpace","remainingProps","isOpen","setIsOpen","useState","selectedItem","setSelectedItem","isFilterActive","setIsFilterActive","filterValue","setFilterValue","filteredOptions","setFilteredOptions","itemDOMValues","setItemDOMValues","focusedItemIndex","setFocusedItemIndex","keyboardUsed","setKeyboardUsed","refSelect","useRef","refToggle","ref","useClickOutside","closeMenu","mergedSelectRefs","useMergeRefs","updateSelectedItem","selectOptions","updatedValue","isEmpty","item","useEffectOnce","previousOptions","setPreviousOptions","isEqual","previousValue","setPreviousValue","updateDOMValues","itemDOMValuesToUpdated","handleClearSelectedItem","renderToggle","toggleClasses","classNames","toggleButton","jsxs","onToggle","jsx","SelectFilter","handleFilterChange","SelectedOption","ClearButton","WithFeedbackAndAddon","renderDropdownMenu","currentFocusedItemIndex","BaseSelectDropdown","onOptionChange","event","targetFilterValue","currentFilteredOptions","filterOptions","newFocusedItemIndex","currentSelectedItem","isKeyboardUsed","classes"],"mappings":"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"}
@@ -1,267 +1,46 @@
1
- import { HTMLAttributes, MouseEvent as ReactMouseEvent, ReactElement, ReactNode, RefAttributes } from 'react';
2
- import { MotionProps } from 'motion/react';
3
- import { TableCardsStyleSettings } from './TableCard';
4
- import { TableCellClassName, TableColumnDefinition, TableRowId, TableRowClassName, TableSortDirection, TableViewType } from './Table.types';
5
- export type { TableCellOverflow, TableCellClassName, TableColumnDefinition, TableHorizontalAlign, TableParsedCell, TableParsedCells, TableParsedFooter, TableParsedHeaderColumn, TableParsedRow, TableRowId, TableRowClassName, TableSortDirection, TableStyle, TableVerticalAlign, TableViewType, } from './Table.types';
6
- export type { TableCardsStyleSettings } from './TableCard';
1
+ import { ReactElement, ReactNode, RefAttributes } from 'react';
2
+ import { TableFooterProps } from './TableFooter';
3
+ import { TableHeaderProps } from './TableHeader';
4
+ import { TableProps, TableRowData } from './Table.types';
5
+ export type { TableCellOverflow, TableCellClassName, TableCardsStyleSettings, TableColumnDefinition, TableExpandedRowAnimation, TableHorizontalAlign, TableProps, TableRowAnimationProps, TableRowId, TableRowClassName, TableStickyColumns, TableSortDirection, TableVerticalAlign, TableViewType, } from './Table.types';
7
6
  export { default as useTableSelection } from './selection/useTableSelection';
8
7
  export type { UseTableSelectionOptions, UseTableSelectionReturn } from './selection/useTableSelection';
9
- export type { TableDataViewRow, TableExpandedContentViewRow, TableExpandedDataViewRow, TableGroupFooterViewRow, TableGroupViewRow, TableViewHeader, TableViewHeaderColumn, TableSpacerViewRow, TableViewCell, TableViewColumn, TableViewFooter, TableViewModel, TableViewRow, } from './model/tableViewModel.types';
10
- export type TableColumn<RowType extends Record<string, unknown>> = TableColumnDefinition<RowType>;
11
- export type TableRowAnimationProps<RowType extends Record<string, unknown>> = MotionProps | ((row: RowType, rowIndex: number) => MotionProps);
12
- export type TableProps<RowType extends Record<string, unknown>> = Omit<HTMLAttributes<HTMLDivElement>, 'draggable' | 'onClick'> & {
13
- /**
14
- * Row key accessor for resolving a stable unique row id.
15
- *
16
- * This is recommended whenever rows have their own identifier such as `id`, `vehicleId`, or `uuid`, especially
17
- * when using selection, active rows, expanded rows, or virtualization.
18
- *
19
- * If omitted, the row index is used as a fallback.
20
- *
21
- * @default row index
22
- */
23
- rowKey?: keyof RowType | ((row: RowType, rowIndex: number) => string | number);
24
- /**
25
- * Controls table or card rendering modes.
26
- *
27
- * @default 'TABLE'
28
- */
29
- viewType?: TableViewType;
30
- /**
31
- * Card width configuration for `MULTI_CARDS` view.
32
- */
33
- cardsStyle?: TableCardsStyleSettings;
34
- /**
35
- * Compact row/cell spacing like old `table-condensed`.
36
- *
37
- * @default false
38
- */
39
- condensed?: boolean;
40
- /**
41
- * Zebra rows like old `table-striped`.
42
- *
43
- * @default false
44
- */
45
- striped?: boolean;
46
- /**
47
- * Hover effect like old `table-hover`.
48
- *
49
- * @default false
50
- */
51
- hover?: boolean;
52
- /**
53
- * Apply table shadow.
54
- *
55
- * @default false
56
- */
57
- shadow?: boolean;
58
- /**
59
- * Simple outer border on table wrapper and card variants.
60
- *
61
- * @default true
62
- */
63
- border?: boolean;
64
- /**
65
- * Rounded table corners and card variants.
66
- * Top corners are applied to header or body (if no header),
67
- * bottom corners are applied to footer or body (if no footer).
68
- *
69
- * @default true
70
- */
71
- rounded?: boolean;
72
- /**
73
- * Show vertical and header row grid lines.
74
- *
75
- * @default false
76
- */
77
- gridLines?: boolean;
78
- /**
79
- * Optional classes for rows.
80
- */
81
- rowClassName?: TableRowClassName<RowType>;
82
- /**
83
- * Current active row key for detail context or external side panels.
84
- */
85
- activeRowId?: TableRowId;
86
- /**
87
- * Called when a row is activated or deactivated by row click.
88
- */
89
- onActiveRowChange?: (rowId: TableRowId | undefined, row: RowType, rowIndex: number) => void;
90
- /**
91
- * Optional motion props applied to data rows for enter, exit, and layout animations.
92
- *
93
- * Can be defined once for all rows or resolved per row.
94
- * A stable `rowKey` is recommended so animations keep working predictably across inserts, removals, and reordering.
95
- * Ignored when `virtualizedRows` is enabled.
96
- */
97
- rowAnimationProps?: TableRowAnimationProps<RowType>;
98
- /**
99
- * Currently selected row keys for multi-selection use cases.
100
- */
101
- selectedRowIds?: TableRowId[];
102
- /**
103
- * Called when checkbox selection changes.
104
- */
105
- onSelectionChange?: (rowIds: TableRowId[]) => void;
106
- /**
107
- * Render a selection checkbox column as the first column.
108
- */
109
- showSelectionColumn?: boolean;
110
- /**
111
- * Enables horizontal resizing on header columns except the last column.
112
- *
113
- * @default false
114
- */
115
- resizeableColumns?: boolean;
116
- /**
117
- * Enables horizontal drag-reordering for simple leaf header columns.
118
- *
119
- * @default false
120
- */
121
- draggableColumns?: boolean;
122
- /**
123
- * Controlled column order for drag-reordering.
124
- * Keys not present in the current table columns are ignored.
125
- */
126
- columnOrder?: string[];
127
- /**
128
- * Called while a column is resized via the header handle.
129
- *
130
- * Pass `undefined` to clear a previously configured width.
131
- */
132
- onColumnResize?: (columnKey: string, width?: number) => void;
133
- /**
134
- * Called when drag-reordering produces a new column order.
135
- */
136
- onColumnOrderChange?: (columnOrder: string[]) => void;
137
- /**
138
- * Optional custom header content for the selection column.
139
- * If omitted, the header renders the default select-all checkbox.
140
- */
141
- selectionHeaderContent?: ReactNode;
142
- /**
143
- * Current sorted column key.
144
- */
145
- sortBy?: string | string[];
146
- /**
147
- * Current sort direction for `sortBy`.
148
- */
149
- sortDirection?: TableSortDirection;
150
- /**
151
- * Called when a sortable header is clicked.
152
- *
153
- * Sorting itself remains controlled outside the table.
154
- * The click event is passed through as an optional third argument for modifier-key scenarios such as shift-click.
155
- */
156
- onSortChange?: (columnKey: string, direction: TableSortDirection, event: ReactMouseEvent<HTMLButtonElement>) => void;
157
- /**
158
- * Optional classes for each cell.
159
- */
160
- cellClassName?: TableCellClassName<RowType>;
161
- /**
162
- * Row click callback. Adds keyboard support and pointer cursor.
163
- */
164
- onRowClick?: (row: RowType, rowIndex: number) => void;
165
- /**
166
- * Fallback content when there are no rows.
167
- *
168
- * @default 'No data available'
169
- */
170
- noRowsState?: ReactNode;
171
- /**
172
- * Enables table-specific row virtualization for vertically scrolling table bodies.
173
- *
174
- * Virtualization is currently only active in `TABLE` view with `bodyMaxHeight`.
175
- *
176
- * @default false
177
- */
178
- virtualizedRows?: boolean;
179
- /**
180
- * Extra row count rendered above and below the visible area when virtualization is enabled.
181
- *
182
- * @default 5
183
- */
184
- virtualizationOverscan?: number;
185
- };
186
- /**
187
- * Declarative body wrapper for use as child of `<Table>`.
188
- */
189
- export declare const TableBody: (_props: import('./TableBody').TableBodyProps) => null;
190
- export type { TableBodyProps } from './TableBody';
191
- /**
192
- * Declarative header definition for use as child of `<Table>`.
193
- */
194
- export declare const TableHeader: <RowType extends Record<string, unknown> = Record<string, unknown>>(_props: import('./TableHeader').TableHeaderProps<RowType>) => null;
8
+ export declare const TableBody: import('react').ForwardRefExoticComponent<import('./Table.types').TableHtmlAttributes & {
9
+ children?: ReactNode;
10
+ maxHeight?: number | string;
11
+ onScrollBottom?: () => void;
12
+ scrollBottomOffset?: number;
13
+ } & RefAttributes<import('./TableBody').TableBodyHandle>>;
14
+ export type { TableBodyHandle, TableBodyProps } from './TableBody';
15
+ export declare const TableHeader: <RowType extends TableRowData = TableRowData>(props: TableHeaderProps<RowType>) => import("react/jsx-runtime").JSX.Element | null;
195
16
  export type { TableHeaderProps } from './TableHeader';
196
- /**
197
- * Declarative header row for multi-row table headers.
198
- */
199
- export declare const TableHeaderRow: (_props: import('./TableHeaderRow').TableHeaderRowProps) => null;
17
+ export declare const TableHeaderRow: ({ children }: import('./TableHeaderRow').TableHeaderRowProps) => import("react/jsx-runtime").JSX.Element | null;
200
18
  export type { TableHeaderRowProps } from './TableHeaderRow';
201
- /**
202
- * Declarative header column for multi-row table headers.
203
- */
204
- export declare const TableHeaderColumn: <RowType extends Record<string, unknown> = Record<string, unknown>>(_props: import('./TableHeaderColumn').TableHeaderColumnProps<RowType>) => null;
19
+ export declare const TableHeaderColumn: <RowType extends TableRowData = TableRowData>(props: import('./TableHeaderColumn').TableHeaderColumnProps<RowType>) => import("react/jsx-runtime").JSX.Element | null;
205
20
  export type { TableHeaderColumnProps } from './TableHeaderColumn';
206
- /**
207
- * Declarative footer for use as child of `<Table>`.
208
- */
209
- export declare const TableFooter: (_props: import('./TableFooter').TableFooterProps) => null;
21
+ export declare const TableFooter: (props: TableFooterProps) => import("react/jsx-runtime").JSX.Element | null;
210
22
  export type { TableFooterProps } from './TableFooter';
211
- /**
212
- * Declarative cell definition for use inside `<TableRow>`.
213
- */
214
- export declare const TableColumn: (_props: import('./TableColumn').TableColumnProps) => null;
23
+ export declare const TableColumn: (props: import('./TableColumn').TableColumnProps) => import("react/jsx-runtime").JSX.Element | null;
215
24
  export type { TableColumnProps } from './TableColumn';
216
- /**
217
- * Table-specific button for toggling expandable row state.
218
- */
219
25
  export declare const TableExpanderButton: (props: import('./TableExpanderButton').TableExpanderButtonProps) => import("react/jsx-runtime").JSX.Element;
220
26
  export type { TableExpanderButtonProps } from './TableExpanderButton';
221
- /**
222
- * Declarative row definition for use as child of `<Table>`.
223
- */
224
- export declare const TableRow: <RowType extends Record<string, unknown> = Record<string, unknown>>(_props: import('./TableRow').TableRowProps<RowType>) => null;
27
+ export declare const TableRow: <RowType extends TableRowData = TableRowData>(props: import('./TableRow').TableRowProps<RowType>) => import("react/jsx-runtime").JSX.Element | null;
225
28
  export type { TableRowProps } from './TableRow';
226
- /**
227
- * Declarative spacer row for separating table sections.
228
- */
229
- export declare const TableSpacerRow: (_props: import('./TableSpacerRow').TableSpacerRowProps) => null;
29
+ export declare const TableSpacerRow: (props: import('./TableSpacerRow').TableSpacerRowProps) => import("react/jsx-runtime").JSX.Element | null;
230
30
  export type { TableSpacerRowProps } from './TableSpacerRow';
231
- /**
232
- * Declarative expanded data row associated with a parent row.
233
- */
234
- export declare const TableExpandedRow: <RowType extends Record<string, unknown> = Record<string, unknown>>(_props: import('./TableExpandedRow').TableExpandedRowProps<RowType>) => null;
31
+ export declare const TableExpandedRow: <RowType extends TableRowData = TableRowData>(props: import('./TableExpandedRow').TableExpandedRowProps<RowType>) => import("react/jsx-runtime").JSX.Element | null;
235
32
  export type { TableExpandedRowProps } from './TableExpandedRow';
236
- /**
237
- * Declarative full-width expanded content row associated with a parent row.
238
- */
239
- export declare const TableExpandedContentRow: (_props: import('./TableExpandedContentRow').TableExpandedContentRowProps) => null;
33
+ export declare const TableExpandedContentRow: (props: import('./TableExpandedContentRow').TableExpandedContentRowProps) => import("react/jsx-runtime").JSX.Element | null;
240
34
  export type { TableExpandedContentRowProps } from './TableExpandedContentRow';
241
- /**
242
- * Declarative sticky-capable group row for grouped table sections.
243
- */
244
- export declare const TableGroupRow: (_props: import('./TableGroupRow').TableGroupRowProps) => null;
35
+ export declare const TableGroupRow: (props: import('./TableGroupRow').TableGroupRowProps) => import("react/jsx-runtime").JSX.Element | null;
245
36
  export type { TableGroupRowProps } from './TableGroupRow';
246
- /**
247
- * Declarative non-sticky group footer row for grouped table sections.
248
- */
249
- export declare const TableGroupFooterRow: (_props: import('./TableGroupFooterRow').TableGroupFooterRowProps) => null;
37
+ export declare const TableGroupFooterRow: (props: import('./TableGroupFooterRow').TableGroupFooterRowProps) => import("react/jsx-runtime").JSX.Element | null;
250
38
  export type { TableGroupFooterRowProps } from './TableGroupFooterRow';
251
- /**
252
- * Table-specific batch action dropdown for selection headers.
253
- */
254
- export declare const TableBatchDropdown: ({ items }: import('./Table').TableBatchDropdownProps) => import("react/jsx-runtime").JSX.Element;
255
- export type { TableBatchDropdownProps } from './render/header/TableBatchDropdown';
256
- /**
257
- * Table-specific wrapper for custom column filter dropdowns.
258
- */
39
+ export declare const TableBatchDropdown: ({ items, dropdownClassName, ...remainingProps }: import('./Table').TableBatchDropdownProps) => import("react/jsx-runtime").JSX.Element;
259
40
  export declare const TableColumnFilter: (props: import('./Table').TableColumnFilterProps) => import("react/jsx-runtime").JSX.Element;
260
- export type { TableColumnFilterProps } from './render/header/TableColumnFilter';
261
- /**
262
- * Table-specific dropdown for column visibility and ordering.
263
- */
264
41
  export declare const TableColumnsDropdown: (props: import('./Table').TableColumnsDropdownProps) => import("react/jsx-runtime").JSX.Element;
42
+ export type { TableBatchDropdownProps } from './render/header/TableBatchDropdown';
43
+ export type { TableColumnFilterProps } from './render/header/TableColumnFilter';
265
44
  export type { TableColumnsDropdownItem, TableColumnsDropdownProps } from './settings/TableColumnsDropdown';
266
- declare const Table: <RowType extends Record<string, unknown>>(props: TableProps<RowType> & RefAttributes<HTMLDivElement>) => ReactElement;
45
+ declare const Table: <RowType extends TableRowData>(props: TableProps<RowType> & RefAttributes<HTMLDivElement>) => ReactElement;
267
46
  export default Table;