@itwin/itwinui-react 3.0.0-dev.5 → 3.0.0-dev.7

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 (172) hide show
  1. package/CHANGELOG.md +98 -1
  2. package/cjs/core/Avatar/Avatar.d.ts +3 -2
  3. package/cjs/core/Avatar/Avatar.js +21 -19
  4. package/cjs/core/AvatarGroup/AvatarGroup.js +3 -8
  5. package/cjs/core/Buttons/Button/Button.d.ts +15 -2
  6. package/cjs/core/Buttons/Button/Button.js +23 -9
  7. package/cjs/core/Buttons/DropdownButton/DropdownButton.d.ts +1 -1
  8. package/cjs/core/Buttons/DropdownButton/DropdownButton.js +1 -1
  9. package/cjs/core/Buttons/IconButton/IconButton.d.ts +5 -1
  10. package/cjs/core/Buttons/IconButton/IconButton.js +11 -5
  11. package/cjs/core/Buttons/SplitButton/SplitButton.d.ts +9 -0
  12. package/cjs/core/Buttons/SplitButton/SplitButton.js +22 -13
  13. package/cjs/core/Carousel/Carousel.d.ts +6 -4
  14. package/cjs/core/Carousel/Carousel.js +2 -2
  15. package/cjs/core/Carousel/CarouselDot.js +1 -3
  16. package/cjs/core/Carousel/CarouselNavigation.d.ts +6 -4
  17. package/cjs/core/ColorPicker/ColorBuilder.js +2 -1
  18. package/cjs/core/ComboBox/ComboBoxInput.js +1 -1
  19. package/cjs/core/ComboBox/ComboBoxMenu.js +5 -5
  20. package/cjs/core/DatePicker/DatePicker.js +7 -1
  21. package/cjs/core/Dialog/Dialog.js +1 -2
  22. package/cjs/core/Dialog/DialogContent.d.ts +2 -1
  23. package/cjs/core/Dialog/DialogContent.js +25 -1
  24. package/cjs/core/Dialog/DialogMain.js +5 -6
  25. package/cjs/core/ExpandableBlock/ExpandableBlock.js +1 -3
  26. package/cjs/core/FileUpload/FileUpload.d.ts +4 -0
  27. package/cjs/core/FileUpload/FileUpload.js +24 -3
  28. package/cjs/core/Header/HeaderBasicButton.js +3 -16
  29. package/cjs/core/Header/HeaderButton.d.ts +4 -0
  30. package/cjs/core/Header/HeaderButton.js +2 -0
  31. package/cjs/core/Header/HeaderDropdownButton.js +1 -1
  32. package/cjs/core/Header/HeaderSplitButton.js +2 -4
  33. package/cjs/core/Input/Input.d.ts +5 -0
  34. package/cjs/core/Input/Input.js +2 -1
  35. package/cjs/core/ProgressIndicators/ProgressLinear.d.ts +4 -0
  36. package/cjs/core/ProgressIndicators/ProgressLinear.js +9 -1
  37. package/cjs/core/Radio/Radio.d.ts +8 -0
  38. package/cjs/core/Radio/Radio.js +22 -9
  39. package/cjs/core/RadioTiles/RadioTile.d.ts +16 -0
  40. package/cjs/core/RadioTiles/RadioTile.js +61 -27
  41. package/cjs/core/Select/Select.js +2 -2
  42. package/cjs/core/SideNavigation/SideNavigation.d.ts +16 -0
  43. package/cjs/core/SideNavigation/SideNavigation.js +40 -9
  44. package/cjs/core/Slider/Slider.d.ts +24 -0
  45. package/cjs/core/Slider/Slider.js +58 -10
  46. package/cjs/core/Slider/Thumb.js +2 -2
  47. package/cjs/core/Slider/Track.d.ts +1 -1
  48. package/cjs/core/Slider/Track.js +17 -6
  49. package/cjs/core/Stepper/Stepper.d.ts +26 -1
  50. package/cjs/core/Stepper/Stepper.js +35 -6
  51. package/cjs/core/Stepper/StepperStep.d.ts +17 -0
  52. package/cjs/core/Stepper/StepperStep.js +33 -8
  53. package/cjs/core/Stepper/WorkflowDiagram.d.ts +11 -1
  54. package/cjs/core/Stepper/WorkflowDiagram.js +23 -10
  55. package/cjs/core/Stepper/WorkflowDiagramStep.d.ts +6 -1
  56. package/cjs/core/Stepper/WorkflowDiagramStep.js +9 -2
  57. package/cjs/core/Table/SubRowExpander.js +1 -1
  58. package/cjs/core/Table/Table.d.ts +16 -0
  59. package/cjs/core/Table/Table.js +50 -9
  60. package/cjs/core/Table/TableCell.js +1 -1
  61. package/cjs/core/Table/TablePaginator.js +1 -3
  62. package/cjs/core/Tabs/Tab.js +1 -2
  63. package/cjs/core/ThemeProvider/ThemeContext.d.ts +1 -1
  64. package/cjs/core/ThemeProvider/ThemeProvider.d.ts +23 -3
  65. package/cjs/core/ThemeProvider/ThemeProvider.js +56 -23
  66. package/cjs/core/Tile/Tile.d.ts +3 -2
  67. package/cjs/core/Toast/Toast.js +4 -9
  68. package/cjs/core/Tooltip/Tooltip.d.ts +1 -1
  69. package/cjs/core/Tooltip/Tooltip.js +1 -2
  70. package/cjs/core/Tree/TreeNode.js +1 -1
  71. package/cjs/core/utils/components/ButtonBase.d.ts +14 -0
  72. package/cjs/core/utils/components/ButtonBase.js +46 -0
  73. package/cjs/core/utils/components/Popover.js +5 -3
  74. package/cjs/core/utils/components/Resizer.js +21 -13
  75. package/cjs/core/utils/components/VirtualScroll.js +4 -4
  76. package/cjs/core/utils/components/index.d.ts +1 -0
  77. package/cjs/core/utils/components/index.js +1 -0
  78. package/cjs/core/utils/functions/colors.d.ts +1 -1
  79. package/cjs/core/utils/functions/colors.js +1 -13
  80. package/cjs/core/utils/hooks/index.d.ts +1 -0
  81. package/cjs/core/utils/hooks/index.js +1 -0
  82. package/cjs/core/utils/hooks/useGlobals.d.ts +1 -1
  83. package/cjs/core/utils/hooks/useUncontrolledState.d.ts +6 -0
  84. package/cjs/core/utils/hooks/useUncontrolledState.js +18 -0
  85. package/cjs/styles.js +4 -11
  86. package/esm/core/Avatar/Avatar.d.ts +3 -2
  87. package/esm/core/Avatar/Avatar.js +21 -17
  88. package/esm/core/AvatarGroup/AvatarGroup.js +3 -8
  89. package/esm/core/Buttons/Button/Button.d.ts +15 -2
  90. package/esm/core/Buttons/Button/Button.js +18 -10
  91. package/esm/core/Buttons/DropdownButton/DropdownButton.d.ts +1 -1
  92. package/esm/core/Buttons/DropdownButton/DropdownButton.js +1 -1
  93. package/esm/core/Buttons/IconButton/IconButton.d.ts +5 -1
  94. package/esm/core/Buttons/IconButton/IconButton.js +9 -6
  95. package/esm/core/Buttons/SplitButton/SplitButton.d.ts +9 -0
  96. package/esm/core/Buttons/SplitButton/SplitButton.js +22 -13
  97. package/esm/core/Carousel/Carousel.d.ts +6 -4
  98. package/esm/core/Carousel/Carousel.js +8 -3
  99. package/esm/core/Carousel/CarouselDot.js +2 -4
  100. package/esm/core/Carousel/CarouselNavigation.d.ts +6 -4
  101. package/esm/core/ColorPicker/ColorBuilder.js +2 -1
  102. package/esm/core/ComboBox/ComboBoxInput.js +1 -1
  103. package/esm/core/ComboBox/ComboBoxMenu.js +5 -5
  104. package/esm/core/DatePicker/DatePicker.js +8 -1
  105. package/esm/core/Dialog/Dialog.js +1 -1
  106. package/esm/core/Dialog/DialogContent.d.ts +2 -1
  107. package/esm/core/Dialog/DialogContent.js +25 -2
  108. package/esm/core/Dialog/DialogMain.js +5 -6
  109. package/esm/core/ExpandableBlock/ExpandableBlock.js +2 -3
  110. package/esm/core/FileUpload/FileUpload.d.ts +4 -0
  111. package/esm/core/FileUpload/FileUpload.js +26 -3
  112. package/esm/core/Header/HeaderBasicButton.js +4 -17
  113. package/esm/core/Header/HeaderButton.d.ts +4 -0
  114. package/esm/core/Header/HeaderButton.js +2 -0
  115. package/esm/core/Header/HeaderDropdownButton.js +1 -1
  116. package/esm/core/Header/HeaderSplitButton.js +8 -5
  117. package/esm/core/Input/Input.d.ts +5 -0
  118. package/esm/core/Input/Input.js +2 -1
  119. package/esm/core/ProgressIndicators/ProgressLinear.d.ts +4 -0
  120. package/esm/core/ProgressIndicators/ProgressLinear.js +9 -1
  121. package/esm/core/Radio/Radio.d.ts +8 -0
  122. package/esm/core/Radio/Radio.js +19 -6
  123. package/esm/core/RadioTiles/RadioTile.d.ts +16 -0
  124. package/esm/core/RadioTiles/RadioTile.js +52 -22
  125. package/esm/core/Select/Select.js +2 -2
  126. package/esm/core/SideNavigation/SideNavigation.d.ts +16 -0
  127. package/esm/core/SideNavigation/SideNavigation.js +31 -9
  128. package/esm/core/Slider/Slider.d.ts +24 -0
  129. package/esm/core/Slider/Slider.js +43 -10
  130. package/esm/core/Slider/Thumb.js +2 -2
  131. package/esm/core/Slider/Track.d.ts +1 -1
  132. package/esm/core/Slider/Track.js +14 -6
  133. package/esm/core/Stepper/Stepper.d.ts +26 -1
  134. package/esm/core/Stepper/Stepper.js +32 -6
  135. package/esm/core/Stepper/StepperStep.d.ts +17 -0
  136. package/esm/core/Stepper/StepperStep.js +27 -8
  137. package/esm/core/Stepper/WorkflowDiagram.d.ts +11 -1
  138. package/esm/core/Stepper/WorkflowDiagram.js +10 -7
  139. package/esm/core/Stepper/WorkflowDiagramStep.d.ts +6 -1
  140. package/esm/core/Stepper/WorkflowDiagramStep.js +6 -2
  141. package/esm/core/Table/SubRowExpander.js +1 -1
  142. package/esm/core/Table/Table.d.ts +16 -0
  143. package/esm/core/Table/Table.js +47 -9
  144. package/esm/core/Table/TableCell.js +1 -1
  145. package/esm/core/Table/TablePaginator.js +2 -3
  146. package/esm/core/Tabs/Tab.js +2 -3
  147. package/esm/core/ThemeProvider/ThemeContext.d.ts +1 -1
  148. package/esm/core/ThemeProvider/ThemeProvider.d.ts +23 -3
  149. package/esm/core/ThemeProvider/ThemeProvider.js +64 -24
  150. package/esm/core/Tile/Tile.d.ts +3 -2
  151. package/esm/core/Toast/Toast.js +5 -9
  152. package/esm/core/Tooltip/Tooltip.d.ts +1 -1
  153. package/esm/core/Tooltip/Tooltip.js +1 -1
  154. package/esm/core/Tree/TreeNode.js +1 -1
  155. package/esm/core/utils/components/ButtonBase.d.ts +14 -0
  156. package/esm/core/utils/components/ButtonBase.js +42 -0
  157. package/esm/core/utils/components/Popover.js +5 -3
  158. package/esm/core/utils/components/Resizer.js +21 -13
  159. package/esm/core/utils/components/VirtualScroll.js +4 -4
  160. package/esm/core/utils/components/index.d.ts +1 -0
  161. package/esm/core/utils/components/index.js +1 -0
  162. package/esm/core/utils/functions/colors.d.ts +1 -1
  163. package/esm/core/utils/functions/colors.js +1 -13
  164. package/esm/core/utils/functions/import.js +2 -1
  165. package/esm/core/utils/hooks/index.d.ts +1 -0
  166. package/esm/core/utils/hooks/index.js +1 -0
  167. package/esm/core/utils/hooks/useGlobals.d.ts +1 -1
  168. package/esm/core/utils/hooks/useUncontrolledState.d.ts +6 -0
  169. package/esm/core/utils/hooks/useUncontrolledState.js +13 -0
  170. package/esm/styles.js +4 -11
  171. package/package.json +2 -2
  172. package/styles.css +723 -1566
