@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.
- package/CHANGELOG.md +98 -1
- package/cjs/core/Avatar/Avatar.d.ts +3 -2
- package/cjs/core/Avatar/Avatar.js +21 -19
- package/cjs/core/AvatarGroup/AvatarGroup.js +3 -8
- package/cjs/core/Buttons/Button/Button.d.ts +15 -2
- package/cjs/core/Buttons/Button/Button.js +23 -9
- package/cjs/core/Buttons/DropdownButton/DropdownButton.d.ts +1 -1
- package/cjs/core/Buttons/DropdownButton/DropdownButton.js +1 -1
- package/cjs/core/Buttons/IconButton/IconButton.d.ts +5 -1
- package/cjs/core/Buttons/IconButton/IconButton.js +11 -5
- package/cjs/core/Buttons/SplitButton/SplitButton.d.ts +9 -0
- package/cjs/core/Buttons/SplitButton/SplitButton.js +22 -13
- package/cjs/core/Carousel/Carousel.d.ts +6 -4
- package/cjs/core/Carousel/Carousel.js +2 -2
- package/cjs/core/Carousel/CarouselDot.js +1 -3
- package/cjs/core/Carousel/CarouselNavigation.d.ts +6 -4
- package/cjs/core/ColorPicker/ColorBuilder.js +2 -1
- package/cjs/core/ComboBox/ComboBoxInput.js +1 -1
- package/cjs/core/ComboBox/ComboBoxMenu.js +5 -5
- package/cjs/core/DatePicker/DatePicker.js +7 -1
- package/cjs/core/Dialog/Dialog.js +1 -2
- package/cjs/core/Dialog/DialogContent.d.ts +2 -1
- package/cjs/core/Dialog/DialogContent.js +25 -1
- package/cjs/core/Dialog/DialogMain.js +5 -6
- package/cjs/core/ExpandableBlock/ExpandableBlock.js +1 -3
- package/cjs/core/FileUpload/FileUpload.d.ts +4 -0
- package/cjs/core/FileUpload/FileUpload.js +24 -3
- package/cjs/core/Header/HeaderBasicButton.js +3 -16
- package/cjs/core/Header/HeaderButton.d.ts +4 -0
- package/cjs/core/Header/HeaderButton.js +2 -0
- package/cjs/core/Header/HeaderDropdownButton.js +1 -1
- package/cjs/core/Header/HeaderSplitButton.js +2 -4
- package/cjs/core/Input/Input.d.ts +5 -0
- package/cjs/core/Input/Input.js +2 -1
- package/cjs/core/ProgressIndicators/ProgressLinear.d.ts +4 -0
- package/cjs/core/ProgressIndicators/ProgressLinear.js +9 -1
- package/cjs/core/Radio/Radio.d.ts +8 -0
- package/cjs/core/Radio/Radio.js +22 -9
- package/cjs/core/RadioTiles/RadioTile.d.ts +16 -0
- package/cjs/core/RadioTiles/RadioTile.js +61 -27
- package/cjs/core/Select/Select.js +2 -2
- package/cjs/core/SideNavigation/SideNavigation.d.ts +16 -0
- package/cjs/core/SideNavigation/SideNavigation.js +40 -9
- package/cjs/core/Slider/Slider.d.ts +24 -0
- package/cjs/core/Slider/Slider.js +58 -10
- package/cjs/core/Slider/Thumb.js +2 -2
- package/cjs/core/Slider/Track.d.ts +1 -1
- package/cjs/core/Slider/Track.js +17 -6
- package/cjs/core/Stepper/Stepper.d.ts +26 -1
- package/cjs/core/Stepper/Stepper.js +35 -6
- package/cjs/core/Stepper/StepperStep.d.ts +17 -0
- package/cjs/core/Stepper/StepperStep.js +33 -8
- package/cjs/core/Stepper/WorkflowDiagram.d.ts +11 -1
- package/cjs/core/Stepper/WorkflowDiagram.js +23 -10
- package/cjs/core/Stepper/WorkflowDiagramStep.d.ts +6 -1
- package/cjs/core/Stepper/WorkflowDiagramStep.js +9 -2
- package/cjs/core/Table/SubRowExpander.js +1 -1
- package/cjs/core/Table/Table.d.ts +16 -0
- package/cjs/core/Table/Table.js +50 -9
- package/cjs/core/Table/TableCell.js +1 -1
- package/cjs/core/Table/TablePaginator.js +1 -3
- package/cjs/core/Tabs/Tab.js +1 -2
- package/cjs/core/ThemeProvider/ThemeContext.d.ts +1 -1
- package/cjs/core/ThemeProvider/ThemeProvider.d.ts +23 -3
- package/cjs/core/ThemeProvider/ThemeProvider.js +56 -23
- package/cjs/core/Tile/Tile.d.ts +3 -2
- package/cjs/core/Toast/Toast.js +4 -9
- package/cjs/core/Tooltip/Tooltip.d.ts +1 -1
- package/cjs/core/Tooltip/Tooltip.js +1 -2
- package/cjs/core/Tree/TreeNode.js +1 -1
- package/cjs/core/utils/components/ButtonBase.d.ts +14 -0
- package/cjs/core/utils/components/ButtonBase.js +46 -0
- package/cjs/core/utils/components/Popover.js +5 -3
- package/cjs/core/utils/components/Resizer.js +21 -13
- package/cjs/core/utils/components/VirtualScroll.js +4 -4
- package/cjs/core/utils/components/index.d.ts +1 -0
- package/cjs/core/utils/components/index.js +1 -0
- package/cjs/core/utils/functions/colors.d.ts +1 -1
- package/cjs/core/utils/functions/colors.js +1 -13
- package/cjs/core/utils/hooks/index.d.ts +1 -0
- package/cjs/core/utils/hooks/index.js +1 -0
- package/cjs/core/utils/hooks/useGlobals.d.ts +1 -1
- package/cjs/core/utils/hooks/useUncontrolledState.d.ts +6 -0
- package/cjs/core/utils/hooks/useUncontrolledState.js +18 -0
- package/cjs/styles.js +4 -11
- package/esm/core/Avatar/Avatar.d.ts +3 -2
- package/esm/core/Avatar/Avatar.js +21 -17
- package/esm/core/AvatarGroup/AvatarGroup.js +3 -8
- package/esm/core/Buttons/Button/Button.d.ts +15 -2
- package/esm/core/Buttons/Button/Button.js +18 -10
- package/esm/core/Buttons/DropdownButton/DropdownButton.d.ts +1 -1
- package/esm/core/Buttons/DropdownButton/DropdownButton.js +1 -1
- package/esm/core/Buttons/IconButton/IconButton.d.ts +5 -1
- package/esm/core/Buttons/IconButton/IconButton.js +9 -6
- package/esm/core/Buttons/SplitButton/SplitButton.d.ts +9 -0
- package/esm/core/Buttons/SplitButton/SplitButton.js +22 -13
- package/esm/core/Carousel/Carousel.d.ts +6 -4
- package/esm/core/Carousel/Carousel.js +8 -3
- package/esm/core/Carousel/CarouselDot.js +2 -4
- package/esm/core/Carousel/CarouselNavigation.d.ts +6 -4
- package/esm/core/ColorPicker/ColorBuilder.js +2 -1
- package/esm/core/ComboBox/ComboBoxInput.js +1 -1
- package/esm/core/ComboBox/ComboBoxMenu.js +5 -5
- package/esm/core/DatePicker/DatePicker.js +8 -1
- package/esm/core/Dialog/Dialog.js +1 -1
- package/esm/core/Dialog/DialogContent.d.ts +2 -1
- package/esm/core/Dialog/DialogContent.js +25 -2
- package/esm/core/Dialog/DialogMain.js +5 -6
- package/esm/core/ExpandableBlock/ExpandableBlock.js +2 -3
- package/esm/core/FileUpload/FileUpload.d.ts +4 -0
- package/esm/core/FileUpload/FileUpload.js +26 -3
- package/esm/core/Header/HeaderBasicButton.js +4 -17
- package/esm/core/Header/HeaderButton.d.ts +4 -0
- package/esm/core/Header/HeaderButton.js +2 -0
- package/esm/core/Header/HeaderDropdownButton.js +1 -1
- package/esm/core/Header/HeaderSplitButton.js +8 -5
- package/esm/core/Input/Input.d.ts +5 -0
- package/esm/core/Input/Input.js +2 -1
- package/esm/core/ProgressIndicators/ProgressLinear.d.ts +4 -0
- package/esm/core/ProgressIndicators/ProgressLinear.js +9 -1
- package/esm/core/Radio/Radio.d.ts +8 -0
- package/esm/core/Radio/Radio.js +19 -6
- package/esm/core/RadioTiles/RadioTile.d.ts +16 -0
- package/esm/core/RadioTiles/RadioTile.js +52 -22
- package/esm/core/Select/Select.js +2 -2
- package/esm/core/SideNavigation/SideNavigation.d.ts +16 -0
- package/esm/core/SideNavigation/SideNavigation.js +31 -9
- package/esm/core/Slider/Slider.d.ts +24 -0
- package/esm/core/Slider/Slider.js +43 -10
- package/esm/core/Slider/Thumb.js +2 -2
- package/esm/core/Slider/Track.d.ts +1 -1
- package/esm/core/Slider/Track.js +14 -6
- package/esm/core/Stepper/Stepper.d.ts +26 -1
- package/esm/core/Stepper/Stepper.js +32 -6
- package/esm/core/Stepper/StepperStep.d.ts +17 -0
- package/esm/core/Stepper/StepperStep.js +27 -8
- package/esm/core/Stepper/WorkflowDiagram.d.ts +11 -1
- package/esm/core/Stepper/WorkflowDiagram.js +10 -7
- package/esm/core/Stepper/WorkflowDiagramStep.d.ts +6 -1
- package/esm/core/Stepper/WorkflowDiagramStep.js +6 -2
- package/esm/core/Table/SubRowExpander.js +1 -1
- package/esm/core/Table/Table.d.ts +16 -0
- package/esm/core/Table/Table.js +47 -9
- package/esm/core/Table/TableCell.js +1 -1
- package/esm/core/Table/TablePaginator.js +2 -3
- package/esm/core/Tabs/Tab.js +2 -3
- package/esm/core/ThemeProvider/ThemeContext.d.ts +1 -1
- package/esm/core/ThemeProvider/ThemeProvider.d.ts +23 -3
- package/esm/core/ThemeProvider/ThemeProvider.js +64 -24
- package/esm/core/Tile/Tile.d.ts +3 -2
- package/esm/core/Toast/Toast.js +5 -9
- package/esm/core/Tooltip/Tooltip.d.ts +1 -1
- package/esm/core/Tooltip/Tooltip.js +1 -1
- package/esm/core/Tree/TreeNode.js +1 -1
- package/esm/core/utils/components/ButtonBase.d.ts +14 -0
- package/esm/core/utils/components/ButtonBase.js +42 -0
- package/esm/core/utils/components/Popover.js +5 -3
- package/esm/core/utils/components/Resizer.js +21 -13
- package/esm/core/utils/components/VirtualScroll.js +4 -4
- package/esm/core/utils/components/index.d.ts +1 -0
- package/esm/core/utils/components/index.js +1 -0
- package/esm/core/utils/functions/colors.d.ts +1 -1
- package/esm/core/utils/functions/colors.js +1 -13
- package/esm/core/utils/functions/import.js +2 -1
- package/esm/core/utils/hooks/index.d.ts +1 -0
- package/esm/core/utils/hooks/index.js +1 -0
- package/esm/core/utils/hooks/useGlobals.d.ts +1 -1
- package/esm/core/utils/hooks/useUncontrolledState.d.ts +6 -0
- package/esm/core/utils/hooks/useUncontrolledState.js +13 -0
- package/esm/styles.js +4 -11
- package/package.json +2 -2
- package/styles.css +723 -1566
|
@@ -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.
|
|
@@ -13,7 +13,14 @@ import { Box, useMergedRefs } from '../utils/index.js';
|
|
|
13
13
|
* <FileUpload dragContent='Drop file here' onFileDropped={console.log}><Textarea /></FileUpload>
|
|
14
14
|
*/
|
|
15
15
|
export const FileUpload = React.forwardRef((props, ref) => {
|
|
16
|
-
const {
|
|
16
|
+
const {
|
|
17
|
+
dragContent,
|
|
18
|
+
children,
|
|
19
|
+
onFileDropped,
|
|
20
|
+
className,
|
|
21
|
+
contentProps,
|
|
22
|
+
...rest
|
|
23
|
+
} = props;
|
|
17
24
|
const [isDragActive, setIsDragActive] = React.useState(false);
|
|
18
25
|
const fileUploadRef = React.useRef(null);
|
|
19
26
|
const refs = useMergedRefs(fileUploadRef, ref);
|
|
@@ -58,9 +65,25 @@ export const FileUpload = React.forwardRef((props, ref) => {
|
|
|
58
65
|
},
|
|
59
66
|
dragContent
|
|
60
67
|
? children
|
|
61
|
-
: React.createElement(
|
|
68
|
+
: React.createElement(
|
|
69
|
+
Box,
|
|
70
|
+
{
|
|
71
|
+
as: 'div',
|
|
72
|
+
...contentProps,
|
|
73
|
+
className: cx('iui-content', contentProps?.className),
|
|
74
|
+
},
|
|
75
|
+
children,
|
|
76
|
+
),
|
|
62
77
|
dragContent &&
|
|
63
|
-
React.createElement(
|
|
78
|
+
React.createElement(
|
|
79
|
+
Box,
|
|
80
|
+
{
|
|
81
|
+
as: 'div',
|
|
82
|
+
...contentProps,
|
|
83
|
+
className: cx('iui-content', contentProps?.className),
|
|
84
|
+
},
|
|
85
|
+
dragContent,
|
|
86
|
+
),
|
|
64
87
|
);
|
|
65
88
|
});
|
|
66
89
|
export default FileUpload;
|
|
@@ -4,30 +4,17 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import cx from 'classnames';
|
|
6
6
|
import * as React from 'react';
|
|
7
|
-
import {
|
|
7
|
+
import { ButtonBase } from '../utils/index.js';
|
|
8
8
|
export const HeaderBasicButton = React.forwardRef((props, ref) => {
|
|
9
|
-
const {
|
|
10
|
-
|
|
11
|
-
className,
|
|
12
|
-
children,
|
|
13
|
-
style,
|
|
14
|
-
startIcon,
|
|
15
|
-
endIcon,
|
|
16
|
-
styleType,
|
|
17
|
-
size,
|
|
18
|
-
...rest
|
|
19
|
-
} = props;
|
|
9
|
+
const { className, children, startIcon, endIcon, styleType, size, ...rest } =
|
|
10
|
+
props;
|
|
20
11
|
styleType; // To omit and prevent eslint error.
|
|
21
12
|
size; // To omit and prevent eslint error.
|
|
22
13
|
return React.createElement(
|
|
23
|
-
|
|
14
|
+
ButtonBase,
|
|
24
15
|
{
|
|
25
|
-
as: 'button',
|
|
26
16
|
className: cx('iui-header-breadcrumb-button', className),
|
|
27
|
-
onClick: onClick,
|
|
28
17
|
ref: ref,
|
|
29
|
-
type: 'button',
|
|
30
|
-
style: style,
|
|
31
18
|
...rest,
|
|
32
19
|
},
|
|
33
20
|
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.
|
|
@@ -21,6 +21,7 @@ export const HeaderButton = React.forwardRef((props, ref) => {
|
|
|
21
21
|
const {
|
|
22
22
|
name,
|
|
23
23
|
description,
|
|
24
|
+
htmlName,
|
|
24
25
|
isActive = false,
|
|
25
26
|
startIcon,
|
|
26
27
|
menuItems,
|
|
@@ -59,6 +60,7 @@ export const HeaderButton = React.forwardRef((props, ref) => {
|
|
|
59
60
|
),
|
|
60
61
|
ref: ref,
|
|
61
62
|
disabled: disabled,
|
|
63
|
+
name: htmlName,
|
|
62
64
|
...(!!menuItems && { menuItems }),
|
|
63
65
|
...rest,
|
|
64
66
|
}; // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
@@ -26,7 +26,7 @@ export const HeaderDropdownButton = React.forwardRef((props, ref) => {
|
|
|
26
26
|
DropdownMenu,
|
|
27
27
|
{
|
|
28
28
|
menuItems: menuItems,
|
|
29
|
-
style: {
|
|
29
|
+
style: { minInlineSize: menuWidth },
|
|
30
30
|
onShow: () => setIsMenuOpen(true),
|
|
31
31
|
onHide: () => setIsMenuOpen(false),
|
|
32
32
|
},
|
|
@@ -5,7 +5,12 @@
|
|
|
5
5
|
import cx from 'classnames';
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import { DropdownMenu } from '../DropdownMenu/index.js';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
SvgCaretDownSmall,
|
|
10
|
+
SvgCaretUpSmall,
|
|
11
|
+
Box,
|
|
12
|
+
ButtonBase,
|
|
13
|
+
} from '../utils/index.js';
|
|
9
14
|
import { HeaderBasicButton } from './HeaderBasicButton.js';
|
|
10
15
|
export const HeaderSplitButton = React.forwardRef((props, forwardedRef) => {
|
|
11
16
|
const {
|
|
@@ -40,15 +45,13 @@ export const HeaderSplitButton = React.forwardRef((props, forwardedRef) => {
|
|
|
40
45
|
{
|
|
41
46
|
placement: menuPlacement,
|
|
42
47
|
menuItems: menuItems,
|
|
43
|
-
style: {
|
|
48
|
+
style: { minInlineSize: menuWidth },
|
|
44
49
|
onShow: React.useCallback(() => setIsMenuOpen(true), []),
|
|
45
50
|
onHide: React.useCallback(() => setIsMenuOpen(false), []),
|
|
46
51
|
},
|
|
47
52
|
React.createElement(
|
|
48
|
-
|
|
53
|
+
ButtonBase,
|
|
49
54
|
{
|
|
50
|
-
as: 'button',
|
|
51
|
-
type: 'button',
|
|
52
55
|
className:
|
|
53
56
|
'iui-header-breadcrumb-button iui-header-breadcrumb-button-split',
|
|
54
57
|
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
|
package/esm/core/Input/Input.js
CHANGED
|
@@ -13,13 +13,14 @@ import { useMergedRefs, Box } from '../utils/index.js';
|
|
|
13
13
|
* <Input size='small' />
|
|
14
14
|
*/
|
|
15
15
|
export const Input = React.forwardRef((props, ref) => {
|
|
16
|
-
const { size, className, ...rest } = props;
|
|
16
|
+
const { size, htmlSize, className, ...rest } = props;
|
|
17
17
|
const inputRef = React.useRef(null);
|
|
18
18
|
const refs = useMergedRefs(inputRef, ref);
|
|
19
19
|
return React.createElement(Box, {
|
|
20
20
|
as: 'input',
|
|
21
21
|
className: cx('iui-input', className),
|
|
22
22
|
'data-iui-size': size,
|
|
23
|
+
size: htmlSize,
|
|
23
24
|
ref: refs,
|
|
24
25
|
...rest,
|
|
25
26
|
});
|
|
@@ -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
|
|
@@ -28,6 +28,7 @@ export const ProgressLinear = React.forwardRef((props, forwardedRef) => {
|
|
|
28
28
|
isAnimated = false,
|
|
29
29
|
status,
|
|
30
30
|
className,
|
|
31
|
+
labelGroupProps,
|
|
31
32
|
...rest
|
|
32
33
|
} = props;
|
|
33
34
|
const boundedValue = getBoundedValue(value ?? 100, 0, 100);
|
|
@@ -47,7 +48,14 @@ export const ProgressLinear = React.forwardRef((props, forwardedRef) => {
|
|
|
47
48
|
labels.length > 0 &&
|
|
48
49
|
React.createElement(
|
|
49
50
|
Box,
|
|
50
|
-
{
|
|
51
|
+
{
|
|
52
|
+
as: 'div',
|
|
53
|
+
...labelGroupProps,
|
|
54
|
+
className: cx(
|
|
55
|
+
'iui-progress-indicator-linear-label',
|
|
56
|
+
labelGroupProps?.className,
|
|
57
|
+
),
|
|
58
|
+
},
|
|
51
59
|
labels.map((label, index) =>
|
|
52
60
|
React.createElement('span', { key: index }, label),
|
|
53
61
|
),
|
|
@@ -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
|
package/esm/core/Radio/Radio.js
CHANGED
|
@@ -16,13 +16,22 @@ import { useMergedRefs, Box } from '../utils/index.js';
|
|
|
16
16
|
* <Radio status='negative' label='Negative' />
|
|
17
17
|
*/
|
|
18
18
|
export const Radio = React.forwardRef((props, ref) => {
|
|
19
|
-
const {
|
|
19
|
+
const {
|
|
20
|
+
className,
|
|
21
|
+
disabled = false,
|
|
22
|
+
label,
|
|
23
|
+
status,
|
|
24
|
+
labelProps,
|
|
25
|
+
wrapperProps,
|
|
26
|
+
style,
|
|
27
|
+
...rest
|
|
28
|
+
} = props;
|
|
20
29
|
const inputElementRef = React.useRef(null);
|
|
21
30
|
const refs = useMergedRefs(inputElementRef, ref);
|
|
22
31
|
const radio = React.createElement(Box, {
|
|
23
32
|
as: 'input',
|
|
24
|
-
className: cx('iui-radio', className
|
|
25
|
-
style:
|
|
33
|
+
className: cx('iui-radio', className),
|
|
34
|
+
style: style,
|
|
26
35
|
disabled: disabled,
|
|
27
36
|
type: 'radio',
|
|
28
37
|
ref: refs,
|
|
@@ -34,18 +43,22 @@ export const Radio = React.forwardRef((props, ref) => {
|
|
|
34
43
|
Box,
|
|
35
44
|
{
|
|
36
45
|
as: 'label',
|
|
46
|
+
...wrapperProps,
|
|
37
47
|
className: cx(
|
|
38
48
|
'iui-radio-wrapper',
|
|
39
49
|
{ 'iui-disabled': disabled, [`iui-${status}`]: !!status },
|
|
40
|
-
className,
|
|
50
|
+
wrapperProps?.className,
|
|
41
51
|
),
|
|
42
|
-
style: style,
|
|
43
52
|
},
|
|
44
53
|
radio,
|
|
45
54
|
label &&
|
|
46
55
|
React.createElement(
|
|
47
56
|
Box,
|
|
48
|
-
{
|
|
57
|
+
{
|
|
58
|
+
as: 'span',
|
|
59
|
+
...labelProps,
|
|
60
|
+
className: cx('iui-radio-label', labelProps?.className),
|
|
61
|
+
},
|
|
49
62
|
label,
|
|
50
63
|
),
|
|
51
64
|
);
|
|
@@ -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
|
|
@@ -11,37 +11,67 @@ import { useMergedRefs, Box } from '../utils/index.js';
|
|
|
11
11
|
* <RadioTile label='My tile' description='Some info' icon={<SvgSmileyHappy />} />
|
|
12
12
|
*/
|
|
13
13
|
export const RadioTile = React.forwardRef((props, ref) => {
|
|
14
|
-
const {
|
|
14
|
+
const {
|
|
15
|
+
icon,
|
|
16
|
+
label,
|
|
17
|
+
description,
|
|
18
|
+
className,
|
|
19
|
+
wrapperProps,
|
|
20
|
+
iconProps,
|
|
21
|
+
labelProps,
|
|
22
|
+
subLabelProps,
|
|
23
|
+
style,
|
|
24
|
+
...rest
|
|
25
|
+
} = props;
|
|
15
26
|
const inputElementRef = React.useRef(null);
|
|
16
27
|
const refs = useMergedRefs(inputElementRef, ref);
|
|
17
28
|
return React.createElement(
|
|
18
29
|
Box,
|
|
19
|
-
{
|
|
30
|
+
{
|
|
31
|
+
as: 'label',
|
|
32
|
+
'data-iui-disabled': props.disabled ? 'true' : undefined,
|
|
33
|
+
...wrapperProps,
|
|
34
|
+
className: cx('iui-radio-tile', wrapperProps?.className),
|
|
35
|
+
},
|
|
20
36
|
React.createElement(Box, {
|
|
21
37
|
as: 'input',
|
|
22
|
-
className: 'iui-radio-tile-input',
|
|
23
|
-
type: 'radio',
|
|
24
38
|
ref: refs,
|
|
39
|
+
className: cx('iui-radio-tile-input', className),
|
|
40
|
+
style: style,
|
|
41
|
+
type: 'radio',
|
|
25
42
|
...rest,
|
|
26
43
|
}),
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
icon,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
icon &&
|
|
45
|
+
React.createElement(
|
|
46
|
+
Box,
|
|
47
|
+
{
|
|
48
|
+
as: 'span',
|
|
49
|
+
'aria-hidden': true,
|
|
50
|
+
...iconProps,
|
|
51
|
+
className: cx('iui-radio-tile-icon', iconProps?.className),
|
|
52
|
+
},
|
|
53
|
+
icon,
|
|
54
|
+
),
|
|
55
|
+
label &&
|
|
56
|
+
React.createElement(
|
|
57
|
+
Box,
|
|
58
|
+
{
|
|
59
|
+
as: 'div',
|
|
60
|
+
...labelProps,
|
|
61
|
+
className: cx('iui-radio-tile-label', labelProps?.className),
|
|
62
|
+
},
|
|
63
|
+
label,
|
|
64
|
+
),
|
|
65
|
+
description &&
|
|
66
|
+
React.createElement(
|
|
67
|
+
Box,
|
|
68
|
+
{
|
|
69
|
+
as: 'div',
|
|
70
|
+
...subLabelProps,
|
|
71
|
+
className: cx('iui-radio-tile-sublabel', subLabelProps?.className),
|
|
72
|
+
},
|
|
73
|
+
description,
|
|
74
|
+
),
|
|
45
75
|
);
|
|
46
76
|
});
|
|
47
77
|
export default RadioTile;
|
|
@@ -210,8 +210,8 @@ export const Select = (props) => {
|
|
|
210
210
|
role: 'listbox',
|
|
211
211
|
className: cx('iui-scroll', menuClassName),
|
|
212
212
|
style: {
|
|
213
|
-
minWidth,
|
|
214
|
-
|
|
213
|
+
minInlineSize: minWidth,
|
|
214
|
+
maxInlineSize: `min(${minWidth * 2}px, 90vw)`,
|
|
215
215
|
...menuStyle,
|
|
216
216
|
},
|
|
217
217
|
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.
|
|
@@ -31,6 +31,10 @@ export const SideNavigation = React.forwardRef((props, forwardedRef) => {
|
|
|
31
31
|
onExpanderClick,
|
|
32
32
|
submenu,
|
|
33
33
|
isSubmenuOpen = false,
|
|
34
|
+
wrapperProps,
|
|
35
|
+
contentProps,
|
|
36
|
+
topProps,
|
|
37
|
+
bottomProps,
|
|
34
38
|
...rest
|
|
35
39
|
} = props;
|
|
36
40
|
const [_isExpanded, _setIsExpanded] = React.useState(isExpanded);
|
|
@@ -51,25 +55,39 @@ export const SideNavigation = React.forwardRef((props, forwardedRef) => {
|
|
|
51
55
|
return React.createElement(
|
|
52
56
|
Box,
|
|
53
57
|
{
|
|
54
|
-
|
|
58
|
+
...wrapperProps,
|
|
59
|
+
className: cx('iui-side-navigation-wrapper', wrapperProps?.className),
|
|
55
60
|
ref: forwardedRef,
|
|
56
|
-
...rest,
|
|
57
61
|
},
|
|
58
62
|
React.createElement(
|
|
59
63
|
Box,
|
|
60
64
|
{
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
'iui-
|
|
64
|
-
|
|
65
|
+
as: 'div',
|
|
66
|
+
className: cx(
|
|
67
|
+
'iui-side-navigation',
|
|
68
|
+
{
|
|
69
|
+
'iui-expanded': _isExpanded,
|
|
70
|
+
'iui-collapsed': !_isExpanded,
|
|
71
|
+
},
|
|
72
|
+
className,
|
|
73
|
+
),
|
|
74
|
+
...rest,
|
|
65
75
|
},
|
|
66
76
|
expanderPlacement === 'top' && ExpandButton,
|
|
67
77
|
React.createElement(
|
|
68
78
|
Box,
|
|
69
|
-
{
|
|
79
|
+
{
|
|
80
|
+
as: 'div',
|
|
81
|
+
...contentProps,
|
|
82
|
+
className: cx('iui-sidenav-content', contentProps?.className),
|
|
83
|
+
},
|
|
70
84
|
React.createElement(
|
|
71
85
|
Box,
|
|
72
|
-
{
|
|
86
|
+
{
|
|
87
|
+
as: 'div',
|
|
88
|
+
...topProps,
|
|
89
|
+
className: cx('iui-top', topProps?.className),
|
|
90
|
+
},
|
|
73
91
|
items.map((sidenavButton, index) =>
|
|
74
92
|
!_isExpanded
|
|
75
93
|
? React.createElement(
|
|
@@ -86,7 +104,11 @@ export const SideNavigation = React.forwardRef((props, forwardedRef) => {
|
|
|
86
104
|
),
|
|
87
105
|
React.createElement(
|
|
88
106
|
Box,
|
|
89
|
-
{
|
|
107
|
+
{
|
|
108
|
+
as: 'div',
|
|
109
|
+
...bottomProps,
|
|
110
|
+
className: cx('iui-bottom', bottomProps?.className),
|
|
111
|
+
},
|
|
90
112
|
secondaryItems?.map((sidenavButton, index) =>
|
|
91
113
|
!_isExpanded
|
|
92
114
|
? 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
|
|
@@ -79,6 +79,12 @@ export const Slider = React.forwardRef((props, ref) => {
|
|
|
79
79
|
thumbProps,
|
|
80
80
|
className,
|
|
81
81
|
railContainerProps,
|
|
82
|
+
minProps,
|
|
83
|
+
maxProps,
|
|
84
|
+
railProps,
|
|
85
|
+
trackProps,
|
|
86
|
+
tickProps,
|
|
87
|
+
ticksProps,
|
|
82
88
|
orientation = 'horizontal',
|
|
83
89
|
...rest
|
|
84
90
|
} = props;
|
|
@@ -263,18 +269,27 @@ export const Slider = React.forwardRef((props, ref) => {
|
|
|
263
269
|
if (Array.isArray(tickLabels)) {
|
|
264
270
|
return React.createElement(
|
|
265
271
|
Box,
|
|
266
|
-
{
|
|
272
|
+
{
|
|
273
|
+
as: 'div',
|
|
274
|
+
...ticksProps,
|
|
275
|
+
className: cx('iui-slider-ticks', ticksProps?.className),
|
|
276
|
+
},
|
|
267
277
|
tickLabels.map((label, index) =>
|
|
268
278
|
React.createElement(
|
|
269
279
|
Box,
|
|
270
|
-
{
|
|
280
|
+
{
|
|
281
|
+
as: 'span',
|
|
282
|
+
...tickProps,
|
|
283
|
+
key: index,
|
|
284
|
+
className: cx('iui-slider-tick', tickProps?.className),
|
|
285
|
+
},
|
|
271
286
|
label,
|
|
272
287
|
),
|
|
273
288
|
),
|
|
274
289
|
);
|
|
275
290
|
}
|
|
276
291
|
return tickLabels;
|
|
277
|
-
}, [tickLabels]);
|
|
292
|
+
}, [tickLabels, tickProps, ticksProps]);
|
|
278
293
|
const generateTooltipProps = React.useCallback(
|
|
279
294
|
(index, val) => {
|
|
280
295
|
const outProps = tooltipProps ? tooltipProps(index, val, step) : {};
|
|
@@ -302,20 +317,33 @@ export const Slider = React.forwardRef((props, ref) => {
|
|
|
302
317
|
minValueLabel &&
|
|
303
318
|
React.createElement(
|
|
304
319
|
Box,
|
|
305
|
-
{
|
|
320
|
+
{
|
|
321
|
+
as: 'span',
|
|
322
|
+
...minProps,
|
|
323
|
+
className: cx('iui-slider-min', minProps?.className),
|
|
324
|
+
},
|
|
306
325
|
minValueLabel,
|
|
307
326
|
),
|
|
308
327
|
React.createElement(
|
|
309
328
|
Box,
|
|
310
329
|
{
|
|
330
|
+
as: 'div',
|
|
311
331
|
ref: containerRef,
|
|
312
|
-
className: cx('iui-slider-container', {
|
|
313
|
-
'iui-grabbing': undefined !== activeThumbIndex,
|
|
314
|
-
}),
|
|
315
|
-
onPointerDown: handlePointerDownOnSlider,
|
|
316
332
|
...railContainerProps,
|
|
333
|
+
className: cx(
|
|
334
|
+
'iui-slider-container',
|
|
335
|
+
{
|
|
336
|
+
'iui-grabbing': undefined !== activeThumbIndex,
|
|
337
|
+
},
|
|
338
|
+
railContainerProps?.className,
|
|
339
|
+
),
|
|
340
|
+
onPointerDown: handlePointerDownOnSlider,
|
|
317
341
|
},
|
|
318
|
-
React.createElement(Box, {
|
|
342
|
+
React.createElement(Box, {
|
|
343
|
+
as: 'div',
|
|
344
|
+
...railProps,
|
|
345
|
+
className: cx('iui-slider-rail', railProps?.className),
|
|
346
|
+
}),
|
|
319
347
|
currentValues.map((thumbValue, index) => {
|
|
320
348
|
const [minVal, maxVal] = getAllowableThumbRange(index);
|
|
321
349
|
const thisThumbProps = thumbProps?.(index);
|
|
@@ -343,13 +371,18 @@ export const Slider = React.forwardRef((props, ref) => {
|
|
|
343
371
|
sliderMax: max,
|
|
344
372
|
values: currentValues,
|
|
345
373
|
orientation: orientation,
|
|
374
|
+
...trackProps,
|
|
346
375
|
}),
|
|
347
376
|
tickMarkArea,
|
|
348
377
|
),
|
|
349
378
|
maxValueLabel &&
|
|
350
379
|
React.createElement(
|
|
351
380
|
Box,
|
|
352
|
-
{
|
|
381
|
+
{
|
|
382
|
+
as: 'span',
|
|
383
|
+
...maxProps,
|
|
384
|
+
className: cx('iui-slider-max', maxProps?.className),
|
|
385
|
+
},
|
|
353
386
|
maxValueLabel,
|
|
354
387
|
),
|
|
355
388
|
);
|
package/esm/core/Slider/Thumb.js
CHANGED
|
@@ -97,8 +97,8 @@ export const Thumb = (props) => {
|
|
|
97
97
|
style: {
|
|
98
98
|
...style,
|
|
99
99
|
...(orientation === 'horizontal'
|
|
100
|
-
? {
|
|
101
|
-
: {
|
|
100
|
+
? { insetInlineStart: `${lowPercent}%` }
|
|
101
|
+
: { insetBlockEnd: `${lowPercent}%` }),
|
|
102
102
|
},
|
|
103
103
|
className: cx('iui-slider-thumb', { 'iui-active': isActive }, className),
|
|
104
104
|
role: 'slider',
|
|
@@ -6,7 +6,7 @@ export type TrackProps = {
|
|
|
6
6
|
sliderMax: number;
|
|
7
7
|
values: number[];
|
|
8
8
|
orientation: SliderProps['orientation'];
|
|
9
|
-
}
|
|
9
|
+
} & React.HTMLAttributes<HTMLDivElement>;
|
|
10
10
|
/**
|
|
11
11
|
* Track displays color segments above Rail. Which, if any, segments that are
|
|
12
12
|
* colorized is based on `trackDisplayMode`.
|