@itwin/itwinui-react 3.0.0-dev.6 → 3.0.0-dev.8

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 (283) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/cjs/core/Alert/Alert.d.ts +20 -9
  3. package/cjs/core/Alert/Alert.js +48 -10
  4. package/cjs/core/Avatar/Avatar.d.ts +3 -2
  5. package/cjs/core/Avatar/Avatar.js +21 -19
  6. package/cjs/core/AvatarGroup/AvatarGroup.js +3 -8
  7. package/cjs/core/ButtonGroup/ButtonGroup.js +41 -36
  8. package/cjs/core/Buttons/Button/Button.d.ts +15 -2
  9. package/cjs/core/Buttons/Button/Button.js +23 -9
  10. package/cjs/core/Buttons/DropdownButton/DropdownButton.js +1 -1
  11. package/cjs/core/Buttons/IconButton/IconButton.d.ts +5 -1
  12. package/cjs/core/Buttons/IconButton/IconButton.js +27 -38
  13. package/cjs/core/Buttons/SplitButton/SplitButton.d.ts +9 -0
  14. package/cjs/core/Buttons/SplitButton/SplitButton.js +25 -13
  15. package/cjs/core/Carousel/Carousel.d.ts +6 -4
  16. package/cjs/core/Carousel/Carousel.js +2 -2
  17. package/cjs/core/Carousel/CarouselDot.js +1 -3
  18. package/cjs/core/Carousel/CarouselNavigation.d.ts +6 -4
  19. package/cjs/core/ColorPicker/ColorBuilder.js +2 -1
  20. package/cjs/core/ColorPicker/ColorInputPanel.js +172 -231
  21. package/cjs/core/ComboBox/ComboBox.js +3 -3
  22. package/cjs/core/ComboBox/ComboBoxDropdown.js +4 -9
  23. package/cjs/core/ComboBox/ComboBoxEndIcon.js +3 -22
  24. package/cjs/core/ComboBox/ComboBoxInput.js +1 -1
  25. package/cjs/core/ComboBox/ComboBoxMenu.d.ts +2 -2
  26. package/cjs/core/ComboBox/ComboBoxMenu.js +5 -5
  27. package/cjs/core/ComboBox/ComboBoxMenuItem.d.ts +1 -1
  28. package/cjs/core/ComboBox/ComboBoxMenuItem.js +8 -6
  29. package/cjs/core/ComboBox/helpers.d.ts +1 -2
  30. package/cjs/core/DatePicker/DatePicker.d.ts +30 -8
  31. package/cjs/core/DatePicker/DatePicker.js +47 -6
  32. package/cjs/core/Dialog/Dialog.js +10 -17
  33. package/cjs/core/Dialog/DialogContext.d.ts +3 -4
  34. package/cjs/core/Dialog/DialogMain.js +5 -5
  35. package/cjs/core/ExpandableBlock/ExpandableBlock.d.ts +20 -14
  36. package/cjs/core/ExpandableBlock/ExpandableBlock.js +39 -18
  37. package/cjs/core/FileUpload/FileUpload.d.ts +4 -0
  38. package/cjs/core/FileUpload/FileUpload.js +24 -3
  39. package/cjs/core/Header/HeaderBasicButton.js +3 -16
  40. package/cjs/core/Header/HeaderDropdownButton.js +1 -1
  41. package/cjs/core/Header/HeaderSplitButton.js +3 -4
  42. package/cjs/core/Input/Input.d.ts +4 -0
  43. package/cjs/core/Input/Input.js +2 -1
  44. package/cjs/core/InputGrid/InputGrid.d.ts +25 -0
  45. package/cjs/core/InputGrid/InputGrid.js +39 -0
  46. package/cjs/core/InputGrid/index.d.ts +3 -0
  47. package/cjs/core/InputGrid/index.js +15 -0
  48. package/cjs/core/InputGroup/InputGroup.d.ts +13 -0
  49. package/cjs/core/InputGroup/InputGroup.js +35 -9
  50. package/cjs/core/InputWithDecorations/InputWithDecorations.d.ts +39 -0
  51. package/cjs/core/InputWithDecorations/InputWithDecorations.js +81 -0
  52. package/cjs/core/InputWithDecorations/index.d.ts +3 -0
  53. package/cjs/core/InputWithDecorations/index.js +15 -0
  54. package/cjs/core/Label/Label.d.ts +5 -0
  55. package/cjs/core/Label/Label.js +2 -0
  56. package/cjs/core/LabeledInput/LabeledInput.d.ts +22 -16
  57. package/cjs/core/LabeledInput/LabeledInput.js +52 -29
  58. package/cjs/core/LabeledSelect/LabeledSelect.d.ts +17 -7
  59. package/cjs/core/LabeledSelect/LabeledSelect.js +36 -17
  60. package/cjs/core/LabeledTextarea/LabeledTextarea.d.ts +15 -5
  61. package/cjs/core/LabeledTextarea/LabeledTextarea.js +12 -45
  62. package/cjs/core/Menu/Menu.d.ts +1 -1
  63. package/cjs/core/Menu/Menu.js +1 -1
  64. package/cjs/core/Menu/MenuDivider.d.ts +2 -1
  65. package/cjs/core/Menu/MenuDivider.js +1 -1
  66. package/cjs/core/Menu/MenuItem.d.ts +1 -1
  67. package/cjs/core/Menu/MenuItem.js +1 -0
  68. package/cjs/core/Menu/MenuItemSkeleton.d.ts +1 -1
  69. package/cjs/core/Menu/MenuItemSkeleton.js +0 -1
  70. package/cjs/core/ProgressIndicators/ProgressLinear.d.ts +4 -0
  71. package/cjs/core/ProgressIndicators/ProgressLinear.js +9 -1
  72. package/cjs/core/SearchBox/SearchBox.js +1 -1
  73. package/cjs/core/Select/Select.d.ts +4 -0
  74. package/cjs/core/Select/Select.js +12 -11
  75. package/cjs/core/SideNavigation/SideNavigation.d.ts +16 -0
  76. package/cjs/core/SideNavigation/SideNavigation.js +42 -9
  77. package/cjs/core/Slider/Slider.d.ts +24 -0
  78. package/cjs/core/Slider/Slider.js +58 -10
  79. package/cjs/core/Slider/Thumb.js +3 -2
  80. package/cjs/core/Slider/Track.d.ts +1 -1
  81. package/cjs/core/Slider/Track.js +17 -6
  82. package/cjs/core/StatusMessage/StatusMessage.d.ts +12 -2
  83. package/cjs/core/StatusMessage/StatusMessage.js +23 -9
  84. package/cjs/core/Stepper/Stepper.d.ts +26 -1
  85. package/cjs/core/Stepper/Stepper.js +35 -6
  86. package/cjs/core/Stepper/StepperStep.d.ts +17 -0
  87. package/cjs/core/Stepper/StepperStep.js +33 -8
  88. package/cjs/core/Stepper/WorkflowDiagram.d.ts +11 -1
  89. package/cjs/core/Stepper/WorkflowDiagram.js +23 -10
  90. package/cjs/core/Stepper/WorkflowDiagramStep.d.ts +6 -1
  91. package/cjs/core/Stepper/WorkflowDiagramStep.js +9 -2
  92. package/cjs/core/Table/SubRowExpander.js +3 -1
  93. package/cjs/core/Table/Table.js +0 -1
  94. package/cjs/core/Table/TableCell.js +1 -1
  95. package/cjs/core/Table/TablePaginator.js +1 -3
  96. package/cjs/core/Table/filters/DateRangeFilter/DatePickerInput.d.ts +6 -1
  97. package/cjs/core/Table/filters/DateRangeFilter/DatePickerInput.js +46 -18
  98. package/cjs/core/Table/filters/DateRangeFilter/DateRangeFilter.d.ts +2 -0
  99. package/cjs/core/Table/filters/DateRangeFilter/DateRangeFilter.js +2 -0
  100. package/cjs/core/Tabs/Tab.js +1 -2
  101. package/cjs/core/Textarea/Textarea.d.ts +7 -1
  102. package/cjs/core/Textarea/Textarea.js +6 -11
  103. package/cjs/core/ThemeProvider/ThemeContext.d.ts +1 -1
  104. package/cjs/core/ThemeProvider/ThemeProvider.d.ts +23 -3
  105. package/cjs/core/ThemeProvider/ThemeProvider.js +56 -23
  106. package/cjs/core/Tile/Tile.d.ts +142 -17
  107. package/cjs/core/Tile/Tile.js +107 -16
  108. package/cjs/core/Toast/Toast.d.ts +12 -4
  109. package/cjs/core/Toast/Toast.js +24 -13
  110. package/cjs/core/Tooltip/Tooltip.d.ts +35 -28
  111. package/cjs/core/Tooltip/Tooltip.js +116 -118
  112. package/cjs/core/TransferList/TransferList.js +4 -12
  113. package/cjs/core/Tree/TreeNode.js +1 -1
  114. package/cjs/core/index.d.ts +2 -0
  115. package/cjs/core/index.js +20 -4
  116. package/cjs/core/utils/components/ButtonBase.d.ts +14 -0
  117. package/cjs/core/utils/components/ButtonBase.js +46 -0
  118. package/cjs/core/utils/components/Icon.d.ts +5 -0
  119. package/cjs/core/utils/components/Icon.js +8 -1
  120. package/cjs/core/utils/components/InputContainer.d.ts +0 -1
  121. package/cjs/core/utils/components/InputContainer.js +14 -34
  122. package/cjs/core/utils/components/InputFlexContainer.d.ts +1 -0
  123. package/cjs/core/utils/components/InputFlexContainer.js +3 -1
  124. package/cjs/core/utils/components/Popover.js +5 -3
  125. package/cjs/core/utils/components/Portal.d.ts +27 -0
  126. package/cjs/core/utils/components/Portal.js +43 -0
  127. package/cjs/core/utils/components/VirtualScroll.js +4 -4
  128. package/cjs/core/utils/components/index.d.ts +2 -0
  129. package/cjs/core/utils/components/index.js +2 -0
  130. package/cjs/core/utils/functions/colors.d.ts +1 -1
  131. package/cjs/core/utils/functions/colors.js +1 -13
  132. package/cjs/core/utils/functions/index.d.ts +1 -0
  133. package/cjs/core/utils/functions/index.js +1 -0
  134. package/cjs/core/utils/functions/react.d.ts +8 -0
  135. package/cjs/core/utils/functions/react.js +40 -0
  136. package/cjs/core/utils/hooks/index.d.ts +1 -0
  137. package/cjs/core/utils/hooks/index.js +1 -0
  138. package/cjs/core/utils/hooks/useControlledState.d.ts +13 -0
  139. package/cjs/core/utils/hooks/useControlledState.js +39 -0
  140. package/cjs/core/utils/hooks/useGlobals.d.ts +1 -1
  141. package/cjs/styles.js +11 -35
  142. package/esm/core/Alert/Alert.d.ts +20 -9
  143. package/esm/core/Alert/Alert.js +49 -10
  144. package/esm/core/Avatar/Avatar.d.ts +3 -2
  145. package/esm/core/Avatar/Avatar.js +21 -17
  146. package/esm/core/AvatarGroup/AvatarGroup.js +3 -8
  147. package/esm/core/ButtonGroup/ButtonGroup.js +41 -36
  148. package/esm/core/Buttons/Button/Button.d.ts +15 -2
  149. package/esm/core/Buttons/Button/Button.js +18 -10
  150. package/esm/core/Buttons/DropdownButton/DropdownButton.js +1 -1
  151. package/esm/core/Buttons/IconButton/IconButton.d.ts +5 -1
  152. package/esm/core/Buttons/IconButton/IconButton.js +25 -37
  153. package/esm/core/Buttons/SplitButton/SplitButton.d.ts +9 -0
  154. package/esm/core/Buttons/SplitButton/SplitButton.js +31 -14
  155. package/esm/core/Carousel/Carousel.d.ts +6 -4
  156. package/esm/core/Carousel/Carousel.js +8 -3
  157. package/esm/core/Carousel/CarouselDot.js +2 -4
  158. package/esm/core/Carousel/CarouselNavigation.d.ts +6 -4
  159. package/esm/core/ColorPicker/ColorBuilder.js +2 -1
  160. package/esm/core/ColorPicker/ColorInputPanel.js +173 -232
  161. package/esm/core/ComboBox/ComboBox.js +3 -3
  162. package/esm/core/ComboBox/ComboBoxDropdown.js +4 -9
  163. package/esm/core/ComboBox/ComboBoxEndIcon.js +4 -25
  164. package/esm/core/ComboBox/ComboBoxInput.js +1 -1
  165. package/esm/core/ComboBox/ComboBoxMenu.d.ts +2 -2
  166. package/esm/core/ComboBox/ComboBoxMenu.js +5 -5
  167. package/esm/core/ComboBox/ComboBoxMenuItem.d.ts +1 -1
  168. package/esm/core/ComboBox/ComboBoxMenuItem.js +9 -7
  169. package/esm/core/ComboBox/helpers.d.ts +1 -2
  170. package/esm/core/DatePicker/DatePicker.d.ts +30 -8
  171. package/esm/core/DatePicker/DatePicker.js +33 -6
  172. package/esm/core/Dialog/Dialog.js +11 -23
  173. package/esm/core/Dialog/DialogContext.d.ts +3 -4
  174. package/esm/core/Dialog/DialogMain.js +5 -5
  175. package/esm/core/ExpandableBlock/ExpandableBlock.d.ts +20 -14
  176. package/esm/core/ExpandableBlock/ExpandableBlock.js +41 -20
  177. package/esm/core/FileUpload/FileUpload.d.ts +4 -0
  178. package/esm/core/FileUpload/FileUpload.js +26 -3
  179. package/esm/core/Header/HeaderBasicButton.js +4 -17
  180. package/esm/core/Header/HeaderDropdownButton.js +1 -1
  181. package/esm/core/Header/HeaderSplitButton.js +9 -5
  182. package/esm/core/Input/Input.d.ts +4 -0
  183. package/esm/core/Input/Input.js +2 -1
  184. package/esm/core/InputGrid/InputGrid.d.ts +25 -0
  185. package/esm/core/InputGrid/InputGrid.js +35 -0
  186. package/esm/core/InputGrid/index.d.ts +3 -0
  187. package/esm/core/InputGrid/index.js +6 -0
  188. package/esm/core/InputGroup/InputGroup.d.ts +13 -0
  189. package/esm/core/InputGroup/InputGroup.js +34 -10
  190. package/esm/core/InputWithDecorations/InputWithDecorations.d.ts +39 -0
  191. package/esm/core/InputWithDecorations/InputWithDecorations.js +80 -0
  192. package/esm/core/InputWithDecorations/index.d.ts +3 -0
  193. package/esm/core/InputWithDecorations/index.js +6 -0
  194. package/esm/core/Label/Label.d.ts +5 -0
  195. package/esm/core/Label/Label.js +2 -0
  196. package/esm/core/LabeledInput/LabeledInput.d.ts +22 -16
  197. package/esm/core/LabeledInput/LabeledInput.js +53 -29
  198. package/esm/core/LabeledSelect/LabeledSelect.d.ts +17 -7
  199. package/esm/core/LabeledSelect/LabeledSelect.js +37 -18
  200. package/esm/core/LabeledTextarea/LabeledTextarea.d.ts +15 -5
  201. package/esm/core/LabeledTextarea/LabeledTextarea.js +14 -45
  202. package/esm/core/Menu/Menu.d.ts +1 -1
  203. package/esm/core/Menu/Menu.js +1 -1
  204. package/esm/core/Menu/MenuDivider.d.ts +2 -1
  205. package/esm/core/Menu/MenuDivider.js +1 -1
  206. package/esm/core/Menu/MenuItem.d.ts +1 -1
  207. package/esm/core/Menu/MenuItem.js +1 -0
  208. package/esm/core/Menu/MenuItemSkeleton.d.ts +1 -1
  209. package/esm/core/Menu/MenuItemSkeleton.js +0 -1
  210. package/esm/core/ProgressIndicators/ProgressLinear.d.ts +4 -0
  211. package/esm/core/ProgressIndicators/ProgressLinear.js +9 -1
  212. package/esm/core/SearchBox/SearchBox.js +1 -1
  213. package/esm/core/Select/Select.d.ts +4 -0
  214. package/esm/core/Select/Select.js +12 -11
  215. package/esm/core/SideNavigation/SideNavigation.d.ts +16 -0
  216. package/esm/core/SideNavigation/SideNavigation.js +33 -9
  217. package/esm/core/Slider/Slider.d.ts +24 -0
  218. package/esm/core/Slider/Slider.js +43 -10
  219. package/esm/core/Slider/Thumb.js +3 -2
  220. package/esm/core/Slider/Track.d.ts +1 -1
  221. package/esm/core/Slider/Track.js +14 -6
  222. package/esm/core/StatusMessage/StatusMessage.d.ts +12 -2
  223. package/esm/core/StatusMessage/StatusMessage.js +23 -16
  224. package/esm/core/Stepper/Stepper.d.ts +26 -1
  225. package/esm/core/Stepper/Stepper.js +32 -6
  226. package/esm/core/Stepper/StepperStep.d.ts +17 -0
  227. package/esm/core/Stepper/StepperStep.js +27 -8
  228. package/esm/core/Stepper/WorkflowDiagram.d.ts +11 -1
  229. package/esm/core/Stepper/WorkflowDiagram.js +10 -7
  230. package/esm/core/Stepper/WorkflowDiagramStep.d.ts +6 -1
  231. package/esm/core/Stepper/WorkflowDiagramStep.js +6 -2
  232. package/esm/core/Table/SubRowExpander.js +3 -1
  233. package/esm/core/Table/Table.js +0 -1
  234. package/esm/core/Table/TableCell.js +1 -1
  235. package/esm/core/Table/TablePaginator.js +2 -3
  236. package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.d.ts +6 -1
  237. package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.js +45 -17
  238. package/esm/core/Table/filters/DateRangeFilter/DateRangeFilter.d.ts +2 -0
  239. package/esm/core/Table/filters/DateRangeFilter/DateRangeFilter.js +2 -0
  240. package/esm/core/Tabs/Tab.js +2 -3
  241. package/esm/core/Textarea/Textarea.d.ts +7 -1
  242. package/esm/core/Textarea/Textarea.js +6 -11
  243. package/esm/core/ThemeProvider/ThemeContext.d.ts +1 -1
  244. package/esm/core/ThemeProvider/ThemeProvider.d.ts +23 -3
  245. package/esm/core/ThemeProvider/ThemeProvider.js +65 -24
  246. package/esm/core/Tile/Tile.d.ts +142 -17
  247. package/esm/core/Tile/Tile.js +107 -16
  248. package/esm/core/Toast/Toast.d.ts +12 -4
  249. package/esm/core/Toast/Toast.js +26 -13
  250. package/esm/core/Tooltip/Tooltip.d.ts +35 -28
  251. package/esm/core/Tooltip/Tooltip.js +119 -116
  252. package/esm/core/TransferList/TransferList.js +4 -9
  253. package/esm/core/Tree/TreeNode.js +1 -1
  254. package/esm/core/index.d.ts +2 -0
  255. package/esm/core/index.js +2 -0
  256. package/esm/core/utils/components/ButtonBase.d.ts +14 -0
  257. package/esm/core/utils/components/ButtonBase.js +42 -0
  258. package/esm/core/utils/components/Icon.d.ts +5 -0
  259. package/esm/core/utils/components/Icon.js +8 -1
  260. package/esm/core/utils/components/InputContainer.d.ts +0 -1
  261. package/esm/core/utils/components/InputContainer.js +14 -30
  262. package/esm/core/utils/components/InputFlexContainer.d.ts +1 -0
  263. package/esm/core/utils/components/InputFlexContainer.js +3 -1
  264. package/esm/core/utils/components/Popover.js +5 -3
  265. package/esm/core/utils/components/Portal.d.ts +27 -0
  266. package/esm/core/utils/components/Portal.js +36 -0
  267. package/esm/core/utils/components/VirtualScroll.js +4 -4
  268. package/esm/core/utils/components/index.d.ts +2 -0
  269. package/esm/core/utils/components/index.js +2 -0
  270. package/esm/core/utils/functions/colors.d.ts +1 -1
  271. package/esm/core/utils/functions/colors.js +1 -13
  272. package/esm/core/utils/functions/index.d.ts +1 -0
  273. package/esm/core/utils/functions/index.js +1 -0
  274. package/esm/core/utils/functions/react.d.ts +8 -0
  275. package/esm/core/utils/functions/react.js +35 -0
  276. package/esm/core/utils/hooks/index.d.ts +1 -0
  277. package/esm/core/utils/hooks/index.js +1 -0
  278. package/esm/core/utils/hooks/useControlledState.d.ts +13 -0
  279. package/esm/core/utils/hooks/useControlledState.js +34 -0
  280. package/esm/core/utils/hooks/useGlobals.d.ts +1 -1
  281. package/esm/styles.js +11 -35
  282. package/package.json +3 -3
  283. package/styles.css +49 -46
