2021-05-22 22:25:33 +03:00
|
|
|
<script>
|
2021-07-18 19:12:39 +03:00
|
|
|
import { onMount } from 'svelte';
|
|
|
|
|
import hotkeys from 'hotkeys-js';
|
|
|
|
|
import Forum24 from 'carbon-icons-svelte/lib/Forum24';
|
|
|
|
|
import AlignBoxTopLeft24 from 'carbon-icons-svelte/lib/AlignBoxTopLeft24';
|
|
|
|
|
import SendAlt24 from 'carbon-icons-svelte/lib/SendAlt24';
|
|
|
|
|
import ChartPie24 from 'carbon-icons-svelte/lib/ChartPie24';
|
|
|
|
|
import IconButton from '../IconButton/index.svelte';
|
2021-05-29 20:47:46 +03:00
|
|
|
|
2021-07-18 19:12:39 +03:00
|
|
|
import QandA from './components/QandA/index.svelte';
|
|
|
|
|
import LiveChat from './components/LiveChat/index.svelte';
|
|
|
|
|
import Notes from './components/Notes/index.svelte';
|
|
|
|
|
import Poll from './components/Poll/index.svelte';
|
|
|
|
|
import APPS_CONSTANTS from './constants';
|
2021-05-29 20:47:46 +03:00
|
|
|
|
|
|
|
|
let selectedApp;
|
|
|
|
|
|
|
|
|
|
function handleClose() {
|
|
|
|
|
selectedApp = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleAppClick(appName) {
|
|
|
|
|
if (appName === selectedApp) {
|
|
|
|
|
handleClose();
|
|
|
|
|
} else {
|
|
|
|
|
selectedApp = appName;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-05-31 11:28:46 +03:00
|
|
|
|
|
|
|
|
onMount(() => {
|
2021-07-18 19:12:39 +03:00
|
|
|
hotkeys('A+1,A+2,A+3,A+4', function (event, handler) {
|
2021-05-31 11:28:46 +03:00
|
|
|
event.preventDefault();
|
|
|
|
|
switch (handler.key) {
|
2021-07-18 19:12:39 +03:00
|
|
|
case 'A+1':
|
2021-05-31 11:28:46 +03:00
|
|
|
handleAppClick(APPS_CONSTANTS.APPS.LIVE_CHAT);
|
|
|
|
|
break;
|
2021-07-18 19:12:39 +03:00
|
|
|
case 'A+2':
|
2021-05-31 11:28:46 +03:00
|
|
|
handleAppClick(APPS_CONSTANTS.APPS.QANDA);
|
|
|
|
|
break;
|
2021-07-18 19:12:39 +03:00
|
|
|
case 'A+3':
|
2021-05-31 11:28:46 +03:00
|
|
|
handleAppClick(APPS_CONSTANTS.APPS.NOTES);
|
|
|
|
|
break;
|
2021-07-18 19:12:39 +03:00
|
|
|
case 'A+4':
|
2021-05-31 11:28:46 +03:00
|
|
|
handleAppClick(APPS_CONSTANTS.APPS.POLL);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
2021-05-22 22:25:33 +03:00
|
|
|
</script>
|
|
|
|
|
|
2021-05-31 11:28:46 +03:00
|
|
|
<div class="root">
|
|
|
|
|
<div class="apps">
|
|
|
|
|
<IconButton
|
2021-07-18 19:12:39 +03:00
|
|
|
toolTipProps={{ title: 'Live Chat', hotkeys: ['A', '1'] }}
|
2021-05-31 11:28:46 +03:00
|
|
|
value={APPS_CONSTANTS.APPS.LIVE_CHAT}
|
|
|
|
|
onClick={handleAppClick}
|
2021-06-26 21:32:42 +03:00
|
|
|
selected={APPS_CONSTANTS.APPS.LIVE_CHAT === selectedApp}
|
|
|
|
|
>
|
2021-05-31 11:28:46 +03:00
|
|
|
<SendAlt24 class="carbon-icon" />
|
|
|
|
|
</IconButton>
|
|
|
|
|
|
|
|
|
|
<IconButton
|
2021-07-18 19:12:39 +03:00
|
|
|
toolTipProps={{ title: 'QandA', hotkeys: ['A', '2'] }}
|
2021-05-31 11:28:46 +03:00
|
|
|
value={APPS_CONSTANTS.APPS.QANDA}
|
|
|
|
|
onClick={handleAppClick}
|
2021-06-26 21:32:42 +03:00
|
|
|
selected={APPS_CONSTANTS.APPS.QANDA === selectedApp}
|
|
|
|
|
>
|
2021-05-31 11:28:46 +03:00
|
|
|
<Forum24 class="carbon-icon" />
|
|
|
|
|
</IconButton>
|
|
|
|
|
|
|
|
|
|
<IconButton
|
2021-07-18 19:12:39 +03:00
|
|
|
toolTipProps={{ title: 'Notes', hotkeys: ['A', '3'] }}
|
2021-05-31 11:28:46 +03:00
|
|
|
value={APPS_CONSTANTS.APPS.NOTES}
|
|
|
|
|
onClick={handleAppClick}
|
2021-06-26 21:32:42 +03:00
|
|
|
selected={APPS_CONSTANTS.APPS.NOTES === selectedApp}
|
|
|
|
|
>
|
2021-05-31 11:28:46 +03:00
|
|
|
<AlignBoxTopLeft24 class="carbon-icon" />
|
|
|
|
|
</IconButton>
|
|
|
|
|
|
|
|
|
|
<IconButton
|
2021-07-18 19:12:39 +03:00
|
|
|
toolTipProps={{ title: 'Poll', hotkeys: ['A', '4'] }}
|
2021-05-31 11:28:46 +03:00
|
|
|
value={APPS_CONSTANTS.APPS.POLL}
|
|
|
|
|
onClick={handleAppClick}
|
2021-06-26 21:32:42 +03:00
|
|
|
selected={APPS_CONSTANTS.APPS.POLL === selectedApp}
|
|
|
|
|
>
|
2021-05-31 11:28:46 +03:00
|
|
|
<ChartPie24 class="carbon-icon" />
|
|
|
|
|
</IconButton>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{#if !!selectedApp}
|
|
|
|
|
<div class="app">
|
|
|
|
|
{#if selectedApp === APPS_CONSTANTS.APPS.QANDA}
|
|
|
|
|
<QandA {handleClose} />
|
|
|
|
|
{:else if selectedApp === APPS_CONSTANTS.APPS.LIVE_CHAT}
|
|
|
|
|
<LiveChat {handleClose} />
|
|
|
|
|
{:else if selectedApp === APPS_CONSTANTS.APPS.POLL}
|
|
|
|
|
<Poll {handleClose} />
|
|
|
|
|
{:else if selectedApp === APPS_CONSTANTS.APPS.NOTES}
|
|
|
|
|
<Notes {handleClose} />
|
|
|
|
|
{/if}
|
|
|
|
|
</div>
|
|
|
|
|
{/if}
|
|
|
|
|
</div>
|
2021-06-26 21:32:42 +03:00
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
.root {
|
2021-08-18 19:47:02 +03:00
|
|
|
height: 93vh;
|
2021-06-26 21:32:42 +03:00
|
|
|
position: sticky;
|
|
|
|
|
top: 0;
|
|
|
|
|
border-left: 1px solid var(--border-color);
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
z-index: 1;
|
|
|
|
|
|
|
|
|
|
& .apps {
|
|
|
|
|
padding-top: 20px;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
align-items: center;
|
|
|
|
|
width: 60px;
|
|
|
|
|
border-right: 1px solid var(--border-color);
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
& .app {
|
2021-07-05 10:52:20 +00:00
|
|
|
width: 400px;
|
2021-06-26 21:32:42 +03:00
|
|
|
transition: all 1s ease-out;
|
|
|
|
|
position: relative;
|
2021-07-05 10:52:20 +00:00
|
|
|
overflow: auto;
|
2021-06-26 21:32:42 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|