mirror of
https://github.com/open-webui/open-webui.git
synced 2026-10-06 02:48:04 +00:00
refac
This commit is contained in:
parent
6e5e5fe6e9
commit
8fc416ee78
2 changed files with 12 additions and 11 deletions
|
|
@ -159,8 +159,8 @@
|
|||
}
|
||||
};
|
||||
|
||||
const handlePointerDown = (e: PointerEvent) => {
|
||||
if (!show) return;
|
||||
const handleWindowClick = (e: MouseEvent) => {
|
||||
if (!show || e.detail === 0) return;
|
||||
const target = e.target as Node;
|
||||
if (
|
||||
(triggerElement && triggerElement.contains(target)) ||
|
||||
|
|
@ -169,6 +169,8 @@
|
|||
) {
|
||||
return;
|
||||
}
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
show = false;
|
||||
document.getElementById(`model-selector-${id}-button`)?.blur();
|
||||
};
|
||||
|
|
@ -901,7 +903,7 @@
|
|||
}}
|
||||
/>
|
||||
|
||||
<svelte:window on:pointerdown={handlePointerDown} on:keydown={handleKeydown} />
|
||||
<svelte:window on:click|capture={handleWindowClick} on:keydown={handleKeydown} />
|
||||
|
||||
<div class="relative w-full">
|
||||
<button
|
||||
|
|
|
|||
|
|
@ -281,11 +281,15 @@
|
|||
afterOpen();
|
||||
}
|
||||
|
||||
function handleWindowPointerDown(event: PointerEvent) {
|
||||
if (!show || !closeOnOutsideClick) return;
|
||||
function handleWindowClick(event: MouseEvent) {
|
||||
if (!show || !closeOnOutsideClick || event.detail === 0) return;
|
||||
if (!(event.target instanceof Node)) return;
|
||||
if (triggerEl?.contains(event.target)) return;
|
||||
if (contentEl?.contains(event.target)) return;
|
||||
// Submenu content is portaled outside contentEl.
|
||||
if (event.target instanceof Element && event.target.closest('[role="menu"]')) return;
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
closeDropdown(false);
|
||||
}
|
||||
|
||||
|
|
@ -302,10 +306,7 @@
|
|||
|
||||
import { onMount, onDestroy } from 'svelte';
|
||||
|
||||
let onPointerDown: ((e: PointerEvent) => void) | undefined;
|
||||
onMount(() => {
|
||||
onPointerDown = (e) => handleWindowPointerDown(e);
|
||||
document.addEventListener('pointerdown', onPointerDown, true);
|
||||
if (visualViewportAware) {
|
||||
window.visualViewport?.addEventListener('resize', scheduleSettledPositionUpdates);
|
||||
window.visualViewport?.addEventListener('scroll', schedulePositionUpdate);
|
||||
|
|
@ -314,9 +315,6 @@
|
|||
onDestroy(() => {
|
||||
if (positionFrame != null) cancelAnimationFrame(positionFrame);
|
||||
for (const timer of settleTimers) window.clearTimeout(timer);
|
||||
if (onPointerDown) {
|
||||
document.removeEventListener('pointerdown', onPointerDown, true);
|
||||
}
|
||||
if (visualViewportAware) {
|
||||
window.visualViewport?.removeEventListener('resize', scheduleSettledPositionUpdates);
|
||||
window.visualViewport?.removeEventListener('scroll', schedulePositionUpdate);
|
||||
|
|
@ -325,6 +323,7 @@
|
|||
</script>
|
||||
|
||||
<svelte:window
|
||||
on:click|capture={handleWindowClick}
|
||||
on:keydown={handleKeydown}
|
||||
on:scroll|capture={positionContent}
|
||||
on:resize={positionContent}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue