优化多个组件中的按钮样式

This commit is contained in:
jxxghp
2025-05-24 14:05:51 +08:00
parent b3bff5c6f5
commit 3fe7ed0e1d
39 changed files with 137 additions and 147 deletions

View File

@@ -187,7 +187,7 @@ function onClose() {
</VForm>
</VCardText>
<VCardActions class="pt-3">
<VBtn @click="saveRuleInfo" variant="elevated" prepend-icon="mdi-content-save" class="px-5">{{
<VBtn @click="saveRuleInfo" prepend-icon="mdi-content-save" class="px-5">{{
t('customRule.action.confirm')
}}</VBtn>
</VCardActions>

View File

@@ -347,7 +347,7 @@ onUnmounted(() => {
</VForm>
</VCardText>
<VCardActions class="pt-3">
<VBtn @click="saveDownloaderInfo" variant="elevated" prepend-icon="mdi-content-save" class="px-5">
<VBtn @click="saveDownloaderInfo" prepend-icon="mdi-content-save" class="px-5">
{{ t('common.save') }}
</VBtn>
</VCardActions>

View File

@@ -280,17 +280,17 @@ function onClose() {
<div class="text-center" v-if="filterRuleCards.length == 0">{{ t('filterRule.add') }}</div>
</VCardText>
<VCardActions class="pt-3">
<VBtn color="primary" variant="tonal" @click="addFilterCard">
<VBtn color="primary" @click="addFilterCard">
<VIcon icon="mdi-plus" />
</VBtn>
<VBtn color="success" variant="tonal" @click="importRules('priority')">
<VBtn color="success" @click="importRules('priority')">
<VIcon icon="mdi-import" />
</VBtn>
<VBtn color="info" variant="tonal" @click="shareRules">
<VBtn color="info" @click="shareRules">
<VIcon icon="mdi-share" />
</VBtn>
<VSpacer />
<VBtn @click="saveGroupInfo" variant="elevated" prepend-icon="mdi-content-save" class="px-5">
<VBtn @click="saveGroupInfo" prepend-icon="mdi-content-save" class="px-5">
{{ t('common.save') }}
</VBtn>
</VCardActions>

View File

@@ -467,7 +467,7 @@ onMounted(() => {
</VForm>
</VCardText>
<VCardActions class="pt-3">
<VBtn @click="saveMediaServerInfo" variant="elevated" prepend-icon="mdi-content-save" class="px-5">
<VBtn @click="saveMediaServerInfo" prepend-icon="mdi-content-save" class="px-5">
{{ t('common.confirm') }}
</VBtn>
</VCardActions>

View File

@@ -415,7 +415,7 @@ function onClose() {
</VForm>
</VCardText>
<VCardActions class="pt-3">
<VBtn @click="saveNotificationInfo" variant="elevated" prepend-icon="mdi-content-save" class="px-5">
<VBtn @click="saveNotificationInfo" prepend-icon="mdi-content-save" class="px-5">
{{ t('common.confirm') }}
</VBtn>
</VCardActions>

View File

@@ -359,7 +359,11 @@ const dropdownItems = ref([
<!-- 重命名对话框 -->
<VDialog v-if="renameDialog" v-model="renameDialog" max-width="400">
<VCard>
<VCardTitle>{{ t('folder.renameFolder') }}</VCardTitle>
<VDialogCloseBtn @click="renameDialog = false" />
<VCardItem>
<VCardTitle>{{ t('folder.renameFolder') }}</VCardTitle>
</VCardItem>
<VDivider />
<VCardText>
<VTextField
v-model="newFolderName"
@@ -371,8 +375,7 @@ const dropdownItems = ref([
</VCardText>
<VCardActions>
<VSpacer />
<VBtn @click="renameDialog = false">取消</VBtn>
<VBtn color="primary" @click="confirmRename">确认</VBtn>
<VBtn color="primary" prepend-icon="mdi-check" class="px-5" @click="confirmRename">确认</VBtn>
</VCardActions>
</VCard>
</VDialog>
@@ -380,10 +383,14 @@ const dropdownItems = ref([
<!-- 设置对话框 -->
<VDialog v-if="settingDialog" v-model="settingDialog" max-width="600">
<VCard>
<VCardTitle>
<VIcon icon="mdi-palette" class="mr-2" />
{{ t('folder.folderAppearanceSettings') }}
</VCardTitle>
<VDialogCloseBtn @click="settingDialog = false" />
<VCardItem>
<VCardTitle>
<VIcon icon="mdi-palette" class="mr-2" />
{{ t('folder.folderAppearanceSettings') }}
</VCardTitle>
</VCardItem>
<VDivider />
<VCardText>
<VRow>
<!-- 显示图标开关 -->

View File

@@ -224,7 +224,7 @@ function onClose() {
</VRow>
</VCardText>
<VCardActions class="pt-3">
<VBtn @click="handleDone" variant="elevated" prepend-icon="mdi-content-save" class="px-5">
<VBtn @click="handleDone" prepend-icon="mdi-content-save" class="px-5">
{{ t('common.save') }}
</VBtn>
</VCardActions>

View File

@@ -197,11 +197,11 @@ onMounted(() => {
/>
</VCol>
</VRow>
<VCardText class="text-center">
<VBtn variant="elevated" :disabled="loading" @click="addDownload" :prepend-icon="icon" class="px-5">
<VCardActions class="text-center">
<VBtn :disabled="loading" @click="addDownload" :prepend-icon="icon" class="px-5">
{{ buttonText }}
</VBtn>
</VCardText>
</VCardActions>
</VCard>
</VDialog>
</template>

View File

@@ -67,8 +67,14 @@ async function savaAlistConfig() {
<template>
<VDialog width="50rem" scrollable max-height="85vh">
<VCard :title="t('dialog.alistConfig.title')">
<VCard>
<VDialogCloseBtn @click="emit('close')" />
<VCardItem>
<VCardTitle>
{{ t('dialog.alistConfig.title') }}
</VCardTitle>
</VCardItem>
<VDivider />
<VCardText>
<VRow>
<VCol cols="12">
@@ -116,11 +122,11 @@ async function savaAlistConfig() {
</VRow>
</VCardText>
<VCardActions>
<VSpacer />
<VBtn variant="tonal" color="error" @click="handleReset" prepend-icon="mdi-restore" class="px-5 me-3">
<VBtn color="error" @click="handleReset" prepend-icon="mdi-restore" class="px-5 me-3">
{{ t('dialog.alistConfig.reset') }}
</VBtn>
<VBtn variant="elevated" @click="handleDone" prepend-icon="mdi-check" class="px-5 me-3">
<VSpacer />
<VBtn @click="handleDone" prepend-icon="mdi-check" class="px-5 me-3">
{{ t('dialog.alistConfig.complete') }}
</VBtn>
</VCardActions>

View File

@@ -107,8 +107,14 @@ onUnmounted(() => {
<template>
<VDialog width="40rem" scrollable max-height="85vh">
<VCard :title="t('dialog.aliyunAuth.loginTitle')">
<VCard>
<VDialogCloseBtn @click="emit('close')" />
<VCardItem>
<VCardTitle>
{{ t('dialog.aliyunAuth.loginTitle') }}
</VCardTitle>
</VCardItem>
<VDivider />
<VCardText class="pt-2 flex flex-col items-center">
<div class="my-6 rounded text-center p-3 border">
<VImg class="mx-auto" :src="qrCodeUrl" width="200" height="200">
@@ -124,11 +130,11 @@ onUnmounted(() => {
</VAlert>
</VCardText>
<VCardActions>
<VSpacer />
<VBtn variant="tonal" color="error" @click="handleReset" prepend-icon="mdi-restore" class="px-5 me-3">
<VBtn color="error" @click="handleReset" prepend-icon="mdi-restore" class="px-5 me-3">
{{ t('dialog.aliyunAuth.reset') }}
</VBtn>
<VBtn variant="elevated" @click="handleDone" prepend-icon="mdi-check" class="px-5 me-3">
<VSpacer />
<VBtn @click="handleDone" prepend-icon="mdi-check" class="px-5 me-3">
{{ t('dialog.aliyunAuth.complete') }}
</VBtn>
</VCardActions>

View File

@@ -32,7 +32,7 @@ function handleImport() {
</VCardText>
<VCardActions>
<VSpacer />
<VBtn variant="elevated" @click="handleImport" prepend-icon="mdi-import" class="px-5 me-3">
<VBtn @click="handleImport" prepend-icon="mdi-import" class="px-5 me-3">
{{ t('dialog.importCode.import') }}
</VBtn>
</VCardActions>

View File

@@ -161,18 +161,12 @@ onBeforeMount(async () => {
</div>
</VCardText>
<VCardActions class="pt-3">
<VBtn v-if="props.plugin?.has_page" @click="emit('switch')" variant="outlined" color="info">
<VBtn v-if="props.plugin?.has_page" @click="emit('switch')" color="info">
{{ t('dialog.pluginConfig.viewData') }}
</VBtn>
<VSpacer />
<!-- 只有Vuetify模式显示默认保存按钮Vue模式由组件内部控制 -->
<VBtn
v-if="renderMode === 'vuetify'"
@click="savePluginConf"
variant="elevated"
prepend-icon="mdi-content-save"
class="px-5"
>
<VBtn v-if="renderMode === 'vuetify'" @click="savePluginConf" prepend-icon="mdi-content-save" class="px-5">
保存
</VBtn>
</VCardActions>

View File

@@ -2,6 +2,7 @@
import api from '@/api'
import { useToast } from 'vue-toast-notification'
import { useI18n } from 'vue-i18n'
import { computed } from 'vue'
// 国际化
const { t } = useI18n()
@@ -9,6 +10,16 @@ const $toast = useToast()
// 插件仓库设置字符串
const repoString = ref('')
// 用于显示的仓库地址数组
const repoArray = ref<string[]>([])
// 计算属性:在数组和换行符分隔的字符串之间转换
const displayRepos = computed({
get: () => repoArray.value.join('\n'),
set: (value: string) => {
repoArray.value = value.split('\n').filter((repo: string) => repo.trim() !== '')
},
})
// 定义事件
const emit = defineEmits(['save', 'close'])
@@ -17,7 +28,10 @@ const emit = defineEmits(['save', 'close'])
async function queryMarketRepoSetting() {
try {
const result: { [key: string]: any } = await api.get('system/setting/PLUGIN_MARKET')
if (result && result.data && result.data.value) repoString.value = result.data.value
if (result && result.data && result.data.value) {
repoString.value = result.data.value
repoArray.value = result.data.value.split(',').filter((repo: string) => repo.trim() !== '')
}
} catch (error) {
console.log(error)
}
@@ -26,8 +40,9 @@ async function queryMarketRepoSetting() {
// 保存设置
async function saveHandle() {
try {
// 用户名密码
const result: { [key: string]: any } = await api.post('system/setting/PLUGIN_MARKET', repoString.value)
// 将数组转换为逗号分隔的字符串
const repoStringToSave = repoArray.value.join(',')
const result: { [key: string]: any } = await api.post('system/setting/PLUGIN_MARKET', repoStringToSave)
if (result.success) {
$toast.success(t('dialog.pluginMarketSetting.saveSuccess'))
@@ -53,9 +68,11 @@ onMounted(() => {
</VCardTitle>
<VDialogCloseBtn @click="emit('close')" />
</VCardItem>
<VDivider />
<VCardText class="pt-2">
<VTextarea
v-model="repoString"
v-model="displayRepos"
:placeholder="t('dialog.pluginMarketSetting.repoPlaceholder')"
:hint="t('dialog.pluginMarketSetting.repoHint')"
persistent-hint
@@ -63,7 +80,7 @@ onMounted(() => {
</VCardText>
<VCardActions>
<VSpacer />
<VBtn variant="elevated" @click="saveHandle" prepend-icon="mdi-content-save-check" class="px-5 me-3">
<VBtn @click="saveHandle" prepend-icon="mdi-content-save-check" class="px-5 me-3">
{{ t('dialog.pluginMarketSetting.save') }}
</VBtn>
</VCardActions>

View File

@@ -54,8 +54,14 @@ async function handleReset() {
<template>
<VDialog width="50rem" scrollable max-height="85vh">
<VCard :title="t('dialog.rcloneConfig.title')">
<VCard>
<VDialogCloseBtn @click="emit('close')" />
<VCardItem>
<VCardTitle>
{{ t('dialog.rcloneConfig.title') }}
</VCardTitle>
</VCardItem>
<VDivider />
<VCardText>
<VRow>
<VCol cols="12">
@@ -74,11 +80,11 @@ async function handleReset() {
</VRow>
</VCardText>
<VCardActions>
<VSpacer />
<VBtn variant="tonal" color="error" @click="handleReset" prepend-icon="mdi-restore" class="px-5 me-3">
<VBtn color="error" @click="handleReset" prepend-icon="mdi-restore" class="px-5 me-3">
{{ t('dialog.rcloneConfig.reset') }}
</VBtn>
<VBtn variant="elevated" @click="handleDone" prepend-icon="mdi-check" class="px-5 me-3">
<VSpacer />
<VBtn @click="handleDone" prepend-icon="mdi-check" class="px-5 me-3">
{{ t('dialog.rcloneConfig.complete') }}
</VBtn>
</VCardActions>

View File

@@ -438,10 +438,10 @@ onUnmounted(() => {
</VCardText>
<VCardActions class="pt-3">
<VSpacer />
<VBtn variant="elevated" color="success" @click="transfer(true)" prepend-icon="mdi-plus" class="px-5">
<VBtn color="success" @click="transfer(true)" prepend-icon="mdi-plus" class="px-5">
{{ t('dialog.reorganize.addToQueue') }}
</VBtn>
<VBtn variant="elevated" @click="transfer(false)" prepend-icon="mdi-arrow-right-bold" class="px-5">
<VBtn @click="transfer(false)" prepend-icon="mdi-arrow-right-bold" class="px-5">
{{ t('dialog.reorganize.reorganizeNow') }}
</VBtn>
</VCardActions>

View File

@@ -163,27 +163,19 @@ const filteredSites = computed(() => {
</div>
</VCardText>
<VDivider class="search-divider" />
<VCardActions class="pa-4">
<VSpacer />
<VBtn
color="grey-darken-1"
variant="text"
@click="emit('close')"
class="mr-2 d-flex align-center justify-center"
>
<VCardActions class="pt-3">
<VBtn color="secondary" @click="emit('close')" class="mr-2 d-flex align-center justify-center">
{{ t('dialog.searchSite.cancel') }}
</VBtn>
<VSpacer />
<VBtn
color="primary"
variant="flat"
:disabled="selectedSites.length === 0"
@click="emit('search', selectedSites)"
prepend-icon="mdi-magnify"
class="d-flex align-center justify-center px-5"
>
{{ t('dialog.searchSite.confirm') }}
{{ t('common.search') }}
</VBtn>
</VCardActions>
</VCard>

View File

@@ -326,24 +326,10 @@ onMounted(async () => {
</VCardText>
<VCardActions class="pt-3">
<VSpacer />
<VBtn
v-if="props.oper === 'add'"
color="primary"
variant="elevated"
@click="addSite"
prepend-icon="mdi-plus"
class="px-5"
>
<VBtn v-if="props.oper === 'add'" color="primary" @click="addSite" prepend-icon="mdi-plus" class="px-5">
{{ t('site.actions.add') }}
</VBtn>
<VBtn
v-else
color="primary"
variant="elevated"
@click="updateSiteInfo"
prepend-icon="mdi-content-save"
class="px-5"
>
<VBtn v-else color="primary" @click="updateSiteInfo" prepend-icon="mdi-content-save" class="px-5">
{{ t('common.save') }}
</VBtn>
</VCardActions>

View File

@@ -102,7 +102,6 @@ async function updateSiteCookie() {
<VCardActions class="mx-auto">
<VBtn
size="large"
variant="elevated"
@click="updateSiteCookie"
:disabled="updateButtonDisable"
:loading="updateButtonDisable"

View File

@@ -504,12 +504,11 @@ onMounted(() => {
</VForm>
</VCardText>
<VCardActions class="pt-3">
<VBtn v-if="!props.default" color="error" @click="removeSubscribe" variant="outlined" class="me-3">
<VBtn v-if="!props.default" color="error" @click="removeSubscribe" class="me-3">
{{ t('dialog.subscribeEdit.cancelSubscribe') }}
</VBtn>
<VSpacer />
<VBtn
variant="elevated"
@click=";`${props.default ? saveDefaultSubscribeConfig() : updateSubscribeInfo()}`"
prepend-icon="mdi-content-save"
class="px-5"

View File

@@ -97,14 +97,7 @@ const $toast = useToast()
</VCardText>
<VCardActions class="pt-3">
<VSpacer />
<VBtn
variant="elevated"
:disabled="shareDoing"
@click="doShare"
prepend-icon="mdi-share"
class="px-5"
:loading="shareDoing"
>
<VBtn :disabled="shareDoing" @click="doShare" prepend-icon="mdi-share" class="px-5" :loading="shareDoing">
{{ t('dialog.subscribeShare.confirmShare') }}
</VBtn>
</VCardActions>

View File

@@ -112,8 +112,14 @@ onUnmounted(() => {
<template>
<VDialog width="40rem" scrollable max-height="85vh">
<VCard :title="t('dialog.u115Auth.loginTitle')">
<VCard>
<VDialogCloseBtn @click="emit('close')" />
<VCardItem>
<VCardTitle>
{{ t('dialog.u115Auth.loginTitle') }}
</VCardTitle>
</VCardItem>
<VDivider />
<VCardText class="pt-2 flex flex-col items-center">
<div class="my-6 rounded text-center p-3 border">
<QrcodeVue class="mx-auto" :value="qrCodeContent" :size="200" />
@@ -123,11 +129,11 @@ onUnmounted(() => {
</VAlert>
</VCardText>
<VCardActions>
<VSpacer />
<VBtn variant="tonal" color="error" @click="handleReset" prepend-icon="mdi-restore" class="px-5 me-3">
<VBtn color="error" @click="handleReset" prepend-icon="mdi-restore" class="px-5 me-3">
{{ t('dialog.u115Auth.reset') }}
</VBtn>
<VBtn variant="elevated" @click="handleDone" prepend-icon="mdi-check" class="px-5 me-3">
<VSpacer />
<VBtn @click="handleDone" prepend-icon="mdi-check" class="px-5 me-3">
{{ t('dialog.u115Auth.complete') }}
</VBtn>
</VCardActions>

View File

@@ -461,7 +461,6 @@ onMounted(() => {
v-if="props.oper === 'add'"
:disabled="isAdding"
color="primary"
variant="elevated"
@click="addUser"
prepend-icon="mdi-plus"
class="px-5"
@@ -473,7 +472,6 @@ onMounted(() => {
v-else
:disabled="isUpdating"
color="primary"
variant="elevated"
@click="updateUser"
prepend-icon="mdi-content-save"
class="px-5"

View File

@@ -165,14 +165,7 @@ onMounted(async () => {
</VRow>
</VCardText>
<VCardText class="text-center">
<VBtn
variant="elevated"
@click="handleDone"
prepend-icon="mdi-check"
class="px-5"
size="large"
:disabled="loading"
>
<VBtn @click="handleDone" prepend-icon="mdi-check" class="px-5" size="large" :disabled="loading">
{{ t('dialog.userAuth.authBtn') }}
</VBtn>
</VCardText>

View File

@@ -123,18 +123,10 @@ async function editWorkflow() {
</VCardText>
<VCardActions class="pt-3">
<VSpacer />
<VBtn
v-if="workflow"
block
color="primary"
variant="elevated"
@click="editWorkflow"
prepend-icon="mdi-content-save"
class="px-5"
>
<VBtn v-if="workflow" color="primary" @click="editWorkflow" prepend-icon="mdi-content-save" class="px-5">
{{ t('dialog.workflowAddEdit.confirm') }}
</VBtn>
<VBtn v-else block color="primary" variant="elevated" @click="addWorkflow" prepend-icon="mdi-plus" class="px-5">
<VBtn v-else color="primary" @click="addWorkflow" prepend-icon="mdi-plus" class="px-5">
{{ t('dialog.workflowAddEdit.confirm') }}
</VBtn>
</VCardActions>

View File

@@ -710,10 +710,10 @@ onMounted(() => {
</VRow>
</VCardText>
<VCardActions>
<VBtn color="success" variant="elevated" @click="get_recommend_name" prepend-icon="mdi-magic" class="px-5 me-3">
<VBtn color="success" @click="get_recommend_name" prepend-icon="mdi-magic" class="px-5 me-3">
{{ t('file.autoRecognizeName') }}
</VBtn>
<VBtn :disabled="!newName" variant="elevated" @click="rename" prepend-icon="mdi-check" class="px-5 me-3">
<VBtn :disabled="!newName" @click="rename" prepend-icon="mdi-check" class="px-5 me-3">
{{ t('common.confirm') }}
</VBtn>
</VCardActions>

View File

@@ -179,7 +179,7 @@ const sortIcon = computed(() => {
</VCardText>
<VCardActions>
<div class="flex-grow-1" />
<VBtn :disabled="!newFolderName" variant="elevated" @click="mkdir" prepend-icon="mdi-check" class="px-5 me-3">
<VBtn :disabled="!newFolderName" @click="mkdir" prepend-icon="mdi-folder-plus" class="px-5 me-3">
{{ t('common.create') }}
</VBtn>
</VCardActions>

View File

@@ -432,12 +432,8 @@ onMounted(() => {
</div>
</VCardItem>
<VCardActions class="mx-auto">
<VBtn variant="tonal" color="secondary" class="px-5" @click="restartDialog = false">{{
t('common.cancel')
}}</VBtn>
<VBtn variant="elevated" color="error" @click="restart" prepend-icon="mdi-restart" class="px-5">{{
t('common.confirm')
}}</VBtn>
<VBtn color="secondary" class="px-5" @click="restartDialog = false">{{ t('common.cancel') }}</VBtn>
<VBtn color="error" @click="restart" prepend-icon="mdi-restart" class="px-5">{{ t('common.confirm') }}</VBtn>
</VCardActions>
<VDialogCloseBtn @click="restartDialog = false" />
</VCard>

View File

@@ -1637,7 +1637,7 @@ export default {
title: 'Plugin Market Settings',
repoUrl: 'Plugin Repository URL',
repoPlaceholder: 'Format: https://github.com/jxxghp/MoviePilot-Plugins/,https://github.com/xxxx/xxxxxx/',
repoHint: 'Multiple URLs separated by commas, only Github repositories are supported',
repoHint: 'Multiple URLs separated by lines, only Github repositories are supported',
close: 'Close',
save: 'Save',
saveSuccess: 'Plugin repository saved successfully',

View File

@@ -1614,7 +1614,7 @@ export default {
title: '插件市场设置',
repoUrl: '插件仓库地址',
repoPlaceholder: '格式https://github.com/jxxghp/MoviePilot-Plugins/,https://github.com/xxxx/xxxxxx/',
repoHint: '多个地址使用逗号分隔仅支持Github仓库',
repoHint: '多个地址使用换行分隔仅支持Github仓库',
close: '关闭',
save: '保存',
saveSuccess: '插件仓库保存成功',

View File

@@ -1615,7 +1615,7 @@ export default {
title: '插件市場設置',
repoUrl: '插件倉庫地址',
repoPlaceholder: '格式https://github.com/jxxghp/MoviePilot-Plugins/,https://github.com/xxxx/xxxxxx/',
repoHint: '多個地址使用逗號分隔僅支援Github倉庫',
repoHint: '多個地址使用换行分隔僅支援Github倉庫',
close: '關閉',
save: '儲存',
saveSuccess: '插件倉庫儲存成功',

View File

@@ -8,6 +8,7 @@ import DashboardElement from '@/components/misc/DashboardElement.vue'
import { useDisplay } from 'vuetify'
import { useDynamicButton } from '@/composables/useDynamicButton'
import { useI18n } from 'vue-i18n'
import { VCardActions } from 'vuetify/components'
// 国际化
const { t } = useI18n()
@@ -396,8 +397,7 @@ onDeactivated(() => {
<VSwitch v-model="isElevated" :label="t('dashboard.adaptiveHeight')" />
</p>
</VCardText>
<VDivider />
<VCardText class="pt-5 text-end">
<VCardActions class="pt-3">
<VSpacer />
<VBtn @click="saveDashboardConfig">
<template #prepend>
@@ -405,7 +405,7 @@ onDeactivated(() => {
</template>
{{ t('common.save') }}
</VBtn>
</VCardText>
</VCardActions>
</VCard>
</VDialog>
</template>

View File

@@ -207,8 +207,7 @@ onActivated(async () => {
</template>
</draggable>
</VCardText>
<VDivider />
<VCardText class="pt-5 text-end">
<VCardActions class="pt-3">
<VSpacer />
<VBtn @click="saveTabOrder">
<template #prepend>
@@ -216,7 +215,7 @@ onActivated(async () => {
</template>
{{ t('common.save') }}
</VBtn>
</VCardText>
</VCardActions>
</VCard>
</VDialog>
<!-- 快速滚动到顶部按钮 -->

View File

@@ -271,8 +271,7 @@ onActivated(async () => {
</div>
</div>
</VCardText>
<VDivider />
<VCardActions class="pt-5">
<VCardActions class="pt-3">
<VBtn variant="text" @click="Object.keys(enableConfig).forEach(key => (enableConfig[key] = true))">
{{ t('recommend.selectAll') }}
</VBtn>
@@ -280,7 +279,7 @@ onActivated(async () => {
{{ t('recommend.selectNone') }}
</VBtn>
<VSpacer />
<VBtn @click="saveConfig" variant="elevated" color="primary" class="px-5">
<VBtn @click="saveConfig" color="primary" class="px-5">
<template #prepend>
<VIcon icon="mdi-content-save" />
</template>

View File

@@ -58,6 +58,10 @@ html.v-overlay-scroll-blocked {
margin-block-start: env(safe-area-inset-top);
}
.v-dialog > .v-overlay__content > .v-card > .v-card-item {
padding: 16px;
}
/* router view transition fade-slide */
.fade-slide-leave-active,
.fade-slide-enter-active {
@@ -221,7 +225,7 @@ html.v-overlay-scroll-blocked {
}
.grid-workflow-card {
grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));
}
.v-tabs:not(.v-tabs-pill).v-tabs--horizontal {

View File

@@ -1453,7 +1453,11 @@ function onDragEndPlugin(evt: any) {
<!-- 新建文件夹对话框 -->
<VDialog v-if="newFolderDialog" v-model="newFolderDialog" max-width="400">
<VCard>
<VCardTitle>{{ t('plugin.newFolder') }}</VCardTitle>
<VDialogCloseBtn @click="newFolderDialog = false" />
<VCardItem>
<VCardTitle>{{ t('plugin.newFolder') }}</VCardTitle>
</VCardItem>
<VDivider />
<VCardText>
<VTextField
v-model="newFolderName"
@@ -1464,8 +1468,9 @@ function onDragEndPlugin(evt: any) {
</VCardText>
<VCardActions>
<VSpacer />
<VBtn @click="newFolderDialog = false">{{ t('plugin.cancel') }}</VBtn>
<VBtn color="primary" @click="createNewFolder">{{ t('plugin.create') }}</VBtn>
<VBtn color="primary" @click="createNewFolder" prepend-icon="mdi-folder-plus" class="px-5">{{
t('plugin.create')
}}</VBtn>
</VCardActions>
</VCard>
</VDialog>

View File

@@ -395,7 +395,6 @@ onMounted(() => {
</tr>
</tbody>
</VTable>
<VDivider />
<VCardText>
<VForm @submit.prevent="() => {}">
<div class="d-flex flex-wrap gap-4 mt-4">
@@ -458,8 +457,8 @@ onMounted(() => {
class="w-full min-h-[30rem] rounded"
/>
</VCardText>
<VCardActions class="mx-auto pt-3">
<VBtn variant="elevated" color="primary" @click="saveTemplate" prepend-icon="mdi-content-save" class="px-5">
<VCardActions class="pt-3">
<VBtn color="primary" @click="saveTemplate" prepend-icon="mdi-content-save" class="px-5">
{{ t('common.save') }}
</VBtn>
</VCardActions>

View File

@@ -979,13 +979,7 @@ onDeactivated(() => {
<VCardActions class="pt-3">
<VForm @submit.prevent="() => {}">
<div class="d-flex flex-wrap gap-4 mt-4">
<VBtn
color="primary"
variant="elevated"
prepend-icon="mdi-content-save"
@click="saveAdvancedSettings"
class="px-5"
>
<VBtn color="primary" prepend-icon="mdi-content-save" @click="saveAdvancedSettings" class="px-5">
{{ t('common.save') }}
</VBtn>
</div>

View File

@@ -713,7 +713,7 @@ const handleSortIconClick = () => {
</VCardText>
<VCardActions>
<VSpacer />
<VBtn variant="elevated" color="primary" @click="filterMenuOpen = false">
<VBtn color="primary" @click="filterMenuOpen = false">
{{ t('torrent.confirm') }}
</VBtn>
</VCardActions>

View File

@@ -689,7 +689,7 @@ onMounted(() => {
</VCardText>
<VCardActions>
<VSpacer />
<VBtn variant="elevated" color="primary" @click="filterMenuOpen = false">
<VBtn color="primary" @click="filterMenuOpen = false">
{{ t('torrent.confirm') }}
</VBtn>
</VCardActions>