@carbon-labs/react-ui-shell 0.56.0 → 0.58.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.
@@ -40,8 +40,8 @@ function _objectWithoutProperties(e, t) {
40
40
  r,
41
41
  i = _objectWithoutPropertiesLoose(e, t);
42
42
  if (Object.getOwnPropertySymbols) {
43
- var s = Object.getOwnPropertySymbols(e);
44
- for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
43
+ var n = Object.getOwnPropertySymbols(e);
44
+ for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
45
45
  }
46
46
  return i;
47
47
  }
@@ -49,7 +49,7 @@ function _objectWithoutPropertiesLoose(r, e) {
49
49
  if (null == r) return {};
50
50
  var t = {};
51
51
  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
52
- if (e.includes(n)) continue;
52
+ if (-1 !== e.indexOf(n)) continue;
53
53
  t[n] = r[n];
54
54
  }
55
55
  return t;
@@ -9,19 +9,29 @@ import React from 'react';
9
9
  export interface HeaderContainerRenderProps {
10
10
  isSideNavExpanded: boolean;
11
11
  isSwitcherExpanded: boolean;
12
+ isProfileExpanded: boolean;
12
13
  onClickSideNavExpand: () => void;
13
14
  onClickSwitcherExpand: () => void;
15
+ onClickProfileExpand: () => void;
16
+ themeSetting: string;
14
17
  }
15
18
  export type HeaderContainerProps<P extends HeaderContainerRenderProps> = {
16
19
  isSideNavExpanded?: boolean;
17
20
  isSwitcherExpanded?: boolean;
21
+ isProfileExpanded?: boolean;
18
22
  render: React.ComponentType<P>;
23
+ themeSetting?: string;
19
24
  } & {
20
25
  [K in keyof Omit<P, keyof HeaderContainerRenderProps>]: P[K];
21
26
  };
22
- export declare function HeaderContainer<P extends HeaderContainerRenderProps>({ render: Children, isSideNavExpanded, isSwitcherExpanded, ...rest }: HeaderContainerProps<P>): import("react/jsx-runtime").JSX.Element;
27
+ export declare function HeaderContainer<P extends HeaderContainerRenderProps>({ render: Children, isSideNavExpanded, isSwitcherExpanded, isProfileExpanded, themeSetting, // <-- pass this in from the story
28
+ ...rest }: HeaderContainerProps<P>): import("react/jsx-runtime").JSX.Element;
23
29
  export declare namespace HeaderContainer {
24
30
  var propTypes: {
31
+ /**
32
+ * `true` if the profile is expanded.
33
+ */
34
+ isProfileExpanded: PropTypes.Requireable<boolean>;
25
35
  /**
26
36
  * `true` if the side navigation is expanded.
27
37
  */
@@ -15,36 +15,60 @@ var React = require('react');
15
15
  var keys = require('../internal/keyboard/keys.js');
16
16
  var match = require('../internal/keyboard/match.js');
17
17
  var useEvent = require('../internal/useEvent.js');
18
+ var usePrefix = require('../internal/usePrefix.js');
18
19
 
19
20
  function HeaderContainer(_ref) {
20
21
  let {
21
22
  render: Children,
22
23
  isSideNavExpanded = false,
23
24
  isSwitcherExpanded = false,
25
+ isProfileExpanded = false,
26
+ themeSetting,
27
+ // <-- pass this in from the story
24
28
  ...rest
25
29
  } = _ref;
30
+ const prefix = usePrefix.usePrefix();
26
31
  const [isSideNavExpandedState, setIsSideNavExpandedState] = React.useState(isSideNavExpanded);
27
32
  const [isSwitcherExpandedState, setSwitcherExpandedState] = React.useState(isSwitcherExpanded);
33
+ const [isProfileExpandedState, setIsProfileExpandedState] = React.useState(isProfileExpanded);
28
34
  useEvent.useWindowEvent('keydown', event => {
29
35
  if (match.match(event, keys.Escape)) {
30
36
  setIsSideNavExpandedState(false);
31
37
  setSwitcherExpandedState(false);
38
+ setIsProfileExpandedState(false); // close profile on ESC
32
39
  }
33
40
  });
34
41
  const handleHeaderMenuButtonClick = React.useCallback(() => {
35
- setIsSideNavExpandedState(prevIsSideNavExpanded => !prevIsSideNavExpanded);
36
- }, [setIsSideNavExpandedState]);
42
+ setIsSideNavExpandedState(prev => !prev);
43
+ }, []);
37
44
  const handleSwitcherClick = React.useCallback(() => {
38
- setSwitcherExpandedState(prevIsSwitcherExpanded => !prevIsSwitcherExpanded);
39
- }, [setSwitcherExpandedState]);
45
+ setSwitcherExpandedState(prev => !prev);
46
+ }, []);
47
+ const handleProfileClick = React.useCallback(e => {
48
+ if (!e.target.closest(`.${prefix}--profile .${prefix}--popover`)) {
49
+ setIsProfileExpandedState(prev => !prev);
50
+ }
51
+ }, []);
52
+ React.useLayoutEffect(() => {
53
+ setTimeout(function () {
54
+ document.querySelector(`.${prefix}--profile .${prefix}--content-switcher--selected`).focus();
55
+ });
56
+ }, [themeSetting]);
40
57
  return /*#__PURE__*/React.createElement(Children, _rollupPluginBabelHelpers.extends({}, rest, {
41
58
  isSideNavExpanded: isSideNavExpandedState,
42
59
  isSwitcherExpanded: isSwitcherExpandedState,
60
+ isProfileExpanded: isProfileExpandedState,
43
61
  onClickSideNavExpand: handleHeaderMenuButtonClick,
44
- onClickSwitcherExpand: handleSwitcherClick
62
+ onClickSwitcherExpand: handleSwitcherClick,
63
+ onClickProfileExpand: handleProfileClick,
64
+ themeSetting: themeSetting
45
65
  }));
