@carbon-labs/react-ui-shell 0.58.0 → 0.60.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.
@@ -24,8 +24,7 @@ export type HeaderContainerProps<P extends HeaderContainerRenderProps> = {
24
24
  } & {
25
25
  [K in keyof Omit<P, keyof HeaderContainerRenderProps>]: P[K];
26
26
  };
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;
27
+ export declare function HeaderContainer<P extends HeaderContainerRenderProps>({ render: Children, isSideNavExpanded, isSwitcherExpanded, isProfileExpanded, themeSetting, ...rest }: HeaderContainerProps<P>): import("react/jsx-runtime").JSX.Element;
29
28
  export declare namespace HeaderContainer {
30
29
  var propTypes: {
31
30
  /**
@@ -7,7 +7,7 @@
7
7
 
8
8
  import { extends as _extends } from '../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import PropTypes from 'prop-types';
10
- import React, { useState, useCallback, useLayoutEffect } from 'react';
10
+ import React, { useState, useCallback, useLayoutEffect, useEffect } from 'react';
11
11
  import { Escape } from '../internal/keyboard/keys.js';
12
12
  import { match } from '../internal/keyboard/match.js';
13
13
  import { useWindowEvent } from '../internal/useEvent.js';
@@ -20,7 +20,6 @@ function HeaderContainer(_ref) {
20
20
  isSwitcherExpanded = false,
21
21
  isProfileExpanded = false,
22
22
  themeSetting,
23
- // <-- pass this in from the story
24
23
  ...rest
25
24
  } = _ref;
26
25
  const prefix = usePrefix();
@@ -50,6 +49,20 @@ function HeaderContainer(_ref) {
50
49
  document.querySelector(`.${prefix}--profile .${prefix}--content-switcher--selected`).focus();
51
50
  });
52
51
  }, [themeSetting]);
52
+ useEffect(() => {
53
+ function handleProfileClosing(event) {
54
+ const profile = document.querySelector(`.${prefix}--profile.${prefix}--popover--open`);
55
+ if (profile && !profile.contains(event.target)) {
56
+ setIsProfileExpandedState(false);
57
+ }
58
+ }
59
+ document.addEventListener('focusin', handleProfileClosing);
60
+ document.addEventListener('mousedown', handleProfileClosing);
61
+ return () => {
62
+ document.removeEventListener('mousedown', handleProfileClosing);
63
+ document.removeEventListener('focusin', handleProfileClosing);
64
+ };
65
+ }, []);
53
66
  return /*#__PURE__*/React.createElement(Children, _extends({}, rest, {
54
67
  isSideNavExpanded: isSideNavExpandedState,
55
68
  isSwitcherExpanded: isSwitcherExpandedState,
@@ -24,8 +24,7 @@ export type HeaderContainerProps<P extends HeaderContainerRenderProps> = {
24
24
  } & {
25
25
  [K in keyof Omit<P, keyof HeaderContainerRenderProps>]: P[K];
26
26
  };
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;
27
+ export declare function HeaderContainer<P extends HeaderContainerRenderProps>({ render: Children, isSideNavExpanded, isSwitcherExpanded, isProfileExpanded, themeSetting, ...rest }: HeaderContainerProps<P>): import("react/jsx-runtime").JSX.Element;
29
28
  export declare namespace HeaderContainer {
30
29
  var propTypes: {
31
30
  /**
@@ -24,7 +24,6 @@ function HeaderContainer(_ref) {
24
24
  isSwitcherExpanded = false,
25
25
  isProfileExpanded = false,
26
26
  themeSetting,
27
- // <-- pass this in from the story
28
27
  ...rest
29
28
  } = _ref;
30
29
  const prefix = usePrefix.usePrefix();
@@ -54,6 +53,20 @@ function HeaderContainer(_ref) {
54
53
  document.querySelector(`.${prefix}--profile .${prefix}--content-switcher--selected`).focus();
55
54
  });
56
55
  }, [themeSetting]);
56
+ React.useEffect(() => {
57
+ function handleProfileClosing(event) {
58
+ const profile = document.querySelector(`.${prefix}--profile.${prefix}--popover--open`);
59
+ if (profile && !profile.contains(event.target)) {
60
+ setIsProfileExpandedState(false);
61
+ }
62
+ }
63
+ document.addEventListener('focusin', handleProfileClosing);
64
+ document.addEventListener('mousedown', handleProfileClosing);
65
+ return () => {
66
+ document.removeEventListener('mousedown', handleProfileClosing);
67
+ document.removeEventListener('focusin', handleProfileClosing);
68
+ };
69
+ }, []);
57
70
  return /*#__PURE__*/React.createElement(Children, _rollupPluginBabelHelpers.extends({}, rest, {
58
71
  isSideNavExpanded: isSideNavExpandedState,
59
72
  isSwitcherExpanded: isSwitcherExpandedState,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carbon-labs/react-ui-shell",
3
- "version": "0.58.0",
3
+ "version": "0.60.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -42,5 +42,5 @@
42
42
  "dependencies": {
43
43
  "@ibm/telemetry-js": "^1.9.1"
44
44
  },
45
- "gitHead": "d0cbc0ae2d4ee86c3a28429fb07a0896e91506bf"
45
+ "gitHead": "5d5888197e1241bb61e9ce1fe9176770fd08b35d"
46
46
  }
@@ -35,7 +35,9 @@ div:has(.#{$prefix}--side-nav--panel.#{$prefix}--side-nav--expanded)
35
35
  // when rail is hidden, remove spacing that accounts for rail
36
36
  @each $breakpoint in ('sm', 'md', 'lg', 'xlg', 'max') {
37
37
  .#{$prefix}--side-nav--rail.#{$prefix}--side-nav--hide-rail-breakpoint-down-#{$breakpoint}
38
- ~ .#{$prefix}--content {
38
+ ~ .#{$prefix}--content,
39
+ div:has(.#{$prefix}--side-nav--hide-rail-breakpoint-down-#{$breakpoint})
40
+ + .#{$prefix}--content {
39
41
  @include breakpoint-down($breakpoint) {
40
42
  margin-inline-start: 0;
41
43
  }
@@ -22,14 +22,16 @@ $prefix: 'cds' !default;
22
22
  .#{$prefix}--profile .#{$prefix}--toggletip-content {
23
23
  padding: 0;
24
24
  background-color: $background;
25
+ border-block-end: 1px solid $border-subtle;
25
26
  border-inline-start: 1px solid $border-subtle;
26
27
  gap: 0;
28
+ inline-size: convert.to-rem(256px);
27
29
  max-block-size: 100vh;
28
30
  overflow-y: scroll;
29
31
 
30
32
  > * {
31
33
  padding: $spacing-05;
32
- border-block-end: convert.to-rem(1px) solid $border-subtle;
34
+ outline: convert.to-rem(0.5px) solid $border-subtle;
33
35
  }
34
36
  }
35
37