diff --git a/app/javascript/dashboard/routes/dashboard/settings/captain/components/ModelSelector.vue b/app/javascript/dashboard/routes/dashboard/settings/captain/components/ModelSelector.vue index 8b7893e80..584382812 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/captain/components/ModelSelector.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/captain/components/ModelSelector.vue @@ -3,6 +3,9 @@ import { ref, computed, watch } from 'vue'; import { useI18n } from 'vue-i18n'; import { useMapGetter } from 'dashboard/composables/store'; import Icon from 'dashboard/components-next/icon/Icon.vue'; +import DropdownBody from 'dashboard/components-next/dropdown-menu/base/DropdownBody.vue'; +import DropdownItem from 'dashboard/components-next/dropdown-menu/base/DropdownItem.vue'; +import { provideDropdownContext } from 'dashboard/components-next/dropdown-menu/base/provider.js'; const props = defineProps({ featureKey: { @@ -54,6 +57,13 @@ const selectedModelDetails = computed(() => { ); }); +const getCreditLabel = model => { + const multiplier = model.credit_multiplier || 1; + return t('CAPTAIN_SETTINGS.MODEL_CONFIG.CREDITS_PER_MESSAGE', { + credits: multiplier, + }); +}; + const toggleDropdown = () => { isOpen.value = !isOpen.value; }; @@ -62,18 +72,17 @@ const closeDropdown = () => { isOpen.value = false; }; +provideDropdownContext({ + isOpen, + toggle: () => toggleDropdown(), + closeMenu: closeDropdown, +}); + const selectModel = model => { selectedModelId.value = model.id; emit('change', { feature: props.featureKey, model: model.id }); closeDropdown(); }; - -const getCreditLabel = model => { - const multiplier = model.credit_multiplier || 1; - return t('CAPTAIN_SETTINGS.MODEL_CONFIG.CREDITS_PER_MESSAGE', { - credits: multiplier, - }); -};