Feature(custom): optimize upload modal ui

This commit is contained in:
Kuingsmile
2025-08-15 10:37:36 +08:00
parent d3a7f1b0a6
commit 8c80d51be0
9 changed files with 75 additions and 73 deletions

View File

@@ -54,13 +54,7 @@ html
padding 0 padding 0
margin 0 margin 0
height 100% height 100%
font-family "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif
#app #app
height 100% height 100%
user-select none user-select none
overflow hidden
.el-button-group
width 100%
.el-button
width 50%
</style> </style>

View File

@@ -40,20 +40,22 @@
<div class="nav-menu"> <div class="nav-menu">
<router-link <router-link
:to="navigationItems[0].path" v-for="item in navigationItems.slice(0, 3)"
:key="item.path"
:to="item.path"
class="nav-item" class="nav-item"
:title="`${navigationItems[0].name}`" :title="`${item.name}`"
> >
<div class="nav-icon-container"> <div class="nav-icon-container">
<component <component
:is="navigationItems[0].icon" :is="item.icon"
:size="18" :size="18"
/> />
</div> </div>
<span <span
v-if="!isCollapsed" v-if="!isCollapsed"
class="nav-label" class="nav-label"
>{{ navigationItems[0].name }}</span> >{{ item.name }}</span>
</router-link> </router-link>
<Disclosure <Disclosure
@@ -88,6 +90,7 @@
v-else v-else
class="nav-item collapsed-picbed" class="nav-item collapsed-picbed"
:title="t('navigation.picbed')" :title="t('navigation.picbed')"
@click="isCollapsed = !isCollapsed"
> >
<div class="nav-icon-container"> <div class="nav-icon-container">
<DatabaseIcon :size="18" /> <DatabaseIcon :size="18" />
@@ -95,7 +98,7 @@
</div> </div>
<router-link <router-link
v-for="item in navigationItems.slice(1)" v-for="item in navigationItems.slice(3)"
:key="item.path" :key="item.path"
:to="item.path" :to="item.path"
class="nav-item" class="nav-item"

View File

@@ -1,59 +1,61 @@
<template> <template>
<div class="toolbox-handler"> <div class="toolbox-handler">
<button <button
class="handler-button" class="handler-button"
@click="() => props.handler(value)" @click="() => props.handler(value)"
> >
{{ props.handlerText }} {{ props.handlerText }}
</button> </button>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
interface IProps { interface IProps {
status: string status: string
value: any value: any
handlerText: string handlerText: string
handler: (value: any) => void | Promise<void> handler: (value: any) => void | Promise<void>
} }
const props = defineProps<IProps>() const props = defineProps<IProps>()
</script> </script>
<script lang="ts">
export default { <script lang="ts">
name: 'ToolboxHandler' export default {
} name: 'ToolboxHandler'
</script> }
<style lang="stylus"> </script>
.toolbox-handler {
margin-top: 0.75rem; <style lang="stylus">
} .toolbox-handler {
margin-top: 0.75rem;
.handler-button { }
display: inline-flex;
align-items: center; .handler-button {
gap: 0.5rem; display: inline-flex;
padding: 0.5rem 1rem; align-items: center;
background: var(--color-accent); gap: 0.5rem;
color: white; padding: 0.5rem 1rem;
border: none; background: var(--color-accent);
border-radius: var(--radius-md); color: white;
font-size: 0.75rem; border: none;
font-weight: 500; border-radius: var(--radius-md);
cursor: pointer; font-size: 0.75rem;
transition: var(--transition-fast); font-weight: 500;
font-family: inherit; cursor: pointer;
text-decoration: none; transition: var(--transition-fast);
} font-family: inherit;
text-decoration: none;
.handler-button:hover { }
background: var(--color-accent-hover);
transform: translateY(-1px); .handler-button:hover {
box-shadow: var(--shadow-sm); background: var(--color-accent-hover);
} transform: translateY(-1px);
box-shadow: var(--shadow-sm);
.handler-button:active { }
transform: translateY(0);
} .handler-button:active {
</style> transform: translateY(0);
}
</style>

View File

@@ -620,6 +620,7 @@
"prepareDownload": "Preparing to download, click to cancel", "prepareDownload": "Preparing to download, click to cancel",
"keepDirStructure": "Keep directory structure", "keepDirStructure": "Keep directory structure",
"noKeepDirStructure": "Do not keep directory structure", "noKeepDirStructure": "Do not keep directory structure",
"uploadFile": "Upload File",
"dragUpload": "Drag and drop upload supports directories", "dragUpload": "Drag and drop upload supports directories",
"clickUpload": "Or: Click to select files", "clickUpload": "Or: Click to select files",
"readingDir": "Reading, please wait", "readingDir": "Reading, please wait",

View File

@@ -615,6 +615,7 @@
"prepareDownload": "准备下载中,点击取消", "prepareDownload": "准备下载中,点击取消",
"keepDirStructure": "保持目录结构", "keepDirStructure": "保持目录结构",
"noKeepDirStructure": "不保持目录结构", "noKeepDirStructure": "不保持目录结构",
"uploadFile": "上传文件",
"dragUpload": "拖拽上传 支持目录", "dragUpload": "拖拽上传 支持目录",
"clickUpload": "或: 点击选择文件", "clickUpload": "或: 点击选择文件",
"readingDir": "读取中,请稍候", "readingDir": "读取中,请稍候",

View File

@@ -615,6 +615,7 @@
"prepareDownload": "正在準備下載,點擊取消", "prepareDownload": "正在準備下載,點擊取消",
"keepDirStructure": "保持目錄結構", "keepDirStructure": "保持目錄結構",
"noKeepDirStructure": "不保持目錄結構", "noKeepDirStructure": "不保持目錄結構",
"uploadFile": "上傳檔案",
"dragUpload": "拖曳上傳 支援目錄", "dragUpload": "拖曳上傳 支援目錄",
"clickUpload": "或: 點擊選擇檔案", "clickUpload": "或: 點擊選擇檔案",
"readingDir": "讀取中,請稍候", "readingDir": "讀取中,請稍候",

View File

@@ -956,7 +956,7 @@
> >
<div class="drawer-header"> <div class="drawer-header">
<h3 class="drawer-title"> <h3 class="drawer-title">
Upload Files {{ t('pages.manage.bucket.uploadFile') }}
</h3> </h3>
<div class="switch-container"> <div class="switch-container">
<label class="switch"> <label class="switch">

View File

@@ -862,7 +862,7 @@ input:checked + .switch-slider:before {
/* Drawer */ /* Drawer */
.drawer-overlay { .drawer-overlay {
position: fixed; position: fixed;
top: 0; top: 32px;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
@@ -873,7 +873,7 @@ input:checked + .switch-slider:before {
} }
.drawer-container { .drawer-container {
background: var(--color-surface); background: var(--color-background-secondary);
width: 60%; width: 60%;
max-width: 800px; max-width: 800px;
height: 100%; height: 100%;