@carbon/react 1.5.0 → 1.7.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.
Files changed (79) hide show
  1. package/es/components/ComposedModal/ComposedModal.js +2 -1
  2. package/es/components/ComposedModal/next/ComposedModal.js +2 -1
  3. package/es/components/DataTable/TableToolbarSearch.js +10 -2
  4. package/es/components/DatePicker/DatePicker.js +14 -5
  5. package/es/components/FileUploader/FileUploader.js +1 -1
  6. package/es/components/FileUploader/FileUploaderButton.js +1 -1
  7. package/es/components/FileUploader/Filename.js +1 -1
  8. package/es/components/Form/Form.js +1 -1
  9. package/es/components/FormGroup/FormGroup.js +4 -4
  10. package/es/components/FormItem/FormItem.js +5 -6
  11. package/es/components/Layer/index.js +13 -1
  12. package/es/components/Link/Link.js +6 -3
  13. package/es/components/ListBox/ListBoxPropTypes.js +1 -2
  14. package/es/components/ListBox/ListBoxSelection.js +3 -4
  15. package/es/components/OverflowMenu/OverflowMenu.js +0 -1
  16. package/es/components/Popover/index.js +137 -8
  17. package/es/components/RadioButton/next/RadioButton.js +2 -1
  18. package/es/components/Select/Select.js +14 -7
  19. package/es/components/Tabs/next/Tabs.js +42 -4
  20. package/es/components/Toggle/Toggle.js +147 -109
  21. package/es/components/UIShell/HeaderMenu.js +1 -1
  22. package/es/components/UIShell/HeaderMenuButton.js +3 -4
  23. package/es/components/UIShell/HeaderName.js +3 -4
  24. package/es/components/UIShell/HeaderNavigation.js +27 -75
  25. package/es/components/UIShell/SideNav.js +3 -3
  26. package/es/components/UIShell/SideNavFooter.js +3 -10
  27. package/es/components/UIShell/SideNavIcon.js +3 -4
  28. package/es/components/UIShell/SideNavItem.js +4 -5
  29. package/es/components/UIShell/SideNavLink.js +0 -6
  30. package/es/components/UIShell/SideNavLinkText.js +3 -4
  31. package/es/components/UIShell/SideNavMenu.js +93 -131
  32. package/es/components/UIShell/SideNavSwitcher.js +4 -2
  33. package/es/components/UIShell/SkipToContent.js +3 -4
  34. package/es/index.js +13 -11
  35. package/lib/components/ComposedModal/ComposedModal.js +2 -1
  36. package/lib/components/ComposedModal/next/ComposedModal.js +2 -1
  37. package/lib/components/DataTable/TableToolbarSearch.js +10 -2
  38. package/lib/components/DatePicker/DatePicker.js +14 -5
  39. package/lib/components/FileUploader/FileUploader.js +1 -1
  40. package/lib/components/FileUploader/FileUploaderButton.js +1 -1
  41. package/lib/components/FileUploader/Filename.js +1 -1
  42. package/lib/components/Form/Form.js +1 -1
  43. package/lib/components/FormGroup/FormGroup.js +4 -4
  44. package/lib/components/FormItem/FormItem.js +5 -6
  45. package/lib/components/Layer/index.js +13 -0
  46. package/lib/components/Link/Link.js +6 -3
  47. package/lib/components/ListBox/ListBoxPropTypes.js +1 -21
  48. package/lib/components/ListBox/ListBoxSelection.js +3 -4
  49. package/lib/components/OverflowMenu/OverflowMenu.js +0 -1
  50. package/lib/components/Popover/index.js +135 -6
  51. package/lib/components/RadioButton/next/RadioButton.js +2 -1
  52. package/lib/components/Select/Select.js +14 -7
  53. package/lib/components/Tabs/next/Tabs.js +42 -4
  54. package/lib/components/Toggle/Toggle.js +146 -107
  55. package/lib/components/UIShell/HeaderMenu.js +1 -1
  56. package/lib/components/UIShell/HeaderMenuButton.js +3 -4
  57. package/lib/components/UIShell/HeaderName.js +3 -4
  58. package/lib/components/UIShell/HeaderNavigation.js +25 -73
  59. package/lib/components/UIShell/SideNav.js +3 -3
  60. package/lib/components/UIShell/SideNavFooter.js +3 -10
  61. package/lib/components/UIShell/SideNavIcon.js +3 -4
  62. package/lib/components/UIShell/SideNavItem.js +4 -5
  63. package/lib/components/UIShell/SideNavLink.js +0 -6
  64. package/lib/components/UIShell/SideNavLinkText.js +3 -4
  65. package/lib/components/UIShell/SideNavMenu.js +89 -128
  66. package/lib/components/UIShell/SideNavSwitcher.js +4 -2
  67. package/lib/components/UIShell/SkipToContent.js +3 -4
  68. package/lib/index.js +86 -82
  69. package/package.json +3 -3
  70. package/es/components/Toggle/index.js +0 -19
  71. package/es/components/Toggle/next/Toggle.js +0 -158
  72. package/es/components/UIShell/index.js +0 -17
  73. package/es/components/UIShell/next/HeaderNavigation.js +0 -52
  74. package/es/components/UIShell/next/SideNavMenu.js +0 -160
  75. package/lib/components/Toggle/index.js +0 -23
  76. package/lib/components/Toggle/next/Toggle.js +0 -169
  77. package/lib/components/UIShell/index.js +0 -42
  78. package/lib/components/UIShell/next/HeaderNavigation.js +0 -62
  79. package/lib/components/UIShell/next/SideNavMenu.js +0 -170