@@ -3,30 +3,37 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import * as React from 'react';
6
- import { Box, StatusIconMap } from '../utils/index.js';
6
+ import { Box, StatusIconMap, Icon } from '../utils/index.js';
7
+ import cx from 'classnames';
7
8
  /**
8
- * Component to display icon and text below the `Combobox` component.
9
+ * Component to display icon and text below the form field.
9
10
  * @example
10
11
  * <StatusMessage>This is the text</StatusMessage>
11
12
  * <StatusMessage startIcon={<SvgStar />}>This is the text</StatusMessage>
12
13
  */
13
- export const StatusMessage = ({
14
- startIcon: userStartIcon,
15
- children,
16
- status,
17
- }) => {
14
+ export const StatusMessage = React.forwardRef((props, ref) => {
15
+ const {
16
+ children,
17
+ startIcon: userStartIcon,
18
+ status,
19
+ className,
20
+ iconProps,
21
+ contentProps,
22
+ ...rest
23
+ } = props;
18
24
  const icon = userStartIcon ?? (status && StatusIconMap[status]());
19
25
  return React.createElement(
20
- React.Fragment,
21
- null,
26
+ Box,
27
+ {
28
+ className: cx('iui-status-message', className),
29
+ 'data-iui-status': status,
30
+ ref: ref,
31
+ ...rest,
32
+ },
22
33
  !!icon
23
- ? React.createElement(
24
- Box,
25
- { as: 'span', className: 'iui-input-icon', 'aria-hidden': true },
26
- icon,
27
- )
34
+ ? React.createElement(Icon, { 'aria-hidden': true, ...iconProps }, icon)
28
35
  : null,
29
- React.createElement(Box, { className: 'iui-message' }, children),
36
+ React.createElement(Box, { ...contentProps }, children),
30
37
  );
31
- };
38
+ });
32
39
  export default StatusMessage;
