@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
87 lines (86 loc) • 2.84 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const React = require("react");
const MuiDialog = require("@mui/material/Dialog");
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
const icons = require("../icons.cjs");
const document$1 = require("../utils/document.cjs");
const setId = require("../utils/setId.cjs");
const context = require("./context.cjs");
const Dialog_styles = require("./Dialog.styles.cjs");
const IconButton = require("../IconButton/IconButton.cjs");
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
const MuiDialog__default = /* @__PURE__ */ _interopDefault(MuiDialog);
const HvDialog = (props) => {
const {
variant,
classes: classesProp,
className,
id,
children,
open = false,
onClose,
firstFocusable,
buttonTitle = "Close",
fullHeight,
fullscreen: fullScreen = false,
// TODO: rename to `fullScreen` in v6
disableBackdropClick = false,
...others
} = uikitReactUtils.useDefaultProps("HvDialog", props);
const { classes, cx } = Dialog_styles.useClasses(classesProp);
const { rootId } = uikitReactUtils.useTheme();
const measuredRef = React.useCallback(() => {
if (!firstFocusable) return;
const element = document.getElementById(firstFocusable);
element?.focus();
}, [firstFocusable]);
const contextValue = React.useMemo(() => ({ fullScreen }), [fullScreen]);
return /* @__PURE__ */ jsxRuntime.jsxs(
MuiDialog__default.default,
{
container: document$1.getElementById(rootId),
className,
classes: {
root: classes.root,
paper: cx(classes.paper, classes[variant], {
[classes.fullHeight]: fullHeight,
[classes.statusBar]: !!variant,
[classes.fullscreen]: fullScreen
})
},
id,
ref: measuredRef,
open,
fullScreen,
onClose: (event, reason) => {
if (disableBackdropClick) return;
onClose?.(event, reason);
},
slotProps: {
backdrop: {
classes: {
root: classes.background
}
}
},
...others,
children: [
/* @__PURE__ */ jsxRuntime.jsx(
IconButton.HvIconButton,
{
title: buttonTitle,
id: setId.setId(id, "close"),
className: classes.closeButton,
onClick: (event) => onClose?.(event, void 0),
children: /* @__PURE__ */ jsxRuntime.jsx(icons.HvIcon, { name: "Close", compact: true })
}
),
/* @__PURE__ */ jsxRuntime.jsx(context.DialogContext.Provider, { value: contextValue, children })
]
}
);
};
exports.dialogClasses = Dialog_styles.staticClasses;
exports.HvDialog = HvDialog;