@itwin/itwinui-react 3.0.3 → 3.0.5

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 (498) hide show
  1. package/CHANGELOG.md +14 -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 +116 -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 -282
  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.d.ts +3 -5
  161. package/cjs/core/Tabs/Tabs.js +235 -422
  162. package/cjs/core/Tag/Tag.js +15 -42
  163. package/cjs/core/Tag/TagContainer.js +11 -23
  164. package/cjs/core/Textarea/Textarea.js +6 -11
  165. package/cjs/core/ThemeProvider/ThemeContext.js +4 -4
  166. package/cjs/core/ThemeProvider/ThemeProvider.js +52 -105
  167. package/cjs/core/Tile/Tile.js +230 -410
  168. package/cjs/core/TimePicker/TimePicker.js +234 -458
  169. package/cjs/core/Toast/Toast.js +107 -204
  170. package/cjs/core/Toast/Toaster.js +77 -103
  171. package/cjs/core/ToggleSwitch/ToggleSwitch.js +23 -66
  172. package/cjs/core/Tooltip/Tooltip.js +91 -137
  173. package/cjs/core/TransferList/TransferList.js +103 -177
  174. package/cjs/core/Tree/Tree.js +129 -204
  175. package/cjs/core/Tree/TreeContext.js +9 -9
  176. package/cjs/core/Tree/TreeNode.js +104 -207
  177. package/cjs/core/Tree/TreeNodeExpander.js +12 -26
  178. package/cjs/core/Typography/Anchor.js +3 -3
  179. package/cjs/core/Typography/Blockquote.js +10 -18
  180. package/cjs/core/Typography/Code.js +3 -3
  181. package/cjs/core/Typography/Kbd.js +21 -30
  182. package/cjs/core/Typography/Text.js +13 -26
  183. package/cjs/core/VisuallyHidden/VisuallyHidden.js +8 -14
  184. package/cjs/core/utils/color/ColorValue.js +453 -535
  185. package/cjs/core/utils/color/index.js +4 -4
  186. package/cjs/core/utils/components/AutoclearingHiddenLiveRegion.js +13 -20
  187. package/cjs/core/utils/components/Box.js +3 -3
  188. package/cjs/core/utils/components/ButtonBase.js +20 -38
  189. package/cjs/core/utils/components/FocusTrap.js +38 -47
  190. package/cjs/core/utils/components/InputContainer.js +19 -58
  191. package/cjs/core/utils/components/InputFlexContainer.js +8 -24
  192. package/cjs/core/utils/components/MiddleTextTruncation.js +22 -32
  193. package/cjs/core/utils/components/Portal.js +20 -22
  194. package/cjs/core/utils/components/Resizer.js +196 -253
  195. package/cjs/core/utils/components/VirtualScroll.js +223 -304
  196. package/cjs/core/utils/components/WithCSSTransition.js +32 -49
  197. package/cjs/core/utils/components/index.js +14 -14
  198. package/cjs/core/utils/functions/colors.js +22 -25
  199. package/cjs/core/utils/functions/date.js +10 -10
  200. package/cjs/core/utils/functions/dev.js +14 -13
  201. package/cjs/core/utils/functions/dom.js +17 -24
  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.js +9 -9
  206. package/cjs/core/utils/functions/polymorphic.js +30 -43
  207. package/cjs/core/utils/functions/react.js +24 -26
  208. package/cjs/core/utils/functions/supports.js +4 -5
  209. package/cjs/core/utils/hooks/index.js +17 -17
  210. package/cjs/core/utils/hooks/useContainerWidth.js +19 -26
  211. package/cjs/core/utils/hooks/useControlledState.js +12 -21
  212. package/cjs/core/utils/hooks/useDragAndDrop.js +87 -110
  213. package/cjs/core/utils/hooks/useEventListener.js +22 -22
  214. package/cjs/core/utils/hooks/useGlobals.js +27 -33
  215. package/cjs/core/utils/hooks/useId.js +8 -9
  216. package/cjs/core/utils/hooks/useIntersection.js +24 -30
  217. package/cjs/core/utils/hooks/useIsClient.js +9 -9
  218. package/cjs/core/utils/hooks/useIsomorphicLayoutEffect.js +5 -6
  219. package/cjs/core/utils/hooks/useLatestRef.js +9 -9
  220. package/cjs/core/utils/hooks/useMediaQuery.js +31 -31
  221. package/cjs/core/utils/hooks/useMergedRefs.js +16 -15
  222. package/cjs/core/utils/hooks/useOverflow.js +57 -70
  223. package/cjs/core/utils/hooks/useResizeObserver.js +17 -22
  224. package/cjs/core/utils/hooks/useSafeContext.js +9 -9
  225. package/cjs/core/utils/icons/StatusIconMap.js +12 -28
  226. package/cjs/core/utils/icons/Svg.js +3 -3
  227. package/cjs/core/utils/icons/SvgCalendar.js +7 -12
  228. package/cjs/core/utils/icons/SvgCaretDownSmall.js +7 -12
  229. package/cjs/core/utils/icons/SvgCaretRightSmall.js +7 -12
  230. package/cjs/core/utils/icons/SvgCaretUpSmall.js +7 -12
  231. package/cjs/core/utils/icons/SvgCheckmark.js +7 -10
  232. package/cjs/core/utils/icons/SvgCheckmarkSmall.js +7 -12
  233. package/cjs/core/utils/icons/SvgChevronLeft.js +7 -12
  234. package/cjs/core/utils/icons/SvgChevronLeftDouble.js +7 -12
  235. package/cjs/core/utils/icons/SvgChevronRight.js +7 -12
  236. package/cjs/core/utils/icons/SvgChevronRightDouble.js +7 -12
  237. package/cjs/core/utils/icons/SvgClose.js +7 -12
  238. package/cjs/core/utils/icons/SvgCloseSmall.js +7 -12
  239. package/cjs/core/utils/icons/SvgColumnManager.js +7 -12
  240. package/cjs/core/utils/icons/SvgDocument.js +7 -10
  241. package/cjs/core/utils/icons/SvgFilter.js +7 -10
  242. package/cjs/core/utils/icons/SvgFilterHollow.js +7 -12
  243. package/cjs/core/utils/icons/SvgImportantSmall.js +7 -12
  244. package/cjs/core/utils/icons/SvgInfoCircular.js +7 -12
  245. package/cjs/core/utils/icons/SvgMore.js +7 -12
  246. package/cjs/core/utils/icons/SvgMoreVertical.js +7 -12
  247. package/cjs/core/utils/icons/SvgNew.js +7 -12
  248. package/cjs/core/utils/icons/SvgSearch.js +7 -12
  249. package/cjs/core/utils/icons/SvgSmileyHappy.js +7 -12
  250. package/cjs/core/utils/icons/SvgSortDown.js +7 -12
  251. package/cjs/core/utils/icons/SvgSortUp.js +7 -12
  252. package/cjs/core/utils/icons/SvgStatusError.js +7 -12
  253. package/cjs/core/utils/icons/SvgStatusSuccess.js +7 -12
  254. package/cjs/core/utils/icons/SvgStatusWarning.js +7 -12
  255. package/cjs/core/utils/icons/SvgSwap.js +7 -12
  256. package/cjs/core/utils/icons/SvgUpload.js +7 -12
  257. package/cjs/core/utils/icons/index.js +34 -34
  258. package/cjs/core/utils/index.js +10 -10
  259. package/cjs/core/utils/props.js +2 -2
  260. package/cjs/core/utils/types.js +2 -2
  261. package/cjs/index.js +229 -949
  262. package/cjs/react-table/react-table.js +2 -2
  263. package/cjs/styles.js +412 -425
  264. package/esm/core/Alert/Alert.js +39 -106
  265. package/esm/core/Avatar/Avatar.js +14 -42
  266. package/esm/core/AvatarGroup/AvatarGroup.js +20 -58
  267. package/esm/core/Backdrop/Backdrop.js +2 -10
  268. package/esm/core/Badge/Badge.js +16 -31
  269. package/esm/core/Breadcrumbs/Breadcrumbs.js +55 -135
  270. package/esm/core/ButtonGroup/ButtonGroup.js +25 -61
  271. package/esm/core/Buttons/Button.js +5 -45
  272. package/esm/core/Buttons/DropdownButton.js +7 -37
  273. package/esm/core/Buttons/IconButton.js +5 -40
  274. package/esm/core/Buttons/IdeasButton.js +2 -12
  275. package/esm/core/Buttons/SplitButton.js +34 -101
  276. package/esm/core/Carousel/Carousel.js +43 -72
  277. package/esm/core/Carousel/CarouselDot.js +6 -17
  278. package/esm/core/Carousel/CarouselDotsList.js +85 -147
  279. package/esm/core/Carousel/CarouselNavigation.js +32 -68
  280. package/esm/core/Carousel/CarouselSlide.js +19 -41
  281. package/esm/core/Carousel/CarouselSlider.js +41 -65
  282. package/esm/core/Checkbox/Checkbox.js +25 -78
  283. package/esm/core/ColorPicker/ColorBuilder.js +167 -280
  284. package/esm/core/ColorPicker/ColorInputPanel.js +237 -395
  285. package/esm/core/ColorPicker/ColorPalette.js +14 -35
  286. package/esm/core/ColorPicker/ColorPicker.js +46 -79
  287. package/esm/core/ColorPicker/ColorPickerContext.js +5 -7
  288. package/esm/core/ColorPicker/ColorSwatch.js +7 -24
  289. package/esm/core/ComboBox/ComboBox.js +267 -396
  290. package/esm/core/ComboBox/ComboBoxEndIcon.js +5 -18
  291. package/esm/core/ComboBox/ComboBoxInput.js +125 -197
  292. package/esm/core/ComboBox/ComboBoxInputContainer.js +5 -20
  293. package/esm/core/ComboBox/ComboBoxMenu.js +37 -77
  294. package/esm/core/ComboBox/ComboBoxMenuItem.js +14 -61
  295. package/esm/core/ComboBox/ComboBoxMultipleContainer.js +2 -6
  296. package/esm/core/ComboBox/helpers.js +38 -38
  297. package/esm/core/DatePicker/DatePicker.js +326 -555
  298. package/esm/core/Dialog/Dialog.js +24 -53
  299. package/esm/core/Dialog/DialogBackdrop.js +19 -39
  300. package/esm/core/Dialog/DialogContent.js +12 -20
  301. package/esm/core/Dialog/DialogContext.js +1 -1
  302. package/esm/core/Dialog/DialogDragContext.js +4 -4
  303. package/esm/core/Dialog/DialogMain.js +107 -177
  304. package/esm/core/Dialog/DialogTitleBar.js +10 -45
  305. package/esm/core/Divider/Divider.js +2 -8
  306. package/esm/core/DropdownMenu/DropdownMenu.js +40 -75
  307. package/esm/core/ExpandableBlock/ExpandableBlock.js +92 -193
  308. package/esm/core/Fieldset/Fieldset.js +8 -19
  309. package/esm/core/FileUpload/FileEmptyCard.js +8 -19
  310. package/esm/core/FileUpload/FileUpload.js +36 -72
  311. package/esm/core/FileUpload/FileUploadCard.js +76 -153
  312. package/esm/core/FileUpload/FileUploadTemplate.js +9 -37
  313. package/esm/core/Flex/Flex.js +71 -87
  314. package/esm/core/Footer/Footer.js +55 -86
  315. package/esm/core/Footer/FooterSeparator.js +1 -1
  316. package/esm/core/Header/Header.js +14 -55
  317. package/esm/core/Header/HeaderBasicButton.js +7 -15
  318. package/esm/core/Header/HeaderBreadcrumbs.js +8 -32
  319. package/esm/core/Header/HeaderButton.js +14 -62
  320. package/esm/core/Header/HeaderDropdownButton.js +13 -42
  321. package/esm/core/Header/HeaderLogo.js +5 -36
  322. package/esm/core/Header/HeaderSplitButton.js +14 -61
  323. package/esm/core/Icon/Icon.js +12 -26
  324. package/esm/core/InformationPanel/InformationPanel.js +36 -71
  325. package/esm/core/InformationPanel/InformationPanelContent.js +3 -17
  326. package/esm/core/InformationPanel/InformationPanelHeader.js +8 -32
  327. package/esm/core/InformationPanel/InformationPanelWrapper.js +1 -3
  328. package/esm/core/Input/Input.js +4 -12
  329. package/esm/core/InputGrid/InputGrid.js +2 -11
  330. package/esm/core/InputGroup/InputGroup.js +16 -57
  331. package/esm/core/InputWithDecorations/InputWithDecorations.js +11 -42
  332. package/esm/core/Label/Label.js +5 -26
  333. package/esm/core/LabeledInput/LabeledInput.js +10 -63
  334. package/esm/core/LabeledSelect/LabeledSelect.js +18 -67
  335. package/esm/core/LabeledTextarea/LabeledTextarea.js +2 -8
  336. package/esm/core/List/ListItem.js +28 -46
  337. package/esm/core/Menu/Menu.js +48 -64
  338. package/esm/core/Menu/MenuDivider.js +1 -1
  339. package/esm/core/Menu/MenuExtraContent.js +1 -1
  340. package/esm/core/Menu/MenuItem.js +84 -164
  341. package/esm/core/Menu/MenuItemSkeleton.js +12 -43
  342. package/esm/core/Modal/Modal.js +6 -33
  343. package/esm/core/NonIdealState/ErrorPage.js +123 -173
  344. package/esm/core/NonIdealState/NonIdealState.js +6 -65
  345. package/esm/core/NotificationMarker/NotificationMarker.js +2 -20
  346. package/esm/core/Overlay/Overlay.d.ts +20 -24
  347. package/esm/core/Overlay/Overlay.js +45 -55
  348. package/esm/core/Popover/Popover.js +80 -172
  349. package/esm/core/ProgressIndicators/ProgressLinear.js +5 -40
  350. package/esm/core/ProgressIndicators/ProgressRadial.js +14 -40
  351. package/esm/core/Radio/Radio.js +6 -45
  352. package/esm/core/RadioTiles/RadioTile.js +8 -62
  353. package/esm/core/RadioTiles/RadioTileGroup.js +3 -10
  354. package/esm/core/SearchBox/SearchBox.js +97 -214
  355. package/esm/core/Select/Select.js +130 -271
  356. package/esm/core/Select/SelectTag.js +3 -15
  357. package/esm/core/Select/SelectTagContainer.js +7 -20
  358. package/esm/core/SideNavigation/SideNavigation.js +21 -118
  359. package/esm/core/SideNavigation/SidenavButton.js +2 -24
  360. package/esm/core/SideNavigation/SidenavSubmenu.js +3 -14
  361. package/esm/core/SideNavigation/SidenavSubmenuHeader.js +4 -20
  362. package/esm/core/SkipToContentLink/SkipToContentLink.js +2 -11
  363. package/esm/core/Slider/Slider.js +187 -340
  364. package/esm/core/Slider/Thumb.js +50 -97
  365. package/esm/core/Slider/Track.js +49 -74
  366. package/esm/core/StatusMessage/StatusMessage.js +5 -23
  367. package/esm/core/Stepper/Stepper.js +14 -70
  368. package/esm/core/Stepper/StepperStep.js +29 -92
  369. package/esm/core/Stepper/WorkflowDiagram.js +8 -21
  370. package/esm/core/Stepper/WorkflowDiagramStep.js +4 -22
  371. package/esm/core/Surface/Surface.js +48 -84
  372. package/esm/core/Table/SubRowExpander.js +9 -31
  373. package/esm/core/Table/Table.js +408 -763
  374. package/esm/core/Table/TableCell.js +53 -87
  375. package/esm/core/Table/TablePaginator.js +125 -306
  376. package/esm/core/Table/TableRowMemoized.js +58 -129
  377. package/esm/core/Table/actionHandlers/expandHandler.js +10 -10
  378. package/esm/core/Table/actionHandlers/filterHandler.js +15 -23
  379. package/esm/core/Table/actionHandlers/index.js +1 -5
  380. package/esm/core/Table/actionHandlers/resizeHandler.js +11 -11
  381. package/esm/core/Table/actionHandlers/selectHandler.js +95 -122
  382. package/esm/core/Table/cells/DefaultCell.js +7 -42
  383. package/esm/core/Table/cells/EditableCell.js +41 -70
  384. package/esm/core/Table/columns/actionColumn.js +55 -85
  385. package/esm/core/Table/columns/expanderColumn.js +25 -39
  386. package/esm/core/Table/columns/selectionColumn.js +23 -51
  387. package/esm/core/Table/filters/BaseFilter.js +7 -15
  388. package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.js +42 -107
  389. package/esm/core/Table/filters/DateRangeFilter/DateRangeFilter.js +52 -110
  390. package/esm/core/Table/filters/FilterButtonBar.js +9 -28
  391. package/esm/core/Table/filters/FilterToggle.js +18 -51
  392. package/esm/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +28 -50
  393. package/esm/core/Table/filters/TextFilter/TextFilter.js +20 -32
  394. package/esm/core/Table/filters/customFilterFunctions.js +12 -14
  395. package/esm/core/Table/filters/defaultFilterFunctions.js +79 -84
  396. package/esm/core/Table/filters/tableFilters.js +25 -34
  397. package/esm/core/Table/hooks/useColumnDragAndDrop.js +81 -88
  398. package/esm/core/Table/hooks/useExpanderCell.js +20 -26
  399. package/esm/core/Table/hooks/useResizeColumns.js +287 -353
  400. package/esm/core/Table/hooks/useScrollToRow.js +34 -42
  401. package/esm/core/Table/hooks/useSelectionCell.js +6 -10
  402. package/esm/core/Table/hooks/useStickyColumns.js +59 -61
  403. package/esm/core/Table/hooks/useSubRowFiltering.js +83 -90
  404. package/esm/core/Table/hooks/useSubRowSelection.js +27 -28
  405. package/esm/core/Table/index.js +1 -5
  406. package/esm/core/Table/utils.js +38 -40
  407. package/esm/core/Tabs/Tabs.d.ts +3 -5
  408. package/esm/core/Tabs/Tabs.js +229 -406
  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 -83
  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 +191 -249
  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.js +14 -17
  443. package/esm/core/utils/functions/focusable.js +15 -24
  444. package/esm/core/utils/functions/import.js +2 -4
  445. package/esm/core/utils/functions/numbers.js +7 -7
  446. package/esm/core/utils/functions/polymorphic.js +23 -32
  447. package/esm/core/utils/functions/react.js +19 -21
  448. package/esm/core/utils/functions/supports.js +1 -2
  449. package/esm/core/utils/hooks/useContainerWidth.js +13 -16
  450. package/esm/core/utils/hooks/useControlledState.js +8 -17
  451. package/esm/core/utils/hooks/useDragAndDrop.js +80 -99
  452. package/esm/core/utils/hooks/useEventListener.js +18 -18
  453. package/esm/core/utils/hooks/useGlobals.js +21 -27
  454. package/esm/core/utils/hooks/useId.js +3 -3
  455. package/esm/core/utils/hooks/useIntersection.js +19 -25
  456. package/esm/core/utils/hooks/useIsClient.js +5 -5
  457. package/esm/core/utils/hooks/useIsomorphicLayoutEffect.js +1 -2
  458. package/esm/core/utils/hooks/useLatestRef.js +5 -5
  459. package/esm/core/utils/hooks/useMediaQuery.js +25 -23
  460. package/esm/core/utils/hooks/useMergedRefs.js +12 -11
  461. package/esm/core/utils/hooks/useOverflow.js +51 -63
  462. package/esm/core/utils/hooks/useResizeObserver.js +12 -17
  463. package/esm/core/utils/hooks/useSafeContext.js +5 -5
  464. package/esm/core/utils/icons/StatusIconMap.js +4 -8
  465. package/esm/core/utils/icons/SvgCalendar.js +2 -7
  466. package/esm/core/utils/icons/SvgCaretDownSmall.js +2 -7
  467. package/esm/core/utils/icons/SvgCaretRightSmall.js +2 -7
  468. package/esm/core/utils/icons/SvgCaretUpSmall.js +2 -7
  469. package/esm/core/utils/icons/SvgCheckmark.js +2 -5
  470. package/esm/core/utils/icons/SvgCheckmarkSmall.js +2 -7
  471. package/esm/core/utils/icons/SvgChevronLeft.js +2 -7
  472. package/esm/core/utils/icons/SvgChevronLeftDouble.js +2 -7
  473. package/esm/core/utils/icons/SvgChevronRight.js +2 -7
  474. package/esm/core/utils/icons/SvgChevronRightDouble.js +2 -7
  475. package/esm/core/utils/icons/SvgClose.js +2 -7
  476. package/esm/core/utils/icons/SvgCloseSmall.js +2 -7
  477. package/esm/core/utils/icons/SvgColumnManager.js +2 -7
  478. package/esm/core/utils/icons/SvgDocument.js +2 -5
  479. package/esm/core/utils/icons/SvgFilter.js +2 -5
  480. package/esm/core/utils/icons/SvgFilterHollow.js +2 -7
  481. package/esm/core/utils/icons/SvgImportantSmall.js +2 -7
  482. package/esm/core/utils/icons/SvgInfoCircular.js +2 -7
  483. package/esm/core/utils/icons/SvgMore.js +2 -7
  484. package/esm/core/utils/icons/SvgMoreVertical.js +2 -7
  485. package/esm/core/utils/icons/SvgNew.js +2 -7
  486. package/esm/core/utils/icons/SvgSearch.js +2 -7
  487. package/esm/core/utils/icons/SvgSmileyHappy.js +2 -7
  488. package/esm/core/utils/icons/SvgSortDown.js +2 -7
  489. package/esm/core/utils/icons/SvgSortUp.js +2 -7
  490. package/esm/core/utils/icons/SvgStatusError.js +2 -7
  491. package/esm/core/utils/icons/SvgStatusSuccess.js +2 -7
  492. package/esm/core/utils/icons/SvgStatusWarning.js +2 -7
  493. package/esm/core/utils/icons/SvgSwap.js +2 -7
  494. package/esm/core/utils/icons/SvgUpload.js +2 -7
  495. package/esm/index.js +3 -21
  496. package/esm/styles.js +414 -425
  497. package/package.json +2 -2
  498. package/styles.css +6 -6
