From 0e44a6e739b4e314fe8b3174fee825bfb93a3b3a Mon Sep 17 00:00:00 2001 From: tdgao Date: Tue, 10 Mar 2026 16:27:45 -0700 Subject: [PATCH 1/2] refactor: remove vue-multiselect, replace with either our own combobox and multiselect --- apps/app-frontend/package.json | 1 - apps/app-frontend/src/App.vue | 1 - .../components/ui/InstanceCreationModal.vue | 31 ++-- .../IncompatibilityWarningModal.vue | 61 +++---- apps/frontend/package.json | 1 - apps/frontend/src/layouts/default.vue | 1 - .../pages/[type]/[id]/settings/members.vue | 33 ++-- .../pages/[type]/[id]/version/[version].vue | 41 ++--- .../frontend/src/pages/dashboard/projects.vue | 14 +- apps/frontend/src/pages/index.vue | 45 +++--- .../organization/[id]/settings/projects.vue | 21 +-- packages/ui/package.json | 1 - .../src/components/billing/PurchaseModal.vue | 152 ++++++++---------- packages/ui/src/utils/common-messages.ts | 2 +- 14 files changed, 186 insertions(+), 219 deletions(-) diff --git a/apps/app-frontend/package.json b/apps/app-frontend/package.json index c7561a588b..eec02ffc27 100644 --- a/apps/app-frontend/package.json +++ b/apps/app-frontend/package.json @@ -39,7 +39,6 @@ "three": "^0.172.0", "vite-svg-loader": "^5.1.0", "vue": "^3.5.13", - "vue-multiselect": "3.0.0", "vue-router": "^4.6.0", "vue-virtual-scroller": "v2.0.0-beta.8" }, diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue index eed52f8356..1b990e6a04 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -1534,4 +1534,3 @@ provideAppUpdateDownloadProgress(appUpdateDownload) } } - diff --git a/apps/app-frontend/src/components/ui/InstanceCreationModal.vue b/apps/app-frontend/src/components/ui/InstanceCreationModal.vue index b2920fbb5e..6c00e598b8 100644 --- a/apps/app-frontend/src/components/ui/InstanceCreationModal.vue +++ b/apps/app-frontend/src/components/ui/InstanceCreationModal.vue @@ -36,15 +36,13 @@

Game version

-
@@ -56,14 +54,13 @@

Select version

-
@@ -199,6 +196,7 @@ import { Button, Checkbox, Chips, + Combobox, injectNotificationManager, StyledInput, } from '@modrinth/ui' @@ -206,7 +204,6 @@ import { convertFileSrc } from '@tauri-apps/api/core' import { getCurrentWebview } from '@tauri-apps/api/webview' import { open } from '@tauri-apps/plugin-dialog' import { computed, onUnmounted, ref, shallowRef } from 'vue' -import Multiselect from 'vue-multiselect' import ModalWrapper from '@/components/ui/modal/ModalWrapper.vue' import ProgressBar from '@/components/ui/ProgressBar.vue' @@ -331,6 +328,13 @@ const game_versions = computed(() => { .map((item) => item.id) }) +const gameVersionOptions = computed(() => + game_versions.value.map((version) => ({ + value: version, + label: version, + })), +) + const modal = ref(null) const check_valid = computed(() => { @@ -409,6 +413,13 @@ const selectable_versions = computed(() => { return [] }) +const selectableVersionOptions = computed(() => + selectable_versions.value.map((version) => ({ + value: version, + label: version, + })), +) + const openFile = async () => { const newProject = await open({ multiple: false }) if (!newProject) return diff --git a/apps/app-frontend/src/components/ui/install_flow/IncompatibilityWarningModal.vue b/apps/app-frontend/src/components/ui/install_flow/IncompatibilityWarningModal.vue index 7e8c6f7457..24f493ee03 100644 --- a/apps/app-frontend/src/components/ui/install_flow/IncompatibilityWarningModal.vue +++ b/apps/app-frontend/src/components/ui/install_flow/IncompatibilityWarningModal.vue @@ -17,31 +17,17 @@ {{ instance?.loader }} {{ instance?.game_version }} - - - {{ selectedVersion?.name }} ({{ - selectedVersion?.loaders - .map((name) => formatLoader(formatMessage, name)) - .join(', ') - }} - - {{ selectedVersion?.game_versions.join(', ') }}) - + {{ selectedVersionLabel }} @@ -59,9 +45,8 @@