@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
@@ -1,69 +1,40 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Dialog = void 0;
4
- const tslib_1 = require('tslib');
4
+ const tslib_1 = require("tslib");
5
5
  /*---------------------------------------------------------------------------------------------
6
6
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
7
  * See LICENSE.md in the project root for license terms and full copyright notice.
8
8
  *--------------------------------------------------------------------------------------------*/
9
- const React = tslib_1.__importStar(require('react'));
10
- const classnames_1 = tslib_1.__importDefault(require('classnames'));
11
- const DialogTitleBar_js_1 = require('./DialogTitleBar.js');
12
- const DialogContent_js_1 = require('./DialogContent.js');
13
- const DialogBackdrop_js_1 = require('./DialogBackdrop.js');
14
- const DialogContext_js_1 = require('./DialogContext.js');
15
- const DialogButtonBar_js_1 = require('./DialogButtonBar.js');
16
- const DialogMain_js_1 = require('./DialogMain.js');
17
- const index_js_1 = require('../utils/index.js');
9
+ const React = tslib_1.__importStar(require("react"));
10
+ const classnames_1 = tslib_1.__importDefault(require("classnames"));
11
+ const DialogTitleBar_js_1 = require("./DialogTitleBar.js");
12
+ const DialogContent_js_1 = require("./DialogContent.js");
13
+ const DialogBackdrop_js_1 = require("./DialogBackdrop.js");
14
+ const DialogContext_js_1 = require("./DialogContext.js");
15
+ const DialogButtonBar_js_1 = require("./DialogButtonBar.js");
16
+ const DialogMain_js_1 = require("./DialogMain.js");
17
+ const index_js_1 = require("../utils/index.js");
18
18
  const DialogComponent = React.forwardRef((props, ref) => {
19
- const {
20
- trapFocus = false,
21
- setFocus = false,
22
- preventDocumentScroll = false,
23
- isOpen = false,
24
- isDismissible = true,
25
- closeOnEsc = true,
26
- closeOnExternalClick = false,
27
- onClose,
28
- isDraggable = false,
29
- isResizable = false,
30
- relativeTo = 'viewport',
31
- placement,
32
- className,
33
- portal = false,
34
- ...rest
35
- } = props;
36
- const dialogRootRef = React.useRef(null);
37
- return React.createElement(
38
- DialogContext_js_1.DialogContext.Provider,
39
- {
40
- value: {
41
- isOpen,
42
- onClose,
43
- closeOnEsc,
44
- closeOnExternalClick,
45
- isDismissible,
46
- preventDocumentScroll,
47
- trapFocus,
48
- setFocus,
49
- isDraggable,
50
- isResizable,
51
- relativeTo,
52
- dialogRootRef,
53
- placement,
54
- },
55
- },
56
- React.createElement(
57
- index_js_1.Portal,
58
- { portal: portal },
59
- React.createElement(index_js_1.Box, {
60
- className: (0, classnames_1.default)('iui-dialog-wrapper', className),
61
- 'data-iui-relative': relativeTo === 'container',
62
- ref: (0, index_js_1.useMergedRefs)(ref, dialogRootRef),
63
- ...rest,
64
- }),
65
- ),
66
- );
19
+ const { trapFocus = false, setFocus = false, preventDocumentScroll = false, isOpen = false, isDismissible = true, closeOnEsc = true, closeOnExternalClick = false, onClose, isDraggable = false, isResizable = false, relativeTo = 'viewport', placement, className, portal = false, ...rest } = props;
20
+ const dialogRootRef = React.useRef(null);
21
+ return (React.createElement(DialogContext_js_1.DialogContext.Provider, { value: {
22
+ isOpen,
23
+ onClose,
24
+ closeOnEsc,
25
+ closeOnExternalClick,
26
+ isDismissible,
27
+ preventDocumentScroll,
28
+ trapFocus,
29
+ setFocus,
30
+ isDraggable,
31
+ isResizable,
32
+ relativeTo,
33
+ dialogRootRef,
34
+ placement,
35
+ } },
36
+ React.createElement(index_js_1.Portal, { portal: portal },
37
+ React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-dialog-wrapper', className), "data-iui-relative": relativeTo === 'container', ref: (0, index_js_1.useMergedRefs)(ref, dialogRootRef), ...rest }))));
67
38
  });
68
39
  /**
69
40
  * Dialog component.
@@ -88,10 +59,10 @@ const DialogComponent = React.forwardRef((props, ref) => {
88
59
  * </Dialog>
89
60
  */
90
61
  exports.Dialog = Object.assign(DialogComponent, {
91
- Backdrop: DialogBackdrop_js_1.DialogBackdrop,
92
- Main: DialogMain_js_1.DialogMain,
93
- TitleBar: DialogTitleBar_js_1.DialogTitleBar,
94
- Content: DialogContent_js_1.DialogContent,
95
- ButtonBar: DialogButtonBar_js_1.DialogButtonBar,
62
+ Backdrop: DialogBackdrop_js_1.DialogBackdrop,
63
+ Main: DialogMain_js_1.DialogMain,
64
+ TitleBar: DialogTitleBar_js_1.DialogTitleBar,
65
+ Content: DialogContent_js_1.DialogContent,
66
+ ButtonBar: DialogButtonBar_js_1.DialogButtonBar,
96
67
  });
97
68
  exports.default = exports.Dialog;
@@ -1,16 +1,16 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DialogBackdrop = void 0;
4
- const tslib_1 = require('tslib');
4
+ const tslib_1 = require("tslib");
5
5
  /*---------------------------------------------------------------------------------------------
6
6
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
7
  * See LICENSE.md in the project root for license terms and full copyright notice.
8
8
  *--------------------------------------------------------------------------------------------*/
9
- const React = tslib_1.__importStar(require('react'));
10
- const Backdrop_js_1 = require('../Backdrop/Backdrop.js');
11
- const index_js_1 = require('../utils/index.js');
12
- const DialogContext_js_1 = require('./DialogContext.js');
13
- const classnames_1 = tslib_1.__importDefault(require('classnames'));
9
+ const React = tslib_1.__importStar(require("react"));
10
+ const Backdrop_js_1 = require("../Backdrop/Backdrop.js");
11
+ const index_js_1 = require("../utils/index.js");
12
+ const DialogContext_js_1 = require("./DialogContext.js");
13
+ const classnames_1 = tslib_1.__importDefault(require("classnames"));
14
14
  /**
15
15
  * Backdrop component for dialog. Recommended to be used with `Dialog`
16
16
  * then its visibility is being controlled by dialog's `isOpen` prop.
@@ -18,44 +18,24 @@ const classnames_1 = tslib_1.__importDefault(require('classnames'));
18
18
  * <Dialog.Backdrop />
19
19
  */
20
20
  exports.DialogBackdrop = React.forwardRef((props, ref) => {
21
- const dialogContext = (0, DialogContext_js_1.useDialogContext)();
22
- const {
23
- isVisible = dialogContext.isOpen,
24
- isDismissible = dialogContext.isDismissible,
25
- onClose = dialogContext.onClose,
26
- closeOnExternalClick = dialogContext.closeOnExternalClick,
27
- relativeTo = dialogContext.relativeTo,
28
- onMouseDown,
29
- className,
30
- style,
31
- ...rest
32
- } = props;
33
- const backdropRef = React.useRef(null);
34
- const refs = (0, index_js_1.useMergedRefs)(backdropRef, ref);
35
- const handleMouseDown = (event) => {
36
- // Prevents React from resetting its properties
37
- event.persist();
38
- if (event.target !== backdropRef.current) {
39
- return;
40
- }
41
- if (isDismissible && closeOnExternalClick && onClose) {
42
- onClose(event);
43
- }
44
- onMouseDown?.(event);
45
- };
46
- return React.createElement(Backdrop_js_1.Backdrop, {
47
- isVisible: isVisible,
48
- className: (0, classnames_1.default)(
49
- { 'iui-backdrop-fixed': relativeTo === 'viewport' },
50
- className,
51
- ),
52
- ref: refs,
53
- onMouseDown: handleMouseDown,
54
- style: {
55
- pointerEvents: 'auto',
56
- ...style,
57
- },
58
- ...rest,
59
- });
21
+ const dialogContext = (0, DialogContext_js_1.useDialogContext)();
22
+ const { isVisible = dialogContext.isOpen, isDismissible = dialogContext.isDismissible, onClose = dialogContext.onClose, closeOnExternalClick = dialogContext.closeOnExternalClick, relativeTo = dialogContext.relativeTo, onMouseDown, className, style, ...rest } = props;
23
+ const backdropRef = React.useRef(null);
24
+ const refs = (0, index_js_1.useMergedRefs)(backdropRef, ref);
25
+ const handleMouseDown = (event) => {
26
+ // Prevents React from resetting its properties
27
+ event.persist();
28
+ if (event.target !== backdropRef.current) {
29
+ return;
30
+ }
31
+ if (isDismissible && closeOnExternalClick && onClose) {
32
+ onClose(event);
33
+ }
34
+ onMouseDown?.(event);
35
+ };
36
+ return (React.createElement(Backdrop_js_1.Backdrop, { isVisible: isVisible, className: (0, classnames_1.default)({ 'iui-backdrop-fixed': relativeTo === 'viewport' }, className), ref: refs, onMouseDown: handleMouseDown, style: {
37
+ pointerEvents: 'auto',
38
+ ...style,
39
+ }, ...rest }));
60
40
  });
61
41
  exports.default = exports.DialogBackdrop;
@@ -1,11 +1,11 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DialogButtonBar = void 0;
4
4
  /*---------------------------------------------------------------------------------------------
5
5
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
6
  * See LICENSE.md in the project root for license terms and full copyright notice.
7
7
  *--------------------------------------------------------------------------------------------*/
8
- const index_js_1 = require('../utils/index.js');
8
+ const index_js_1 = require("../utils/index.js");
9
9
  /**
10
10
  * Container for Buttons in `Dialog`. Recommended to be used as a child of `Dialog`.
11
11
  * @example
@@ -1,14 +1,14 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DialogContent = void 0;
4
- const tslib_1 = require('tslib');
4
+ const tslib_1 = require("tslib");
5
5
  /*---------------------------------------------------------------------------------------------
6
6
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
7
  * See LICENSE.md in the project root for license terms and full copyright notice.
8
8
  *--------------------------------------------------------------------------------------------*/
9
- const React = tslib_1.__importStar(require('react'));
10
- const classnames_1 = tslib_1.__importDefault(require('classnames'));
11
- const index_js_1 = require('../utils/index.js');
9
+ const React = tslib_1.__importStar(require("react"));
10
+ const classnames_1 = tslib_1.__importDefault(require("classnames"));
11
+ const index_js_1 = require("../utils/index.js");
12
12
  /**
13
13
  * Container for content in `Dialog`. Recommended to be used as a child of `Dialog`.
14
14
  * @example
@@ -17,25 +17,17 @@ const index_js_1 = require('../utils/index.js');
17
17
  * </Dialog.Content>
18
18
  */
19
19
  exports.DialogContent = React.forwardRef((props, ref) => {
20
- const { children, className, ...rest } = props;
21
- const contentRef = React.useRef(null);
22
- React.useEffect(() => {
23
- // firefox hack for adding data-iui-flex in absence of :has
24
- if (!(0, index_js_1.supportsHas)()) {
25
- const dialog = contentRef.current?.closest('[role=dialog]');
26
- if (dialog instanceof HTMLElement) {
27
- dialog.dataset.iuiFlex = 'true';
28
- }
29
- }
30
- }, []);
31
- return React.createElement(
32
- index_js_1.Box,
33
- {
34
- className: (0, classnames_1.default)('iui-dialog-content', className),
35
- ref: (0, index_js_1.useMergedRefs)(contentRef, ref),
36
- ...rest,
37
- },
38
- children,
39
- );
20
+ const { children, className, ...rest } = props;
21
+ const contentRef = React.useRef(null);
22
+ React.useEffect(() => {
23
+ // firefox hack for adding data-iui-flex in absence of :has
24
+ if (!(0, index_js_1.supportsHas)()) {
25
+ const dialog = contentRef.current?.closest('[role=dialog]');
26
+ if (dialog instanceof HTMLElement) {
27
+ dialog.dataset.iuiFlex = 'true';
28
+ }
29
+ }
30
+ }, []);
31
+ return (React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-dialog-content', className), ref: (0, index_js_1.useMergedRefs)(contentRef, ref), ...rest }, children));
40
32
  });
41
33
  exports.default = exports.DialogContent;
@@ -1,14 +1,14 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useDialogContext = exports.DialogContext = void 0;
4
- const tslib_1 = require('tslib');
4
+ const tslib_1 = require("tslib");
5
5
  /*---------------------------------------------------------------------------------------------
6
6
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
7
  * See LICENSE.md in the project root for license terms and full copyright notice.
8
8
  *--------------------------------------------------------------------------------------------*/
9
- const React = tslib_1.__importStar(require('react'));
9
+ const React = tslib_1.__importStar(require("react"));
10
10
  exports.DialogContext = React.createContext(undefined);
11
11
  const useDialogContext = () => {
12
- return React.useContext(exports.DialogContext) || {};
12
+ return React.useContext(exports.DialogContext) || {};
13
13
  };
14
14
  exports.useDialogContext = useDialogContext;
@@ -1,17 +1,17 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useDialogDragContext = exports.DialogDragContext = void 0;
4
- const tslib_1 = require('tslib');
4
+ const tslib_1 = require("tslib");
5
5
  /*---------------------------------------------------------------------------------------------
6
6
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
7
  * See LICENSE.md in the project root for license terms and full copyright notice.
8
8
  *--------------------------------------------------------------------------------------------*/
9
- const React = tslib_1.__importStar(require('react'));
9
+ const React = tslib_1.__importStar(require("react"));
10
10
  exports.DialogDragContext = React.createContext(undefined);
11
11
  const useDialogDragContext = () => {
12
- const context = React.useContext(exports.DialogDragContext);
13
- return {
14
- ...context,
15
- };
12
+ const context = React.useContext(exports.DialogDragContext);
13
+ return {
14
+ ...context,
15
+ };
16
16
  };
17
17
  exports.useDialogDragContext = useDialogDragContext;
@@ -1,20 +1,18 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DialogMain = void 0;
4
- const tslib_1 = require('tslib');
4
+ const tslib_1 = require("tslib");
5
5
  /*---------------------------------------------------------------------------------------------
6
6
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
7
  * See LICENSE.md in the project root for license terms and full copyright notice.
8
8
  *--------------------------------------------------------------------------------------------*/
9
- const React = tslib_1.__importStar(require('react'));
10
- const classnames_1 = tslib_1.__importDefault(require('classnames'));
11
- const index_js_1 = require('../utils/index.js');
12
- const DialogContext_js_1 = require('./DialogContext.js');
13
- const react_transition_group_1 = require('react-transition-group');
14
- const DialogDragContext_js_1 = require('./DialogDragContext.js');
15
- const useDragAndDrop_js_1 = tslib_1.__importDefault(
16
- require('../utils/hooks/useDragAndDrop.js'),
17
- );
9
+ const React = tslib_1.__importStar(require("react"));
10
+ const classnames_1 = tslib_1.__importDefault(require("classnames"));
11
+ const index_js_1 = require("../utils/index.js");
12
+ const DialogContext_js_1 = require("./DialogContext.js");
13
+ const react_transition_group_1 = require("react-transition-group");
14
+ const DialogDragContext_js_1 = require("./DialogDragContext.js");
15
+ const useDragAndDrop_js_1 = tslib_1.__importDefault(require("../utils/hooks/useDragAndDrop.js"));
18
16
  /**
19
17
  * Dialog component which can wrap any content.
20
18
  * @example
@@ -36,178 +34,113 @@ const useDragAndDrop_js_1 = tslib_1.__importDefault(
36
34
  * </Dialog.Main>
37
35
  */
38
36
  exports.DialogMain = React.forwardRef((props, ref) => {
39
- const dialogContext = (0, DialogContext_js_1.useDialogContext)();
40
- const {
41
- className,
42
- children,
43
- styleType = 'default',
44
- isOpen = dialogContext.isOpen,
45
- isDismissible = dialogContext.isDismissible,
46
- onClose = dialogContext.onClose,
47
- closeOnEsc = dialogContext.closeOnEsc,
48
- trapFocus = dialogContext.trapFocus,
49
- setFocus = dialogContext.setFocus,
50
- preventDocumentScroll = dialogContext.preventDocumentScroll,
51
- onKeyDown,
52
- isDraggable = dialogContext.isDraggable,
53
- isResizable = dialogContext.isResizable,
54
- style: propStyle,
55
- placement = dialogContext.placement,
56
- ...rest
57
- } = props;
58
- const [style, setStyle] = React.useState();
59
- const dialogRef = React.useRef(null);
60
- const refs = (0, index_js_1.useMergedRefs)(dialogRef, ref);
61
- const hasBeenResized = React.useRef(false);
62
- const previousFocusedElement = React.useRef();
63
- const originalBodyOverflow = React.useRef('');
64
- React.useEffect(() => {
65
- if (isOpen) {
66
- originalBodyOverflow.current = document.body.style.overflow;
67
- }
68
- }, [isOpen]);
69
- // Prevents document from scrolling when the dialog is open.
70
- React.useEffect(() => {
71
- const ownerDocument = dialogRef.current?.ownerDocument;
72
- // If there is no `ownerDocument` or `preventDocumentScroll` is false or
73
- // document body originally has `overflow: hidden` (possibly from other/parent dialog), then do nothing.
74
- if (
75
- !ownerDocument ||
76
- !preventDocumentScroll ||
77
- originalBodyOverflow.current === 'hidden'
78
- ) {
79
- return;
80
- }
81
- if (isOpen) {
82
- ownerDocument.body.style.overflow = 'hidden';
83
- } else {
84
- ownerDocument.body.style.overflow = originalBodyOverflow.current;
85
- }
86
- return () => {
87
- ownerDocument.body.style.overflow = originalBodyOverflow.current;
37
+ const dialogContext = (0, DialogContext_js_1.useDialogContext)();
38
+ const { className, children, styleType = 'default', isOpen = dialogContext.isOpen, isDismissible = dialogContext.isDismissible, onClose = dialogContext.onClose, closeOnEsc = dialogContext.closeOnEsc, trapFocus = dialogContext.trapFocus, setFocus = dialogContext.setFocus, preventDocumentScroll = dialogContext.preventDocumentScroll, onKeyDown, isDraggable = dialogContext.isDraggable, isResizable = dialogContext.isResizable, style: propStyle, placement = dialogContext.placement, ...rest } = props;
39
+ const [style, setStyle] = React.useState();
40
+ const dialogRef = React.useRef(null);
41
+ const refs = (0, index_js_1.useMergedRefs)(dialogRef, ref);
42
+ const hasBeenResized = React.useRef(false);
43
+ const previousFocusedElement = React.useRef();
44
+ const originalBodyOverflow = React.useRef('');
45
+ React.useEffect(() => {
46
+ if (isOpen) {
47
+ originalBodyOverflow.current = document.body.style.overflow;
48
+ }
49
+ }, [isOpen]);
50
+ // Prevents document from scrolling when the dialog is open.
51
+ React.useEffect(() => {
52
+ const ownerDocument = dialogRef.current?.ownerDocument;
53
+ // If there is no `ownerDocument` or `preventDocumentScroll` is false or
54
+ // document body originally has `overflow: hidden` (possibly from other/parent dialog), then do nothing.
55
+ if (!ownerDocument ||
56
+ !preventDocumentScroll ||
57
+ originalBodyOverflow.current === 'hidden') {
58
+ return;
59
+ }
60
+ if (isOpen) {
61
+ ownerDocument.body.style.overflow = 'hidden';
62
+ }
63
+ else {
64
+ ownerDocument.body.style.overflow = originalBodyOverflow.current;
65
+ }
66
+ return () => {
67
+ ownerDocument.body.style.overflow = originalBodyOverflow.current;
68
+ };
69
+ }, [isOpen, preventDocumentScroll]);
70
+ const handleKeyDown = (event) => {
71
+ if (event.altKey) {
72
+ return;
73
+ }
74
+ // Prevents React from resetting its properties
75
+ event.persist();
76
+ if (isDismissible && closeOnEsc && event.key === 'Escape' && onClose) {
77
+ onClose(event);
78
+ }
79
+ onKeyDown?.(event);
88
80
  };
89
- }, [isOpen, preventDocumentScroll]);
90
- const handleKeyDown = (event) => {
91
- if (event.altKey) {
92
- return;
93
- }
94
- // Prevents React from resetting its properties
95
- event.persist();
96
- if (isDismissible && closeOnEsc && event.key === 'Escape' && onClose) {
97
- onClose(event);
98
- }
99
- onKeyDown?.(event);
100
- };
101
- const { onPointerDown, transform } = (0, useDragAndDrop_js_1.default)(
102
- dialogRef,
103
- dialogContext.dialogRootRef,
104
- isDraggable,
105
- );
106
- const handlePointerDown = React.useCallback(
107
- (event) => {
108
- if (isDraggable) {
109
- onPointerDown(event);
110
- }
111
- },
112
- [isDraggable, onPointerDown],
113
- );
114
- // Prevents dialog from moving when window is being resized
115
- (0, index_js_1.useIsomorphicLayoutEffect)(() => {
116
- if (!isDraggable || !isOpen) {
117
- return;
118
- }
119
- const rect = dialogRef.current?.getBoundingClientRect();
120
- const [translateX, translateY] = (0, index_js_1.getTranslateValues)(
121
- dialogRef.current,
122
- );
123
- setStyle((oldStyle) => ({
124
- ...oldStyle,
125
- inlineSize: rect?.width,
126
- blockSize: rect?.height,
127
- insetInlineStart: dialogRef.current?.offsetLeft,
128
- insetBlockStart: dialogRef.current?.offsetTop,
129
- transform: `translate(${translateX}px,${translateY}px)`,
130
- }));
131
- }, [isDraggable, isOpen]);
132
- const setResizeStyle = React.useCallback((newStyle) => {
133
- setStyle((oldStyle) => ({
134
- ...oldStyle,
135
- ...newStyle,
136
- }));
137
- }, []);
138
- const content = React.createElement(
139
- index_js_1.Box,
140
- {
141
- className: (0, classnames_1.default)(
142
- 'iui-dialog',
143
- {
144
- 'iui-dialog-default': styleType === 'default',
145
- 'iui-dialog-full-page': styleType === 'fullPage',
146
- 'iui-dialog-visible': isOpen,
147
- 'iui-dialog-draggable': isDraggable,
148
- },
149
- className,
150
- ),
151
- role: 'dialog',
152
- ref: refs,
153
- onKeyDown: handleKeyDown,
154
- tabIndex: -1,
155
- 'data-iui-placement': placement,
156
- style: {
157
- transform,
158
- ...style,
159
- ...propStyle,
160
- },
161
- ...rest,
162
- },
163
- isResizable &&
164
- React.createElement(index_js_1.Resizer, {
165
- elementRef: dialogRef,
166
- containerRef: dialogContext.dialogRootRef,
167
- onResizeStart: () => {
168
- if (!hasBeenResized.current) {
169
- hasBeenResized.current = true;
170
- setResizeStyle({ maxInlineSize: '100%' });
171
- }
172
- },
173
- onResizeEnd: setResizeStyle,
174
- }),
175
- children,
176
- );
177
- return React.createElement(
178
- react_transition_group_1.CSSTransition,
179
- {
180
- in: isOpen,
181
- classNames: {
182
- enter: 'iui-dialog-animation-enter',
183
- enterActive: 'iui-dialog-animation-enter-active',
184
- },
185
- timeout: { exit: 600 },
186
- // Focuses dialog when opened
187
- onEntered: () => {
188
- previousFocusedElement.current =
189
- dialogRef.current?.ownerDocument.activeElement;
190
- setFocus && dialogRef.current?.focus({ preventScroll: true });
191
- },
192
- // Brings back focus to the previously focused element when closed
193
- onExit: () => {
194
- if (
195
- dialogRef.current?.contains(
196
- dialogRef.current?.ownerDocument.activeElement,
197
- )
198
- ) {
199
- previousFocusedElement.current?.focus();
81
+ const { onPointerDown, transform } = (0, useDragAndDrop_js_1.default)(dialogRef, dialogContext.dialogRootRef, isDraggable);
82
+ const handlePointerDown = React.useCallback((event) => {
83
+ if (isDraggable) {
84
+ onPointerDown(event);
85
+ }
86
+ }, [isDraggable, onPointerDown]);
87
+ // Prevents dialog from moving when window is being resized
88
+ (0, index_js_1.useIsomorphicLayoutEffect)(() => {
89
+ if (!isDraggable || !isOpen) {
90
+ return;
200
91
  }
201
- },
202
- unmountOnExit: true,
203
- nodeRef: dialogRef,
204
- },
205
- React.createElement(
206
- DialogDragContext_js_1.DialogDragContext.Provider,
207
- { value: { onPointerDown: handlePointerDown } },
208
- trapFocus && React.createElement(index_js_1.FocusTrap, null, content),
209
- !trapFocus && content,
210
- ),
211
- );
92
+ const rect = dialogRef.current?.getBoundingClientRect();
93
+ const [translateX, translateY] = (0, index_js_1.getTranslateValues)(dialogRef.current);
94
+ setStyle((oldStyle) => ({
95
+ ...oldStyle,
96
+ inlineSize: rect?.width,
97
+ blockSize: rect?.height,
98
+ insetInlineStart: dialogRef.current?.offsetLeft,
99
+ insetBlockStart: dialogRef.current?.offsetTop,
100
+ transform: `translate(${translateX}px,${translateY}px)`,
101
+ }));
102
+ }, [isDraggable, isOpen]);
103
+ const setResizeStyle = React.useCallback((newStyle) => {
104
+ setStyle((oldStyle) => ({
105
+ ...oldStyle,
106
+ ...newStyle,
107
+ }));
108
+ }, []);
109
+ const content = (React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-dialog', {
110
+ 'iui-dialog-default': styleType === 'default',
111
+ 'iui-dialog-full-page': styleType === 'fullPage',
112
+ 'iui-dialog-visible': isOpen,
113
+ 'iui-dialog-draggable': isDraggable,
114
+ }, className), role: 'dialog', ref: refs, onKeyDown: handleKeyDown, tabIndex: -1, "data-iui-placement": placement, style: {
115
+ transform,
116
+ ...style,
117
+ ...propStyle,
118
+ }, ...rest },
119
+ isResizable && (React.createElement(index_js_1.Resizer, { elementRef: dialogRef, containerRef: dialogContext.dialogRootRef, onResizeStart: () => {
120
+ if (!hasBeenResized.current) {
121
+ hasBeenResized.current = true;
122
+ setResizeStyle({ maxInlineSize: '100%' });
123
+ }
124
+ }, onResizeEnd: setResizeStyle })),
125
+ children));
126
+ return (React.createElement(react_transition_group_1.CSSTransition, { in: isOpen, classNames: {
127
+ enter: 'iui-dialog-animation-enter',
128
+ enterActive: 'iui-dialog-animation-enter-active',
129
+ }, timeout: { exit: 600 },
130
+ // Focuses dialog when opened
131
+ onEntered: () => {
132
+ previousFocusedElement.current = dialogRef.current?.ownerDocument
133
+ .activeElement;
134
+ setFocus && dialogRef.current?.focus({ preventScroll: true });
135
+ },
136
+ // Brings back focus to the previously focused element when closed
137
+ onExit: () => {
138
+ if (dialogRef.current?.contains(dialogRef.current?.ownerDocument.activeElement)) {
139
+ previousFocusedElement.current?.focus();
140
+ }
141
+ }, unmountOnExit: true, nodeRef: dialogRef },
142
+ React.createElement(DialogDragContext_js_1.DialogDragContext.Provider, { value: { onPointerDown: handlePointerDown } },
143
+ trapFocus && React.createElement(index_js_1.FocusTrap, null, content),
144
+ !trapFocus && content)));
212
145
  });
213
146
  exports.default = exports.DialogMain;