From f40a2979bbce51b42a18e53031a965733ea2894b Mon Sep 17 00:00:00 2001 From: Daniel Spaude Date: Fri, 30 Dec 2022 18:36:45 +0100 Subject: [PATCH] mobile optimisations - add mobile mode toggle button to left menu (WIP) --- .../pages/[projectType]/[projectId]/index.vue | 57 ++++++++++++++----- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/packages/nc-gui/pages/[projectType]/[projectId]/index.vue b/packages/nc-gui/pages/[projectType]/[projectId]/index.vue index 674f7c40d4..b0297b8cd6 100644 --- a/packages/nc-gui/pages/[projectType]/[projectId]/index.vue +++ b/packages/nc-gui/pages/[projectType]/[projectId]/index.vue @@ -66,8 +66,8 @@ const dataSourcesState = ref('') const dropdownOpen = ref(false) /** Sidebar ref */ -const sidebar = ref() -const toggleSideBarButton = ref() +const sidebar = ref(null) +const toggleSideBarButton = ref() const email = computed(() => user.value?.email ?? '---') @@ -188,17 +188,45 @@ onBeforeMount(async () => { } }) -const hideSidebarOnClickOrTouchIfMobileMode = (event: Event) => { +const hideSidebarOnClickOrTouchIfMobileMode = (event: MouseEvent | TouchEvent) => { // if (!event.target.matches('.show-sidebar-button')) { // this.sidebarVisible = false // } - console.log('event.target', event.target) - console.log('toggleSideBarButton.value', toggleSideBarButton.value) + // event.stopPropagation() + // event.preventDefault() + + if (!isMobileMode.value) { + return + } + + // alert('isMobileMode') + console.log('inside of hideSidebarOnClickOrTouchIfMobileMode') console.log('isOpen.value', isOpen.value) + console.log('event.target') + console.log(event.target) + console.log('-------') + console.log('toggleSideBarButton.value') + console.log(toggleSideBarButton.value) + console.log('toggleSideBarButton.value?.contains(event.target as Node)') + console.log(toggleSideBarButton.value?.contains(event.target as Node)) console.log('event.target !== toggleSideBarButton.value', event.target !== toggleSideBarButton.value) console.log('------------') + + // console.log('sidebar.value') + // console.log(sidebar.value) + // debugger + + // console.log('sidebar.value?.contains(event.target as Node)') + // console.log(sidebar.value?.contains(event.target as Node)) + + // debugger + if (event.target !== toggleSideBarButton.value && !toggleSideBarButton.value?.contains(event.target as Node)) { + // alert('now') + toggle(false) + } + // debugger // if (isMobileMode.value && isOpen.value && !event.target?.matchesSelector('.show-sidebar-button')) { // if (isMobileMode.value && isOpen.value && event.target !== toggleSideBarButton.value) { @@ -207,15 +235,15 @@ const hideSidebarOnClickOrTouchIfMobileMode = (event: Event) => { } onMounted(() => { - toggle(true) + toggle(false) toggleHasSidebar(true) - document.addEventListener('click', hideSidebarOnClickOrTouchIfMobileMode) - document.addEventListener('touchstart', hideSidebarOnClickOrTouchIfMobileMode) + // TODO: use useEventListener instead of onMounted and onBeforeUnmount + // document.addEventListener('click', hideSidebarOnClickOrTouchIfMobileMode) + // document.addEventListener('touchstart', hideSidebarOnClickOrTouchIfMobileMode) }) - onBeforeUnmount(() => { - document.removeEventListener('click', hideSidebarOnClickOrTouchIfMobileMode) - document.removeEventListener('touchstart', hideSidebarOnClickOrTouchIfMobileMode) + // document.removeEventListener('click', hideSidebarOnClickOrTouchIfMobileMode) + // document.removeEventListener('touchstart', hideSidebarOnClickOrTouchIfMobileMode) }) onBeforeUnmount(reset) @@ -265,9 +293,8 @@ useEventListener(document, 'keydown', async (e: KeyboardEvent) => { const FOO_ON_OPEN_CLICK = () => { console.log('inside of FOO_ON_OPEN_CLICK') - toggle(!isOpen) + // toggle(!isOpen) } -