@@ -1,3 +1,4 @@
1
+ import * as React from 'react';
1
2
  import type { PolymorphicForwardRefComponent } from '../utils/index.js';
2
3
  export type StepperLocalization = {
3
4
  stepsCountLabel: (currentStep: number, totalSteps: number) => string;
@@ -11,7 +12,7 @@ export type StepProperties = {
11
12
  * A tooltip giving detailed description to this step.
12
13
  */
13
14
  description?: string;
14
- };
15
+ } & React.ComponentProps<'li'>;
15
16
  export type StepperProps = {
16
17
  /**
17
18
  * Current step index, 0 - based.
@@ -34,6 +35,30 @@ export type StepperProps = {
34
35
  * Click handler on completed step.
35
36
  */
36
37
  onStepClick?: (clickedIndex: number) => void;
38
+ /**
39
+ * Callback that can provide additional props for `<li>` representing a step.
40
+ */
41
+ stepProps?: (index: number) => React.ComponentProps<'li'>;
42
+ /**
43
+ * Allows props to be passed for track content.
44
+ */
45
+ trackContentProps?: (index: number) => React.ComponentProps<'div'>;
46
+ /**
47
+ * Allows props to be passed for circle.
48
+ */
49
+ circleProps?: (index: number) => React.ComponentProps<'span'>;
50
+ /**
51
+ * Allows props to be passed for name.
52
+ */
53
+ nameProps?: (index: number) => React.ComponentProps<'span'>;
54
+ /**
55
+ * Allows props to be passed for label.
56
+ */
57
+ labelProps?: React.ComponentProps<'div'>;
58
+ /**
59
+ * Allows props to be passed for label count.
60
+ */
61
+ labelCountProps?: React.ComponentProps<'span'>;
37
62
  };
