aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Dominik Guzei <dominik.guzei@gmail.com>2019-04-07 19:50:40 +0200
committerLibravatar Dominik Guzei <dominik.guzei@gmail.com>2019-04-07 19:50:40 +0200
commitb3afb9f45d47ebc352b28eb106b22fffc2f17707 (patch)
tree1cdcd243eba4e797c75747379f2ed8ad8a392cdc /src
parentrefactor workspace table css away from legacy styles (diff)
downloadferdium-app-b3afb9f45d47ebc352b28eb106b22fffc2f17707.tar.gz
ferdium-app-b3afb9f45d47ebc352b28eb106b22fffc2f17707.tar.zst
ferdium-app-b3afb9f45d47ebc352b28eb106b22fffc2f17707.zip
render workspace service list like services + toggle
Diffstat (limited to 'src')
-rw-r--r--src/components/ui/ServiceIcon.js67
-rw-r--r--src/features/workspaces/components/EditWorkspaceForm.js4
-rw-r--r--src/features/workspaces/components/WorkspaceItem.js6
-rw-r--r--src/features/workspaces/components/WorkspaceServiceListItem.js (renamed from src/features/workspaces/components/ServiceListItem.js)6
4 files changed, 76 insertions, 7 deletions
diff --git a/src/components/ui/ServiceIcon.js b/src/components/ui/ServiceIcon.js
new file mode 100644
index 000000000..0b9155a4e
--- /dev/null
+++ b/src/components/ui/ServiceIcon.js
@@ -0,0 +1,67 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss';
5import classnames from 'classnames';
6
7import ServiceModel from '../../models/Service';
8
9const styles = theme => ({
10 root: {
11 height: 'auto',
12 },
13 icon: {
14 width: theme.serviceIcon.width,
15 },
16 isCustomIcon: {
17 width: theme.serviceIcon.isCustom.width,
18 border: theme.serviceIcon.isCustom.border,
19 borderRadius: theme.serviceIcon.isCustom.borderRadius,
20 },
21 isDisabled: {
22 filter: 'grayscale(100%)',
23 opacity: '.5',
24 },
25});
26
27@injectSheet(styles) @observer
28class ServiceIcon extends Component {
29 static propTypes = {
30 classes: PropTypes.object.isRequired,
31 service: PropTypes.instanceOf(ServiceModel).isRequired,
32 className: PropTypes.string,
33 };
34
35 static defaultProps = {
36 className: '',
37 };
38
39 render() {
40 const {
41 classes,
42 className,
43 service,
44 } = this.props;
45
46 return (
47 <div
48 className={classnames([
49 classes.root,
50 className,
51 ])}
52 >
53 <img
54 src={service.icon}
55 className={classnames([
56 classes.icon,
57 service.isEnabled ? null : classes.isDisabled,
58 service.hasCustomIcon ? classes.isCustomIcon : null,
59 ])}
60 alt=""
61 />
62 </div>
63 );
64 }
65}
66
67export default ServiceIcon;
diff --git a/src/features/workspaces/components/EditWorkspaceForm.js b/src/features/workspaces/components/EditWorkspaceForm.js
index e4bf44248..bba4485ff 100644
--- a/src/features/workspaces/components/EditWorkspaceForm.js
+++ b/src/features/workspaces/components/EditWorkspaceForm.js
@@ -10,7 +10,7 @@ import Workspace from '../models/Workspace';
10import Service from '../../../models/Service'; 10import Service from '../../../models/Service';
11import Form from '../../../lib/Form'; 11import Form from '../../../lib/Form';
12import { required } from '../../../helpers/validation-helpers'; 12import { required } from '../../../helpers/validation-helpers';
13import ServiceListItem from './ServiceListItem'; 13import WorkspaceServiceListItem from './WorkspaceServiceListItem';
14import Request from '../../../stores/lib/Request'; 14import Request from '../../../stores/lib/Request';
15import { gaEvent } from '../../../lib/analytics'; 15import { gaEvent } from '../../../lib/analytics';
16import { GA_CATEGORY_WORKSPACES } from '../index'; 16import { GA_CATEGORY_WORKSPACES } from '../index';
@@ -151,7 +151,7 @@ class EditWorkspaceForm extends Component {
151 <h2>{intl.formatMessage(messages.servicesInWorkspaceHeadline)}</h2> 151 <h2>{intl.formatMessage(messages.servicesInWorkspaceHeadline)}</h2>
152 <div className={classes.serviceList}> 152 <div className={classes.serviceList}>
153 {services.map(s => ( 153 {services.map(s => (
154 <ServiceListItem 154 <WorkspaceServiceListItem
155 key={s.id} 155 key={s.id}
156 service={s} 156 service={s}
157 isInWorkspace={workspaceServices.includes(s.id)} 157 isInWorkspace={workspaceServices.includes(s.id)}
diff --git a/src/features/workspaces/components/WorkspaceItem.js b/src/features/workspaces/components/WorkspaceItem.js
index a950a981a..cc4b1a3ba 100644
--- a/src/features/workspaces/components/WorkspaceItem.js
+++ b/src/features/workspaces/components/WorkspaceItem.js
@@ -8,10 +8,10 @@ import Workspace from '../models/Workspace';
8 8
9const styles = theme => ({ 9const styles = theme => ({
10 row: { 10 row: {
11 height: 57, 11 height: theme.workspaces.settings.listItems.height,
12 borderBottom: `1px solid ${theme.workspaceSettings.listItemBorderColor}`, 12 borderBottom: `1px solid ${theme.workspaces.settings.listItems.borderColor}`,
13 '&:hover': { 13 '&:hover': {
14 background: theme.workspaceSettings.listItemHoverBgColor, 14 background: theme.workspaces.settings.listItems.hoverBgColor,
15 }, 15 },
16 }, 16 },
17 columnName: {}, 17 columnName: {},
diff --git a/src/features/workspaces/components/ServiceListItem.js b/src/features/workspaces/components/WorkspaceServiceListItem.js
index 146cc5a36..7b516d056 100644
--- a/src/features/workspaces/components/ServiceListItem.js
+++ b/src/features/workspaces/components/WorkspaceServiceListItem.js
@@ -5,10 +5,11 @@ import injectSheet from 'react-jss';
5import { Toggle } from '@meetfranz/forms'; 5import { Toggle } from '@meetfranz/forms';
6 6
7import Service from '../../../models/Service'; 7import Service from '../../../models/Service';
8import ServiceIcon from '../../../components/ui/ServiceIcon';
8 9
9const styles = () => ({ 10const styles = theme => ({
10 service: { 11 service: {
11 height: 'auto', 12 height: theme.workspaceSettings.listItemHeight,
12 display: 'flex', 13 display: 'flex',
13 }, 14 },
14 name: { 15 name: {
@@ -35,6 +36,7 @@ class ServiceListItem extends Component {
35 36
36 return ( 37 return (
37 <div className={classes.service}> 38 <div className={classes.service}>
39 <ServiceIcon service={service} />
38 <Toggle 40 <Toggle
39 checked={isInWorkspace} 41 checked={isInWorkspace}
40 onChange={onToggle} 42 onChange={onToggle}