@@ -27,7 +27,7 @@ var _Menu, _Close;
27
27
 
28
28
  var _excluded = ["aria-label", "aria-labelledby", "className", "renderMenuIcon", "renderCloseIcon", "onClick", "isActive", "isCollapsible"];
29
29
 
30
- var HeaderMenuButton = function HeaderMenuButton(_ref) {
30
+ function HeaderMenuButton(_ref) {
31
31
  var _cx;
32
32
 
33
33
  var ariaLabel = _ref['aria-label'],
@@ -58,7 +58,7 @@ var HeaderMenuButton = function HeaderMenuButton(_ref) {
58
58
  type: "button",
59
59
  onClick: onClick
60
60
  }), isActive ? closeIcon : menuIcon);
61
- };
61
+ }
62
62
 
63
63
  HeaderMenuButton.propTypes = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, AriaPropTypes.AriaLabelPropType), {}, {
64
64
  /**
@@ -74,6 +74,5 @@ HeaderMenuButton.propTypes = _rollupPluginBabelHelpers.objectSpread2(_rollupPlug
74
74
  */
75
75
  onClick: PropTypes__default["default"].func
76
76
  });
77
- var HeaderMenuButton$1 = HeaderMenuButton;
78
77
 
79
- exports["default"] = HeaderMenuButton$1;
78
+ exports["default"] = HeaderMenuButton;
@@ -24,7 +24,7 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
24
24
 
25
25
  var _excluded = ["children", "className", "prefix", "href"];
26
26
 
27
- var HeaderName = function HeaderName(_ref) {
27
+ function HeaderName(_ref) {
28
28
  var children = _ref.children,
29
29
  customClassName = _ref.className,
30
30
  prefix = _ref.prefix,
@@ -39,7 +39,7 @@ var HeaderName = function HeaderName(_ref) {
39
39
  }), prefix && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("span", {
40
40
  className: "".concat(selectorPrefix, "--header__name--prefix")
41
41
  }, prefix), "\xA0"), children);
42
- };
42
+ }
43
43
 