@@ -1,10 +1,13 @@
1
1
  'use strict';
2
2
  Object.defineProperty(exports, '__esModule', { value: true });
3
3
  exports.DialogContent = void 0;
4
+ const tslib_1 = require('tslib');
4
5
  /*---------------------------------------------------------------------------------------------
5
6
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
7
  * See LICENSE.md in the project root for license terms and full copyright notice.
7
8
  *--------------------------------------------------------------------------------------------*/
9
+ const React = tslib_1.__importStar(require('react'));
10
+ const classnames_1 = tslib_1.__importDefault(require('classnames'));
8
11
  const index_js_1 = require('../utils/index.js');
9
12
  /**
10
13
  * Container for content in `Dialog`. Recommended to be used as a child of `Dialog`.
@@ -13,5 +16,26 @@ const index_js_1 = require('../utils/index.js');
13
16
  * My dialog content
14
17
  * </Dialog.Content>
15
18
  */
16
- exports.DialogContent = index_js_1.polymorphic.div('iui-dialog-content');
19
+ exports.DialogContent = React.forwardRef((props, ref) => {
20
+ const { children, className, ...rest } = props;
21
+ const contentRef = React.useRef(null);
22
+ React.useEffect(() => {
23
+ // firefox hack for adding data-iui-flex in absence of :has
24
+ if (!(0, index_js_1.supportsHas)()) {
25
+ const dialog = contentRef.current?.closest('[role=dialog]');
26
+ if (dialog instanceof HTMLElement) {
27
+ dialog.dataset.iuiFlex = 'true';
28
+ }
29
+ }
30
+ }, []);
31
+ return React.createElement(
32
+ index_js_1.Box,
33
+ {
34
+ className: (0, classnames_1.default)('iui-dialog-content', className),
35
+ ref: (0, index_js_1.useMergedRefs)(contentRef, ref),
36
+ ...rest,
37
+ },
38
+ children,
39
+ );
40
+ });
17
41
  exports.default = exports.DialogContent;
