diff --git a/apps/frontend/src/components/ui/create-project-version/components/ModSelect.vue b/apps/frontend/src/components/ui/create-project-version/components/DependencySelect.vue similarity index 76% rename from apps/frontend/src/components/ui/create-project-version/components/ModSelect.vue rename to apps/frontend/src/components/ui/create-project-version/components/DependencySelect.vue index 8041dd8f8f..cd50a266ff 100644 --- a/apps/frontend/src/components/ui/create-project-version/components/ModSelect.vue +++ b/apps/frontend/src/components/ui/create-project-version/components/DependencySelect.vue @@ -4,9 +4,10 @@ placeholder="Select project" :options="options" :searchable="true" - search-placeholder="Search by name, slug, or paste ID..." + search-placeholder="Search by name or paste ID..." :no-options-message="searchLoading ? 'Loading...' : 'No results found'" @search-input="(query) => handleSearch(query)" + :disableSearchFilter="true" /> @@ -34,10 +35,24 @@ const search = async (query: string) => { const results = await labrinth.projects_v2.search({ query: query, limit: 20, - facets: [['project_type:mod']], + facets: [ + [ + 'project_type:mod', + 'project_type:plugin', + 'project_type:shader ', + 'project_type:resourcepack', + 'project_type:datapack', + ], + ], }) - options.value = results.hits.map((hit) => ({ + const resultsByProjectId = await labrinth.projects_v2.search({ + query: '', + limit: 20, + facets: [[`project_id:${query}`]], + }) + + options.value = [...resultsByProjectId.hits, ...results.hits].map((hit) => ({ label: hit.title, value: hit.project_id, icon: defineAsyncComponent(() => diff --git a/apps/frontend/src/components/ui/create-project-version/stages/AddDependenciesStage.vue b/apps/frontend/src/components/ui/create-project-version/stages/AddDependenciesStage.vue index 68305141a6..2a44b4497b 100644 --- a/apps/frontend/src/components/ui/create-project-version/stages/AddDependenciesStage.vue +++ b/apps/frontend/src/components/ui/create-project-version/stages/AddDependenciesStage.vue @@ -92,7 +92,7 @@ import { } from '@modrinth/ui' import type { DropdownOption } from '@modrinth/ui/src/components/base/Combobox.vue' -import ModSelect from '~/components/ui/create-project-version/components/ModSelect.vue' +import ModSelect from '~/components/ui/create-project-version/components/DependencySelect.vue' import { injectManageVersionContext } from '~/providers/version/manage-version-modal' import AddedDependencyRow from '../components/AddedDependencyRow.vue' diff --git a/packages/ui/src/components/base/Combobox.vue b/packages/ui/src/components/base/Combobox.vue index 4c2180b680..7c156f0a88 100644 --- a/packages/ui/src/components/base/Combobox.vue +++ b/packages/ui/src/components/base/Combobox.vue @@ -170,6 +170,7 @@ const props = withDefaults( triggerClass?: string forceDirection?: 'up' | 'down' noOptionsMessage?: string + disableSearchFilter?: boolean }>(), { placeholder: 'Select an option', @@ -244,7 +245,7 @@ const optionsWithKeys = computed(() => { }) const filteredOptions = computed(() => { - if (!searchQuery.value || !props.searchable) { + if (!searchQuery.value || !props.searchable || props.disableSearchFilter) { return optionsWithKeys.value }