@itwin/itwinui-react 1.20.0 → 1.21.0

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 (296) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/cjs/core/Alert/Alert.d.ts +1 -1
  3. package/cjs/core/Alert/Alert.js +3 -4
  4. package/cjs/core/Badge/Badge.d.ts +1 -2
  5. package/cjs/core/Badge/Badge.js +4 -5
  6. package/cjs/core/Breadcrumbs/Breadcrumbs.d.ts +1 -1
  7. package/cjs/core/Breadcrumbs/Breadcrumbs.js +4 -6
  8. package/cjs/core/ButtonGroup/ButtonGroup.d.ts +1 -1
  9. package/cjs/core/ButtonGroup/ButtonGroup.js +3 -4
  10. package/cjs/core/Buttons/Button/Button.js +2 -2
  11. package/cjs/core/Buttons/DropdownButton/DropdownButton.js +3 -4
  12. package/cjs/core/Buttons/IconButton/IconButton.js +2 -2
  13. package/cjs/core/Buttons/IdeasButton/IdeasButton.js +2 -2
  14. package/cjs/core/Buttons/SplitButton/SplitButton.js +2 -2
  15. package/cjs/core/Checkbox/Checkbox.js +3 -4
  16. package/cjs/core/ComboBox/ComboBox.d.ts +51 -0
  17. package/cjs/core/ComboBox/ComboBox.js +268 -0
  18. package/cjs/core/ComboBox/index.d.ts +4 -0
  19. package/cjs/core/ComboBox/index.js +10 -0
  20. package/cjs/core/DatePicker/DatePicker.js +2 -2
  21. package/cjs/core/DropdownMenu/DropdownMenu.d.ts +1 -2
  22. package/cjs/core/DropdownMenu/DropdownMenu.js +4 -6
  23. package/cjs/core/ErrorPage/ErrorPage.js +2 -2
  24. package/cjs/core/ExpandableBlock/ExpandableBlock.d.ts +1 -1
  25. package/cjs/core/ExpandableBlock/ExpandableBlock.js +3 -4
  26. package/cjs/core/Fieldset/Fieldset.js +2 -2
  27. package/cjs/core/FileUpload/FileUpload.d.ts +2 -2
  28. package/cjs/core/FileUpload/FileUpload.js +3 -4
  29. package/cjs/core/FileUpload/FileUploadTemplate.js +2 -2
  30. package/cjs/core/Footer/Footer.d.ts +1 -1
  31. package/cjs/core/Footer/Footer.js +2 -2
  32. package/cjs/core/Header/Header.d.ts +1 -1
  33. package/cjs/core/Header/Header.js +2 -2
  34. package/cjs/core/Header/HeaderBreadcrumbs.js +2 -2
  35. package/cjs/core/Header/HeaderButton.js +2 -2
  36. package/cjs/core/Header/HeaderLogo.d.ts +1 -1
  37. package/cjs/core/Header/HeaderLogo.js +2 -2
  38. package/cjs/core/Input/Input.js +3 -4
  39. package/cjs/core/InputGroup/InputGroup.d.ts +1 -1
  40. package/cjs/core/InputGroup/InputGroup.js +4 -6
  41. package/cjs/core/LabeledInput/LabeledInput.js +4 -6
  42. package/cjs/core/LabeledSelect/LabeledSelect.js +4 -6
  43. package/cjs/core/LabeledTextarea/LabeledTextarea.js +4 -6
  44. package/cjs/core/Menu/Menu.d.ts +11 -1
  45. package/cjs/core/Menu/Menu.js +11 -11
  46. package/cjs/core/Menu/MenuDivider.js +2 -2
  47. package/cjs/core/Menu/MenuItem.d.ts +2 -2
  48. package/cjs/core/Menu/MenuItem.js +5 -7
  49. package/cjs/core/Modal/Modal.d.ts +1 -1
  50. package/cjs/core/Modal/Modal.js +5 -7
  51. package/cjs/core/Modal/ModalButtonBar.js +2 -2
  52. package/cjs/core/ProgressIndicators/ProgressLinear/ProgressLinear.d.ts +1 -1
  53. package/cjs/core/ProgressIndicators/ProgressLinear/ProgressLinear.js +2 -2
  54. package/cjs/core/ProgressIndicators/ProgressRadial/ProgressRadial.d.ts +1 -1
  55. package/cjs/core/ProgressIndicators/ProgressRadial/ProgressRadial.js +2 -2
  56. package/cjs/core/Radio/Radio.js +3 -4
  57. package/cjs/core/RadioTiles/RadioTile.js +3 -4
  58. package/cjs/core/RadioTiles/RadioTileGroup.js +2 -2
  59. package/cjs/core/Select/Select.d.ts +1 -2
  60. package/cjs/core/Select/Select.js +4 -4
  61. package/cjs/core/SideNavigation/SideNavigation.d.ts +1 -1
  62. package/cjs/core/SideNavigation/SideNavigation.js +2 -2
  63. package/cjs/core/SideNavigation/SidenavButton.js +2 -2
  64. package/cjs/core/Slider/Slider.d.ts +1 -1
  65. package/cjs/core/Slider/Slider.js +7 -9
  66. package/cjs/core/Table/Table.d.ts +1 -1
  67. package/cjs/core/Table/Table.js +4 -4
  68. package/cjs/core/Table/TableRowMemoized.js +3 -4
  69. package/cjs/core/Table/filters/BaseFilter.d.ts +1 -1
  70. package/cjs/core/Table/filters/BaseFilter.js +2 -2
  71. package/cjs/core/Table/filters/DateRangeFilter/DatePickerInput.js +2 -2
  72. package/cjs/core/Table/filters/DateRangeFilter/DateRangeFilter.js +2 -2
  73. package/cjs/core/Table/filters/FilterButtonBar.d.ts +1 -1
  74. package/cjs/core/Table/filters/FilterButtonBar.js +2 -2
  75. package/cjs/core/Table/filters/FilterToggle.d.ts +1 -1
  76. package/cjs/core/Table/filters/FilterToggle.js +4 -6
  77. package/cjs/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +2 -2
  78. package/cjs/core/Table/filters/TextFilter/TextFilter.js +2 -2
  79. package/cjs/core/Tabs/Tab.js +2 -2
  80. package/cjs/core/Tabs/Tabs.js +6 -9
  81. package/cjs/core/Tag/Tag.d.ts +1 -1
  82. package/cjs/core/Tag/Tag.js +2 -2
  83. package/cjs/core/Tag/TagContainer.d.ts +1 -1
  84. package/cjs/core/Tag/TagContainer.js +2 -2
  85. package/cjs/core/Textarea/Textarea.js +3 -4
  86. package/cjs/core/ThemeProvider/ThemeProvider.d.ts +1 -1
  87. package/cjs/core/ThemeProvider/ThemeProvider.js +2 -2
  88. package/cjs/core/Tile/Tile.d.ts +2 -2
  89. package/cjs/core/Tile/Tile.js +4 -4
  90. package/cjs/core/TimePicker/TimePicker.d.ts +1 -1
  91. package/cjs/core/TimePicker/TimePicker.js +2 -2
  92. package/cjs/core/Toast/Toast.d.ts +1 -1
  93. package/cjs/core/Toast/Toast.js +5 -6
  94. package/cjs/core/Toast/Toaster.js +2 -2
  95. package/cjs/core/ToggleSwitch/ToggleSwitch.d.ts +1 -1
  96. package/cjs/core/ToggleSwitch/ToggleSwitch.js +3 -4
  97. package/cjs/core/Tooltip/Tooltip.d.ts +1 -2
  98. package/cjs/core/Tooltip/Tooltip.js +3 -4
  99. package/cjs/core/Typography/Blockquote/Blockquote.js +2 -2
  100. package/cjs/core/Typography/Body/Body.js +2 -2
  101. package/cjs/core/Typography/Code/Code.d.ts +1 -1
  102. package/cjs/core/Typography/Code/Code.js +2 -2
  103. package/cjs/core/Typography/Headline/Headline.js +2 -2
  104. package/cjs/core/Typography/Kbd/Kbd.d.ts +1 -1
  105. package/cjs/core/Typography/Kbd/Kbd.js +2 -2
  106. package/cjs/core/Typography/Leading/Leading.js +2 -2
  107. package/cjs/core/Typography/Small/Small.js +2 -2
  108. package/cjs/core/Typography/Subheading/Subheading.js +2 -2
  109. package/cjs/core/Typography/Text/Text.d.ts +1 -1
  110. package/cjs/core/Typography/Text/Text.js +2 -2
  111. package/cjs/core/Typography/Title/Title.js +2 -2
  112. package/cjs/core/UserIcon/UserIcon.d.ts +1 -1
  113. package/cjs/core/UserIcon/UserIcon.js +2 -2
  114. package/cjs/core/UserIconGroup/UserIconGroup.d.ts +1 -1
  115. package/cjs/core/UserIconGroup/UserIconGroup.js +2 -2
  116. package/cjs/core/Wizard/Step.d.ts +1 -1
  117. package/cjs/core/Wizard/Wizard.js +2 -2
  118. package/cjs/core/index.d.ts +4 -3
  119. package/cjs/core/index.js +7 -6
  120. package/cjs/core/utils/{FocusTrap.d.ts → components/FocusTrap.d.ts} +0 -0
  121. package/cjs/core/utils/{FocusTrap.js → components/FocusTrap.js} +3 -3
  122. package/cjs/core/utils/{InputContainer.d.ts → components/InputContainer.d.ts} +0 -0
  123. package/cjs/core/utils/{InputContainer.js → components/InputContainer.js} +25 -3
  124. package/cjs/core/utils/{Popover.d.ts → components/Popover.d.ts} +1 -1
  125. package/cjs/core/utils/{Popover.js → components/Popover.js} +1 -1
  126. package/cjs/core/utils/components/icons.d.ts +8 -0
  127. package/cjs/core/utils/components/icons.js +32 -0
  128. package/cjs/core/utils/components/index.d.ts +4 -0
  129. package/cjs/core/utils/components/index.js +20 -0
  130. package/cjs/core/utils/functions/colors.d.ts +20 -0
  131. package/cjs/core/utils/functions/colors.js +52 -0
  132. package/cjs/core/utils/functions/dom.d.ts +18 -0
  133. package/cjs/core/utils/functions/dom.js +42 -0
  134. package/cjs/core/utils/functions/focusable.d.ts +8 -0
  135. package/cjs/core/utils/functions/focusable.js +34 -0
  136. package/cjs/core/utils/functions/index.d.ts +4 -0
  137. package/cjs/core/utils/functions/index.js +20 -0
  138. package/cjs/core/utils/functions/numbers.d.ts +8 -0
  139. package/cjs/core/utils/functions/numbers.js +27 -0
  140. package/cjs/core/utils/hooks/index.d.ts +6 -0
  141. package/cjs/core/utils/hooks/index.js +22 -0
  142. package/cjs/core/utils/hooks/useIntersection.js +2 -2
  143. package/cjs/core/utils/hooks/useResizeObserver.js +2 -2
  144. package/cjs/core/utils/hooks/useTheme.js +3 -3
  145. package/cjs/core/utils/index.d.ts +4 -0
  146. package/cjs/core/utils/index.js +20 -0
  147. package/esm/core/Alert/Alert.d.ts +1 -1
  148. package/esm/core/Alert/Alert.js +1 -2
  149. package/esm/core/Badge/Badge.d.ts +1 -2
  150. package/esm/core/Badge/Badge.js +1 -2
  151. package/esm/core/Breadcrumbs/Breadcrumbs.d.ts +1 -1
  152. package/esm/core/Breadcrumbs/Breadcrumbs.js +1 -3
  153. package/esm/core/ButtonGroup/ButtonGroup.d.ts +1 -1
  154. package/esm/core/ButtonGroup/ButtonGroup.js +1 -2
  155. package/esm/core/Buttons/Button/Button.js +1 -1
  156. package/esm/core/Buttons/DropdownButton/DropdownButton.js +1 -2
  157. package/esm/core/Buttons/IconButton/IconButton.js +1 -1
  158. package/esm/core/Buttons/IdeasButton/IdeasButton.js +1 -1
  159. package/esm/core/Buttons/SplitButton/SplitButton.js +1 -1
  160. package/esm/core/Checkbox/Checkbox.js +1 -2
  161. package/esm/core/ComboBox/ComboBox.d.ts +51 -0
  162. package/esm/core/ComboBox/ComboBox.js +261 -0
  163. package/esm/core/ComboBox/index.d.ts +4 -0
  164. package/esm/core/ComboBox/index.js +6 -0
  165. package/esm/core/DatePicker/DatePicker.js +1 -1
  166. package/esm/core/DropdownMenu/DropdownMenu.d.ts +1 -2
  167. package/esm/core/DropdownMenu/DropdownMenu.js +1 -3
  168. package/esm/core/ErrorPage/ErrorPage.js +1 -1
  169. package/esm/core/ExpandableBlock/ExpandableBlock.d.ts +1 -1
  170. package/esm/core/ExpandableBlock/ExpandableBlock.js +1 -2
  171. package/esm/core/Fieldset/Fieldset.js +1 -1
  172. package/esm/core/FileUpload/FileUpload.d.ts +2 -2
  173. package/esm/core/FileUpload/FileUpload.js +1 -2
  174. package/esm/core/FileUpload/FileUploadTemplate.js +1 -1
  175. package/esm/core/Footer/Footer.d.ts +1 -1
  176. package/esm/core/Footer/Footer.js +1 -1
  177. package/esm/core/Header/Header.d.ts +1 -1
  178. package/esm/core/Header/Header.js +1 -1
  179. package/esm/core/Header/HeaderBreadcrumbs.js +1 -1
  180. package/esm/core/Header/HeaderButton.js +1 -1
  181. package/esm/core/Header/HeaderLogo.d.ts +1 -1
  182. package/esm/core/Header/HeaderLogo.js +1 -1
  183. package/esm/core/Input/Input.js +1 -2
  184. package/esm/core/InputGroup/InputGroup.d.ts +1 -1
  185. package/esm/core/InputGroup/InputGroup.js +1 -3
  186. package/esm/core/LabeledInput/LabeledInput.js +1 -3
  187. package/esm/core/LabeledSelect/LabeledSelect.js +1 -3
  188. package/esm/core/LabeledTextarea/LabeledTextarea.js +1 -3
  189. package/esm/core/Menu/Menu.d.ts +11 -1
  190. package/esm/core/Menu/Menu.js +7 -7
  191. package/esm/core/Menu/MenuDivider.js +1 -1
  192. package/esm/core/Menu/MenuItem.d.ts +2 -2
  193. package/esm/core/Menu/MenuItem.js +2 -4
  194. package/esm/core/Modal/Modal.d.ts +1 -1
  195. package/esm/core/Modal/Modal.js +1 -3
  196. package/esm/core/Modal/ModalButtonBar.js +1 -1
  197. package/esm/core/ProgressIndicators/ProgressLinear/ProgressLinear.d.ts +1 -1
  198. package/esm/core/ProgressIndicators/ProgressLinear/ProgressLinear.js +1 -1
  199. package/esm/core/ProgressIndicators/ProgressRadial/ProgressRadial.d.ts +1 -1
  200. package/esm/core/ProgressIndicators/ProgressRadial/ProgressRadial.js +1 -1
  201. package/esm/core/Radio/Radio.js +1 -2
  202. package/esm/core/RadioTiles/RadioTile.js +1 -2
  203. package/esm/core/RadioTiles/RadioTileGroup.js +1 -1
  204. package/esm/core/Select/Select.d.ts +1 -2
  205. package/esm/core/Select/Select.js +2 -2
  206. package/esm/core/SideNavigation/SideNavigation.d.ts +1 -1
  207. package/esm/core/SideNavigation/SideNavigation.js +1 -1
  208. package/esm/core/SideNavigation/SidenavButton.js +1 -1
  209. package/esm/core/Slider/Slider.d.ts +1 -1
  210. package/esm/core/Slider/Slider.js +1 -3
  211. package/esm/core/Table/Table.d.ts +1 -1
  212. package/esm/core/Table/Table.js +1 -1
  213. package/esm/core/Table/TableRowMemoized.js +1 -2
  214. package/esm/core/Table/filters/BaseFilter.d.ts +1 -1
  215. package/esm/core/Table/filters/BaseFilter.js +1 -1
  216. package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.js +1 -1
  217. package/esm/core/Table/filters/DateRangeFilter/DateRangeFilter.js +1 -1
  218. package/esm/core/Table/filters/FilterButtonBar.d.ts +1 -1
  219. package/esm/core/Table/filters/FilterButtonBar.js +1 -1
  220. package/esm/core/Table/filters/FilterToggle.d.ts +1 -1
  221. package/esm/core/Table/filters/FilterToggle.js +1 -3
  222. package/esm/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +1 -1
  223. package/esm/core/Table/filters/TextFilter/TextFilter.js +1 -1
  224. package/esm/core/Tabs/Tab.js +1 -1
  225. package/esm/core/Tabs/Tabs.js +1 -4
  226. package/esm/core/Tag/Tag.d.ts +1 -1
  227. package/esm/core/Tag/Tag.js +1 -1
  228. package/esm/core/Tag/TagContainer.d.ts +1 -1
  229. package/esm/core/Tag/TagContainer.js +1 -1
  230. package/esm/core/Textarea/Textarea.js +1 -2
  231. package/esm/core/ThemeProvider/ThemeProvider.d.ts +1 -1
  232. package/esm/core/ThemeProvider/ThemeProvider.js +1 -1
  233. package/esm/core/Tile/Tile.d.ts +2 -2
  234. package/esm/core/Tile/Tile.js +3 -3
  235. package/esm/core/TimePicker/TimePicker.d.ts +1 -1
  236. package/esm/core/TimePicker/TimePicker.js +1 -1
  237. package/esm/core/Toast/Toast.d.ts +1 -1
  238. package/esm/core/Toast/Toast.js +1 -2
  239. package/esm/core/Toast/Toaster.js +1 -1
  240. package/esm/core/ToggleSwitch/ToggleSwitch.d.ts +1 -1
  241. package/esm/core/ToggleSwitch/ToggleSwitch.js +1 -2
  242. package/esm/core/Tooltip/Tooltip.d.ts +1 -2
  243. package/esm/core/Tooltip/Tooltip.js +1 -2
  244. package/esm/core/Typography/Blockquote/Blockquote.js +1 -1
  245. package/esm/core/Typography/Body/Body.js +1 -1
  246. package/esm/core/Typography/Code/Code.d.ts +1 -1
  247. package/esm/core/Typography/Code/Code.js +1 -1
  248. package/esm/core/Typography/Headline/Headline.js +1 -1
  249. package/esm/core/Typography/Kbd/Kbd.d.ts +1 -1
  250. package/esm/core/Typography/Kbd/Kbd.js +1 -1
  251. package/esm/core/Typography/Leading/Leading.js +1 -1
  252. package/esm/core/Typography/Small/Small.js +1 -1
  253. package/esm/core/Typography/Subheading/Subheading.js +1 -1
  254. package/esm/core/Typography/Text/Text.d.ts +1 -1
  255. package/esm/core/Typography/Text/Text.js +1 -1
  256. package/esm/core/Typography/Title/Title.js +1 -1
  257. package/esm/core/UserIcon/UserIcon.d.ts +1 -1
  258. package/esm/core/UserIcon/UserIcon.js +1 -1
  259. package/esm/core/UserIconGroup/UserIconGroup.d.ts +1 -1
  260. package/esm/core/UserIconGroup/UserIconGroup.js +1 -1
  261. package/esm/core/Wizard/Step.d.ts +1 -1
  262. package/esm/core/Wizard/Wizard.js +1 -1
  263. package/esm/core/index.d.ts +4 -3
  264. package/esm/core/index.js +2 -2
  265. package/esm/core/utils/{FocusTrap.d.ts → components/FocusTrap.d.ts} +0 -0
  266. package/esm/core/utils/{FocusTrap.js → components/FocusTrap.js} +2 -2
  267. package/esm/core/utils/{InputContainer.d.ts → components/InputContainer.d.ts} +0 -0
  268. package/esm/core/utils/{InputContainer.js → components/InputContainer.js} +25 -3
  269. package/esm/core/utils/{Popover.d.ts → components/Popover.d.ts} +1 -1
  270. package/esm/core/utils/{Popover.js → components/Popover.js} +1 -1
  271. package/esm/core/utils/components/icons.d.ts +8 -0
  272. package/esm/core/utils/components/icons.js +26 -0
  273. package/esm/core/utils/components/index.d.ts +4 -0
  274. package/esm/core/utils/components/index.js +8 -0
  275. package/esm/core/utils/functions/colors.d.ts +20 -0
  276. package/esm/core/utils/functions/colors.js +47 -0
  277. package/esm/core/utils/functions/dom.d.ts +18 -0
  278. package/esm/core/utils/functions/dom.js +36 -0
  279. package/esm/core/utils/functions/focusable.d.ts +8 -0
  280. package/esm/core/utils/functions/focusable.js +29 -0
  281. package/esm/core/utils/functions/index.d.ts +4 -0
  282. package/esm/core/utils/functions/index.js +8 -0
  283. package/esm/core/utils/functions/numbers.d.ts +8 -0
  284. package/esm/core/utils/functions/numbers.js +22 -0
  285. package/esm/core/utils/hooks/index.d.ts +6 -0
  286. package/esm/core/utils/hooks/index.js +10 -0
  287. package/esm/core/utils/hooks/useIntersection.js +1 -1
  288. package/esm/core/utils/hooks/useResizeObserver.js +1 -1
  289. package/esm/core/utils/hooks/useTheme.js +1 -1
  290. package/esm/core/utils/index.d.ts +4 -0
  291. package/esm/core/utils/index.js +8 -0
  292. package/package.json +5 -3
  293. package/cjs/core/utils/common.d.ts +0 -58
  294. package/cjs/core/utils/common.js +0 -146
  295. package/esm/core/utils/common.d.ts +0 -58
  296. package/esm/core/utils/common.js +0 -132
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
- import { CommonProps } from '../utils/props';
3
- import { PopoverProps } from '../utils/Popover';
2
+ import { CommonProps, PopoverProps } from '../utils';
4
3
  export declare type DropdownMenuProps = {
5
4
  /**
6
5
  * List of menu items. Recommended to use MenuItem component.
@@ -31,10 +31,8 @@ exports.DropdownMenu = void 0;
31
31
  * See LICENSE.md in the project root for license terms and full copyright notice.
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var react_1 = __importDefault(require("react"));
34
- var useTheme_1 = require("../utils/hooks/useTheme");
34
+ var utils_1 = require("../utils");
35
35
  var Menu_1 = require("../Menu");
36
- var Popover_1 = require("../utils/Popover");
37
- var useMergedRefs_1 = require("../utils/hooks/useMergedRefs");
38
36
  /**
39
37
  * Dropdown menu component.
40
38
  * Uses the {@link Popover} component, which is a wrapper around [tippy.js](https://atomiks.github.io/tippyjs).
@@ -73,9 +71,9 @@ var DropdownMenu = function (props) {
73
71
  (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.focus();
74
72
  onHide === null || onHide === void 0 ? void 0 : onHide(instance);
75
73
  }, [onHide]);
76
- (0, useTheme_1.useTheme)();
77
- return (react_1.default.createElement(Popover_1.Popover, __assign({ content: react_1.default.createElement(Menu_1.Menu, { className: className, style: style, role: role, id: id }, react_1.default.useMemo(function () { return menuItems(close); }, [menuItems, close])), visible: trigger === undefined ? isVisible : undefined, onClickOutside: close, placement: placement, onShow: onShowHandler, onHide: onHideHandler, trigger: visible === undefined ? trigger : undefined }, rest), react_1.default.cloneElement(children, {
78
- ref: (0, useMergedRefs_1.mergeRefs)(targetRef, props.children.ref),
74
+ (0, utils_1.useTheme)();
75
+ return (react_1.default.createElement(utils_1.Popover, __assign({ content: react_1.default.createElement(Menu_1.Menu, { className: className, style: style, role: role, id: id }, react_1.default.useMemo(function () { return menuItems(close); }, [menuItems, close])), visible: trigger === undefined ? isVisible : undefined, onClickOutside: close, placement: placement, onShow: onShowHandler, onHide: onHideHandler, trigger: visible === undefined ? trigger : undefined }, rest), react_1.default.cloneElement(children, {
76
+ ref: (0, utils_1.mergeRefs)(targetRef, props.children.ref),
79
77
  onClick: function (args) {
80
78
  var _a, _b;
81
79
  trigger === undefined && (isVisible ? close() : open());
@@ -39,7 +39,7 @@ var _503_1 = __importDefault(require("@itwin/itwinui-illustrations-react/cjs/ill
39
39
  var Error_1 = __importDefault(require("@itwin/itwinui-illustrations-react/cjs/illustrations/Error"));
40
40
  var react_1 = __importDefault(require("react"));
41
41
  var Button_1 = require("../Buttons/Button");
42
- var useTheme_1 = require("../utils/hooks/useTheme");
42
+ var utils_1 = require("../utils");
43
43
  require("@itwin/itwinui-css/css/non-ideal-state.css");
44
44
  /**
45
45
  * A stylized display to communicate common http errors.
@@ -48,7 +48,7 @@ require("@itwin/itwinui-css/css/non-ideal-state.css");
48
48
  */
49
49
  var ErrorPage = function (props) {
50
50
  var errorType = props.errorType, errorName = props.errorName, errorMessage = props.errorMessage, primaryButtonHandle = props.primaryButtonHandle, primaryButtonLabel = props.primaryButtonLabel, secondaryButtonHandle = props.secondaryButtonHandle, secondaryButtonLabel = props.secondaryButtonLabel, translatedErrorMessages = props.translatedErrorMessages, rest = __rest(props, ["errorType", "errorName", "errorMessage", "primaryButtonHandle", "primaryButtonLabel", "secondaryButtonHandle", "secondaryButtonLabel", "translatedErrorMessages"]);
51
- (0, useTheme_1.useTheme)();
51
+ (0, utils_1.useTheme)();
52
52
  var defaultErrorMessages = __assign({ badGateway: 'Bad gateway', error: 'Error', forbidden: 'Forbidden', internalServerError: 'Internal server error', pageNotFound: 'Page not found', serviceUnavailable: 'Service unavailable', unauthorized: 'Unauthorized' }, translatedErrorMessages);
53
53
  function getErrorIcon() {
54
54
  switch (errorType) {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { CommonProps } from '../utils/props';
2
+ import { CommonProps } from '../utils';
3
3
  import '@itwin/itwinui-css/css/expandable-block.css';
4
4
  export declare type ExpandableBlockProps = {
5
5
  /**
@@ -34,9 +34,8 @@ var ChevronRight_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/ico
34
34
  var classnames_1 = __importDefault(require("classnames"));
35
35
  var react_1 = __importDefault(require("react"));
36
36
  var react_transition_group_1 = require("react-transition-group");
37
- var useTheme_1 = require("../utils/hooks/useTheme");
37
+ var utils_1 = require("../utils");
38
38
  require("@itwin/itwinui-css/css/expandable-block.css");
39
- var common_1 = require("../utils/common");
40
39
  /**
41
40
  * Container that allows content to be hidden behind a brief title and a caption.
42
41
  * @example
@@ -49,8 +48,8 @@ var common_1 = require("../utils/common");
49
48
  var ExpandableBlock = function (props) {
50
49
  var _a;
51
50
  var caption = props.caption, children = props.children, className = props.className, title = props.title, onToggle = props.onToggle, style = props.style, _b = props.isExpanded, isExpanded = _b === void 0 ? false : _b, endIcon = props.endIcon, status = props.status, rest = __rest(props, ["caption", "children", "className", "title", "onToggle", "style", "isExpanded", "endIcon", "status"]);
52
- (0, useTheme_1.useTheme)();
53
- var icon = endIcon !== null && endIcon !== void 0 ? endIcon : (status && common_1.StatusIconMap[status]());
51
+ (0, utils_1.useTheme)();
52
+ var icon = endIcon !== null && endIcon !== void 0 ? endIcon : (status && utils_1.StatusIconMap[status]());
54
53
  var _c = react_1.default.useState(isExpanded), expanded = _c[0], setExpanded = _c[1];
55
54
  react_1.default.useEffect(function () {
56
55
  setExpanded(isExpanded);
@@ -31,7 +31,7 @@ exports.Fieldset = void 0;
31
31
  * See LICENSE.md in the project root for license terms and full copyright notice.
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var react_1 = __importDefault(require("react"));
34
- var useTheme_1 = require("../utils/hooks/useTheme");
34
+ var utils_1 = require("../utils");
35
35
  var classnames_1 = __importDefault(require("classnames"));
36
36
  require("@itwin/itwinui-css/css/fieldset.css");
37
37
  /**
@@ -47,7 +47,7 @@ require("@itwin/itwinui-css/css/fieldset.css");
47
47
  */
48
48
  var Fieldset = function (props) {
49
49
  var children = props.children, className = props.className, disabled = props.disabled, legend = props.legend, rest = __rest(props, ["children", "className", "disabled", "legend"]);
50
- (0, useTheme_1.useTheme)();
50
+ (0, utils_1.useTheme)();
51
51
  return (react_1.default.createElement("fieldset", __assign({ className: (0, classnames_1.default)('iui-fieldset', className), disabled: disabled }, rest),
52
52
  legend && react_1.default.createElement("legend", null, legend),
53
53
  disabled
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { CommonProps } from '../utils/props';
2
+ import { CommonProps } from '../utils';
3
3
  import '@itwin/itwinui-css/css/file-upload.css';
4
4
  export declare type FileUploadProps = {
5
5
  /**
@@ -46,5 +46,5 @@ export declare const FileUpload: React.ForwardRefExoticComponent<{
46
46
  id?: string | undefined;
47
47
  } & {
48
48
  style?: React.CSSProperties | undefined;
49
- } & import("../utils/props").ClassNameProps & React.RefAttributes<HTMLDivElement>>;
49
+ } & import("../utils").ClassNameProps & React.RefAttributes<HTMLDivElement>>;
50
50
  export default FileUpload;
@@ -32,8 +32,7 @@ exports.FileUpload = void 0;
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var react_1 = __importDefault(require("react"));
34
34
  var classnames_1 = __importDefault(require("classnames"));
35
- var useTheme_1 = require("../utils/hooks/useTheme");
36
- var useMergedRefs_1 = require("../utils/hooks/useMergedRefs");
35
+ var utils_1 = require("../utils");
37
36
  require("@itwin/itwinui-css/css/file-upload.css");
38
37
  /**
39
38
  * File upload component to be wrapped around `FileUploadTemplate` or any arbitrary component.
@@ -44,10 +43,10 @@ require("@itwin/itwinui-css/css/file-upload.css");
44
43
  */
45
44
  exports.FileUpload = react_1.default.forwardRef(function (props, ref) {
46
45
  var dragContent = props.dragContent, children = props.children, onFileDropped = props.onFileDropped, className = props.className, rest = __rest(props, ["dragContent", "children", "onFileDropped", "className"]);
47
- (0, useTheme_1.useTheme)();
46
+ (0, utils_1.useTheme)();
48
47
  var _a = react_1.default.useState(false), isDragActive = _a[0], setIsDragActive = _a[1];
49
48
  var fileUploadRef = react_1.default.useRef(null);
50
- var refs = (0, useMergedRefs_1.useMergedRefs)(fileUploadRef, ref);
49
+ var refs = (0, utils_1.useMergedRefs)(fileUploadRef, ref);
51
50
  var onDragOverHandler = function (e) {
52
51
  e.preventDefault();
53
52
  e.stopPropagation();
@@ -9,7 +9,7 @@ exports.FileUploadTemplate = void 0;
9
9
  * See LICENSE.md in the project root for license terms and full copyright notice.
10
10
  *--------------------------------------------------------------------------------------------*/
11
11
  var react_1 = __importDefault(require("react"));
12
- var useTheme_1 = require("../utils/hooks/useTheme");
12
+ var utils_1 = require("../utils");
13
13
  require("@itwin/itwinui-css/css/file-upload.css");
14
14
  var Upload_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/Upload"));
15
15
  /**
@@ -20,7 +20,7 @@ var Upload_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/Upl
20
20
  */
21
21
  var FileUploadTemplate = function (props) {
22
22
  var onChange = props.onChange, _a = props.acceptMultiple, acceptMultiple = _a === void 0 ? true : _a, acceptType = props.acceptType, _b = props.label, label = _b === void 0 ? 'Choose a file' : _b, _c = props.subtitle, subtitle = _c === void 0 ? 'or drag & drop it here.' : _c, children = props.children;
23
- (0, useTheme_1.useTheme)();
23
+ (0, utils_1.useTheme)();
24
24
  return (react_1.default.createElement(react_1.default.Fragment, null,
25
25
  react_1.default.createElement(Upload_1.default, { className: 'iui-icon', "aria-hidden": true }),
26
26
  react_1.default.createElement("div", { className: 'iui-template-text' },
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
+ import { StylingProps } from '../utils';
2
3
  import '@itwin/itwinui-css/css/footer.css';
3
- import { StylingProps } from '../utils/props';
4
4
  export declare type TitleTranslations = {
5
5
  termsOfService: string;
6
6
  privacy: string;
@@ -41,7 +41,7 @@ exports.Footer = void 0;
41
41
  *--------------------------------------------------------------------------------------------*/
42
42
  var react_1 = __importDefault(require("react"));
43
43
  var classnames_1 = __importDefault(require("classnames"));
44
- var useTheme_1 = require("../utils/hooks/useTheme");
44
+ var utils_1 = require("../utils");
45
45
  require("@itwin/itwinui-css/css/footer.css");
46
46
  var footerTranslations = {
47
47
  cookies: 'Cookies',
@@ -59,7 +59,7 @@ var footerTranslations = {
59
59
  */
60
60
  var Footer = function (props) {
61
61
  var customElements = props.customElements, translatedTitles = props.translatedTitles, className = props.className, rest = __rest(props, ["customElements", "translatedTitles", "className"]);
62
- (0, useTheme_1.useTheme)();
62
+ (0, utils_1.useTheme)();
63
63
  var today = new Date();
64
64
  var titles = __assign(__assign({}, footerTranslations), translatedTitles);
65
65
  var defaultElements = [
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
+ import { CommonProps } from '../utils';
2
3
  import '@itwin/itwinui-css/css/header.css';
3
- import { CommonProps } from '../utils/props';
4
4
  export declare type HeaderTranslations = {
5
5
  /**
6
6
  * 'More' menu button aria-label.
@@ -34,7 +34,7 @@ var MoreVertical_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/ico
34
34
  var classnames_1 = __importDefault(require("classnames"));
35
35
  var react_1 = __importDefault(require("react"));
36
36
  var Buttons_1 = require("../Buttons");
37
- var useTheme_1 = require("../utils/hooks/useTheme");
37
+ var utils_1 = require("../utils");
38
38
  require("@itwin/itwinui-css/css/header.css");
39
39
  var DropdownMenu_1 = require("../DropdownMenu");
40
40
  var defaultTranslations = {
@@ -71,7 +71,7 @@ var defaultTranslations = {
71
71
  */
72
72
  var Header = function (props) {
73
73
  var appLogo = props.appLogo, breadcrumbs = props.breadcrumbs, _a = props.isSlim, isSlim = _a === void 0 ? false : _a, actions = props.actions, userIcon = props.userIcon, menuItems = props.menuItems, translatedStrings = props.translatedStrings, className = props.className, children = props.children, rest = __rest(props, ["appLogo", "breadcrumbs", "isSlim", "actions", "userIcon", "menuItems", "translatedStrings", "className", "children"]);
74
- (0, useTheme_1.useTheme)();
74
+ (0, utils_1.useTheme)();
75
75
  var headerTranslations = __assign(__assign({}, defaultTranslations), translatedStrings);
76
76
  return (react_1.default.createElement("header", __assign({ className: (0, classnames_1.default)('iui-page-header', { 'iui-slim': isSlim }, className) }, rest),
77
77
  react_1.default.createElement("div", { className: 'iui-left' },
@@ -41,7 +41,7 @@ exports.HeaderBreadcrumbs = void 0;
41
41
  *--------------------------------------------------------------------------------------------*/
42
42
  var ChevronRight_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/ChevronRight"));
43
43
  var react_1 = __importDefault(require("react"));
44
- var useTheme_1 = require("../utils/hooks/useTheme");
44
+ var utils_1 = require("../utils");
45
45
  require("@itwin/itwinui-css/css/header.css");
46
46
  /**
47
47
  * Header breadcrumbs, adds chevron between each provided items.
@@ -55,7 +55,7 @@ require("@itwin/itwinui-css/css/header.css");
55
55
  */
56
56
  var HeaderBreadcrumbs = function (props) {
57
57
  var items = props.items, rest = __rest(props, ["items"]);
58
- (0, useTheme_1.useTheme)();
58
+ (0, utils_1.useTheme)();
59
59
  return (react_1.default.createElement("nav", __assign({ "aria-label": 'breadcrumbs' }, rest), items.reduce(function (previous, current, index) { return __spreadArray(__spreadArray([], previous, true), [
60
60
  current,
61
61
  index !== items.length - 1 && (react_1.default.createElement(ChevronRight_1.default, { key: "chevron" + index, "aria-hidden": true, className: 'iui-chevron' })),
@@ -33,7 +33,7 @@ exports.HeaderButton = void 0;
33
33
  var classnames_1 = __importDefault(require("classnames"));
34
34
  var react_1 = __importDefault(require("react"));
35
35
  var Buttons_1 = require("../Buttons");
36
- var useTheme_1 = require("../utils/hooks/useTheme");
36
+ var utils_1 = require("../utils");
37
37
  require("@itwin/itwinui-css/css/header.css");
38
38
  var isSplitButton = function (props) {
39
39
  return !!props.menuItems && !!props.onClick;
@@ -53,7 +53,7 @@ var isDropdownButton = function (props) {
53
53
  */
54
54
  var HeaderButton = function (props) {
55
55
  var name = props.name, description = props.description, _a = props.isActive, isActive = _a === void 0 ? false : _a, className = props.className, startIcon = props.startIcon, menuItems = props.menuItems, rest = __rest(props, ["name", "description", "isActive", "className", "startIcon", "menuItems"]);
56
- (0, useTheme_1.useTheme)();
56
+ (0, utils_1.useTheme)();
57
57
  var buttonProps = __assign(__assign({ startIcon: react_1.default.isValidElement(startIcon)
58
58
  ? react_1.default.cloneElement(startIcon, {
59
59
  className: (0, classnames_1.default)('iui-header-button-icon', startIcon.props.className),
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
+ import { CommonProps } from '../utils';
2
3
  import '@itwin/itwinui-css/css/header.css';
3
- import { CommonProps } from '../utils/props';
4
4
  export declare type HeaderLogoProps = {
5
5
  /**
6
6
  * Logo shown before the main content.
@@ -32,7 +32,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
32
32
  exports.HeaderLogo = void 0;
33
33
  var classnames_1 = __importDefault(require("classnames"));
34
34
  var react_1 = __importDefault(require("react"));
35
- var useTheme_1 = require("../utils/hooks/useTheme");
35
+ var utils_1 = require("../utils");
36
36
  require("@itwin/itwinui-css/css/header.css");
37
37
  /**
38
38
  * Header Title section
@@ -51,7 +51,7 @@ var HeaderLogo = function (props) {
51
51
  onClick();
52
52
  }
53
53
  };
54
- (0, useTheme_1.useTheme)();
54
+ (0, utils_1.useTheme)();
55
55
  return (react_1.default.createElement("div", __assign({ className: (0, classnames_1.default)('iui-header-logo', className), role: onClick && 'button', tabIndex: onClick && 0, onKeyDown: keyDownHandler, onClick: onClick }, rest),
56
56
  react_1.default.isValidElement(logo)
57
57
  ? react_1.default.cloneElement(logo, {
@@ -32,8 +32,7 @@ exports.Input = void 0;
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var classnames_1 = __importDefault(require("classnames"));
34
34
  var react_1 = __importDefault(require("react"));
35
- var useMergedRefs_1 = require("../utils/hooks/useMergedRefs");
36
- var useTheme_1 = require("../utils/hooks/useTheme");
35
+ var utils_1 = require("../utils");
37
36
  require("@itwin/itwinui-css/css/inputs.css");
38
37
  /**
39
38
  * Basic input component
@@ -45,9 +44,9 @@ require("@itwin/itwinui-css/css/inputs.css");
45
44
  exports.Input = react_1.default.forwardRef(function (props, ref) {
46
45
  var _a;
47
46
  var _b = props.setFocus, setFocus = _b === void 0 ? false : _b, size = props.size, className = props.className, rest = __rest(props, ["setFocus", "size", "className"]);
48
- (0, useTheme_1.useTheme)();
47
+ (0, utils_1.useTheme)();
49
48
  var inputRef = react_1.default.useRef(null);
50
- var refs = (0, useMergedRefs_1.useMergedRefs)(inputRef, ref);
49
+ var refs = (0, utils_1.useMergedRefs)(inputRef, ref);
51
50
  react_1.default.useEffect(function () {
52
51
  if (inputRef.current && setFocus) {
53
52
  inputRef.current.focus();
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { CommonProps } from '../utils/props';
2
+ import { CommonProps } from '../utils';
3
3
  import '@itwin/itwinui-css/css/inputs.css';
4
4
  export declare type InputGroupProps = {
5
5
  /**
@@ -31,9 +31,7 @@ exports.InputGroup = void 0;
31
31
  * See LICENSE.md in the project root for license terms and full copyright notice.
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var react_1 = __importDefault(require("react"));
34
- var common_1 = require("../utils/common");
35
- var useTheme_1 = require("../utils/hooks/useTheme");
36
- var InputContainer_1 = require("../utils/InputContainer");
34
+ var utils_1 = require("../utils");
37
35
  require("@itwin/itwinui-css/css/inputs.css");
38
36
  /**
39
37
  * Group Checkbox/Radio components together
@@ -52,9 +50,9 @@ require("@itwin/itwinui-css/css/inputs.css");
52
50
  */
53
51
  var InputGroup = function (props) {
54
52
  var children = props.children, _a = props.disabled, disabled = _a === void 0 ? false : _a, _b = props.displayStyle, displayStyle = _b === void 0 ? 'default' : _b, label = props.label, message = props.message, status = props.status, svgIcon = props.svgIcon, className = props.className, style = props.style, _c = props.required, required = _c === void 0 ? false : _c, rest = __rest(props, ["children", "disabled", "displayStyle", "label", "message", "status", "svgIcon", "className", "style", "required"]);
55
- (0, useTheme_1.useTheme)();
56
- var icon = svgIcon !== null && svgIcon !== void 0 ? svgIcon : (status && common_1.StatusIconMap[status]());
57
- return (react_1.default.createElement(InputContainer_1.InputContainer, __assign({ label: label, disabled: disabled, required: required, status: status, message: message, icon: icon ? react_1.default.cloneElement(icon, { 'aria-hidden': true }) : undefined, isLabelInline: displayStyle === 'inline', className: className, style: style }, rest),
53
+ (0, utils_1.useTheme)();
54
+ var icon = svgIcon !== null && svgIcon !== void 0 ? svgIcon : (status && utils_1.StatusIconMap[status]());
55
+ return (react_1.default.createElement(utils_1.InputContainer, __assign({ label: label, disabled: disabled, required: required, status: status, message: message, icon: icon ? react_1.default.cloneElement(icon, { 'aria-hidden': true }) : undefined, isLabelInline: displayStyle === 'inline', className: className, style: style }, rest),
58
56
  react_1.default.createElement("div", { className: 'iui-input-group' }, children)));
59
57
  };
60
58
  exports.InputGroup = InputGroup;
@@ -32,9 +32,7 @@ exports.LabeledInput = void 0;
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var react_1 = __importDefault(require("react"));
34
34
  var Input_1 = require("../Input/Input");
35
- var common_1 = require("../utils/common");
36
- var useTheme_1 = require("../utils/hooks/useTheme");
37
- var InputContainer_1 = require("../utils/InputContainer");
35
+ var utils_1 = require("../utils");
38
36
  require("@itwin/itwinui-css/css/inputs.css");
39
37
  /**
40
38
  * Basic labeled input component
@@ -46,9 +44,9 @@ require("@itwin/itwinui-css/css/inputs.css");
46
44
  */
47
45
  exports.LabeledInput = react_1.default.forwardRef(function (props, ref) {
48
46
  var className = props.className, _a = props.disabled, disabled = _a === void 0 ? false : _a, label = props.label, message = props.message, status = props.status, svgIcon = props.svgIcon, style = props.style, inputClassName = props.inputClassName, inputStyle = props.inputStyle, _b = props.displayStyle, displayStyle = _b === void 0 ? 'default' : _b, _c = props.iconDisplayStyle, iconDisplayStyle = _c === void 0 ? displayStyle === 'default' ? 'block' : 'inline' : _c, _d = props.required, required = _d === void 0 ? false : _d, rest = __rest(props, ["className", "disabled", "label", "message", "status", "svgIcon", "style", "inputClassName", "inputStyle", "displayStyle", "iconDisplayStyle", "required"]);
49
- (0, useTheme_1.useTheme)();
50
- var icon = svgIcon !== null && svgIcon !== void 0 ? svgIcon : (status && common_1.StatusIconMap[status]());
51
- return (react_1.default.createElement(InputContainer_1.InputContainer, { as: 'label', label: label, disabled: disabled, required: required, status: status, message: message, icon: icon, isLabelInline: displayStyle === 'inline', isIconInline: iconDisplayStyle === 'inline', className: className, style: style },
47
+ (0, utils_1.useTheme)();
48
+ var icon = svgIcon !== null && svgIcon !== void 0 ? svgIcon : (status && utils_1.StatusIconMap[status]());
49
+ return (react_1.default.createElement(utils_1.InputContainer, { as: 'label', label: label, disabled: disabled, required: required, status: status, message: message, icon: icon, isLabelInline: displayStyle === 'inline', isIconInline: iconDisplayStyle === 'inline', className: className, style: style },
52
50
  react_1.default.createElement(Input_1.Input, __assign({ disabled: disabled, className: inputClassName, style: inputStyle, required: required, ref: ref }, rest))));
53
51
  });
54
52
  exports.default = exports.LabeledInput;
@@ -32,9 +32,7 @@ exports.LabeledSelect = void 0;
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var react_1 = __importDefault(require("react"));
34
34
  var Select_1 = require("../Select");
35
- var common_1 = require("../utils/common");
36
- var useTheme_1 = require("../utils/hooks/useTheme");
37
- var InputContainer_1 = require("../utils/InputContainer");
35
+ var utils_1 = require("../utils");
38
36
  require("@itwin/itwinui-css/css/inputs.css");
39
37
  /**
40
38
  * Labeled select component to select value from options.
@@ -71,9 +69,9 @@ require("@itwin/itwinui-css/css/inputs.css");
71
69
  */
72
70
  var LabeledSelect = function (props) {
73
71
  var className = props.className, _a = props.disabled, disabled = _a === void 0 ? false : _a, label = props.label, message = props.message, status = props.status, svgIcon = props.svgIcon, _b = props.displayStyle, displayStyle = _b === void 0 ? 'default' : _b, style = props.style, selectClassName = props.selectClassName, selectStyle = props.selectStyle, _c = props.required, required = _c === void 0 ? false : _c, rest = __rest(props, ["className", "disabled", "label", "message", "status", "svgIcon", "displayStyle", "style", "selectClassName", "selectStyle", "required"]);
74
- (0, useTheme_1.useTheme)();
75
- var icon = svgIcon !== null && svgIcon !== void 0 ? svgIcon : (status && common_1.StatusIconMap[status]());
76
- return (react_1.default.createElement(InputContainer_1.InputContainer, { label: label, disabled: disabled, required: required, status: status, message: message, icon: displayStyle === 'default' && icon
72
+ (0, utils_1.useTheme)();
73
+ var icon = svgIcon !== null && svgIcon !== void 0 ? svgIcon : (status && utils_1.StatusIconMap[status]());
74
+ return (react_1.default.createElement(utils_1.InputContainer, { label: label, disabled: disabled, required: required, status: status, message: message, icon: displayStyle === 'default' && icon
77
75
  ? react_1.default.cloneElement(icon, { 'aria-hidden': true })
78
76
  : undefined, isLabelInline: displayStyle === 'inline', className: className, style: style },
79
77
  react_1.default.createElement(Select_1.Select, __assign({ disabled: disabled, className: selectClassName, style: selectStyle }, rest))));
@@ -31,10 +31,8 @@ exports.LabeledTextarea = void 0;
31
31
  * See LICENSE.md in the project root for license terms and full copyright notice.
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var react_1 = __importDefault(require("react"));
34
- var common_1 = require("../utils/common");
34
+ var utils_1 = require("../utils");
35
35
  var Textarea_1 = require("../Textarea");
36
- var useTheme_1 = require("../utils/hooks/useTheme");
37
- var InputContainer_1 = require("../utils/InputContainer");
38
36
  require("@itwin/itwinui-css/css/inputs.css");
39
37
  /**
40
38
  * Textarea wrapper that allows for additional styling and labelling
@@ -59,9 +57,9 @@ require("@itwin/itwinui-css/css/inputs.css");
59
57
  */
60
58
  exports.LabeledTextarea = react_1.default.forwardRef(function (props, ref) {
61
59
  var className = props.className, style = props.style, _a = props.disabled, disabled = _a === void 0 ? false : _a, label = props.label, message = props.message, status = props.status, textareaClassName = props.textareaClassName, textareaStyle = props.textareaStyle, _b = props.displayStyle, displayStyle = _b === void 0 ? 'default' : _b, _c = props.iconDisplayStyle, iconDisplayStyle = _c === void 0 ? displayStyle === 'default' ? 'block' : 'inline' : _c, svgIcon = props.svgIcon, _d = props.required, required = _d === void 0 ? false : _d, textareaProps = __rest(props, ["className", "style", "disabled", "label", "message", "status", "textareaClassName", "textareaStyle", "displayStyle", "iconDisplayStyle", "svgIcon", "required"]);
62
- (0, useTheme_1.useTheme)();
63
- var icon = svgIcon !== null && svgIcon !== void 0 ? svgIcon : (status && common_1.StatusIconMap[status]());
64
- return (react_1.default.createElement(InputContainer_1.InputContainer, { as: 'label', label: label, disabled: disabled, required: required, status: status, message: message, icon: icon, isLabelInline: displayStyle === 'inline', isIconInline: iconDisplayStyle === 'inline', className: className, style: style },
60
+ (0, utils_1.useTheme)();
61
+ var icon = svgIcon !== null && svgIcon !== void 0 ? svgIcon : (status && utils_1.StatusIconMap[status]());
62
+ return (react_1.default.createElement(utils_1.InputContainer, { as: 'label', label: label, disabled: disabled, required: required, status: status, message: message, icon: icon, isLabelInline: displayStyle === 'inline', isIconInline: iconDisplayStyle === 'inline', className: className, style: style },
65
63
  react_1.default.createElement(Textarea_1.Textarea, __assign({ disabled: disabled, className: textareaClassName, style: textareaStyle, required: required }, textareaProps, { ref: ref }))));
66
64
  });
67
65
  exports.default = exports.LabeledTextarea;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { CommonProps } from '../utils/props';
2
+ import { CommonProps } from '../utils';
3
3
  import '@itwin/itwinui-css/css/menu.css';
4
4
  export declare type MenuProps = {
5
5
  /**
@@ -14,6 +14,11 @@ export declare type MenuProps = {
14
14
  * and selected item should have `aria-selected={true}`.
15
15
  */
16
16
  children: React.ReactNode;
17
+ /**
18
+ * If true, the first selected or enabled menu item will be focused automatically.
19
+ * @default true
20
+ */
21
+ setFocus?: boolean;
17
22
  } & Omit<CommonProps, 'title'>;
18
23
  /**
19
24
  * Basic menu component. Can be used for select or dropdown components.
@@ -31,5 +36,10 @@ export declare const Menu: React.ForwardRefExoticComponent<{
31
36
  * and selected item should have `aria-selected={true}`.
32
37
  */
33
38
  children: React.ReactNode;
39
+ /**
40
+ * If true, the first selected or enabled menu item will be focused automatically.
41
+ * @default true
42
+ */
43
+ setFocus?: boolean | undefined;
34
44
  } & Omit<CommonProps, "title"> & React.RefAttributes<HTMLUListElement>>;
35
45
  export default Menu;
@@ -32,34 +32,34 @@ exports.Menu = void 0;
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var react_1 = __importDefault(require("react"));
34
34
  var classnames_1 = __importDefault(require("classnames"));
35
- var useTheme_1 = require("../utils/hooks/useTheme");
35
+ var utils_1 = require("../utils");
36
36
  require("@itwin/itwinui-css/css/menu.css");
37
- var useMergedRefs_1 = require("../utils/hooks/useMergedRefs");
38
- var common_1 = require("../utils/common");
39
37
  /**
40
38
  * Basic menu component. Can be used for select or dropdown components.
41
39
  */
42
40
  exports.Menu = react_1.default.forwardRef(function (props, ref) {
43
- var children = props.children, _a = props.role, role = _a === void 0 ? 'menu' : _a, className = props.className, style = props.style, rest = __rest(props, ["children", "role", "className", "style"]);
44
- (0, useTheme_1.useTheme)();
45
- var _b = react_1.default.useState(), focusedIndex = _b[0], setFocusedIndex = _b[1];
41
+ var children = props.children, _a = props.role, role = _a === void 0 ? 'menu' : _a, _b = props.setFocus, setFocus = _b === void 0 ? true : _b, className = props.className, style = props.style, rest = __rest(props, ["children", "role", "setFocus", "className", "style"]);
42
+ (0, utils_1.useTheme)();
43
+ var _c = react_1.default.useState(), focusedIndex = _c[0], setFocusedIndex = _c[1];
46
44
  var menuRef = react_1.default.useRef(null);
47
- var refs = (0, useMergedRefs_1.useMergedRefs)(menuRef, ref);
45
+ var refs = (0, utils_1.useMergedRefs)(menuRef, ref);
48
46
  react_1.default.useEffect(function () {
49
47
  var _a;
50
- var items = (0, common_1.getFocusableElements)(menuRef.current);
48
+ var items = (0, utils_1.getFocusableElements)(menuRef.current);
51
49
  if (focusedIndex != null) {
52
50
  (_a = items === null || items === void 0 ? void 0 : items[focusedIndex]) === null || _a === void 0 ? void 0 : _a.focus();
53
51
  return;
54
52
  }
55
53
  var selectedIndex = items.findIndex(function (el) { return el.getAttribute('aria-selected') === 'true'; });
56
- setFocusedIndex(selectedIndex > -1 ? selectedIndex : 0);
57
- }, [focusedIndex]);
54
+ if (setFocus) {
55
+ setFocusedIndex(selectedIndex > -1 ? selectedIndex : 0);
56
+ }
57
+ }, [setFocus, focusedIndex]);
58
58
  react_1.default.useEffect(function () {
59
59
  setFocusedIndex(null);
60
60
  }, [children]);
61
61
  var onKeyDown = function (event) {
62
- var items = (0, common_1.getFocusableElements)(menuRef.current);
62
+ var items = (0, utils_1.getFocusableElements)(menuRef.current);
63
63
  if (!(items === null || items === void 0 ? void 0 : items.length)) {
64
64
  return;
65
65
  }
@@ -9,10 +9,10 @@ exports.MenuDivider = void 0;
9
9
  * See LICENSE.md in the project root for license terms and full copyright notice.
10
10
  *--------------------------------------------------------------------------------------------*/
11
11
  var react_1 = __importDefault(require("react"));
12
- var useTheme_1 = require("../utils/hooks/useTheme");
12
+ var utils_1 = require("../utils");
13
13
  require("@itwin/itwinui-css/css/menu.css");
14
14
  var MenuDivider = function () {
15
- (0, useTheme_1.useTheme)();
15
+ (0, utils_1.useTheme)();
16
16
  return react_1.default.createElement("li", { role: 'separator', className: 'iui-menu-divider' });
17
17
  };
18
18
  exports.MenuDivider = MenuDivider;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { CommonProps } from '../utils/props';
2
+ import { CommonProps } from '../utils';
3
3
  import '@itwin/itwinui-css/css/menu.css';
4
4
  export declare type MenuItemProps = {
5
5
  /**
@@ -108,5 +108,5 @@ export declare const MenuItem: React.ForwardRefExoticComponent<{
108
108
  id?: string | undefined;
109
109
  } & {
110
110
  style?: React.CSSProperties | undefined;
111
- } & import("../utils/props").ClassNameProps & React.RefAttributes<HTMLLIElement>>;
111
+ } & import("../utils").ClassNameProps & React.RefAttributes<HTMLLIElement>>;
112
112
  export default MenuItem;
@@ -32,12 +32,10 @@ exports.MenuItem = void 0;
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var react_1 = __importDefault(require("react"));
34
34
  var classnames_1 = __importDefault(require("classnames"));
35
- var useTheme_1 = require("../utils/hooks/useTheme");
35
+ var utils_1 = require("../utils");
36
36
  require("@itwin/itwinui-css/css/menu.css");
37
37
  var CaretRightSmall_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/CaretRightSmall"));
38
- var Popover_1 = require("../utils/Popover");
39
38
  var Menu_1 = require("./Menu");
40
- var useMergedRefs_1 = require("../utils/hooks/useMergedRefs");
41
39
  /**
42
40
  * Context used to provide menu item ref to sub-menu items.
43
41
  */
@@ -47,9 +45,9 @@ var MenuItemContext = react_1.default.createContext({ ref: undefined });
47
45
  */
48
46
  exports.MenuItem = react_1.default.forwardRef(function (props, ref) {
49
47
  var children = props.children, isSelected = props.isSelected, disabled = props.disabled, value = props.value, onClick = props.onClick, sublabel = props.sublabel, _a = props.size, size = _a === void 0 ? !!sublabel ? 'large' : 'default' : _a, icon = props.icon, badge = props.badge, className = props.className, style = props.style, _b = props.role, role = _b === void 0 ? 'menuitem' : _b, _c = props.subMenuItems, subMenuItems = _c === void 0 ? [] : _c, rest = __rest(props, ["children", "isSelected", "disabled", "value", "onClick", "sublabel", "size", "icon", "badge", "className", "style", "role", "subMenuItems"]);
50
- (0, useTheme_1.useTheme)();
48
+ (0, utils_1.useTheme)();
51
49
  var menuItemRef = react_1.default.useRef(null);
52
- var refs = (0, useMergedRefs_1.useMergedRefs)(menuItemRef, ref);
50
+ var refs = (0, utils_1.useMergedRefs)(menuItemRef, ref);
53
51
  var parentMenuItemRef = react_1.default.useContext(MenuItemContext).ref;
54
52
  var subMenuRef = react_1.default.useRef(null);
55
53
  var _d = react_1.default.useState(false), isSubmenuVisible = _d[0], setIsSubmenuVisible = _d[1];
@@ -88,7 +86,7 @@ exports.MenuItem = react_1.default.forwardRef(function (props, ref) {
88
86
  'iui-large': size === 'large',
89
87
  'iui-active': isSelected,
90
88
  'iui-disabled': disabled,
91
- }, className), onClick: function () { return !disabled && (onClick === null || onClick === void 0 ? void 0 : onClick(value)); }, ref: refs, style: style, role: role, tabIndex: disabled ? undefined : -1, "aria-selected": isSelected, "aria-haspopup": subMenuItems.length > 0, "aria-disabled": disabled, onKeyDown: onKeyDown, onMouseEnter: function () { return setIsSubmenuVisible(true); }, onMouseLeave: function (e) {
89
+ }, className), onClick: function () { return !disabled && (onClick === null || onClick === void 0 ? void 0 : onClick(value)); }, ref: refs, style: style, role: role, tabIndex: disabled || role === 'presentation' ? undefined : -1, "aria-selected": isSelected, "aria-haspopup": subMenuItems.length > 0, "aria-disabled": disabled, onKeyDown: onKeyDown, onMouseEnter: function () { return setIsSubmenuVisible(true); }, onMouseLeave: function (e) {
92
90
  var _a;
93
91
  if (!(e.relatedTarget instanceof Node) ||
94
92
  !((_a = subMenuRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget))) {
@@ -108,7 +106,7 @@ exports.MenuItem = react_1.default.forwardRef(function (props, ref) {
108
106
  className: (0, classnames_1.default)(badge.props.className, 'iui-icon'),
109
107
  })));
110
108
  return subMenuItems.length === 0 ? (listItem) : (react_1.default.createElement(MenuItemContext.Provider, { value: { ref: menuItemRef } },
111
- react_1.default.createElement(Popover_1.Popover, { placement: 'right-start', visible: isSubmenuVisible, content: react_1.default.createElement("div", { onMouseLeave: function () { return setIsSubmenuVisible(false); }, onBlur: function (e) {
109
+ react_1.default.createElement(utils_1.Popover, { placement: 'right-start', visible: isSubmenuVisible, content: react_1.default.createElement("div", { onMouseLeave: function () { return setIsSubmenuVisible(false); }, onBlur: function (e) {
112
110
  var _a, _b;
113
111
  !!(e.relatedTarget instanceof Node) &&
114
112
  !((_a = subMenuRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget)) &&
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { CommonProps } from '../utils/props';
2
+ import { CommonProps } from '../utils';
3
3
  import '@itwin/itwinui-css/css/modal.css';
4
4
  export declare type ModalProps = {
5
5
  /**