@grafana/ui
Version:
Grafana Components Library
76 lines (69 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var css = require('@emotion/css');
var React = require('react');
var reactTransitionGroup = require('react-transition-group');
var ThemeContext = require('../../themes/ThemeContext.cjs');
function _interopNamespaceCompat(e) {
if (e && typeof e === 'object' && 'default' in e) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n.default = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/_interopNamespaceCompat(React);
;
function FadeTransition(props) {
const { visible, children, duration = 250 } = props;
const styles = ThemeContext.useStyles2(getStyles, duration);
const transitionRef = React.useRef(null);
return /* @__PURE__ */ jsxRuntime.jsx(
reactTransitionGroup.CSSTransition,
{
in: visible,
mountOnEnter: true,
unmountOnExit: true,
timeout: duration,
classNames: styles,
nodeRef: transitionRef,
children: React__namespace.cloneElement(children, { ref: transitionRef })
}
);
}
const getStyles = (theme, duration) => ({
enter: css.css({
label: "enter",
opacity: 0
}),
enterActive: css.css({
label: "enterActive",
opacity: 1,
[theme.transitions.handleMotion("no-preference", "reduce")]: {
transition: `opacity ${duration}ms ease-out`
}
}),
exit: css.css({
label: "exit",
opacity: 1
}),
exitActive: css.css({
label: "exitActive",
opacity: 0,
[theme.transitions.handleMotion("no-preference", "reduce")]: {
transition: `opacity ${duration}ms ease-out`
}
})
});
exports.FadeTransition = FadeTransition;
//# sourceMappingURL=FadeTransition.cjs.map