carbon-react 125.0.2 → 125.2.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.
@@ -12,6 +12,7 @@ export interface PopoverProps {
12
12
  reference: CustomRefObject<HTMLElement>;
13
13
  isOpen?: boolean;
14
14
  animationFrame?: boolean;
15
+ popoverStrategy?: "absolute" | "fixed";
15
16
  }
16
- declare const Popover: ({ children, placement, disablePortal, reference, middleware, disableBackgroundUI, isOpen, animationFrame, }: PopoverProps) => React.JSX.Element;
17
+ declare const Popover: ({ children, placement, disablePortal, reference, middleware, disableBackgroundUI, isOpen, animationFrame, popoverStrategy, }: PopoverProps) => React.JSX.Element;
17
18
  export default Popover;
@@ -17,7 +17,8 @@ const Popover = ({
17
17
  middleware = defaultMiddleware,
18
18
  disableBackgroundUI,
19
19
  isOpen = true,
20
- animationFrame
20
+ animationFrame,
21
+ popoverStrategy = "absolute"
21
22
  }) => {
22
23
  const elementDOM = useRef(null);
23
24
  const {
@@ -46,7 +47,8 @@ const Popover = ({
46
47
  floating: floatingReference,
47
48
  placement,
48
49
  middleware,
49
- animationFrame
50
+ animationFrame,
51
+ strategy: popoverStrategy
50
52
  });
51
53
  useEffect(() => {
52
54
  return () => {
@@ -55,6 +55,8 @@ export interface PopoverContainerProps extends PaddingProps {
55
55
  closeButtonAriaLabel?: string;
56
56
  /** Container aria label */
57
57
  containerAriaLabel?: string;
58
+ /** Disables the animation for the component */
59
+ disableAnimation?: boolean;
58
60
  }
59
- export declare const PopoverContainer: ({ children, title, position, open, onOpen, onClose, renderOpenComponent, renderCloseComponent, shouldCoverButton, ariaDescribedBy, openButtonAriaLabel, closeButtonAriaLabel, containerAriaLabel, ...rest }: PopoverContainerProps) => React.JSX.Element;
61
+ export declare const PopoverContainer: ({ children, title, position, open, onOpen, onClose, renderOpenComponent, renderCloseComponent, shouldCoverButton, ariaDescribedBy, openButtonAriaLabel, closeButtonAriaLabel, containerAriaLabel, disableAnimation, ...rest }: PopoverContainerProps) => React.JSX.Element;
60
62
  export default PopoverContainer;
@@ -3,6 +3,7 @@ import React, { useCallback, useEffect, useRef, useState } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { Transition } from "react-transition-group";
5
5
  import { flip, offset } from "@floating-ui/dom";
6
+ import useMediaQuery from "../../hooks/useMediaQuery";
6
7
  import { PopoverContainerWrapperStyle, PopoverContainerHeaderStyle, PopoverContainerContentStyle, PopoverContainerCloseIcon, PopoverContainerTitleStyle, PopoverContainerOpenIcon } from "./popover-container.style";
7
8
  import Icon from "../icon";
8
9
  import Popover from "../../__internal__/popover";
@@ -10,6 +11,8 @@ import createGuid from "../../__internal__/utils/helpers/guid";
10
11
  import { filterStyledSystemPaddingProps } from "../../style/utils";
11
12
  import useClickAwayListener from "../../hooks/__internal__/useClickAwayListener";
12
13
  import Events from "../../__internal__/utils/helpers/events";
14
+ import FocusTrap from "../../__internal__/focus-trap";
15
+ import { ModalContext } from "../modal";
13
16
  export const renderOpen = ({
14
17
  tabIndex,
15
18
  onClick,
@@ -67,6 +70,7 @@ export const PopoverContainer = ({
67
70
  openButtonAriaLabel,
68
71
  closeButtonAriaLabel = "close",
69
72
  containerAriaLabel,
73
+ disableAnimation = false,
70
74
  ...rest
71
75
  }) => {
72
76
  const isControlled = open !== undefined;
@@ -78,19 +82,21 @@ export const PopoverContainer = ({
78
82
  const popoverContentNodeRef = useRef(null);
79
83
  const popoverContainerId = title ? `PopoverContainer_${guid.current}` : undefined;
80
84
  const isOpen = isControlled ? open : isOpenInternal;
81
- useEffect(() => {
82
- if (isOpen && closeButtonRef.current) setTimeout(() => closeButtonRef.current?.focus(), 0);
83
- }, [isOpen]);
85
+ const reduceMotion = !useMediaQuery("screen and (prefers-reduced-motion: no-preference)");
84
86
  const closePopover = useCallback(ev => {
85
- if (!isControlled) setIsOpenInternal(!isOpen);
87
+ if (!isControlled) setIsOpenInternal(false);
86
88
  if (onClose) onClose(ev);
87
- if (isOpen && openButtonRef.current) openButtonRef.current.focus();
89
+ if (isOpen && openButtonRef.current) {
90
+ openButtonRef.current.focus();
91
+ }
88
92
  }, [isControlled, isOpen, onClose]);
89
93
  const handleEscKey = useCallback(ev => {
90
94
  const eventIsFromSelectInput = Events.composedPath(ev).find(element => {
91
95
  return element instanceof HTMLElement && element.getAttribute("data-element") === "input" && element.getAttribute("aria-expanded") === "true";
92
96
  });
93
- if (!eventIsFromSelectInput && Events.isEscKey(ev)) closePopover(ev);
97
+ if (!eventIsFromSelectInput && Events.isEscKey(ev)) {
98
+ closePopover(ev);
99
+ }
94
100
  }, [closePopover]);
95
101
  useEffect(() => {
96
102
  document.addEventListener("keydown", handleEscKey);
@@ -110,7 +116,7 @@ export const PopoverContainer = ({
110
116
  closePopover(e);
111
117
  };
112
118
  const renderOpenComponentProps = {
113
- tabIndex: isOpen ? -1 : 0,
119
+ tabIndex: 0,
114
120
  "aria-expanded": isOpen,
115
121
  "aria-haspopup": "dialog",
116
122
  isOpen,
@@ -132,12 +138,8 @@ export const PopoverContainer = ({
132
138
  if (onClose && isOpen) onClose(e);
133
139
  };
134
140
  const handleClick = useClickAwayListener(handleClickAway, "mousedown");
135
- return /*#__PURE__*/React.createElement(PopoverContainerWrapperStyle, {
136
- "data-component": "popover-container",
137
- onMouseDown: handleClick
138
- }, /*#__PURE__*/React.createElement("div", {
139
- ref: popoverReference
140
- }, renderOpenComponent(renderOpenComponentProps)), /*#__PURE__*/React.createElement(Transition, {
141
+ const [isAnimationComplete, setIsAnimationComplete] = useState(false);
142
+ const popover = /*#__PURE__*/React.createElement(Transition, {
141
143
  in: isOpen,
142
144
  timeout: {
143
145
  exit: 300
@@ -145,10 +147,14 @@ export const PopoverContainer = ({
145
147
  appear: true,
146
148
  mountOnEnter: true,
147
149
  unmountOnExit: true,
148
- nodeRef: popoverContentNodeRef
150
+ nodeRef: popoverContentNodeRef,
151
+ onEntered: shouldCoverButton ? /* istanbul ignore next */() => setIsAnimationComplete(true) : undefined,
152
+ onExiting: shouldCoverButton ? /* istanbul ignore next */() => setIsAnimationComplete(false) : undefined
149
153
  }, state => isOpen && /*#__PURE__*/React.createElement(Popover, _extends({
154
+ disablePortal: true,
150
155
  reference: popoverReference,
151
- placement: position === "right" ? "bottom-start" : "bottom-end"
156
+ placement: position === "right" ? "bottom-start" : "bottom-end",
157
+ popoverStrategy: disableAnimation || reduceMotion ? "fixed" : "absolute"
152
158
  }, shouldCoverButton && {
153
159
  middleware: popoverMiddleware
154
160
  }), /*#__PURE__*/React.createElement(PopoverContainerContentStyle, _extends({
@@ -159,10 +165,25 @@ export const PopoverContainer = ({
159
165
  "aria-label": containerAriaLabel,
160
166
  "aria-describedby": ariaDescribedBy,
161
167
  p: "16px 24px",
162
- ref: popoverContentNodeRef
168
+ ref: popoverContentNodeRef,
169
+ tabIndex: shouldCoverButton ? -1 : undefined,
170
+ disableAnimation: disableAnimation || reduceMotion
163
171
  }, filterStyledSystemPaddingProps(rest)), /*#__PURE__*/React.createElement(PopoverContainerHeaderStyle, null, /*#__PURE__*/React.createElement(PopoverContainerTitleStyle, {
164
172
  id: popoverContainerId,
165
173
  "data-element": "popover-container-title"
166
- }, title), renderCloseComponent(renderCloseComponentProps)), children))));
174
+ }, title), renderCloseComponent(renderCloseComponentProps)), children)));
175
+ return /*#__PURE__*/React.createElement(PopoverContainerWrapperStyle, {
176
+ "data-component": "popover-container",
177
+ onMouseDown: handleClick
178
+ }, /*#__PURE__*/React.createElement("div", {
179
+ ref: popoverReference
180
+ }, renderOpenComponent(renderOpenComponentProps)), shouldCoverButton ? /*#__PURE__*/React.createElement(ModalContext.Provider, {
181
+ value: {
182
+ isAnimationComplete
183
+ }
184
+ }, /*#__PURE__*/React.createElement(FocusTrap, {
185
+ wrapperRef: popoverContentNodeRef,
186
+ isOpen: isOpen
187
+ }, popover)) : popover);
167
188
  };
168
189
  export default PopoverContainer;
@@ -4,6 +4,7 @@ declare const PopoverContainerWrapperStyle: import("styled-components").StyledCo
4
4
  declare const PopoverContainerHeaderStyle: import("styled-components").StyledComponent<"div", any, {}, never>;
5
5
  declare type PopoverContainerContentStyleProps = {
6
6
  animationState?: TransitionStatus;
7
+ disableAnimation?: boolean;
7
8
  };
8
9
  declare const PopoverContainerContentStyle: import("styled-components").StyledComponent<"div", any, PopoverContainerContentStyleProps, never>;
9
10
  declare type AdditionalIconButtonProps = {
@@ -3,6 +3,33 @@ import { padding } from "styled-system";
3
3
  import { baseTheme } from "../../style/themes";
4
4
  import IconButton from "../icon-button";
5
5
  import StyledIcon from "../icon/icon.style";
6
+ function animationToRender({
7
+ animationState,
8
+ disableAnimation
9
+ }) {
10
+ if (disableAnimation) return "opacity: 1;";
11
+ switch (animationState) {
12
+ case "entering":
13
+ return `
14
+ opacity: 0;
15
+ transform: translateY(-8px);
16
+ `;
17
+ case "entered":
18
+ return `
19
+ opacity: 1;
20
+ transform: translateY(0);
21
+ transition: all 0.3s cubic-bezier(0.25, 0.25, 0, 1.5);
22
+ `;
23
+ case "exiting":
24
+ return `
25
+ opacity: 0;
26
+ transform: translateY(-8px);
27
+ transition: all 0.3s cubic-bezier(0.25, 0.25, 0, 1.5);
28
+ `;
29
+ default:
30
+ return "opacity: 0;";
31
+ }
32
+ }
6
33
  const PopoverContainerWrapperStyle = styled.div`
7
34
  position: relative;
8
35
  display: inline-block;
@@ -25,31 +52,11 @@ const PopoverContainerContentStyle = styled.div`
25
52
  theme
26
53
  }) => theme.zIndex.popover};
27
54
 
28
- ${({
29
- animationState
30
- }) => {
31
- switch (animationState) {
32
- case "entering":
33
- return `
34
- opacity: 0;
35
- transform: translateY(-8px);
36
- `;
37
- case "entered":
38
- return `
39
- opacity: 1;
40
- transform: translateY(0);
41
- transition: all 0.3s cubic-bezier(0.25, 0.25, 0, 1.5);
42
- `;
43
- case "exiting":
44
- return `
45
- opacity: 0;
46
- transform: translateY(-8px);
47
- transition: all 0.3s cubic-bezier(0.25, 0.25, 0, 1.5);
48
- `;
49
- default:
50
- return "opacity: 0";
55
+ ${animationToRender}
56
+
57
+ :focus {
58
+ outline: none;
51
59
  }
52
- }}
53
60
  `;
54
61
  const PopoverContainerOpenIcon = styled(IconButton)`
55
62
  ${StyledIcon} {
@@ -12,6 +12,7 @@ export interface PopoverProps {
12
12
  reference: CustomRefObject<HTMLElement>;
13
13
  isOpen?: boolean;
14
14
  animationFrame?: boolean;
15
+ popoverStrategy?: "absolute" | "fixed";
15
16
  }
16
- declare const Popover: ({ children, placement, disablePortal, reference, middleware, disableBackgroundUI, isOpen, animationFrame, }: PopoverProps) => React.JSX.Element;
17
+ declare const Popover: ({ children, placement, disablePortal, reference, middleware, disableBackgroundUI, isOpen, animationFrame, popoverStrategy, }: PopoverProps) => React.JSX.Element;
17
18
  export default Popover;
@@ -26,7 +26,8 @@ const Popover = ({
26
26
  middleware = defaultMiddleware,
27
27
  disableBackgroundUI,
28
28
  isOpen = true,
29
- animationFrame
29
+ animationFrame,
30
+ popoverStrategy = "absolute"
30
31
  }) => {
31
32
  const elementDOM = (0, _react.useRef)(null);
32
33
  const {
@@ -55,7 +56,8 @@ const Popover = ({
55
56
  floating: floatingReference,
56
57
  placement,
57
58
  middleware,
58
- animationFrame
59
+ animationFrame,
60
+ strategy: popoverStrategy
59
61
  });
60
62
  (0, _react.useEffect)(() => {
61
63
  return () => {
@@ -55,6 +55,8 @@ export interface PopoverContainerProps extends PaddingProps {
55
55
  closeButtonAriaLabel?: string;
56
56
  /** Container aria label */
57
57
  containerAriaLabel?: string;
58
+ /** Disables the animation for the component */
59
+ disableAnimation?: boolean;
58
60
  }
59
- export declare const PopoverContainer: ({ children, title, position, open, onOpen, onClose, renderOpenComponent, renderCloseComponent, shouldCoverButton, ariaDescribedBy, openButtonAriaLabel, closeButtonAriaLabel, containerAriaLabel, ...rest }: PopoverContainerProps) => React.JSX.Element;
61
+ export declare const PopoverContainer: ({ children, title, position, open, onOpen, onClose, renderOpenComponent, renderCloseComponent, shouldCoverButton, ariaDescribedBy, openButtonAriaLabel, closeButtonAriaLabel, containerAriaLabel, disableAnimation, ...rest }: PopoverContainerProps) => React.JSX.Element;
60
62
  export default PopoverContainer;
@@ -8,6 +8,7 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _reactTransitionGroup = require("react-transition-group");
10
10
  var _dom = require("@floating-ui/dom");
11
+ var _useMediaQuery = _interopRequireDefault(require("../../hooks/useMediaQuery"));
11
12
  var _popoverContainer = require("./popover-container.style");
12
13
  var _icon = _interopRequireDefault(require("../icon"));
13
14
  var _popover = _interopRequireDefault(require("../../__internal__/popover"));
@@ -15,6 +16,8 @@ var _guid = _interopRequireDefault(require("../../__internal__/utils/helpers/gui
15
16
  var _utils = require("../../style/utils");
16
17
  var _useClickAwayListener = _interopRequireDefault(require("../../hooks/__internal__/useClickAwayListener"));
17
18
  var _events = _interopRequireDefault(require("../../__internal__/utils/helpers/events"));
19
+ var _focusTrap = _interopRequireDefault(require("../../__internal__/focus-trap"));
20
+ var _modal = require("../modal");
18
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
22
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
23
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -78,6 +81,7 @@ const PopoverContainer = ({
78
81
  openButtonAriaLabel,
79
82
  closeButtonAriaLabel = "close",
80
83
  containerAriaLabel,
84
+ disableAnimation = false,
81
85
  ...rest
82
86
  }) => {
83
87
  const isControlled = open !== undefined;
@@ -89,19 +93,21 @@ const PopoverContainer = ({
89
93
  const popoverContentNodeRef = (0, _react.useRef)(null);
90
94
  const popoverContainerId = title ? `PopoverContainer_${guid.current}` : undefined;
91
95
  const isOpen = isControlled ? open : isOpenInternal;
92
- (0, _react.useEffect)(() => {
93
- if (isOpen && closeButtonRef.current) setTimeout(() => closeButtonRef.current?.focus(), 0);
94
- }, [isOpen]);
96
+ const reduceMotion = !(0, _useMediaQuery.default)("screen and (prefers-reduced-motion: no-preference)");
95
97
  const closePopover = (0, _react.useCallback)(ev => {
96
- if (!isControlled) setIsOpenInternal(!isOpen);
98
+ if (!isControlled) setIsOpenInternal(false);
97
99
  if (onClose) onClose(ev);
98
- if (isOpen && openButtonRef.current) openButtonRef.current.focus();
100
+ if (isOpen && openButtonRef.current) {
101
+ openButtonRef.current.focus();
102
+ }
99
103
  }, [isControlled, isOpen, onClose]);
100
104
  const handleEscKey = (0, _react.useCallback)(ev => {
101
105
  const eventIsFromSelectInput = _events.default.composedPath(ev).find(element => {
102
106
  return element instanceof HTMLElement && element.getAttribute("data-element") === "input" && element.getAttribute("aria-expanded") === "true";
103
107
  });
104
- if (!eventIsFromSelectInput && _events.default.isEscKey(ev)) closePopover(ev);
108
+ if (!eventIsFromSelectInput && _events.default.isEscKey(ev)) {
109
+ closePopover(ev);
110
+ }
105
111
  }, [closePopover]);
106
112
  (0, _react.useEffect)(() => {
107
113
  document.addEventListener("keydown", handleEscKey);
@@ -121,7 +127,7 @@ const PopoverContainer = ({
121
127
  closePopover(e);
122
128
  };
123
129
  const renderOpenComponentProps = {
124
- tabIndex: isOpen ? -1 : 0,
130
+ tabIndex: 0,
125
131
  "aria-expanded": isOpen,
126
132
  "aria-haspopup": "dialog",
127
133
  isOpen,
@@ -143,12 +149,8 @@ const PopoverContainer = ({
143
149
  if (onClose && isOpen) onClose(e);
144
150
  };
145
151
  const handleClick = (0, _useClickAwayListener.default)(handleClickAway, "mousedown");
146
- return /*#__PURE__*/_react.default.createElement(_popoverContainer.PopoverContainerWrapperStyle, {
147
- "data-component": "popover-container",
148
- onMouseDown: handleClick
149
- }, /*#__PURE__*/_react.default.createElement("div", {
150
- ref: popoverReference
151
- }, renderOpenComponent(renderOpenComponentProps)), /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, {
152
+ const [isAnimationComplete, setIsAnimationComplete] = (0, _react.useState)(false);
153
+ const popover = /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, {
152
154
  in: isOpen,
153
155
  timeout: {
154
156
  exit: 300
@@ -156,10 +158,14 @@ const PopoverContainer = ({
156
158
  appear: true,
157
159
  mountOnEnter: true,
158
160
  unmountOnExit: true,
159
- nodeRef: popoverContentNodeRef
161
+ nodeRef: popoverContentNodeRef,
162
+ onEntered: shouldCoverButton ? /* istanbul ignore next */() => setIsAnimationComplete(true) : undefined,
163
+ onExiting: shouldCoverButton ? /* istanbul ignore next */() => setIsAnimationComplete(false) : undefined
160
164
  }, state => isOpen && /*#__PURE__*/_react.default.createElement(_popover.default, _extends({
165
+ disablePortal: true,
161
166
  reference: popoverReference,
162
- placement: position === "right" ? "bottom-start" : "bottom-end"
167
+ placement: position === "right" ? "bottom-start" : "bottom-end",
168
+ popoverStrategy: disableAnimation || reduceMotion ? "fixed" : "absolute"
163
169
  }, shouldCoverButton && {
164
170
  middleware: popoverMiddleware
165
171
  }), /*#__PURE__*/_react.default.createElement(_popoverContainer.PopoverContainerContentStyle, _extends({
@@ -170,11 +176,26 @@ const PopoverContainer = ({
170
176
  "aria-label": containerAriaLabel,
171
177
  "aria-describedby": ariaDescribedBy,
172
178
  p: "16px 24px",
173
- ref: popoverContentNodeRef
179
+ ref: popoverContentNodeRef,
180
+ tabIndex: shouldCoverButton ? -1 : undefined,
181
+ disableAnimation: disableAnimation || reduceMotion
174
182
  }, (0, _utils.filterStyledSystemPaddingProps)(rest)), /*#__PURE__*/_react.default.createElement(_popoverContainer.PopoverContainerHeaderStyle, null, /*#__PURE__*/_react.default.createElement(_popoverContainer.PopoverContainerTitleStyle, {
175
183
  id: popoverContainerId,
176
184
  "data-element": "popover-container-title"
177
- }, title), renderCloseComponent(renderCloseComponentProps)), children))));
185
+ }, title), renderCloseComponent(renderCloseComponentProps)), children)));
186
+ return /*#__PURE__*/_react.default.createElement(_popoverContainer.PopoverContainerWrapperStyle, {
187
+ "data-component": "popover-container",
188
+ onMouseDown: handleClick
189
+ }, /*#__PURE__*/_react.default.createElement("div", {
190
+ ref: popoverReference
191
+ }, renderOpenComponent(renderOpenComponentProps)), shouldCoverButton ? /*#__PURE__*/_react.default.createElement(_modal.ModalContext.Provider, {
192
+ value: {
193
+ isAnimationComplete
194
+ }
195
+ }, /*#__PURE__*/_react.default.createElement(_focusTrap.default, {
196
+ wrapperRef: popoverContentNodeRef,
197
+ isOpen: isOpen
198
+ }, popover)) : popover);
178
199
  };
179
200
  exports.PopoverContainer = PopoverContainer;
180
201
  var _default = exports.default = PopoverContainer;
@@ -4,6 +4,7 @@ declare const PopoverContainerWrapperStyle: import("styled-components").StyledCo
4
4
  declare const PopoverContainerHeaderStyle: import("styled-components").StyledComponent<"div", any, {}, never>;
5
5
  declare type PopoverContainerContentStyleProps = {
6
6
  animationState?: TransitionStatus;
7
+ disableAnimation?: boolean;
7
8
  };
8
9
  declare const PopoverContainerContentStyle: import("styled-components").StyledComponent<"div", any, PopoverContainerContentStyleProps, never>;
9
10
  declare type AdditionalIconButtonProps = {
@@ -10,6 +10,33 @@ var _themes = require("../../style/themes");
10
10
  var _iconButton = _interopRequireDefault(require("../icon-button"));
11
11
  var _icon = _interopRequireDefault(require("../icon/icon.style"));
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function animationToRender({
14
+ animationState,
15
+ disableAnimation
16
+ }) {
17
+ if (disableAnimation) return "opacity: 1;";
18
+ switch (animationState) {
19
+ case "entering":
20
+ return `
21
+ opacity: 0;
22
+ transform: translateY(-8px);
23
+ `;
24
+ case "entered":
25
+ return `
26
+ opacity: 1;
27
+ transform: translateY(0);
28
+ transition: all 0.3s cubic-bezier(0.25, 0.25, 0, 1.5);
29
+ `;
30
+ case "exiting":
31
+ return `
32
+ opacity: 0;
33
+ transform: translateY(-8px);
34
+ transition: all 0.3s cubic-bezier(0.25, 0.25, 0, 1.5);
35
+ `;
36
+ default:
37
+ return "opacity: 0;";
38
+ }
39
+ }
13
40
  const PopoverContainerWrapperStyle = exports.PopoverContainerWrapperStyle = _styledComponents.default.div`
14
41
  position: relative;
15
42
  display: inline-block;
@@ -32,31 +59,11 @@ const PopoverContainerContentStyle = exports.PopoverContainerContentStyle = _sty
32
59
  theme
33
60
  }) => theme.zIndex.popover};
34
61
 
35
- ${({
36
- animationState
37
- }) => {
38
- switch (animationState) {
39
- case "entering":
40
- return `
41
- opacity: 0;
42
- transform: translateY(-8px);
43
- `;
44
- case "entered":
45
- return `
46
- opacity: 1;
47
- transform: translateY(0);
48
- transition: all 0.3s cubic-bezier(0.25, 0.25, 0, 1.5);
49
- `;
50
- case "exiting":
51
- return `
52
- opacity: 0;
53
- transform: translateY(-8px);
54
- transition: all 0.3s cubic-bezier(0.25, 0.25, 0, 1.5);
55
- `;
56
- default:
57
- return "opacity: 0";
62
+ ${animationToRender}
63
+
64
+ :focus {
65
+ outline: none;
58
66
  }
59
- }}
60
67
  `;
61
68
  const PopoverContainerOpenIcon = exports.PopoverContainerOpenIcon = (0, _styledComponents.default)(_iconButton.default)`
62
69
  ${_icon.default} {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carbon-react",
3
- "version": "125.0.2",
3
+ "version": "125.2.0",
4
4
  "description": "A library of reusable React components for easily building user interfaces.",
5
5
  "files": [
6
6
  "lib",