@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
109 lines (108 loc) • 3.19 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const React = require("react");
const notistack = require("notistack");
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
const SnackbarProvider_styles = require("./SnackbarProvider.styles.cjs");
const SnackbarContent = require("../Snackbar/SnackbarContent/SnackbarContent.cjs");
const HvNotistackSnackMessage = React.forwardRef(function HvNotistackSnackMessage2(props, ref) {
const { id, message, variant = "success", snackbarContentProps } = props;
return /* @__PURE__ */ jsxRuntime.jsx(notistack.SnackbarContent, { ref, children: /* @__PURE__ */ jsxRuntime.jsx(
SnackbarContent.HvSnackbarContent,
{
id,
variant,
showIcon: true,
label: message,
role: "none",
...snackbarContentProps
}
) });
});
const useHvSnackbar = () => {
const snackbarContext = notistack.useSnackbar();
if (!snackbarContext) {
throw new Error("useHvSnackbar must be used within an HvSnackbarProvider");
}
const { enqueueSnackbar: enqueueNotistackSnackbar, closeSnackbar } = snackbarContext;
const enqueueSnackbar = React.useCallback(
(message, options = {}) => {
const {
id,
variant = "success",
snackbarContentProps,
className,
...otherOptions
} = options;
return enqueueNotistackSnackbar(
/* @__PURE__ */ jsxRuntime.jsx(
HvNotistackSnackMessage,
{
id,
message,
variant,
snackbarContentProps
}
),
{ ...otherOptions, className }
);
},
[enqueueNotistackSnackbar]
);
return React.useMemo(
() => ({
enqueueSnackbar,
closeSnackbar
}),
[enqueueSnackbar, closeSnackbar]
);
};
const HvSnackbarProvider = (props) => {
const {
children,
notistackClassesOverride,
maxSnack = 5,
autoHideDuration = 5e3,
anchorOrigin = {
vertical: "top",
horizontal: "right"
},
classes: classesProp,
className,
container,
...others
} = uikitReactUtils.useDefaultProps("HvSnackbarProvider", props);
const { classes, css, cx } = SnackbarProvider_styles.useClasses(classesProp);
const { containerRoot, ...otherNotistackClasses } = notistackClassesOverride || {};
const notistackClasses = {
containerRoot: cx(
css({
pointerEvents: "all",
"& > div > div": {
// Overrides notistack extra padding
padding: "0 !important",
transition: "all 0s ease 0s !important"
}
}),
containerRoot
),
...otherNotistackClasses
};
return /* @__PURE__ */ jsxRuntime.jsx(
notistack.SnackbarProvider,
{
classes: notistackClasses,
maxSnack,
autoHideDuration,
anchorOrigin,
className: cx(classes.snackItemRoot, className),
domRoot: container,
...others,
children
}
);
};
exports.snackbarProviderClasses = SnackbarProvider_styles.staticClasses;
exports.HvSnackbarProvider = HvSnackbarProvider;
exports.useHvSnackbar = useHvSnackbar;