@hitachivantara/uikit-react-core
Version:
UI Kit Core React components.
64 lines (63 loc) • 2.12 kB
JavaScript
import { capitalize } from "../utils/helpers.js";
import { useClasses } from "./Snackbar.styles.js";
import { HvSnackbarContent } from "./SnackbarContent/SnackbarContent.js";
import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
import { forwardRef, useCallback } from "react";
import { jsx } from "react/jsx-runtime";
import Slide from "@mui/material/Slide";
import Snackbar from "@mui/material/Snackbar";
//#region src/Snackbar/Snackbar.tsx
/**
* A Snackbar displays brief messages about app processes and dismisses automatically after a set time.
*
* You can build a Snackbar using:
*
* - `HvSnackbar` – handles positioning, transitions, auto-hide, and more.
* - `HvSnackbarContent` – offers fine-grained control over the content and appearance.
*
*/
var HvSnackbar = forwardRef(function HvSnackbar(props, ref) {
const { classes: classesProp, className, id, title, open = false, onClose, label, anchorOrigin = {
vertical: "top",
horizontal: "right"
}, autoHideDuration = 5e3, variant, showIcon, showClose, customIcon, action, onAction, transitionDuration = 300, transitionDirection = "left", container, offset = 60, snackbarContentProps, size, ...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, {
title,
label,
variant,
customIcon,
showIcon,
showClose,
action,
onAction,
onClose,
size,
...snackbarContentProps
})
});
});
//#endregion
export { HvSnackbar };