carbon-react 118.6.0 → 119.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/__internal__/form-field/form-field.component.d.ts +3 -1
- package/esm/__internal__/form-field/form-field.component.js +3 -1
- package/esm/__internal__/label/label.component.d.ts +3 -2
- package/esm/__internal__/label/label.component.js +10 -5
- package/esm/components/button-toggle/button-toggle-group/button-toggle-group.component.d.ts +64 -0
- package/esm/components/button-toggle/button-toggle-group/button-toggle-group.component.js +157 -0
- package/esm/components/button-toggle/button-toggle-group/button-toggle-group.style.d.ts +6 -0
- package/esm/components/button-toggle/button-toggle-group/button-toggle-group.style.js +64 -0
- package/esm/components/button-toggle/button-toggle.component.d.ts +21 -8
- package/esm/components/button-toggle/button-toggle.component.js +94 -27
- package/esm/components/button-toggle/button-toggle.style.d.ts +7 -6
- package/esm/components/button-toggle/button-toggle.style.js +46 -37
- package/esm/components/button-toggle/index.d.ts +3 -1
- package/esm/components/button-toggle/index.js +2 -1
- package/lib/__internal__/form-field/form-field.component.d.ts +3 -1
- package/lib/__internal__/form-field/form-field.component.js +3 -1
- package/lib/__internal__/label/label.component.d.ts +3 -2
- package/lib/__internal__/label/label.component.js +10 -5
- package/lib/components/button-toggle/button-toggle-group/button-toggle-group.component.d.ts +64 -0
- package/lib/components/button-toggle/button-toggle-group/button-toggle-group.component.js +168 -0
- package/lib/components/button-toggle/button-toggle-group/button-toggle-group.style.d.ts +6 -0
- package/lib/components/{button-toggle-group → button-toggle/button-toggle-group}/button-toggle-group.style.js +29 -46
- package/lib/components/button-toggle/button-toggle-group/package.json +6 -0
- package/lib/components/button-toggle/button-toggle.component.d.ts +21 -8
- package/lib/components/button-toggle/button-toggle.component.js +93 -26
- package/lib/components/button-toggle/button-toggle.style.d.ts +7 -6
- package/lib/components/button-toggle/button-toggle.style.js +48 -40
- package/lib/components/button-toggle/index.d.ts +3 -1
- package/lib/components/button-toggle/index.js +8 -1
- package/package.json +1 -1
- package/esm/components/button-toggle/button-toggle-input.component.d.ts +0 -25
- package/esm/components/button-toggle/button-toggle-input.component.js +0 -44
- package/esm/components/button-toggle-group/button-toggle-group.component.d.ts +0 -47
- package/esm/components/button-toggle-group/button-toggle-group.component.js +0 -84
- package/esm/components/button-toggle-group/button-toggle-group.style.d.ts +0 -4
- package/esm/components/button-toggle-group/button-toggle-group.style.js +0 -81
- package/lib/components/button-toggle/button-toggle-input.component.d.ts +0 -25
- package/lib/components/button-toggle/button-toggle-input.component.js +0 -54
- package/lib/components/button-toggle-group/button-toggle-group.component.d.ts +0 -47
- package/lib/components/button-toggle-group/button-toggle-group.component.js +0 -94
- package/lib/components/button-toggle-group/button-toggle-group.style.d.ts +0 -4
- package/lib/components/button-toggle-group/package.json +0 -6
- /package/esm/components/{button-toggle-group → button-toggle/button-toggle-group}/index.d.ts +0 -0
- /package/esm/components/{button-toggle-group → button-toggle/button-toggle-group}/index.js +0 -0
- /package/lib/components/{button-toggle-group → button-toggle/button-toggle-group}/index.d.ts +0 -0
- /package/lib/components/{button-toggle-group → button-toggle/button-toggle-group}/index.js +0 -0
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { StyledButtonToggleProps } from "./button-toggle.style";
|
|
3
|
+
export interface ButtonToggleProps extends Partial<StyledButtonToggleProps> {
|
|
4
|
+
/** Prop to specify the aria-label of the component */
|
|
5
|
+
"aria-label"?: string;
|
|
6
|
+
/** Prop to specify the aria-labelledby property of the component */
|
|
7
|
+
"aria-labelledby"?: string;
|
|
8
|
+
/** DEPRECATED: A synonym for pressed, to keep backwards compatibility. */
|
|
9
|
+
checked?: boolean;
|
|
5
10
|
/** Text to display for the button. */
|
|
6
11
|
children?: React.ReactNode;
|
|
7
12
|
/** Identifier used for testing purposes, applied to the root element of the component. */
|
|
@@ -10,15 +15,23 @@ export interface ButtonToggleProps extends ButtonToggleInputProps, Partial<Style
|
|
|
10
15
|
"data-element"?: string;
|
|
11
16
|
/** Identifier used for testing purposes, applied to the root element of the component. */
|
|
12
17
|
"data-role"?: string;
|
|
13
|
-
/** Set the default value of the Group if component is meant to be used as uncontrolled. */
|
|
14
|
-
defaultChecked?: boolean;
|
|
15
18
|
/** Remove spacing from between buttons. */
|
|
16
19
|
grouped?: boolean;
|
|
17
|
-
/**
|
|
18
|
-
|
|
20
|
+
/** An optional string by which to identify the button in an onChange handler on the parent ButtonToggleGroup. */
|
|
21
|
+
name?: string;
|
|
22
|
+
/** Callback triggered by blur event on the button. */
|
|
23
|
+
onBlur?: (ev: React.FocusEvent<HTMLButtonElement>) => void;
|
|
24
|
+
/** Callback triggered by focus event on the button. */
|
|
25
|
+
onFocus?: (ev: React.FocusEvent<HTMLButtonElement>) => void;
|
|
26
|
+
/** Callback triggered by click event on the button. */
|
|
27
|
+
onClick?: (ev: React.MouseEvent<HTMLButtonElement>) => void;
|
|
28
|
+
/** Set the pressed state of the toggle button */
|
|
29
|
+
pressed?: boolean;
|
|
30
|
+
/** An optional string by which to identify the button in either an onClick handler, or an onChange handler on the parent ButtonToggleGroup. */
|
|
31
|
+
value?: string;
|
|
19
32
|
}
|
|
20
33
|
export declare const ButtonToggle: {
|
|
21
|
-
({ "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, buttonIcon, buttonIconSize, checked, children, "data-component": dataComponent, "data-element": dataElement, "data-role": dataRole, disabled, grouped, name, onBlur,
|
|
34
|
+
({ "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, buttonIcon, buttonIconSize, checked, children, "data-component": dataComponent, "data-element": dataElement, "data-role": dataRole, disabled, grouped, name, onBlur, onFocus, onClick, pressed, size, value, }: ButtonToggleProps): React.JSX.Element;
|
|
22
35
|
displayName: string;
|
|
23
36
|
};
|
|
24
37
|
export default ButtonToggle;
|
|
@@ -9,13 +9,16 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
9
9
|
var _invariant = _interopRequireDefault(require("invariant"));
|
|
10
10
|
var _buttonToggle = require("./button-toggle.style");
|
|
11
11
|
var _guid = _interopRequireDefault(require("../../__internal__/utils/helpers/guid"));
|
|
12
|
+
var _buttonToggleGroup = require("./button-toggle-group/button-toggle-group.component");
|
|
12
13
|
var _buttonToggleIcon = _interopRequireDefault(require("./button-toggle-icon.component"));
|
|
13
|
-
var _buttonToggleInput = _interopRequireDefault(require("./button-toggle-input.component"));
|
|
14
|
-
var _inputBehaviour = require("../../__internal__/input-behaviour");
|
|
15
14
|
var _logger = _interopRequireDefault(require("../../__internal__/utils/logger"));
|
|
15
|
+
var _inputBehaviour = require("../../__internal__/input-behaviour");
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
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;
|
|
19
22
|
let deprecateUncontrolledWarnTriggered = false;
|
|
20
23
|
const ButtonToggle = _ref => {
|
|
21
24
|
let {
|
|
@@ -32,18 +35,48 @@ const ButtonToggle = _ref => {
|
|
|
32
35
|
grouped,
|
|
33
36
|
name,
|
|
34
37
|
onBlur,
|
|
35
|
-
onChange,
|
|
36
38
|
onFocus,
|
|
39
|
+
onClick,
|
|
40
|
+
pressed,
|
|
37
41
|
size = "medium",
|
|
38
42
|
value
|
|
39
43
|
} = _ref;
|
|
40
44
|
!!!(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
|
+
const pressedPropValue = pressed === undefined ? checked : pressed;
|
|
55
|
+
const buttonRef = (0, _react.useRef)(null);
|
|
41
56
|
const {
|
|
42
57
|
onMouseEnter,
|
|
43
|
-
onMouseLeave
|
|
58
|
+
onMouseLeave,
|
|
59
|
+
onBlur: inputGroupOnBlur,
|
|
60
|
+
onFocus: inputGroupOnFocus
|
|
44
61
|
} = (0, _react.useContext)(_inputBehaviour.InputGroupContext);
|
|
45
|
-
const
|
|
46
|
-
|
|
62
|
+
const {
|
|
63
|
+
onButtonClick,
|
|
64
|
+
handleKeyDown,
|
|
65
|
+
pressedButtonValue,
|
|
66
|
+
onChange,
|
|
67
|
+
name: groupName,
|
|
68
|
+
allowDeselect,
|
|
69
|
+
isInGroup,
|
|
70
|
+
firstButton,
|
|
71
|
+
childButtonCallbackRef
|
|
72
|
+
} = (0, _react.useContext)(_buttonToggleGroup.ButtonToggleGroupContext);
|
|
73
|
+
const callbackRef = element => {
|
|
74
|
+
buttonRef.current = element;
|
|
75
|
+
if (childButtonCallbackRef) {
|
|
76
|
+
childButtonCallbackRef(element);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const inputGuid = (0, _react.useRef)((0, _guid.default)());
|
|
47
80
|
let icon;
|
|
48
81
|
if (buttonIcon) {
|
|
49
82
|
icon = /*#__PURE__*/_react.default.createElement(_buttonToggleIcon.default, {
|
|
@@ -53,42 +86,76 @@ const ButtonToggle = _ref => {
|
|
|
53
86
|
hasContent: !!children
|
|
54
87
|
});
|
|
55
88
|
}
|
|
56
|
-
function handleClick() {
|
|
57
|
-
|
|
89
|
+
function handleClick(ev) {
|
|
90
|
+
if (onClick) {
|
|
91
|
+
onClick(ev);
|
|
92
|
+
}
|
|
93
|
+
if (onChange) {
|
|
94
|
+
let newValue = value;
|
|
95
|
+
if (allowDeselect && pressedButtonValue === value) {
|
|
96
|
+
newValue = undefined;
|
|
97
|
+
}
|
|
98
|
+
onChange(ev, newValue, groupName || name);
|
|
99
|
+
}
|
|
100
|
+
if (value) {
|
|
101
|
+
onButtonClick(value);
|
|
102
|
+
}
|
|
58
103
|
}
|
|
59
104
|
if (!deprecateUncontrolledWarnTriggered && !onChange) {
|
|
60
105
|
deprecateUncontrolledWarnTriggered = true;
|
|
61
106
|
_logger.default.deprecate("Uncontrolled behaviour in `Button Toggle` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
|
|
62
107
|
}
|
|
63
|
-
|
|
108
|
+
function handleFocus(ev) {
|
|
109
|
+
if (onFocus) {
|
|
110
|
+
onFocus(ev);
|
|
111
|
+
}
|
|
112
|
+
if (inputGroupOnFocus) {
|
|
113
|
+
inputGroupOnFocus();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function handleBlur(ev) {
|
|
117
|
+
if (onBlur) {
|
|
118
|
+
onBlur(ev);
|
|
119
|
+
}
|
|
120
|
+
if (inputGroupOnBlur) {
|
|
121
|
+
inputGroupOnBlur();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const isPressed = isInGroup ? pressedButtonValue === value : pressedPropValue;
|
|
125
|
+
const isFirstButton = buttonRef.current === firstButton;
|
|
126
|
+
|
|
127
|
+
// if we're in a ButtonToggleGroup, only one button should be tabbable - the pressed button if there is one, or
|
|
128
|
+
// the first one if not
|
|
129
|
+
const tabbable = !isInGroup || isPressed || !pressedButtonValue && isFirstButton;
|
|
130
|
+
return /*#__PURE__*/_react.default.createElement(_buttonToggle.StyledButtonToggleWrapper, {
|
|
64
131
|
"data-component": dataComponent || "button-toggle",
|
|
65
132
|
"data-element": dataElement,
|
|
66
133
|
"data-role": dataRole,
|
|
67
|
-
grouped: grouped
|
|
68
|
-
|
|
69
|
-
}, /*#__PURE__*/_react.default.createElement(_buttonToggleInput.default, {
|
|
134
|
+
grouped: grouped
|
|
135
|
+
}, /*#__PURE__*/_react.default.createElement(_buttonToggle.StyledButtonToggle, _extends({
|
|
70
136
|
"aria-label": ariaLabel,
|
|
71
137
|
"aria-labelledby": ariaLabelledBy,
|
|
72
|
-
"
|
|
73
|
-
name: name,
|
|
74
|
-
checked: checked,
|
|
75
|
-
disabled: disabled,
|
|
76
|
-
guid: inputGuid,
|
|
77
|
-
value: value,
|
|
78
|
-
onChange: onChange,
|
|
79
|
-
onFocus: onFocus,
|
|
80
|
-
onBlur: onBlur,
|
|
81
|
-
ref: inputRef
|
|
82
|
-
}), /*#__PURE__*/_react.default.createElement(_buttonToggle.StyledButtonToggleLabel, {
|
|
138
|
+
"aria-pressed": !!isPressed,
|
|
83
139
|
buttonIcon: buttonIcon,
|
|
84
140
|
buttonIconSize: buttonIconSize,
|
|
141
|
+
"data-element": "button-toggle-button",
|
|
85
142
|
disabled: disabled,
|
|
86
|
-
|
|
143
|
+
id: inputGuid.current,
|
|
87
144
|
onMouseEnter: onMouseEnter,
|
|
88
145
|
onMouseLeave: onMouseLeave,
|
|
89
146
|
size: size,
|
|
90
|
-
grouped: grouped
|
|
91
|
-
|
|
147
|
+
grouped: grouped,
|
|
148
|
+
value: value,
|
|
149
|
+
onFocus: handleFocus,
|
|
150
|
+
onBlur: handleBlur,
|
|
151
|
+
onClick: handleClick,
|
|
152
|
+
onKeyDown: handleKeyDown
|
|
153
|
+
}, tabbable ? {} : {
|
|
154
|
+
tabIndex: -1
|
|
155
|
+
}, {
|
|
156
|
+
allowDeselect: allowDeselect,
|
|
157
|
+
ref: callbackRef
|
|
158
|
+
}), icon, children));
|
|
92
159
|
};
|
|
93
160
|
exports.ButtonToggle = ButtonToggle;
|
|
94
161
|
ButtonToggle.displayName = "ButtonToggle";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IconType } from "../icon";
|
|
2
2
|
export declare type ButtonToggleIconSizes = "small" | "large";
|
|
3
3
|
declare const StyledButtonToggleContentWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
|
-
export interface
|
|
4
|
+
export interface StyledButtonToggleProps {
|
|
5
5
|
/** The icon to be rendered inside of the button */
|
|
6
6
|
buttonIcon?: IconType;
|
|
7
7
|
/** Sets the size of the buttonIcon (eg. large) */
|
|
@@ -11,17 +11,18 @@ export interface StyledButtonToggleLabelProps {
|
|
|
11
11
|
/** ButtonToggle size */
|
|
12
12
|
size: "small" | "medium" | "large";
|
|
13
13
|
grouped?: boolean;
|
|
14
|
+
/** set this to true to allow the button to be deselected when already selected */
|
|
15
|
+
allowDeselect?: boolean;
|
|
14
16
|
}
|
|
15
|
-
declare const
|
|
17
|
+
declare const StyledButtonToggle: import("styled-components").StyledComponent<"button", any, StyledButtonToggleProps, never>;
|
|
16
18
|
export interface StyledButtonToggleIconProps {
|
|
17
19
|
/** Sets the size of the buttonIcon (eg. large) */
|
|
18
20
|
buttonIconSize?: ButtonToggleIconSizes;
|
|
19
21
|
hasContent?: boolean;
|
|
20
22
|
}
|
|
21
23
|
declare const StyledButtonToggleIcon: import("styled-components").StyledComponent<"div", any, StyledButtonToggleIconProps, never>;
|
|
22
|
-
export interface
|
|
24
|
+
export interface StyledButtonToggleWrapperProps {
|
|
23
25
|
grouped?: boolean;
|
|
24
26
|
}
|
|
25
|
-
declare const
|
|
26
|
-
|
|
27
|
-
export { StyledButtonToggle, StyledButtonToggleLabel, StyledButtonToggleIcon, StyledButtonToggleInput, StyledButtonToggleContentWrapper, };
|
|
27
|
+
declare const StyledButtonToggleWrapper: import("styled-components").StyledComponent<"div", any, StyledButtonToggleWrapperProps, never>;
|
|
28
|
+
export { StyledButtonToggle, StyledButtonToggleWrapper, StyledButtonToggleIcon, StyledButtonToggleContentWrapper, };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.StyledButtonToggleWrapper = exports.StyledButtonToggleIcon = exports.StyledButtonToggleContentWrapper = exports.StyledButtonToggle = void 0;
|
|
7
7
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
8
8
|
var _icon = _interopRequireDefault(require("../icon/icon.style"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -43,8 +43,10 @@ const StyledButtonToggleContentWrapper = _styledComponents.default.div`
|
|
|
43
43
|
flex-flow: wrap;
|
|
44
44
|
`;
|
|
45
45
|
exports.StyledButtonToggleContentWrapper = StyledButtonToggleContentWrapper;
|
|
46
|
-
const
|
|
47
|
-
display: inline-
|
|
46
|
+
const StyledButtonToggle = _styledComponents.default.button`
|
|
47
|
+
display: inline-flex;
|
|
48
|
+
justify-content: center;
|
|
49
|
+
align-items: center;
|
|
48
50
|
position: relative;
|
|
49
51
|
box-sizing: border-box;
|
|
50
52
|
max-width: 100%;
|
|
@@ -60,22 +62,32 @@ const StyledButtonToggleLabel = _styledComponents.default.label`
|
|
|
60
62
|
`;
|
|
61
63
|
}}
|
|
62
64
|
font-weight: 700;
|
|
65
|
+
background-color: transparent;
|
|
63
66
|
cursor: pointer;
|
|
67
|
+
text-align: start;
|
|
68
|
+
color: inherit;
|
|
69
|
+
|
|
64
70
|
border: 1px solid var(--colorsActionMinor500);
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
|
|
72
|
+
:focus {
|
|
73
|
+
outline: 3px solid var(--colorsSemanticFocus500);
|
|
74
|
+
z-index: 100;
|
|
67
75
|
}
|
|
68
|
-
|
|
76
|
+
|
|
77
|
+
&[aria-pressed="true"] {
|
|
69
78
|
background-color: var(--colorsActionMinor300);
|
|
70
79
|
color: var(--colorsActionMinor600);
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
80
|
+
${_ref2 => {
|
|
81
|
+
let {
|
|
82
|
+
allowDeselect
|
|
83
|
+
} = _ref2;
|
|
84
|
+
return !allowDeselect && (0, _styledComponents.css)`
|
|
85
|
+
cursor: auto;
|
|
86
|
+
`;
|
|
87
|
+
}}
|
|
76
88
|
}
|
|
77
89
|
|
|
78
|
-
|
|
90
|
+
:not([aria-pressed="true"]):not(:disabled):hover {
|
|
79
91
|
background-color: var(--colorsActionMinor200);
|
|
80
92
|
border-color: var(--colorsActionMinor500);
|
|
81
93
|
color: var(--colorsActionMinor500);
|
|
@@ -83,24 +95,27 @@ const StyledButtonToggleLabel = _styledComponents.default.label`
|
|
|
83
95
|
color: var(--colorsActionMinor500);
|
|
84
96
|
}
|
|
85
97
|
}
|
|
86
|
-
|
|
98
|
+
|
|
99
|
+
${_icon.default} {
|
|
100
|
+
color: var(--colorsActionMinor500);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
${_ref3 => {
|
|
87
104
|
let {
|
|
88
105
|
buttonIcon,
|
|
89
106
|
buttonIconSize,
|
|
90
107
|
size
|
|
91
|
-
} =
|
|
108
|
+
} = _ref3;
|
|
92
109
|
return buttonIcon && buttonIconSize === "large" && (0, _styledComponents.css)`
|
|
93
110
|
height: ${heightLargeIconConfig[size]}px;
|
|
94
111
|
padding: 0 ${paddingLargeIconConfig[size]}px;
|
|
95
|
-
|
|
96
|
-
flex-direction: column;
|
|
97
|
-
}
|
|
112
|
+
flex-direction: column;
|
|
98
113
|
`;
|
|
99
114
|
}}
|
|
100
|
-
${
|
|
115
|
+
${_ref4 => {
|
|
101
116
|
let {
|
|
102
117
|
disabled
|
|
103
|
-
} =
|
|
118
|
+
} = _ref4;
|
|
104
119
|
return disabled && (0, _styledComponents.css)`
|
|
105
120
|
& {
|
|
106
121
|
border-color: var(--colorsActionDisabled500);
|
|
@@ -113,22 +128,22 @@ const StyledButtonToggleLabel = _styledComponents.default.label`
|
|
|
113
128
|
`;
|
|
114
129
|
}};
|
|
115
130
|
`;
|
|
116
|
-
exports.
|
|
131
|
+
exports.StyledButtonToggle = StyledButtonToggle;
|
|
117
132
|
const iconFontSizes = {
|
|
118
133
|
smallIcon: 16,
|
|
119
134
|
largeIcon: 32
|
|
120
135
|
};
|
|
121
136
|
const StyledButtonToggleIcon = _styledComponents.default.div`
|
|
122
|
-
${
|
|
137
|
+
${_ref5 => {
|
|
123
138
|
let {
|
|
124
139
|
hasContent
|
|
125
|
-
} =
|
|
140
|
+
} = _ref5;
|
|
126
141
|
return hasContent && `margin-right: 8px;`;
|
|
127
142
|
}}
|
|
128
|
-
${
|
|
143
|
+
${_ref6 => {
|
|
129
144
|
let {
|
|
130
145
|
buttonIconSize
|
|
131
|
-
} =
|
|
146
|
+
} = _ref6;
|
|
132
147
|
return buttonIconSize === "large" && (0, _styledComponents.css)`
|
|
133
148
|
margin-right: 0;
|
|
134
149
|
${_icon.default} {
|
|
@@ -148,18 +163,18 @@ const StyledButtonToggleIcon = _styledComponents.default.div`
|
|
|
148
163
|
}}
|
|
149
164
|
`;
|
|
150
165
|
exports.StyledButtonToggleIcon = StyledButtonToggleIcon;
|
|
151
|
-
const
|
|
166
|
+
const StyledButtonToggleWrapper = _styledComponents.default.div`
|
|
152
167
|
display: inline-block;
|
|
153
168
|
vertical-align: middle;
|
|
154
169
|
|
|
155
|
-
${
|
|
170
|
+
${_ref7 => {
|
|
156
171
|
let {
|
|
157
172
|
grouped
|
|
158
|
-
} =
|
|
173
|
+
} = _ref7;
|
|
159
174
|
return (0, _styledComponents.css)`
|
|
160
175
|
${!grouped && (0, _styledComponents.css)`
|
|
161
176
|
&&&& {
|
|
162
|
-
${
|
|
177
|
+
${StyledButtonToggle} {
|
|
163
178
|
border-radius: var(--borderRadius400);
|
|
164
179
|
}
|
|
165
180
|
}
|
|
@@ -168,14 +183,14 @@ const StyledButtonToggle = _styledComponents.default.div`
|
|
|
168
183
|
${grouped && (0, _styledComponents.css)`
|
|
169
184
|
&&&& {
|
|
170
185
|
:first-of-type {
|
|
171
|
-
${
|
|
186
|
+
${StyledButtonToggle} {
|
|
172
187
|
border-top-left-radius: var(--borderRadius400);
|
|
173
188
|
border-bottom-left-radius: var(--borderRadius400);
|
|
174
189
|
}
|
|
175
190
|
}
|
|
176
191
|
|
|
177
192
|
:last-of-type {
|
|
178
|
-
${
|
|
193
|
+
${StyledButtonToggle} {
|
|
179
194
|
border-top-right-radius: var(--borderRadius400);
|
|
180
195
|
border-bottom-right-radius: var(--borderRadius400);
|
|
181
196
|
}
|
|
@@ -189,10 +204,10 @@ const StyledButtonToggle = _styledComponents.default.div`
|
|
|
189
204
|
margin-left: 8px;
|
|
190
205
|
}
|
|
191
206
|
|
|
192
|
-
${
|
|
207
|
+
${_ref8 => {
|
|
193
208
|
let {
|
|
194
209
|
grouped
|
|
195
|
-
} =
|
|
210
|
+
} = _ref8;
|
|
196
211
|
return grouped && (0, _styledComponents.css)`
|
|
197
212
|
&:not(:first-of-type) {
|
|
198
213
|
margin-left: -1px;
|
|
@@ -200,11 +215,4 @@ const StyledButtonToggle = _styledComponents.default.div`
|
|
|
200
215
|
`;
|
|
201
216
|
}};
|
|
202
217
|
`;
|
|
203
|
-
exports.
|
|
204
|
-
const StyledButtonToggleInput = _styledComponents.default.input`
|
|
205
|
-
position: absolute;
|
|
206
|
-
width: 0;
|
|
207
|
-
height: 0;
|
|
208
|
-
opacity: 0;
|
|
209
|
-
`;
|
|
210
|
-
exports.StyledButtonToggleInput = StyledButtonToggleInput;
|
|
218
|
+
exports.StyledButtonToggleWrapper = StyledButtonToggleWrapper;
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export { default } from "./button-toggle.component";
|
|
1
|
+
export { default as ButtonToggle } from "./button-toggle.component";
|
|
2
2
|
export type { ButtonToggleProps } from "./button-toggle.component";
|
|
3
|
+
export { default as ButtonToggleGroup } from "./button-toggle-group";
|
|
4
|
+
export type { ButtonToggleGroupProps } from "./button-toggle-group";
|
|
@@ -3,11 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "
|
|
6
|
+
Object.defineProperty(exports, "ButtonToggle", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
9
|
return _buttonToggle.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "ButtonToggleGroup", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _buttonToggleGroup.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
var _buttonToggle = _interopRequireDefault(require("./button-toggle.component"));
|
|
19
|
+
var _buttonToggleGroup = _interopRequireDefault(require("./button-toggle-group"));
|
|
13
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
package/package.json
CHANGED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export interface ButtonToggleInputProps {
|
|
3
|
-
/** Prop to specify the aria-label of the component */
|
|
4
|
-
"aria-label"?: string;
|
|
5
|
-
/** Prop to specify the aria-labelledby property of the component */
|
|
6
|
-
"aria-labelledby"?: string;
|
|
7
|
-
/** Set the checked value of the radio button */
|
|
8
|
-
checked?: boolean;
|
|
9
|
-
/** Disable all user interaction. */
|
|
10
|
-
disabled?: boolean;
|
|
11
|
-
/** Unique ID attribute for input */
|
|
12
|
-
guid?: string;
|
|
13
|
-
/** Name used on the hidden radio button. */
|
|
14
|
-
name?: string;
|
|
15
|
-
/** Callback triggered by blur event on the input. */
|
|
16
|
-
onBlur?: (ev: React.FocusEvent<HTMLInputElement>) => void;
|
|
17
|
-
/** Callback triggered by change event on the input. */
|
|
18
|
-
onChange?: (ev: React.ChangeEvent<HTMLInputElement>) => void;
|
|
19
|
-
/** Callback triggered by focus event on the input. */
|
|
20
|
-
onFocus?: (ev: React.FocusEvent<HTMLInputElement>) => void;
|
|
21
|
-
/** Value for the input */
|
|
22
|
-
value?: string;
|
|
23
|
-
}
|
|
24
|
-
declare const ButtonToggleInput: React.ForwardRefExoticComponent<ButtonToggleInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
25
|
-
export default ButtonToggleInput;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
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); }
|
|
2
|
-
import React, { useContext } from "react";
|
|
3
|
-
import PropTypes from "prop-types";
|
|
4
|
-
import { StyledButtonToggleInput } from "./button-toggle.style";
|
|
5
|
-
import { InputGroupContext } from "../../__internal__/input-behaviour";
|
|
6
|
-
const ButtonToggleInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
|
|
7
|
-
const {
|
|
8
|
-
onFocus,
|
|
9
|
-
onBlur
|
|
10
|
-
} = useContext(InputGroupContext);
|
|
11
|
-
const handleBlur = ev => {
|
|
12
|
-
if (props.onBlur) {
|
|
13
|
-
props.onBlur(ev);
|
|
14
|
-
}
|
|
15
|
-
if (onBlur) onBlur();
|
|
16
|
-
};
|
|
17
|
-
const handleFocus = ev => {
|
|
18
|
-
if (props.onFocus) {
|
|
19
|
-
props.onFocus(ev);
|
|
20
|
-
}
|
|
21
|
-
if (onFocus) onFocus();
|
|
22
|
-
};
|
|
23
|
-
return /*#__PURE__*/React.createElement(StyledButtonToggleInput, _extends({}, props, {
|
|
24
|
-
type: "radio",
|
|
25
|
-
id: props.guid,
|
|
26
|
-
onBlur: handleBlur,
|
|
27
|
-
onFocus: handleFocus,
|
|
28
|
-
ref: forwardRef
|
|
29
|
-
}));
|
|
30
|
-
});
|
|
31
|
-
ButtonToggleInput.propTypes = {
|
|
32
|
-
"aria-label": PropTypes.string,
|
|
33
|
-
"aria-labelledby": PropTypes.string,
|
|
34
|
-
"checked": PropTypes.bool,
|
|
35
|
-
"disabled": PropTypes.bool,
|
|
36
|
-
"guid": PropTypes.string,
|
|
37
|
-
"name": PropTypes.string,
|
|
38
|
-
"onBlur": PropTypes.func,
|
|
39
|
-
"onChange": PropTypes.func,
|
|
40
|
-
"onFocus": PropTypes.func,
|
|
41
|
-
"value": PropTypes.string
|
|
42
|
-
};
|
|
43
|
-
ButtonToggleInput.displayName = "ButtonToggleInput";
|
|
44
|
-
export default ButtonToggleInput;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { MarginProps } from "styled-system";
|
|
3
|
-
import { ValidationProps } from "../../__internal__/validations";
|
|
4
|
-
import { TagProps } from "../../__internal__/utils/helpers/tags";
|
|
5
|
-
export interface ButtonToggleGroupProps extends ValidationProps, MarginProps, TagProps {
|
|
6
|
-
/** Unique id for the root element of the component */
|
|
7
|
-
id: string;
|
|
8
|
-
/** Specifies the name prop to be applied to each button in the group */
|
|
9
|
-
name: string;
|
|
10
|
-
/** Togglable buttons to be rendered. Only accepts children of type ButtonToggle */
|
|
11
|
-
children?: React.ReactNode;
|
|
12
|
-
/** When true, validation icon will be placed on label instead of being placed on the input */
|
|
13
|
-
validationOnLabel?: boolean;
|
|
14
|
-
/** Text for the label. */
|
|
15
|
-
label?: string;
|
|
16
|
-
/** Text for the labels help tooltip. */
|
|
17
|
-
labelHelp?: React.ReactNode;
|
|
18
|
-
/** Spacing between label and a field for inline label, given number will be multiplied by base spacing unit (8) */
|
|
19
|
-
labelSpacing?: 1 | 2;
|
|
20
|
-
/** The percentage width of the ButtonToggleGroup. */
|
|
21
|
-
inputWidth?: number | string;
|
|
22
|
-
/** The text for the field help. */
|
|
23
|
-
fieldHelp?: string;
|
|
24
|
-
/** Sets the field help to inline. */
|
|
25
|
-
fieldHelpInline?: boolean;
|
|
26
|
-
/** Sets the label to be inline. */
|
|
27
|
-
labelInline?: boolean;
|
|
28
|
-
/** The percentage width of the label. */
|
|
29
|
-
labelWidth?: number;
|
|
30
|
-
/** If true all ButtonToggle children will flex to the full width of the ButtonToggleGroup parent */
|
|
31
|
-
fullWidth?: boolean;
|
|
32
|
-
/** The alignment for the text in the label. */
|
|
33
|
-
labelAlign?: "left" | "right";
|
|
34
|
-
/** Callback triggered by blur event on the input. */
|
|
35
|
-
onBlur?: (ev: React.FocusEvent<HTMLInputElement>) => void;
|
|
36
|
-
/** Callback triggered by change event on the input. */
|
|
37
|
-
onChange?: (ev: React.ChangeEvent<HTMLInputElement>) => void;
|
|
38
|
-
/** The value of the Button Toggle Group */
|
|
39
|
-
value?: string;
|
|
40
|
-
/** Aria label for rendered help component */
|
|
41
|
-
helpAriaLabel?: string;
|
|
42
|
-
}
|
|
43
|
-
declare const ButtonToggleGroup: {
|
|
44
|
-
({ children, name, error, warning, info, validationOnLabel, label, labelHelp, labelSpacing, inputWidth, fullWidth, fieldHelp, fieldHelpInline, labelInline, labelWidth, labelAlign, onChange, onBlur, value, "data-component": dataComponent, "data-element": dataElement, "data-role": dataRole, helpAriaLabel, id, ...props }: ButtonToggleGroupProps): React.JSX.Element;
|
|
45
|
-
displayName: string;
|
|
46
|
-
};
|
|
47
|
-
export default ButtonToggleGroup;
|