@itwin/itwinui-react 3.0.4 → 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 (496) hide show
  1. package/CHANGELOG.md +7 -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 -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.js +17 -24
  201. package/cjs/core/utils/functions/focusable.js +17 -26
  202. package/cjs/core/utils/functions/import.js +23 -46
  203. package/cjs/core/utils/functions/index.js +13 -13
  204. package/cjs/core/utils/functions/numbers.js +9 -9
  205. package/cjs/core/utils/functions/polymorphic.js +30 -43
  206. package/cjs/core/utils/functions/react.js +24 -26
  207. package/cjs/core/utils/functions/supports.js +4 -5
  208. package/cjs/core/utils/hooks/index.js +17 -17
  209. package/cjs/core/utils/hooks/useContainerWidth.js +19 -26
  210. package/cjs/core/utils/hooks/useControlledState.js +12 -21
  211. package/cjs/core/utils/hooks/useDragAndDrop.js +87 -110
  212. package/cjs/core/utils/hooks/useEventListener.js +22 -22
  213. package/cjs/core/utils/hooks/useGlobals.js +27 -33
  214. package/cjs/core/utils/hooks/useId.js +8 -10
  215. package/cjs/core/utils/hooks/useIntersection.js +24 -30
  216. package/cjs/core/utils/hooks/useIsClient.js +9 -9
  217. package/cjs/core/utils/hooks/useIsomorphicLayoutEffect.js +5 -6
  218. package/cjs/core/utils/hooks/useLatestRef.js +9 -9
  219. package/cjs/core/utils/hooks/useMediaQuery.js +31 -31
  220. package/cjs/core/utils/hooks/useMergedRefs.js +16 -15
  221. package/cjs/core/utils/hooks/useOverflow.js +57 -70
  222. package/cjs/core/utils/hooks/useResizeObserver.js +17 -22
  223. package/cjs/core/utils/hooks/useSafeContext.js +9 -9
  224. package/cjs/core/utils/icons/StatusIconMap.js +12 -28
  225. package/cjs/core/utils/icons/Svg.js +3 -3
  226. package/cjs/core/utils/icons/SvgCalendar.js +7 -12
  227. package/cjs/core/utils/icons/SvgCaretDownSmall.js +7 -12
  228. package/cjs/core/utils/icons/SvgCaretRightSmall.js +7 -12
  229. package/cjs/core/utils/icons/SvgCaretUpSmall.js +7 -12
  230. package/cjs/core/utils/icons/SvgCheckmark.js +7 -10
  231. package/cjs/core/utils/icons/SvgCheckmarkSmall.js +7 -12
  232. package/cjs/core/utils/icons/SvgChevronLeft.js +7 -12
  233. package/cjs/core/utils/icons/SvgChevronLeftDouble.js +7 -12
  234. package/cjs/core/utils/icons/SvgChevronRight.js +7 -12
  235. package/cjs/core/utils/icons/SvgChevronRightDouble.js +7 -12
  236. package/cjs/core/utils/icons/SvgClose.js +7 -12
  237. package/cjs/core/utils/icons/SvgCloseSmall.js +7 -12
  238. package/cjs/core/utils/icons/SvgColumnManager.js +7 -12
  239. package/cjs/core/utils/icons/SvgDocument.js +7 -10
  240. package/cjs/core/utils/icons/SvgFilter.js +7 -10
  241. package/cjs/core/utils/icons/SvgFilterHollow.js +7 -12
  242. package/cjs/core/utils/icons/SvgImportantSmall.js +7 -12
  243. package/cjs/core/utils/icons/SvgInfoCircular.js +7 -12
  244. package/cjs/core/utils/icons/SvgMore.js +7 -12
  245. package/cjs/core/utils/icons/SvgMoreVertical.js +7 -12
  246. package/cjs/core/utils/icons/SvgNew.js +7 -12
  247. package/cjs/core/utils/icons/SvgSearch.js +7 -12
  248. package/cjs/core/utils/icons/SvgSmileyHappy.js +7 -12
  249. package/cjs/core/utils/icons/SvgSortDown.js +7 -12
  250. package/cjs/core/utils/icons/SvgSortUp.js +7 -12
  251. package/cjs/core/utils/icons/SvgStatusError.js +7 -12
  252. package/cjs/core/utils/icons/SvgStatusSuccess.js +7 -12
  253. package/cjs/core/utils/icons/SvgStatusWarning.js +7 -12
  254. package/cjs/core/utils/icons/SvgSwap.js +7 -12
  255. package/cjs/core/utils/icons/SvgUpload.js +7 -12
  256. package/cjs/core/utils/icons/index.js +34 -34
  257. package/cjs/core/utils/index.js +10 -10
  258. package/cjs/core/utils/props.js +2 -2
  259. package/cjs/core/utils/types.js +2 -2
  260. package/cjs/index.js +229 -949
  261. package/cjs/react-table/react-table.js +2 -2
  262. package/cjs/styles.js +412 -425
  263. package/esm/core/Alert/Alert.js +39 -106
  264. package/esm/core/Avatar/Avatar.js +14 -42
  265. package/esm/core/AvatarGroup/AvatarGroup.js +20 -58
  266. package/esm/core/Backdrop/Backdrop.js +2 -10
  267. package/esm/core/Badge/Badge.js +16 -31
  268. package/esm/core/Breadcrumbs/Breadcrumbs.js +55 -135
  269. package/esm/core/ButtonGroup/ButtonGroup.js +25 -61
  270. package/esm/core/Buttons/Button.js +5 -45
  271. package/esm/core/Buttons/DropdownButton.js +7 -37
  272. package/esm/core/Buttons/IconButton.js +5 -40
  273. package/esm/core/Buttons/IdeasButton.js +2 -12
  274. package/esm/core/Buttons/SplitButton.js +34 -101
  275. package/esm/core/Carousel/Carousel.js +43 -72
  276. package/esm/core/Carousel/CarouselDot.js +6 -17
  277. package/esm/core/Carousel/CarouselDotsList.js +85 -147
  278. package/esm/core/Carousel/CarouselNavigation.js +32 -68
  279. package/esm/core/Carousel/CarouselSlide.js +19 -41
  280. package/esm/core/Carousel/CarouselSlider.js +41 -65
  281. package/esm/core/Checkbox/Checkbox.js +25 -78
  282. package/esm/core/ColorPicker/ColorBuilder.js +167 -280
  283. package/esm/core/ColorPicker/ColorInputPanel.js +237 -395
  284. package/esm/core/ColorPicker/ColorPalette.js +14 -35
  285. package/esm/core/ColorPicker/ColorPicker.js +46 -79
  286. package/esm/core/ColorPicker/ColorPickerContext.js +5 -7
  287. package/esm/core/ColorPicker/ColorSwatch.js +7 -24
  288. package/esm/core/ComboBox/ComboBox.js +267 -396
  289. package/esm/core/ComboBox/ComboBoxEndIcon.js +5 -18
  290. package/esm/core/ComboBox/ComboBoxInput.js +125 -197
  291. package/esm/core/ComboBox/ComboBoxInputContainer.js +5 -20
  292. package/esm/core/ComboBox/ComboBoxMenu.js +37 -77
  293. package/esm/core/ComboBox/ComboBoxMenuItem.js +14 -61
  294. package/esm/core/ComboBox/ComboBoxMultipleContainer.js +2 -6
  295. package/esm/core/ComboBox/helpers.js +38 -38
  296. package/esm/core/DatePicker/DatePicker.js +326 -555
  297. package/esm/core/Dialog/Dialog.js +24 -53
  298. package/esm/core/Dialog/DialogBackdrop.js +19 -39
  299. package/esm/core/Dialog/DialogContent.js +12 -20
  300. package/esm/core/Dialog/DialogContext.js +1 -1
  301. package/esm/core/Dialog/DialogDragContext.js +4 -4
  302. package/esm/core/Dialog/DialogMain.js +107 -177
  303. package/esm/core/Dialog/DialogTitleBar.js +10 -45
  304. package/esm/core/Divider/Divider.js +2 -8
  305. package/esm/core/DropdownMenu/DropdownMenu.js +40 -75
  306. package/esm/core/ExpandableBlock/ExpandableBlock.js +92 -193
  307. package/esm/core/Fieldset/Fieldset.js +8 -19
  308. package/esm/core/FileUpload/FileEmptyCard.js +8 -19
  309. package/esm/core/FileUpload/FileUpload.js +36 -72
  310. package/esm/core/FileUpload/FileUploadCard.js +76 -153
  311. package/esm/core/FileUpload/FileUploadTemplate.js +9 -37
  312. package/esm/core/Flex/Flex.js +71 -87
  313. package/esm/core/Footer/Footer.js +55 -86
  314. package/esm/core/Footer/FooterSeparator.js +1 -1
  315. package/esm/core/Header/Header.js +14 -55
  316. package/esm/core/Header/HeaderBasicButton.js +7 -15
  317. package/esm/core/Header/HeaderBreadcrumbs.js +8 -32
  318. package/esm/core/Header/HeaderButton.js +14 -62
  319. package/esm/core/Header/HeaderDropdownButton.js +13 -42
  320. package/esm/core/Header/HeaderLogo.js +5 -36
  321. package/esm/core/Header/HeaderSplitButton.js +14 -61
  322. package/esm/core/Icon/Icon.js +12 -26
  323. package/esm/core/InformationPanel/InformationPanel.js +36 -71
  324. package/esm/core/InformationPanel/InformationPanelContent.js +3 -17
  325. package/esm/core/InformationPanel/InformationPanelHeader.js +8 -32
  326. package/esm/core/InformationPanel/InformationPanelWrapper.js +1 -3
  327. package/esm/core/Input/Input.js +4 -12
  328. package/esm/core/InputGrid/InputGrid.js +2 -11
  329. package/esm/core/InputGroup/InputGroup.js +16 -57
  330. package/esm/core/InputWithDecorations/InputWithDecorations.js +11 -42
  331. package/esm/core/Label/Label.js +5 -26
  332. package/esm/core/LabeledInput/LabeledInput.js +10 -63
  333. package/esm/core/LabeledSelect/LabeledSelect.js +18 -67
  334. package/esm/core/LabeledTextarea/LabeledTextarea.js +2 -8
  335. package/esm/core/List/ListItem.js +28 -46
  336. package/esm/core/Menu/Menu.js +48 -64
  337. package/esm/core/Menu/MenuDivider.js +1 -1
  338. package/esm/core/Menu/MenuExtraContent.js +1 -1
  339. package/esm/core/Menu/MenuItem.js +84 -164
  340. package/esm/core/Menu/MenuItemSkeleton.js +12 -43
  341. package/esm/core/Modal/Modal.js +6 -33
  342. package/esm/core/NonIdealState/ErrorPage.js +123 -173
  343. package/esm/core/NonIdealState/NonIdealState.js +6 -65
  344. package/esm/core/NotificationMarker/NotificationMarker.js +2 -20
  345. package/esm/core/Overlay/Overlay.d.ts +20 -24
  346. package/esm/core/Overlay/Overlay.js +45 -55
  347. package/esm/core/Popover/Popover.js +80 -172
  348. package/esm/core/ProgressIndicators/ProgressLinear.js +5 -40
  349. package/esm/core/ProgressIndicators/ProgressRadial.js +14 -40
  350. package/esm/core/Radio/Radio.js +6 -45
  351. package/esm/core/RadioTiles/RadioTile.js +8 -62
  352. package/esm/core/RadioTiles/RadioTileGroup.js +3 -10
  353. package/esm/core/SearchBox/SearchBox.js +97 -214
  354. package/esm/core/Select/Select.js +130 -265
  355. package/esm/core/Select/SelectTag.js +3 -15
  356. package/esm/core/Select/SelectTagContainer.js +7 -20
  357. package/esm/core/SideNavigation/SideNavigation.js +21 -118
  358. package/esm/core/SideNavigation/SidenavButton.js +2 -24
  359. package/esm/core/SideNavigation/SidenavSubmenu.js +3 -14
  360. package/esm/core/SideNavigation/SidenavSubmenuHeader.js +4 -20
  361. package/esm/core/SkipToContentLink/SkipToContentLink.js +2 -11
  362. package/esm/core/Slider/Slider.js +187 -340
  363. package/esm/core/Slider/Thumb.js +50 -97
  364. package/esm/core/Slider/Track.js +49 -74
  365. package/esm/core/StatusMessage/StatusMessage.js +5 -23
  366. package/esm/core/Stepper/Stepper.js +14 -70
  367. package/esm/core/Stepper/StepperStep.js +29 -92
  368. package/esm/core/Stepper/WorkflowDiagram.js +8 -21
  369. package/esm/core/Stepper/WorkflowDiagramStep.js +4 -22
  370. package/esm/core/Surface/Surface.js +48 -84
  371. package/esm/core/Table/SubRowExpander.js +9 -31
  372. package/esm/core/Table/Table.js +408 -763
  373. package/esm/core/Table/TableCell.js +53 -87
  374. package/esm/core/Table/TablePaginator.js +125 -306
  375. package/esm/core/Table/TableRowMemoized.js +58 -129
  376. package/esm/core/Table/actionHandlers/expandHandler.js +10 -10
  377. package/esm/core/Table/actionHandlers/filterHandler.js +15 -23
  378. package/esm/core/Table/actionHandlers/index.js +1 -5
  379. package/esm/core/Table/actionHandlers/resizeHandler.js +11 -11
  380. package/esm/core/Table/actionHandlers/selectHandler.js +95 -122
  381. package/esm/core/Table/cells/DefaultCell.js +7 -42
  382. package/esm/core/Table/cells/EditableCell.js +41 -70
  383. package/esm/core/Table/columns/actionColumn.js +55 -85
  384. package/esm/core/Table/columns/expanderColumn.js +25 -39
  385. package/esm/core/Table/columns/selectionColumn.js +23 -51
  386. package/esm/core/Table/filters/BaseFilter.js +7 -15
  387. package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.js +42 -107
  388. package/esm/core/Table/filters/DateRangeFilter/DateRangeFilter.js +52 -110
  389. package/esm/core/Table/filters/FilterButtonBar.js +9 -28
  390. package/esm/core/Table/filters/FilterToggle.js +18 -51
  391. package/esm/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +28 -50
  392. package/esm/core/Table/filters/TextFilter/TextFilter.js +20 -32
  393. package/esm/core/Table/filters/customFilterFunctions.js +12 -14
  394. package/esm/core/Table/filters/defaultFilterFunctions.js +79 -84
  395. package/esm/core/Table/filters/tableFilters.js +25 -34
  396. package/esm/core/Table/hooks/useColumnDragAndDrop.js +81 -88
  397. package/esm/core/Table/hooks/useExpanderCell.js +20 -26
  398. package/esm/core/Table/hooks/useResizeColumns.js +287 -353
  399. package/esm/core/Table/hooks/useScrollToRow.js +34 -42
  400. package/esm/core/Table/hooks/useSelectionCell.js +6 -10
  401. package/esm/core/Table/hooks/useStickyColumns.js +59 -61
  402. package/esm/core/Table/hooks/useSubRowFiltering.js +83 -90
  403. package/esm/core/Table/hooks/useSubRowSelection.js +27 -28
  404. package/esm/core/Table/index.js +1 -5
  405. package/esm/core/Table/utils.js +38 -40
  406. package/esm/core/Tabs/Tabs.js +226 -401
  407. package/esm/core/Tag/Tag.js +8 -35
  408. package/esm/core/Tag/TagContainer.js +5 -17
  409. package/esm/core/Textarea/Textarea.js +1 -6
  410. package/esm/core/ThemeProvider/ThemeProvider.js +44 -101
  411. package/esm/core/Tile/Tile.js +218 -386
  412. package/esm/core/TimePicker/TimePicker.js +228 -448
  413. package/esm/core/Toast/Toast.js +99 -193
  414. package/esm/core/Toast/Toaster.js +69 -82
  415. package/esm/core/ToggleSwitch/ToggleSwitch.js +17 -60
  416. package/esm/core/Tooltip/Tooltip.js +86 -151
  417. package/esm/core/TransferList/TransferList.js +93 -157
  418. package/esm/core/Tree/Tree.js +122 -196
  419. package/esm/core/Tree/TreeContext.js +5 -5
  420. package/esm/core/Tree/TreeNode.js +96 -195
  421. package/esm/core/Tree/TreeNodeExpander.js +5 -16
  422. package/esm/core/Typography/Blockquote.js +4 -12
  423. package/esm/core/Typography/Kbd.js +15 -24
  424. package/esm/core/Typography/Text.js +7 -20
  425. package/esm/core/VisuallyHidden/VisuallyHidden.js +2 -8
  426. package/esm/core/utils/color/ColorValue.js +449 -524
  427. package/esm/core/utils/components/AutoclearingHiddenLiveRegion.js +7 -11
  428. package/esm/core/utils/components/ButtonBase.js +13 -31
  429. package/esm/core/utils/components/FocusTrap.js +32 -41
  430. package/esm/core/utils/components/InputContainer.js +11 -50
  431. package/esm/core/utils/components/InputFlexContainer.js +2 -15
  432. package/esm/core/utils/components/MiddleTextTruncation.js +17 -27
  433. package/esm/core/utils/components/Portal.js +12 -12
  434. package/esm/core/utils/components/Resizer.js +191 -249
  435. package/esm/core/utils/components/VirtualScroll.js +218 -297
  436. package/esm/core/utils/components/WithCSSTransition.js +26 -43
  437. package/esm/core/utils/functions/colors.js +19 -19
  438. package/esm/core/utils/functions/date.js +8 -8
  439. package/esm/core/utils/functions/dev.js +12 -11
  440. package/esm/core/utils/functions/dom.js +14 -17
  441. package/esm/core/utils/functions/focusable.js +15 -24
  442. package/esm/core/utils/functions/import.js +2 -4
  443. package/esm/core/utils/functions/numbers.js +7 -7
  444. package/esm/core/utils/functions/polymorphic.js +23 -32
  445. package/esm/core/utils/functions/react.js +19 -21
  446. package/esm/core/utils/functions/supports.js +1 -2
  447. package/esm/core/utils/hooks/useContainerWidth.js +13 -16
  448. package/esm/core/utils/hooks/useControlledState.js +8 -17
  449. package/esm/core/utils/hooks/useDragAndDrop.js +80 -99
  450. package/esm/core/utils/hooks/useEventListener.js +18 -18
  451. package/esm/core/utils/hooks/useGlobals.js +21 -27
  452. package/esm/core/utils/hooks/useId.js +3 -4
  453. package/esm/core/utils/hooks/useIntersection.js +19 -25
  454. package/esm/core/utils/hooks/useIsClient.js +5 -5
  455. package/esm/core/utils/hooks/useIsomorphicLayoutEffect.js +1 -2
  456. package/esm/core/utils/hooks/useLatestRef.js +5 -5
  457. package/esm/core/utils/hooks/useMediaQuery.js +25 -23
  458. package/esm/core/utils/hooks/useMergedRefs.js +12 -11
  459. package/esm/core/utils/hooks/useOverflow.js +51 -63
  460. package/esm/core/utils/hooks/useResizeObserver.js +12 -17
  461. package/esm/core/utils/hooks/useSafeContext.js +5 -5
  462. package/esm/core/utils/icons/StatusIconMap.js +4 -8
  463. package/esm/core/utils/icons/SvgCalendar.js +2 -7
  464. package/esm/core/utils/icons/SvgCaretDownSmall.js +2 -7
  465. package/esm/core/utils/icons/SvgCaretRightSmall.js +2 -7
  466. package/esm/core/utils/icons/SvgCaretUpSmall.js +2 -7
  467. package/esm/core/utils/icons/SvgCheckmark.js +2 -5
  468. package/esm/core/utils/icons/SvgCheckmarkSmall.js +2 -7
  469. package/esm/core/utils/icons/SvgChevronLeft.js +2 -7
  470. package/esm/core/utils/icons/SvgChevronLeftDouble.js +2 -7
  471. package/esm/core/utils/icons/SvgChevronRight.js +2 -7
  472. package/esm/core/utils/icons/SvgChevronRightDouble.js +2 -7
  473. package/esm/core/utils/icons/SvgClose.js +2 -7
  474. package/esm/core/utils/icons/SvgCloseSmall.js +2 -7
  475. package/esm/core/utils/icons/SvgColumnManager.js +2 -7
  476. package/esm/core/utils/icons/SvgDocument.js +2 -5
  477. package/esm/core/utils/icons/SvgFilter.js +2 -5
  478. package/esm/core/utils/icons/SvgFilterHollow.js +2 -7
  479. package/esm/core/utils/icons/SvgImportantSmall.js +2 -7
  480. package/esm/core/utils/icons/SvgInfoCircular.js +2 -7
  481. package/esm/core/utils/icons/SvgMore.js +2 -7
  482. package/esm/core/utils/icons/SvgMoreVertical.js +2 -7
  483. package/esm/core/utils/icons/SvgNew.js +2 -7
  484. package/esm/core/utils/icons/SvgSearch.js +2 -7
  485. package/esm/core/utils/icons/SvgSmileyHappy.js +2 -7
  486. package/esm/core/utils/icons/SvgSortDown.js +2 -7
  487. package/esm/core/utils/icons/SvgSortUp.js +2 -7
  488. package/esm/core/utils/icons/SvgStatusError.js +2 -7
  489. package/esm/core/utils/icons/SvgStatusSuccess.js +2 -7
  490. package/esm/core/utils/icons/SvgStatusWarning.js +2 -7
  491. package/esm/core/utils/icons/SvgSwap.js +2 -7
  492. package/esm/core/utils/icons/SvgUpload.js +2 -7
  493. package/esm/index.js +3 -21
  494. package/esm/styles.js +414 -425
  495. package/package.json +2 -2
  496. 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;