carbon-react 137.0.0 → 138.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/components/button-toggle/button-toggle-group/button-toggle-group.component.d.ts +3 -12
- package/esm/components/button-toggle/button-toggle-group/button-toggle-group.component.js +5 -14
- package/esm/components/button-toggle/button-toggle-group/button-toggle-group.style.d.ts +1 -3
- package/esm/components/button-toggle/button-toggle-group/button-toggle-group.style.js +3 -11
- package/esm/components/button-toggle/button-toggle-icon.component.js +2 -1
- package/esm/components/button-toggle/button-toggle.component.d.ts +1 -5
- package/esm/components/button-toggle/button-toggle.component.js +2 -17
- package/esm/components/checkbox/checkbox-group/checkbox-group.component.js +2 -0
- package/esm/components/checkbox/checkbox-svg.component.js +1 -0
- package/esm/components/checkbox/checkbox.style.js +0 -1
- package/lib/components/button-toggle/button-toggle-group/button-toggle-group.component.d.ts +3 -12
- package/lib/components/button-toggle/button-toggle-group/button-toggle-group.component.js +4 -13
- package/lib/components/button-toggle/button-toggle-group/button-toggle-group.style.d.ts +1 -3
- package/lib/components/button-toggle/button-toggle-group/button-toggle-group.style.js +4 -12
- package/lib/components/button-toggle/button-toggle-icon.component.js +2 -1
- package/lib/components/button-toggle/button-toggle.component.d.ts +1 -5
- package/lib/components/button-toggle/button-toggle.component.js +2 -17
- package/lib/components/checkbox/checkbox-group/checkbox-group.component.js +2 -0
- package/lib/components/checkbox/checkbox-svg.component.js +1 -0
- package/lib/components/checkbox/checkbox.style.js +0 -1
- package/package.json +1 -1
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { MarginProps } from "styled-system";
|
|
3
3
|
import { TagProps } from "../../../__internal__/utils/helpers/tags";
|
|
4
|
-
export interface CustomEvent {
|
|
5
|
-
target: {
|
|
6
|
-
name?: string;
|
|
7
|
-
value?: string;
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
4
|
export interface ButtonToggleGroupProps extends MarginProps, TagProps {
|
|
11
5
|
/** Unique id for the root element of the component */
|
|
12
6
|
id: string;
|
|
13
|
-
/** Specifies the name prop to be applied to each button in the group */
|
|
14
|
-
name?: string;
|
|
15
7
|
/** Toggle buttons to be rendered. Only accepts children of type ButtonToggle */
|
|
16
8
|
children?: React.ReactNode;
|
|
17
9
|
/** aria-label for the group wrapper. Required for accessibility when no text label is provided */
|
|
@@ -37,7 +29,7 @@ export interface ButtonToggleGroupProps extends MarginProps, TagProps {
|
|
|
37
29
|
/** If true all ButtonToggle children will flex to the full width of the ButtonToggleGroup parent */
|
|
38
30
|
fullWidth?: boolean;
|
|
39
31
|
/** Callback triggered by pressing one of the child buttons. Use with controlled components to set the value prop to the value argument */
|
|
40
|
-
onChange?: (ev: React.MouseEvent<HTMLButtonElement>, value?: string
|
|
32
|
+
onChange?: (ev: React.MouseEvent<HTMLButtonElement>, value?: string) => void;
|
|
41
33
|
/** Determines which child button is selected when the component is used as a controlled component */
|
|
42
34
|
value?: string;
|
|
43
35
|
/** [Legacy] Aria label for rendered help component */
|
|
@@ -56,8 +48,7 @@ declare type ButtonToggleGroupContextType = {
|
|
|
56
48
|
onButtonClick: (value: string) => void;
|
|
57
49
|
handleKeyDown: (ev: React.KeyboardEvent<HTMLButtonElement>) => void;
|
|
58
50
|
pressedButtonValue?: string;
|
|
59
|
-
onChange?: (ev: React.MouseEvent<HTMLButtonElement>, value?: string
|
|
60
|
-
name?: string;
|
|
51
|
+
onChange?: (ev: React.MouseEvent<HTMLButtonElement>, value?: string) => void;
|
|
61
52
|
allowDeselect?: boolean;
|
|
62
53
|
isInGroup: boolean;
|
|
63
54
|
isDisabled?: boolean;
|
|
@@ -68,7 +59,7 @@ declare type ButtonToggleGroupContextType = {
|
|
|
68
59
|
};
|
|
69
60
|
export declare const ButtonToggleGroupContext: React.Context<ButtonToggleGroupContextType>;
|
|
70
61
|
declare const ButtonToggleGroup: {
|
|
71
|
-
({ children, fieldHelp, fieldHelpInline, "aria-label": ariaLabel, label, labelHelp, labelSpacing, inputHint, inputWidth, fullWidth, labelInline, labelWidth,
|
|
62
|
+
({ children, fieldHelp, fieldHelpInline, "aria-label": ariaLabel, label, labelHelp, labelSpacing, inputHint, inputWidth, fullWidth, labelInline, labelWidth, onChange, value, "data-component": dataComponent, "data-element": dataElement, "data-role": dataRole, helpAriaLabel, id, allowDeselect, disabled, className, ...props }: ButtonToggleGroupProps): React.JSX.Element;
|
|
72
63
|
displayName: string;
|
|
73
64
|
};
|
|
74
65
|
export default ButtonToggleGroup;
|
|
@@ -4,15 +4,13 @@ import PropTypes from "prop-types";
|
|
|
4
4
|
import invariant from "invariant";
|
|
5
5
|
import FormField from "../../../__internal__/form-field";
|
|
6
6
|
import guid from "../../../__internal__/utils/helpers/guid";
|
|
7
|
-
import StyledButtonToggleGroup, {
|
|
7
|
+
import StyledButtonToggleGroup, { StyledHintText } from "./button-toggle-group.style";
|
|
8
8
|
import { ButtonToggle } from "..";
|
|
9
9
|
import { filterStyledSystemMarginProps } from "../../../style/utils";
|
|
10
10
|
import { TooltipProvider } from "../../../__internal__/tooltip-provider";
|
|
11
11
|
import { InputGroupBehaviour } from "../../../__internal__/input-behaviour";
|
|
12
|
-
import Logger from "../../../__internal__/utils/logger";
|
|
13
12
|
import Events from "../../../__internal__/utils/helpers/events";
|
|
14
13
|
import { NewValidationContext } from "../../carbon-provider/carbon-provider.component";
|
|
15
|
-
let deprecateNameWarnTriggered = false;
|
|
16
14
|
const BUTTON_TOGGLE_SELECTOR = '[data-element="button-toggle-button"]';
|
|
17
15
|
export const ButtonToggleGroupContext = /*#__PURE__*/createContext({
|
|
18
16
|
onButtonClick: /* istanbul ignore next */() => {},
|
|
@@ -35,7 +33,6 @@ const ButtonToggleGroup = ({
|
|
|
35
33
|
fullWidth,
|
|
36
34
|
labelInline,
|
|
37
35
|
labelWidth,
|
|
38
|
-
name,
|
|
39
36
|
onChange,
|
|
40
37
|
value,
|
|
41
38
|
"data-component": dataComponent = "button-toggle-group",
|
|
@@ -59,11 +56,6 @@ const ButtonToggleGroup = ({
|
|
|
59
56
|
const hintTextId = useRef(guid());
|
|
60
57
|
const wrapperRef = useRef(null);
|
|
61
58
|
const [pressedButtonValue, setPressedButtonValue] = useState();
|
|
62
|
-
if (name && !deprecateNameWarnTriggered) {
|
|
63
|
-
deprecateNameWarnTriggered = true;
|
|
64
|
-
Logger.deprecate(`The \`name\` prop in \`ButtonToggleGroup\` component is deprecated and will soon be removed. It does not provide any functionality
|
|
65
|
-
since the component can no longer be used in an uncontrolled fashion.`);
|
|
66
|
-
}
|
|
67
59
|
const {
|
|
68
60
|
validationRedesignOptIn
|
|
69
61
|
} = useContext(NewValidationContext);
|
|
@@ -140,7 +132,6 @@ const ButtonToggleGroup = ({
|
|
|
140
132
|
handleKeyDown,
|
|
141
133
|
pressedButtonValue: value || pressedButtonValue,
|
|
142
134
|
onChange,
|
|
143
|
-
name,
|
|
144
135
|
allowDeselect,
|
|
145
136
|
isInGroup: true,
|
|
146
137
|
isDisabled: disabled,
|
|
@@ -151,14 +142,14 @@ const ButtonToggleGroup = ({
|
|
|
151
142
|
}, inputHint && /*#__PURE__*/React.createElement(StyledHintText, {
|
|
152
143
|
id: hintTextId.current,
|
|
153
144
|
isDisabled: disabled
|
|
154
|
-
}, inputHint), /*#__PURE__*/React.createElement(
|
|
155
|
-
labelInline: labelInline,
|
|
145
|
+
}, inputHint), /*#__PURE__*/React.createElement(StyledButtonToggleGroup, _extends({
|
|
156
146
|
ref: wrapperRef
|
|
157
|
-
},
|
|
147
|
+
}, label ? {
|
|
158
148
|
"aria-labelledby": labelId.current
|
|
159
149
|
} : {
|
|
160
150
|
"aria-label": ariaLabel
|
|
161
151
|
}, {
|
|
152
|
+
labelInline: labelInline,
|
|
162
153
|
inputWidth: inputWidth,
|
|
163
154
|
fullWidth: fullWidth,
|
|
164
155
|
role: "group",
|
|
@@ -168,7 +159,7 @@ const ButtonToggleGroup = ({
|
|
|
168
159
|
id: id,
|
|
169
160
|
className: className,
|
|
170
161
|
disabled: disabled
|
|
171
|
-
}), children)))))
|
|
162
|
+
}), children)))));
|
|
172
163
|
};
|
|
173
164
|
ButtonToggleGroup.displayName = "ButtonToggleGroup";
|
|
174
165
|
export default ButtonToggleGroup;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { ButtonToggleGroupProps } from ".";
|
|
2
|
-
declare type StyledButtonToggleGroupProps = Pick<ButtonToggleGroupProps, "inputWidth" | "fullWidth" | "disabled">;
|
|
3
|
-
declare type StyledButtonToggleGroupWrapperProps = Pick<ButtonToggleGroupProps, "labelInline">;
|
|
2
|
+
declare type StyledButtonToggleGroupProps = Pick<ButtonToggleGroupProps, "inputWidth" | "fullWidth" | "disabled" | "labelInline">;
|
|
4
3
|
declare const StyledButtonToggleGroup: import("styled-components").StyledComponent<"div", any, StyledButtonToggleGroupProps, never>;
|
|
5
|
-
export declare const StyledButtonToggleGroupWrapper: import("styled-components").StyledComponent<"div", any, StyledButtonToggleGroupWrapperProps, never>;
|
|
6
4
|
export declare const StyledHintText: import("styled-components").StyledComponent<"div", any, {
|
|
7
5
|
isDisabled?: boolean | undefined;
|
|
8
6
|
}, never>;
|
|
@@ -12,7 +12,9 @@ const StyledButtonToggleGroup = styled.div`
|
|
|
12
12
|
gap: 4px;
|
|
13
13
|
width: fit-content;
|
|
14
14
|
height: fit-content;
|
|
15
|
-
flex-wrap:
|
|
15
|
+
flex-wrap: ${({
|
|
16
|
+
labelInline
|
|
17
|
+
}) => labelInline ? "nowrap" : "wrap"};
|
|
16
18
|
|
|
17
19
|
${({
|
|
18
20
|
disabled
|
|
@@ -39,16 +41,6 @@ const StyledButtonToggleGroup = styled.div`
|
|
|
39
41
|
width: ${`${inputWidth}%`};
|
|
40
42
|
`}
|
|
41
43
|
`;
|
|
42
|
-
export const StyledButtonToggleGroupWrapper = styled.div`
|
|
43
|
-
${({
|
|
44
|
-
labelInline
|
|
45
|
-
}) => labelInline && css`
|
|
46
|
-
display: flex;
|
|
47
|
-
${StyledButtonToggleGroup} {
|
|
48
|
-
flex-wrap: nowrap;
|
|
49
|
-
}
|
|
50
|
-
`}
|
|
51
|
-
`;
|
|
52
44
|
export const StyledHintText = styled.div`
|
|
53
45
|
::after {
|
|
54
46
|
content: " ";
|
|
@@ -9,7 +9,8 @@ const ButtonToggleIcon = ({
|
|
|
9
9
|
hasContent
|
|
10
10
|
}) => /*#__PURE__*/React.createElement(StyledButtonToggleIcon, {
|
|
11
11
|
buttonIconSize: buttonIconSize,
|
|
12
|
-
hasContent: hasContent
|
|
12
|
+
hasContent: hasContent,
|
|
13
|
+
"data-role": "button-toggle-icon"
|
|
13
14
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
14
15
|
"aria-hidden": true,
|
|
15
16
|
type: buttonIcon,
|
|
@@ -5,8 +5,6 @@ export interface ButtonToggleProps extends Partial<StyledButtonToggleProps> {
|
|
|
5
5
|
"aria-label"?: string;
|
|
6
6
|
/** Prop to specify the aria-labelledby property of the component */
|
|
7
7
|
"aria-labelledby"?: string;
|
|
8
|
-
/** DEPRECATED: A synonym for pressed, to keep backwards compatibility. */
|
|
9
|
-
checked?: boolean;
|
|
10
8
|
/** Text to display for the button. */
|
|
11
9
|
children?: React.ReactNode;
|
|
12
10
|
/** Identifier used for testing purposes, applied to the root element of the component. */
|
|
@@ -17,8 +15,6 @@ export interface ButtonToggleProps extends Partial<StyledButtonToggleProps> {
|
|
|
17
15
|
"data-role"?: string;
|
|
18
16
|
/** DEPRECATED: Remove spacing from between buttons. */
|
|
19
17
|
grouped?: boolean;
|
|
20
|
-
/** An optional string by which to identify the button in an onChange handler on the parent ButtonToggleGroup. */
|
|
21
|
-
name?: string;
|
|
22
18
|
/** Callback triggered by blur event on the button. */
|
|
23
19
|
onBlur?: (ev: React.FocusEvent<HTMLButtonElement>) => void;
|
|
24
20
|
/** Callback triggered by focus event on the button. */
|
|
@@ -31,7 +27,7 @@ export interface ButtonToggleProps extends Partial<StyledButtonToggleProps> {
|
|
|
31
27
|
value?: string;
|
|
32
28
|
}
|
|
33
29
|
export declare const ButtonToggle: {
|
|
34
|
-
({ "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, buttonIcon, buttonIconSize,
|
|
30
|
+
({ "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, buttonIcon, buttonIconSize, children, "data-component": dataComponent, "data-element": dataElement, "data-role": dataRole, disabled, grouped, onBlur, onFocus, onClick, pressed, size, value, }: ButtonToggleProps): React.JSX.Element;
|
|
35
31
|
displayName: string;
|
|
36
32
|
};
|
|
37
33
|
export default ButtonToggle;
|
|
@@ -8,8 +8,6 @@ import { ButtonToggleGroupContext } from "./button-toggle-group/button-toggle-gr
|
|
|
8
8
|
import ButtonToggleIcon from "./button-toggle-icon.component";
|
|
9
9
|
import Logger from "../../__internal__/utils/logger";
|
|
10
10
|
import { InputGroupContext } from "../../__internal__/input-behaviour";
|
|
11
|
-
let deprecateCheckedWarnTriggered = false;
|
|
12
|
-
let deprecateNameWarnTriggered = false;
|
|
13
11
|
let deprecateUncontrolledWarnTriggered = false;
|
|
14
12
|
let deprecateGroupedWarnTriggered = false;
|
|
15
13
|
export const ButtonToggle = ({
|
|
@@ -17,14 +15,12 @@ export const ButtonToggle = ({
|
|
|
17
15
|
"aria-labelledby": ariaLabelledBy,
|
|
18
16
|
buttonIcon,
|
|
19
17
|
buttonIconSize = "small",
|
|
20
|
-
checked,
|
|
21
18
|
children,
|
|
22
19
|
"data-component": dataComponent,
|
|
23
20
|
"data-element": dataElement,
|
|
24
21
|
"data-role": dataRole,
|
|
25
22
|
disabled,
|
|
26
23
|
grouped,
|
|
27
|
-
name,
|
|
28
24
|
onBlur,
|
|
29
25
|
onFocus,
|
|
30
26
|
onClick,
|
|
@@ -33,20 +29,10 @@ export const ButtonToggle = ({
|
|
|
33
29
|
value
|
|
34
30
|
}) => {
|
|
35
31
|
!!!(children || buttonIcon) ? process.env.NODE_ENV !== "production" ? invariant(false, "Either prop `buttonIcon` must be defined, or this node must have children") : invariant(false) : void 0;
|
|
36
|
-
if (checked !== undefined && !deprecateCheckedWarnTriggered) {
|
|
37
|
-
deprecateCheckedWarnTriggered = true;
|
|
38
|
-
Logger.deprecate("The `checked` prop in `ButtonToggle` component is deprecated and will soon be removed. Please use `pressed` instead.");
|
|
39
|
-
}
|
|
40
|
-
if (name && !deprecateNameWarnTriggered) {
|
|
41
|
-
deprecateNameWarnTriggered = true;
|
|
42
|
-
Logger.deprecate(`The \`name\` prop in \`ButtonToggle\` component is deprecated and will soon be removed. It does not provide any functionality
|
|
43
|
-
since the component can no longer be used in an uncontrolled fashion.`);
|
|
44
|
-
}
|
|
45
32
|
if (grouped && !deprecateGroupedWarnTriggered) {
|
|
46
33
|
deprecateGroupedWarnTriggered = true;
|
|
47
34
|
Logger.deprecate("The `grouped` prop in `ButtonToggle` component is deprecated and will soon be removed. Spacing between buttons is no longer no removed.");
|
|
48
35
|
}
|
|
49
|
-
const pressedPropValue = pressed === undefined ? checked : pressed;
|
|
50
36
|
const buttonRef = useRef(null);
|
|
51
37
|
const {
|
|
52
38
|
onMouseEnter,
|
|
@@ -59,7 +45,6 @@ export const ButtonToggle = ({
|
|
|
59
45
|
handleKeyDown,
|
|
60
46
|
pressedButtonValue,
|
|
61
47
|
onChange,
|
|
62
|
-
name: groupName,
|
|
63
48
|
allowDeselect,
|
|
64
49
|
isInGroup,
|
|
65
50
|
isDisabled,
|
|
@@ -83,7 +68,7 @@ export const ButtonToggle = ({
|
|
|
83
68
|
if (allowDeselect && pressedButtonValue === value) {
|
|
84
69
|
newValue = undefined;
|
|
85
70
|
}
|
|
86
|
-
onChange(ev, newValue
|
|
71
|
+
onChange(ev, newValue);
|
|
87
72
|
}
|
|
88
73
|
if (value) {
|
|
89
74
|
onButtonClick(value);
|
|
@@ -109,7 +94,7 @@ export const ButtonToggle = ({
|
|
|
109
94
|
inputGroupOnBlur();
|
|
110
95
|
}
|
|
111
96
|
}
|
|
112
|
-
const isPressed = isInGroup ? pressedButtonValue === value :
|
|
97
|
+
const isPressed = isInGroup ? pressedButtonValue === value : pressed;
|
|
113
98
|
const isFirstButton = buttonRef.current === firstButton;
|
|
114
99
|
|
|
115
100
|
// if we're in a ButtonToggleGroup, only one button should be tabbable - the pressed button if there is one, or
|
|
@@ -55,6 +55,7 @@ export const CheckboxGroup = props => {
|
|
|
55
55
|
inline: inline
|
|
56
56
|
}), /*#__PURE__*/React.createElement(StyledCheckboxGroup, {
|
|
57
57
|
"data-component": "checkbox-group",
|
|
58
|
+
"data-role": "checkbox-group",
|
|
58
59
|
legendInline: legendInline,
|
|
59
60
|
inline: inline
|
|
60
61
|
}, /*#__PURE__*/React.createElement(CheckboxGroupContext.Provider, {
|
|
@@ -81,6 +82,7 @@ export const CheckboxGroup = props => {
|
|
|
81
82
|
blockGroupBehaviour: !(error || warning || info)
|
|
82
83
|
}, filterStyledSystemMarginProps(props)), /*#__PURE__*/React.createElement(StyledCheckboxGroup, {
|
|
83
84
|
"data-component": "checkbox-group",
|
|
85
|
+
"data-role": "checkbox-group",
|
|
84
86
|
legendInline: legendInline
|
|
85
87
|
}, /*#__PURE__*/React.createElement(CheckboxGroupContext.Provider, {
|
|
86
88
|
value: {
|
|
@@ -2,6 +2,7 @@ import React from "react";
|
|
|
2
2
|
import PropTypes from "prop-types";
|
|
3
3
|
import StyledCheckableInputSvgWrapper from "../../__internal__/checkable-input/checkable-input-svg-wrapper.style";
|
|
4
4
|
const CheckboxSvg = () => /*#__PURE__*/React.createElement(StyledCheckableInputSvgWrapper, null, /*#__PURE__*/React.createElement("svg", {
|
|
5
|
+
"data-role": "checkable-svg",
|
|
5
6
|
focusable: "false",
|
|
6
7
|
width: "12",
|
|
7
8
|
height: "10",
|
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { MarginProps } from "styled-system";
|
|
3
3
|
import { TagProps } from "../../../__internal__/utils/helpers/tags";
|
|
4
|
-
export interface CustomEvent {
|
|
5
|
-
target: {
|
|
6
|
-
name?: string;
|
|
7
|
-
value?: string;
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
4
|
export interface ButtonToggleGroupProps extends MarginProps, TagProps {
|
|
11
5
|
/** Unique id for the root element of the component */
|
|
12
6
|
id: string;
|
|
13
|
-
/** Specifies the name prop to be applied to each button in the group */
|
|
14
|
-
name?: string;
|
|
15
7
|
/** Toggle buttons to be rendered. Only accepts children of type ButtonToggle */
|
|
16
8
|
children?: React.ReactNode;
|
|
17
9
|
/** aria-label for the group wrapper. Required for accessibility when no text label is provided */
|
|
@@ -37,7 +29,7 @@ export interface ButtonToggleGroupProps extends MarginProps, TagProps {
|
|
|
37
29
|
/** If true all ButtonToggle children will flex to the full width of the ButtonToggleGroup parent */
|
|
38
30
|
fullWidth?: boolean;
|
|
39
31
|
/** Callback triggered by pressing one of the child buttons. Use with controlled components to set the value prop to the value argument */
|
|
40
|
-
onChange?: (ev: React.MouseEvent<HTMLButtonElement>, value?: string
|
|
32
|
+
onChange?: (ev: React.MouseEvent<HTMLButtonElement>, value?: string) => void;
|
|
41
33
|
/** Determines which child button is selected when the component is used as a controlled component */
|
|
42
34
|
value?: string;
|
|
43
35
|
/** [Legacy] Aria label for rendered help component */
|
|
@@ -56,8 +48,7 @@ declare type ButtonToggleGroupContextType = {
|
|
|
56
48
|
onButtonClick: (value: string) => void;
|
|
57
49
|
handleKeyDown: (ev: React.KeyboardEvent<HTMLButtonElement>) => void;
|
|
58
50
|
pressedButtonValue?: string;
|
|
59
|
-
onChange?: (ev: React.MouseEvent<HTMLButtonElement>, value?: string
|
|
60
|
-
name?: string;
|
|
51
|
+
onChange?: (ev: React.MouseEvent<HTMLButtonElement>, value?: string) => void;
|
|
61
52
|
allowDeselect?: boolean;
|
|
62
53
|
isInGroup: boolean;
|
|
63
54
|
isDisabled?: boolean;
|
|
@@ -68,7 +59,7 @@ declare type ButtonToggleGroupContextType = {
|
|
|
68
59
|
};
|
|
69
60
|
export declare const ButtonToggleGroupContext: React.Context<ButtonToggleGroupContextType>;
|
|
70
61
|
declare const ButtonToggleGroup: {
|
|
71
|
-
({ children, fieldHelp, fieldHelpInline, "aria-label": ariaLabel, label, labelHelp, labelSpacing, inputHint, inputWidth, fullWidth, labelInline, labelWidth,
|
|
62
|
+
({ children, fieldHelp, fieldHelpInline, "aria-label": ariaLabel, label, labelHelp, labelSpacing, inputHint, inputWidth, fullWidth, labelInline, labelWidth, onChange, value, "data-component": dataComponent, "data-element": dataElement, "data-role": dataRole, helpAriaLabel, id, allowDeselect, disabled, className, ...props }: ButtonToggleGroupProps): React.JSX.Element;
|
|
72
63
|
displayName: string;
|
|
73
64
|
};
|
|
74
65
|
export default ButtonToggleGroup;
|
|
@@ -14,14 +14,12 @@ var _ = require("..");
|
|
|
14
14
|
var _utils = require("../../../style/utils");
|
|
15
15
|
var _tooltipProvider = require("../../../__internal__/tooltip-provider");
|
|
16
16
|
var _inputBehaviour = require("../../../__internal__/input-behaviour");
|
|
17
|
-
var _logger = _interopRequireDefault(require("../../../__internal__/utils/logger"));
|
|
18
17
|
var _events = _interopRequireDefault(require("../../../__internal__/utils/helpers/events"));
|
|
19
18
|
var _carbonProvider = require("../../carbon-provider/carbon-provider.component");
|
|
20
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
20
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
22
21
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
23
22
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
24
|
-
let deprecateNameWarnTriggered = false;
|
|
25
23
|
const BUTTON_TOGGLE_SELECTOR = '[data-element="button-toggle-button"]';
|
|
26
24
|
const ButtonToggleGroupContext = exports.ButtonToggleGroupContext = /*#__PURE__*/(0, _react.createContext)({
|
|
27
25
|
onButtonClick: /* istanbul ignore next */() => {},
|
|
@@ -44,7 +42,6 @@ const ButtonToggleGroup = ({
|
|
|
44
42
|
fullWidth,
|
|
45
43
|
labelInline,
|
|
46
44
|
labelWidth,
|
|
47
|
-
name,
|
|
48
45
|
onChange,
|
|
49
46
|
value,
|
|
50
47
|
"data-component": dataComponent = "button-toggle-group",
|
|
@@ -68,11 +65,6 @@ const ButtonToggleGroup = ({
|
|
|
68
65
|
const hintTextId = (0, _react.useRef)((0, _guid.default)());
|
|
69
66
|
const wrapperRef = (0, _react.useRef)(null);
|
|
70
67
|
const [pressedButtonValue, setPressedButtonValue] = (0, _react.useState)();
|
|
71
|
-
if (name && !deprecateNameWarnTriggered) {
|
|
72
|
-
deprecateNameWarnTriggered = true;
|
|
73
|
-
_logger.default.deprecate(`The \`name\` prop in \`ButtonToggleGroup\` component is deprecated and will soon be removed. It does not provide any functionality
|
|
74
|
-
since the component can no longer be used in an uncontrolled fashion.`);
|
|
75
|
-
}
|
|
76
68
|
const {
|
|
77
69
|
validationRedesignOptIn
|
|
78
70
|
} = (0, _react.useContext)(_carbonProvider.NewValidationContext);
|
|
@@ -149,7 +141,6 @@ const ButtonToggleGroup = ({
|
|
|
149
141
|
handleKeyDown,
|
|
150
142
|
pressedButtonValue: value || pressedButtonValue,
|
|
151
143
|
onChange,
|
|
152
|
-
name,
|
|
153
144
|
allowDeselect,
|
|
154
145
|
isInGroup: true,
|
|
155
146
|
isDisabled: disabled,
|
|
@@ -160,14 +151,14 @@ const ButtonToggleGroup = ({
|
|
|
160
151
|
}, inputHint && /*#__PURE__*/_react.default.createElement(_buttonToggleGroup.StyledHintText, {
|
|
161
152
|
id: hintTextId.current,
|
|
162
153
|
isDisabled: disabled
|
|
163
|
-
}, inputHint), /*#__PURE__*/_react.default.createElement(_buttonToggleGroup.
|
|
164
|
-
labelInline: labelInline,
|
|
154
|
+
}, inputHint), /*#__PURE__*/_react.default.createElement(_buttonToggleGroup.default, _extends({
|
|
165
155
|
ref: wrapperRef
|
|
166
|
-
},
|
|
156
|
+
}, label ? {
|
|
167
157
|
"aria-labelledby": labelId.current
|
|
168
158
|
} : {
|
|
169
159
|
"aria-label": ariaLabel
|
|
170
160
|
}, {
|
|
161
|
+
labelInline: labelInline,
|
|
171
162
|
inputWidth: inputWidth,
|
|
172
163
|
fullWidth: fullWidth,
|
|
173
164
|
role: "group",
|
|
@@ -177,7 +168,7 @@ const ButtonToggleGroup = ({
|
|
|
177
168
|
id: id,
|
|
178
169
|
className: className,
|
|
179
170
|
disabled: disabled
|
|
180
|
-
}), children)))))
|
|
171
|
+
}), children)))));
|
|
181
172
|
};
|
|
182
173
|
ButtonToggleGroup.displayName = "ButtonToggleGroup";
|
|
183
174
|
var _default = exports.default = ButtonToggleGroup;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { ButtonToggleGroupProps } from ".";
|
|
2
|
-
declare type StyledButtonToggleGroupProps = Pick<ButtonToggleGroupProps, "inputWidth" | "fullWidth" | "disabled">;
|
|
3
|
-
declare type StyledButtonToggleGroupWrapperProps = Pick<ButtonToggleGroupProps, "labelInline">;
|
|
2
|
+
declare type StyledButtonToggleGroupProps = Pick<ButtonToggleGroupProps, "inputWidth" | "fullWidth" | "disabled" | "labelInline">;
|
|
4
3
|
declare const StyledButtonToggleGroup: import("styled-components").StyledComponent<"div", any, StyledButtonToggleGroupProps, never>;
|
|
5
|
-
export declare const StyledButtonToggleGroupWrapper: import("styled-components").StyledComponent<"div", any, StyledButtonToggleGroupWrapperProps, never>;
|
|
6
4
|
export declare const StyledHintText: import("styled-components").StyledComponent<"div", any, {
|
|
7
5
|
isDisabled?: boolean | undefined;
|
|
8
6
|
}, never>;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.StyledHintText =
|
|
6
|
+
exports.default = exports.StyledHintText = void 0;
|
|
7
7
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
8
8
|
var _styledSystem = require("styled-system");
|
|
9
9
|
var _themes = require("../../../style/themes");
|
|
@@ -20,7 +20,9 @@ const StyledButtonToggleGroup = _styledComponents.default.div`
|
|
|
20
20
|
gap: 4px;
|
|
21
21
|
width: fit-content;
|
|
22
22
|
height: fit-content;
|
|
23
|
-
flex-wrap:
|
|
23
|
+
flex-wrap: ${({
|
|
24
|
+
labelInline
|
|
25
|
+
}) => labelInline ? "nowrap" : "wrap"};
|
|
24
26
|
|
|
25
27
|
${({
|
|
26
28
|
disabled
|
|
@@ -47,16 +49,6 @@ const StyledButtonToggleGroup = _styledComponents.default.div`
|
|
|
47
49
|
width: ${`${inputWidth}%`};
|
|
48
50
|
`}
|
|
49
51
|
`;
|
|
50
|
-
const StyledButtonToggleGroupWrapper = exports.StyledButtonToggleGroupWrapper = _styledComponents.default.div`
|
|
51
|
-
${({
|
|
52
|
-
labelInline
|
|
53
|
-
}) => labelInline && (0, _styledComponents.css)`
|
|
54
|
-
display: flex;
|
|
55
|
-
${StyledButtonToggleGroup} {
|
|
56
|
-
flex-wrap: nowrap;
|
|
57
|
-
}
|
|
58
|
-
`}
|
|
59
|
-
`;
|
|
60
52
|
const StyledHintText = exports.StyledHintText = _styledComponents.default.div`
|
|
61
53
|
::after {
|
|
62
54
|
content: " ";
|
|
@@ -16,7 +16,8 @@ const ButtonToggleIcon = ({
|
|
|
16
16
|
hasContent
|
|
17
17
|
}) => /*#__PURE__*/_react.default.createElement(_buttonToggle.StyledButtonToggleIcon, {
|
|
18
18
|
buttonIconSize: buttonIconSize,
|
|
19
|
-
hasContent: hasContent
|
|
19
|
+
hasContent: hasContent,
|
|
20
|
+
"data-role": "button-toggle-icon"
|
|
20
21
|
}, /*#__PURE__*/_react.default.createElement(_icon.default, {
|
|
21
22
|
"aria-hidden": true,
|
|
22
23
|
type: buttonIcon,
|
|
@@ -5,8 +5,6 @@ export interface ButtonToggleProps extends Partial<StyledButtonToggleProps> {
|
|
|
5
5
|
"aria-label"?: string;
|
|
6
6
|
/** Prop to specify the aria-labelledby property of the component */
|
|
7
7
|
"aria-labelledby"?: string;
|
|
8
|
-
/** DEPRECATED: A synonym for pressed, to keep backwards compatibility. */
|
|
9
|
-
checked?: boolean;
|
|
10
8
|
/** Text to display for the button. */
|
|
11
9
|
children?: React.ReactNode;
|
|
12
10
|
/** Identifier used for testing purposes, applied to the root element of the component. */
|
|
@@ -17,8 +15,6 @@ export interface ButtonToggleProps extends Partial<StyledButtonToggleProps> {
|
|
|
17
15
|
"data-role"?: string;
|
|
18
16
|
/** DEPRECATED: Remove spacing from between buttons. */
|
|
19
17
|
grouped?: boolean;
|
|
20
|
-
/** An optional string by which to identify the button in an onChange handler on the parent ButtonToggleGroup. */
|
|
21
|
-
name?: string;
|
|
22
18
|
/** Callback triggered by blur event on the button. */
|
|
23
19
|
onBlur?: (ev: React.FocusEvent<HTMLButtonElement>) => void;
|
|
24
20
|
/** Callback triggered by focus event on the button. */
|
|
@@ -31,7 +27,7 @@ export interface ButtonToggleProps extends Partial<StyledButtonToggleProps> {
|
|
|
31
27
|
value?: string;
|
|
32
28
|
}
|
|
33
29
|
export declare const ButtonToggle: {
|
|
34
|
-
({ "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, buttonIcon, buttonIconSize,
|
|
30
|
+
({ "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, buttonIcon, buttonIconSize, children, "data-component": dataComponent, "data-element": dataElement, "data-role": dataRole, disabled, grouped, onBlur, onFocus, onClick, pressed, size, value, }: ButtonToggleProps): React.JSX.Element;
|
|
35
31
|
displayName: string;
|
|
36
32
|
};
|
|
37
33
|
export default ButtonToggle;
|
|
@@ -17,8 +17,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
17
17
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
18
18
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
19
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
20
|
-
let deprecateCheckedWarnTriggered = false;
|
|
21
|
-
let deprecateNameWarnTriggered = false;
|
|
22
20
|
let deprecateUncontrolledWarnTriggered = false;
|
|
23
21
|
let deprecateGroupedWarnTriggered = false;
|
|
24
22
|
const ButtonToggle = ({
|
|
@@ -26,14 +24,12 @@ const ButtonToggle = ({
|
|
|
26
24
|
"aria-labelledby": ariaLabelledBy,
|
|
27
25
|
buttonIcon,
|
|
28
26
|
buttonIconSize = "small",
|
|
29
|
-
checked,
|
|
30
27
|
children,
|
|
31
28
|
"data-component": dataComponent,
|
|
32
29
|
"data-element": dataElement,
|
|
33
30
|
"data-role": dataRole,
|
|
34
31
|
disabled,
|
|
35
32
|
grouped,
|
|
36
|
-
name,
|
|
37
33
|
onBlur,
|
|
38
34
|
onFocus,
|
|
39
35
|
onClick,
|
|
@@ -42,20 +38,10 @@ const ButtonToggle = ({
|
|
|
42
38
|
value
|
|
43
39
|
}) => {
|
|
44
40
|
!!!(children || buttonIcon) ? process.env.NODE_ENV !== "production" ? (0, _invariant.default)(false, "Either prop `buttonIcon` must be defined, or this node must have children") : (0, _invariant.default)(false) : void 0;
|
|
45
|
-
if (checked !== undefined && !deprecateCheckedWarnTriggered) {
|
|
46
|
-
deprecateCheckedWarnTriggered = true;
|
|
47
|
-
_logger.default.deprecate("The `checked` prop in `ButtonToggle` component is deprecated and will soon be removed. Please use `pressed` instead.");
|
|
48
|
-
}
|
|
49
|
-
if (name && !deprecateNameWarnTriggered) {
|
|
50
|
-
deprecateNameWarnTriggered = true;
|
|
51
|
-
_logger.default.deprecate(`The \`name\` prop in \`ButtonToggle\` component is deprecated and will soon be removed. It does not provide any functionality
|
|
52
|
-
since the component can no longer be used in an uncontrolled fashion.`);
|
|
53
|
-
}
|
|
54
41
|
if (grouped && !deprecateGroupedWarnTriggered) {
|
|
55
42
|
deprecateGroupedWarnTriggered = true;
|
|
56
43
|
_logger.default.deprecate("The `grouped` prop in `ButtonToggle` component is deprecated and will soon be removed. Spacing between buttons is no longer no removed.");
|
|
57
44
|
}
|
|
58
|
-
const pressedPropValue = pressed === undefined ? checked : pressed;
|
|
59
45
|
const buttonRef = (0, _react.useRef)(null);
|
|
60
46
|
const {
|
|
61
47
|
onMouseEnter,
|
|
@@ -68,7 +54,6 @@ const ButtonToggle = ({
|
|
|
68
54
|
handleKeyDown,
|
|
69
55
|
pressedButtonValue,
|
|
70
56
|
onChange,
|
|
71
|
-
name: groupName,
|
|
72
57
|
allowDeselect,
|
|
73
58
|
isInGroup,
|
|
74
59
|
isDisabled,
|
|
@@ -92,7 +77,7 @@ const ButtonToggle = ({
|
|
|
92
77
|
if (allowDeselect && pressedButtonValue === value) {
|
|
93
78
|
newValue = undefined;
|
|
94
79
|
}
|
|
95
|
-
onChange(ev, newValue
|
|
80
|
+
onChange(ev, newValue);
|
|
96
81
|
}
|
|
97
82
|
if (value) {
|
|
98
83
|
onButtonClick(value);
|
|
@@ -118,7 +103,7 @@ const ButtonToggle = ({
|
|
|
118
103
|
inputGroupOnBlur();
|
|
119
104
|
}
|
|
120
105
|
}
|
|
121
|
-
const isPressed = isInGroup ? pressedButtonValue === value :
|
|
106
|
+
const isPressed = isInGroup ? pressedButtonValue === value : pressed;
|
|
122
107
|
const isFirstButton = buttonRef.current === firstButton;
|
|
123
108
|
|
|
124
109
|
// if we're in a ButtonToggleGroup, only one button should be tabbable - the pressed button if there is one, or
|
|
@@ -64,6 +64,7 @@ const CheckboxGroup = props => {
|
|
|
64
64
|
inline: inline
|
|
65
65
|
}), /*#__PURE__*/_react.default.createElement(_checkboxGroup.default, {
|
|
66
66
|
"data-component": "checkbox-group",
|
|
67
|
+
"data-role": "checkbox-group",
|
|
67
68
|
legendInline: legendInline,
|
|
68
69
|
inline: inline
|
|
69
70
|
}, /*#__PURE__*/_react.default.createElement(CheckboxGroupContext.Provider, {
|
|
@@ -90,6 +91,7 @@ const CheckboxGroup = props => {
|
|
|
90
91
|
blockGroupBehaviour: !(error || warning || info)
|
|
91
92
|
}, (0, _utils.filterStyledSystemMarginProps)(props)), /*#__PURE__*/_react.default.createElement(_checkboxGroup.default, {
|
|
92
93
|
"data-component": "checkbox-group",
|
|
94
|
+
"data-role": "checkbox-group",
|
|
93
95
|
legendInline: legendInline
|
|
94
96
|
}, /*#__PURE__*/_react.default.createElement(CheckboxGroupContext.Provider, {
|
|
95
97
|
value: {
|
|
@@ -9,6 +9,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
9
9
|
var _checkableInputSvgWrapper = _interopRequireDefault(require("../../__internal__/checkable-input/checkable-input-svg-wrapper.style"));
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
const CheckboxSvg = () => /*#__PURE__*/_react.default.createElement(_checkableInputSvgWrapper.default, null, /*#__PURE__*/_react.default.createElement("svg", {
|
|
12
|
+
"data-role": "checkable-svg",
|
|
12
13
|
focusable: "false",
|
|
13
14
|
width: "12",
|
|
14
15
|
height: "10",
|
|
@@ -120,7 +120,6 @@ const StyledCheckbox = _styledComponents.default.div`
|
|
|
120
120
|
|
|
121
121
|
${_fieldHelp.default} {
|
|
122
122
|
margin-left: 24px;
|
|
123
|
-
padding-left: ${labelSpacing === 1 ? "var(--spacing100)" : "var(--spacing200)"};
|
|
124
123
|
}
|
|
125
124
|
|
|
126
125
|
${fieldHelpInline && (0, _styledComponents.css)`
|