46
66
  }
47
67
  HeaderContainer.propTypes = {
68
+ /**
69
+ * `true` if the profile is expanded.
70
+ */
71
+ isProfileExpanded: PropTypes.bool,
48
72
  /**
49
73
  * `true` if the side navigation is expanded.
50
74
  */
@@ -20,17 +20,18 @@ const Profile = /*#__PURE__*/React.forwardRef(function Profile(_ref) {
20
20
  className: customClassName,
21
21
  label,
22
22
  children,
23
- renderIcon: IconElement
23
+ renderIcon: IconElement,
24
+ ...rest
24
25
  } = _ref;
25
26
  const prefix = usePrefix.usePrefix();
26
27
  const className = index.default({
27
- [`${prefix}-profile`]: true,
28
+ [`${prefix}--profile`]: true,
28
29
  [customClassName]: !!customClassName
29
30
  });
30
- return /*#__PURE__*/React.createElement(HeaderPopover.HeaderPopover, {
31
+ return /*#__PURE__*/React.createElement(HeaderPopover.HeaderPopover, _rollupPluginBabelHelpers.extends({
31
32
  align: "bottom-right",
32
33
  className: className
33
- }, /*#__PURE__*/React.createElement(HeaderPopover.HeaderPopoverButton, {
34
+ }, rest), /*#__PURE__*/React.createElement(HeaderPopover.HeaderPopoverButton, {
34
35
  align: "bottom",
35
36
  label: label
36
37
  }, IconElement), /*#__PURE__*/React.createElement(HeaderPopover.HeaderPopoverContent, null, children));
package/lib/index.d.ts CHANGED
@@ -14,7 +14,6 @@ export { SideNavMenu } from './components/SideNavMenu';
14
14
  export { SideNavMenuItem } from './components/SideNavMenuItem';
15
15
  export { HeaderContainer } from './components/HeaderContainer';
16
16
  export { HeaderPopover, HeaderPopoverActions, HeaderPopoverButton, HeaderPopoverContent, } from './components/HeaderPopover';
17
- export { HeaderPanel } from './components/HeaderPanel';
18
17
  export { SharkFinIcon } from './components/SharkFinIcon';
19
18
  export { HeaderDivider } from './components/HeaderDivider';
20
19
  export { TrialCountdown } from './components/TrialCountdown';
package/lib/index.js CHANGED
@@ -15,7 +15,6 @@ var SideNavMenu = require('./components/SideNavMenu.js');
15
15
  var SideNavMenuItem = require('./components/SideNavMenuItem.js');
16
16
  var HeaderContainer = require('./components/HeaderContainer.js');
17
17
  var HeaderPopover = require('./components/HeaderPopover.js');
18
- var HeaderPanel = require('./components/HeaderPanel.js');
19
18
  var SharkFinIcon = require('./components/SharkFinIcon.js');
20
19
  var HeaderDivider = require('./components/HeaderDivider.js');
21
20
  var TrialCountdown = require('./components/TrialCountdown.js');
@@ -36,7 +35,6 @@ exports.HeaderPopover = HeaderPopover.HeaderPopover;
36
35
  exports.HeaderPopoverActions = HeaderPopover.HeaderPopoverActions;
37
36
  exports.HeaderPopoverButton = HeaderPopover.HeaderPopoverButton;
38
37
  exports.HeaderPopoverContent = HeaderPopover.HeaderPopoverContent;
39
- exports.HeaderPanel = HeaderPanel.HeaderPanel;
40
38
  exports.SharkFinIcon = SharkFinIcon.SharkFinIcon;
41
39
  exports.HeaderDivider = HeaderDivider.HeaderDivider;
42
40
  exports.TrialCountdown = TrialCountdown.TrialCountdown;