UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

87 lines (86 loc) 2.84 kB
"use strict"; 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;