@carbon-labs/react-ui-shell 0.26.0 → 0.27.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.
@@ -344,6 +344,11 @@ function SideNavRenderFunction(_ref, ref) {
344
344
  setInternalIsTreeview(value);
345
345
  }
346
346
  };
347
+ const SideNavToggleButton = /*#__PURE__*/React.createElement(SideNavToggle, {
348
+ className: !expandedState ? `${prefix}--side-nav__toggle--collapsed` : '',
349
+ renderIcon: expandedState ? SidePanelClose : SidePanelOpen,
350
+ onClick: () => setExpandedState(!expandedState)
351
+ }, sideNavToggleText);
347
352
  return /*#__PURE__*/React.createElement(SideNavContext.Provider, {
348
353
  value: {
349
354
  expanded,
@@ -364,10 +369,9 @@ function SideNavRenderFunction(_ref, ref) {
364
369
  ref: navRef,
365
370
  className: `${prefix}--side-nav__navigation ${className}`,
366
371
  inert: !isRail && navType !== SIDE_NAV_TYPE.PANEL && !(expanded || isLg) ? -1 : undefined
367
- }, accessibilityLabel, eventHandlers, other), childrenToRender, navType === SIDE_NAV_TYPE.PANEL && /*#__PURE__*/React.createElement(SideNavToggle, {
368
- renderIcon: expandedState ? SidePanelClose : SidePanelOpen,
369
- onClick: () => setExpandedState(!expandedState)
370
- }, sideNavToggleText)));
372
+ }, accessibilityLabel, eventHandlers, other), childrenToRender, navType === SIDE_NAV_TYPE.PANEL && (expandedState ? SideNavToggleButton : /*#__PURE__*/React.createElement("div", {
373
+ className: `${prefix}--side-nav__toggle-container`
374
+ }, SideNavToggleButton))));
371
375
  }
372
376
  const SideNav = /*#__PURE__*/React.forwardRef(SideNavRenderFunction);
373
377
  SideNav.displayName = 'SideNav';
@@ -6,6 +6,10 @@
6
6
  */
7
7
  import React, { ReactNode } from 'react';
