@craftercms/studio-ui
Version:
Services, components, models & utils to build CrafterCMS authoring extensions.
110 lines (108 loc) • 3.83 kB
JavaScript
/*
* 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;