44
44
  HeaderName.propTypes = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, Link.LinkPropTypes), {}, {
45
45
  /**
@@ -67,6 +67,5 @@ HeaderName.propTypes = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabe
67
67
  HeaderName.defaultProps = {
68
68
  prefix: 'IBM'
69
69
  };
70
- var HeaderName$1 = HeaderName;
71
70
 
72
- exports["default"] = HeaderName$1;
71
+ exports["default"] = HeaderName;
@@ -24,75 +24,29 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
24
24
 
25
25
  var _excluded = ["aria-label", "aria-labelledby", "children", "className"];
26
26
 
27
- var HeaderNavigation = /*#__PURE__*/function (_React$Component) {
28
- _rollupPluginBabelHelpers.inherits(HeaderNavigation, _React$Component);
29
-
30
- var _super = _rollupPluginBabelHelpers.createSuper(HeaderNavigation);
31
-
32
- function HeaderNavigation(props) {
33
- var _this;
34
-
35
- _rollupPluginBabelHelpers.classCallCheck(this, HeaderNavigation);
36
-
37
- _this = _super.call(this, props);
38
-
39
- _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.assertThisInitialized(_this), "handleItemRef", function (index) {
40
- return function (node) {
41
- _this.items[index] = node;
42
- };
43
- });
44
-
45
- _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.assertThisInitialized(_this), "_renderNavItem", function (child, index) {
46
- if ( /*#__PURE__*/React__default["default"].isValidElement(child)) {
47
- return /*#__PURE__*/React__default["default"].cloneElement(child, {
48
- ref: _this.handleItemRef(index)
49
- });
50
- }
51
- });
52
-
53
- _this.items = [];
54
- _this.state = {
55
- selectedIndex: 0
56
- };
57
- return _this;
58
- }
59
-
60
- _rollupPluginBabelHelpers.createClass(HeaderNavigation, [{
61
- key: "render",
62
- value: function render() {
63
- var prefix = this.context;
64
-
65
- var _this$props = this.props,
66
- ariaLabel = _this$props['aria-label'],
67
- ariaLabelledBy = _this$props['aria-labelledby'],
68
- children = _this$props.children,
69
- customClassName = _this$props.className,
70
- rest = _rollupPluginBabelHelpers.objectWithoutProperties(_this$props, _excluded);
71
-
72
- var className = cx__default["default"]("".concat(prefix, "--header__nav"), customClassName); // Assign both label strategies in this option, only one should be defined
73
- // so when we spread that should be the one that is applied to the node
74
-
75
- var accessibilityLabel = {
76
- 'aria-label': ariaLabel,
77
- 'aria-labelledby': ariaLabelledBy
78
- };
79
- return /*#__PURE__*/React__default["default"].createElement("nav", _rollupPluginBabelHelpers["extends"]({}, rest, accessibilityLabel, {
80
- className: className
81
- }), /*#__PURE__*/React__default["default"].createElement("ul", _rollupPluginBabelHelpers["extends"]({}, accessibilityLabel, {
82
- className: "".concat(prefix, "--header__menu-bar")
83
- }), React__default["default"].Children.map(children, this._renderNavItem)));
84
- }
85
- /**
86
- * Render an individual menuitem, adding a `ref` for each child inside of
87
- * `this.items` to properly manage focus.
88
- */
89
-
90
- }]);
91
-
92
- return HeaderNavigation;
93
- }(React__default["default"].Component);
94
-
95
- _rollupPluginBabelHelpers.defineProperty(HeaderNavigation, "propTypes", _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, AriaPropTypes.AriaLabelPropType), {}, {
27
+ function HeaderNavigation(props) {
28
+ var ariaLabel = props['aria-label'],
29
+ ariaLabelledBy = props['aria-labelledby'],
30
+ children = props.children,
31
+ customClassName = props.className,
32
+ rest = _rollupPluginBabelHelpers.objectWithoutProperties(props, _excluded);
33
+
34
+ var prefix = usePrefix.usePrefix();
35
+ var className = cx__default["default"]("".concat(prefix, "--header__nav"), customClassName); // Assign both label strategies in this option, only one should be defined
36
+ // so when we spread that should be the one that is applied to the node
37
+
38
+ var accessibilityLabel = {
39
+ 'aria-label': ariaLabel,
40
+ 'aria-labelledby': ariaLabelledBy
41
+ };
42
+ return /*#__PURE__*/React__default["default"].createElement("nav", _rollupPluginBabelHelpers["extends"]({}, rest, accessibilityLabel, {
43
+ className: className
44
+ }), /*#__PURE__*/React__default["default"].createElement("ul", {
45
+ className: "".concat(prefix, "--header__menu-bar")
46
+ }, children));
47
+ }
48
+
49
+ HeaderNavigation.propTypes = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, AriaPropTypes.AriaLabelPropType), {}, {
96
50
  /**
97
51
  * Provide valid children of HeaderNavigation, for example `HeaderMenuItem`
98
52
  * or `HeaderMenu`
@@ -103,8 +57,6 @@ _rollupPluginBabelHelpers.defineProperty(HeaderNavigation, "propTypes", _rollupP
103
57
  * Optionally provide a custom class to apply to the underlying <nav> node
104
58
  */
105
59
  className: PropTypes__default["default"].string
106
- }));
107
-
108
- _rollupPluginBabelHelpers.defineProperty(HeaderNavigation, "contextType", usePrefix.PrefixContext);
60
+ });
109
61
 
