@itwin/itwinui-react 3.0.4 → 3.0.6

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 (500) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/cjs/core/Alert/Alert.js +46 -106
  3. package/cjs/core/Avatar/Avatar.js +21 -58
  4. package/cjs/core/AvatarGroup/AvatarGroup.js +26 -64
  5. package/cjs/core/Backdrop/Backdrop.js +8 -16
  6. package/cjs/core/Badge/Badge.js +22 -39
  7. package/cjs/core/Breadcrumbs/Breadcrumbs.js +61 -138
  8. package/cjs/core/ButtonGroup/ButtonGroup.js +32 -68
  9. package/cjs/core/Buttons/Button.js +11 -57
  10. package/cjs/core/Buttons/DropdownButton.js +15 -49
  11. package/cjs/core/Buttons/IconButton.js +13 -53
  12. package/cjs/core/Buttons/IdeasButton.js +8 -20
  13. package/cjs/core/Buttons/SplitButton.js +43 -103
  14. package/cjs/core/Carousel/Carousel.js +54 -78
  15. package/cjs/core/Carousel/CarouselContext.js +4 -4
  16. package/cjs/core/Carousel/CarouselDot.js +12 -23
  17. package/cjs/core/Carousel/CarouselDotsList.js +92 -153
  18. package/cjs/core/Carousel/CarouselNavigation.js +41 -84
  19. package/cjs/core/Carousel/CarouselSlide.js +26 -49
  20. package/cjs/core/Carousel/CarouselSlider.js +47 -66
  21. package/cjs/core/Checkbox/Checkbox.js +32 -88
  22. package/cjs/core/ColorPicker/ColorBuilder.js +174 -292
  23. package/cjs/core/ColorPicker/ColorInputPanel.js +246 -411
  24. package/cjs/core/ColorPicker/ColorPalette.js +23 -47
  25. package/cjs/core/ColorPicker/ColorPicker.js +53 -87
  26. package/cjs/core/ColorPicker/ColorPickerContext.js +9 -11
  27. package/cjs/core/ColorPicker/ColorSwatch.js +15 -40
  28. package/cjs/core/ComboBox/ComboBox.js +280 -402
  29. package/cjs/core/ComboBox/ComboBoxEndIcon.js +12 -28
  30. package/cjs/core/ComboBox/ComboBoxInput.js +131 -207
  31. package/cjs/core/ComboBox/ComboBoxInputContainer.js +12 -35
  32. package/cjs/core/ComboBox/ComboBoxMenu.js +43 -87
  33. package/cjs/core/ComboBox/ComboBoxMenuItem.js +21 -73
  34. package/cjs/core/ComboBox/ComboBoxMultipleContainer.js +7 -13
  35. package/cjs/core/ComboBox/helpers.js +43 -47
  36. package/cjs/core/DatePicker/DatePicker.js +333 -569
  37. package/cjs/core/Dialog/Dialog.js +36 -65
  38. package/cjs/core/Dialog/DialogBackdrop.js +27 -47
  39. package/cjs/core/Dialog/DialogButtonBar.js +3 -3
  40. package/cjs/core/Dialog/DialogContent.js +18 -26
  41. package/cjs/core/Dialog/DialogContext.js +5 -5
  42. package/cjs/core/Dialog/DialogDragContext.js +8 -8
  43. package/cjs/core/Dialog/DialogMain.js +137 -183
  44. package/cjs/core/Dialog/DialogTitleBar.js +20 -67
  45. package/cjs/core/Dialog/DialogTitleBarTitle.js +3 -3
  46. package/cjs/core/Divider/Divider.js +8 -14
  47. package/cjs/core/DropdownMenu/DropdownMenu.js +46 -80
  48. package/cjs/core/ExpandableBlock/ExpandableBlock.js +101 -206
  49. package/cjs/core/Fieldset/Fieldset.js +14 -25
  50. package/cjs/core/FileUpload/FileEmptyCard.js +17 -43
  51. package/cjs/core/FileUpload/FileUpload.js +42 -88
  52. package/cjs/core/FileUpload/FileUploadCard.js +84 -169
  53. package/cjs/core/FileUpload/FileUploadTemplate.js +16 -51
  54. package/cjs/core/Flex/Flex.js +77 -93
  55. package/cjs/core/Footer/Footer.js +64 -103
  56. package/cjs/core/Footer/FooterItem.js +3 -3
  57. package/cjs/core/Footer/FooterList.js +3 -3
  58. package/cjs/core/Footer/FooterSeparator.js +5 -8
  59. package/cjs/core/Header/Header.js +22 -67
  60. package/cjs/core/Header/HeaderBasicButton.js +13 -24
  61. package/cjs/core/Header/HeaderBreadcrumbs.js +14 -38
  62. package/cjs/core/Header/HeaderButton.js +22 -76
  63. package/cjs/core/Header/HeaderDropdownButton.js +20 -48
  64. package/cjs/core/Header/HeaderLogo.js +11 -42
  65. package/cjs/core/Header/HeaderSplitButton.js +21 -66
  66. package/cjs/core/Icon/Icon.js +18 -32
  67. package/cjs/core/InformationPanel/InformationPanel.js +42 -77
  68. package/cjs/core/InformationPanel/InformationPanelBody.js +4 -6
  69. package/cjs/core/InformationPanel/InformationPanelContent.js +8 -20
  70. package/cjs/core/InformationPanel/InformationPanelHeader.js +14 -34
  71. package/cjs/core/InformationPanel/InformationPanelWrapper.js +4 -6
  72. package/cjs/core/Input/Input.js +10 -18
  73. package/cjs/core/InputGrid/InputGrid.js +8 -17
  74. package/cjs/core/InputGroup/InputGroup.js +25 -72
  75. package/cjs/core/InputWithDecorations/InputWithDecorations.js +23 -51
  76. package/cjs/core/Label/Label.js +11 -32
  77. package/cjs/core/LabeledInput/LabeledInput.js +20 -70
  78. package/cjs/core/LabeledSelect/LabeledSelect.js +28 -77
  79. package/cjs/core/LabeledTextarea/LabeledTextarea.js +7 -13
  80. package/cjs/core/LinkAction/LinkAction.js +3 -3
  81. package/cjs/core/List/List.js +3 -3
  82. package/cjs/core/List/ListItem.js +35 -55
  83. package/cjs/core/Menu/Menu.js +53 -66
  84. package/cjs/core/Menu/MenuDivider.js +4 -4
  85. package/cjs/core/Menu/MenuExtraContent.js +4 -4
  86. package/cjs/core/Menu/MenuItem.js +92 -168
  87. package/cjs/core/Menu/MenuItemSkeleton.js +19 -54
  88. package/cjs/core/Modal/Modal.js +11 -38
  89. package/cjs/core/Modal/ModalButtonBar.js +4 -7
  90. package/cjs/core/Modal/ModalContent.js +3 -3
  91. package/cjs/core/NonIdealState/ErrorPage.js +131 -187
  92. package/cjs/core/NonIdealState/NonIdealState.js +12 -77
  93. package/cjs/core/NotificationMarker/NotificationMarker.js +8 -29
  94. package/cjs/core/Overlay/Overlay.d.ts +20 -24
  95. package/cjs/core/Overlay/Overlay.js +50 -64
  96. package/cjs/core/Popover/Popover.js +87 -157
  97. package/cjs/core/ProgressIndicators/ProgressLinear.js +11 -49
  98. package/cjs/core/ProgressIndicators/ProgressRadial.js +19 -51
  99. package/cjs/core/Radio/Radio.js +12 -54
  100. package/cjs/core/RadioTiles/RadioTile.js +14 -80
  101. package/cjs/core/RadioTiles/RadioTileGroup.js +9 -16
  102. package/cjs/core/SearchBox/SearchBox.js +104 -221
  103. package/cjs/core/Select/Select.js +141 -276
  104. package/cjs/core/Select/SelectTag.js +9 -21
  105. package/cjs/core/Select/SelectTagContainer.js +14 -30
  106. package/cjs/core/SideNavigation/SideNavigation.js +29 -138
  107. package/cjs/core/SideNavigation/SidenavButton.js +8 -30
  108. package/cjs/core/SideNavigation/SidenavSubmenu.js +9 -23
  109. package/cjs/core/SideNavigation/SidenavSubmenuHeader.js +10 -29
  110. package/cjs/core/SkipToContentLink/SkipToContentLink.js +8 -20
  111. package/cjs/core/Slider/Slider.js +195 -376
  112. package/cjs/core/Slider/Thumb.js +57 -108
  113. package/cjs/core/Slider/Track.js +55 -83
  114. package/cjs/core/StatusMessage/StatusMessage.js +12 -34
  115. package/cjs/core/Stepper/Stepper.js +21 -80
  116. package/cjs/core/Stepper/StepperStep.js +36 -109
  117. package/cjs/core/Stepper/WorkflowDiagram.js +15 -38
  118. package/cjs/core/Stepper/WorkflowDiagramStep.js +11 -39
  119. package/cjs/core/Surface/Surface.js +54 -94
  120. package/cjs/core/Table/SubRowExpander.js +15 -37
  121. package/cjs/core/Table/Table.js +419 -763
  122. package/cjs/core/Table/TableCell.js +63 -113
  123. package/cjs/core/Table/TablePaginator.js +136 -312
  124. package/cjs/core/Table/TableRowMemoized.js +64 -137
  125. package/cjs/core/Table/actionHandlers/expandHandler.js +12 -12
  126. package/cjs/core/Table/actionHandlers/filterHandler.js +17 -25
  127. package/cjs/core/Table/actionHandlers/index.js +14 -56
  128. package/cjs/core/Table/actionHandlers/resizeHandler.js +13 -13
  129. package/cjs/core/Table/actionHandlers/selectHandler.js +98 -128
  130. package/cjs/core/Table/cells/DefaultCell.js +13 -48
  131. package/cjs/core/Table/cells/EditableCell.js +46 -75
  132. package/cjs/core/Table/cells/index.js +6 -16
  133. package/cjs/core/Table/columns/actionColumn.js +67 -97
  134. package/cjs/core/Table/columns/expanderColumn.js +32 -46
  135. package/cjs/core/Table/columns/index.js +11 -41
  136. package/cjs/core/Table/columns/selectionColumn.js +29 -57
  137. package/cjs/core/Table/filters/BaseFilter.js +13 -24
  138. package/cjs/core/Table/filters/DateRangeFilter/DatePickerInput.js +52 -120
  139. package/cjs/core/Table/filters/DateRangeFilter/DateRangeFilter.js +60 -120
  140. package/cjs/core/Table/filters/FilterButtonBar.js +16 -39
  141. package/cjs/core/Table/filters/FilterToggle.js +26 -62
  142. package/cjs/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +36 -58
  143. package/cjs/core/Table/filters/TextFilter/TextFilter.js +28 -40
  144. package/cjs/core/Table/filters/customFilterFunctions.js +14 -16
  145. package/cjs/core/Table/filters/defaultFilterFunctions.js +81 -86
  146. package/cjs/core/Table/filters/index.js +11 -35
  147. package/cjs/core/Table/filters/tableFilters.js +32 -44
  148. package/cjs/core/Table/filters/types.js +2 -2
  149. package/cjs/core/Table/hooks/index.js +19 -67
  150. package/cjs/core/Table/hooks/useColumnDragAndDrop.js +86 -101
  151. package/cjs/core/Table/hooks/useExpanderCell.js +25 -33
  152. package/cjs/core/Table/hooks/useResizeColumns.js +290 -362
  153. package/cjs/core/Table/hooks/useScrollToRow.js +38 -46
  154. package/cjs/core/Table/hooks/useSelectionCell.js +10 -17
  155. package/cjs/core/Table/hooks/useStickyColumns.js +62 -64
  156. package/cjs/core/Table/hooks/useSubRowFiltering.js +88 -95
  157. package/cjs/core/Table/hooks/useSubRowSelection.js +31 -32
  158. package/cjs/core/Table/index.js +18 -78
  159. package/cjs/core/Table/utils.js +40 -42
  160. package/cjs/core/Tabs/Tabs.js +232 -417
  161. package/cjs/core/Tag/Tag.js +15 -42
  162. package/cjs/core/Tag/TagContainer.js +11 -23
  163. package/cjs/core/Textarea/Textarea.js +6 -11
  164. package/cjs/core/ThemeProvider/ThemeContext.js +4 -4
  165. package/cjs/core/ThemeProvider/ThemeProvider.js +52 -105
  166. package/cjs/core/Tile/Tile.js +230 -410
  167. package/cjs/core/TimePicker/TimePicker.js +234 -458
  168. package/cjs/core/Toast/Toast.js +107 -204
  169. package/cjs/core/Toast/Toaster.js +77 -102
  170. package/cjs/core/ToggleSwitch/ToggleSwitch.js +23 -66
  171. package/cjs/core/Tooltip/Tooltip.js +91 -137
  172. package/cjs/core/TransferList/TransferList.js +103 -177
  173. package/cjs/core/Tree/Tree.js +129 -204
  174. package/cjs/core/Tree/TreeContext.js +9 -9
  175. package/cjs/core/Tree/TreeNode.js +104 -207
  176. package/cjs/core/Tree/TreeNodeExpander.js +12 -26
  177. package/cjs/core/Typography/Anchor.js +3 -3
  178. package/cjs/core/Typography/Blockquote.js +10 -18
  179. package/cjs/core/Typography/Code.js +3 -3
  180. package/cjs/core/Typography/Kbd.js +21 -30
  181. package/cjs/core/Typography/Text.js +13 -26
  182. package/cjs/core/VisuallyHidden/VisuallyHidden.js +8 -14
  183. package/cjs/core/utils/color/ColorValue.js +453 -535
  184. package/cjs/core/utils/color/index.js +4 -4
  185. package/cjs/core/utils/components/AutoclearingHiddenLiveRegion.js +13 -20
  186. package/cjs/core/utils/components/Box.js +3 -3
  187. package/cjs/core/utils/components/ButtonBase.js +20 -38
  188. package/cjs/core/utils/components/FocusTrap.js +38 -47
  189. package/cjs/core/utils/components/InputContainer.js +19 -58
  190. package/cjs/core/utils/components/InputFlexContainer.js +8 -24
  191. package/cjs/core/utils/components/MiddleTextTruncation.js +22 -32
  192. package/cjs/core/utils/components/Portal.js +20 -22
  193. package/cjs/core/utils/components/Resizer.js +196 -253
  194. package/cjs/core/utils/components/VirtualScroll.js +223 -304
  195. package/cjs/core/utils/components/WithCSSTransition.js +32 -49
  196. package/cjs/core/utils/components/index.js +14 -14
  197. package/cjs/core/utils/functions/colors.js +22 -25
  198. package/cjs/core/utils/functions/date.js +10 -10
  199. package/cjs/core/utils/functions/dev.js +14 -13
  200. package/cjs/core/utils/functions/dom.d.ts +2 -1
  201. package/cjs/core/utils/functions/dom.js +22 -25
  202. package/cjs/core/utils/functions/focusable.js +17 -26
  203. package/cjs/core/utils/functions/import.js +23 -46
  204. package/cjs/core/utils/functions/index.js +13 -13
  205. package/cjs/core/utils/functions/numbers.d.ts +7 -0
  206. package/cjs/core/utils/functions/numbers.js +21 -10
  207. package/cjs/core/utils/functions/polymorphic.js +30 -43
  208. package/cjs/core/utils/functions/react.js +24 -26
  209. package/cjs/core/utils/functions/supports.js +4 -5
  210. package/cjs/core/utils/hooks/index.js +17 -17
  211. package/cjs/core/utils/hooks/useContainerWidth.js +19 -26
  212. package/cjs/core/utils/hooks/useControlledState.js +12 -21
  213. package/cjs/core/utils/hooks/useDragAndDrop.js +87 -110
  214. package/cjs/core/utils/hooks/useEventListener.js +22 -22
  215. package/cjs/core/utils/hooks/useGlobals.js +27 -33
  216. package/cjs/core/utils/hooks/useId.js +8 -10
  217. package/cjs/core/utils/hooks/useIntersection.js +24 -30
  218. package/cjs/core/utils/hooks/useIsClient.js +9 -9
  219. package/cjs/core/utils/hooks/useIsomorphicLayoutEffect.js +5 -6
  220. package/cjs/core/utils/hooks/useLatestRef.js +9 -9
  221. package/cjs/core/utils/hooks/useMediaQuery.js +31 -31
  222. package/cjs/core/utils/hooks/useMergedRefs.js +16 -15
  223. package/cjs/core/utils/hooks/useOverflow.js +57 -70
  224. package/cjs/core/utils/hooks/useResizeObserver.js +17 -22
  225. package/cjs/core/utils/hooks/useSafeContext.js +9 -9
  226. package/cjs/core/utils/icons/StatusIconMap.js +12 -28
  227. package/cjs/core/utils/icons/Svg.js +3 -3
  228. package/cjs/core/utils/icons/SvgCalendar.js +7 -12
  229. package/cjs/core/utils/icons/SvgCaretDownSmall.js +7 -12
  230. package/cjs/core/utils/icons/SvgCaretRightSmall.js +7 -12
  231. package/cjs/core/utils/icons/SvgCaretUpSmall.js +7 -12
  232. package/cjs/core/utils/icons/SvgCheckmark.js +7 -10
  233. package/cjs/core/utils/icons/SvgCheckmarkSmall.js +7 -12
  234. package/cjs/core/utils/icons/SvgChevronLeft.js +7 -12
  235. package/cjs/core/utils/icons/SvgChevronLeftDouble.js +7 -12
  236. package/cjs/core/utils/icons/SvgChevronRight.js +7 -12
  237. package/cjs/core/utils/icons/SvgChevronRightDouble.js +7 -12
  238. package/cjs/core/utils/icons/SvgClose.js +7 -12
  239. package/cjs/core/utils/icons/SvgCloseSmall.js +7 -12
  240. package/cjs/core/utils/icons/SvgColumnManager.js +7 -12
  241. package/cjs/core/utils/icons/SvgDocument.js +7 -10
  242. package/cjs/core/utils/icons/SvgFilter.js +7 -10
  243. package/cjs/core/utils/icons/SvgFilterHollow.js +7 -12
  244. package/cjs/core/utils/icons/SvgImportantSmall.js +7 -12
  245. package/cjs/core/utils/icons/SvgInfoCircular.js +7 -12
  246. package/cjs/core/utils/icons/SvgMore.js +7 -12
  247. package/cjs/core/utils/icons/SvgMoreVertical.js +7 -12
  248. package/cjs/core/utils/icons/SvgNew.js +7 -12
  249. package/cjs/core/utils/icons/SvgSearch.js +7 -12
  250. package/cjs/core/utils/icons/SvgSmileyHappy.js +7 -12
  251. package/cjs/core/utils/icons/SvgSortDown.js +7 -12
  252. package/cjs/core/utils/icons/SvgSortUp.js +7 -12
  253. package/cjs/core/utils/icons/SvgStatusError.js +7 -12
  254. package/cjs/core/utils/icons/SvgStatusSuccess.js +7 -12
  255. package/cjs/core/utils/icons/SvgStatusWarning.js +7 -12
  256. package/cjs/core/utils/icons/SvgSwap.js +7 -12
  257. package/cjs/core/utils/icons/SvgUpload.js +7 -12
  258. package/cjs/core/utils/icons/index.js +34 -34
  259. package/cjs/core/utils/index.js +10 -10
  260. package/cjs/core/utils/props.js +2 -2
  261. package/cjs/core/utils/types.js +2 -2
  262. package/cjs/index.js +229 -949
  263. package/cjs/react-table/react-table.js +2 -2
  264. package/cjs/styles.js +412 -425
  265. package/esm/core/Alert/Alert.js +39 -106
  266. package/esm/core/Avatar/Avatar.js +14 -42
  267. package/esm/core/AvatarGroup/AvatarGroup.js +20 -58
  268. package/esm/core/Backdrop/Backdrop.js +2 -10
  269. package/esm/core/Badge/Badge.js +16 -31
  270. package/esm/core/Breadcrumbs/Breadcrumbs.js +55 -135
  271. package/esm/core/ButtonGroup/ButtonGroup.js +25 -61
  272. package/esm/core/Buttons/Button.js +5 -45
  273. package/esm/core/Buttons/DropdownButton.js +7 -37
  274. package/esm/core/Buttons/IconButton.js +5 -40
  275. package/esm/core/Buttons/IdeasButton.js +2 -12
  276. package/esm/core/Buttons/SplitButton.js +34 -101
  277. package/esm/core/Carousel/Carousel.js +43 -72
  278. package/esm/core/Carousel/CarouselDot.js +6 -17
  279. package/esm/core/Carousel/CarouselDotsList.js +85 -147
  280. package/esm/core/Carousel/CarouselNavigation.js +32 -68
  281. package/esm/core/Carousel/CarouselSlide.js +19 -41
  282. package/esm/core/Carousel/CarouselSlider.js +41 -65
  283. package/esm/core/Checkbox/Checkbox.js +25 -78
  284. package/esm/core/ColorPicker/ColorBuilder.js +167 -280
  285. package/esm/core/ColorPicker/ColorInputPanel.js +237 -395
  286. package/esm/core/ColorPicker/ColorPalette.js +14 -35
  287. package/esm/core/ColorPicker/ColorPicker.js +46 -79
  288. package/esm/core/ColorPicker/ColorPickerContext.js +5 -7
  289. package/esm/core/ColorPicker/ColorSwatch.js +7 -24
  290. package/esm/core/ComboBox/ComboBox.js +267 -396
  291. package/esm/core/ComboBox/ComboBoxEndIcon.js +5 -18
  292. package/esm/core/ComboBox/ComboBoxInput.js +125 -197
  293. package/esm/core/ComboBox/ComboBoxInputContainer.js +5 -20
  294. package/esm/core/ComboBox/ComboBoxMenu.js +37 -77
  295. package/esm/core/ComboBox/ComboBoxMenuItem.js +14 -61
  296. package/esm/core/ComboBox/ComboBoxMultipleContainer.js +2 -6
  297. package/esm/core/ComboBox/helpers.js +38 -38
  298. package/esm/core/DatePicker/DatePicker.js +326 -555
  299. package/esm/core/Dialog/Dialog.js +24 -53
  300. package/esm/core/Dialog/DialogBackdrop.js +19 -39
  301. package/esm/core/Dialog/DialogContent.js +12 -20
  302. package/esm/core/Dialog/DialogContext.js +1 -1
  303. package/esm/core/Dialog/DialogDragContext.js +4 -4
  304. package/esm/core/Dialog/DialogMain.js +128 -177
  305. package/esm/core/Dialog/DialogTitleBar.js +10 -45
  306. package/esm/core/Divider/Divider.js +2 -8
  307. package/esm/core/DropdownMenu/DropdownMenu.js +40 -75
  308. package/esm/core/ExpandableBlock/ExpandableBlock.js +92 -193
  309. package/esm/core/Fieldset/Fieldset.js +8 -19
  310. package/esm/core/FileUpload/FileEmptyCard.js +8 -19
  311. package/esm/core/FileUpload/FileUpload.js +36 -72
  312. package/esm/core/FileUpload/FileUploadCard.js +76 -153
  313. package/esm/core/FileUpload/FileUploadTemplate.js +9 -37
  314. package/esm/core/Flex/Flex.js +71 -87
  315. package/esm/core/Footer/Footer.js +55 -86
  316. package/esm/core/Footer/FooterSeparator.js +1 -1
  317. package/esm/core/Header/Header.js +14 -55
  318. package/esm/core/Header/HeaderBasicButton.js +7 -15
  319. package/esm/core/Header/HeaderBreadcrumbs.js +8 -32
  320. package/esm/core/Header/HeaderButton.js +14 -62
  321. package/esm/core/Header/HeaderDropdownButton.js +13 -42
  322. package/esm/core/Header/HeaderLogo.js +5 -36
  323. package/esm/core/Header/HeaderSplitButton.js +14 -61
  324. package/esm/core/Icon/Icon.js +12 -26
  325. package/esm/core/InformationPanel/InformationPanel.js +36 -71
  326. package/esm/core/InformationPanel/InformationPanelContent.js +3 -17
  327. package/esm/core/InformationPanel/InformationPanelHeader.js +8 -32
  328. package/esm/core/InformationPanel/InformationPanelWrapper.js +1 -3
  329. package/esm/core/Input/Input.js +4 -12
  330. package/esm/core/InputGrid/InputGrid.js +2 -11
  331. package/esm/core/InputGroup/InputGroup.js +16 -57
  332. package/esm/core/InputWithDecorations/InputWithDecorations.js +11 -42
  333. package/esm/core/Label/Label.js +5 -26
  334. package/esm/core/LabeledInput/LabeledInput.js +10 -63
  335. package/esm/core/LabeledSelect/LabeledSelect.js +18 -67
  336. package/esm/core/LabeledTextarea/LabeledTextarea.js +2 -8
  337. package/esm/core/List/ListItem.js +28 -46
  338. package/esm/core/Menu/Menu.js +48 -64
  339. package/esm/core/Menu/MenuDivider.js +1 -1
  340. package/esm/core/Menu/MenuExtraContent.js +1 -1
  341. package/esm/core/Menu/MenuItem.js +84 -164
  342. package/esm/core/Menu/MenuItemSkeleton.js +12 -43
  343. package/esm/core/Modal/Modal.js +6 -33
  344. package/esm/core/NonIdealState/ErrorPage.js +123 -173
  345. package/esm/core/NonIdealState/NonIdealState.js +6 -65
  346. package/esm/core/NotificationMarker/NotificationMarker.js +2 -20
  347. package/esm/core/Overlay/Overlay.d.ts +20 -24
  348. package/esm/core/Overlay/Overlay.js +45 -55
  349. package/esm/core/Popover/Popover.js +80 -172
  350. package/esm/core/ProgressIndicators/ProgressLinear.js +5 -40
  351. package/esm/core/ProgressIndicators/ProgressRadial.js +14 -40
  352. package/esm/core/Radio/Radio.js +6 -45
  353. package/esm/core/RadioTiles/RadioTile.js +8 -62
  354. package/esm/core/RadioTiles/RadioTileGroup.js +3 -10
  355. package/esm/core/SearchBox/SearchBox.js +97 -214
  356. package/esm/core/Select/Select.js +130 -265
  357. package/esm/core/Select/SelectTag.js +3 -15
  358. package/esm/core/Select/SelectTagContainer.js +7 -20
  359. package/esm/core/SideNavigation/SideNavigation.js +21 -118
  360. package/esm/core/SideNavigation/SidenavButton.js +2 -24
  361. package/esm/core/SideNavigation/SidenavSubmenu.js +3 -14
  362. package/esm/core/SideNavigation/SidenavSubmenuHeader.js +4 -20
  363. package/esm/core/SkipToContentLink/SkipToContentLink.js +2 -11
  364. package/esm/core/Slider/Slider.js +187 -340
  365. package/esm/core/Slider/Thumb.js +50 -97
  366. package/esm/core/Slider/Track.js +49 -74
  367. package/esm/core/StatusMessage/StatusMessage.js +5 -23
  368. package/esm/core/Stepper/Stepper.js +14 -70
  369. package/esm/core/Stepper/StepperStep.js +29 -92
  370. package/esm/core/Stepper/WorkflowDiagram.js +8 -21
  371. package/esm/core/Stepper/WorkflowDiagramStep.js +4 -22
  372. package/esm/core/Surface/Surface.js +48 -84
  373. package/esm/core/Table/SubRowExpander.js +9 -31
  374. package/esm/core/Table/Table.js +408 -763
  375. package/esm/core/Table/TableCell.js +53 -87
  376. package/esm/core/Table/TablePaginator.js +125 -306
  377. package/esm/core/Table/TableRowMemoized.js +58 -129
  378. package/esm/core/Table/actionHandlers/expandHandler.js +10 -10
  379. package/esm/core/Table/actionHandlers/filterHandler.js +15 -23
  380. package/esm/core/Table/actionHandlers/index.js +1 -5
  381. package/esm/core/Table/actionHandlers/resizeHandler.js +11 -11
  382. package/esm/core/Table/actionHandlers/selectHandler.js +95 -122
  383. package/esm/core/Table/cells/DefaultCell.js +7 -42
  384. package/esm/core/Table/cells/EditableCell.js +41 -70
  385. package/esm/core/Table/columns/actionColumn.js +55 -85
  386. package/esm/core/Table/columns/expanderColumn.js +25 -39
  387. package/esm/core/Table/columns/selectionColumn.js +23 -51
  388. package/esm/core/Table/filters/BaseFilter.js +7 -15
  389. package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.js +42 -107
  390. package/esm/core/Table/filters/DateRangeFilter/DateRangeFilter.js +52 -110
  391. package/esm/core/Table/filters/FilterButtonBar.js +9 -28
  392. package/esm/core/Table/filters/FilterToggle.js +18 -51
  393. package/esm/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +28 -50
  394. package/esm/core/Table/filters/TextFilter/TextFilter.js +20 -32
  395. package/esm/core/Table/filters/customFilterFunctions.js +12 -14
  396. package/esm/core/Table/filters/defaultFilterFunctions.js +79 -84
  397. package/esm/core/Table/filters/tableFilters.js +25 -34
  398. package/esm/core/Table/hooks/useColumnDragAndDrop.js +81 -88
  399. package/esm/core/Table/hooks/useExpanderCell.js +20 -26
  400. package/esm/core/Table/hooks/useResizeColumns.js +287 -353
  401. package/esm/core/Table/hooks/useScrollToRow.js +34 -42
  402. package/esm/core/Table/hooks/useSelectionCell.js +6 -10
  403. package/esm/core/Table/hooks/useStickyColumns.js +59 -61
  404. package/esm/core/Table/hooks/useSubRowFiltering.js +83 -90
  405. package/esm/core/Table/hooks/useSubRowSelection.js +27 -28
  406. package/esm/core/Table/index.js +1 -5
  407. package/esm/core/Table/utils.js +38 -40
  408. package/esm/core/Tabs/Tabs.js +226 -401
  409. package/esm/core/Tag/Tag.js +8 -35
  410. package/esm/core/Tag/TagContainer.js +5 -17
  411. package/esm/core/Textarea/Textarea.js +1 -6
  412. package/esm/core/ThemeProvider/ThemeProvider.js +44 -101
  413. package/esm/core/Tile/Tile.js +218 -386
  414. package/esm/core/TimePicker/TimePicker.js +228 -448
  415. package/esm/core/Toast/Toast.js +99 -193
  416. package/esm/core/Toast/Toaster.js +69 -82
  417. package/esm/core/ToggleSwitch/ToggleSwitch.js +17 -60
  418. package/esm/core/Tooltip/Tooltip.js +86 -151
  419. package/esm/core/TransferList/TransferList.js +93 -157
  420. package/esm/core/Tree/Tree.js +122 -196
  421. package/esm/core/Tree/TreeContext.js +5 -5
  422. package/esm/core/Tree/TreeNode.js +96 -195
  423. package/esm/core/Tree/TreeNodeExpander.js +5 -16
  424. package/esm/core/Typography/Blockquote.js +4 -12
  425. package/esm/core/Typography/Kbd.js +15 -24
  426. package/esm/core/Typography/Text.js +7 -20
  427. package/esm/core/VisuallyHidden/VisuallyHidden.js +2 -8
  428. package/esm/core/utils/color/ColorValue.js +449 -524
  429. package/esm/core/utils/components/AutoclearingHiddenLiveRegion.js +7 -11
  430. package/esm/core/utils/components/ButtonBase.js +13 -31
  431. package/esm/core/utils/components/FocusTrap.js +32 -41
  432. package/esm/core/utils/components/InputContainer.js +11 -50
  433. package/esm/core/utils/components/InputFlexContainer.js +2 -15
  434. package/esm/core/utils/components/MiddleTextTruncation.js +17 -27
  435. package/esm/core/utils/components/Portal.js +12 -12
  436. package/esm/core/utils/components/Resizer.js +192 -250
  437. package/esm/core/utils/components/VirtualScroll.js +218 -297
  438. package/esm/core/utils/components/WithCSSTransition.js +26 -43
  439. package/esm/core/utils/functions/colors.js +19 -19
  440. package/esm/core/utils/functions/date.js +8 -8
  441. package/esm/core/utils/functions/dev.js +12 -11
  442. package/esm/core/utils/functions/dom.d.ts +2 -1
  443. package/esm/core/utils/functions/dom.js +18 -18
  444. package/esm/core/utils/functions/focusable.js +15 -24
  445. package/esm/core/utils/functions/import.js +2 -4
  446. package/esm/core/utils/functions/numbers.d.ts +7 -0
  447. package/esm/core/utils/functions/numbers.js +17 -7
  448. package/esm/core/utils/functions/polymorphic.js +23 -32
  449. package/esm/core/utils/functions/react.js +19 -21
  450. package/esm/core/utils/functions/supports.js +1 -2
  451. package/esm/core/utils/hooks/useContainerWidth.js +13 -16
  452. package/esm/core/utils/hooks/useControlledState.js +8 -17
  453. package/esm/core/utils/hooks/useDragAndDrop.js +81 -100
  454. package/esm/core/utils/hooks/useEventListener.js +18 -18
  455. package/esm/core/utils/hooks/useGlobals.js +21 -27
  456. package/esm/core/utils/hooks/useId.js +3 -4
  457. package/esm/core/utils/hooks/useIntersection.js +19 -25
  458. package/esm/core/utils/hooks/useIsClient.js +5 -5
  459. package/esm/core/utils/hooks/useIsomorphicLayoutEffect.js +1 -2
  460. package/esm/core/utils/hooks/useLatestRef.js +5 -5
  461. package/esm/core/utils/hooks/useMediaQuery.js +25 -23
  462. package/esm/core/utils/hooks/useMergedRefs.js +12 -11
  463. package/esm/core/utils/hooks/useOverflow.js +51 -63
  464. package/esm/core/utils/hooks/useResizeObserver.js +12 -17
  465. package/esm/core/utils/hooks/useSafeContext.js +5 -5
  466. package/esm/core/utils/icons/StatusIconMap.js +4 -8
  467. package/esm/core/utils/icons/SvgCalendar.js +2 -7
  468. package/esm/core/utils/icons/SvgCaretDownSmall.js +2 -7
  469. package/esm/core/utils/icons/SvgCaretRightSmall.js +2 -7
  470. package/esm/core/utils/icons/SvgCaretUpSmall.js +2 -7
  471. package/esm/core/utils/icons/SvgCheckmark.js +2 -5
  472. package/esm/core/utils/icons/SvgCheckmarkSmall.js +2 -7
  473. package/esm/core/utils/icons/SvgChevronLeft.js +2 -7
  474. package/esm/core/utils/icons/SvgChevronLeftDouble.js +2 -7
  475. package/esm/core/utils/icons/SvgChevronRight.js +2 -7
  476. package/esm/core/utils/icons/SvgChevronRightDouble.js +2 -7
  477. package/esm/core/utils/icons/SvgClose.js +2 -7
  478. package/esm/core/utils/icons/SvgCloseSmall.js +2 -7
  479. package/esm/core/utils/icons/SvgColumnManager.js +2 -7
  480. package/esm/core/utils/icons/SvgDocument.js +2 -5
  481. package/esm/core/utils/icons/SvgFilter.js +2 -5
  482. package/esm/core/utils/icons/SvgFilterHollow.js +2 -7
  483. package/esm/core/utils/icons/SvgImportantSmall.js +2 -7
  484. package/esm/core/utils/icons/SvgInfoCircular.js +2 -7
  485. package/esm/core/utils/icons/SvgMore.js +2 -7
  486. package/esm/core/utils/icons/SvgMoreVertical.js +2 -7
  487. package/esm/core/utils/icons/SvgNew.js +2 -7
  488. package/esm/core/utils/icons/SvgSearch.js +2 -7
  489. package/esm/core/utils/icons/SvgSmileyHappy.js +2 -7
  490. package/esm/core/utils/icons/SvgSortDown.js +2 -7
  491. package/esm/core/utils/icons/SvgSortUp.js +2 -7
  492. package/esm/core/utils/icons/SvgStatusError.js +2 -7
  493. package/esm/core/utils/icons/SvgStatusSuccess.js +2 -7
  494. package/esm/core/utils/icons/SvgStatusWarning.js +2 -7
  495. package/esm/core/utils/icons/SvgSwap.js +2 -7
  496. package/esm/core/utils/icons/SvgUpload.js +2 -7
  497. package/esm/index.js +3 -21
  498. package/esm/styles.js +414 -425
  499. package/package.json +2 -2
  500. package/styles.css +6 -6
