From: PhiTux Date: Sun, 27 Apr 2025 17:54:06 +0000 (+0200) Subject: bugfix: close sidenav when switching pages X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=24acabd9c973fe68dc835f915deac48dc6c431fb;p=DailyTxT.git bugfix: close sidenav when switching pages --- diff --git a/frontend/src/lib/Datepicker.svelte b/frontend/src/lib/Datepicker.svelte index c6a10f6..90d4a7d 100644 --- a/frontend/src/lib/Datepicker.svelte +++ b/frontend/src/lib/Datepicker.svelte @@ -85,6 +85,20 @@ } }; + $effect(() => { + if (window.location.href) { + setTimeout(() => { + oc = document.querySelector('.offcanvas'); + oc.addEventListener('hidden.bs.offcanvas', () => { + $offcanvasIsOpen = false; + }); + oc.addEventListener('shown.bs.offcanvas', () => { + $offcanvasIsOpen = true; + }); + }, 500); + } + }); + onMount(() => { days = updateCalendar(); diff --git a/frontend/src/lib/Sidenav.svelte b/frontend/src/lib/Sidenav.svelte index 25e42d5..1224385 100644 --- a/frontend/src/lib/Sidenav.svelte +++ b/frontend/src/lib/Sidenav.svelte @@ -9,8 +9,10 @@ import * as bootstrap from 'bootstrap'; import Tag from './Tag.svelte'; import { offcanvasIsOpen } from '$lib/helpers.js'; + import { API_URL } from '$lib/APIurl.js'; + import axios from 'axios'; - let { searchForString, searchForTag } = $props(); + let oc; onMount(() => { const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]'); @@ -51,6 +53,71 @@ } } + $effect(() => { + if (window.location.href) { + setTimeout(() => { + oc = document.querySelector('.offcanvas'); + oc.addEventListener('hidden.bs.offcanvas', () => { + $offcanvasIsOpen = false; + }); + oc.addEventListener('shown.bs.offcanvas', () => { + $offcanvasIsOpen = true; + }); + }, 1000); + } + }); + + function searchForString() { + if ($isSearching) { + return; + } + $isSearching = true; + + axios + .get(API_URL + '/logs/searchString', { + params: { + searchString: $searchString + } + }) + .then((response) => { + $searchResults = [...response.data]; + $isSearching = false; + }) + .catch((error) => { + $searchResults = []; + console.error(error); + $isSearching = false; + + // toast + const toast = new bootstrap.Toast(document.getElementById('toastErrorSearching')); + toast.show(); + }); + } + + function searchForTag() { + $searchString = ''; + if ($isSearching) { + return; + } + $isSearching = true; + + axios + .get(API_URL + '/logs/searchTag', { params: { tag_id: $searchTag.id } }) + .then((response) => { + $searchResults = [...response.data]; + $isSearching = false; + }) + .catch((error) => { + $isSearching = false; + $searchResults = []; + + console.error(error); + // toast + const toast = new bootstrap.Toast(document.getElementById('toastErrorSearching')); + toast.show(); + }); + } + let showTagDropdown = $state(false); let filteredTags = $state([]); let selectedTagIndex = $state(0); @@ -138,7 +205,7 @@ $searchResults = []; } - let oc; + // selects a search result function selectDate(date) { $selectedDate = date; @@ -280,6 +347,20 @@ +
+ +
+