diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1f65f25..5c10ff5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## [2.2.2](https://github.com/chaos-zhu/easynode/releases) (2024-08-xx)
+
+### Features
+
+* 支持菜单栏的折叠与展开 ✔
+
## [2.2.1](https://github.com/chaos-zhu/easynode/releases) (2024-08-18)
### Features
diff --git a/web/src/assets/scss/element/dark.scss b/web/src/assets/scss/element/dark.scss
index 794eeab..edb3016 100644
--- a/web/src/assets/scss/element/dark.scss
+++ b/web/src/assets/scss/element/dark.scss
@@ -64,94 +64,17 @@ html.dark {
}
// scroll-bar
- ::-webkit-scrollbar {
- background-color: var(--el-scrollbar-bg-color) !important;
- }
-
::-webkit-scrollbar-thumb {
- background-color: var(--el-border-color-darker) !important;
+ background-color: #5c5c5c;
+ border-radius: 10px;
+ transition: all .2s ease-in-out;
}
-
- .layout-sidebar-container {
- background-color: var(--bg-color) !important;
+ ::-webkit-scrollbar-thumb:hover {
+ cursor: pointer;
+ background-color: #6d6d6d;
}
- .app-main-container {
- background-color: var(--main-bg-color) !important;
-
- .card {
- background-color: var(--bg-color) !important;
- }
- }
-
- .layout-footer-container {
- color: var(--el-text-color-regular) !important;
- background-color: var(--main-bg-color) !important;
- }
-
- .fold-unfold {
- color: #fff !important;
- }
-
- // .el-menu,
- // .el-sub-menu,
- // .el-menu-item,
- // .el-sub-menu__title {
- // background-color: var(--bg-color) !important;
-
- // &:not(.is-active) {
- // color: #bdbdc0 !important;
- // }
-
- // &.is-active {
- // color: #fff !important;
- // background-color: #000 !important;
- // }
- // }
-
.el-menu-item:not(.is-active):hover {
color: var(--el-menu-active-color);
}
-
- .nav-bar-container {
- background-color: var(--bg-color) !important;
- }
-
- .table-header {
- .el-icon {
- color: #fff;
- }
- }
-
- .tabs-bar-container {
- background-color: var(--bg-color) !important;
- border-top: 1px solid var(--el-border-color-light) !important;
-
- .tabs-action {
- .el-icon {
- color: #fff !important;
- }
- }
-
- .fold-unfold {
- color: #fff;
- }
-
- .el-tabs__item.is-active {
- color: var(--el-color-primary);
- background-color: var(--main-bg-color) !important;
-
- .el-icon {
- color: var(--el-color-primary) !important;
- }
- }
-
- .el-tabs__item:not(.is_active):hover {
- background-color: var(--main-bg-color) !important;
-
- .el-icon {
- color: var(--el-color-primary) !important;
- }
- }
- }
}
diff --git a/web/src/assets/scss/global.scss b/web/src/assets/scss/global.scss
index ed16ea2..c04c282 100644
--- a/web/src/assets/scss/global.scss
+++ b/web/src/assets/scss/global.scss
@@ -1,35 +1,45 @@
// 滚动条
-html, body, div, ul, section, textarea {
+html,
+body,
+div,
+ul,
+section,
+textarea {
box-sizing: border-box;
+
// 滚动条整体部分
&::-webkit-scrollbar {
- height: 5px;
- width: 5px;
- background-color: #ffffff;
+ width: 6px;
+ height: 6px;
}
// 底层轨道
- &::-webkit-scrollbar-track {
- background-color: #ffffff;
- border-radius: 3px;
- }
+ // &::-webkit-scrollbar-track {
+ // background-color: #ffffff;
+ // border-radius: 3px;
+ // }
// 滚动滑块
&::-webkit-scrollbar-thumb {
- border-radius: 3px;
- // background-color: #1989fa;
- background-image: -webkit-gradient(linear, 40% 0%, 75% 84%, from(#a18cd1), to(#fbc2eb), color-stop(.6, #54DE5D));
+ background-color: #0003;
+ border-radius: 10px;
+ transition: all .2s ease-in-out;
}
&::-webkit-scrollbar-thumb:hover {
- background-color: #067ef7;
+ cursor: pointer;
+ background-color: #0000004d;
+ }
+
+ &::-webkit-scrollbar-track {
+ border-radius: 10px;
}
}
::view-transition-new(root),
::view-transition-old(root) {
-/* 关闭默认动画,否则影响自定义动画的执行 */
- animation: none;
+ /* 关闭默认动画,否则影响自定义动画的执行 */
+ animation: none;
}
// 全局背景
@@ -44,4 +54,4 @@ body {
.link {
color: var(--el-color-primary);
cursor: pointer;
-}
+}
\ No newline at end of file
diff --git a/web/src/views/terminal/components/terminal-tab.vue b/web/src/views/terminal/components/terminal-tab.vue
index a68b510..6a9ac37 100644
--- a/web/src/views/terminal/components/terminal-tab.vue
+++ b/web/src/views/terminal/components/terminal-tab.vue
@@ -240,19 +240,21 @@ const onResize = () => {
const handleResize = () => {
if (timer.value) clearTimeout(timer.value)
- timer.value = setTimeout(() => {
- // let temp = []
- // let panes = Array.from(document.getElementsByClassName('el-tab-pane'))
- // panes.forEach((item, index) => {
- // temp[index] = item.style.display
- // item.style.display = 'block'
- // })
- // panes.forEach((item, index) => {
- // item.style.display = temp[index]
- // })
+ timer.value = setTimeout(async () => {
+ // 由于非当前的el-tab-pane的display属性为none, 调用fitAddon.value?.fit()时无法获取宽高,因此先展示,再fit,最后再隐藏
+ let temp = []
+ let panes = Array.from(document.getElementsByClassName('el-tab-pane'))
+ panes.forEach((item, index) => {
+ temp[index] = item.style.display
+ item.style.display = 'block'
+ })
fitAddon.value?.fit()
let { rows, cols } = term.value
socket.value?.emit('resize', { rows, cols })
+
+ panes.forEach((item, index) => {
+ item.style.display = temp[index]
+ })
}, 200)
}
@@ -432,10 +434,12 @@ defineExpose({
height: 100%;
}
- :deep(.xterm-viewport),
+ :deep(.xterm-viewport) {
+ overflow-y: auto;
+ }
+
:deep(.xterm-screen) {
padding: 0 0 0 10px;
- border-radius: var(--el-border-radius-base);
}
}
.terminal_command_history {
diff --git a/web/src/views/terminal/components/terminal.vue b/web/src/views/terminal/components/terminal.vue
index ea92bb3..941a7f7 100644
--- a/web/src/views/terminal/components/terminal.vue
+++ b/web/src/views/terminal/components/terminal.vue
@@ -27,16 +27,22 @@
-
+