@craftercms/studio-ui
Version:
Services, components, models & utils to build CrafterCMS authoring extensions.
92 lines (90 loc) • 3.19 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/>.
*/
import { makeStyles } from 'tss-react/mui';
import { useLogicResource } from '../../hooks/useLogicResource';
import { SuspenseWithEmptyState } from '../Suspencified/Suspencified';
import { FormattedMessage } from 'react-intl';
import { WorkflowCancellationDialogUI } from './WorkflowCancellationDialogUI';
import React from 'react';
const useStyles = makeStyles()((theme) => ({
suspense: {
minHeight: '442px',
margin: 0,
justifyContent: 'center'
},
filesList: {
height: '100%',
border: `1px solid ${theme.palette.divider}`,
background: theme.palette.background.paper,
padding: 0
}
}));
export function WorkflowCancellationDialogContainer(props) {
const { items, onClose, onContinue } = props;
const { classes } = useStyles();
const resource = useLogicResource(items, {
shouldResolve: (source) => Boolean(source),
shouldReject: (source) => false,
shouldRenew: (source, resource) => resource.complete,
resultSelector: (source) => source,
errorSelector: (source) => null
});
const onContinueClick = (e) => {
onClose(e, null);
onContinue();
};
return React.createElement(
SuspenseWithEmptyState,
{
resource: resource,
withEmptyStateProps: {
emptyStateProps: {
title: React.createElement(FormattedMessage, {
id: 'workflowCancellationDialog.noAffectedFiles',
defaultMessage: 'There are no affected files'
})
}
},
loadingStateProps: {
classes: {
root: classes.suspense
}
}
},
React.createElement(WorkflowCancellationDialogUI, {
resource: resource,
onCloseButtonClick: (e) => onClose(e, null),
onContinue: onContinueClick,
classes: classes
})
);
}
export default WorkflowCancellationDialogContainer;