aboutsummaryrefslogtreecommitdiffstats
path: root/src/components
diff options
context:
space:
mode:
authorLibravatar Dominik Guzei <dominik.guzei@gmail.com>2019-01-14 17:11:27 +0100
committerLibravatar Dominik Guzei <dominik.guzei@gmail.com>2019-02-12 13:39:03 +0100
commit84755ddf8b8fb015ee2bfd70e9c4aa50d256f9d0 (patch)
treee680bd3e1aab13fa1e413ca54f2f6d7a27c35b20 /src/components
parentadd workspaces menu item in settings dialog (diff)
downloadferdium-app-84755ddf8b8fb015ee2bfd70e9c4aa50d256f9d0.tar.gz
ferdium-app-84755ddf8b8fb015ee2bfd70e9c4aa50d256f9d0.tar.zst
ferdium-app-84755ddf8b8fb015ee2bfd70e9c4aa50d256f9d0.zip
basic setup of workspaces settings screen
Diffstat (limited to 'src/components')
-rw-r--r--src/components/settings/workspaces/WorkspaceItem.js41
-rw-r--r--src/components/settings/workspaces/WorkspacesDashboard.js56
2 files changed, 97 insertions, 0 deletions
diff --git a/src/components/settings/workspaces/WorkspaceItem.js b/src/components/settings/workspaces/WorkspaceItem.js
new file mode 100644
index 000000000..82a578ebd
--- /dev/null
+++ b/src/components/settings/workspaces/WorkspaceItem.js
@@ -0,0 +1,41 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { defineMessages, intlShape } from 'react-intl';
4import { observer } from 'mobx-react';
5import classnames from 'classnames';
6import Workspace from '../../../models/Workspace';
7
8// const messages = defineMessages({});
9
10@observer
11class WorkspaceItem extends Component {
12 static propTypes = {
13 workspace: PropTypes.instanceOf(Workspace).isRequired,
14 };
15
16 static contextTypes = {
17 intl: intlShape,
18 };
19
20 render() {
21 const { workspace } = this.props;
22 // const { intl } = this.context;
23
24 return (
25 <tr
26 className={classnames({
27 'service-table__row': true,
28 })}
29 >
30 <td
31 className="service-table__column-name"
32 onClick={() => console.log('go to workspace', workspace.name)}
33 >
34 {workspace.name}
35 </td>
36 </tr>
37 );
38 }
39}
40
41export default WorkspaceItem;
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;