0">
+
0" [class.collapsed]="commandsCollapsed">
{{ 'HistoryCommands' | translate }} ({{ commands.length }})
+
-
+
diff --git a/src/app/elements/replay/guacamole/guacamole.component.scss b/src/app/elements/replay/guacamole/guacamole.component.scss
index c53afe289..5ffc0e484 100644
--- a/src/app/elements/replay/guacamole/guacamole.component.scss
+++ b/src/app/elements/replay/guacamole/guacamole.component.scss
@@ -1,4 +1,3 @@
-// 保持原有的 player ID 选择器以保证兼容性
#player {
width: 100%;
height: 100%;
@@ -441,14 +440,25 @@ input[type="range"]:focus::-ms-fill-upper {
overflow: hidden;
.commands {
- width: 250px;
- min-width: 250px;
- max-width: 250px;
+ width: 280px;
+ min-width: 200px;
+ max-width: 400px;
background: var(--el-asset-tree-bg-color);
border-right: 1px solid var(--el-border-color-x);
display: flex;
flex-direction: column;
flex-shrink: 0;
+ resize: horizontal;
+ overflow: hidden;
+ transition: width 0.3s ease, min-width 0.3s ease;
+
+ &.collapsed {
+ width: 0;
+ min-width: 0;
+ max-width: 0;
+ resize: none;
+ border-right: none;
+ }
.commands-header {
padding: 12px 16px;
@@ -457,6 +467,26 @@ input[type="range"]:focus::-ms-fill-upper {
font-size: 13px;
font-weight: 500;
color: #ffffff;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .toggle-btn {
+ background: transparent;
+ border: none;
+ color: var(--el-text-color-light);
+ cursor: pointer;
+ padding: 4px;
+ border-radius: 3px;
+
+ &:hover {
+ background: var(--el-dropdown-hover-bg-color);
+ }
+
+ i {
+ font-size: 12px;
+ }
+ }
}
.commands-list {
@@ -519,6 +549,33 @@ input[type="range"]:focus::-ms-fill-upper {
width: 100%;
}
+ .show-commands-btn {
+ position: absolute;
+ top: 12px;
+ left: 12px;
+ z-index: 10;
+ background: var(--el-org-bg-color);
+ border: 1px solid var(--el-border-color-x);
+ color: var(--el-text-color-light);
+ padding: 8px 12px;
+ border-radius: 4px;
+ cursor: pointer;
+ font-size: 12px;
+ display: none;
+
+ &:hover {
+ background: var(--el-dropdown-hover-bg-color);
+ }
+
+ i {
+ margin-right: 4px;
+ }
+ }
+
+ &.commands-hidden .show-commands-btn {
+ display: block;
+ }
+
.screen {
width: 100%;
height: 100%;
@@ -726,9 +783,21 @@ input[type="range"]:focus::-ms-fill-upper {
.player-container {
.display .content {
.commands {
- width: 200px;
- min-width: 200px;
- max-width: 200px;
+ width: 220px;
+ min-width: 180px;
+ max-width: 300px;
+ }
+ }
+ }
+}
+
+@media (min-width: 1400px) {
+ .player-container {
+ .display .content {
+ .commands {
+ width: 320px;
+ min-width: 250px;
+ max-width: 450px;
}
}
}
diff --git a/src/app/elements/replay/guacamole/guacamole.component.ts b/src/app/elements/replay/guacamole/guacamole.component.ts
index 8e1b2c06f..7275f3cff 100644
--- a/src/app/elements/replay/guacamole/guacamole.component.ts
+++ b/src/app/elements/replay/guacamole/guacamole.component.ts
@@ -47,6 +47,7 @@ export class ElementReplayGuacamoleComponent implements OnInit, OnChanges, After
lastDuration: number = 0;
interval: number;
initializedCommand: boolean = false;
+ commandsCollapsed: boolean = false;
constructor(
private _http: HttpService,
@@ -445,4 +446,8 @@ export class ElementReplayGuacamoleComponent implements OnInit, OnChanges, After
}
});
}
+
+ toggleCommands() {
+ this.commandsCollapsed = !this.commandsCollapsed;
+ }
}
diff --git a/src/app/elements/replay/parts/parts.component.html b/src/app/elements/replay/parts/parts.component.html
index 89d3c81e4..f506cdd96 100644
--- a/src/app/elements/replay/parts/parts.component.html
+++ b/src/app/elements/replay/parts/parts.component.html
@@ -31,10 +31,14 @@
+
-
+
+
-
+
-
{{ 'Play List' | translate }}
- ({{ folders?.length || 0 }}) +
+
+ {{ 'Play List' | translate }}
+ ({{ folders?.length || 0 }}) +
+
+