Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: add scroll to admin/user settings tabs #3636

Merged
merged 2 commits into from
Jul 6, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
refac
  • Loading branch information
tjbck committed Jul 6, 2024
commit c3c15cbb7e788e6c0591377839bb44b47f4ab984
46 changes: 25 additions & 21 deletions src/lib/components/chat/SettingsModal.svelte
Original file line number Diff line number Diff line change
@@ -1,9 1,10 @@
<script lang="ts">
import { getContext, afterUpdate } from 'svelte';
import { getContext, tick } from 'svelte';
import { toast } from 'svelte-sonner';
import { models, settings, user } from '$lib/stores';

import { updateUserSettings } from '$lib/apis/users';
import { getModels as _getModels } from '$lib/apis';
import { goto } from '$app/navigation';

import Modal from '../common/Modal.svelte';
import Account from './Settings/Account.svelte';
Expand All @@ -14,8 15,6 @@
import Chats from './Settings/Chats.svelte';
import User from '../icons/User.svelte';
import Personalization from './Settings/Personalization.svelte';
import { updateUserSettings } from '$lib/apis/users';
import { goto } from '$app/navigation';
import Valves from './Settings/Valves.svelte';

const i18n = getContext('i18n');
Expand All @@ -36,30 35,35 @@
let selectedTab = 'general';

// Function to handle sideways scrolling
const handleSidewaysScroll = (event) => {
const scrollHandler = (event) => {
const settingsTabsContainer = document.getElementById('settings-tabs-container');
if (settingsTabsContainer) {
event.preventDefault(); // Prevent default vertical scrolling
settingsTabsContainer.scrollLeft = event.deltaY; // Scroll sideways
}
};

const addScrollListener = async () => {
await tick();
const settingsTabsContainer = document.getElementById('settings-tabs-container');
if (settingsTabsContainer) {
event.preventDefault(); // Prevent default vertical scrolling
settingsTabsContainer.scrollLeft = event.deltaY; // Scroll sideways
settingsTabsContainer.addEventListener('wheel', scrollHandler);
}
};

// Use afterUpdate to add the event listener after the modal is confirmed to be visible
// and remove it when the modal is closed
afterUpdate(() => {
if (show) {
const settingsTabsContainer = document.getElementById('settings-tabs-container');
if (settingsTabsContainer) {
settingsTabsContainer.addEventListener('wheel', handleSidewaysScroll);
}
} else {
const settingsTabsContainer = document.getElementById('settings-tabs-container');
if (settingsTabsContainer) {
settingsTabsContainer.removeEventListener('wheel', handleSidewaysScroll);
}
const removeScrollListener = async () => {
await tick();
const settingsTabsContainer = document.getElementById('settings-tabs-container');
if (settingsTabsContainer) {
settingsTabsContainer.removeEventListener('wheel', scrollHandler);
}
});
};

$: if (show) {
addScrollListener();
} else {
removeScrollListener();
}
</script>

<Modal bind:show>
Expand Down
Loading