110
- exports["default"] = HeaderNavigation;
62
+ exports.HeaderNavigation = HeaderNavigation;
@@ -222,15 +222,15 @@ SideNav.propTypes = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHe
222
222
  * @param {object} event
223
223
  * @param {boolean} value
224
224
  */
225
- onToggle: PropTypes__default["default"].func,
226
-
225
+ onToggle: PropTypes__default["default"].func
227
226
  /**
228
227
  * Provide a custom function for translating all message ids within this
229
228
  * component. This function will take in two arguments: the mesasge Id and the
230
229
  * state of the component. From this, you should return a string representing
231
230
  * the label you want displayed or read by screen readers.
232
231
  */
233
- translateById: PropTypes__default["default"].func
232
+ // translateById: PropTypes.func,
233
+
234
234
  });
235
235
  var SideNav$1 = SideNav;
236
236
 
@@ -28,7 +28,7 @@ var _Close, _ChevronRight;
28
28
  * user interaction to expand or collapse the side navigation.
29
29
  */
30
30
 
31
- var SideNavFooter = function SideNavFooter(_ref) {
31
+ function SideNavFooter(_ref) {
32
32
  var assistiveText = _ref.assistiveText,
33
33
  customClassName = _ref.className,
34
34
  expanded = _ref.expanded,
@@ -53,7 +53,7 @@ var SideNavFooter = function SideNavFooter(_ref) {
53
53
  }))), /*#__PURE__*/React__default["default"].createElement("span", {
54
54
  className: "".concat(prefix, "--assistive-text")
55
55
  }, assistiveText)));
56
- };
56
+ }
57
57
 
58
58
  SideNavFooter.propTypes = {
59
59
  /**
@@ -68,12 +68,6 @@ SideNavFooter.propTypes = {
68
68
  */
69
69
  expanded: PropTypes__default["default"].bool.isRequired,
70
70
 
71
- /**
72
- * Property to indicate if the side nav container is open (or not). Use to
73
- * keep local state and styling in step with the SideNav expansion state.
74
- */
75
- isSideNavExpanded: PropTypes__default["default"].bool,
76
-
77
71
  /**
78
72
  * Provide a function that is called when the toggle button is interacted
79
73
  * with. Useful for controlling the expansion state of the side navigation.
@@ -83,6 +77,5 @@ SideNavFooter.propTypes = {
83
77
  SideNavFooter.defaultProps = {
84
78
  assistiveText: 'Toggle opening or closing the side navigation'
85
79
  };
86
- var SideNavFooter$1 = SideNavFooter;
87
80
 
88
- exports["default"] = SideNavFooter$1;
81
+ exports["default"] = SideNavFooter;
@@ -21,7 +21,7 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
21
21
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
22
22
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
23
 
24
- var SideNavIcon = function SideNavIcon(_ref) {
24
+ function SideNavIcon(_ref) {
25
25
  var _cx;
26
26
 
27
27
  var children = _ref.children,
@@ -32,7 +32,7 @@ var SideNavIcon = function SideNavIcon(_ref) {
32
32
  return /*#__PURE__*/React__default["default"].createElement("div", {
33
33
  className: className
34
34
  }, children);
35
- };
35
+ }
36
36
 
