bfg-common 1.5.186 → 1.5.188

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/assets/localization/local_be.json +1 -0
  2. package/assets/localization/local_en.json +1 -0
  3. package/assets/localization/local_hy.json +1 -0
  4. package/assets/localization/local_kk.json +1 -0
  5. package/assets/localization/local_ru.json +2 -1
  6. package/assets/localization/local_zh.json +1 -0
  7. package/assets/scss/clarity/local_ar.json +1 -0
  8. package/components/common/split/horizontal/HorizontalNew.vue +376 -379
  9. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +109 -73
  10. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +19 -10
  11. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +1 -0
  12. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +22 -14
  13. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/hotPlug/HotPlugNew.vue +1 -0
  14. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +16 -6
  15. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +30 -13
  16. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/hotPlug/HotPlugNew.vue +1 -0
  17. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +41 -8
  18. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/file/FileNew.vue +1 -1
  19. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +0 -4
  20. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +21 -14
  21. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/ReservationNew.vue +1 -0
  22. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +0 -4
  23. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +1 -0
  24. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +1 -0
  25. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +1 -0
  26. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +1 -0
  27. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +1 -0
  28. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +1 -0
  29. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsNew.vue +1 -0
  30. package/lib/utils/utils.ts +48 -31
  31. package/package.json +2 -2
