fix: modelselector positioning when calculated direction differs from preferred direction

This commit is contained in:
Zoe
2026-02-25 16:21:36 +00:00
parent 62f1fe1c27
commit d3d44778af
+9 -10
View File
@@ -20,7 +20,6 @@ const modelSelectorState = reactive({
}); });
const selectedModel = defineModel<ModelWithProvider | null>(); const selectedModel = defineModel<ModelWithProvider | null>();
const dropdownContentRef = ref<HTMLDivElement | null>(null);
const dropdownButton = ref<HTMLButtonElement | null>(null); const dropdownButton = ref<HTMLButtonElement | null>(null);
const searchInputRef = ref<HTMLInputElement | null>(null); const searchInputRef = ref<HTMLInputElement | null>(null);
const dropdownMaxHeight = ref<number | undefined>(undefined); const dropdownMaxHeight = ref<number | undefined>(undefined);
@@ -34,15 +33,7 @@ const toggleDropdown = () => {
return; return;
} }
const buttonRect = dropdownButton.value?.getBoundingClientRect(); console.log(modelSelectorState);
if (!buttonRect) return;
modelSelectorState.x = buttonRect.left;
if (modelSelectorState.direction === 'up') {
const pageHeight = document.body.scrollHeight;
modelSelectorState.y = (pageHeight - buttonRect.top) + 6;
} else {
modelSelectorState.y = buttonRect.bottom - 6;
}
modelSelectorState.open = true; modelSelectorState.open = true;
setTimeout(() => { setTimeout(() => {
@@ -80,6 +71,14 @@ const calculateDropdownPosition = () => {
modelSelectorState.direction = 'down'; modelSelectorState.direction = 'down';
dropdownMaxHeight.value = Math.min(spaceBelow - 20, 460); dropdownMaxHeight.value = Math.min(spaceBelow - 20, 460);
} }
modelSelectorState.x = buttonRect.left;
if (modelSelectorState.direction === 'up') {
const pageHeight = document.body.scrollHeight;
modelSelectorState.y = (pageHeight - buttonRect.top) + 6;
} else {
modelSelectorState.y = buttonRect.bottom + 6;
}
}; };
const searchQuery = ref(''); const searchQuery = ref('');