@carbon/react 1.44.0 → 1.45.0-rc.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/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +805 -805
- package/es/components/Checkbox/Checkbox.d.ts +1 -1
- package/es/components/Checkbox/Checkbox.js +1 -1
- package/es/components/CheckboxGroup/CheckboxGroup.js +1 -1
- package/es/components/ComboBox/ComboBox.d.ts +1 -1
- package/es/components/ComboBox/ComboBox.js +1 -1
- package/es/components/ComboButton/index.js +1 -1
- package/es/components/ComposedModal/ModalFooter.d.ts +2 -1
- package/es/components/DataTable/DataTable.d.ts +2 -0
- package/es/components/DataTable/DataTable.js +3 -0
- package/es/components/DataTable/TableExpandRow.js +20 -3
- package/es/components/DataTable/TableHeader.d.ts +5 -0
- package/es/components/DataTable/TableHeader.js +30 -6
- package/es/components/DataTable/TableSlugRow.d.ts +31 -0
- package/es/components/DataTable/TableSlugRow.js +49 -0
- package/es/components/DataTable/index.d.ts +2 -1
- package/es/components/DataTable/index.js +3 -0
- package/es/components/DatePickerInput/DatePickerInput.d.ts +1 -1
- package/es/components/DatePickerInput/DatePickerInput.js +1 -1
- package/es/components/Dropdown/Dropdown.d.ts +1 -1
- package/es/components/Dropdown/Dropdown.js +1 -1
- package/es/components/InlineLoading/InlineLoading.d.ts +68 -0
- package/es/components/InlineLoading/InlineLoading.js +4 -4
- package/es/components/InlineLoading/index.d.ts +9 -0
- package/es/components/Layer/LayerContext.d.ts +8 -0
- package/es/components/Layer/LayerLevel.d.ts +5 -0
- package/es/components/Layer/LayerLevel.js +12 -0
- package/es/components/Layer/index.d.ts +38 -0
- package/es/components/Layer/index.js +9 -8
- package/es/components/Menu/MenuItem.js +2 -1
- package/es/components/MenuButton/index.js +1 -1
- package/es/components/Modal/Modal.d.ts +3 -2
- package/es/components/MultiSelect/FilterableMultiSelect.js +1 -1
- package/es/components/MultiSelect/MultiSelect.d.ts +1 -1
- package/es/components/MultiSelect/MultiSelect.js +1 -1
- package/es/components/Notification/Notification.js +1 -0
- package/es/components/NumberInput/NumberInput.d.ts +1 -1
- package/es/components/NumberInput/NumberInput.js +1 -1
- package/es/components/RadioButton/RadioButton.d.ts +1 -1
- package/es/components/RadioButton/RadioButton.js +1 -1
- package/es/components/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
- package/es/components/RadioButtonGroup/RadioButtonGroup.js +1 -1
- package/es/components/Select/Select.d.ts +1 -1
- package/es/components/Select/Select.js +1 -1
- package/es/components/Slider/Slider.Skeleton.js +17 -3
- package/es/components/Slider/Slider.js +132 -93
- package/es/components/Slider/SliderHandles.d.ts +4 -0
- package/es/components/Slider/SliderHandles.js +65 -0
- package/es/components/Tabs/Tabs.js +1 -1
- package/es/components/TextArea/TextArea.d.ts +7 -3
- package/es/components/TextArea/TextArea.js +84 -17
- package/es/components/TextInput/TextInput.d.ts +1 -1
- package/es/components/TextInput/TextInput.js +1 -1
- package/es/components/Tile/Tile.d.ts +8 -8
- package/es/components/Tile/Tile.js +9 -5
- package/es/components/Tooltip/Tooltip.js +48 -2
- package/es/components/UIShell/HeaderPanel.d.ts +36 -0
- package/es/components/UIShell/HeaderPanel.js +6 -6
- package/es/index.js +2 -1
- package/es/internal/useAnnouncer.js +2 -1
- package/es/internal/useNoInteractiveChildren.js +2 -6
- package/lib/components/Checkbox/Checkbox.d.ts +1 -1
- package/lib/components/Checkbox/Checkbox.js +1 -1
- package/lib/components/CheckboxGroup/CheckboxGroup.js +1 -1
- package/lib/components/ComboBox/ComboBox.d.ts +1 -1
- package/lib/components/ComboBox/ComboBox.js +1 -1
- package/lib/components/ComboButton/index.js +1 -1
- package/lib/components/ComposedModal/ModalFooter.d.ts +2 -1
- package/lib/components/DataTable/DataTable.d.ts +2 -0
- package/lib/components/DataTable/DataTable.js +3 -0
- package/lib/components/DataTable/TableExpandRow.js +20 -3
- package/lib/components/DataTable/TableHeader.d.ts +5 -0
- package/lib/components/DataTable/TableHeader.js +29 -5
- package/lib/components/DataTable/TableSlugRow.d.ts +31 -0
- package/lib/components/DataTable/TableSlugRow.js +59 -0
- package/lib/components/DataTable/index.d.ts +2 -1
- package/lib/components/DataTable/index.js +3 -0
- package/lib/components/DatePickerInput/DatePickerInput.d.ts +1 -1
- package/lib/components/DatePickerInput/DatePickerInput.js +1 -1
- package/lib/components/Dropdown/Dropdown.d.ts +1 -1
- package/lib/components/Dropdown/Dropdown.js +1 -1
- package/lib/components/InlineLoading/InlineLoading.d.ts +68 -0
- package/lib/components/InlineLoading/InlineLoading.js +4 -4
- package/lib/components/InlineLoading/index.d.ts +9 -0
- package/lib/components/Layer/LayerContext.d.ts +8 -0
- package/lib/components/Layer/LayerLevel.d.ts +5 -0
- package/lib/components/Layer/LayerLevel.js +18 -0
- package/lib/components/Layer/index.d.ts +38 -0
- package/lib/components/Layer/index.js +10 -9
- package/lib/components/Menu/MenuItem.js +2 -1
- package/lib/components/MenuButton/index.js +1 -1
- package/lib/components/Modal/Modal.d.ts +3 -2
- package/lib/components/MultiSelect/FilterableMultiSelect.js +1 -1
- package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
- package/lib/components/MultiSelect/MultiSelect.js +1 -1
- package/lib/components/Notification/Notification.js +1 -0
- package/lib/components/NumberInput/NumberInput.d.ts +1 -1
- package/lib/components/NumberInput/NumberInput.js +1 -1
- package/lib/components/RadioButton/RadioButton.d.ts +1 -1
- package/lib/components/RadioButton/RadioButton.js +1 -1
- package/lib/components/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
- package/lib/components/RadioButtonGroup/RadioButtonGroup.js +1 -1
- package/lib/components/Select/Select.d.ts +1 -1
- package/lib/components/Select/Select.js +1 -1
- package/lib/components/Slider/Slider.Skeleton.js +17 -3
- package/lib/components/Slider/Slider.js +132 -93
- package/lib/components/Slider/SliderHandles.d.ts +4 -0
- package/lib/components/Slider/SliderHandles.js +76 -0
- package/lib/components/Tabs/Tabs.js +1 -1
- package/lib/components/TextArea/TextArea.d.ts +7 -3
- package/lib/components/TextArea/TextArea.js +83 -16
- package/lib/components/TextInput/TextInput.d.ts +1 -1
- package/lib/components/TextInput/TextInput.js +1 -1
- package/lib/components/Tile/Tile.d.ts +8 -8
- package/lib/components/Tile/Tile.js +9 -5
- package/lib/components/Tooltip/Tooltip.js +47 -1
- package/lib/components/UIShell/HeaderPanel.d.ts +36 -0
- package/lib/components/UIShell/HeaderPanel.js +7 -7
- package/lib/index.js +4 -2
- package/lib/internal/useAnnouncer.js +2 -1
- package/lib/internal/useNoInteractiveChildren.js +2 -6
- package/package.json +4 -7
|
@@ -18,7 +18,7 @@ import { useId } from '../../internal/useId.js';
|
|
|
18
18
|
import { useMergedRefs } from '../../internal/useMergedRefs.js';
|
|
19
19
|
import { usePrefix } from '../../internal/usePrefix.js';
|
|
20
20
|
|
|
21
|
-
const spacing =
|
|
21
|
+
const spacing = 0; // top and bottom spacing between the button and the menu. in px
|
|
22
22
|
const validButtonKinds = ['primary', 'tertiary', 'ghost'];
|
|
23
23
|
const defaultButtonKind = 'primary';
|
|
24
24
|
const MenuButton = /*#__PURE__*/React__default.forwardRef(function MenuButton(_ref, forwardRef) {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import { ReactAttr } from '../../types/common';
|
|
9
|
+
import { InlineLoadingStatus } from '../InlineLoading/InlineLoading';
|
|
9
10
|
export declare const ModalSizes: readonly ["xs", "sm", "md", "lg"];
|
|
10
11
|
export type ModalSize = (typeof ModalSizes)[number];
|
|
11
12
|
export interface ModalSecondaryButton {
|
|
@@ -65,7 +66,7 @@ export interface ModalProps extends ReactAttr<HTMLDivElement> {
|
|
|
65
66
|
/**
|
|
66
67
|
* Specify loading status
|
|
67
68
|
*/
|
|
68
|
-
loadingStatus?:
|
|
69
|
+
loadingStatus?: InlineLoadingStatus;
|
|
69
70
|
/**
|
|
70
71
|
* Specify a label to be read by screen readers on the modal root node
|
|
71
72
|
*/
|
|
@@ -87,7 +88,7 @@ export interface ModalProps extends ReactAttr<HTMLDivElement> {
|
|
|
87
88
|
* Specify an optional handler to be invoked when loading is
|
|
88
89
|
* successful
|
|
89
90
|
*/
|
|
90
|
-
onLoadingSuccess?:
|
|
91
|
+
onLoadingSuccess?: () => void;
|
|
91
92
|
/**
|
|
92
93
|
* Specify a handler for closing modal.
|
|
93
94
|
* The handler should care of closing modal, e.g. changing `open` prop.
|
|
@@ -545,7 +545,7 @@ FilterableMultiSelect.propTypes = {
|
|
|
545
545
|
*/
|
|
546
546
|
size: ListBoxSize,
|
|
547
547
|
/**
|
|
548
|
-
* Provide a `Slug` component to be rendered inside the `FilterableMultiSelect` component
|
|
548
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `FilterableMultiSelect` component
|
|
549
549
|
*/
|
|
550
550
|
slug: PropTypes.node,
|
|
551
551
|
...sortingPropTypes,
|
|
@@ -164,7 +164,7 @@ export interface MultiSelectProps<ItemType> extends MultiSelectSortingProps<Item
|
|
|
164
164
|
*/
|
|
165
165
|
size?: ListBoxSize;
|
|
166
166
|
/**
|
|
167
|
-
* Provide a `Slug` component to be rendered inside the `MultiSelect` component
|
|
167
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `MultiSelect` component
|
|
168
168
|
*/
|
|
169
169
|
slug?: ReactNodeLike;
|
|
170
170
|
/**
|
|
@@ -507,7 +507,7 @@ MultiSelect.propTypes = {
|
|
|
507
507
|
*/
|
|
508
508
|
size: ListBoxSize,
|
|
509
509
|
/**
|
|
510
|
-
* Provide a `Slug` component to be rendered inside the `MultiSelect` component
|
|
510
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `MultiSelect` component
|
|
511
511
|
*/
|
|
512
512
|
slug: PropTypes.node,
|
|
513
513
|
/**
|
|
@@ -584,6 +584,7 @@ function ActionableNotification(_ref6) {
|
|
|
584
584
|
className: `${prefix}--actionable-notification__subtitle`,
|
|
585
585
|
id: subtitleId
|
|
586
586
|
}, subtitle), children))), /*#__PURE__*/React__default.createElement("div", {
|
|
587
|
+
className: `${prefix}--actionable-notification__button-wrapper`,
|
|
587
588
|
ref: innerModal
|
|
588
589
|
}, actionButtonLabel && /*#__PURE__*/React__default.createElement(NotificationActionButton, {
|
|
589
590
|
onClick: onActionButtonClick,
|
|
@@ -109,7 +109,7 @@ export interface NumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInp
|
|
|
109
109
|
*/
|
|
110
110
|
size?: 'sm' | 'md' | 'lg';
|
|
111
111
|
/**
|
|
112
|
-
* Provide a `Slug` component to be rendered inside the `TextInput` component
|
|
112
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `TextInput` component
|
|
113
113
|
*/
|
|
114
114
|
slug?: ReactNodeLike;
|
|
115
115
|
/**
|
|
@@ -360,7 +360,7 @@ NumberInput.propTypes = {
|
|
|
360
360
|
*/
|
|
361
361
|
size: PropTypes.oneOf(['sm', 'md', 'lg']),
|
|
362
362
|
/**
|
|
363
|
-
* Provide a `Slug` component to be rendered inside the `NumberInput` component
|
|
363
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `NumberInput` component
|
|
364
364
|
*/
|
|
365
365
|
slug: PropTypes.node,
|
|
366
366
|
/**
|
|
@@ -56,7 +56,7 @@ export interface RadioButtonProps extends Omit<React.InputHTMLAttributes<HTMLInp
|
|
|
56
56
|
*/
|
|
57
57
|
onClick?: (evt: React.MouseEvent<HTMLInputElement>) => void;
|
|
58
58
|
/**
|
|
59
|
-
* Provide a `Slug` component to be rendered inside the `RadioButton` component
|
|
59
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `RadioButton` component
|
|
60
60
|
*/
|
|
61
61
|
slug?: ReactNodeLike;
|
|
62
62
|
/**
|
|
@@ -120,7 +120,7 @@ RadioButton.propTypes = {
|
|
|
120
120
|
*/
|
|
121
121
|
onClick: PropTypes.func,
|
|
122
122
|
/**
|
|
123
|
-
* Provide a `Slug` component to be rendered inside the `RadioButton` component
|
|
123
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `RadioButton` component
|
|
124
124
|
*/
|
|
125
125
|
slug: PropTypes.node,
|
|
126
126
|
/**
|
|
@@ -64,7 +64,7 @@ export interface RadioButtonGroupProps extends Omit<React.InputHTMLAttributes<HT
|
|
|
64
64
|
*/
|
|
65
65
|
readOnly?: boolean;
|
|
66
66
|
/**
|
|
67
|
-
* Provide a `Slug` component to be rendered inside the `RadioButtonGroup` component
|
|
67
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `RadioButtonGroup` component
|
|
68
68
|
*/
|
|
69
69
|
slug?: ReactNodeLike;
|
|
70
70
|
/**
|
|
@@ -188,7 +188,7 @@ RadioButtonGroup.propTypes = {
|
|
|
188
188
|
*/
|
|
189
189
|
readOnly: PropTypes.bool,
|
|
190
190
|
/**
|
|
191
|
-
* Provide a `Slug` component to be rendered inside the `RadioButtonGroup` component
|
|
191
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `RadioButtonGroup` component
|
|
192
192
|
*/
|
|
193
193
|
slug: PropTypes.node,
|
|
194
194
|
/**
|
|
@@ -78,7 +78,7 @@ interface SelectProps extends Omit<ComponentPropsWithRef<'select'>, ExcludedAttr
|
|
|
78
78
|
*/
|
|
79
79
|
size?: 'sm' | 'md' | 'lg';
|
|
80
80
|
/**
|
|
81
|
-
* Provide a `Slug` component to be rendered inside the `Dropdown` component
|
|
81
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `Dropdown` component
|
|
82
82
|
*/
|
|
83
83
|
slug?: ReactNodeLike;
|
|
84
84
|
/**
|
|
@@ -245,7 +245,7 @@ Select.propTypes = {
|
|
|
245
245
|
*/
|
|
246
246
|
size: PropTypes.oneOf(['sm', 'md', 'lg']),
|
|
247
247
|
/**
|
|
248
|
-
* Provide a `Slug` component to be rendered inside the `Select` component
|
|
248
|
+
* **Experimental**: Provide a `Slug` component to be rendered inside the `Select` component
|
|
249
249
|
*/
|
|
250
250
|
slug: PropTypes.node,
|
|
251
251
|
/**
|
|
@@ -10,7 +10,9 @@ import PropTypes from 'prop-types';
|
|
|
10
10
|
import React__default from 'react';
|
|
11
11
|
import cx from 'classnames';
|
|
12
12
|
import { usePrefix } from '../../internal/usePrefix.js';
|
|
13
|
+
import { LowerHandle, UpperHandle } from './SliderHandles.js';
|
|
13
14
|
|
|
15
|
+
var _LowerHandle, _UpperHandle, _UpperHandle2, _LowerHandle2;
|
|
14
16
|
const SliderSkeleton = _ref => {
|
|
15
17
|
let {
|
|
16
18
|
hideLabel,
|
|
@@ -19,8 +21,10 @@ const SliderSkeleton = _ref => {
|
|
|
19
21
|
...rest
|
|
20
22
|
} = _ref;
|
|
21
23
|
const prefix = usePrefix();
|
|
24
|
+
const isRtl = document?.dir === 'rtl';
|
|
22
25
|
const containerClasses = cx(`${prefix}--slider-container`, `${prefix}--skeleton`, {
|
|
23
|
-
[`${prefix}--slider-container--two-handles`]: twoHandles
|
|
26
|
+
[`${prefix}--slider-container--two-handles`]: twoHandles,
|
|
27
|
+
[`${prefix}--slider-container--rtl`]: isRtl
|
|
24
28
|
});
|
|
25
29
|
const lowerThumbClasses = cx(`${prefix}--slider__thumb`, {
|
|
26
30
|
[`${prefix}--slider__thumb--lower`]: twoHandles
|
|
@@ -28,6 +32,12 @@ const SliderSkeleton = _ref => {
|
|
|
28
32
|
const upperThumbClasses = cx(`${prefix}--slider__thumb`, {
|
|
29
33
|
[`${prefix}--slider__thumb--upper`]: twoHandles
|
|
30
34
|
});
|
|
35
|
+
const lowerThumbWrapperClasses = cx(`${prefix}--slider__thumb-wrapper`, {
|
|
36
|
+
[`${prefix}--slider__thumb-wrapper--lower`]: twoHandles
|
|
37
|
+
});
|
|
38
|
+
const upperThumbWrapperClasses = cx(`${prefix}--slider__thumb-wrapper`, {
|
|
39
|
+
[`${prefix}--slider__thumb-wrapper--upper`]: twoHandles
|
|
40
|
+
});
|
|
31
41
|
return /*#__PURE__*/React__default.createElement("div", _extends({
|
|
32
42
|
className: cx(`${prefix}--form-item`, className)
|
|
33
43
|
}, rest), !hideLabel && /*#__PURE__*/React__default.createElement("span", {
|
|
@@ -43,10 +53,14 @@ const SliderSkeleton = _ref => {
|
|
|
43
53
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
44
54
|
className: `${prefix}--slider__filled-track`
|
|
45
55
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
56
|
+
className: lowerThumbWrapperClasses
|
|
57
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
46
58
|
className: lowerThumbClasses
|
|
47
|
-
}), twoHandles ? /*#__PURE__*/React__default.createElement("div", {
|
|
59
|
+
}, twoHandles && !isRtl ? _LowerHandle || (_LowerHandle = /*#__PURE__*/React__default.createElement(LowerHandle, null)) : twoHandles && isRtl ? _UpperHandle || (_UpperHandle = /*#__PURE__*/React__default.createElement(UpperHandle, null)) : undefined)), twoHandles ? /*#__PURE__*/React__default.createElement("div", {
|
|
60
|
+
className: upperThumbWrapperClasses
|
|
61
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
48
62
|
className: upperThumbClasses
|
|
49
|
-
}) : undefined), /*#__PURE__*/React__default.createElement("span", {
|
|
63
|
+
}, twoHandles && !isRtl ? _UpperHandle2 || (_UpperHandle2 = /*#__PURE__*/React__default.createElement(UpperHandle, null)) : twoHandles && isRtl ? _LowerHandle2 || (_LowerHandle2 = /*#__PURE__*/React__default.createElement(LowerHandle, null)) : undefined)) : undefined), /*#__PURE__*/React__default.createElement("span", {
|
|
50
64
|
className: `${prefix}--slider__range-label`
|
|
51
65
|
})));
|
|
52
66
|
};
|
|
@@ -16,62 +16,59 @@ import deprecate from '../../prop-types/deprecate.js';
|
|
|
16
16
|
import { FeatureFlagContext } from '../FeatureFlags/index.js';
|
|
17
17
|
import { WarningFilled, WarningAltFilled } from '@carbon/icons-react';
|
|
18
18
|
import '../Text/index.js';
|
|
19
|
+
import '../Tooltip/DefinitionTooltip.js';
|
|
20
|
+
import { Tooltip } from '../Tooltip/Tooltip.js';
|
|
21
|
+
import { LowerHandle, LowerHandleFocus, UpperHandle, UpperHandleFocus } from './SliderHandles.js';
|
|
19
22
|
import { matches } from '../../internal/keyboard/match.js';
|
|
20
23
|
import { Text } from '../Text/Text.js';
|
|
21
24
|
|
|
22
|
-
var
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
d: "M.92 24H0v-6.46h.92z"
|
|
70
|
-
})), _path13 || (_path13 = /*#__PURE__*/React__default.createElement("path", {
|
|
71
|
-
d: "M16 24h-.92V0H16zM.92 24H0V0h.92z"
|
|
72
|
-
})), _path14 || (_path14 = /*#__PURE__*/React__default.createElement("path", {
|
|
73
|
-
d: "M16 23.08V24H0v-.92zM16 0v.92H0V0z"
|
|
74
|
-
}))));
|
|
25
|
+
var _LowerHandle, _LowerHandleFocus, _UpperHandle, _UpperHandleFocus, _UpperHandle2, _UpperHandleFocus2, _LowerHandle2, _LowerHandleFocus2;
|
|
26
|
+
const ThumbWrapper = _ref => {
|
|
27
|
+
let {
|
|
28
|
+
hasTooltip = false,
|
|
29
|
+
className,
|
|
30
|
+
style,
|
|
31
|
+
children,
|
|
32
|
+
...rest
|
|
33
|
+
} = _ref;
|
|
34
|
+
if (hasTooltip) {
|
|
35
|
+
return (
|
|
36
|
+
/*#__PURE__*/
|
|
37
|
+
// eslint-disable-next-line react/forbid-component-props
|
|
38
|
+
React__default.createElement(Tooltip, _extends({
|
|
39
|
+
className: className,
|
|
40
|
+
style: style
|
|
41
|
+
}, rest), children)
|
|
42
|
+
);
|
|
43
|
+
} else {
|
|
44
|
+
return (
|
|
45
|
+
/*#__PURE__*/
|
|
46
|
+
// eslint-disable-next-line react/forbid-dom-props
|
|
47
|
+
React__default.createElement("div", {
|
|
48
|
+
className: className,
|
|
49
|
+
style: style
|
|
50
|
+
}, children)
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
ThumbWrapper.propTypes = {
|
|
55
|
+
/**
|
|
56
|
+
* The thumb node itself.
|
|
57
|
+
*/
|
|
58
|
+
children: PropTypes.node,
|
|
59
|
+
/**
|
|
60
|
+
* CSS wrapper class names.
|
|
61
|
+
*/
|
|
62
|
+
className: PropTypes.string,
|
|
63
|
+
/**
|
|
64
|
+
* Should the thumb show a tooltip with the current value?
|
|
65
|
+
*/
|
|
66
|
+
hasTooltip: PropTypes.bool.isRequired,
|
|
67
|
+
/**
|
|
68
|
+
* Percentage offset for the select thumb value.
|
|
69
|
+
*/
|
|
70
|
+
style: PropTypes.object
|
|
71
|
+
};
|
|
75
72
|
const translationIds = {
|
|
76
73
|
autoCorrectAnnouncement: 'carbon.slider.auto-correct-announcement'
|
|
77
74
|
};
|
|
@@ -148,6 +145,12 @@ class Slider extends PureComponent {
|
|
|
148
145
|
return;
|
|
149
146
|
}
|
|
150
147
|
|
|
148
|
+
// We're going to force focus on one of the handles later on here, b/c we're
|
|
149
|
+
// firing on a mousedown event, we need to call event.preventDefault() to
|
|
150
|
+
// keep the focus from leaving the HTMLElement.
|
|
151
|
+
// @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#notes
|
|
152
|
+
evt.preventDefault();
|
|
153
|
+
|
|
151
154
|
// Register drag stop handlers
|
|
152
155
|
DRAG_STOP_EVENT_TYPES.forEach(element => {
|
|
153
156
|
this.element?.ownerDocument.addEventListener(element, this.onDragStop);
|
|
@@ -160,14 +163,34 @@ class Slider extends PureComponent {
|
|
|
160
163
|
const clientX = this.getClientXFromEvent(evt);
|
|
161
164
|
let activeHandle;
|
|
162
165
|
if (this.hasTwoHandles()) {
|
|
163
|
-
|
|
164
|
-
const distanceToUpper = this.calcDistanceToHandle(HandlePosition.UPPER, clientX);
|
|
165
|
-
if (distanceToLower <= distanceToUpper) {
|
|
166
|
+
if (evt.target == this.thumbRef.current) {
|
|
166
167
|
activeHandle = HandlePosition.LOWER;
|
|
167
|
-
} else {
|
|
168
|
+
} else if (evt.target == this.thumbRefUpper.current) {
|
|
168
169
|
activeHandle = HandlePosition.UPPER;
|
|
170
|
+
} else {
|
|
171
|
+
const distanceToLower = this.calcDistanceToHandle(HandlePosition.LOWER, clientX);
|
|
172
|
+
const distanceToUpper = this.calcDistanceToHandle(HandlePosition.UPPER, clientX);
|
|
173
|
+
if (distanceToLower <= distanceToUpper) {
|
|
174
|
+
activeHandle = HandlePosition.LOWER;
|
|
175
|
+
} else {
|
|
176
|
+
activeHandle = HandlePosition.UPPER;
|
|
177
|
+
}
|
|
169
178
|
}
|
|
170
179
|
}
|
|
180
|
+
|
|
181
|
+
// Force focus to the appropriate handle.
|
|
182
|
+
const focusOptions = {
|
|
183
|
+
preventScroll: true
|
|
184
|
+
};
|
|
185
|
+
if (this.hasTwoHandles()) {
|
|
186
|
+
if (this.thumbRef.current && activeHandle === HandlePosition.LOWER) {
|
|
187
|
+
this.thumbRef.current.focus(focusOptions);
|
|
188
|
+
} else if (this.thumbRefUpper.current && activeHandle === HandlePosition.UPPER) {
|
|
189
|
+
this.thumbRefUpper.current.focus(focusOptions);
|
|
190
|
+
}
|
|
191
|
+
} else if (this.thumbRef.current) {
|
|
192
|
+
this.thumbRef.current.focus(focusOptions);
|
|
193
|
+
}
|
|
171
194
|
this.setState({
|
|
172
195
|
activeHandle
|
|
173
196
|
});
|
|
@@ -465,12 +488,12 @@ class Slider extends PureComponent {
|
|
|
465
488
|
}
|
|
466
489
|
}
|
|
467
490
|
});
|
|
468
|
-
_defineProperty(this, "calcLeftPercent",
|
|
491
|
+
_defineProperty(this, "calcLeftPercent", _ref2 => {
|
|
469
492
|
let {
|
|
470
493
|
clientX,
|
|
471
494
|
value,
|
|
472
495
|
range
|
|
473
|
-
} =
|
|
496
|
+
} = _ref2;
|
|
474
497
|
const boundingRect = this.element?.getBoundingClientRect?.();
|
|
475
498
|
let width = boundingRect ? boundingRect.right - boundingRect.left : 0;
|
|
476
499
|
|
|
@@ -492,11 +515,11 @@ class Slider extends PureComponent {
|
|
|
492
515
|
// re-assure Typescript, return 0.
|
|
493
516
|
return 0;
|
|
494
517
|
});
|
|
495
|
-
_defineProperty(this, "calcSteppedValuePercent",
|
|
518
|
+
_defineProperty(this, "calcSteppedValuePercent", _ref3 => {
|
|
496
519
|
let {
|
|
497
520
|
leftPercent,
|
|
498
521
|
range
|
|
499
|
-
} =
|
|
522
|
+
} = _ref3;
|
|
500
523
|
const {
|
|
501
524
|
step = 1
|
|
502
525
|
} = this.props;
|
|
@@ -525,12 +548,12 @@ class Slider extends PureComponent {
|
|
|
525
548
|
* clientX is not provided.
|
|
526
549
|
* @param {boolean} [params.useRawValue=false] `true` to use the given value as-is.
|
|
527
550
|
*/
|
|
528
|
-
_defineProperty(this, "calcValue",
|
|
551
|
+
_defineProperty(this, "calcValue", _ref4 => {
|
|
529
552
|
let {
|
|
530
553
|
clientX,
|
|
531
554
|
value,
|
|
532
555
|
useRawValue = false
|
|
533
|
-
} =
|
|
556
|
+
} = _ref4;
|
|
534
557
|
const range = this.props.max - this.props.min;
|
|
535
558
|
|
|
536
559
|
// @todo solve for rtl.
|
|
@@ -581,11 +604,11 @@ class Slider extends PureComponent {
|
|
|
581
604
|
*
|
|
582
605
|
* Guards against setting either lower or upper values beyond its counterpart.
|
|
583
606
|
*/
|
|
584
|
-
_defineProperty(this, "setValueLeftForHandle", (handle,
|
|
607
|
+
_defineProperty(this, "setValueLeftForHandle", (handle, _ref5) => {
|
|
585
608
|
let {
|
|
586
609
|
value: newValue,
|
|
587
610
|
left: newLeft
|
|
588
|
-
} =
|
|
611
|
+
} = _ref5;
|
|
589
612
|
const {
|
|
590
613
|
value,
|
|
591
614
|
valueUpper,
|
|
@@ -620,13 +643,13 @@ class Slider extends PureComponent {
|
|
|
620
643
|
});
|
|
621
644
|
}
|
|
622
645
|
});
|
|
623
|
-
_defineProperty(this, "isValidValueForPosition",
|
|
646
|
+
_defineProperty(this, "isValidValueForPosition", _ref6 => {
|
|
624
647
|
let {
|
|
625
648
|
handle,
|
|
626
649
|
value: newValue,
|
|
627
650
|
min,
|
|
628
651
|
max
|
|
629
|
-
} =
|
|
652
|
+
} = _ref6;
|
|
630
653
|
const {
|
|
631
654
|
value,
|
|
632
655
|
valueUpper
|
|
@@ -645,21 +668,21 @@ class Slider extends PureComponent {
|
|
|
645
668
|
}
|
|
646
669
|
return false;
|
|
647
670
|
});
|
|
648
|
-
_defineProperty(this, "isValidValue",
|
|
671
|
+
_defineProperty(this, "isValidValue", _ref7 => {
|
|
649
672
|
let {
|
|
650
673
|
value,
|
|
651
674
|
min,
|
|
652
675
|
max
|
|
653
|
-
} =
|
|
676
|
+
} = _ref7;
|
|
654
677
|
return !(value < min || value > max);
|
|
655
678
|
});
|
|
656
|
-
_defineProperty(this, "getAdjustedValueForPosition",
|
|
679
|
+
_defineProperty(this, "getAdjustedValueForPosition", _ref8 => {
|
|
657
680
|
let {
|
|
658
681
|
handle,
|
|
659
682
|
value: newValue,
|
|
660
683
|
min,
|
|
661
684
|
max
|
|
662
|
-
} =
|
|
685
|
+
} = _ref8;
|
|
663
686
|
const {
|
|
664
687
|
value,
|
|
665
688
|
valueUpper
|
|
@@ -678,12 +701,12 @@ class Slider extends PureComponent {
|
|
|
678
701
|
}
|
|
679
702
|
return newValue;
|
|
680
703
|
});
|
|
681
|
-
_defineProperty(this, "getAdjustedValue",
|
|
704
|
+
_defineProperty(this, "getAdjustedValue", _ref9 => {
|
|
682
705
|
let {
|
|
683
706
|
value,
|
|
684
707
|
min,
|
|
685
708
|
max
|
|
686
|
-
} =
|
|
709
|
+
} = _ref9;
|
|
687
710
|
if (value < min) {
|
|
688
711
|
value = min;
|
|
689
712
|
}
|
|
@@ -768,22 +791,10 @@ class Slider extends PureComponent {
|
|
|
768
791
|
// Fire onChange event handler if present, if there's a usable value, and
|
|
769
792
|
// if the value is different from the last one
|
|
770
793
|
if (this.hasTwoHandles()) {
|
|
771
|
-
if (this.thumbRef.current) {
|
|
772
|
-
this.thumbRef.current.style.insetInlineStart = `${this.state.left}%`;
|
|
773
|
-
if (this.state.isRtl) {
|
|
774
|
-
this.thumbRef.current.style.transform = `translate(100%, -50%)`;
|
|
775
|
-
}
|
|
776
|
-
}
|
|
777
|
-
if (this.thumbRefUpper.current) {
|
|
778
|
-
this.thumbRefUpper.current.style.insetInlineStart = `${this.state.leftUpper}%`;
|
|
779
|
-
}
|
|
780
794
|
if (this.filledTrackRef.current) {
|
|
781
795
|
this.filledTrackRef.current.style.transform = this.state.isRtl ? `translate(${100 - this.state.leftUpper}%, -50%) scaleX(${(this.state.leftUpper - this.state.left) / 100})` : `translate(${this.state.left}%, -50%) scaleX(${(this.state.leftUpper - this.state.left) / 100})`;
|
|
782
796
|
}
|
|
783
797
|
} else {
|
|
784
|
-
if (this.thumbRef.current) {
|
|
785
|
-
this.thumbRef.current.style.insetInlineStart = this.state.isRtl ? `calc(${this.state.left}% - 14px)` : `${this.state.left}%`;
|
|
786
|
-
}
|
|
787
798
|
if (this.filledTrackRef.current) {
|
|
788
799
|
this.filledTrackRef.current.style.transform = this.state.isRtl ? `translate(100%, -50%) scaleX(-${this.state.left / 100})` : `translate(0%, -50%) scaleX(${this.state.left / 100})`;
|
|
789
800
|
}
|
|
@@ -977,7 +988,8 @@ class Slider extends PureComponent {
|
|
|
977
988
|
const containerClasses = cx(`${prefix}--slider-container`, {
|
|
978
989
|
[`${prefix}--slider-container--two-handles`]: twoHandles,
|
|
979
990
|
[`${prefix}--slider-container--disabled`]: disabled,
|
|
980
|
-
[`${prefix}--slider-container--readonly`]: readOnly
|
|
991
|
+
[`${prefix}--slider-container--readonly`]: readOnly,
|
|
992
|
+
[`${prefix}--slider-container--rtl`]: isRtl
|
|
981
993
|
});
|
|
982
994
|
const sliderClasses = cx(`${prefix}--slider`, {
|
|
983
995
|
[`${prefix}--slider--disabled`]: disabled,
|
|
@@ -985,8 +997,7 @@ class Slider extends PureComponent {
|
|
|
985
997
|
});
|
|
986
998
|
const fixedInputClasses = [`${prefix}--text-input`, `${prefix}--slider-text-input`];
|
|
987
999
|
const conditionalInputClasses = {
|
|
988
|
-
[`${prefix}--text-input--light`]: light
|
|
989
|
-
[`${prefix}--slider-text-input--hidden`]: hideTextInput
|
|
1000
|
+
[`${prefix}--text-input--light`]: light
|
|
990
1001
|
};
|
|
991
1002
|
const lowerInputClasses = cx([...fixedInputClasses, `${prefix}--slider-text-input--lower`, conditionalInputClasses, {
|
|
992
1003
|
[`${prefix}--text-input--invalid`]: !readOnly && !isValid,
|
|
@@ -997,10 +1008,12 @@ class Slider extends PureComponent {
|
|
|
997
1008
|
[`${prefix}--slider-text-input--warn`]: showWarningUpper
|
|
998
1009
|
}]);
|
|
999
1010
|
const lowerInputWrapperClasses = cx([`${prefix}--text-input-wrapper`, `${prefix}--slider-text-input-wrapper`, `${prefix}--slider-text-input-wrapper--lower`, {
|
|
1000
|
-
[`${prefix}--text-input-wrapper--readonly`]: readOnly
|
|
1011
|
+
[`${prefix}--text-input-wrapper--readonly`]: readOnly,
|
|
1012
|
+
[`${prefix}--slider-text-input-wrapper--hidden`]: hideTextInput
|
|
1001
1013
|
}]);
|
|
1002
1014
|
const upperInputWrapperClasses = cx([`${prefix}--text-input-wrapper`, `${prefix}--slider-text-input-wrapper`, `${prefix}--slider-text-input-wrapper--upper`, {
|
|
1003
|
-
[`${prefix}--text-input-wrapper--readonly`]: readOnly
|
|
1015
|
+
[`${prefix}--text-input-wrapper--readonly`]: readOnly,
|
|
1016
|
+
[`${prefix}--slider-text-input-wrapper--hidden`]: hideTextInput
|
|
1004
1017
|
}]);
|
|
1005
1018
|
const lowerThumbClasses = cx(`${prefix}--slider__thumb`, {
|
|
1006
1019
|
[`${prefix}--slider__thumb--lower`]: twoHandles
|
|
@@ -1008,6 +1021,22 @@ class Slider extends PureComponent {
|
|
|
1008
1021
|
const upperThumbClasses = cx(`${prefix}--slider__thumb`, {
|
|
1009
1022
|
[`${prefix}--slider__thumb--upper`]: twoHandles
|
|
1010
1023
|
});
|
|
1024
|
+
const lowerThumbWrapperClasses = cx([`${prefix}--icon-tooltip`, `${prefix}--slider__thumb-wrapper`, {
|
|
1025
|
+
[`${prefix}--slider__thumb-wrapper--lower`]: twoHandles
|
|
1026
|
+
}]);
|
|
1027
|
+
const upperThumbWrapperClasses = cx([`${prefix}--icon-tooltip`, `${prefix}--slider__thumb-wrapper`, {
|
|
1028
|
+
[`${prefix}--slider__thumb-wrapper--upper`]: twoHandles
|
|
1029
|
+
}]);
|
|
1030
|
+
const lowerThumbWrapperProps = {
|
|
1031
|
+
style: {
|
|
1032
|
+
insetInlineStart: `${this.state.left}%`
|
|
1033
|
+
}
|
|
1034
|
+
};
|
|
1035
|
+
const upperThumbWrapperProps = {
|
|
1036
|
+
style: {
|
|
1037
|
+
insetInlineStart: `${this.state.leftUpper}%`
|
|
1038
|
+
}
|
|
1039
|
+
};
|
|
1011
1040
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
1012
1041
|
className: cx(`${prefix}--form-item`, className)
|
|
1013
1042
|
}, /*#__PURE__*/React__default.createElement(Text, {
|
|
@@ -1056,7 +1085,12 @@ class Slider extends PureComponent {
|
|
|
1056
1085
|
role: "presentation",
|
|
1057
1086
|
tabIndex: -1,
|
|
1058
1087
|
"data-invalid": (twoHandles ? !isValid || !isValidUpper : !isValid) && !readOnly ? true : null
|
|
1059
|
-
}, other), /*#__PURE__*/React__default.createElement(
|
|
1088
|
+
}, other), /*#__PURE__*/React__default.createElement(ThumbWrapper, _extends({
|
|
1089
|
+
hasTooltip: hideTextInput,
|
|
1090
|
+
className: lowerThumbWrapperClasses,
|
|
1091
|
+
label: `${value}`,
|
|
1092
|
+
align: twoHandles ? 'top-right' : 'top'
|
|
1093
|
+
}, lowerThumbWrapperProps), /*#__PURE__*/React__default.createElement("div", {
|
|
1060
1094
|
className: lowerThumbClasses,
|
|
1061
1095
|
role: "slider",
|
|
1062
1096
|
id: twoHandles ? undefined : id,
|
|
@@ -1070,7 +1104,12 @@ class Slider extends PureComponent {
|
|
|
1070
1104
|
onFocus: () => this.setState({
|
|
1071
1105
|
activeHandle: HandlePosition.LOWER
|
|
1072
1106
|
})
|
|
1073
|
-
}, twoHandles && !isRtl
|
|
1107
|
+
}, twoHandles && !isRtl ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, _LowerHandle || (_LowerHandle = /*#__PURE__*/React__default.createElement(LowerHandle, null)), _LowerHandleFocus || (_LowerHandleFocus = /*#__PURE__*/React__default.createElement(LowerHandleFocus, null))) : twoHandles && isRtl ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, _UpperHandle || (_UpperHandle = /*#__PURE__*/React__default.createElement(UpperHandle, null)), _UpperHandleFocus || (_UpperHandleFocus = /*#__PURE__*/React__default.createElement(UpperHandleFocus, null))) : undefined)), twoHandles ? /*#__PURE__*/React__default.createElement(ThumbWrapper, _extends({
|
|
1108
|
+
hasTooltip: hideTextInput,
|
|
1109
|
+
className: upperThumbWrapperClasses,
|
|
1110
|
+
label: `${valueUpper}`,
|
|
1111
|
+
align: "top-left"
|
|
1112
|
+
}, upperThumbWrapperProps), /*#__PURE__*/React__default.createElement("div", {
|
|
1074
1113
|
className: upperThumbClasses,
|
|
1075
1114
|
role: "slider",
|
|
1076
1115
|
tabIndex: !readOnly ? 0 : -1,
|
|
@@ -1082,7 +1121,7 @@ class Slider extends PureComponent {
|
|
|
1082
1121
|
onFocus: () => this.setState({
|
|
1083
1122
|
activeHandle: HandlePosition.UPPER
|
|
1084
1123
|
})
|
|
1085
|
-
}, twoHandles && !isRtl
|
|
1124
|
+
}, twoHandles && !isRtl ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, _UpperHandle2 || (_UpperHandle2 = /*#__PURE__*/React__default.createElement(UpperHandle, null)), _UpperHandleFocus2 || (_UpperHandleFocus2 = /*#__PURE__*/React__default.createElement(UpperHandleFocus, null))) : twoHandles && isRtl ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, _LowerHandle2 || (_LowerHandle2 = /*#__PURE__*/React__default.createElement(LowerHandle, null)), _LowerHandleFocus2 || (_LowerHandleFocus2 = /*#__PURE__*/React__default.createElement(LowerHandleFocus, null))) : undefined)) : null, /*#__PURE__*/React__default.createElement("div", {
|
|
1086
1125
|
className: `${prefix}--slider__track`,
|
|
1087
1126
|
ref: node => {
|
|
1088
1127
|
this.track = node;
|