a JMAP webmail by vue3/typescript.
It was trying to implement a responsive layout/UI likes Outlook Web App.
- demo video 1, UI is adaptive for different screen widths.
- demo video 2, emulate in the phone browser
Now it's at an early stage with a few functions: login(auth), list mailboxes, list threads, read message.
-
Prepare a demo-site (2022 May)Done. visit Demo Site -
Message Read (2022 Jun)
threads UIDone.email context menu: header viewer, full .eml download...Done.attachment downloadDone.html content filter & inline imgDone.patch 1, patch 2try put my patch into https://github.com/linagora/jmap-client-tslist shared mailbox from other accountDone.
-
Message Operation (2022 Jul)
subscribe mailboxDone. 2022.07.12create mailboxDone. 2022.07.13move/delete mailDone. 2022.07.15- addressbook
-
Send Message (2022 Aug)
- compose UI
- reply/forward
- connect submission service
-
Search & Tag (2022 Sep)
- search UI
- server-side sieve
-
Web Push & WebApp state (2022 Sep)
-
More..
It's a vue3 project, and depends vite as the dev/build server.
vite.config.ts define the JMAP backend of your dev environment.
Optional: create .env.local with VITE_DEFAULT_DOMAIN=yourdefaultdomain
. see .env Files
cyrus-imapd 3.4.x is my JMAP backend.
I maintain a patch-branch https://github.com/qyb/jmap-client-ts/tree/vue-jmap-webapp of LINAGORA's jmap-client-ts for this project. And I'll try to merge all changes into the upstream at my best.
Since TypeScript cannot handle type information for .vue
imports, they are shimmed to be a generic Vue component type by default. In most cases this is fine if you don't really care about component prop types outside of templates. However, if you wish to get actual prop types in .vue
imports (for example to get props validation when using manual h(...)
calls), you can enable Volar's Take Over mode by following these steps:
- Run
Extensions: Show Built-in Extensions
from VS Code's command palette, look forTypeScript and JavaScript Language Features
, then right click and selectDisable (Workspace)
. By default, Take Over mode will enable itself if the default TypeScript extension is disabled. - Reload the VS Code window by running
Developer: Reload Window
from the command palette.
You can learn more about Take Over mode here.