@@ -1,408 +1,336 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useResizeColumns = void 0;
4
- const react_table_1 = require('react-table');
4
+ const react_table_1 = require("react-table");
5
5
  const useResizeColumns = (ownerDocument) => (hooks) => {
6
- hooks.getResizerProps = [defaultGetResizerProps(ownerDocument)];
7
- hooks.stateReducers.push(reducer);
8
- hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions);
6
+ hooks.getResizerProps = [defaultGetResizerProps(ownerDocument)];
7
+ hooks.stateReducers.push(reducer);
8
+ hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions);
9
9
  };
10
10
  exports.useResizeColumns = useResizeColumns;
11
11
  const isTouchEvent = (event) => {
12
- return event.type === 'touchstart';
12
+ return event.type === 'touchstart';
13
13
  };
14
- const defaultGetResizerProps =
15
- (ownerDocument) =>
16
- (props, { instance, header, nextHeader }) => {
14
+ const defaultGetResizerProps = (ownerDocument) => (props, { instance, header, nextHeader, }) => {
17
15
  const { dispatch } = instance;
18
16
  const onResizeStart = (e, header) => {
19
- // lets not respond to multiple touches (e.g. 2 or 3 fingers)
20
- if (isTouchEvent(e) && e.touches && e.touches.length > 1) {
21
- return;
22
- }
23
- const headerIdWidths = getLeafHeaders(header).map((d) => [
24
- d.id,
25
- getHeaderWidth(d),
26
- ]);
27
- const nextHeaderIdWidths = nextHeader
28
- ? getLeafHeaders(nextHeader).map((d) => [d.id, getHeaderWidth(d)])
29
- : [];
30
- const clientX = isTouchEvent(e)
31
- ? Math.round(e.touches[0].clientX)
32
- : e.clientX;
33
- const dispatchMove = (clientXPos) =>
34
- dispatch({
35
- type: react_table_1.actions.columnResizing,
36
- clientX: clientXPos,
17
+ // lets not respond to multiple touches (e.g. 2 or 3 fingers)
18
+ if (isTouchEvent(e) && e.touches && e.touches.length > 1) {
19
+ return;
20
+ }
21
+ const headerIdWidths = getLeafHeaders(header).map((d) => [
22
+ d.id,
23
+ getHeaderWidth(d),
24
+ ]);
25
+ const nextHeaderIdWidths = nextHeader
26
+ ? getLeafHeaders(nextHeader).map((d) => [d.id, getHeaderWidth(d)])
27
+ : [];
28
+ const clientX = isTouchEvent(e)
29
+ ? Math.round(e.touches[0].clientX)
30
+ : e.clientX;
31
+ const dispatchMove = (clientXPos) => dispatch({ type: react_table_1.actions.columnResizing, clientX: clientXPos });
32
+ const dispatchEnd = () => dispatch({
33
+ type: react_table_1.actions.columnDoneResizing,
37
34
  });
38
- const dispatchEnd = () =>
35
+ const handlersAndEvents = {
36
+ mouse: {
37
+ moveEvent: 'mousemove',
38
+ moveHandler: (e) => dispatchMove(e.clientX),
39
+ upEvent: 'mouseup',
40
+ upHandler: () => {
41
+ ownerDocument.current?.removeEventListener('mousemove', handlersAndEvents.mouse.moveHandler);
42
+ ownerDocument.current?.removeEventListener('mouseup', handlersAndEvents.mouse.upHandler);
43
+ ownerDocument.current?.removeEventListener('mouseleave', handlersAndEvents.mouse.upHandler);
44
+ dispatchEnd();
45
+ },
46
+ },
47
+ touch: {
48
+ moveEvent: 'touchmove',
49
+ moveHandler: (e) => {
50
+ if (e.cancelable) {
51
+ e.preventDefault();
52
+ e.stopPropagation();
53
+ }
54
+ dispatchMove(e.touches[0].clientX);
55
+ },
56
+ upEvent: 'touchend',
57
+ upHandler: () => {
58
+ ownerDocument.current?.removeEventListener(handlersAndEvents.touch.moveEvent, handlersAndEvents.touch.moveHandler);
59
+ ownerDocument.current?.removeEventListener(handlersAndEvents.touch.upEvent, handlersAndEvents.touch.moveHandler);
60
+ dispatchEnd();
61
+ },
62
+ },
63
+ };
64
+ const events = isTouchEvent(e)
65
+ ? handlersAndEvents.touch
66
+ : handlersAndEvents.mouse;
67
+ const passiveIfSupported = passiveEventSupported()
68
+ ? { passive: false }
69
+ : false;
70
+ ownerDocument.current?.addEventListener(events.moveEvent, events.moveHandler, passiveIfSupported);
71
+ ownerDocument.current?.addEventListener(events.upEvent, events.upHandler, passiveIfSupported);
72
+ if (!isTouchEvent(e)) {
73
+ ownerDocument.current?.addEventListener('mouseleave', handlersAndEvents.mouse.upHandler, passiveIfSupported);
74
+ }
39
75
  dispatch({
40
- type: react_table_1.actions.columnDoneResizing,
76
+ type: react_table_1.actions.columnStartResizing,
77
+ columnId: header.id,
78
+ columnWidth: getHeaderWidth(header),
79
+ nextColumnWidth: getHeaderWidth(nextHeader),
80
+ headerIdWidths,
81
+ nextHeaderIdWidths,
82
+ clientX,
41
83
  });
42
- const handlersAndEvents = {
43
- mouse: {
44
- moveEvent: 'mousemove',
45
- moveHandler: (e) => dispatchMove(e.clientX),
46
- upEvent: 'mouseup',
47
- upHandler: () => {
48
- ownerDocument.current?.removeEventListener(
49
- 'mousemove',
50
- handlersAndEvents.mouse.moveHandler,
51
- );
52
- ownerDocument.current?.removeEventListener(
53
- 'mouseup',
54
- handlersAndEvents.mouse.upHandler,
55
- );
56
- ownerDocument.current?.removeEventListener(
57
- 'mouseleave',
58
- handlersAndEvents.mouse.upHandler,
59
- );
60
- dispatchEnd();
61
- },
62
- },
63
- touch: {
64
- moveEvent: 'touchmove',
65
- moveHandler: (e) => {
66
- if (e.cancelable) {
67
- e.preventDefault();
68
- e.stopPropagation();
69
- }
70
- dispatchMove(e.touches[0].clientX);
71
- },
72
- upEvent: 'touchend',
73
- upHandler: () => {
74
- ownerDocument.current?.removeEventListener(
75
- handlersAndEvents.touch.moveEvent,
76
- handlersAndEvents.touch.moveHandler,
77
- );
78
- ownerDocument.current?.removeEventListener(
79
- handlersAndEvents.touch.upEvent,
80
- handlersAndEvents.touch.moveHandler,
81
- );
82
- dispatchEnd();
83
- },
84
- },
85
- };
86
- const events = isTouchEvent(e)
87
- ? handlersAndEvents.touch
88
- : handlersAndEvents.mouse;
89
- const passiveIfSupported = passiveEventSupported()
90
- ? { passive: false }
91
- : false;
92
- ownerDocument.current?.addEventListener(
93
- events.moveEvent,
94
- events.moveHandler,
95
- passiveIfSupported,
96
- );
97
- ownerDocument.current?.addEventListener(
98
- events.upEvent,
99
- events.upHandler,
100
- passiveIfSupported,
101
- );
102
- if (!isTouchEvent(e)) {
103
- ownerDocument.current?.addEventListener(
104
- 'mouseleave',
105
- handlersAndEvents.mouse.upHandler,
106
- passiveIfSupported,
107
- );
108
- }
109
- dispatch({
110
- type: react_table_1.actions.columnStartResizing,
111
- columnId: header.id,
112
- columnWidth: getHeaderWidth(header),
113
- nextColumnWidth: getHeaderWidth(nextHeader),
114
- headerIdWidths,
115
- nextHeaderIdWidths,
116
- clientX,
117
- });
118
84
  };
119
85
  return [
120
- props,
121
- {
122
- onClick: (e) => {
123
- // Prevents from triggering sort
124
- e.stopPropagation();
125
- },
126
- onMouseDown: (e) => {
127
- e.persist();
128
- // Prevents from triggering drag'n'drop
129
- e.preventDefault();
130
- // Prevents from triggering sort
131
- e.stopPropagation();
132
- onResizeStart(e, header);
133
- },
134
- onTouchStart: (e) => {
135
- e.persist();
136
- // Prevents from triggering drag'n'drop
137
- e.preventDefault();
138
- onResizeStart(e, header);
86
+ props,
87
+ {
88
+ onClick: (e) => {
89
+ // Prevents from triggering sort
90
+ e.stopPropagation();
91
+ },
92
+ onMouseDown: (e) => {
93
+ e.persist();
94
+ // Prevents from triggering drag'n'drop
95
+ e.preventDefault();
96
+ // Prevents from triggering sort
97
+ e.stopPropagation();
98
+ onResizeStart(e, header);
99
+ },
100
+ onTouchStart: (e) => {
101
+ e.persist();
102
+ // Prevents from triggering drag'n'drop
103
+ e.preventDefault();
104
+ onResizeStart(e, header);
105
+ },
106
+ style: {
107
+ cursor: 'col-resize',
108
+ },
109
+ draggable: false,
110
+ role: 'separator',
139
111
  },
140
- style: {
141
- cursor: 'col-resize',
142
- },
143
- draggable: false,
144
- role: 'separator',
145
- },
146
112
  ];
147
- };
113
+ };
148
114
  exports.useResizeColumns.pluginName = 'useResizeColumns';
149
115
  const reducer = (newState, action, previousState, instance) => {
150
- if (action.type === react_table_1.actions.init) {
151
- return {
152
- ...newState,
153
- columnResizing: {
154
- columnWidths: {},
155
- },
156
- };
157
- }
158
- if (action.type === react_table_1.actions.resetResize) {
159
- return {
160
- ...newState,
161
- columnResizing: {
162
- columnWidths: {},
163
- },
164
- };
165
- }
166
- if (action.type === react_table_1.actions.columnStartResizing) {
167
- const {
168
- clientX,
169
- columnId,
170
- columnWidth,
171
- nextColumnWidth,
172
- headerIdWidths,
173
- nextHeaderIdWidths,
174
- } = action;
175
- return {
176
- ...newState,
177
- columnResizing: {
178
- ...newState.columnResizing,
179
- startX: clientX,
180
- columnWidth,
181
- nextColumnWidth,
182
- headerIdWidths,
183
- nextHeaderIdWidths,
184
- isResizingColumn: columnId,
185
- },
186
- };
187
- }
188
- if (action.type === react_table_1.actions.columnResizing) {
189
- const { clientX } = action;
190
- const {
191
- startX = 0,
192
- columnWidth = 1,
193
- nextColumnWidth = 1,
194
- headerIdWidths = [],
195
- nextHeaderIdWidths = [],
196
- } = newState.columnResizing;
197
- if (!instance) {
198
- return newState;
116
+ if (action.type === react_table_1.actions.init) {
117
+ return {
118
+ ...newState,
119
+ columnResizing: {
120
+ columnWidths: {},
121
+ },
122
+ };
199
123
  }
200
- const deltaX = clientX - startX;
201
- const newColumnWidths = getColumnWidths(
202
- headerIdWidths,
203
- deltaX / columnWidth,
204
- );
205
- const isTableWidthDecreasing =
206
- calculateTableWidth(newColumnWidths, instance.flatHeaders) <
207
- instance.tableWidth;
208
- const newNextColumnWidths =
209
- instance?.columnResizeMode === 'fit' ||
210
- (instance?.columnResizeMode === 'expand' && isTableWidthDecreasing)
211
- ? getColumnWidths(nextHeaderIdWidths, -deltaX / nextColumnWidth)
212
- : {};
213
- if (
214
- !isNewColumnWidthsValid(newColumnWidths, instance.flatHeaders) ||
215
- !isNewColumnWidthsValid(newNextColumnWidths, instance.flatHeaders) ||
216
- !isNewTableWidthValid(
217
- { ...newColumnWidths, ...newNextColumnWidths },
218
- instance,
219
- )
220
- ) {
221
- return newState;
124
+ if (action.type === react_table_1.actions.resetResize) {
125
+ return {
126
+ ...newState,
127
+ columnResizing: {
128
+ columnWidths: {},
129
+ },
130
+ };
222
131
  }
223
- // Setting `width` here because it might take several rerenders until actual column width is set.
224
- // Also setting after the actual resize happened.
225
- instance?.flatHeaders.forEach((h) => {
226
- if (!h.width) {
227
- h.width = h.resizeWidth;
228
- }
229
- });
230
- return {
231
- ...newState,
232
- columnResizing: {
233
- ...newState.columnResizing,
234
- columnWidths: {
235
- ...newState.columnResizing.columnWidths,
236
- ...newColumnWidths,
237
- ...newNextColumnWidths,
238
- },
239
- },
240
- };
241
- }
242
- if (action.type === react_table_1.actions.columnDoneResizing) {
243
- return {
244
- ...newState,
245
- columnResizing: {
246
- ...newState.columnResizing,
247
- startX: undefined,
248
- isResizingColumn: undefined,
249
- },
250
- };
251
- }
252
- return newState;
132
+ if (action.type === react_table_1.actions.columnStartResizing) {
133
+ const { clientX, columnId, columnWidth, nextColumnWidth, headerIdWidths, nextHeaderIdWidths, } = action;
134
+ return {
135
+ ...newState,
136
+ columnResizing: {
137
+ ...newState.columnResizing,
138
+ startX: clientX,
139
+ columnWidth,
140
+ nextColumnWidth,
141
+ headerIdWidths,
142
+ nextHeaderIdWidths,
143
+ isResizingColumn: columnId,
144
+ },
145
+ };
146
+ }
147
+ if (action.type === react_table_1.actions.columnResizing) {
148
+ const { clientX } = action;
149
+ const { startX = 0, columnWidth = 1, nextColumnWidth = 1, headerIdWidths = [], nextHeaderIdWidths = [], } = newState.columnResizing;
150
+ if (!instance) {
151
+ return newState;
152
+ }
153
+ const deltaX = clientX - startX;
154
+ const newColumnWidths = getColumnWidths(headerIdWidths, deltaX / columnWidth);
155
+ const isTableWidthDecreasing = calculateTableWidth(newColumnWidths, instance.flatHeaders) <
156
+ instance.tableWidth;
157
+ const newNextColumnWidths = instance?.columnResizeMode === 'fit' ||
158
+ (instance?.columnResizeMode === 'expand' && isTableWidthDecreasing)
159
+ ? getColumnWidths(nextHeaderIdWidths, -deltaX / nextColumnWidth)
160
+ : {};
161
+ if (!isNewColumnWidthsValid(newColumnWidths, instance.flatHeaders) ||
162
+ !isNewColumnWidthsValid(newNextColumnWidths, instance.flatHeaders) ||
163
+ !isNewTableWidthValid({ ...newColumnWidths, ...newNextColumnWidths }, instance)) {
164
+ return newState;
165
+ }
166
+ // Setting `width` here because it might take several rerenders until actual column width is set.
167
+ // Also setting after the actual resize happened.
168
+ instance?.flatHeaders.forEach((h) => {
169
+ if (!h.width) {
170
+ h.width = h.resizeWidth;
171
+ }
172
+ });
173
+ return {
174
+ ...newState,
175
+ columnResizing: {
176
+ ...newState.columnResizing,
177
+ columnWidths: {
178
+ ...newState.columnResizing.columnWidths,
179
+ ...newColumnWidths,
180
+ ...newNextColumnWidths,
181
+ },
182
+ },
183
+ };
184
+ }
185
+ if (action.type === react_table_1.actions.columnDoneResizing) {
186
+ return {
187
+ ...newState,
188
+ columnResizing: {
189
+ ...newState.columnResizing,
190
+ startX: undefined,
191
+ isResizingColumn: undefined,
192
+ },
193
+ };
194
+ }
195
+ return newState;
253
196
  };
254
197
  const getColumnWidths = (headerIdWidths, deltaPercentage) => {
255
- const columnWidths = {};
256
- headerIdWidths.forEach(([headerId, headerWidth]) => {
257
- columnWidths[headerId] = Math.max(
258
- headerWidth + headerWidth * deltaPercentage,
259
- 0,
260
- );
261
- });
262
- return columnWidths;
198
+ const columnWidths = {};
199
+ headerIdWidths.forEach(([headerId, headerWidth]) => {
200
+ columnWidths[headerId] = Math.max(headerWidth + headerWidth * deltaPercentage, 0);
201
+ });
202
+ return columnWidths;
263
203
  };
264
204
  const isNewColumnWidthsValid = (columnWidths, headers) => {
265
- // Prevents from going outside the column bounds
266
- if (Object.values(columnWidths).some((width) => width <= 1)) {
267
- return false;
268
- }
269
- for (const [headerId, width] of Object.entries(columnWidths)) {
270
- const header = headers?.find((h) => h.id === headerId);
271
- if (!header) {
272
- continue;
205
+ // Prevents from going outside the column bounds
206
+ if (Object.values(columnWidths).some((width) => width <= 1)) {
207
+ return false;
273
208
  }
274
- const minWidth = header.minWidth || 0;
275
- const maxWidth = header.maxWidth || Infinity;
276
- if (width < minWidth || width > maxWidth) {
277
- return false;
209
+ for (const [headerId, width] of Object.entries(columnWidths)) {
210
+ const header = headers?.find((h) => h.id === headerId);
211
+ if (!header) {
212
+ continue;
213
+ }
214
+ const minWidth = header.minWidth || 0;
215
+ const maxWidth = header.maxWidth || Infinity;
216
+ if (width < minWidth || width > maxWidth) {
217
+ return false;
218
+ }
278
219
  }
279
- }
280
- return true;
220
+ return true;
281
221
  };
282
222
  const isNewTableWidthValid = (columnWidths, instance) => {
283
- if (instance.columnResizeMode === 'fit') {
223
+ if (instance.columnResizeMode === 'fit') {
224
+ return true;
225
+ }
226
+ let newTableWidth = 0;
227
+ for (const header of instance.flatHeaders) {
228
+ newTableWidth += columnWidths[header.id]
229
+ ? columnWidths[header.id]
230
+ : getHeaderWidth(header);
231
+ }
232
+ // `tableWidth` is whole number therefore we need to round the `newTableWidth`
233
+ if (Math.round(newTableWidth) < instance.tableWidth) {
234
+ return false;
235
+ }
284
236
  return true;
285
- }
286
- let newTableWidth = 0;
287
- for (const header of instance.flatHeaders) {
288
- newTableWidth += columnWidths[header.id]
289
- ? columnWidths[header.id]
290
- : getHeaderWidth(header);
291
- }
292
- // `tableWidth` is whole number therefore we need to round the `newTableWidth`
293
- if (Math.round(newTableWidth) < instance.tableWidth) {
294
- return false;
295
- }
296
- return true;
297
237
  };
298
238
  const useInstanceBeforeDimensions = (instance) => {
299
- const {
300
- flatHeaders,
301
- getHooks,
302
- state: { columnResizing },
303
- columnResizeMode,
304
- } = instance;
305
- const getInstance = (0, react_table_1.useGetLatest)(instance);
306
- flatHeaders.forEach((header, index) => {
307
- const resizeWidth = columnResizing.columnWidths[header.id];
308
- header.width = resizeWidth || header.width || header.originalWidth;
309
- header.isResizing = columnResizing.isResizingColumn === header.id;
310
- const headerToResize =
311
- header.disableResizing && columnResizeMode === 'fit'
312
- ? getPreviousResizableHeader(header, instance)
313
- : header;
314
- // When `columnResizeMode` is `expand` and it is a last column,
315
- // then try to find some column on the left side to resize
316
- // when table width is decreasing.
317
- const nextResizableHeader =
318
- columnResizeMode === 'expand' && index === flatHeaders.length - 1
319
- ? getPreviousResizableHeader(header, instance)
320
- : getNextResizableHeader(header, instance);
321
- header.canResize =
322
- header.disableResizing != null ? !header.disableResizing : true;
323
- // Show resizer when header is resizable or when next header is resizable
324
- // and there is resizable columns on the left side of the resizer.
325
- if (columnResizeMode === 'fit') {
326
- header.isResizerVisible =
327
- (header.canResize && !!nextResizableHeader) ||
328
- (headerToResize && !!instance.flatHeaders[index + 1]?.canResize);
329
- // When resize mode is `expand` show resizer on the current resizable column.
330
- } else {
331
- header.isResizerVisible = header.canResize && !!headerToResize;
332
- }
333
- header.getResizerProps = (0, react_table_1.makePropGetter)(
334
- getHooks().getResizerProps,
335
- {
336
- instance: getInstance(),
337
- header: headerToResize,
338
- nextHeader: nextResizableHeader,
339
- },
340
- );
341
- });
239
+ const { flatHeaders, getHooks, state: { columnResizing }, columnResizeMode, } = instance;
240
+ const getInstance = (0, react_table_1.useGetLatest)(instance);
241
+ flatHeaders.forEach((header, index) => {
242
+ const resizeWidth = columnResizing.columnWidths[header.id];
243
+ header.width = resizeWidth || header.width || header.originalWidth;
244
+ header.isResizing = columnResizing.isResizingColumn === header.id;
245
+ const headerToResize = header.disableResizing && columnResizeMode === 'fit'
246
+ ? getPreviousResizableHeader(header, instance)
247
+ : header;
248
+ // When `columnResizeMode` is `expand` and it is a last column,
249
+ // then try to find some column on the left side to resize
250
+ // when table width is decreasing.
251
+ const nextResizableHeader = columnResizeMode === 'expand' && index === flatHeaders.length - 1
252
+ ? getPreviousResizableHeader(header, instance)
253
+ : getNextResizableHeader(header, instance);
254
+ header.canResize =
255
+ header.disableResizing != null ? !header.disableResizing : true;
256
+ // Show resizer when header is resizable or when next header is resizable
257
+ // and there is resizable columns on the left side of the resizer.
258
+ if (columnResizeMode === 'fit') {
259
+ header.isResizerVisible =
260
+ (header.canResize && !!nextResizableHeader) ||
261
+ (headerToResize && !!instance.flatHeaders[index + 1]?.canResize);
262
+ // When resize mode is `expand` show resizer on the current resizable column.
263
+ }
264
+ else {
265
+ header.isResizerVisible = header.canResize && !!headerToResize;
266
+ }
267
+ header.getResizerProps = (0, react_table_1.makePropGetter)(getHooks().getResizerProps, {
268
+ instance: getInstance(),
269
+ header: headerToResize,
270
+ nextHeader: nextResizableHeader,
271
+ });
272
+ });
342
273
  };
343
274
  const getPreviousResizableHeader = (headerColumn, instance) => {
344
- const headersList = (
345
- headerColumn.parent?.columns || instance.flatHeaders
346
- ).filter(({ isVisible }) => isVisible);
347
- const headerIndex = headersList.findIndex((h) => h.id === headerColumn.id);
348
- return [...headersList]
349
- .slice(0, headerIndex)
350
- .reverse()
351
- .find((h) => !h.disableResizing);
275
+ const headersList = (headerColumn.parent?.columns || instance.flatHeaders).filter(({ isVisible }) => isVisible);
276
+ const headerIndex = headersList.findIndex((h) => h.id === headerColumn.id);
277
+ return [...headersList]
278
+ .slice(0, headerIndex)
279
+ .reverse()
280
+ .find((h) => !h.disableResizing);
352
281
  };
353
282
  const getNextResizableHeader = (headerColumn, instance) => {
354
- const headersList = (
355
- headerColumn.parent?.columns || instance.flatHeaders
356
- ).filter(({ isVisible }) => isVisible);
357
- const headerIndex = headersList.findIndex((h) => h.id === headerColumn.id);
358
- return [...headersList]
359
- .slice(headerIndex + 1)
360
- .find((h) => !h.disableResizing);
283
+ const headersList = (headerColumn.parent?.columns || instance.flatHeaders).filter(({ isVisible }) => isVisible);
284
+ const headerIndex = headersList.findIndex((h) => h.id === headerColumn.id);
285
+ return [...headersList]
286
+ .slice(headerIndex + 1)
287
+ .find((h) => !h.disableResizing);
361
288
  };
362
289
  function getLeafHeaders(header) {
363
- const leafHeaders = [];
364
- const recurseHeader = (header) => {
365
- if (header.columns && header.columns.length) {
366
- header.columns.map(recurseHeader);
367
- }
368
- leafHeaders.push(header);
369
- };
370
- recurseHeader(header);
371
- return leafHeaders;
290
+ const leafHeaders = [];
291
+ const recurseHeader = (header) => {
292
+ if (header.columns && header.columns.length) {
293
+ header.columns.map(recurseHeader);
294
+ }
295
+ leafHeaders.push(header);
296
+ };
297
+ recurseHeader(header);
298
+ return leafHeaders;
372
299
  }
373
300
  const getHeaderWidth = (header) => {
374
- if (!header) {
375
- return 0;
376
- }
377
- return Number(header.width || header.resizeWidth || 0);
301
+ if (!header) {
302
+ return 0;
303
+ }
304
+ return Number(header.width || header.resizeWidth || 0);
378
305
  };
379
306
  const calculateTableWidth = (columnWidths, headers) => {
380
- let newTableWidth = 0;
381
- for (const header of headers) {
382
- newTableWidth += columnWidths[header.id]
383
- ? columnWidths[header.id]
384
- : getHeaderWidth(header);
385
- }
386
- return newTableWidth;
307
+ let newTableWidth = 0;
308
+ for (const header of headers) {
309
+ newTableWidth += columnWidths[header.id]
310
+ ? columnWidths[header.id]
311
+ : getHeaderWidth(header);
312
+ }
313
+ return newTableWidth;
387
314
  };
388
315
  // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#safely_detecting_option_support
389
316
  let passiveSupported = null;
390
317
  const passiveEventSupported = () => {
391
- // memoize support to avoid adding multiple test events
392
- if (passiveSupported != null) {
318
+ // memoize support to avoid adding multiple test events
319
+ if (passiveSupported != null) {
320
+ return passiveSupported;
321
+ }
322
+ try {
323
+ const options = {
324
+ once: true,
325
+ get passive() {
326
+ passiveSupported = true;
327
+ return false;
328
+ },
329
+ };
330
+ window.addEventListener('test', () => { }, options);
331
+ }
332
+ catch {
333
+ passiveSupported = false;
334
+ }
393
335
  return passiveSupported;
394
- }
395
- try {
396
- const options = {
397
- once: true,
398
- get passive() {
399
- passiveSupported = true;
400
- return false;
401
- },
402
- };
403
- window.addEventListener('test', () => {}, options);
404
- } catch {
405
- passiveSupported = false;
406
- }
407
- return passiveSupported;
408
336
  };