UNPKG

@craftercms/studio-ui

Version:

Services, components, models & utils to build CrafterCMS authoring extensions.

110 lines (108 loc) 3.83 kB
/* * Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* * Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === 'function') for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; import React, { createContext, useContext, useMemo } from 'react'; import useStyles from './styles'; import EnhancedDialog from '../EnhancedDialog'; import Suspencified from '../Suspencified/Suspencified'; import { Widget } from '../Widget/Widget'; import useRef from '../../hooks/useUpdateRefs'; import { UNDEFINED } from '../../utils/constants'; const WidgetDialogContext = createContext(UNDEFINED); export function useWidgetDialogContext() { return useContext(WidgetDialogContext); } export function WidgetDialog(props) { const { title, fullHeight = true, widget, onSubmittingAndOrPendingChange, isSubmitting, extraProps } = props, rest = __rest(props, [ 'title', 'fullHeight', 'widget', 'onSubmittingAndOrPendingChange', 'isSubmitting', 'extraProps' ]); const { classes } = useStyles(); const fnRefs = useRef({ onClose: rest.onClose }); const context = useMemo( () => ({ onClose(...args) { var _a; (_a = fnRefs.current.onClose) === null || _a === void 0 ? void 0 : _a.apply(void 0, args); } }), [] ); return React.createElement( EnhancedDialog, Object.assign( { title: title, maxWidth: 'xl', classes: Object.assign({}, fullHeight && { paper: classes.widgetDialogPaper }), isSubmitting: isSubmitting }, rest ), React.createElement( WidgetDialogContext.Provider, { value: context }, React.createElement( 'section', Object.assign({}, fullHeight && { className: classes.widgetDialogBody }), React.createElement( Suspencified, null, React.createElement( Widget, Object.assign({}, widget, { overrideProps: Object.assign( { onSubmittingAndOrPendingChange, isSubmitting, mountMode: 'dialog' }, extraProps ) }) ) ) ) ) ); } export default WidgetDialog;