1
0
mirror of https://github.com/axllent/mailpit.git synced 2025-06-15 00:05:15 +02:00

UI: Rewrite web UI, add URL routing and components

See #156
This commit is contained in:
Ralph Slooten
2023-09-22 15:06:03 +12:00
parent 8f0549c596
commit 6a4e5fb03c
37 changed files with 3254 additions and 540 deletions

View File

@ -1,16 +1,14 @@
<script>
import CommonMixins from '../mixins/CommonMixins.js'
import MessagesMixins from '../mixins/MessagesMixins.js'
import AboutMailpit from "../components/AboutMailpit.vue"
import AboutMailpit from '../components/AboutMailpit.vue'
import AjaxLoader from '../components/AjaxLoader.vue'
import ListMessages from "../components/ListMessages.vue"
import MailboxActions from "../components/MailboxActions.vue"
import MailboxTags from "../components/MailboxTags.vue"
import Pagination from "../components/Pagination.vue"
import SearchForm from "../components/SearchForm.vue"
import { mailbox } from "../stores/mailbox"
import CommonMixins from '../mixins/CommonMixins'
import ListMessages from '../components/ListMessages.vue'
import MessagesMixins from '../mixins/MessagesMixins'
import NavMailbox from '../components/NavMailbox.vue'
import NavTags from '../components/NavTags.vue'
import Pagination from '../components/Pagination.vue'
import SearchForm from '../components/SearchForm.vue'
import { mailbox } from '../stores/mailbox'
export default {
mixins: [CommonMixins, MessagesMixins],
@ -19,8 +17,8 @@ export default {
AboutMailpit,
AjaxLoader,
ListMessages,
MailboxActions,
MailboxTags,
NavMailbox,
NavTags,
Pagination,
SearchForm,
},
@ -31,54 +29,66 @@ export default {
}
},
watch: {
// 'mailbox.total'(v, old) {
// console.log(mailbox.total)
// }
},
mounted() {
this.mailbox.searching = false
this.apiURI = this.$router.resolve(`/api/v1/messages`).href
mailbox.searching = false
this.apiURI = this.resolve(`/api/v1/messages`)
this.loadMessages()
},
methods: {
}
}
</script>
<template>
<div class="navbar navbar-expand-lg navbar-dark row flex-shrink-0 bg-primary text-white">
<div class="col-lg-2 col-md-3 d-none d-md-block">
<RouterLink to="/" class="navbar-brand text-white" @click="reloadMailbox">
<img :src="baseURL + 'mailpit.svg'" alt="Mailpit">
<span class="ms-2">Mailpit</span>
<div class="col-xl-2 col-md-3 col-auto pe-0">
<RouterLink to="/" class="navbar-brand text-white me-0" @click="reloadMailbox">
<img :src="resolve('/mailpit.svg')" alt="Mailpit">
<span class="ms-2 d-none d-sm-inline">Mailpit</span>
</RouterLink>
</div>
<div class="col col-md-9 col-lg-5">
<div class="col col-md-4k col-lg-5 col-xl-6">
<SearchForm />
</div>
<div class="col-12 col-lg-5 text-end mt-2 mt-lg-0">
<Pagination @loadMessages="loadMessages" :total="mailbox.count" />
<div class="col-12 col-md-auto col-lg-4 col-xl-4 text-end mt-2 mt-md-0">
<div class="float-start d-md-none">
<button class="btn btn-outline-light me-2" type="button" data-bs-toggle="offcanvas"
data-bs-target="#offcanvas" aria-controls="offcanvas">
<i class="bi bi-list"></i>
</button>
</div>
<Pagination @loadMessages="loadMessages" :total="mailbox.total" />
</div>
</div>
<div class="offcanvas-md offcanvas-start d-md-none" data-bs-scroll="true" tabindex="-1" id="offcanvas"
aria-labelledby="offcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasLabel">Mailpit</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#offcanvas"
aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<NavMailbox @loadMessages="loadMessages" />
<NavTags />
<AboutMailpit />
</div>
</div>
<div class="row flex-fill" style="min-height:0">
<div class="d-none d-md-block col-lg-2 col-md-3 mh-100 position-relative"
<div class="d-none d-md-block col-xl-2 col-md-3 mh-100 position-relative"
style="overflow-y: auto; overflow-x: hidden;">
<MailboxActions @loadMessages="loadMessages" />
<MailboxTags />
<NavMailbox @loadMessages="loadMessages" />
<NavTags />
<AboutMailpit />
</div>
<div class="col-lg-10 col-md-9 mh-100 ps-0 ps-md-2 pe-0">
<div class="col-xl-10 col-md-9 mh-100 ps-0 ps-md-2 pe-0">
<div class="mh-100" style="overflow-y: auto;" id="message-page">
<ListMessages />
</div>
</div>
</div>
<NavMailbox @loadMessages="loadMessages" modals />
<AboutMailpit modals />
<AjaxLoader :loading="loading" />
</template>