@carbon/react 1.30.0 → 1.31.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/es/components/Accordion/Accordion.js +3 -1
- package/es/components/Button/Button.js +6 -1
- package/es/components/Checkbox/Checkbox.js +2 -2
- package/es/components/CodeSnippet/CodeSnippet.js +1 -0
- package/es/components/ComboButton/index.js +6 -5
- package/es/components/ContainedList/ContainedList.js +12 -4
- package/es/components/ContainedList/ContainedListItem/ContainedListItem.js +6 -1
- package/es/components/ContentSwitcher/ContentSwitcher.js +10 -1
- package/es/components/CopyButton/CopyButton.js +8 -2
- package/es/components/DataTableSkeleton/DataTableSkeleton.js +1 -2
- package/es/components/DataTableSkeleton/index.d.ts +9 -0
- package/es/components/FileUploader/FileUploaderButton.js +2 -1
- package/es/components/IconButton/index.js +10 -2
- package/es/components/Layout/index.js +118 -0
- package/es/components/ListBox/ListBoxPropTypes.d.ts +1 -1
- package/es/components/Menu/MenuItem.js +2 -1
- package/es/components/MenuButton/index.js +7 -4
- package/es/components/OverflowMenu/index.js +9 -1
- package/es/components/OverflowMenu/next/index.js +98 -0
- package/es/components/OverflowMenuV2/index.js +15 -73
- package/es/components/Tabs/Tabs.js +5 -1
- package/es/components/Tag/Tag.js +2 -0
- package/es/components/TextArea/TextArea.Skeleton.js +1 -2
- package/es/components/TextArea/TextArea.js +1 -2
- package/es/components/TextArea/index.d.ts +10 -0
- package/es/components/TextInput/PasswordInput.js +1 -2
- package/es/components/TextInput/TextInput.Skeleton.js +1 -2
- package/es/components/TextInput/TextInput.js +5 -4
- package/es/components/TextInput/index.d.ts +4 -0
- package/es/components/TimePicker/TimePicker.d.ts +8 -0
- package/es/components/TimePicker/TimePicker.js +26 -6
- package/es/components/Tooltip/Tooltip.js +4 -2
- package/es/components/UIShell/SideNav.d.ts +2 -1
- package/es/components/UIShell/SideNav.js +25 -7
- package/es/index.d.ts +21 -20
- package/es/index.js +28 -26
- package/lib/components/Accordion/Accordion.js +3 -1
- package/lib/components/Button/Button.js +6 -1
- package/lib/components/Checkbox/Checkbox.js +2 -2
- package/lib/components/CodeSnippet/CodeSnippet.js +1 -0
- package/lib/components/ComboButton/index.js +6 -5
- package/lib/components/ContainedList/ContainedList.js +12 -4
- package/lib/components/ContainedList/ContainedListItem/ContainedListItem.js +6 -1
- package/lib/components/ContentSwitcher/ContentSwitcher.js +10 -1
- package/lib/components/CopyButton/CopyButton.js +8 -2
- package/lib/components/DataTableSkeleton/DataTableSkeleton.js +1 -2
- package/lib/components/DataTableSkeleton/index.d.ts +9 -0
- package/lib/components/FileUploader/FileUploaderButton.js +2 -1
- package/lib/components/IconButton/index.js +10 -2
- package/lib/components/Layout/index.js +129 -0
- package/lib/components/ListBox/ListBoxPropTypes.d.ts +1 -1
- package/lib/components/Menu/MenuItem.js +2 -1
- package/lib/components/MenuButton/index.js +7 -4
- package/lib/components/OverflowMenu/index.js +13 -1
- package/lib/components/OverflowMenu/next/index.js +108 -0
- package/lib/components/OverflowMenuV2/index.js +14 -74
- package/lib/components/Tabs/Tabs.js +5 -1
- package/lib/components/Tag/Tag.js +2 -0
- package/lib/components/TextArea/TextArea.Skeleton.js +1 -2
- package/lib/components/TextArea/TextArea.js +1 -2
- package/lib/components/TextArea/index.d.ts +10 -0
- package/lib/components/TextInput/PasswordInput.js +1 -2
- package/lib/components/TextInput/TextInput.Skeleton.js +1 -2
- package/lib/components/TextInput/TextInput.js +5 -4
- package/lib/components/TextInput/index.d.ts +4 -0
- package/lib/components/TimePicker/TimePicker.d.ts +8 -0
- package/lib/components/TimePicker/TimePicker.js +26 -6
- package/lib/components/Tooltip/Tooltip.js +4 -2
- package/lib/components/UIShell/SideNav.d.ts +2 -1
- package/lib/components/UIShell/SideNav.js +24 -6
- package/lib/index.d.ts +21 -20
- package/lib/index.js +88 -85
- package/package.json +8 -8
- /package/es/components/{Layout → LayoutDirection}/LayoutDirection.js +0 -0
- /package/es/components/{Layout → LayoutDirection}/LayoutDirectionContext.js +0 -0
- /package/es/components/{Layout → LayoutDirection}/useLayoutDirection.js +0 -0
- /package/lib/components/{Layout → LayoutDirection}/LayoutDirection.js +0 -0
- /package/lib/components/{Layout → LayoutDirection}/LayoutDirectionContext.js +0 -0
- /package/lib/components/{Layout → LayoutDirection}/useLayoutDirection.js +0 -0
|
@@ -9,10 +9,22 @@
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
11
|
|
|
12
|
+
var React = require('react');
|
|
13
|
+
var index = require('../FeatureFlags/index.js');
|
|
14
|
+
var index$1 = require('./next/index.js');
|
|
12
15
|
var OverflowMenu$1 = require('./OverflowMenu.js');
|
|
13
16
|
var createClassWrapper = require('../../internal/createClassWrapper.js');
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
19
|
+
|
|
20
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
21
|
+
|
|
22
|
+
const OverflowMenuV11 = createClassWrapper.createClassWrapper(OverflowMenu$1.OverflowMenu);
|
|
23
|
+
function OverflowMenu(props) {
|
|
24
|
+
const enableV12OverflowMenu = index.useFeatureFlag('enable-v12-overflowmenu');
|
|
25
|
+
return enableV12OverflowMenu ? /*#__PURE__*/React__default["default"].createElement(index$1.OverflowMenu, props) : /*#__PURE__*/React__default["default"].createElement(OverflowMenuV11, props);
|
|
26
|
+
}
|
|
27
|
+
OverflowMenu.displayName = 'OverflowMenu';
|
|
16
28
|
|
|
17
29
|
exports.OverflowMenu = OverflowMenu;
|
|
18
30
|
exports["default"] = OverflowMenu;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
|
+
|
|
12
|
+
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
13
|
+
var React = require('react');
|
|
14
|
+
var PropTypes = require('prop-types');
|
|
15
|
+
var cx = require('classnames');
|
|
16
|
+
var iconsReact = require('@carbon/icons-react');
|
|
17
|
+
var index = require('../../IconButton/index.js');
|
|
18
|
+
var Menu = require('../../Menu/Menu.js');
|
|
19
|
+
var useId = require('../../../internal/useId.js');
|
|
20
|
+
var usePrefix = require('../../../internal/usePrefix.js');
|
|
21
|
+
var useAttachedMenu = require('../../../internal/useAttachedMenu.js');
|
|
22
|
+
|
|
23
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
24
|
+
|
|
25
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
26
|
+
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
27
|
+
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
28
|
+
|
|
29
|
+
const defaultSize = 'md';
|
|
30
|
+
const OverflowMenu = /*#__PURE__*/React__default["default"].forwardRef(function OverflowMenu(_ref, forwardRef) {
|
|
31
|
+
let {
|
|
32
|
+
children,
|
|
33
|
+
className,
|
|
34
|
+
label = 'Options',
|
|
35
|
+
renderIcon: IconElement = iconsReact.OverflowMenuVertical,
|
|
36
|
+
size = defaultSize,
|
|
37
|
+
tooltipAlignment,
|
|
38
|
+
...rest
|
|
39
|
+
} = _ref;
|
|
40
|
+
const id = useId.useId('overflowmenu');
|
|
41
|
+
const prefix = usePrefix.usePrefix();
|
|
42
|
+
const triggerRef = React.useRef(null);
|
|
43
|
+
const {
|
|
44
|
+
open,
|
|
45
|
+
x,
|
|
46
|
+
y,
|
|
47
|
+
handleClick,
|
|
48
|
+
handleMousedown,
|
|
49
|
+
handleClose
|
|
50
|
+
} = useAttachedMenu.useAttachedMenu(triggerRef);
|
|
51
|
+
const containerClasses = cx__default["default"](className, `${prefix}--overflow-menu__container`);
|
|
52
|
+
const triggerClasses = cx__default["default"](`${prefix}--overflow-menu`, {
|
|
53
|
+
[`${prefix}--overflow-menu--open`]: open
|
|
54
|
+
}, size !== defaultSize && `${prefix}--overflow-menu--${size}`);
|
|
55
|
+
return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({}, rest, {
|
|
56
|
+
className: containerClasses,
|
|
57
|
+
"aria-owns": open ? id : null,
|
|
58
|
+
ref: forwardRef
|
|
59
|
+
}), /*#__PURE__*/React__default["default"].createElement(index.IconButton, {
|
|
60
|
+
"aria-controls": open ? id : null,
|
|
61
|
+
"aria-haspopup": true,
|
|
62
|
+
"aria-expanded": open,
|
|
63
|
+
className: triggerClasses,
|
|
64
|
+
onClick: handleClick,
|
|
65
|
+
onMouseDown: handleMousedown,
|
|
66
|
+
ref: triggerRef,
|
|
67
|
+
label: label,
|
|
68
|
+
align: tooltipAlignment
|
|
69
|
+
}, /*#__PURE__*/React__default["default"].createElement(IconElement, {
|
|
70
|
+
className: `${prefix}--overflow-menu__icon`
|
|
71
|
+
})), /*#__PURE__*/React__default["default"].createElement(Menu.Menu, {
|
|
72
|
+
id: id,
|
|
73
|
+
size: size,
|
|
74
|
+
open: open,
|
|
75
|
+
onClose: handleClose,
|
|
76
|
+
x: x,
|
|
77
|
+
y: y,
|
|
78
|
+
label: label
|
|
79
|
+
}, children));
|
|
80
|
+
});
|
|
81
|
+
OverflowMenu.propTypes = {
|
|
82
|
+
/**
|
|
83
|
+
* A collection of MenuItems to be rendered within this OverflowMenu.
|
|
84
|
+
*/
|
|
85
|
+
children: PropTypes__default["default"].node,
|
|
86
|
+
/**
|
|
87
|
+
* Additional CSS class names for the trigger button.
|
|
88
|
+
*/
|
|
89
|
+
className: PropTypes__default["default"].string,
|
|
90
|
+
/**
|
|
91
|
+
* A label describing the options available. Is used in the trigger tooltip and as the menu's accessible label.
|
|
92
|
+
*/
|
|
93
|
+
label: PropTypes__default["default"].string,
|
|
94
|
+
/**
|
|
95
|
+
* Otionally provide a custom icon to be rendered on the trigger button.
|
|
96
|
+
*/
|
|
97
|
+
renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]),
|
|
98
|
+
/**
|
|
99
|
+
* Specify the size of the menu, from a list of available sizes.
|
|
100
|
+
*/
|
|
101
|
+
size: PropTypes__default["default"].oneOf(['sm', 'md', 'lg']),
|
|
102
|
+
/**
|
|
103
|
+
* Specify how the trigger tooltip should be aligned.
|
|
104
|
+
*/
|
|
105
|
+
tooltipAlignment: PropTypes__default["default"].oneOf(['top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right', 'left', 'right'])
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
exports.OverflowMenu = OverflowMenu;
|
|
@@ -9,86 +9,26 @@
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
11
|
|
|
12
|
-
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
|
13
12
|
var React = require('react');
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var Menu = require('../Menu/Menu.js');
|
|
18
|
-
var useId = require('../../internal/useId.js');
|
|
19
|
-
var usePrefix = require('../../internal/usePrefix.js');
|
|
20
|
-
var useAttachedMenu = require('../../internal/useAttachedMenu.js');
|
|
13
|
+
var warning = require('../../internal/warning.js');
|
|
14
|
+
var index = require('../FeatureFlags/index.js');
|
|
15
|
+
var index$1 = require('../OverflowMenu/index.js');
|
|
21
16
|
|
|
22
17
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
23
18
|
|
|
24
19
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
25
|
-
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
26
|
-
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
27
20
|
|
|
28
|
-
|
|
29
|
-
function OverflowMenuV2(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const triggerRef = React.useRef(null);
|
|
40
|
-
const {
|
|
41
|
-
open,
|
|
42
|
-
x,
|
|
43
|
-
y,
|
|
44
|
-
handleClick,
|
|
45
|
-
handleMousedown,
|
|
46
|
-
handleClose
|
|
47
|
-
} = useAttachedMenu.useAttachedMenu(triggerRef);
|
|
48
|
-
const containerClasses = cx__default["default"](`${prefix}--overflow-menu__container`);
|
|
49
|
-
const triggerClasses = cx__default["default"](`${prefix}--overflow-menu`, {
|
|
50
|
-
[`${prefix}--overflow-menu--open`]: open,
|
|
51
|
-
[className]: className
|
|
52
|
-
}, size !== defaultSize && `${prefix}--overflow-menu--${size}`);
|
|
53
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
54
|
-
className: containerClasses,
|
|
55
|
-
"aria-owns": id
|
|
56
|
-
}, /*#__PURE__*/React__default["default"].createElement("button", _rollupPluginBabelHelpers["extends"]({}, rest, {
|
|
57
|
-
type: "button",
|
|
58
|
-
"aria-haspopup": true,
|
|
59
|
-
"aria-expanded": open,
|
|
60
|
-
className: triggerClasses,
|
|
61
|
-
onClick: handleClick,
|
|
62
|
-
onMouseDown: handleMousedown,
|
|
63
|
-
ref: triggerRef
|
|
64
|
-
}), /*#__PURE__*/React__default["default"].createElement(IconElement, {
|
|
65
|
-
className: `${prefix}--overflow-menu__icon`
|
|
66
|
-
})), /*#__PURE__*/React__default["default"].createElement(Menu.Menu, {
|
|
67
|
-
id: id,
|
|
68
|
-
size: size,
|
|
69
|
-
open: open,
|
|
70
|
-
onClose: handleClose,
|
|
71
|
-
x: x,
|
|
72
|
-
y: y
|
|
73
|
-
}, children));
|
|
21
|
+
let didWarnAboutDeprecation = false;
|
|
22
|
+
function OverflowMenuV2(props) {
|
|
23
|
+
if (process.env.NODE_ENV !== "production") {
|
|
24
|
+
process.env.NODE_ENV !== "production" ? warning.warning(didWarnAboutDeprecation, '`<OverflowMenuV2>` is deprecated and will be removed in the next major version. Use `<OverflowMenu>` with the `enable-v12-overflowmenu` feature flag instead.') : void 0;
|
|
25
|
+
didWarnAboutDeprecation = true;
|
|
26
|
+
}
|
|
27
|
+
return /*#__PURE__*/React__default["default"].createElement(index.FeatureFlags, {
|
|
28
|
+
flags: {
|
|
29
|
+
'enable-v12-overflowmenu': true
|
|
30
|
+
}
|
|
31
|
+
}, /*#__PURE__*/React__default["default"].createElement(index$1["default"], props));
|
|
74
32
|
}
|
|
75
|
-
OverflowMenuV2.propTypes = {
|
|
76
|
-
/**
|
|
77
|
-
* A collection of MenuItems to be rendered within this OverflowMenu.
|
|
78
|
-
*/
|
|
79
|
-
children: PropTypes__default["default"].node,
|
|
80
|
-
/**
|
|
81
|
-
* Additional CSS class names for the trigger button.
|
|
82
|
-
*/
|
|
83
|
-
className: PropTypes__default["default"].string,
|
|
84
|
-
/**
|
|
85
|
-
* Otionally provide a custom icon to be rendered on the trigger button.
|
|
86
|
-
*/
|
|
87
|
-
renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]),
|
|
88
|
-
/**
|
|
89
|
-
* Specify the size of the menu, from a list of available sizes.
|
|
90
|
-
*/
|
|
91
|
-
size: PropTypes__default["default"].oneOf(['sm', 'md', 'lg'])
|
|
92
|
-
};
|
|
93
33
|
|
|
94
34
|
exports.OverflowMenuV2 = OverflowMenuV2;
|
|
@@ -552,7 +552,11 @@ const Tab = /*#__PURE__*/React__default["default"].forwardRef(function Tab(_ref5
|
|
|
552
552
|
type: "button"
|
|
553
553
|
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
554
554
|
className: `${prefix}--tabs__nav-item-label-wrapper`
|
|
555
|
-
}, /*#__PURE__*/React__default["default"].createElement("
|
|
555
|
+
}, dismissable && Icon && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
556
|
+
className: `${prefix}--tabs__nav-item--icon-left`
|
|
557
|
+
}, /*#__PURE__*/React__default["default"].createElement(Icon, {
|
|
558
|
+
size: 16
|
|
559
|
+
})), /*#__PURE__*/React__default["default"].createElement("span", {
|
|
556
560
|
className: `${prefix}--tabs__nav-item-label`
|
|
557
561
|
}, children), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
558
562
|
className: cx__default["default"](`${prefix}--tabs__nav-item--icon`, {
|
|
@@ -59,6 +59,8 @@ const Tag = _ref => {
|
|
|
59
59
|
[`${prefix}--tag--disabled`]: disabled,
|
|
60
60
|
[`${prefix}--tag--filter`]: filter,
|
|
61
61
|
[`${prefix}--tag--${size}`]: size,
|
|
62
|
+
// TODO: V12 - Remove this class
|
|
63
|
+
[`${prefix}--layout--size-${size}`]: size,
|
|
62
64
|
[`${prefix}--tag--${type}`]: type,
|
|
63
65
|
[`${prefix}--tag--interactive`]: other.onClick && !filter
|
|
64
66
|
});
|
|
@@ -46,7 +46,6 @@ TextAreaSkeleton.propTypes = {
|
|
|
46
46
|
*/
|
|
47
47
|
hideLabel: PropTypes__default["default"].bool
|
|
48
48
|
};
|
|
49
|
-
var TextAreaSkeleton$1 = TextAreaSkeleton;
|
|
50
49
|
|
|
51
50
|
exports.TextAreaSkeleton = TextAreaSkeleton;
|
|
52
|
-
exports["default"] = TextAreaSkeleton
|
|
51
|
+
exports["default"] = TextAreaSkeleton;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import TextArea from './TextArea';
|
|
8
|
+
export { default as TextAreaSkeleton } from './TextArea.Skeleton';
|
|
9
|
+
export default TextArea;
|
|
10
|
+
export { TextArea };
|
|
@@ -46,7 +46,6 @@ TextInputSkeleton.propTypes = {
|
|
|
46
46
|
*/
|
|
47
47
|
hideLabel: PropTypes__default["default"].bool
|
|
48
48
|
};
|
|
49
|
-
var TextInputSkeleton$1 = TextInputSkeleton;
|
|
50
49
|
|
|
51
50
|
exports.TextInputSkeleton = TextInputSkeleton;
|
|
52
|
-
exports["default"] = TextInputSkeleton
|
|
51
|
+
exports["default"] = TextInputSkeleton;
|
|
@@ -44,7 +44,7 @@ const TextInput = /*#__PURE__*/React__default["default"].forwardRef(function Tex
|
|
|
44
44
|
onClick = () => {},
|
|
45
45
|
placeholder,
|
|
46
46
|
readOnly,
|
|
47
|
-
size
|
|
47
|
+
size,
|
|
48
48
|
type = 'text',
|
|
49
49
|
warn = false,
|
|
50
50
|
warnText,
|
|
@@ -71,7 +71,9 @@ const TextInput = /*#__PURE__*/React__default["default"].forwardRef(function Tex
|
|
|
71
71
|
[`${prefix}--text-input--light`]: light,
|
|
72
72
|
[`${prefix}--text-input--invalid`]: normalizedProps.invalid,
|
|
73
73
|
[`${prefix}--text-input--warning`]: normalizedProps.warn,
|
|
74
|
-
[`${prefix}--text-input--${size}`]: size
|
|
74
|
+
[`${prefix}--text-input--${size}`]: size,
|
|
75
|
+
// TODO: V12 - Remove this class
|
|
76
|
+
[`${prefix}--layout--size-${size}`]: size
|
|
75
77
|
});
|
|
76
78
|
const sharedTextInputProps = {
|
|
77
79
|
id,
|
|
@@ -270,6 +272,5 @@ TextInput.propTypes = {
|
|
|
270
272
|
*/
|
|
271
273
|
warnText: PropTypes__default["default"].node
|
|
272
274
|
};
|
|
273
|
-
var TextInput$1 = TextInput;
|
|
274
275
|
|
|
275
|
-
exports["default"] = TextInput
|
|
276
|
+
exports["default"] = TextInput;
|
|
@@ -36,6 +36,14 @@ export interface TimePickerProps extends Omit<ReactAttr<HTMLInputElement>, Exclu
|
|
|
36
36
|
* Provide the text that is displayed when the control is in an invalid state
|
|
37
37
|
*/
|
|
38
38
|
invalidText?: React.ReactNode;
|
|
39
|
+
/**
|
|
40
|
+
* Specify a warning message
|
|
41
|
+
*/
|
|
42
|
+
warning?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Provide the text that is displayed when the control is in an warning state
|
|
45
|
+
*/
|
|
46
|
+
warningText?: React.ReactNode;
|
|
39
47
|
/**
|
|
40
48
|
* Provide the text that will be read by a screen reader when visiting this
|
|
41
49
|
* control
|
|
@@ -15,6 +15,7 @@ var PropTypes = require('prop-types');
|
|
|
15
15
|
var React = require('react');
|
|
16
16
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
17
17
|
var deprecate = require('../../prop-types/deprecate.js');
|
|
18
|
+
var iconsReact = require('@carbon/icons-react');
|
|
18
19
|
|
|
19
20
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
20
21
|
|
|
@@ -31,6 +32,8 @@ const TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function Ti
|
|
|
31
32
|
id,
|
|
32
33
|
invalidText = 'Invalid time format.',
|
|
33
34
|
invalid = false,
|
|
35
|
+
warningText = 'Warning message.',
|
|
36
|
+
warning = false,
|
|
34
37
|
labelText,
|
|
35
38
|
light = false,
|
|
36
39
|
maxLength = 5,
|
|
@@ -75,12 +78,14 @@ const TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function Ti
|
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
80
|
const timePickerInputClasses = cx__default["default"](`${prefix}--time-picker__input-field`, `${prefix}--text-input`, [className], {
|
|
78
|
-
[`${prefix}--text-input--light`]: light
|
|
81
|
+
[`${prefix}--text-input--light`]: light,
|
|
82
|
+
[`${prefix}--time-picker__input-field-error`]: invalid || warning
|
|
79
83
|
});
|
|
80
84
|
const timePickerClasses = cx__default["default"]({
|
|
81
85
|
[`${prefix}--time-picker`]: true,
|
|
82
86
|
[`${prefix}--time-picker--light`]: light,
|
|
83
87
|
[`${prefix}--time-picker--invalid`]: invalid,
|
|
88
|
+
[`${prefix}--time-picker--warning`]: warning,
|
|
84
89
|
[`${prefix}--time-picker--readonly`]: readOnly,
|
|
85
90
|
[`${prefix}--time-picker--${size}`]: size,
|
|
86
91
|
...(className && {
|
|
@@ -95,9 +100,6 @@ const TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function Ti
|
|
|
95
100
|
htmlFor: id,
|
|
96
101
|
className: labelClasses
|
|
97
102
|
}, labelText) : null;
|
|
98
|
-
const error = invalid ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
99
|
-
className: `${prefix}--form-requirement`
|
|
100
|
-
}, invalidText) : null;
|
|
101
103
|
function getInternalPickerSelects() {
|
|
102
104
|
const readOnlyEventHandlers = {
|
|
103
105
|
onMouseDown: evt => {
|
|
@@ -150,7 +152,17 @@ const TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function Ti
|
|
|
150
152
|
ref: ref,
|
|
151
153
|
type: type,
|
|
152
154
|
value: value
|
|
153
|
-
}, rest, readOnlyProps))
|
|
155
|
+
}, rest, readOnlyProps)), (invalid || warning) && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
156
|
+
className: `${prefix}--time-picker__error__icon`
|
|
157
|
+
}, invalid ? /*#__PURE__*/React__default["default"].createElement(iconsReact.WarningFilled, {
|
|
158
|
+
className: `${prefix}--checkbox__invalid-icon`,
|
|
159
|
+
size: 16
|
|
160
|
+
}) : /*#__PURE__*/React__default["default"].createElement(iconsReact.WarningAltFilled, {
|
|
161
|
+
className: `${prefix}--text-input__invalid-icon--warning`,
|
|
162
|
+
size: 16
|
|
163
|
+
}))), getInternalPickerSelects()), (invalid || warning) && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
164
|
+
className: `${prefix}--form-requirement`
|
|
165
|
+
}, invalid ? invalidText : warningText));
|
|
154
166
|
});
|
|
155
167
|
TimePicker.propTypes = {
|
|
156
168
|
/**
|
|
@@ -232,7 +244,15 @@ TimePicker.propTypes = {
|
|
|
232
244
|
/**
|
|
233
245
|
* Specify the value of the `<input>`
|
|
234
246
|
*/
|
|
235
|
-
value: PropTypes__default["default"].string
|
|
247
|
+
value: PropTypes__default["default"].string,
|
|
248
|
+
/**
|
|
249
|
+
* Specify a warning message
|
|
250
|
+
*/
|
|
251
|
+
warning: PropTypes__default["default"].bool,
|
|
252
|
+
/**
|
|
253
|
+
* Provide the text that is displayed when the control is in an warning state
|
|
254
|
+
*/
|
|
255
|
+
warningText: PropTypes__default["default"].node
|
|
236
256
|
};
|
|
237
257
|
var TimePicker$1 = TimePicker;
|
|
238
258
|
|
|
@@ -104,10 +104,12 @@ function Tooltip(_ref) {
|
|
|
104
104
|
onMouseLeave: onMouseLeave,
|
|
105
105
|
open: open,
|
|
106
106
|
ref: containerRef
|
|
107
|
-
}),
|
|
107
|
+
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
108
|
+
className: `${prefix}--tooltip-trigger__wrapper`
|
|
109
|
+
}, child !== undefined ? /*#__PURE__*/React__default["default"].cloneElement(child, {
|
|
108
110
|
...triggerProps,
|
|
109
111
|
...getChildEventHandlers(child.props)
|
|
110
|
-
}) : null, /*#__PURE__*/React__default["default"].createElement(index.PopoverContent, {
|
|
112
|
+
}) : null), /*#__PURE__*/React__default["default"].createElement(index.PopoverContent, {
|
|
111
113
|
"aria-hidden": "true",
|
|
112
114
|
className: `${prefix}--tooltip-content`,
|
|
113
115
|
id: id,
|
|
@@ -18,6 +18,7 @@ interface SideNavProps extends ComponentProps<'nav'> {
|
|
|
18
18
|
addMouseListeners?: boolean | undefined;
|
|
19
19
|
onOverlayClick?: MouseEventHandler<HTMLDivElement> | undefined;
|
|
20
20
|
onSideNavBlur?: () => void | undefined;
|
|
21
|
+
enterDelayMs?: number;
|
|
21
22
|
}
|
|
22
|
-
declare const SideNav: React.ForwardRefExoticComponent<Pick<SideNavProps, "children" | "className" | "slot" | "style" | "title" | "dir" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "onToggle" | "key" | "id" | "onAnimationEnd" | "aria-controls" | "aria-expanded" | "onClick" | "onKeyDown" | "contentEditable" | "contextMenu" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "href" | "expanded" | "defaultExpanded" | "isChildOfHeader" | "isFixedNav" | "isRail" | "isPersistent" | "addFocusListeners" | "addMouseListeners" | "onOverlayClick" | "onSideNavBlur"> & React.RefAttributes<HTMLElement>>;
|
|
23
|
+
declare const SideNav: React.ForwardRefExoticComponent<Pick<SideNavProps, "children" | "className" | "slot" | "style" | "title" | "dir" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "onToggle" | "key" | "id" | "onAnimationEnd" | "aria-controls" | "aria-expanded" | "onClick" | "onKeyDown" | "contentEditable" | "contextMenu" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "href" | "enterDelayMs" | "expanded" | "defaultExpanded" | "isChildOfHeader" | "isFixedNav" | "isRail" | "isPersistent" | "addFocusListeners" | "addMouseListeners" | "onOverlayClick" | "onSideNavBlur"> & React.RefAttributes<HTMLElement>>;
|
|
23
24
|
export default SideNav;
|
|
@@ -18,6 +18,7 @@ var _utils = require('./_utils.js');
|
|
|
18
18
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
19
19
|
var useMergedRefs = require('../../internal/useMergedRefs.js');
|
|
20
20
|
var useEvent = require('../../internal/useEvent.js');
|
|
21
|
+
var useDelayedState = require('../../internal/useDelayedState.js');
|
|
21
22
|
var match = require('../../internal/keyboard/match.js');
|
|
22
23
|
var keys = require('../../internal/keyboard/keys.js');
|
|
23
24
|
|
|
@@ -49,27 +50,28 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
49
50
|
addMouseListeners = true,
|
|
50
51
|
onOverlayClick,
|
|
51
52
|
onSideNavBlur,
|
|
53
|
+
enterDelayMs = 100,
|
|
52
54
|
...other
|
|
53
55
|
} = _ref;
|
|
54
56
|
const prefix = usePrefix.usePrefix();
|
|
55
57
|
const {
|
|
56
58
|
current: controlled
|
|
57
59
|
} = React.useRef(expandedProp !== undefined);
|
|
58
|
-
const [expandedState, setExpandedState] =
|
|
59
|
-
const [expandedViaHoverState, setExpandedViaHoverState] =
|
|
60
|
+
const [expandedState, setExpandedState] = useDelayedState.useDelayedState(defaultExpanded);
|
|
61
|
+
const [expandedViaHoverState, setExpandedViaHoverState] = useDelayedState.useDelayedState(defaultExpanded);
|
|
60
62
|
const expanded = controlled ? expandedProp : expandedState;
|
|
61
63
|
const sideNavRef = React.useRef(null);
|
|
62
64
|
const navRef = useMergedRefs.useMergedRefs([sideNavRef, ref]);
|
|
63
65
|
const handleToggle = function (event) {
|
|
64
66
|
let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !expanded;
|
|
65
67
|
if (!controlled) {
|
|
66
|
-
setExpandedState(value);
|
|
68
|
+
setExpandedState(value, enterDelayMs);
|
|
67
69
|
}
|
|
68
70
|
if (onToggle) {
|
|
69
71
|
onToggle(event, value);
|
|
70
72
|
}
|
|
71
73
|
if (controlled || isRail) {
|
|
72
|
-
setExpandedViaHoverState(value);
|
|
74
|
+
setExpandedViaHoverState(value, enterDelayMs);
|
|
73
75
|
}
|
|
74
76
|
};
|
|
75
77
|
const accessibilityLabel = {
|
|
@@ -140,8 +142,20 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
140
142
|
};
|
|
141
143
|
}
|
|
142
144
|
if (addMouseListeners && isRail) {
|
|
143
|
-
eventHandlers.onMouseEnter = () =>
|
|
144
|
-
|
|
145
|
+
eventHandlers.onMouseEnter = () => {
|
|
146
|
+
handleToggle(true, true);
|
|
147
|
+
};
|
|
148
|
+
eventHandlers.onMouseLeave = () => {
|
|
149
|
+
setExpandedState(false);
|
|
150
|
+
setExpandedViaHoverState(false);
|
|
151
|
+
handleToggle(false, false);
|
|
152
|
+
};
|
|
153
|
+
eventHandlers.onClick = () => {
|
|
154
|
+
//if delay is enabled, and user intentionally clicks it to see it expanded immediately
|
|
155
|
+
setExpandedState(true);
|
|
156
|
+
setExpandedViaHoverState(true);
|
|
157
|
+
handleToggle(true, true);
|
|
158
|
+
};
|
|
145
159
|
}
|
|
146
160
|
useEvent.useWindowEvent('keydown', event => {
|
|
147
161
|
const focusedElement = document.activeElement;
|
|
@@ -184,6 +198,10 @@ SideNav.propTypes = {
|
|
|
184
198
|
* If `true`, the SideNav will be open on initial render.
|
|
185
199
|
*/
|
|
186
200
|
defaultExpanded: PropTypes__default["default"].bool,
|
|
201
|
+
/**
|
|
202
|
+
* Specify the duration in milliseconds to delay before displaying the sidenavigation
|
|
203
|
+
*/
|
|
204
|
+
enterDelayMs: PropTypes__default["default"].number,
|
|
187
205
|
/**
|
|
188
206
|
* If `true`, the SideNav will be expanded, otherwise it will be collapsed.
|
|
189
207
|
* Using this prop causes SideNav to become a controled component.
|