37
37
  SideNavIcon.propTypes = {
38
38
  /**
@@ -54,6 +54,5 @@ SideNavIcon.propTypes = {
54
54
  SideNavIcon.defaultProps = {
55
55
  small: false
56
56
  };
57
- var SideNavIcon$1 = SideNavIcon;
58
57
 
59
- exports["default"] = SideNavIcon$1;
58
+ exports["default"] = SideNavIcon;
@@ -21,7 +21,7 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
21
21
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
22
22
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
23
 
24
- var SideNavItem = function SideNavItem(_ref) {
24
+ function SideNavItem(_ref) {
25
25
  var _cx;
26
26
 
27
27
  var customClassName = _ref.className,
@@ -33,11 +33,11 @@ var SideNavItem = function SideNavItem(_ref) {
33
33
  return /*#__PURE__*/React__default["default"].createElement("li", {
34
34
  className: className
35
35
  }, children);
36
- };
36
+ }
37
37
 
38
38
  SideNavItem.propTypes = {
39
39
  /**
40
- * Provide a single icon as the child to `SideNavIcon` to render in the
40
+ * Provide a single icon as the child to `SideNavItem` to render in the
41
41
  * container
42
42
  */
43
43
  children: PropTypes__default["default"].node.isRequired,
@@ -52,6 +52,5 @@ SideNavItem.propTypes = {
52
52
  */
53
53
  large: PropTypes__default["default"].bool
54
54
  };
55
- var SideNavItem$1 = SideNavItem;
56
55
 
57
- exports["default"] = SideNavItem$1;
56
+ exports["default"] = SideNavItem;
@@ -59,12 +59,6 @@ SideNavLink.propTypes = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBab
59
59
  */
60
60
  className: PropTypes__default["default"].string,
61
61
 
62
- /**
63
- * Property to indicate if the side nav container is open (or not). Use to
64
- * keep local state and styling in step with the SideNav expansion state.
65
- */
66
- isSideNavExpanded: PropTypes__default["default"].bool,
67
-
68
62
  /**
69
63
  * Specify if this is a large variation of the SideNavLink
70
64
  */
@@ -23,7 +23,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
23
 
24
24
  var _excluded = ["className", "children"];
25
25
 
26
- var SideNavLinkText = function SideNavLinkText(_ref) {
26
+ function SideNavLinkText(_ref) {
27
27
  var customClassName = _ref.className,
28
28
  children = _ref.children,
29
29
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
@@ -33,7 +33,7 @@ var SideNavLinkText = function SideNavLinkText(_ref) {
33
33
  return /*#__PURE__*/React__default["default"].createElement("span", _rollupPluginBabelHelpers["extends"]({}, rest, {
34
34
  className: className
35
35
  }), children);
36
- };
36
+ }
37
37
 
38
38
  SideNavLinkText.propTypes = {
39
39
  /**
@@ -46,6 +46,5 @@ SideNavLinkText.propTypes = {
46
46
  */
47
47
  className: PropTypes__default["default"].string
48
48
  };
49
- var SideNavLinkText$1 = SideNavLinkText;
50
49
 
51
- exports["default"] = SideNavLinkText$1;
50
+ exports["default"] = SideNavLinkText;
@@ -26,108 +26,73 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
26
26
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
27
27
 
28
28
  var _ChevronDown;
29
- var SideNavMenu = /*#__PURE__*/function (_React$Component) {
30
- _rollupPluginBabelHelpers.inherits(SideNavMenu, _React$Component);
31
-
32
- var _super = _rollupPluginBabelHelpers.createSuper(SideNavMenu);
33
-
34
- function SideNavMenu(props) {
35
- var _this;
36
-
37
- _rollupPluginBabelHelpers.classCallCheck(this, SideNavMenu);
38
-
39
- _this = _super.call(this, props);
40
-
41
- _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.assertThisInitialized(_this), "handleToggleExpand", function () {
42
- _this.setState(function (state) {
43
- return {
44
- isExpanded: !state.isExpanded
45
- };
46
- });
47
- });
48
-
49
- _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.assertThisInitialized(_this), "handleKeyDown", function (event) {
50
- if (match.match(event, keys.Escape)) {
51
- _this.setState(function () {
52
- return {
53
- isExpanded: false
54
- };
55
- });
56
- }
57
- });
58
-
59
- _this.state = {
60
- isExpanded: props.defaultExpanded || false,
61
- wasPreviouslyExpanded: props.defaultExpanded || false
62
- };
63
- return _this;
29
+ var SideNavMenu = /*#__PURE__*/React__default["default"].forwardRef(function SideNavMenu(props, ref) {
30
+ var _cx;
31
+
32
+ var customClassName = props.className,
33
+ children = props.children,
34
+ _props$defaultExpande = props.defaultExpanded,
35
+ defaultExpanded = _props$defaultExpande === void 0 ? false : _props$defaultExpande,
36
+ _props$isActive = props.isActive,
37
+ isActive = _props$isActive === void 0 ? false : _props$isActive,
38
+ _props$large = props.large,
39
+ large = _props$large === void 0 ? false : _props$large,
40
+ IconElement = props.renderIcon,
41
+ isSideNavExpanded = props.isSideNavExpanded,
42
+ title = props.title;
43
+ var prefix = usePrefix.usePrefix();
44
+
45
+ var _useState = React.useState(defaultExpanded),
46
+ _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
47
+ isExpanded = _useState2[0],
48
+ setIsExpanded = _useState2[1];
49
+
50
+ var _useState3 = React.useState(defaultExpanded),
51
+ _useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
52
+ prevExpanded = _useState4[0],
53
+ setPrevExpanded = _useState4[1];
54
+
55
+ var className = cx__default["default"]((_cx = {}, _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--side-nav__item"), true), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--side-nav__item--active"), isActive || hasActiveChild(children) && !isExpanded), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--side-nav__item--icon"), IconElement), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--side-nav__item--large"), large), _rollupPluginBabelHelpers.defineProperty(_cx, customClassName, !!customClassName), _cx));
56
+
57
+ if (isSideNavExpanded === false && isExpanded === true) {
58
+ setIsExpanded(false);
59
+ setPrevExpanded(true);
60
+ } else if (isSideNavExpanded === true && prevExpanded === true) {
61
+ setIsExpanded(true);
62
+ setPrevExpanded(false);
64
63
  }