@@ -122,10 +122,10 @@ exports.DialogMain = React.forwardRef((props, ref) => {
122
122
  );
123
123
  setStyle((oldStyle) => ({
124
124
  ...oldStyle,
125
- width: rect?.width,
126
- height: rect?.height,
127
- left: dialogRef.current?.offsetLeft,
128
- top: dialogRef.current?.offsetTop,
125
+ inlineSize: rect?.width,
126
+ blockSize: rect?.height,
127
+ insetInlineStart: dialogRef.current?.offsetLeft,
128
+ insetBlockStart: dialogRef.current?.offsetTop,
129
129
  transform: `translate(${translateX}px,${translateY}px)`,
130
130
  }));
131
131
  }, [isDraggable, isOpen]);
@@ -155,7 +155,6 @@ exports.DialogMain = React.forwardRef((props, ref) => {
155
155
  'data-iui-placement': placement,
156
156
  style: {
157
157
  transform,
158
- overflow: 'unset',
159
158
  ...style,
160
159
  ...propStyle,
161
160
  },
@@ -168,7 +167,7 @@ exports.DialogMain = React.forwardRef((props, ref) => {
168
167
  onResizeStart: () => {
169
168
  if (!hasBeenResized.current) {
170
169
  hasBeenResized.current = true;
171
- setResizeStyle({ maxWidth: '100%' });
170
+ setResizeStyle({ maxInlineSize: '100%' });
172
171
  }
173
172
  },
174
173
  onResizeEnd: setResizeStyle,
@@ -68,10 +68,8 @@ const ExpandableBlockHeader = React.forwardRef((props, forwardedRef) => {
68
68
  const { isExpanded, setExpanded, disabled, onToggle } = (0,
69
69
  index_js_1.useSafeContext)(ExpandableBlockContext);
70
70
  return React.createElement(
71
- index_js_1.Box,
71
+ index_js_1.ButtonBase,
72
72
  {
73
- as: 'button',
74
- type: 'button',
75
73
  className: (0, classnames_1.default)('iui-expandable-header', className),
76
74
  'aria-expanded': isExpanded,
77
75
  'aria-disabled': disabled,
@@ -15,6 +15,10 @@ type FileUploadProps = {
15
15
  * Either pass `FileUploadCard` (for default state) or a different component to wrap.
16
16
  */
17
17
  children: React.ReactNode;
18
+ /**
19
+ * Allows for custom prop to be passed for content.
20
+ */
21
+ contentProps?: React.ComponentProps<'div'>;
18
22
  };
19
23
  /**
20
24
  * File upload component to be wrapped around `FileUploadCard` or any arbitrary component.
@@ -17,7 +17,14 @@ const index_js_1 = require('../utils/index.js');
17
17
  * <FileUpload dragContent='Drop file here' onFileDropped={console.log}><Textarea /></FileUpload>
18
18
  */
19
19
  exports.FileUpload = React.forwardRef((props, ref) => {
20
- const { dragContent, children, onFileDropped, className, ...rest } = props;
20
+ const {
21
+ dragContent,
22
+ children,
23
+ onFileDropped,
24
+ className,
25
+ contentProps,
26
+ ...rest
27
+ } = props;
21
28
  const [isDragActive, setIsDragActive] = React.useState(false);
22
29
  const fileUploadRef = React.useRef(null);
23
30
  const refs = (0, index_js_1.useMergedRefs)(fileUploadRef, ref);
@@ -68,13 +75,27 @@ exports.FileUpload = React.forwardRef((props, ref) => {
68
75
  ? children
69
76
  : React.createElement(
70
77
  index_js_1.Box,
71
- { className: 'iui-content' },
78
+ {
79
+ as: 'div',
80
+ ...contentProps,
81
+ className: (0, classnames_1.default)(
82
+ 'iui-content',
83
+ contentProps?.className,
84
+ ),
85
+ },
72
86
  children,
73
87
  ),
74
88
  dragContent &&
75
89
  React.createElement(
76
90
  index_js_1.Box,
77
- { className: 'iui-content' },
91
+ {
92
+ as: 'div',
93
+ ...contentProps,
94
+ className: (0, classnames_1.default)(
95
+ 'iui-content',
96
+ contentProps?.className,
97
+ ),
98
+ },
78
99
  dragContent,
79
100
  ),
80
101
  );
@@ -10,31 +10,18 @@ const classnames_1 = tslib_1.__importDefault(require('classnames'));
10
10
  const React = tslib_1.__importStar(require('react'));
11
11
  const index_js_1 = require('../utils/index.js');
12
12
  exports.HeaderBasicButton = React.forwardRef((props, ref) => {
13
- const {
14
- onClick,
15
- className,
16
- children,
17
- style,
18
- startIcon,
19
- endIcon,
20
- styleType,
21
- size,
22
- ...rest
23
- } = props;
13
+ const { className, children, startIcon, endIcon, styleType, size, ...rest } =
14
+ props;
24
15
  styleType; // To omit and prevent eslint error.
25
16
  size; // To omit and prevent eslint error.
26
17
  return React.createElement(
27
- index_js_1.Box,
18
+ index_js_1.ButtonBase,
28
19
  {
29
- as: 'button',
30
20
  className: (0, classnames_1.default)(
31
21
  'iui-header-breadcrumb-button',
32
22
  className,
33
23
  ),
34
- onClick: onClick,
35
24
  ref: ref,
36
- type: 'button',
37
- style: style,
38
25
  ...rest,
39
26
  },
40
27
  startIcon,
@@ -16,6 +16,10 @@ type HeaderButtonProps = {
16
16
  * @default false
17
17
  */
18
18
  isActive?: boolean;
19
+ /**
20
+ * Modify the native `name` attribute of the `<button>` element.
21
+ */
22
+ htmlName?: string;
19
23
  } & Partial<Pick<DropdownButtonProps, 'menuItems'>> & Pick<ButtonProps, 'startIcon' | 'endIcon'>;
20
24
  /**
21
25
  * Header button that handles slim state of the `Header` it's in.
@@ -25,6 +25,7 @@ exports.HeaderButton = React.forwardRef((props, ref) => {
25
25
  const {
26
26
  name,
27
27
  description,
28
+ htmlName,
28
29
  isActive = false,
29
30
  startIcon,
30
31
  menuItems,
@@ -63,6 +64,7 @@ exports.HeaderButton = React.forwardRef((props, ref) => {
63
64
  ),
64
65
  ref: ref,
65
66
  disabled: disabled,
67
+ name: htmlName,
66
68
  ...(!!menuItems && { menuItems }),
67
69
  ...rest,
68
70
  }; // eslint-disable-line @typescript-eslint/no-explicit-any
@@ -26,7 +26,7 @@ exports.HeaderDropdownButton = React.forwardRef((props, ref) => {
26
26
  index_js_1.DropdownMenu,
27
27
  {
28
28
  menuItems: menuItems,
29
- style: { minWidth: menuWidth },
29
+ style: { minInlineSize: menuWidth },
30
30
  onShow: () => setIsMenuOpen(true),
31
31
  onHide: () => setIsMenuOpen(false),
32
32
  },
@@ -47,15 +47,13 @@ exports.HeaderSplitButton = React.forwardRef((props, forwardedRef) => {
47
47
  {
48
48
  placement: menuPlacement,
49
49
  menuItems: menuItems,
50
- style: { minWidth: menuWidth },
50
+ style: { minInlineSize: menuWidth },
51
51
  onShow: React.useCallback(() => setIsMenuOpen(true), []),
52
52
  onHide: React.useCallback(() => setIsMenuOpen(false), []),
53
53
  },
54
54
  React.createElement(
55
- index_js_2.Box,
55
+ index_js_2.ButtonBase,
56
56
  {
57
- as: 'button',
58
- type: 'button',
59
57
  className:
60
58
  'iui-header-breadcrumb-button iui-header-breadcrumb-button-split',
61
59
  disabled: disabled,
@@ -4,6 +4,11 @@ export type InputProps = {
4
4
  * Modify size of the input.
5
5
  */
6
6
  size?: 'small' | 'large';
7
+ /**
8
+ * Modify the native `size` attribute of the `<input>` element.
9
+ * The `width` or `inline-size` property must be unset in order to use this prop.
10
+ */
11
+ htmlSize?: number;
7
12
  };
8
13
  /**
9
14
  * Basic input component
@@ -17,13 +17,14 @@ const index_js_1 = require('../utils/index.js');
17
17
  * <Input size='small' />
18
18
  */
19
19
  exports.Input = React.forwardRef((props, ref) => {
20
- const { size, className, ...rest } = props;
20
+ const { size, htmlSize, className, ...rest } = props;
21
21
  const inputRef = React.useRef(null);
22
22
  const refs = (0, index_js_1.useMergedRefs)(inputRef, ref);
23
23
  return React.createElement(index_js_1.Box, {
24
24
  as: 'input',
25
25
  className: (0, classnames_1.default)('iui-input', className),
26
26
  'data-iui-size': size,
27
+ size: htmlSize,
27
28
  ref: refs,
28
29
  ...rest,
29
30
  });
@@ -24,6 +24,10 @@ type ProgressLinearProps = {
24
24
  * Status of progress.
25
25
  */
26
26
  status?: 'positive' | 'negative';
27
+ /**
28
+ * Pass props to ProgressLinear label group.
29
+ */
30
+ labelGroupProps?: React.ComponentProps<'div'>;
27
31
  };
28
32
  /**
29
33
  * Shows progress on a linear bar
@@ -32,6 +32,7 @@ exports.ProgressLinear = React.forwardRef((props, forwardedRef) => {
32
32
  isAnimated = false,
33
33
  status,
34
34
  className,
35
+ labelGroupProps,
35
36
  ...rest
36
37
  } = props;
37
38
  const boundedValue = (0, index_js_1.getBoundedValue)(value ?? 100, 0, 100);
@@ -54,7 +55,14 @@ exports.ProgressLinear = React.forwardRef((props, forwardedRef) => {
54
55
  labels.length > 0 &&
55
56
  React.createElement(
56
57
  index_js_1.Box,
57
- { className: 'iui-progress-indicator-linear-label' },
58
+ {
59
+ as: 'div',
60
+ ...labelGroupProps,
61
+ className: (0, classnames_1.default)(
62
+ 'iui-progress-indicator-linear-label',
63
+ labelGroupProps?.className,
64
+ ),
65
+ },
58
66
  labels.map((label, index) =>
59
67
  React.createElement('span', { key: index }, label),
60
68
  ),
@@ -9,6 +9,14 @@ type RadioProps = {
9
9
  * Status of the radio.
10
10
  */
11
11
  status?: 'positive' | 'warning' | 'negative';
12
+ /**
13
+ * Passes props to Radio label.
14
+ */
15
+ labelProps?: React.ComponentProps<'span'>;
16
+ /**
17
+ * Passes props to Radio wrapper.
18
+ */
19
+ wrapperProps?: React.ComponentProps<'label'>;
12
20
  };
13
21
  /**
14
22
  * Basic radio input component
@@ -20,16 +20,22 @@ const index_js_1 = require('../utils/index.js');
20
20
  * <Radio status='negative' label='Negative' />
21
21
  */
22
22
  exports.Radio = React.forwardRef((props, ref) => {
23
- const { className, disabled = false, label, status, style, ...rest } = props;
23
+ const {
24
+ className,
25
+ disabled = false,
26
+ label,
27
+ status,
28
+ labelProps,
29
+ wrapperProps,
30
+ style,
31
+ ...rest
32
+ } = props;
24
33
  const inputElementRef = React.useRef(null);
25
34
  const refs = (0, index_js_1.useMergedRefs)(inputElementRef, ref);
26
35
  const radio = React.createElement(index_js_1.Box, {
27
36
  as: 'input',
28
- className: (0, classnames_1.default)(
29
- 'iui-radio',
30
- className && { [className]: !label },
31
- ),
32
- style: !label ? style : undefined,
37
+ className: (0, classnames_1.default)('iui-radio', className),
38
+ style: style,
33
39
  disabled: disabled,
34
40
  type: 'radio',
35
41
  ref: refs,
@@ -41,18 +47,25 @@ exports.Radio = React.forwardRef((props, ref) => {
41
47
  index_js_1.Box,
42
48
  {
43
49
  as: 'label',
50
+ ...wrapperProps,
44
51
  className: (0, classnames_1.default)(
45
52
  'iui-radio-wrapper',
46
53
  { 'iui-disabled': disabled, [`iui-${status}`]: !!status },
47
- className,
54
+ wrapperProps?.className,
48
55
  ),
49
- style: style,
50
56
  },
51
57
  radio,
52
58
  label &&
53
59
  React.createElement(
54
60
  index_js_1.Box,
55
- { as: 'span', className: 'iui-radio-label' },
61
+ {
62
+ as: 'span',
63
+ ...labelProps,
64
+ className: (0, classnames_1.default)(
65
+ 'iui-radio-label',
66
+ labelProps?.className,
67
+ ),
68
+ },
56
69
  label,
57
70
  ),
58
71
  );
@@ -13,6 +13,22 @@ type RadioTileProps = {
13
13
  * Additional description, if needed.
14
14
  */
15
15
  description?: React.ReactNode;
16
+ /**
17
+ * Passes props to tile wrapper.
18
+ */
19
+ wrapperProps?: React.ComponentProps<'label'>;
20
+ /**
21
+ * Passes props to tile icon.
22
+ */
23
+ iconProps?: React.ComponentProps<'span'>;
24
+ /**
25
+ * Passes props to tile label.
26
+ */
27
+ labelProps?: React.ComponentProps<'div'>;
28
+ /**
29
+ * Passes props to tile sublabel.
30
+ */
31
+ subLabelProps?: React.ComponentProps<'div'>;
16
32
  };
17
33
  /**
18
34
  * RadioTile component to be used in RadioTileGroup component
@@ -15,45 +15,79 @@ const index_js_1 = require('../utils/index.js');
15
15
  * <RadioTile label='My tile' description='Some info' icon={<SvgSmileyHappy />} />
16
16
  */
17
17
  exports.RadioTile = React.forwardRef((props, ref) => {
18
- const { icon, label, description, className, style, ...rest } = props;
18
+ const {
19
+ icon,
20
+ label,
21
+ description,
22
+ className,
23
+ wrapperProps,
24
+ iconProps,
25
+ labelProps,
26
+ subLabelProps,
27
+ style,
28
+ ...rest
29
+ } = props;
19
30
  const inputElementRef = React.useRef(null);
20
31
  const refs = (0, index_js_1.useMergedRefs)(inputElementRef, ref);
21
32
  return React.createElement(
22
33
  index_js_1.Box,
23
34
  {
24
35
  as: 'label',
25
- className: (0, classnames_1.default)('iui-radio-tile', className),
26
- style: style,
36
+ 'data-iui-disabled': props.disabled ? 'true' : undefined,
37
+ ...wrapperProps,
38
+ className: (0, classnames_1.default)(
39
+ 'iui-radio-tile',
40
+ wrapperProps?.className,
41
+ ),
27
42
  },
28
43
  React.createElement(index_js_1.Box, {
29
44
  as: 'input',
30
- className: 'iui-radio-tile-input',
31
- type: 'radio',
32
45
  ref: refs,
46
+ className: (0, classnames_1.default)('iui-radio-tile-input', className),
47
+ style: style,
48
+ type: 'radio',
33
49
  ...rest,
34
50
  }),
35
- React.createElement(
36
- index_js_1.Box,
37
- { className: 'iui-radio-tile-content' },
38
- icon &&
39
- React.createElement(
40
- index_js_1.Box,
41
- { as: 'span', className: 'iui-radio-tile-icon', 'aria-hidden': true },
42
- icon,
43
- ),
44
- label &&
45
- React.createElement(
46
- index_js_1.Box,
47
- { className: 'iui-radio-tile-label' },
48
- label,
49
- ),
50
- description &&
51
- React.createElement(
52
- index_js_1.Box,
53
- { className: 'iui-radio-tile-sublabel' },
54
- description,
55
- ),
56
- ),
51
+ icon &&
52
+ React.createElement(
53
+ index_js_1.Box,
54
+ {
55
+ as: 'span',
56
+ 'aria-hidden': true,
57
+ ...iconProps,
58
+ className: (0, classnames_1.default)(
59
+ 'iui-radio-tile-icon',
60
+ iconProps?.className,
61
+ ),
62
+ },
63
+ icon,
64
+ ),
65
+ label &&
66
+ React.createElement(
67
+ index_js_1.Box,
68
+ {
69
+ as: 'div',
70
+ ...labelProps,
71
+ className: (0, classnames_1.default)(
72
+ 'iui-radio-tile-label',
73
+ labelProps?.className,
74
+ ),
75
+ },
76
+ label,
77
+ ),
78
+ description &&
79
+ React.createElement(
80
+ index_js_1.Box,
81
+ {
82
+ as: 'div',
83
+ ...subLabelProps,
84
+ className: (0, classnames_1.default)(
85
+ 'iui-radio-tile-sublabel',
86
+ subLabelProps?.className,
87
+ ),
88
+ },
89
+ description,
90
+ ),
57
91
  );
58
92
  });
59
93
  exports.default = exports.RadioTile;
@@ -214,8 +214,8 @@ const Select = (props) => {
214
214
  role: 'listbox',
215
215
  className: (0, classnames_1.default)('iui-scroll', menuClassName),
216
216
  style: {
217
- minWidth,
218
- maxWidth: `min(${minWidth * 2}px, 90vw)`,
217
+ minInlineSize: minWidth,
218
+ maxInlineSize: `min(${minWidth * 2}px, 90vw)`,
219
219
  ...menuStyle,
220
220
  },
221
221
  id: `${uid}-menu`,
@@ -48,6 +48,22 @@ type SideNavigationProps = {
48
48
  * @default false
49
49
  */
50
50
  isSubmenuOpen?: boolean;
51
+ /**
52
+ * Passes props for SideNav wrapper.
53
+ */
54
+ wrapperProps?: React.ComponentProps<'div'>;
55
+ /**
56
+ * Passes props for SideNav content.
57
+ */
58
+ contentProps?: React.ComponentProps<'div'>;
59
+ /**
60
+ * Passes props for SideNav top.
61
+ */
62
+ topProps?: React.ComponentProps<'div'>;
63
+ /**
64
+ * Passes props for SideNav bottom.
65
+ */
66
+ bottomProps?: React.ComponentProps<'div'>;
51
67
  };
52
68
  /**
53
69
  * Left side navigation menu component.
@@ -35,6 +35,10 @@ exports.SideNavigation = React.forwardRef((props, forwardedRef) => {
35
35
  onExpanderClick,
36
36
  submenu,
37
37
  isSubmenuOpen = false,
38
+ wrapperProps,
39
+ contentProps,
40
+ topProps,
41
+ bottomProps,
38
42
  ...rest
39
43
  } = props;
40
44
  const [_isExpanded, _setIsExpanded] = React.useState(isExpanded);
@@ -55,28 +59,48 @@ exports.SideNavigation = React.forwardRef((props, forwardedRef) => {
55
59
  return React.createElement(
56
60
  index_js_1.Box,
57
61
  {
62
+ ...wrapperProps,
58
63
  className: (0, classnames_1.default)(
59
64
  'iui-side-navigation-wrapper',
60
- className,
65
+ wrapperProps?.className,
61
66
  ),
62
67
  ref: forwardedRef,
63
- ...rest,
64
68
  },
65
69
  React.createElement(
66
70
  index_js_1.Box,
67
71
  {
68
- className: (0, classnames_1.default)('iui-side-navigation', {
69
- 'iui-expanded': _isExpanded,
70
- 'iui-collapsed': !_isExpanded,
71
- }),
72
+ as: 'div',
73
+ className: (0, classnames_1.default)(
74
+ 'iui-side-navigation',
75
+ {
76
+ 'iui-expanded': _isExpanded,
77
+ 'iui-collapsed': !_isExpanded,
78
+ },
79
+ className,
80
+ ),
81
+ ...rest,
72
82
  },
73
83
  expanderPlacement === 'top' && ExpandButton,
74
84
  React.createElement(
75
85
  index_js_1.Box,
76
- { className: 'iui-sidenav-content' },
86
+ {
87
+ as: 'div',
88
+ ...contentProps,
89
+ className: (0, classnames_1.default)(
90
+ 'iui-sidenav-content',
91
+ contentProps?.className,
92
+ ),
93
+ },
77
94
  React.createElement(
78
95
  index_js_1.Box,
79
- { className: 'iui-top' },
96
+ {
97
+ as: 'div',
98
+ ...topProps,
99
+ className: (0, classnames_1.default)(
100
+ 'iui-top',
101
+ topProps?.className,
102
+ ),
103
+ },
80
104
  items.map((sidenavButton, index) =>
81
105
  !_isExpanded
82
106
  ? React.createElement(
@@ -93,7 +117,14 @@ exports.SideNavigation = React.forwardRef((props, forwardedRef) => {
93
117
  ),
94
118
  React.createElement(
95
119
  index_js_1.Box,
96
- { className: 'iui-bottom' },
120
+ {
121
+ as: 'div',
122
+ ...bottomProps,
123
+ className: (0, classnames_1.default)(
124
+ 'iui-bottom',
125
+ bottomProps?.className,
126
+ ),
127
+ },
97
128
  secondaryItems?.map((sidenavButton, index) =>
98
129
  !_isExpanded
99
130
  ? React.createElement(
@@ -68,6 +68,30 @@ export type SliderProps = {
68
68
  * Additional props for container `<div>` that hold the slider rail, thumbs, and tracks.
69
69
  */
70
70
  railContainerProps?: React.HTMLAttributes<HTMLDivElement>;
71
+ /**
72
+ * Allows props to be passed for slider-min
73
+ */
74
+ minProps?: React.ComponentProps<'span'>;
75
+ /**
76
+ * Allows props to be passed for slider-max
77
+ */
78
+ maxProps?: React.ComponentProps<'span'>;
79
+ /**
80
+ * Allows props to be passed for slider-rail
81
+ */
82
+ railProps?: React.ComponentProps<'div'>;
83
+ /**
84
+ * Allows props to be passed for slider-track
85
+ */
86
+ trackProps?: React.ComponentProps<'div'>;
87
+ /**
88
+ * Allows props to be passed for slider-tick
89
+ */
90
+ tickProps?: React.ComponentProps<'span'>;
91
+ /**
92
+ * Allows props to be passed for slider-ticks
93
+ */
94
+ ticksProps?: React.ComponentProps<'div'>;
71
95
  /**
72
96
  * Defines the allowed behavior when moving Thumbs when multiple Thumbs are
73
97
  * shown. It controls if a Thumb movement should be limited to only move in