aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/services/tabs/TabBarSortableList.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/services/tabs/TabBarSortableList.tsx')
-rw-r--r--src/components/services/tabs/TabBarSortableList.tsx79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/components/services/tabs/TabBarSortableList.tsx b/src/components/services/tabs/TabBarSortableList.tsx
new file mode 100644
index 000000000..e04f6268d
--- /dev/null
+++ b/src/components/services/tabs/TabBarSortableList.tsx
@@ -0,0 +1,79 @@
1import { Component } from 'react';
2import { observer } from 'mobx-react';
3import { SortableContainer } from 'react-sortable-hoc';
4
5import TabItem from './TabItem';
6import Service from '../../../models/Service';
7
8interface IProps {
9 showMessageBadgeWhenMutedSetting: boolean;
10 showServiceNameSetting: boolean;
11 showMessageBadgesEvenWhenMuted: boolean;
12 services: Service[];
13
14 setActive: (args: { serviceId: string }) => void;
15 openSettings: (args: { path: string }) => void;
16 reload: (args: { serviceId: string }) => void;
17 toggleNotifications: (args: { serviceId: string }) => void;
18 toggleAudio: (args: { serviceId: string }) => void;
19 toggleDarkMode: (args: { serviceId: string }) => void;
20 deleteService: (args: { serviceId: string }) => void;
21 disableService: (args: { serviceId: string }) => void;
22 enableService: (args: { serviceId: string }) => void;
23 hibernateService: (args: { serviceId: string }) => void;
24 wakeUpService: (args: { serviceId: string }) => void;
25}
26
27@observer
28class TabBarSortableList extends Component<IProps> {
29 render() {
30 const {
31 services,
32 setActive,
33 reload,
34 toggleNotifications,
35 toggleAudio,
36 toggleDarkMode,
37 deleteService,
38 disableService,
39 enableService,
40 hibernateService,
41 wakeUpService,
42 openSettings,
43 showMessageBadgeWhenMutedSetting,
44 showServiceNameSetting,
45 showMessageBadgesEvenWhenMuted,
46 } = this.props;
47
48 return (
49 <ul className="tabs">
50 {services.map((service, index) => (
51 <TabItem
52 key={service.id}
53 clickHandler={() => setActive({ serviceId: service.id })}
54 service={service}
55 index={index}
56 shortcutIndex={index + 1}
57 reload={() => reload({ serviceId: service.id })}
58 toggleNotifications={() =>
59 toggleNotifications({ serviceId: service.id })
60 }
61 toggleAudio={() => toggleAudio({ serviceId: service.id })}
62 toggleDarkMode={() => toggleDarkMode({ serviceId: service.id })}
63 deleteService={() => deleteService({ serviceId: service.id })}
64 disableService={() => disableService({ serviceId: service.id })}
65 enableService={() => enableService({ serviceId: service.id })}
66 hibernateService={() => hibernateService({ serviceId: service.id })}
67 wakeUpService={() => wakeUpService({ serviceId: service.id })}
68 openSettings={openSettings}
69 showMessageBadgeWhenMutedSetting={showMessageBadgeWhenMutedSetting}
70 showMessageBadgesEvenWhenMuted={showMessageBadgesEvenWhenMuted}
71 showServiceNameSetting={showServiceNameSetting}
72 />
73 ))}
74 </ul>
75 );
76 }
77}
78
79export default SortableContainer(TabBarSortableList);