From e46b560ead02ab5d9df8edbb997c56b835aa21d4 Mon Sep 17 00:00:00 2001 From: shpuld Date: Sun, 23 Dec 2018 19:50:19 +0200 Subject: move closing logic to drawer, add swipe to close --- src/components/side_drawer/side_drawer.js | 32 ++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'src/components/side_drawer/side_drawer.js') diff --git a/src/components/side_drawer/side_drawer.js b/src/components/side_drawer/side_drawer.js index 6541077b..2064dfa5 100644 --- a/src/components/side_drawer/side_drawer.js +++ b/src/components/side_drawer/side_drawer.js @@ -1,23 +1,41 @@ +import UserCardContent from '../user_card_content/user_card_content.vue' + +const deltaX = (oldX, newX) => newX - oldX + +const touchEventX = e => e.touches[0].screenX + const SideDrawer = { - props: [ 'activatePanel', 'closed', 'clickoutside', 'logout' ], + props: [ 'activatePanel', 'logout' ], + data: () => ({ + closed: true, + touchX: 0 + }), + components: { UserCardContent }, computed: { currentUser () { return this.$store.state.users.currentUser } }, methods: { + toggleDrawer () { + this.closed = !this.closed + }, gotoPanel (panel) { this.activatePanel(panel) - this.clickoutside && this.clickoutside() - }, - clickedOutside () { - if (typeof this.clickoutside === 'function') { - this.clickoutside() - } + this.toggleDrawer() }, doLogout () { this.logout() this.gotoPanel('timeline') + }, + touchStart (e) { + this.touchX = touchEventX(e) + }, + touchMove (e) { + const delta = deltaX(this.touchX, touchEventX(e)) + if (delta < -30) { + this.toggleDrawer() + } } } } -- cgit v1.2.3-70-g09d2