aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/settings/workspaces/WorkspacesDashboard.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/settings/workspaces/WorkspacesDashboard.js')
-rw-r--r--src/components/settings/workspaces/WorkspacesDashboard.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/components/settings/workspaces/WorkspacesDashboard.js b/src/components/settings/workspaces/WorkspacesDashboard.js
new file mode 100644
index 000000000..830f32f08
--- /dev/null
+++ b/src/components/settings/workspaces/WorkspacesDashboard.js
@@ -0,0 +1,56 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer, PropTypes as MobxPropTypes } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5
6import Loader from '../../ui/Loader';
7import WorkspaceItem from './WorkspaceItem';
8
9const messages = defineMessages({
10 headline: {
11 id: 'settings.workspaces.headline',
12 defaultMessage: '!!!Your workspaces',
13 },
14 noServicesAdded: {
15 id: 'settings.workspaces.noWorkspacesAdded',
16 defaultMessage: '!!!You haven\'t added any workspaces yet.',
17 },
18});
19
20@observer
21class WorkspacesDashboard extends Component {
22 static propTypes = {
23 workspaces: MobxPropTypes.arrayOrObservableArray.isRequired,
24 isLoading: PropTypes.bool.isRequired,
25 };
26
27 static contextTypes = {
28 intl: intlShape,
29 };
30
31 render() {
32 const { workspaces, isLoading } = this.props;
33 const { intl } = this.context;
34
35 return (
36 <div className="settings__main">
37 <div className="settings__header">
38 <h1>{intl.formatMessage(messages.headline)}</h1>
39 </div>
40 <div className="settings__body">
41 {isLoading ? (
42 <Loader />
43 ) : (
44 <table className="service-table">
45 <tbody>
46 {workspaces.map(workspace => <WorkspaceItem workspace={workspace} />)}
47 </tbody>
48 </table>
49 )}
50 </div>
51 </div>
52 );
53 }
54}
55
56export default WorkspacesDashboard;