65
64
 
66
- _rollupPluginBabelHelpers.createClass(SideNavMenu, [{
67
- key: "render",
68
- value: function render() {
69
- var _cx;
70
-
71
- var prefix = this.context;
72
- var _this$props = this.props,
73
- buttonRef = _this$props.buttonRef,
74
- customClassName = _this$props.className,
75
- children = _this$props.children,
76
- IconElement = _this$props.renderIcon,
77
- isActive = _this$props.isActive,
78
- title = _this$props.title,
79
- large = _this$props.large;
80
- var isExpanded = this.state.isExpanded;
81
- var hasActiveChild;
82
-
83
- if (children) {
84
- // if we have children, either a single or multiple, find if it is active
85
- hasActiveChild = Array.isArray(children) ? children.some(function (child) {
86
- if (child.props && (child.props.isActive === true || child.props['aria-current'])) {
87
- return true;
88
- }
89
-
90
- return false;
91
- }) : children.props && (children.props.isActive === true || children.props['aria-current']);
65
+ return (
66
+ /*#__PURE__*/
67
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
68
+ React__default["default"].createElement("li", {
69
+ className: className,
70
+ onKeyDown: function onKeyDown(event) {
71
+ if (match.match(event, keys.Escape)) {
72
+ setIsExpanded(false);
73
+ }
92
74
  }
93
-
94
- var className = cx__default["default"]((_cx = {}, _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--side-nav__item"), true), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--side-nav__item--active"), isActive || hasActiveChild && !isExpanded), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--side-nav__item--icon"), IconElement), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--side-nav__item--large"), large), _rollupPluginBabelHelpers.defineProperty(_cx, customClassName, !!customClassName), _cx));
95
- return (
96
- /*#__PURE__*/
97
- // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
98
- React__default["default"].createElement("li", {
99
- className: className,
100
- onKeyDown: this.handleKeyDown
101
- }, /*#__PURE__*/React__default["default"].createElement("button", {
102
- "aria-expanded": isExpanded,
103
- className: "".concat(prefix, "--side-nav__submenu"),
104
- onClick: this.handleToggleExpand,
105
- ref: buttonRef,
106
- type: "button"
107
- }, IconElement && /*#__PURE__*/React__default["default"].createElement(SideNavIcon["default"], null, /*#__PURE__*/React__default["default"].createElement(IconElement, null)), /*#__PURE__*/React__default["default"].createElement("span", {
108
- className: "".concat(prefix, "--side-nav__submenu-title")
109
- }, title), /*#__PURE__*/React__default["default"].createElement(SideNavIcon["default"], {
110
- className: "".concat(prefix, "--side-nav__submenu-chevron"),
111
- small: true
112
- }, _ChevronDown || (_ChevronDown = /*#__PURE__*/React__default["default"].createElement(iconsReact.ChevronDown, {
113
- size: 20
114
- })))), /*#__PURE__*/React__default["default"].createElement("ul", {
115
- className: "".concat(prefix, "--side-nav__menu")
116
- }, children))
117
- );
118
- }
119
- }]);
120
-
121
- return SideNavMenu;
122
- }(React__default["default"].Component);
123
-
124
- _rollupPluginBabelHelpers.defineProperty(SideNavMenu, "contextType", usePrefix.PrefixContext);
125
-
126
- _rollupPluginBabelHelpers.defineProperty(SideNavMenu, "propTypes", {
127
- buttonRef: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].shape({
128
- current: PropTypes__default["default"].any
129
- })]),
130
-
75
+ }, /*#__PURE__*/React__default["default"].createElement("button", {
76
+ "aria-expanded": isExpanded,
77
+ className: "".concat(prefix, "--side-nav__submenu"),
78
+ onClick: function onClick() {
79
+ setIsExpanded(!isExpanded);
80
+ },
81
+ ref: ref,
82
+ type: "button"
83
+ }, IconElement && /*#__PURE__*/React__default["default"].createElement(SideNavIcon["default"], null, /*#__PURE__*/React__default["default"].createElement(IconElement, null)), /*#__PURE__*/React__default["default"].createElement("span", {
84
+ className: "".concat(prefix, "--side-nav__submenu-title")
85
+ }, title), /*#__PURE__*/React__default["default"].createElement(SideNavIcon["default"], {
86
+ className: "".concat(prefix, "--side-nav__submenu-chevron"),
87
+ small: true
88
+ }, _ChevronDown || (_ChevronDown = /*#__PURE__*/React__default["default"].createElement(iconsReact.ChevronDown, {
89
+ size: 20
90
+ })))), /*#__PURE__*/React__default["default"].createElement("ul", {
91
+ className: "".concat(prefix, "--side-nav__menu")
92
+ }, children))
93
+ );
94
+ });
95
+ SideNavMenu.propTypes = {
131
96
  /**
132
97
  * Provide <SideNavMenuItem>'s inside of the `SideNavMenu`
133
98
  */
@@ -171,39 +136,35 @@ _rollupPluginBabelHelpers.defineProperty(SideNavMenu, "propTypes", {
171
136
  * Provide the text for the overall menu name
172
137
  */
173
138
  title: PropTypes__default["default"].string.isRequired
174
- });
139
+ };
140
+
141
+ function hasActiveChild(children) {
142
+ // if we have children, either a single or multiple, find if it is active
143
+ if (Array.isArray(children)) {
144
+ return children.some(function (child) {
145
+ if (!child.props) {
146
+ return false;
147
+ }
175
148
 
176
- _rollupPluginBabelHelpers.defineProperty(SideNavMenu, "defaultProps", {
177
- defaultExpanded: false,
178
- isActive: false,
179
- large: false
180
- });
149
+ if (child.props.isActive === true) {
150
+ return true;
151
+ }
181
152
 
182
- _rollupPluginBabelHelpers.defineProperty(SideNavMenu, "getDerivedStateFromProps", function (props, state) {
183
- var derivedState = null;
184
-
185
- if (props.isSideNavExpanded === false && state.isExpanded === true) {
186
- derivedState = {
187
- isExpanded: props.isSideNavExpanded,
188
- wasPreviouslyExpanded: true
189
- };
190
- } else if (props.isSideNavExpanded === true && state.wasPreviouslyExpanded === true) {
191
- derivedState = {
192
- isExpanded: props.isSideNavExpanded,
193
- wasPreviouslyExpanded: false
194
- };
153
+ if (child.props['aria-current']) {
154
+ return true;
155
+ }
156
+
157
+ return false;
158
+ });
195
159
  }
196
160
 
197
- return derivedState;
198
- });
161
+ if (children.props) {
162
+ if (children.props.isActive === true || children.props['aria-current']) {
163
+ return true;
164
+ }
165
+ }
199
166
 
200
- var SideNavMenuForwardRef = /*#__PURE__*/React__default["default"].forwardRef(function (props, ref) {
201
- return /*#__PURE__*/React__default["default"].createElement(SideNavMenu, _rollupPluginBabelHelpers["extends"]({}, props, {
202
- buttonRef: ref
203
- }));
204
- });
205
- SideNavMenuForwardRef.displayName = 'SideNavMenu';
206
- var SideNavMenuClassic = SideNavMenuForwardRef;
167
+ return false;
168
+ }
207
169
 
208
170
  exports.SideNavMenu = SideNavMenu;
209
- exports["default"] = SideNavMenuClassic;
@@ -14,6 +14,7 @@ var cx = require('classnames');
14
14
  var PropTypes = require('prop-types');
15
15
  var React = require('react');
16
16
  var usePrefix = require('../../internal/usePrefix.js');
17
+ var useId = require('../../internal/useId.js');
17
18
 
18
19
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
20
 
@@ -23,6 +24,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
24
 
24
25
  var _ChevronDown;
25
26
  var SideNavSwitcher = /*#__PURE__*/React__default["default"].forwardRef(function SideNavSwitcher(props, ref) {
27
+ var id = useId.useId('side-nav-switcher');
26
28
  var prefix = usePrefix.usePrefix();
27
29
  var customClassName = props.className,
28
30
  labelText = props.labelText,
@@ -33,10 +35,10 @@ var SideNavSwitcher = /*#__PURE__*/React__default["default"].forwardRef(function
33
35
  return /*#__PURE__*/React__default["default"].createElement("div", {
34
36
  className: className
35
37
  }, /*#__PURE__*/React__default["default"].createElement("label", {
36
- htmlFor: "side-nav-switcher",
38
+ htmlFor: id,
37
39
  className: "".concat(prefix, "--assistive-text")
38
40
  }, labelText), /*#__PURE__*/React__default["default"].createElement("select", {
39
- id: "carbon-side-nav-switcher",
41
+ id: id,
40
42
  className: "".concat(prefix, "--side-nav__select"),
41
43
  defaultValue: "",
42
44
  onBlur: onChange,
@@ -23,7 +23,7 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
23
23
 
24
24
  var _excluded = ["children", "className", "href", "tabIndex"];
25
25
 
26
- var SkipToContent = function SkipToContent(_ref) {
26
+ function SkipToContent(_ref) {
27
27
  var children = _ref.children,
28
28
  customClassName = _ref.className,
29
29
  href = _ref.href,
@@ -37,7 +37,7 @@ var SkipToContent = function SkipToContent(_ref) {
37
37
  href: href,
38
38
  tabIndex: tabIndex
39
39
  }), children);
40
- };
40
+ }
41
41
 
42
42
  SkipToContent.propTypes = {
43
43
  /**
@@ -62,6 +62,5 @@ SkipToContent.defaultProps = {
62
62
  href: '#main-content',
63
63
  tabIndex: '0'
64
64
  };
65
- var SkipToContent$1 = SkipToContent;
66
65
 
67
- exports["default"] = SkipToContent$1;
66
+ exports["default"] = SkipToContent;