@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
92 lines (91 loc) • 2.28 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import { forwardRef, useCallback } from "react";
import Slide from "@mui/material/Slide";
import Snackbar from "@mui/material/Snackbar";
import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
import { setId } from "../utils/setId.js";
import { useClasses } from "./Banner.styles.js";
import { staticClasses } from "./Banner.styles.js";
import { HvBannerContent } from "./BannerContent/BannerContent.js";
const HvBanner = forwardRef(function HvBanner2(props, ref) {
const {
id,
classes: classesProp,
className,
title,
open,
onClose,
anchorOrigin = "top",
variant,
transitionDuration = 300,
transitionDirection = "down",
container,
showIcon,
customIcon,
actions,
actionsCallback,
// TODO - remove in v6
onAction,
actionsPosition,
label,
offset = 60,
bannerContentProps,
...others
} = useDefaultProps("HvBanner", props);
const { classes, cx } = useClasses(classesProp);
const anchorOriginBanner = {
horizontal: "center",
vertical: anchorOrigin
};
const SlideTransition = useCallback(
(properties) => /* @__PURE__ */ jsx(
Slide,
{
...properties,
container,
direction: transitionDirection
}
),
[container, transitionDirection]
);
return /* @__PURE__ */ jsx(
Snackbar,
{
ref,
id,
open,
className,
classes: {
root: cx(classes.root, { [classes.rootClosed]: !open }),
anchorOriginTopCenter: classes.anchorOriginTopCenter,
anchorOriginBottomCenter: classes.anchorOriginBottomCenter
},
style: { [anchorOrigin]: offset },
anchorOrigin: anchorOriginBanner,
TransitionComponent: SlideTransition,
transitionDuration,
...others,
children: /* @__PURE__ */ jsx(
HvBannerContent,
{
id: setId(id, "content"),
title,
variant,
customIcon,
showIcon,
actions,
actionsCallback,
onAction,
actionsPosition,
onClose,
...bannerContentProps,
children: label
}
)
}
);
});
export {
HvBanner,
staticClasses as bannerClasses
};