From 7307893ee41347fc82b26a59d7f4228df706c80b Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat, 4 Oct 2025 18:14:57 +0900 Subject: [PATCH 1/3] =?UTF-8?q?refactor(frontend):=20MkRadios=E3=81=AE?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E3=82=92props=E3=81=8B=E3=82=89=E8=A1=8C?= =?UTF-8?q?=E3=81=86=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/MkDialog.vue | 3 +- .../frontend/src/components/MkFormDialog.vue | 14 +- .../src/components/MkImageEffectorFxForm.vue | 6 +- packages/frontend/src/components/MkRadio.vue | 3 +- packages/frontend/src/components/MkRadios.vue | 179 ++++++++++-------- .../frontend/src/components/MkRadios2.vue | 107 +++++++++++ packages/frontend/src/components/MkSelect.vue | 2 +- .../src/components/MkServerSetupWizard.vue | 49 +++-- .../MkUserAnnouncementEditDialog.vue | 26 ++- .../frontend/src/composables/use-mkselect.ts | 3 +- packages/frontend/src/os.ts | 3 +- packages/frontend/src/pages/admin/ads.vue | 24 ++- .../src/pages/admin/announcements.vue | 26 ++- .../src/pages/admin/bot-protection.vue | 18 +- .../frontend/src/pages/admin/branding.vue | 10 +- .../frontend/src/pages/admin/security.vue | 14 +- .../frontend/src/pages/admin/settings.vue | 12 +- packages/frontend/src/pages/channels.vue | 17 +- .../src/pages/reversi/game.setting.vue | 32 ++-- packages/frontend/src/pages/search.note.vue | 28 ++- packages/frontend/src/pages/search.user.vue | 14 +- packages/frontend/src/pages/settings/deck.vue | 33 +++- .../src/pages/settings/emoji-palette.vue | 54 ++++-- .../frontend/src/pages/settings/navbar.vue | 10 +- .../src/pages/settings/preferences.vue | 102 ++++++---- .../pages/settings/statusbar.statusbar.vue | 16 +- packages/frontend/src/preferences/def.ts | 4 +- packages/frontend/src/store.ts | 2 +- packages/frontend/src/types/option-value.ts | 1 + packages/frontend/src/utility/form.ts | 8 +- 30 files changed, 552 insertions(+), 268 deletions(-) create mode 100644 packages/frontend/src/components/MkRadios2.vue create mode 100644 packages/frontend/src/types/option-value.ts diff --git a/packages/frontend/src/components/MkDialog.vue b/packages/frontend/src/components/MkDialog.vue index 705301a6a6..0baabd95a8 100644 --- a/packages/frontend/src/components/MkDialog.vue +++ b/packages/frontend/src/components/MkDialog.vue @@ -47,7 +47,8 @@ import MkModal from '@/components/MkModal.vue'; import MkButton from '@/components/MkButton.vue'; import MkInput from '@/components/MkInput.vue'; import MkSelect from '@/components/MkSelect.vue'; -import type { MkSelectItem, OptionValue } from '@/components/MkSelect.vue'; +import type { MkSelectItem } from '@/components/MkSelect.vue'; +import type { OptionValue } from '@/types/option-value.js'; import { useMkSelect } from '@/composables/use-mkselect.js'; import { i18n } from '@/i18n.js'; diff --git a/packages/frontend/src/components/MkFormDialog.vue b/packages/frontend/src/components/MkFormDialog.vue index 142ccb12a3..300968aca4 100644 --- a/packages/frontend/src/components/MkFormDialog.vue +++ b/packages/frontend/src/components/MkFormDialog.vue @@ -42,9 +42,8 @@ SPDX-License-Identifier: AGPL-3.0-only - + - @@ -77,6 +76,7 @@ import MkButton from './MkButton.vue'; import MkRadios from './MkRadios.vue'; import XFile from './MkFormDialog.file.vue'; import type { MkSelectItem } from '@/components/MkSelect.vue'; +import type { RadioOption } from '@/components/MkRadios.vue'; import type { Form, EnumFormItem, RadioFormItem } from '@/utility/form.js'; import MkModalWindow from '@/components/MkModalWindow.vue'; import { i18n } from '@/i18n.js'; @@ -130,7 +130,13 @@ function getMkSelectDef(def: EnumFormItem): MkSelectItem[] { }); } -function getRadioKey(e: RadioFormItem['options'][number]) { - return typeof e.value === 'string' ? e.value : JSON.stringify(e.value); +function getRadioOptionsDef(def: RadioFormItem): RadioOption[] { + return def.options.map((v) => { + if (typeof v === 'string') { + return { value: v, label: v }; + } else { + return { value: v.value, label: v.label }; + } + }); } diff --git a/packages/frontend/src/components/MkImageEffectorFxForm.vue b/packages/frontend/src/components/MkImageEffectorFxForm.vue index e581b1f743..45ec88ac78 100644 --- a/packages/frontend/src/components/MkImageEffectorFxForm.vue +++ b/packages/frontend/src/components/MkImageEffectorFxForm.vue @@ -28,13 +28,9 @@ SPDX-License-Identifier: AGPL-3.0-only - + -
diff --git a/packages/frontend/src/components/MkRadio.vue b/packages/frontend/src/components/MkRadio.vue index a7d77dd118..dfe06a238f 100644 --- a/packages/frontend/src/components/MkRadio.vue +++ b/packages/frontend/src/components/MkRadio.vue @@ -24,7 +24,8 @@ SPDX-License-Identifier: AGPL-3.0-only
- - diff --git a/packages/frontend/src/components/MkRadios2.vue b/packages/frontend/src/components/MkRadios2.vue new file mode 100644 index 0000000000..03f83d46da --- /dev/null +++ b/packages/frontend/src/components/MkRadios2.vue @@ -0,0 +1,107 @@ + + + + + + + diff --git a/packages/frontend/src/components/MkSelect.vue b/packages/frontend/src/components/MkSelect.vue index e79236fe54..6b1a6cdb34 100644 --- a/packages/frontend/src/components/MkSelect.vue +++ b/packages/frontend/src/components/MkSelect.vue @@ -40,7 +40,7 @@ SPDX-License-Identifier: AGPL-3.0-only