@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
94 lines (93 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 { capitalize } from "../utils/helpers.js";
import { setId } from "../utils/setId.js";
import { useClasses } from "./Snackbar.styles.js";
import { staticClasses } from "./Snackbar.styles.js";
import { HvSnackbarContent } from "./SnackbarContent/SnackbarContent.js";
const HvSnackbar = forwardRef(function HvSnackbar2(props, ref) {
const {
classes: classesProp,
className,
id,
title,
open = false,
onClose,
label,
anchorOrigin = { vertical: "top", horizontal: "right" },
autoHideDuration = 5e3,
variant,
showIcon,
customIcon,
action,
actionCallback,
// TODO - remove in v6
onAction,
transitionDuration = 300,
transitionDirection = "left",
container,
offset = 60,
snackbarContentProps,
...others
} = useDefaultProps("HvSnackbar", props);
const { classes } = useClasses(classesProp);
const anchorOriginOffset = {
anchorOriginTop: {
top: `${offset}px`
},
anchorOriginBottom: {
bottom: `${offset}px`
}
};
const SlideTransition = useCallback(
(properties) => /* @__PURE__ */ jsx(
Slide,
{
...properties,
container,
direction: transitionDirection
}
),
[container, transitionDirection]
);
return /* @__PURE__ */ jsx(
Snackbar,
{
ref,
style: anchorOriginOffset[`anchorOrigin${capitalize(anchorOrigin.vertical)}`],
classes,
className,
id,
anchorOrigin,
open,
onClose,
autoHideDuration,
transitionDuration,
TransitionComponent: SlideTransition,
...others,
children: /* @__PURE__ */ jsx(
HvSnackbarContent,
{
id: setId(id, "content"),
title,
label,
variant,
customIcon,
showIcon,
action,
actionCallback,
onAction,
onClose,
...snackbarContentProps
}
)
}
);
});
export {
HvSnackbar,
staticClasses as snackbarClasses
};