@@ -1,379 +1,376 @@
1
- <template>
2
- <!-- TODO нужно объеденить с компонентой Horizontal.vue-->
3
- <div
4
- :id="elementId"
5
- :class="['fill-parent horizontal', { dragging: isDrag }]"
6
- >
7
- <div class="firstPanel" :style="leftPanelStyle">
8
- <div class="left-panel">
9
- <div
10
- v-if="props.showToggleButton"
11
- :class="['panel-toggle', { collapsed: leftPanelCollapsed }]"
12
- >
13
- <div
14
- v-show="!leftPanelCollapsed"
15
- class="left-panel-toggle-content-block"
16
- >
17
- <slot name="toggleContent" />
18
- </div>
19
- <button
20
- id="collapse-left-panel-button"
21
- data-id="collapse-left-panel-button"
22
- class="btn-trigger"
23
- @click="collapseLeftPanel"
24
- >
25
- <ui-icon-icon2 name="tree-arrow" />
26
- </button>
27
- </div>
28
-
29
- <div v-show="!leftPanelCollapsed" class="navigator">
30
- <slot name="firstPanel" />
31
- </div>
32
- </div>
33
- </div>
34
- <div
35
- v-show="!leftPanelCollapsed"
36
- :id="`gutter-${elementId}`"
37
- class="gutter gutter-horizontal"
38
- tabindex="0"
39
- @mousedown="isGrab = true"
40
- @focus="isFocus = true"
41
- @blur="isFocus = false"
42
- >
43
- <div class="gutter-horizontal-handler"></div>
44
- </div>
45
-
46
- <div class="secondPanel right" :style="rightPanelStyle">
47
- <slot name="secondPanel" />
48
- </div>
49
- </div>
50
- </template>
51
-
52
- <script setup lang="ts">
53
- import { isRtl } from '~/node_modules/bfg-uikit/lib/config/trl'
54
-
55
- const props = withDefaults(
56
- defineProps<{
57
- parentElementSelector: string
58
- leftPanelW?: number
59
- leftPanelMinWidth?: number
60
- rightPanelMinWidth?: number
61
- showToggleButton?: boolean
62
- hideLeftPanel?: boolean
63
- }>(),
64
- {
65
- leftPanelMinWidth: 200, // 200px
66
- rightPanelMinWidth: 200, // 200px
67
- leftPanelW: undefined,
68
- showToggleButton: true,
69
- hideLeftPanel: false,
70
- }
71
- )
72
- const emits = defineEmits<{
73
- (event: 'dragend', value: number): void
74
- }>()
75
-
76
- const leftPanelStyle = computed<any>(() => {
77
- let width = `calc(${leftPanelWLocal.value}% - 1.5px)`
78
- if (isRtl.value) {
79
- width = `calc(${100 - leftPanelWLocal.value}% - 1.5px)`
80
- }
81
- if (props.showToggleButton && leftPanelCollapsed.value) {
82
- width = '20px'
83
- }
84
- if (props.hideLeftPanel && leftPanelCollapsed.value) width = '0px'
85
-
86
- return { width }
87
- })
88
-
89
- const rightPanelStyle = computed<any>(() => {
90
- let width = `calc(${100 - leftPanelWLocal.value}% - 1.5px)`
91
- if (isRtl.value) {
92
- width = `calc(${leftPanelWLocal.value}% - 1.5px)`
93
- }
94
- if (props.showToggleButton && leftPanelCollapsed.value) {
95
- width = 'calc(100% - 20px)'
96
- }
97
-
98
- if (props.hideLeftPanel && leftPanelCollapsed.value)
99
- width = 'calc(100% - 0px)'
100
-
101
- return { width }
102
- })
103
- const leftPanelCollapsed = ref<boolean>(false)
104
- const collapseLeftPanel = (): void => {
105
- leftPanelCollapsed.value = !leftPanelCollapsed.value
106
-
107
- checkLeftPanelWidth()
108
- }
109
-
110
- const isGrab = ref<boolean>(false)
111
- const isFocus = ref<boolean>(false)
112
- const isDrag = ref<boolean>(false)
113
- const leftPanelWLocal = ref<number>(20) // 0%
114
- watch(
115
- () => props.leftPanelW,
116
- (newValue) => {
117
- if (newValue === undefined) return
118
- leftPanelWLocal.value = newValue
119
- },
120
- { immediate: true }
121
- )
122
-
123
- watch(
124
- () => props.hideLeftPanel,
125
- () => {
126
- collapseLeftPanel()
127
- }
128
- )
129
-
130
- let parentElem: HTMLElement | null
131
- const mouseup = (): void => {
132
- if (!isGrab.value) {
133
- return
134
- }
135
-
136
- isGrab.value = false
137
- isDrag.value = false
138
-
139
- emits('dragend', leftPanelWLocal.value)
140
- }
141
-
142
- let mousemove = (event: MouseEvent): void => {
143
- if (!isGrab.value) return
144
-
145
- event.preventDefault()
146
- isDrag.value = true
147
- doDrag(event.clientX)
148
- }
149
- mousemove = useThrottle(mousemove)
150
-
151
- const doDrag = (clientX: number): void => {
152
- const parentElemRect = parentElem?.getBoundingClientRect()
153
- const parentElemWidth = parentElemRect?.width || 0
154
- const parentElemLeft = parentElemRect?.left || 0
155
- const onePercent = parentElemWidth / 100
156
- const layerX = clientX - parentElemLeft
157
-
158
- const leftLimit = layerX <= props.leftPanelMinWidth
159
- const rightLimit = parentElemWidth - layerX <= props.rightPanelMinWidth
160
- if (leftLimit || rightLimit) return
161
-
162
- leftPanelWLocal.value = layerX / onePercent
163
- }
164
-
165
- const elementId = `horizontal${useUniqueId()}`
166
-
167
- const keydown = (event: KeyboardEvent): void => {
168
- if (!isFocus.value) return
169
-
170
- const gutter = document.getElementById(`gutter-${elementId}`)
171
-
172
- if (!gutter) return
173
-
174
- const gutterLeft = ~~(gutter.getBoundingClientRect().left + 1.5)
175
-
176
- if (event.keyCode === 39) {
177
- doDrag(gutterLeft + 10)
178
- }
179
- if (event.keyCode === 37) {
180
- doDrag(gutterLeft - 10)
181
- }
182
- }
183
- const checkLeftPanelWidth = (): void => {
184
- const firstElem = document.querySelector(
185
- `${props.parentElementSelector} .firstPanel`
186
- )
187
-
188
- if (!firstElem) return
189
-
190
- firstElem.style.minWidth = leftPanelCollapsed.value
191
- ? 'unset'
192
- : props.leftPanelMinWidth + 'px'
193
- }
194
- onMounted(() => {
195
- parentElem = document.querySelector(props.parentElementSelector)
196
-
197
- window.addEventListener('mousemove', mousemove)
198
- window.addEventListener('mouseup', mouseup)
199
- window.addEventListener('keydown', keydown)
200
- checkLeftPanelWidth()
201
- })
202
- onUnmounted(() => {
203
- window.removeEventListener('mouseup', mouseup)
204
- window.removeEventListener('mousemove', mousemove)
205
- window.removeEventListener('keydown', keydown)
206
- })
207
- </script>
208
-
209
- <style>
210
- :root.is-new-view {
211
- --split-horizontal-border-color: #e9ebed;
212
- --horizontal-panel-bg-color: #fff;
213
- --trigger-bg-color: #e9ebeda3;
214
- --trigger-color: #213444;
215
- --new-gutter-bg-color: #e9ebed;
216
- --new-gutter-hover-bg-color: #008fd6;
217
- --new-gutter-before-bg-color: rgba(255, 255, 255, 0.8);
218
-
219
- /*rtl*/
220
- --horizontal-split-button-border-radius: 4px 0 0 4px;
221
- --horizontal-split-button-border-radius-collapsed: 0 4px 4px 0;
222
- --horizontal-split-button-rotate: 90deg;
223
- --horizontal-split-button-rotate-collapsed: -90deg;
224
- }
225
- :root.dark-theme {
226
- --split-horizontal-border-color: #e9ebed1f;
227
- --horizontal-panel-bg-color: #213444;
228
- --trigger-bg-color: #314352;
229
- --trigger-color: #e9ebed;
230
- --new-gutter-bg-color: #394a58;
231
- --new-gutter-hover-bg-color: #2ba2de;
232
- --new-gutter-before-bg-color: rgba(33, 52, 68, 0.8);
233
- }
234
- :root.is-new-view[dir='rtl'] {
235
- --horizontal-split-button-border-radius: 0 4px 4px 0;
236
- --horizontal-split-button-border-radius-collapsed: 4px 0 0 4px;
237
- --horizontal-split-button-rotate: -90deg;
238
- --horizontal-split-button-rotate-collapsed: 90deg;
239
- }
240
- </style>
241
-
242
- <style scoped lang="scss">
243
- @import '@/assets/scss/common/mixins';
244
- .horizontal {
245
- &.dragging {
246
- .gutter-horizontal.gutter {
247
- background-color: var(--gutter-active-bg-color);
248
-
249
- &:before {
250
- background-color: var(--new-gutter-before-bg-color);
251
- }
252
- }
253
- }
254
- .firstPanel {
255
- width: calc(50% - 1.5px);
256
- background-color: var(--center-pane-container);
257
-
258
- .left-panel {
259
- @include flex($dir: column);
260
- width: 100%;
261
- height: 100%;
262
-
263
- .panel-toggle {
264
- display: flex;
265
- align-items: center;
266
- justify-content: space-between;
267
- min-height: 48px;
268
- border-bottom: 1px solid var(--split-horizontal-border-color);
269
- background-color: var(--horizontal-panel-bg-color);
270
-
271
- &.collapsed {
272
- border: none;
273
-
274
- .btn-trigger {
275
- border-radius: var(
276
- --horizontal-split-button-border-radius-collapsed
277
- );
278
-
279
- :deep(svg) {
280
- transform: rotate(
281
- var(--horizontal-split-button-rotate-collapsed)
282
- );
283
- }
284
- }
285
- }
286
-
287
- .btn-trigger {
288
- @include flex($align: center, $just: center);
289
- width: 16px;
290
- height: 32px;
291
- flex: 0 0 16px;
292
- border: 0;
293
- padding: 0;
294
- margin: 0;
295
- background-color: var(--trigger-bg-color);
296
- color: var(--trigger-color);
297
- outline: none;
298
- cursor: pointer;
299
- border-radius: var(--horizontal-split-button-border-radius);
300
-
301
- :deep(svg) {
302
- transform: rotate(var(--horizontal-split-button-rotate));
303
- }
304
- }
305
- }
306
- .navigator {
307
- overflow: hidden;
308
- height: 100%;
309
-
310
- .panel-inner {
311
- position: relative;
312
- height: 100%;
313
- background: var(--horizontal-panel-bg-color);
314
- border-radius: 0;
315
- border: 0;
316
-
317
- &.inventory-tree {
318
- padding-left: 4px;
319
- padding-top: 6px;
320
- }
321
- }
322
- }
323
- }
324
- }
325
- .gutter-horizontal {
326
- position: relative;
327
- width: 4px;
328
- //background-color: var(--gutter-bg-color);
329
- background-color: var(--new-gutter-bg-color);
330
- transition-delay: 0.25s;
331
- transition-duration: 0.25s;
332
-
333
- &-handler {
334
- position: absolute;
335
- height: 100%;
336
- width: 10px;
337
- background: transparent;
338
- top: 0;
339
- left: -3.5px;
340
- z-index: calc(var(--z-default) + 2);
341
- }
342
-
343
- //&:focus {
344
- // background-color: var(--gutter-active-bg-color);
345
- // outline: none;
346
- //}
347
-
348
- &:hover {
349
- background-color: var(--new-gutter-hover-bg-color);
350
- cursor: col-resize;
351
- &:before {
352
- background-color: hsla(0, 0%, 100%, 0.5);
353
- box-shadow: inset 0 0 0 1px rgb(0 0 0 / 10%);
354
- }
355
- }
356
-
357
- &:before {
358
- content: '';
359
- position: relative;
360
- display: block;
361
- background: var(--gutter-before-bg);
362
- transition-delay: 0.25s;
363
- transition-duration: 0.25s;
364
- width: 2px;
365
- margin-left: 1px;
366
- border-radius: 4px;
367
- height: 24px;
368
- top: calc(50% - 12.5px);
369
- }
370
- }
371
- .secondPanel {
372
- width: calc(50% - 1.5px);
373
- &.right {
374
- overflow: hidden;
375
- height: 100%;
376
- }
377
- }
378
- }
379
- </style>
1
+ <template>
2
+ <!-- TODO нужно объеденить с компонентой Horizontal.vue-->
3
+ <div
4
+ :id="elementId"
5
+ :class="['fill-parent horizontal', { dragging: isDrag }]"
6
+ >
7
+ <div class="firstPanel" :style="leftPanelStyle">
8
+ <div class="left-panel">
9
+ <div
10
+ v-if="props.showToggleButton"
11
+ :class="['panel-toggle', { collapsed: leftPanelCollapsed }]"
12
+ >
13
+ <div v-show="!leftPanelCollapsed">
14
+ <slot name="toggleContent" />
15
+ </div>
16
+ <button
17
+ id="collapse-left-panel-button"
18
+ data-id="collapse-left-panel-button"
19
+ class="btn-trigger"
20
+ @click="collapseLeftPanel"
21
+ >
22
+ <ui-icon-icon2 name="tree-arrow" />
23
+ </button>
24
+ </div>
25
+
26
+ <div v-show="!leftPanelCollapsed" class="navigator">
27
+ <slot name="firstPanel" />
28
+ </div>
29
+ </div>
30
+ </div>
31
+ <div
32
+ v-show="!leftPanelCollapsed"
33
+ :id="`gutter-${elementId}`"
34
+ class="gutter gutter-horizontal"
35
+ tabindex="0"
36
+ @mousedown="isGrab = true"
37
+ @focus="isFocus = true"
38
+ @blur="isFocus = false"
39
+ >
40
+ <div class="gutter-horizontal-handler"></div>
41
+ </div>
42
+
43
+ <div class="secondPanel right" :style="rightPanelStyle">
44
+ <slot name="secondPanel" />
45
+ </div>
46
+ </div>
47
+ </template>
48
+
49
+ <script setup lang="ts">
50
+ import { isRtl } from '~/node_modules/bfg-uikit/lib/config/trl'
51
+
52
+ const props = withDefaults(
53
+ defineProps<{
54
+ parentElementSelector: string
55
+ leftPanelW?: number
56
+ leftPanelMinWidth?: number
57
+ rightPanelMinWidth?: number
58
+ showToggleButton?: boolean
59
+ hideLeftPanel?: boolean
60
+ }>(),
61
+ {
62
+ leftPanelMinWidth: 200, // 200px
63
+ rightPanelMinWidth: 200, // 200px
64
+ leftPanelW: undefined,
65
+ showToggleButton: true,
66
+ hideLeftPanel: false,
67
+ }
68
+ )
69
+ const emits = defineEmits<{
70
+ (event: 'dragend', value: number): void
71
+ }>()
72
+
73
+ const leftPanelStyle = computed<any>(() => {
74
+ let width = `calc(${leftPanelWLocal.value}% - 1.5px)`
75
+ if (isRtl.value) {
76
+ width = `calc(${100 - leftPanelWLocal.value}% - 1.5px)`
77
+ }
78
+ if (props.showToggleButton && leftPanelCollapsed.value) {
79
+ width = '20px'
80
+ }
81
+ if (props.hideLeftPanel && leftPanelCollapsed.value) width = '0px'
82
+
83
+ return { width }
84
+ })
85
+
86
+ const rightPanelStyle = computed<any>(() => {
87
+ let width = `calc(${100 - leftPanelWLocal.value}% - 1.5px)`
88
+ if (isRtl.value) {
89
+ width = `calc(${leftPanelWLocal.value}% - 1.5px)`
90
+ }
91
+ if (props.showToggleButton && leftPanelCollapsed.value) {
92
+ width = 'calc(100% - 20px)'
93
+ }
94
+
95
+ if (props.hideLeftPanel && leftPanelCollapsed.value)
96
+ width = 'calc(100% - 0px)'
97
+
98
+ return { width }
99
+ })
100
+ const leftPanelCollapsed = ref<boolean>(false)
101
+ const collapseLeftPanel = (): void => {
102
+ leftPanelCollapsed.value = !leftPanelCollapsed.value
103
+
104
+ checkLeftPanelWidth()
105
+ }
106
+
107
+ const isGrab = ref<boolean>(false)
108
+ const isFocus = ref<boolean>(false)
109
+ const isDrag = ref<boolean>(false)
110
+ const leftPanelWLocal = ref<number>(20) // 0%
111
+ watch(
112
+ () => props.leftPanelW,
113
+ (newValue) => {
114
+ if (newValue === undefined) return
115
+ leftPanelWLocal.value = newValue
116
+ },
117
+ { immediate: true }
118
+ )
119
+
120
+ watch(
121
+ () => props.hideLeftPanel,
122
+ () => {
123
+ collapseLeftPanel()
124
+ }
125
+ )
126
+
127
+ let parentElem: HTMLElement | null
128
+ const mouseup = (): void => {
129
+ if (!isGrab.value) {
130
+ return
131
+ }
132
+
133
+ isGrab.value = false
134
+ isDrag.value = false
135
+
136
+ emits('dragend', leftPanelWLocal.value)
137
+ }
138
+
139
+ let mousemove = (event: MouseEvent): void => {
140
+ if (!isGrab.value) return
141
+
142
+ event.preventDefault()
143
+ isDrag.value = true
144
+ doDrag(event.clientX)
145
+ }
146
+ mousemove = useThrottle(mousemove)
147
+
148
+ const doDrag = (clientX: number): void => {
149
+ const parentElemRect = parentElem?.getBoundingClientRect()
150
+ const parentElemWidth = parentElemRect?.width || 0
151
+ const parentElemLeft = parentElemRect?.left || 0
152
+ const onePercent = parentElemWidth / 100
153
+ const layerX = clientX - parentElemLeft
154
+
155
+ const leftLimit = layerX <= props.leftPanelMinWidth
156
+ const rightLimit = parentElemWidth - layerX <= props.rightPanelMinWidth
157
+ if (leftLimit || rightLimit) return
158
+
159
+ leftPanelWLocal.value = layerX / onePercent
160
+ }
161
+
162
+ const elementId = `horizontal${useUniqueId()}`
163
+
164
+ const keydown = (event: KeyboardEvent): void => {
165
+ if (!isFocus.value) return
166
+
167
+ const gutter = document.getElementById(`gutter-${elementId}`)
168
+
169
+ if (!gutter) return
170
+
171
+ const gutterLeft = ~~(gutter.getBoundingClientRect().left + 1.5)
172
+
173
+ if (event.keyCode === 39) {
174
+ doDrag(gutterLeft + 10)
175
+ }
176
+ if (event.keyCode === 37) {
177
+ doDrag(gutterLeft - 10)
178
+ }
179
+ }
180
+ const checkLeftPanelWidth = (): void => {
181
+ const firstElem = document.querySelector(
182
+ `${props.parentElementSelector} .firstPanel`
183
+ )
184
+
185
+ if (!firstElem) return
186
+
187
+ firstElem.style.minWidth = leftPanelCollapsed.value
188
+ ? 'unset'
189
+ : props.leftPanelMinWidth + 'px'
190
+ }
191
+ onMounted(() => {
192
+ parentElem = document.querySelector(props.parentElementSelector)
193
+
194
+ window.addEventListener('mousemove', mousemove)
195
+ window.addEventListener('mouseup', mouseup)
196
+ window.addEventListener('keydown', keydown)
197
+ checkLeftPanelWidth()
198
+ })
199
+ onUnmounted(() => {
200
+ window.removeEventListener('mouseup', mouseup)
201
+ window.removeEventListener('mousemove', mousemove)
202
+ window.removeEventListener('keydown', keydown)
203
+ })
204
+ </script>
205
+
206
+ <style>
207
+ :root.is-new-view {
208
+ --split-horizontal-border-color: #e9ebed;
209
+ --horizontal-panel-bg-color: #fff;
210
+ --trigger-bg-color: #e9ebed;
211
+ --trigger-color: #213444;
212
+ --new-gutter-bg-color: #e9ebed;
213
+ --new-gutter-hover-bg-color: #008fd6;
214
+ --new-gutter-before-bg-color: rgba(255, 255, 255, 0.8);
215
+
216
+ /*rtl*/
217
+ --horizontal-split-button-border-radius: 4px 0 0 4px;
218
+ --horizontal-split-button-border-radius-collapsed: 0 4px 4px 0;
219
+ --horizontal-split-button-rotate: 90deg;
220
+ --horizontal-split-button-rotate-collapsed: -90deg;
221
+ }
222
+ :root.dark-theme {
223
+ --split-horizontal-border-color: #e9ebed1f;
224
+ --horizontal-panel-bg-color: #213444;
225
+ --trigger-bg-color: #314352;
226
+ --trigger-color: #e9ebed;
227
+ --new-gutter-bg-color: #394a58;
228
+ --new-gutter-hover-bg-color: #2ba2de;
229
+ --new-gutter-before-bg-color: rgba(33, 52, 68, 0.8);
230
+ }
231
+ :root.is-new-view[dir='rtl'] {
232
+ --horizontal-split-button-border-radius: 0 4px 4px 0;
233
+ --horizontal-split-button-border-radius-collapsed: 4px 0 0 4px;
234
+ --horizontal-split-button-rotate: -90deg;
235
+ --horizontal-split-button-rotate-collapsed: 90deg;
236
+ }
237
+ </style>
238
+
239
+ <style scoped lang="scss">
240
+ @import '@/assets/scss/common/mixins';
241
+ .horizontal {
242
+ &.dragging {
243
+ .gutter-horizontal.gutter {
244
+ background-color: var(--gutter-active-bg-color);
245
+
246
+ &:before {
247
+ background-color: var(--new-gutter-before-bg-color);
248
+ }
249
+ }
250
+ }
251
+ .firstPanel {
252
+ width: calc(50% - 1.5px);
253
+ background-color: var(--center-pane-container);
254
+
255
+ .left-panel {
256
+ @include flex($dir: column);
257
+ width: 100%;
258
+ height: 100%;
259
+
260
+ .panel-toggle {
261
+ display: flex;
262
+ align-items: center;
263
+ justify-content: space-between;
264
+ min-height: 48px;
265
+ border-bottom: 1px solid var(--split-horizontal-border-color);
266
+ background-color: var(--horizontal-panel-bg-color);
267
+
268
+ &.collapsed {
269
+ border: none;
270
+
271
+ .btn-trigger {
272
+ border-radius: var(
273
+ --horizontal-split-button-border-radius-collapsed
274
+ );
275
+
276
+ :deep(svg) {
277
+ transform: rotate(
278
+ var(--horizontal-split-button-rotate-collapsed)
279
+ );
280
+ }
281
+ }
282
+ }
283
+
284
+ .btn-trigger {
285
+ @include flex($align: center, $just: center);
286
+ width: 16px;
287
+ height: 32px;
288
+ flex: 0 0 16px;
289
+ border: 0;
290
+ padding: 0;
291
+ margin: 0;
292
+ background-color: var(--trigger-bg-color);
293
+ color: var(--trigger-color);
294
+ outline: none;
295
+ cursor: pointer;
296
+ border-radius: var(--horizontal-split-button-border-radius);
297
+
298
+ :deep(svg) {
299
+ transform: rotate(var(--horizontal-split-button-rotate));
300
+ }
301
+ }
302
+ }
303
+ .navigator {
304
+ overflow: hidden;
305
+ height: 100%;
306
+
307
+ .panel-inner {
308
+ position: relative;
309
+ height: 100%;
310
+ background: var(--horizontal-panel-bg-color);
311
+ border-radius: 0;
312
+ border: 0;
313
+
314
+ &.inventory-tree {
315
+ padding-left: 4px;
316
+ padding-top: 6px;
317
+ }
318
+ }
319
+ }
320
+ }
321
+ }
322
+ .gutter-horizontal {
323
+ position: relative;
324
+ width: 4px;
325
+ //background-color: var(--gutter-bg-color);
326
+ background-color: var(--new-gutter-bg-color);
327
+ transition-delay: 0.25s;
328
+ transition-duration: 0.25s;
329
+
330
+ &-handler {
331
+ position: absolute;
332
+ height: 100%;
333
+ width: 10px;
334
+ background: transparent;
335
+ top: 0;
336
+ left: -3.5px;
337
+ z-index: calc(var(--z-default) + 2);
338
+ }
339
+
340
+ //&:focus {
341
+ // background-color: var(--gutter-active-bg-color);
342
+ // outline: none;
343
+ //}
344
+
345
+ &:hover {
346
+ background-color: var(--new-gutter-hover-bg-color);
347
+ cursor: col-resize;
348
+ &:before {
349
+ background-color: hsla(0, 0%, 100%, 0.5);
350
+ box-shadow: inset 0 0 0 1px rgb(0 0 0 / 10%);
351
+ }
352
+ }
353
+
354
+ &:before {
355
+ content: '';
356
+ position: relative;
357
+ display: block;
358
+ background: var(--gutter-before-bg);
359
+ transition-delay: 0.25s;
360
+ transition-duration: 0.25s;
361
+ width: 2px;
362
+ margin-left: 1px;
363
+ border-radius: 4px;
364
+ height: 24px;
365
+ top: calc(50% - 12.5px);
366
+ }
367
+ }
368
+ .secondPanel {
369
+ width: calc(50% - 1.5px);
370
+ &.right {
371
+ overflow: hidden;
372
+ height: 100%;
373
+ }
374
+ }
375
+ }
376
+ </style>