This repository has been archived on 2022-08-14. You can view files and clone it, but cannot push or open issues or pull requests.
outline/app/components/Modals/Modals.js

67 lines
2.1 KiB
JavaScript
Raw Normal View History

2017-09-10 05:12:59 +00:00
// @flow
2018-05-05 23:16:08 +00:00
import * as React from 'react';
2017-09-10 05:12:59 +00:00
import { observer } from 'mobx-react';
2017-09-11 05:27:23 +00:00
import BaseModal from 'components/Modal';
2017-09-10 05:12:59 +00:00
import UiStore from 'stores/UiStore';
import CollectionNew from 'scenes/CollectionNew';
import CollectionEdit from 'scenes/CollectionEdit';
2017-09-10 05:51:22 +00:00
import CollectionDelete from 'scenes/CollectionDelete';
import CollectionExport from 'scenes/CollectionExport';
2017-09-10 05:51:22 +00:00
import DocumentDelete from 'scenes/DocumentDelete';
2018-05-17 06:07:33 +00:00
import DocumentShare from 'scenes/DocumentShare';
2017-09-10 05:12:59 +00:00
import KeyboardShortcuts from 'scenes/KeyboardShortcuts';
2018-05-05 23:16:08 +00:00
type Props = {
ui: UiStore,
};
2017-11-10 22:14:30 +00:00
@observer
2018-05-05 23:16:08 +00:00
class Modals extends React.Component<Props> {
2017-09-10 05:12:59 +00:00
handleClose = () => {
this.props.ui.clearActiveModal();
};
render() {
const { activeModalName, activeModalProps } = this.props.ui;
2017-09-11 05:27:23 +00:00
const Modal = ({ name, children, ...rest }) => {
return (
<BaseModal
isOpen={activeModalName === name}
2017-09-10 05:12:59 +00:00
onRequestClose={this.handleClose}
2017-09-11 05:27:23 +00:00
{...rest}
2017-09-10 05:12:59 +00:00
>
2017-09-11 05:27:23 +00:00
{React.cloneElement(children, activeModalProps)}
</BaseModal>
);
};
return (
<span>
<Modal name="collection-new" title="Create a collection">
<CollectionNew onSubmit={this.handleClose} />
2017-09-10 05:12:59 +00:00
</Modal>
2017-09-11 05:27:23 +00:00
<Modal name="collection-edit" title="Edit collection">
<CollectionEdit onSubmit={this.handleClose} />
2017-09-10 05:12:59 +00:00
</Modal>
2017-09-11 05:27:23 +00:00
<Modal name="collection-delete" title="Delete collection">
<CollectionDelete onSubmit={this.handleClose} />
2017-09-10 05:51:22 +00:00
</Modal>
<Modal name="collection-export" title="Export collection">
<CollectionExport onSubmit={this.handleClose} />
</Modal>
2018-05-17 06:07:33 +00:00
<Modal name="document-share" title="Share document">
2018-05-26 17:38:44 +00:00
<DocumentShare onSubmit={this.handleClose} />
2018-05-17 06:07:33 +00:00
</Modal>
2017-09-11 05:27:23 +00:00
<Modal name="document-delete" title="Delete document">
<DocumentDelete onSubmit={this.handleClose} />
2017-09-10 05:51:22 +00:00
</Modal>
2017-09-11 05:27:23 +00:00
<Modal name="keyboard-shortcuts" title="Keyboard shortcuts">
2017-09-10 05:12:59 +00:00
<KeyboardShortcuts />
</Modal>
</span>
);
}
}
export default Modals;