8
8
  interface SideNavToggleProps {
9
+ /**
10
+ * Specify an optional className to be applied to the button node
11
+ */
12
+ className?: string;
9
13
  /**
10
14
  * Specify the text content for the link
11
15
  */
@@ -6,6 +6,7 @@
6
6
  */
7
7
 
8
8
  import { extends as _extends } from '../_virtual/_rollupPluginBabelHelpers.js';
9
+ import cx from '../_virtual/index.js';
9
10
  import PropTypes from 'prop-types';
10
11
  import React from 'react';
11
12
  import { SideNavIcon } from '@carbon/react';
@@ -13,6 +14,7 @@ import { usePrefix } from '../internal/usePrefix.js';
13
14
 
14
15
  const SideNavToggle = /*#__PURE__*/React.forwardRef(function SideNavToggle(_ref, ref) {
15
16
  let {
17
+ className: customClassName,
16
18
  renderIcon: IconElement,
17
19
  tabIndex,
18
20
  children,
@@ -20,7 +22,9 @@ const SideNavToggle = /*#__PURE__*/React.forwardRef(function SideNavToggle(_ref,
20
22
  } = _ref;
21
23
  const prefix = usePrefix();
22
24
  return /*#__PURE__*/React.createElement("button", _extends({
23
- className: `${prefix}--side-nav__toggle`,
25
+ className: cx(customClassName, {
26
+ [`${prefix}--side-nav__toggle`]: true
27
+ }),
24
28
  ref: ref,
25
29
  type: "button",
26
30
  tabIndex: tabIndex ?? 0
@@ -34,6 +38,10 @@ SideNavToggle.propTypes = {
34
38
  * Specify the text content for the toggle
35
39
  */
36
40
  children: PropTypes.node,
41
+ /**
42
+ * Specify an optional className to be applied to the button node
43
+ */
44
+ className: PropTypes.string,
37
45
  /**
38
46
  * Provide an optional function to be called when clicked
39
47
  */
@@ -346,6 +346,11 @@ function SideNavRenderFunction(_ref, ref) {
346
346
  setInternalIsTreeview(value);
347
347
  }
348
348
  };
349
+ const SideNavToggleButton = /*#__PURE__*/React.createElement(SideNavToggle.SideNavToggle, {
350
+ className: !expandedState ? `${prefix}--side-nav__toggle--collapsed` : '',
351
+ renderIcon: expandedState ? bucket15.SidePanelClose : bucket15.SidePanelOpen,
352
+ onClick: () => setExpandedState(!expandedState)
353
+ }, sideNavToggleText);
349
354
  return /*#__PURE__*/React.createElement(SideNavContext.Provider, {
350
355
  value: {
351
356
  expanded,
@@ -366,10 +371,9 @@ function SideNavRenderFunction(_ref, ref) {
366
371
  ref: navRef,
367
372
  className: `${prefix}--side-nav__navigation ${className}`,
368
373
  inert: !isRail && navType !== SIDE_NAV_TYPE.PANEL && !(expanded || isLg) ? -1 : undefined
369
- }, accessibilityLabel, eventHandlers, other), childrenToRender, navType === SIDE_NAV_TYPE.PANEL && /*#__PURE__*/React.createElement(SideNavToggle.SideNavToggle, {
370
- renderIcon: expandedState ? bucket15.SidePanelClose : bucket15.SidePanelOpen,
371
- onClick: () => setExpandedState(!expandedState)
372
- }, sideNavToggleText)));
374
+ }, accessibilityLabel, eventHandlers, other), childrenToRender, navType === SIDE_NAV_TYPE.PANEL && (expandedState ? SideNavToggleButton : /*#__PURE__*/React.createElement("div", {
375
+ className: `${prefix}--side-nav__toggle-container`
376
+ }, SideNavToggleButton))));
373
377
  }
374
378
  const SideNav = /*#__PURE__*/React.forwardRef(SideNavRenderFunction);
375
379
  SideNav.displayName = 'SideNav';
@@ -6,6 +6,10 @@
6
6
  */
7
7
  import React, { ReactNode } from 'react';
8
8
  interface SideNavToggleProps {
9
+ /**
10
+ * Specify an optional className to be applied to the button node
11
+ */
12
+ className?: string;
9
13
  /**
10
14
  * Specify the text content for the link
11
15
  */
@@ -10,6 +10,7 @@
10
10
  Object.defineProperty(exports, '__esModule', { value: true });
11
11
 
12
12
  var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
13
+ var index = require('../_virtual/index.js');
13
14
  var PropTypes = require('prop-types');
14
15
  var React = require('react');
15
16
  var react = require('@carbon/react');
@@ -17,6 +18,7 @@ var usePrefix = require('../internal/usePrefix.js');
17
18
 
18
19
  const SideNavToggle = /*#__PURE__*/React.forwardRef(function SideNavToggle(_ref, ref) {
19
20
  let {
21
+ className: customClassName,
20
22
  renderIcon: IconElement,
21
23
  tabIndex,
22
24
  children,
@@ -24,7 +26,9 @@ const SideNavToggle = /*#__PURE__*/React.forwardRef(function SideNavToggle(_ref,
24
26
  } = _ref;
25
27
  const prefix = usePrefix.usePrefix();
26
28
  return /*#__PURE__*/React.createElement("button", _rollupPluginBabelHelpers.extends({
27
- className: `${prefix}--side-nav__toggle`,
29
+ className: index.default(customClassName, {
30
+ [`${prefix}--side-nav__toggle`]: true
31
+ }),
28
32
  ref: ref,
29
33
  type: "button",
30
34
  tabIndex: tabIndex ?? 0
@@ -38,6 +42,10 @@ SideNavToggle.propTypes = {
38
42
  * Specify the text content for the toggle
39
43
  */
40
44
  children: PropTypes.node,
45
+ /**
46
+ * Specify an optional className to be applied to the button node
47
+ */
48
+ className: PropTypes.string,
41
49
  /**
42
50
  * Provide an optional function to be called when clicked
43
51
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carbon-labs/react-ui-shell",
3
- "version": "0.26.0",
3
+ "version": "0.27.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -33,5 +33,5 @@
33
33
  "dependencies": {
34
34
  "@ibm/telemetry-js": "^1.9.1"
35
35
  },
36
- "gitHead": "8aa4567ca14b852315e2731e22e230f4667ec5ad"
36
+ "gitHead": "94522ab158f8e47f9d0312eccccd32ea35dd1ae6"
37
37
  }
@@ -335,3 +335,14 @@ div:has(.#{$prefix}--header)
335
335
  overflow: visible;
336
336
  }
337
337
  }
338
+
339
+ .#{$prefix}--side-nav__toggle-container {
340
+ position: absolute;
341
+ background: $background;
342
+ inline-size: 100%;
343
+ inset-block-end: 0;
344
+
345
+ .#{$prefix}--side-nav__toggle.#{$prefix}--side-nav__toggle--collapsed:hover {
346
+ background: $background-hover;
347
+ }
348
+ }