38
63
  export declare const Stepper: PolymorphicForwardRefComponent<"div", StepperProps>;
39
64
  export default Stepper;
@@ -2,6 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
+ import cx from 'classnames';
5
6
  import * as React from 'react';
6
7
  import { Box } from '../utils/index.js';
7
8
  import { StepperStep } from './StepperStep.js';
@@ -16,6 +17,12 @@ export const Stepper = React.forwardRef((props, ref) => {
16
17
  type = 'default',
17
18
  localization = defaultStepperLocalization,
18
19
  onStepClick,
20
+ stepProps,
21
+ trackContentProps,
22
+ circleProps,
23
+ nameProps,
24
+ labelProps,
25
+ labelCountProps,
19
26
  ...rest
20
27
  } = props;
21
28
  const boundedCurrentStep = Math.min(
@@ -28,8 +35,16 @@ export const Stepper = React.forwardRef((props, ref) => {
28
35
  React.createElement(
29
36
  'ol',
30
37
  null,
31
- steps.map((s, index) =>
32
- React.createElement(StepperStep, {
38
+ steps.map((s, index) => {
39
+ const thisStepProps = stepProps?.(index);
40
+ const thisTrackContentProps = trackContentProps?.(index);
41
+ const thisCircleProps = circleProps?.(index);
42
+ const thisNameProps = nameProps?.(index);
43
+ return React.createElement(StepperStep, {
44
+ stepProps: thisStepProps,
45
+ trackContentProps: thisTrackContentProps,
46
+ circleProps: thisCircleProps,
47
+ nameProps: thisNameProps,
33
48
  key: index,
34
49
  index: index,
35
50
  title: type === 'long' ? '' : s.name,
@@ -38,16 +53,27 @@ export const Stepper = React.forwardRef((props, ref) => {
38
53
  type: type,
39
54
  onClick: onStepClick,
40
55
  description: s.description,
41
- }),
42
- ),
56
+ });
57
+ }),
43
58
  ),
44
59
  type === 'long' &&
45
60
  React.createElement(
46
61
  Box,
47
- { className: 'iui-stepper-steps-label' },
62
+ {
63
+ as: 'div',
64
+ ...labelProps,
65
+ className: cx('iui-stepper-steps-label', labelProps?.className),
66
+ },
48
67
  React.createElement(
49
68
  Box,
50
- { as: 'span', className: 'iui-stepper-steps-label-count' },
69
+ {
70
+ as: 'span',
71
+ ...labelCountProps,
72
+ className: cx(
73
+ 'iui-stepper-steps-label-count',
74
+ labelCountProps?.className,
75
+ ),
76
+ },
51
77
  localization.stepsCountLabel(boundedCurrentStep + 1, steps.length),
52
78
  ),
53
79
  steps[boundedCurrentStep].name,
@@ -1,3 +1,4 @@
1
+ import * as React from 'react';
1
2
  import type { PolymorphicForwardRefComponent } from '../utils/index.js';
2
3
  export type StepperStepProps = {
3
4
  /**
@@ -28,5 +29,21 @@ export type StepperStepProps = {
28
29
  * A tooltip giving detailed description to this step.
29
30
  */
30
31
  description?: string;
32
+ /**
33
+ * Allows props to be passed for stepper step.
34
+ */
35
+ stepProps?: React.ComponentProps<'li'>;
36
+ /**
37
+ * Allows props to be passed for track content.
38
+ */
39
+ trackContentProps?: React.ComponentProps<'div'>;
40
+ /**
41
+ * Allows props to be passed for stepper-step circle.
42
+ */
43
+ circleProps?: React.ComponentProps<'span'>;
44
+ /**
45
+ * Allows props to be passed for stepper name.
46
+ */
47
+ nameProps?: React.ComponentProps<'span'>;
31
48
  };
32
49
  export declare const StepperStep: PolymorphicForwardRefComponent<"li", StepperStepProps>;
@@ -17,6 +17,10 @@ export const StepperStep = React.forwardRef((props, forwardedRef) => {
17
17
  description,
18
18
  className,
19
19
  style,
20
+ stepProps,
21
+ trackContentProps,
22
+ circleProps,
23
+ nameProps,
20
24
  ...rest
21
25
  } = props;
22
26
  const isPast = currentStepNumber > index;
@@ -42,17 +46,17 @@ export const StepperStep = React.forwardRef((props, forwardedRef) => {
42
46
  Box,
43
47
  {
44
48
  as: 'li',
49
+ ...stepProps,
45
50
  className: cx(
46
51
  'iui-stepper-step',
47
- {
48
- 'iui-current': isActive,
49
- 'iui-clickable': isClickable,
50
- },
52
+ { 'iui-current': isActive, 'iui-clickable': isClickable },
51
53
  className,
54
+ stepProps?.className,
52
55
  ),
53
56
  style: {
54
- width: type === 'default' ? `${100 / totalSteps}%` : undefined,
57
+ inlineSize: type === 'default' ? `${100 / totalSteps}%` : undefined,
55
58
  ...style,
59
+ ...stepProps?.style,
56
60
  },
57
61
  onClick: onCompletedClick,
58
62
  onKeyDown: onKeyDown,
@@ -63,17 +67,32 @@ export const StepperStep = React.forwardRef((props, forwardedRef) => {
63
67
  },
64
68
  React.createElement(
65
69
  Box,
66
- { className: 'iui-stepper-track-content' },
70
+ {
71
+ as: 'div',
72
+ ...trackContentProps,
73
+ className: cx(
74
+ 'iui-stepper-track-content',
75
+ trackContentProps?.className,
76
+ ),
77
+ },
67
78
  React.createElement(
68
79
  Box,
69
- { as: 'span', className: 'iui-stepper-circle' },
80
+ {
81
+ as: 'span',
82
+ ...circleProps,
83
+ className: cx('iui-stepper-circle', circleProps?.className),
84
+ },
70
85
  index + 1,
71
86
  ),
72
87
  ),
73
88
  type === 'default' &&
74
89
  React.createElement(
75
90
  Box,
76
- { as: 'span', className: 'iui-stepper-step-name' },
91
+ {
92
+ as: 'span',
93
+ ...nameProps,
94
+ className: cx('iui-stepper-step-name', nameProps?.className),
95
+ },
77
96
  title,
78
97
  ),
79
98
  );
@@ -1,5 +1,15 @@
1
+ import * as React from 'react';
1
2
  import type { PolymorphicForwardRefComponent } from '../utils/index.js';
2
3
  import type { StepperProps } from './Stepper.js';
3
- type WorkflowDiagramProps = Pick<StepperProps, 'steps'>;
4
+ type WorkflowDiagramProps = Pick<StepperProps, 'steps'> & {
5
+ /**
6
+ * Allows props to be passed for diagram.
7
+ */
8
+ contentProps?: (index: number) => React.ComponentProps<'span'>;
9
+ /**
10
+ * Allows props to be passed for diagram wrapper.
11
+ */
12
+ wrapperProps?: React.ComponentProps<'div'>;
13
+ };
4
14
  export declare const WorkflowDiagram: PolymorphicForwardRefComponent<"ol", WorkflowDiagramProps>;
5
15
  export default WorkflowDiagram;
@@ -3,25 +3,28 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import * as React from 'react';
6
+ import cx from 'classnames';
6
7
  import { Box } from '../utils/index.js';
7
8
  import { WorkflowDiagramStep } from './WorkflowDiagramStep.js';
8
9
  export const WorkflowDiagram = React.forwardRef(
9
10
  // TODO: Remove this ref cast. ref and rest props should be applied on the same element
10
11
  (props, ref) => {
11
- const { steps, ...rest } = props;
12
+ const { steps, className, contentProps, wrapperProps, ...rest } = props;
12
13
  return React.createElement(
13
14
  Box,
14
- { ref: ref },
15
+ { as: 'div', ...wrapperProps, ref: ref },
15
16
  React.createElement(
16
17
  Box,
17
- { as: 'ol', className: 'iui-workflow-diagram', ...rest },
18
- steps.map((s, index) =>
19
- React.createElement(WorkflowDiagramStep, {
18
+ { as: 'ol', className: cx('iui-workflow-diagram', className), ...rest },
19
+ steps.map((s, index) => {
20
+ const thisContentProps = contentProps?.(index);
21
+ return React.createElement(WorkflowDiagramStep, {
22
+ contentProps: thisContentProps,
20
23
  key: index,
21
24
  title: s.name,
22
25
  description: s.description,
23
- }),
24
- ),
26
+ });
27
+ }),
25
28
  ),
26
29
  );
27
30
  },
@@ -1,5 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { type CommonProps } from '../utils/index.js';
3
3
  import type { StepperStepProps } from './StepperStep.js';
4
- export type WorkflowDiagramStepProps = Pick<StepperStepProps, 'title' | 'description'> & Omit<CommonProps, 'title'>;
4
+ export type WorkflowDiagramStepProps = {
5
+ /**
6
+ * Allows props to be passed for diagram content.
7
+ */
8
+ contentProps?: React.ComponentProps<'span'>;
9
+ } & Pick<StepperStepProps, 'title' | 'description'> & Omit<CommonProps, 'title'>;
5
10
  export declare const WorkflowDiagramStep: (props: WorkflowDiagramStepProps) => React.JSX.Element;
@@ -7,7 +7,7 @@ import * as React from 'react';
7
7
  import { Tooltip } from '../Tooltip/index.js';
8
8
  import { Box } from '../utils/index.js';
9
9
  export const WorkflowDiagramStep = (props) => {
10
- const { title, description, className, style, ...rest } = props;
10
+ const { title, description, className, style, contentProps, ...rest } = props;
11
11
  const stepShape = React.createElement(
12
12
  Box,
13
13
  {
@@ -18,7 +18,11 @@ export const WorkflowDiagramStep = (props) => {
18
18
  },
19
19
  React.createElement(
20
20
  Box,
21
- { as: 'span', className: 'iui-workflow-diagram-content' },
21
+ {
22
+ as: 'span',
23
+ ...contentProps,
24
+ className: cx('iui-workflow-diagram-content', contentProps?.className),
25
+ },
22
26
  title,
23
27
  ),
24
28
  );
@@ -15,8 +15,10 @@ export const SubRowExpander = (props) => {
15
15
  : React.createElement(
16
16
  IconButton,
17
17
  {
18
+ 'aria-label': 'Toggle sub row',
19
+ 'aria-expanded': cell.row.isExpanded ? 'true' : 'false',
18
20
  style: {
19
- marginRight:
21
+ marginInlineEnd:
20
22
  density === 'default' || density === undefined ? 8 : 4,
21
23
  },
22
24
  className: 'iui-table-row-expander',
@@ -798,7 +798,6 @@ export const Table = (props) => {
798
798
  React.createElement(ProgressRadial, {
799
799
  indeterminate: true,
800
800
  size: 'small',
801
- style: { float: 'none', marginLeft: 0 },
802
801
  }),
803
802
  ),
804
803
  ),
@@ -39,7 +39,7 @@ export const TableCell = (props) => {
39
39
  }
40
40
  const multiplier = 26 + expanderMargin; // 26 = expander width
41
41
  return {
42
- paddingLeft: cellPadding + dynamicMargin * multiplier,
42
+ paddingInlineStart: cellPadding + dynamicMargin * multiplier,
43
43
  };
44
44
  };
45
45
  const cellElementProps = cell.getCellProps({
@@ -15,6 +15,7 @@ import {
15
15
  SvgChevronLeft,
16
16
  SvgChevronRight,
17
17
  Box,
18
+ ButtonBase,
18
19
  } from '../utils/index.js';
19
20
  const defaultLocalization = {
20
21
  pageSizeLabel: (size) => `${size} per page`,
@@ -86,11 +87,9 @@ export const TablePaginator = (props) => {
86
87
  const pageButton = React.useCallback(
87
88
  (index, tabIndex = index === focusedIndex ? 0 : -1) =>
88
89
  React.createElement(
89
- Box,
90
+ ButtonBase,
90
91
  {
91
- as: 'button',
92
92
  key: index,
93
- type: 'button',
94
93
  className: cx('iui-table-paginator-page-button', {
95
94
  'iui-table-paginator-page-button-small': buttonSize === 'small',
96
95
  }),
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
+ import type { LabeledInput } from '../../../LabeledInput/index.js';
2
3
  import type { PolymorphicForwardRefComponent } from '../../../utils/index.js';
3
- import { LabeledInput } from '../../../LabeledInput/index.js';
4
+ import type { DatePickerLocalizedNames } from '../../../DatePicker/DatePicker.js';
4
5
  export type DatePickerInputProps = {
5
6
  date?: Date;
6
7
  onChange: (date?: Date) => void;
@@ -14,6 +15,10 @@ export type DatePickerInputProps = {
14
15
  * The 'to' date for the 'from' DatePickerInput or the 'from' date for the 'to' DatePickerInput
15
16
  */
16
17
  selectedDate?: Date;
18
+ /**
19
+ * Months, short days and days localized names for DatePicker
20
+ */
21
+ localizedNames?: DatePickerLocalizedNames;
17
22
  } & Omit<React.ComponentProps<typeof LabeledInput>, 'value' | 'onChange' | 'svgIcon' | 'displayStyle'>;
18
23
  declare const DatePickerInput: PolymorphicForwardRefComponent<"input", DatePickerInputProps>;
19
24
  export default DatePickerInput;
@@ -3,18 +3,28 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import * as React from 'react';
6
- import { Popover, SvgCalendar, isBefore } from '../../../utils/index.js';
7
- import { LabeledInput } from '../../../LabeledInput/index.js';
6
+ import { Popover, SvgCalendar, isBefore, useId } from '../../../utils/index.js';
8
7
  import { DatePicker } from '../../../DatePicker/index.js';
9
- import { IconButton } from '../../../Buttons/index.js';
8
+ import { InputGrid } from '../../../InputGrid/index.js';
9
+ import { Label } from '../../../Label/index.js';
10
+ import { InputWithDecorations } from '../../../InputWithDecorations/index.js';
10
11
  const DatePickerInput = React.forwardRef((props, forwardedRef) => {
12
+ const uid = useId();
11
13
  const {
12
14
  onChange,
13
15
  date,
14
16
  parseInput,
15
17
  formatDate,
18
+ label,
19
+ required,
20
+ disabled,
16
21
  isFromOrTo,
17
22
  selectedDate,
23
+ wrapperProps,
24
+ labelProps,
25
+ inputWrapperProps,
26
+ id = uid,
27
+ localizedNames,
18
28
  ...rest
19
29
  } = props;
20
30
  const isDateDisabled = (date) => {
@@ -63,6 +73,7 @@ const DatePickerInput = React.forwardRef((props, forwardedRef) => {
63
73
  onChange: onDateSelected,
64
74
  setFocus: true,
65
75
  isDateDisabled: isDateDisabled,
76
+ localizedNames: localizedNames,
66
77
  }),
67
78
  placement: 'bottom',
68
79
  visible: isVisible,
@@ -73,23 +84,40 @@ const DatePickerInput = React.forwardRef((props, forwardedRef) => {
73
84
  },
74
85
  appendTo: 'parent',
75
86
  },
76
- React.createElement(LabeledInput, {
77
- ref: forwardedRef,
78
- displayStyle: 'inline',
79
- value: inputValue,
80
- onChange: onInputChange,
81
- onClick: close,
82
- svgIcon: React.createElement(
83
- IconButton,
87
+ React.createElement(
88
+ InputGrid,
89
+ { labelPlacement: 'inline', ...wrapperProps },
90
+ React.createElement(
91
+ Label,
84
92
  {
85
- styleType: 'borderless',
86
- onClick: () => setIsVisible((v) => !v),
87
- ref: buttonRef,
93
+ as: 'label',
94
+ required: required,
95
+ disabled: disabled,
96
+ htmlFor: id,
97
+ ...labelProps,
88
98
  },
89
- React.createElement(SvgCalendar, null),
99
+ label,
90
100
  ),
91
- ...rest,
92
- }),
101
+ React.createElement(
102
+ InputWithDecorations,
103
+ { ...inputWrapperProps },
104
+ React.createElement(InputWithDecorations.Input, {
105
+ id: id,
106
+ value: inputValue,
107
+ onChange: onInputChange,
108
+ onClick: close,
109
+ required: required,
110
+ disabled: disabled,
111
+ ref: forwardedRef,
112
+ ...rest,
113
+ }),
114
+ React.createElement(
115
+ InputWithDecorations.Button,
116
+ { onClick: () => setIsVisible((v) => !v), ref: buttonRef },
117
+ React.createElement(SvgCalendar, null),
118
+ ),
119
+ ),
120
+ ),
93
121
  );
94
122
  });
95
123
  export default DatePickerInput;
@@ -1,9 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import type { FilterButtonBarTranslation } from '../FilterButtonBar.js';
3
3
  import type { TableFilterProps } from '../types.js';
4
+ import type { DatePickerLocalizedNames } from '../../../DatePicker/DatePicker.js';
4
5
  export type DateRangeTranslation = {
5
6
  from: string;
6
7
  to: string;
8
+ datePicker?: DatePickerLocalizedNames;
7
9
  };
8
10
  export type DateRangeFilterProps<T extends Record<string, unknown>> = TableFilterProps<T> & {
9
11
  formatDate?: (date: Date) => string;
@@ -104,6 +104,7 @@ export const DateRangeFilter = (props) => {
104
104
  placeholder: placeholder,
105
105
  selectedDate: to,
106
106
  isFromOrTo: 'from',
107
+ localizedNames: translatedStrings.datePicker,
107
108
  }),
108
109
  React.createElement(DatePickerInput, {
109
110
  label: translatedStrings.to,
@@ -115,6 +116,7 @@ export const DateRangeFilter = (props) => {
115
116
  placeholder: placeholder,
116
117
  selectedDate: from,
117
118
  isFromOrTo: 'to',
119
+ localizedNames: translatedStrings.datePicker,
118
120
  }),
119
121
  React.createElement(FilterButtonBar, {
120
122
  setFilter: () => setFilter([from, to]),
@@ -4,7 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import cx from 'classnames';
6
6
  import * as React from 'react';
7
- import { Box } from '../utils/index.js';
7
+ import { Box, ButtonBase } from '../utils/index.js';
8
8
  /**
9
9
  * Individual tab component to be used in the `labels` prop of `Tabs`.
10
10
  * @example
@@ -24,9 +24,8 @@ export const Tab = React.forwardRef((props, forwardedRef) => {
24
24
  ...rest
25
25
  } = props;
26
26
  return React.createElement(
27
- Box,
27
+ ButtonBase,
28
28
  {
29
- as: 'button',
30
29
  className: cx('iui-tab', { 'iui-active': active }, className),
31
30
  role: 'tab',
32
31
  tabIndex: -1,
@@ -1,9 +1,15 @@
1
1
  import type { PolymorphicForwardRefComponent } from '../utils/index.js';
2
+ export type TextareaProps = {
3
+ /**
4
+ * Status of textarea.
5
+ */
6
+ status?: 'positive' | 'warning' | 'negative';
7
+ };
2
8
  /**
3
9
  * Basic textarea component
4
10
  * @example
5
11
  * <Textarea placeholder='This is a textarea' />
6
12
  * <Textarea disabled={true} placeholder='This is a disabled textarea' />
7
13
  */
8
- export declare const Textarea: PolymorphicForwardRefComponent<"textarea", {}>;
14
+ export declare const Textarea: PolymorphicForwardRefComponent<"textarea", TextareaProps>;
9
15
  export default Textarea;
@@ -2,25 +2,20 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- import cx from 'classnames';
6
5
  import * as React from 'react';
7
- import { useMergedRefs, Box } from '../utils/index.js';
6
+ import { Input } from '../Input/index.js';
8
7
  /**
9
8
  * Basic textarea component
10
9
  * @example
11
10
  * <Textarea placeholder='This is a textarea' />
12
11
  * <Textarea disabled={true} placeholder='This is a disabled textarea' />
13
12
  */
14
- export const Textarea = React.forwardRef((props, ref) => {
15
- const { className, rows = 3, ...rest } = props;
16
- const textAreaRef = React.useRef(null);
17
- const refs = useMergedRefs(ref, textAreaRef);
18
- return React.createElement(Box, {
13
+ export const Textarea = React.forwardRef((props, forwardedRef) => {
14
+ return React.createElement(Input, {
19
15
  as: 'textarea',
20
- className: cx('iui-input', className),
21
- rows: rows,
22
- ref: refs,
23
- ...rest,
16
+ rows: 3,
17
+ ref: forwardedRef,
18
+ ...props,
24
19
  });
25
20
  });
26
21
  export default Textarea;
@@ -3,5 +3,5 @@ import type { ThemeOptions, ThemeType } from './ThemeProvider.js';
3
3
  export declare const ThemeContext: React.Context<{
4
4
  theme?: ThemeType | undefined;
5
5
  themeOptions?: ThemeOptions | undefined;
6
- portalContainerRef?: React.RefObject<HTMLElement> | undefined;
6
+ portalContainer?: HTMLElement | null | undefined;
7
7
  } | undefined>;