@@ -4,12 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import * as React from 'react';
6
6
  import cx from 'classnames';
7
- import {
8
- Box,
9
- useIntersection,
10
- useMergedRefs,
11
- WithCSSTransition,
12
- } from '../utils/index.js';
7
+ import { Box, useIntersection, useMergedRefs, WithCSSTransition, } from '../utils/index.js';
13
8
  import { TableCell } from './TableCell.js';
14
9
  /**
15
10
  * Memoization is needed to avoid unnecessary re-renders of all rows when additional data is added when lazy-loading.
@@ -18,138 +13,73 @@ import { TableCell } from './TableCell.js';
18
13
  * When adding new features check whether it changes state that affects row. If it does then add equality check to `React.memo`.
19
14
  */
20
15
  export const TableRow = (props) => {
21
- const {
22
- row,
23
- rowProps,
24
- isLast,
25
- onRowInViewport,
26
- onBottomReached,
27
- intersectionMargin,
28
- onClick,
29
- subComponent,
30
- isDisabled,
31
- tableHasSubRows,
32
- tableInstance,
33
- expanderCell,
34
- bodyRef,
35
- tableRowRef,
36
- density,
37
- } = props;
38
- const onIntersect = React.useCallback(() => {
39
- onRowInViewport.current?.(row.original);
40
- isLast && onBottomReached.current?.();
41
- }, [isLast, onBottomReached, onRowInViewport, row.original]);
42
- const intersectionRoot = React.useMemo(() => {
43
- const isTableBodyScrollable =
44
- (bodyRef?.scrollHeight ?? 0) > (bodyRef?.offsetHeight ?? 0);
45
- // If table body is scrollable, make it the intersection root
46
- if (isTableBodyScrollable) {
47
- return bodyRef;
48
- }
49
- // Otherwise, make the viewport the intersection root
50
- return undefined;
51
- }, [bodyRef]);
52
- const intersectionRef = useIntersection(onIntersect, {
53
- rootMargin: `${intersectionMargin}px`,
54
- root: intersectionRoot,
55
- });
56
- const userRowProps = rowProps?.(row) ?? {};
57
- const { status, isLoading, ...restUserRowProps } = userRowProps;
58
- const mergedProps = {
59
- ...row.getRowProps({ style: { flex: `0 0 auto`, minWidth: '100%' } }),
60
- ...restUserRowProps,
61
- ...{
62
- className: cx(
63
- 'iui-table-row',
64
- {
65
- 'iui-table-row-expanded': row.isExpanded && subComponent,
66
- 'iui-loading': isLoading,
67
- },
68
- userRowProps?.className,
69
- ),
70
- 'aria-selected': row.isSelected || undefined,
71
- 'aria-disabled': isDisabled || undefined,
72
- 'data-iui-status': status,
73
- },
74
- };
75
- const refs = useMergedRefs(intersectionRef, mergedProps.ref, tableRowRef);
76
- return React.createElement(
77
- React.Fragment,
78
- null,
79
- React.createElement(
80
- Box,
81
- {
82
- ...mergedProps,
83
- ref: refs,
84
- onClick: (event) => {
85
- mergedProps?.onClick?.(event);
86
- onClick?.(event, row);
16
+ const { row, rowProps, isLast, onRowInViewport, onBottomReached, intersectionMargin, onClick, subComponent, isDisabled, tableHasSubRows, tableInstance, expanderCell, bodyRef, tableRowRef, density, } = props;
17
+ const onIntersect = React.useCallback(() => {
18
+ onRowInViewport.current?.(row.original);
19
+ isLast && onBottomReached.current?.();
20
+ }, [isLast, onBottomReached, onRowInViewport, row.original]);
21
+ const intersectionRoot = React.useMemo(() => {
22
+ const isTableBodyScrollable = (bodyRef?.scrollHeight ?? 0) > (bodyRef?.offsetHeight ?? 0);
23
+ // If table body is scrollable, make it the intersection root
24
+ if (isTableBodyScrollable) {
25
+ return bodyRef;
26
+ }
27
+ // Otherwise, make the viewport the intersection root
28
+ return undefined;
29
+ }, [bodyRef]);
30
+ const intersectionRef = useIntersection(onIntersect, {
31
+ rootMargin: `${intersectionMargin}px`,
32
+ root: intersectionRoot,
33
+ });
34
+ const userRowProps = rowProps?.(row) ?? {};
35
+ const { status, isLoading, ...restUserRowProps } = userRowProps;
36
+ const mergedProps = {
37
+ ...row.getRowProps({ style: { flex: `0 0 auto`, minWidth: '100%' } }),
38
+ ...restUserRowProps,
39
+ ...{
40
+ className: cx('iui-table-row', {
41
+ 'iui-table-row-expanded': row.isExpanded && subComponent,
42
+ 'iui-loading': isLoading,
43
+ }, userRowProps?.className),
44
+ 'aria-selected': row.isSelected || undefined,
45
+ 'aria-disabled': isDisabled || undefined,
46
+ 'data-iui-status': status,
87
47
  },
88
- },
89
- row.cells.map((cell, index) => {
90
- return React.createElement(TableCell, {
91
- key: cell.getCellProps().key,
92
- cell: cell,
93
- cellIndex: index,
94
- isDisabled: isDisabled,
95
- tableHasSubRows: tableHasSubRows,
96
- tableInstance: tableInstance,
97
- expanderCell: expanderCell,
98
- density: density,
99
- });
100
- }),
101
- ),
102
- subComponent &&
103
- React.createElement(
104
- WithCSSTransition,
105
- { in: row.isExpanded },
106
- React.createElement(
107
- Box,
108
- {
109
- className: cx('iui-table-row', 'iui-table-expanded-content'),
110
- 'aria-disabled': isDisabled,
111
- },
112
- subComponent(row),
113
- ),
114
- ),
115
- );
48
+ };
49
+ const refs = useMergedRefs(intersectionRef, mergedProps.ref, tableRowRef);
50
+ return (React.createElement(React.Fragment, null,
51
+ React.createElement(Box, { ...mergedProps, ref: refs, onClick: (event) => {
52
+ mergedProps?.onClick?.(event);
53
+ onClick?.(event, row);
54
+ } }, row.cells.map((cell, index) => {
55
+ return (React.createElement(TableCell, { key: cell.getCellProps().key, cell: cell, cellIndex: index, isDisabled: isDisabled, tableHasSubRows: tableHasSubRows, tableInstance: tableInstance, expanderCell: expanderCell, density: density }));
56
+ })),
57
+ subComponent && (React.createElement(WithCSSTransition, { in: row.isExpanded },
58
+ React.createElement(Box, { className: cx('iui-table-row', 'iui-table-expanded-content'), "aria-disabled": isDisabled }, subComponent(row))))));
116
59
  };
117
60
  const hasAnySelectedSubRow = (row, selectedRowIds) => {
118
- if (selectedRowIds?.[row.id]) {
119
- return true;
120
- }
121
- return row.subRows.some((subRow) =>
122
- hasAnySelectedSubRow(subRow, selectedRowIds),
123
- );
61
+ if (selectedRowIds?.[row.id]) {
62
+ return true;
63
+ }
64
+ return row.subRows.some((subRow) => hasAnySelectedSubRow(subRow, selectedRowIds));
124
65
  };
125
- export const TableRowMemoized = React.memo(
126
- TableRow,
127
- (prevProp, nextProp) =>
128
- prevProp.isLast === nextProp.isLast &&
66
+ export const TableRowMemoized = React.memo(TableRow, (prevProp, nextProp) => prevProp.isLast === nextProp.isLast &&
129
67
  prevProp.state.hiddenColumns?.length ===
130
- nextProp.state.hiddenColumns?.length &&
131
- !!prevProp.state.hiddenColumns?.every(
132
- (column, index) => nextProp.state.hiddenColumns?.[index] === column,
133
- ) &&
68
+ nextProp.state.hiddenColumns?.length &&
69
+ !!prevProp.state.hiddenColumns?.every((column, index) => nextProp.state.hiddenColumns?.[index] === column) &&
134
70
  prevProp.onRowInViewport === nextProp.onRowInViewport &&
135
71
  prevProp.onBottomReached === nextProp.onBottomReached &&
136
72
  prevProp.onClick === nextProp.onClick &&
137
73
  prevProp.row.original === nextProp.row.original &&
138
74
  prevProp.state.selectedRowIds?.[prevProp.row.id] ===
139
- nextProp.state.selectedRowIds?.[nextProp.row.id] &&
75
+ nextProp.state.selectedRowIds?.[nextProp.row.id] &&
140
76
  // Check if sub-rows selection has changed and whether to show indeterminate state or not
141
- prevProp.row.subRows.some((subRow) =>
142
- hasAnySelectedSubRow(subRow, prevProp.state.selectedRowIds),
143
- ) ===
144
- nextProp.row.subRows.some((subRow) =>
145
- hasAnySelectedSubRow(subRow, nextProp.state.selectedRowIds),
146
- ) &&
77
+ prevProp.row.subRows.some((subRow) => hasAnySelectedSubRow(subRow, prevProp.state.selectedRowIds)) ===
78
+ nextProp.row.subRows.some((subRow) => hasAnySelectedSubRow(subRow, nextProp.state.selectedRowIds)) &&
147
79
  prevProp.state.expanded?.[prevProp.row.id] ===
148
- nextProp.state.expanded?.[nextProp.row.id] &&
80
+ nextProp.state.expanded?.[nextProp.row.id] &&
149
81
  prevProp.subComponent === nextProp.subComponent &&
150
- prevProp.row.cells.every(
151
- (cell, index) => nextProp.row.cells[index].column === cell.column,
152
- ) &&
82
+ prevProp.row.cells.every((cell, index) => nextProp.row.cells[index].column === cell.column) &&
153
83
  prevProp.isDisabled === nextProp.isDisabled &&
154
84
  prevProp.rowProps === nextProp.rowProps &&
155
85
  prevProp.expanderCell === nextProp.expanderCell &&
@@ -159,8 +89,7 @@ export const TableRowMemoized = React.memo(
159
89
  !nextProp.state.columnResizing.isResizingColumn &&
160
90
  prevProp.state.isTableResizing === nextProp.state.isTableResizing &&
161
91
  prevProp.state.sticky.isScrolledToLeft ===
162
- nextProp.state.sticky.isScrolledToLeft &&
92
+ nextProp.state.sticky.isScrolledToLeft &&
163
93
  prevProp.state.sticky.isScrolledToRight ===
164
- nextProp.state.sticky.isScrolledToRight &&
165
- prevProp.density === nextProp.density,
166
- );
94
+ nextProp.state.sticky.isScrolledToRight &&
95
+ prevProp.density === nextProp.density);
@@ -1,13 +1,13 @@
1
1
  export const onExpandHandler = (newState, instance, onExpand) => {
2
- if (!instance?.preFilteredFlatRows.length) {
3
- onExpand?.([], newState);
4
- return;
5
- }
6
- const expandedData = [];
7
- instance.preFilteredFlatRows.forEach((row) => {
8
- if (newState.expanded[row.id]) {
9
- expandedData.push(row.original);
2
+ if (!instance?.preFilteredFlatRows.length) {
3
+ onExpand?.([], newState);
4
+ return;
10
5
  }
11
- });
12
- onExpand?.(expandedData, newState);
6
+ const expandedData = [];
7
+ instance.preFilteredFlatRows.forEach((row) => {
8
+ if (newState.expanded[row.id]) {
9
+ expandedData.push(row.original);
10
+ }
11
+ });
12
+ onExpand?.(expandedData, newState);
13
13
  };
@@ -1,24 +1,16 @@
1
- export const onFilterHandler = (
2
- newState,
3
- action,
4
- previousState,
5
- currentFilter,
6
- instance,
7
- ) => {
8
- const previousFilter = previousState.filters.find(
9
- (f) => f.id === action.columnId,
10
- );
11
- if (previousFilter?.value != action.filterValue) {
12
- const filters = newState.filters.map((f) => {
13
- const column = instance?.allColumns.find((c) => c.id === f.id);
14
- return {
15
- id: f.id,
16
- value: f.value,
17
- fieldType: column?.fieldType ?? 'text',
18
- filterType: column?.filter ?? 'text',
19
- };
20
- });
21
- return filters;
22
- }
23
- return currentFilter;
1
+ export const onFilterHandler = (newState, action, previousState, currentFilter, instance) => {
2
+ const previousFilter = previousState.filters.find((f) => f.id === action.columnId);
3
+ if (previousFilter?.value != action.filterValue) {
4
+ const filters = newState.filters.map((f) => {
5
+ const column = instance?.allColumns.find((c) => c.id === f.id);
6
+ return {
7
+ id: f.id,
8
+ value: f.value,
9
+ fieldType: column?.fieldType ?? 'text',
10
+ filterType: column?.filter ?? 'text',
11
+ };
12
+ });
13
+ return filters;
14
+ }
15
+ return currentFilter;
24
16
  };
@@ -4,9 +4,5 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  export { onExpandHandler } from './expandHandler.js';
6
6
  export { onFilterHandler } from './filterHandler.js';
7
- export {
8
- onToggleHandler,
9
- onSingleSelectHandler,
10
- onShiftSelectHandler,
11
- } from './selectHandler.js';
7
+ export { onToggleHandler, onSingleSelectHandler, onShiftSelectHandler, } from './selectHandler.js';
12
8
  export { onTableResizeStart, onTableResizeEnd } from './resizeHandler.js';
@@ -1,15 +1,15 @@
1
1
  export const onTableResizeStart = (state) => {
2
- return { ...state, isTableResizing: true };
2
+ return { ...state, isTableResizing: true };
3
3
  };
4
4
  export const onTableResizeEnd = (state, action) => {
5
- return {
6
- ...state,
7
- isTableResizing: false,
8
- columnResizing: {
9
- ...state.columnResizing,
10
- columnWidths: {
11
- ...action.columnWidths,
12
- },
13
- },
14
- };
5
+ return {
6
+ ...state,
7
+ isTableResizing: false,
8
+ columnResizing: {
9
+ ...state.columnResizing,
10
+ columnWidths: {
11
+ ...action.columnWidths,
12
+ },
13
+ },
14
+ };
15
15
  };
@@ -5,142 +5,115 @@
5
5
  * - Validation: Ensures that any disabled/unselectable row/subrow is not selected
6
6
  */
7
7
  const onSelectHandler = (newState, instance, onSelect, isRowDisabled) => {
8
- if (!instance?.rows.length) {
9
- onSelect?.([], newState);
10
- return;
11
- }
12
- const newSelectedRowIds = {};
13
- const handleRow = (row) => {
14
- if (isRowDisabled?.(row.original)) {
15
- return false;
8
+ if (!instance?.rows.length) {
9
+ onSelect?.([], newState);
10
+ return;
16
11
  }
17
- let isAllSubSelected = true;
18
- row.initialSubRows.forEach((subRow) => {
19
- const result = handleRow(subRow);
20
- if (!result) {
21
- isAllSubSelected = false;
22
- }
23
- });
24
- // If `selectSubRows` is false, then no need to select sub-rows and just check current selection state.
25
- // If a row doesn't have sub-rows then check its selection state.
26
- // If it has sub-rows then check whether all of them are selected.
27
- if (
28
- (!instance.selectSubRows && newState.selectedRowIds[row.id]) ||
29
- (!row.initialSubRows.length && newState.selectedRowIds[row.id]) ||
30
- (row.initialSubRows.length && isAllSubSelected)
31
- ) {
32
- newSelectedRowIds[row.id] = true;
33
- }
34
- return !!newSelectedRowIds[row.id];
35
- };
36
- instance.initialRows.forEach((row) => handleRow(row));
37
- const selectedData = getSelectedData(newSelectedRowIds, instance);
38
- newState.selectedRowIds = newSelectedRowIds;
39
- onSelect?.(selectedData, newState);
12
+ const newSelectedRowIds = {};
13
+ const handleRow = (row) => {
14
+ if (isRowDisabled?.(row.original)) {
15
+ return false;
16
+ }
17
+ let isAllSubSelected = true;
18
+ row.initialSubRows.forEach((subRow) => {
19
+ const result = handleRow(subRow);
20
+ if (!result) {
21
+ isAllSubSelected = false;
22
+ }
23
+ });
24
+ // If `selectSubRows` is false, then no need to select sub-rows and just check current selection state.
25
+ // If a row doesn't have sub-rows then check its selection state.
26
+ // If it has sub-rows then check whether all of them are selected.
27
+ if ((!instance.selectSubRows && newState.selectedRowIds[row.id]) ||
28
+ (!row.initialSubRows.length && newState.selectedRowIds[row.id]) ||
29
+ (row.initialSubRows.length && isAllSubSelected)) {
30
+ newSelectedRowIds[row.id] = true;
31
+ }
32
+ return !!newSelectedRowIds[row.id];
33
+ };
34
+ instance.initialRows.forEach((row) => handleRow(row));
35
+ const selectedData = getSelectedData(newSelectedRowIds, instance);
36
+ newState.selectedRowIds = newSelectedRowIds;
37
+ onSelect?.(selectedData, newState);
40
38
  };
41
39
  /**
42
40
  * Handles selection when toggling a row (Ctrl click or checkbox click)
43
41
  */
44
- export const onToggleHandler = (
45
- newState,
46
- action,
47
- instance,
48
- onSelect,
49
- isRowDisabled,
50
- ) => {
51
- onSelectHandler(newState, instance, onSelect, isRowDisabled);
52
- // Toggling a row (ctrl click or checkbox click) updates the lastSelectedRowId
53
- newState.lastSelectedRowId = action.id;
42
+ export const onToggleHandler = (newState, action, instance, onSelect, isRowDisabled) => {
43
+ onSelectHandler(newState, instance, onSelect, isRowDisabled);
44
+ // Toggling a row (ctrl click or checkbox click) updates the lastSelectedRowId
45
+ newState.lastSelectedRowId = action.id;
54
46
  };
55
47
  /**
56
48
  * Handles selection when clicked on a row.
57
49
  */
58
- export const onSingleSelectHandler = (
59
- state,
60
- action,
61
- instance,
62
- onSelect,
63
- isRowDisabled,
64
- ) => {
65
- const selectedRowIds = { [action.id]: true };
66
- if (instance?.selectSubRows) {
67
- const handleRow = (row) => {
68
- selectedRowIds[row.id] = true;
69
- row.subRows.forEach((r) => handleRow(r));
50
+ export const onSingleSelectHandler = (state, action, instance, onSelect, isRowDisabled) => {
51
+ const selectedRowIds = { [action.id]: true };
52
+ if (instance?.selectSubRows) {
53
+ const handleRow = (row) => {
54
+ selectedRowIds[row.id] = true;
55
+ row.subRows.forEach((r) => handleRow(r));
56
+ };
57
+ handleRow(instance.rowsById[action.id]);
58
+ }
59
+ const newState = {
60
+ ...state,
61
+ lastSelectedRowId: action.id,
62
+ selectedRowIds,
70
63
  };
71
- handleRow(instance.rowsById[action.id]);
72
- }
73
- const newState = {
74
- ...state,
75
- lastSelectedRowId: action.id,
76
- selectedRowIds,
77
- };
78
- // Passing to `onSelectHandler` to handle filtered sub-rows
79
- onSelectHandler(newState, instance, onSelect, isRowDisabled);
80
- return newState;
64
+ // Passing to `onSelectHandler` to handle filtered sub-rows
65
+ onSelectHandler(newState, instance, onSelect, isRowDisabled);
66
+ return newState;
81
67
  };
82
68
  /**
83
69
  * Handles selection when clicked on a row while shift key is pressed.
84
70
  */
85
- export const onShiftSelectHandler = (
86
- state,
87
- action,
88
- instance,
89
- onSelect,
90
- isRowDisabled,
91
- ) => {
92
- if (instance == null) {
93
- return state;
94
- }
95
- let startIndex = Math.max(
96
- 0,
97
- instance.flatRows.findIndex((row) => row.id === state.lastSelectedRowId),
98
- );
99
- let endIndex = Math.max(
100
- 0,
101
- instance.flatRows.findIndex((row) => row.id === action.id),
102
- );
103
- if (startIndex > endIndex) {
104
- const temp = startIndex;
105
- startIndex = endIndex;
106
- endIndex = temp;
107
- }
108
- const isLastSelectedRowIdSelected =
109
- state.lastSelectedRowId == null || // When no row is selected before shift click, start selecting from first row to clicked row
110
- !!state.selectedRowIds[state.lastSelectedRowId];
111
- // If ctrl + shift click, do not lose previous selection
112
- // If shift click, start new selection
113
- const selectedRowIds = !!action.ctrlPressed
114
- ? { ...state.selectedRowIds }
115
- : {};
116
- // 1. All rows between start and end are assigned the state of the last selected row
117
- instance.flatRows
118
- .slice(startIndex, endIndex + 1)
119
- .forEach((r) => (selectedRowIds[r.id] = isLastSelectedRowIdSelected));
120
- // 2. All children of the last row (endIndex) also are assigned the state of the last selected row
121
- // Since lastRow's children come after endIndex + 1 (not selected in step 1)
122
- const handleRow = (row) => {
123
- selectedRowIds[row.id] = isLastSelectedRowIdSelected;
124
- row.subRows.forEach((r) => handleRow(r));
125
- };
126
- handleRow(instance.flatRows[endIndex]);
127
- const newState = {
128
- ...state,
129
- selectedRowIds,
130
- };
131
- // 3.1 Deselect all selected disabled rows and their children
132
- // 3.2 Convert all partially selected rows marked with tick mark to horizontal line
133
- onSelectHandler(newState, instance, onSelect, isRowDisabled);
134
- return newState;
71
+ export const onShiftSelectHandler = (state, action, instance, onSelect, isRowDisabled) => {
72
+ if (instance == null) {
73
+ return state;
74
+ }
75
+ let startIndex = Math.max(0, instance.flatRows.findIndex((row) => row.id === state.lastSelectedRowId));
76
+ let endIndex = Math.max(0, instance.flatRows.findIndex((row) => row.id === action.id));
77
+ if (startIndex > endIndex) {
78
+ const temp = startIndex;
79
+ startIndex = endIndex;
80
+ endIndex = temp;
81
+ }
82
+ const isLastSelectedRowIdSelected = state.lastSelectedRowId == null || // When no row is selected before shift click, start selecting from first row to clicked row
83
+ !!state.selectedRowIds[state.lastSelectedRowId];
84
+ // If ctrl + shift click, do not lose previous selection
85
+ // If shift click, start new selection
86
+ const selectedRowIds = !!action.ctrlPressed
87
+ ? { ...state.selectedRowIds }
88
+ : {};
89
+ // 1. All rows between start and end are assigned the state of the last selected row
90
+ instance.flatRows
91
+ .slice(startIndex, endIndex + 1)
92
+ .forEach((r) => (selectedRowIds[r.id] = isLastSelectedRowIdSelected));
93
+ // 2. All children of the last row (endIndex) also are assigned the state of the last selected row
94
+ // Since lastRow's children come after endIndex + 1 (not selected in step 1)
95
+ const handleRow = (row) => {
96
+ selectedRowIds[row.id] = isLastSelectedRowIdSelected;
97
+ row.subRows.forEach((r) => handleRow(r));
98
+ };
99
+ handleRow(instance.flatRows[endIndex]);
100
+ const newState = {
101
+ ...state,
102
+ selectedRowIds,
103
+ };
104
+ // 3.1 Deselect all selected disabled rows and their children
105
+ // 3.2 Convert all partially selected rows marked with tick mark to horizontal line
106
+ onSelectHandler(newState, instance, onSelect, isRowDisabled);
107
+ return newState;
135
108
  };
136
109
  const getSelectedData = (selectedRowIds, instance) => {
137
- const selectedData = [];
138
- const setSelectedData = (row) => {
139
- if (selectedRowIds[row.id]) {
140
- selectedData.push(row.original);
141
- }
142
- row.initialSubRows.forEach((subRow) => setSelectedData(subRow));
143
- };
144
- instance?.initialRows.forEach((row) => setSelectedData(row));
145
- return selectedData;
110
+ const selectedData = [];
111
+ const setSelectedData = (row) => {
112
+ if (selectedRowIds[row.id]) {
113
+ selectedData.push(row.original);
114
+ }
115
+ row.initialSubRows.forEach((subRow) => setSelectedData(subRow));
116
+ };
117
+ instance?.initialRows.forEach((row) => setSelectedData(row));
118
+ return selectedData;
146
119
  };
@@ -17,47 +17,12 @@ import { Box } from '../../utils/index.js';
17
17
  * }
18
18
  */
19
19
  export const DefaultCell = (props) => {
20
- // Omitting `cellProps`
21
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
22
- const {
23
- cellElementProps: {
24
- className: cellElementClassName,
25
- style: cellElementStyle,
26
- ...cellElementProps
27
- },
28
- children,
29
- startIcon,
30
- endIcon,
31
- cellProps,
32
- isDisabled,
33
- className,
34
- style,
35
- status,
36
- ...rest
37
- } = props;
38
- return React.createElement(
39
- Box,
40
- {
41
- ...cellElementProps,
42
- ...rest,
43
- className: cx(cellElementClassName, className),
44
- 'aria-disabled': isDisabled?.(cellProps.row.original) || undefined,
45
- 'data-iui-status': status,
46
- style: { ...cellElementStyle, ...style },
47
- },
48
- startIcon &&
49
- React.createElement(
50
- Box,
51
- { className: 'iui-table-cell-start-icon' },
52
- startIcon,
53
- ),
54
- children,
55
- endIcon &&
56
- React.createElement(
57
- Box,
58
- { className: 'iui-table-cell-end-icon' },
59
- endIcon,
60
- ),
61
- );
20
+ // Omitting `cellProps`
21
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
22
+ const { cellElementProps: { className: cellElementClassName, style: cellElementStyle, ...cellElementProps }, children, startIcon, endIcon, cellProps, isDisabled, className, style, status, ...rest } = props;
23
+ return (React.createElement(Box, { ...cellElementProps, ...rest, className: cx(cellElementClassName, className), "aria-disabled": isDisabled?.(cellProps.row.original) || undefined, "data-iui-status": status, style: { ...cellElementStyle, ...style } },
24
+ startIcon && (React.createElement(Box, { className: 'iui-table-cell-start-icon' }, startIcon)),
25
+ children,
26
+ endIcon && React.createElement(Box, { className: 'iui-table-cell-end-icon' }, endIcon)));
62
27
  };
63
28
  export default DefaultCell;