Skip to content
Snippets Groups Projects
Unverified Commit 8dd9e654 authored by Christoph Wurst's avatar Christoph Wurst Committed by GitHub
Browse files

Merge pull request #1081 from nextcloud/enhancement/new-message-component-view

Add a new view and component for the "new message" composer
parents c65e7d6d 56a92427
No related branches found
No related tags found
No related merge requests found
...@@ -2,19 +2,17 @@ ...@@ -2,19 +2,17 @@
<div id="app-content"> <div id="app-content">
<div id="app-content-wrapper"> <div id="app-content-wrapper">
<MessageList/> <MessageList/>
<Message/> <slot/>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import Message from "./Message";
import MessageList from "./MessageList"; import MessageList from "./MessageList";
export default { export default {
name: "FolderContent", name: "FolderContent",
components: { components: {
Message,
MessageList MessageList
} }
} }
......
<template>
<div class="app-content-details">
<Composer :draft="saveDraft"
:send="sendMessage"/>
</div>
</template>
<script>
import Composer from "./Composer";
export default {
name: "NewMessageDetail",
components: {
Composer
},
methods: {
saveDraft () {
console.info('saving new draft');
return Promise.resolve();
},
sendMessage () {
console.info('sending message');
console.info('sending message');
return Promise.resolve();
}
}
}
</script>
import chain from "ramda/es/chain";
export default {
methods: {
buildMenu (accounts) {
const items = chain(account => {
let items = []
if (account.visible !== false) {
items.push({
id: 'account' + account.id,
key: 'account' + account.id,
text: account.name,
bullet: account.bullet // TODO
})
}
return items.concat(account.folders.map(folder => {
let icon = 'folder';
if (folder.specialUse) {
icon = folder.specialUse;
}
return {
id: 'account' + account.id + '_' + folder.id,
key: 'account' + account.id + '_' + folder.id,
text: folder.name,
icon: 'icon-' + icon,
router: {
name: 'folder',
params: {
accountId: account.id,
folderId: folder.id,
}
},
utils: {
counter: folder.unread,
}
}
}))
}, accounts);
return {
id: 'accounts-list',
new: {
'id': 'mail_new_message',
text: t('mail', 'New message'),
icon: 'icon-add',
action: () => {
this.$router.push('/new');
}
},
items: items,
utils: {
counter: 0
}
}
}
}
}
...@@ -2,6 +2,7 @@ import Vue from 'vue' ...@@ -2,6 +2,7 @@ import Vue from 'vue'
import Router from 'vue-router' import Router from 'vue-router'
import Home from './views/Home' import Home from './views/Home'
import NewMessage from './views/NewMessage';
import Setup from './views/Setup'; import Setup from './views/Setup';
Vue.use(Router) Vue.use(Router)
...@@ -15,6 +16,11 @@ export default new Router({ ...@@ -15,6 +16,11 @@ export default new Router({
name: 'home', name: 'home',
component: Home component: Home
}, },
{
path: '/new',
name: 'newMessage',
component: NewMessage
},
{ {
path: '/accounts/:accountId/folders/:folderId', path: '/accounts/:accountId/folders/:folderId',
name: 'folder', name: 'folder',
...@@ -26,4 +32,4 @@ export default new Router({ ...@@ -26,4 +32,4 @@ export default new Router({
component: Setup component: Setup
} }
] ]
}) });
<template> <template>
<div id="content" class="mail"> <div id="content" class="mail">
<app-navigation :menu="menu"> <app-navigation :menu="menu">
<AppSettingsMenu slot="settings-content" /> <AppSettingsMenu slot="settings-content"/>
</app-navigation> </app-navigation>
<FolderContent /> <FolderContent>
<Message/>
</FolderContent>
</div> </div>
</template> </template>
<script> <script>
import chain from "ramda/es/chain";
import AppNavigation from "../components/core/appNavigation"; import AppNavigation from "../components/core/appNavigation";
import AppSettingsMenu from "../components/AppSettingsMenu"; import AppSettingsMenu from "../components/AppSettingsMenu";
import FolderContent from "../components/FolderContent" import FolderContent from "../components/FolderContent";
import Message from "../components/Message";
import SidebarItems from "../mixins/SidebarItems";
export default { export default {
name: 'home', name: 'home',
extends: SidebarItems,
components: { components: {
AppNavigation,
AppSettingsMenu, AppSettingsMenu,
FolderContent, FolderContent,
AppNavigation Message,
}, },
computed: { computed: {
menu () { menu () {
const items = chain(account => { return this.buildMenu(this.$store.state.accounts);
let items = []
if (account.visible !== false) {
items.push({
id: 'account' + account.id,
key: 'account' + account.id,
text: account.name,
bullet: account.bullet // TODO
})
}
return items.concat(account.folders.map(folder => {
let icon = 'folder';
if (folder.specialUse) {
icon = folder.specialUse;
}
return {
id: 'account' + account.id + '_' + folder.id,
key: 'account' + account.id + '_' + folder.id,
text: folder.name,
icon: 'icon-' + icon,
router: {
name: 'folder',
params: {
accountId: account.id,
folderId: folder.id,
}
},
utils: {
counter: folder.unread,
}
}
}))
}, this.$store.state.accounts);
return {
id: 'accounts-list',
new: {
'id': 'mail_new_message',
text: t('mail', 'New message'),
icon: 'icon-add',
action: this.newMessage
},
items: items,
utils: {
counter: 0
}
}
}
},
methods: {
newMessage () {
console.info('New message clicked');
} }
} }
} };
</script> </script>
<template>
<div id="content" class="mail">
<app-navigation :menu="menu">
<AppSettingsMenu slot="settings-content"/>
</app-navigation>
<FolderContent>
<NewMessageDetail/>
</FolderContent>
</div>
</template>
<script>
import AppNavigation from "../components/core/appNavigation";
import AppSettingsMenu from "../components/AppSettingsMenu";
import FolderContent from "../components/FolderContent";
import SidebarItems from "../mixins/SidebarItems";
import NewMessageDetail from "../components/NewMessageDetail";
export default {
name: 'home',
extends: SidebarItems,
components: {
NewMessageDetail,
AppNavigation,
AppSettingsMenu,
FolderContent,
},
computed: {
menu () {
return this.buildMenu(this.$store.state.accounts);
}
}
};
</script>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment