|
|
@@ -1,18 +1,59 @@
|
|
|
<template>
|
|
|
<div class="w-full h-full flex">
|
|
|
<div class="w-50px h-full bg-bg-sidebar flex flex-col items-center justify-between">
|
|
|
- <div class="flex-1">
|
|
|
- <ul class="list-none p-0 m-0">
|
|
|
- <li class="w-full h-40px flex items-center justify-center"><LuFiles /></li>
|
|
|
- <li class="w-full h-40px flex items-center justify-center"><LuBoxes /></li>
|
|
|
- <li class="w-full h-40px flex items-center justify-center"><LuBoxes /></li>
|
|
|
- <li class="w-full h-40px flex items-center justify-center"><LuBoxes /></li>
|
|
|
- <li class="w-full h-40px flex items-center justify-center"><LuBoxes /></li>
|
|
|
+ <div class="w-full flex-1">
|
|
|
+ <ul class="list-none p-0 m-0 text-12px text-text-secondary sidebar-menu">
|
|
|
+ <li
|
|
|
+ class="sidebar-menu-item"
|
|
|
+ v-for="item in sidebarMenu"
|
|
|
+ :key="item.key"
|
|
|
+ :class="activeMenu === item.key ? 'text-text-active bg-bg-primary' : ''"
|
|
|
+ @click="activeMenu = item.key"
|
|
|
+ >
|
|
|
+ <el-tooltip
|
|
|
+ :content="item.tooltip"
|
|
|
+ :enterable="false"
|
|
|
+ placement="right"
|
|
|
+ trigger="hover"
|
|
|
+ :focus-on-show="false"
|
|
|
+ >
|
|
|
+ <component :is="item.title" />
|
|
|
+ </el-tooltip>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ <div class="w-full flex flex-col">
|
|
|
+ <ul class="list-none p-0 m-0 text-12px text-text-secondary">
|
|
|
+ <li class="sidebar-menu-item"><LuSettings2 /></li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
- <div class="flex flex-col"></div>
|
|
|
</div>
|
|
|
- <div class="flex-1">
|
|
|
+ <!-- 目录大纲 -->
|
|
|
+ <div class="flex-1" v-show="activeMenu === 'file'"></div>
|
|
|
+ <!-- 控件库 -->
|
|
|
+ <div class="flex-1" v-show="activeMenu === 'widget'">
|
|
|
+ <SplitterCollapse>
|
|
|
+ <SplitterCollapseItem title="屏幕页面" name="page" :min="200"> </SplitterCollapseItem>
|
|
|
+ <SplitterCollapseItem title="页面大纲" name="hierarchy"> </SplitterCollapseItem>
|
|
|
+ </SplitterCollapse>
|
|
|
+ </div>
|
|
|
+ <!-- 资源管理 -->
|
|
|
+ <div class="flex-1" v-show="activeMenu === 'resource'">
|
|
|
+ <SplitterCollapse>
|
|
|
+ <SplitterCollapseItem title="图片" name="image" :min="200"> </SplitterCollapseItem>
|
|
|
+ <SplitterCollapseItem title="字体" name="font"> </SplitterCollapseItem>
|
|
|
+ <SplitterCollapseItem title="其他数据" name="other"> </SplitterCollapseItem>
|
|
|
+ </SplitterCollapse>
|
|
|
+ </div>
|
|
|
+ <!-- 代码查看 -->
|
|
|
+ <div class="flex-1" v-show="activeMenu === 'code'">
|
|
|
+ <SplitterCollapse>
|
|
|
+ <SplitterCollapseItem title="屏幕页面" name="page" :min="200"> </SplitterCollapseItem>
|
|
|
+ <SplitterCollapseItem title="页面大纲" name="hierarchy"> </SplitterCollapseItem>
|
|
|
+ </SplitterCollapse>
|
|
|
+ </div>
|
|
|
+ <!-- json预览 -->
|
|
|
+ <div class="flex-1" v-show="activeMenu === 'json'">
|
|
|
<SplitterCollapse>
|
|
|
<SplitterCollapseItem title="屏幕页面" name="page" :min="200"> </SplitterCollapseItem>
|
|
|
<SplitterCollapseItem title="页面大纲" name="hierarchy"> </SplitterCollapseItem>
|
|
|
@@ -22,8 +63,42 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
+import { ref, h } from 'vue'
|
|
|
import { SplitterCollapse, SplitterCollapseItem } from '@/components/SplitterCollapse'
|
|
|
-import { LuFiles, LuBoxes } from 'vue-icons-plus/lu';
|
|
|
+import { LuFiles, LuBoxes, LuFileStack, LuSquareCode, LuSettings2 } from 'vue-icons-plus/lu'
|
|
|
+import { useI18n } from 'vue-i18n'
|
|
|
+
|
|
|
+const { t } = useI18n()
|
|
|
+
|
|
|
+const sidebarMenu = [
|
|
|
+ {
|
|
|
+ key: 'file',
|
|
|
+ title: LuFiles,
|
|
|
+ tooltip: t('directory')
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'widget',
|
|
|
+ title: LuBoxes,
|
|
|
+ tooltip: t('widgetLibrary')
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'resource',
|
|
|
+ title: LuFileStack,
|
|
|
+ tooltip: t('resourceManager')
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'code',
|
|
|
+ title: LuSquareCode,
|
|
|
+ tooltip: t('codeView')
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: 'json',
|
|
|
+ title: h('span', null, 'JSON'),
|
|
|
+ tooltip: t('projectJSON')
|
|
|
+ }
|
|
|
+]
|
|
|
+
|
|
|
+const activeMenu = ref('file')
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="less">
|
|
|
@@ -33,4 +108,15 @@ import { LuFiles, LuBoxes } from 'vue-icons-plus/lu';
|
|
|
box-sizing: border-box;
|
|
|
}
|
|
|
}
|
|
|
+.sidebar-menu-item {
|
|
|
+ width: 100%;
|
|
|
+ height: 40px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ cursor: pointer;
|
|
|
+ &:hover {
|
|
|
+ color: var(--text-primary);
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|