bfg-common 1.4.582 → 1.4.583

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 (118) hide show
  1. package/assets/img/icons/icons-sprite-dark-1.svg +23 -53
  2. package/assets/img/icons/icons-sprite-dark-2.svg +1 -5
  3. package/assets/img/icons/icons-sprite-dark-4.svg +3 -7
  4. package/assets/img/icons/icons-sprite-dark-6.svg +92 -92
  5. package/assets/img/icons/icons-sprite-light-1.svg +23 -53
  6. package/assets/img/icons/icons-sprite-light-2.svg +1 -5
  7. package/assets/img/icons/icons-sprite-light-4.svg +3 -7
  8. package/assets/img/icons/icons-sprite-light-6.svg +92 -92
  9. package/assets/scss/common/icons/icons-6.scss +156 -156
  10. package/assets/scss/common/theme.scss +9 -1
  11. package/components/atoms/TheIcon3.vue +50 -50
  12. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  13. package/components/atoms/stack/StackBlock.vue +185 -185
  14. package/components/atoms/table/dataGrid/DataGrid.vue +1633 -1633
  15. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  16. package/components/common/browse/BrowseNew.vue +237 -237
  17. package/components/common/browse/BrowseOld.vue +217 -217
  18. package/components/common/browse/blocks/contents/Files.vue +35 -35
  19. package/components/common/browse/blocks/contents/FilesOld.vue +70 -70
  20. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +92 -92
  21. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  22. package/components/common/context/lib/models/interfaces.ts +30 -30
  23. package/components/common/context/recursion/Recursion.vue +86 -86
  24. package/components/common/context/recursion/RecursionNew.vue +199 -199
  25. package/components/common/context/recursion/RecursionOld.vue +213 -213
  26. package/components/common/diagramMain/Diagram.vue +95 -82
  27. package/components/common/diagramMain/DiagramMain.vue +22 -1
  28. package/components/common/diagramMain/adapter/AdapterItem.vue +2 -0
  29. package/components/common/diagramMain/adapter/Contents.vue +21 -3
  30. package/components/common/diagramMain/lib/config/positions.ts +1 -1
  31. package/components/common/diagramMain/lib/models/enums.ts +1 -1
  32. package/components/common/diagramMain/modals/viewSettings/info/InfoNew.vue +3 -2
  33. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalNew.vue +6 -1
  34. package/components/common/diagramMain/network/Contents.vue +4 -1
  35. package/components/common/diagramMain/network/noNetwork/NoNetworkNew.vue +1 -1
  36. package/components/common/diagramMain/port/Port.vue +2 -0
  37. package/components/common/layout/theHeader/helpMenu/About.vue +85 -85
  38. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  39. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +152 -152
  40. package/components/common/pages/home/headline/HeadlineNew.vue +48 -71
  41. package/components/common/pages/home/resource/ResourceNew.vue +58 -63
  42. package/components/common/pages/home/widgets/WidgetsNew.vue +74 -79
  43. package/components/common/pages/shortcuts/block/BlockNew.vue +71 -80
  44. package/components/common/spiceConsole/Drawer.vue +370 -370
  45. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  46. package/components/common/split/horizontal/HorizontalNew.vue +354 -354
  47. package/components/common/split/vertical/Vertical.vue +160 -223
  48. package/components/common/split/vertical/VerticalNew.vue +123 -0
  49. package/components/common/split/vertical/VerticalOld.vue +108 -0
  50. package/components/common/vm/actions/add/Add.vue +617 -617
  51. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  52. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +267 -267
  53. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +264 -264
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +118 -118
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +55 -55
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +147 -147
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +55 -55
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +74 -74
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +85 -85
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +91 -91
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +35 -35
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +48 -48
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +30 -30
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +46 -46
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +27 -27
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  84. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  85. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  86. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  88. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  89. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  90. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  91. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +100 -100
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  103. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  104. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  105. package/components/common/vm/actions/common/select/storage/new/New.vue +159 -159
  106. package/components/common/vm/actions/editSettings/EditSettings.vue +214 -214
  107. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +182 -182
  108. package/components/common/vm/actions/editSettings/new/New.vue +176 -176
  109. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  110. package/composables/productNameLocal.ts +30 -30
  111. package/package.json +2 -2
  112. package/plugins/date.ts +233 -233
  113. package/plugins/recursion.ts +311 -311
  114. package/public/spice-console/lib/images/bitmap.js +203 -203
  115. package/public/spice-console/network/spicechannel.js +383 -383
  116. package/store/main/mutations.ts +7 -7
  117. package/store/main/state.ts +7 -7
  118. package/store/tasks/mappers/recentTasks.ts +2 -2
@@ -1,223 +1,160 @@
1
- <template>
2
- <div :id="elementId" :class="['fill-parent vertical', { dragging: isDrag }]">
3
- <div class="vui-horizontal-panel firstPanel" :style="topPanelStyle">
4
- <div class="vui-horizontal-panel sec-nav-container">
5
- <slot name="firstPanel" />
6
- </div>
7
- </div>
8
-
9
- <div
10
- :id="`gutter-${elementId}`"
11
- class="gutter gutter-vertical"
12
- tabindex="0"
13
- @mousedown="isGrab = true"
14
- @focus="isFocus = true"
15
- @blur="isFocus = false"
16
- >
17
- <div class="gutter-vertical-handler"></div>
18
- </div>
19
-
20
- <div class="secondPanel bottom" :style="bottomPanelStyle">
21
- <slot name="secondPanel" />
22
- </div>
23
- </div>
24
- </template>
25
-
26
- <script setup lang="ts">
27
- import type { UI_I_SplitVerticalStyle } from '~/components/common/split/vertical/lib/models/interfaces'
28
-
29
- interface UI_I_SplitVerticalProps {
30
- parentElementSelector: string
31
- topPanelHForce?: string
32
- topPanelH?: number
33
- topPanelMinHeight?: number
34
- bottomPanelMinHeight?: number
35
- }
36
- const props = withDefaults(defineProps<UI_I_SplitVerticalProps>(), {
37
- topPanelMinHeight: 200, // 200px
38
- bottomPanelMinHeight: 200, // 200px
39
- topPanelHForce: '',
40
- topPanelH: undefined,
41
- })
42
- const emits = defineEmits<{
43
- (event: 'dragend', value: number): void
44
- }>()
45
-
46
- const topPanelStyle = computed<UI_I_SplitVerticalStyle>(() => {
47
- let height = `calc(${topPanelH.value}% - 1.5px)`
48
- if (props.topPanelHForce) {
49
- height = props.topPanelHForce
50
- }
51
- return { height }
52
- })
53
-
54
- const bottomPanelStyle = computed<UI_I_SplitVerticalStyle>(() => {
55
- let height = `calc(${100 - topPanelH.value}% - 1.5px)`
56
-
57
- return { height }
58
- })
59
-
60
- const isGrab = ref<boolean>(false)
61
- const isFocus = ref<boolean>(false)
62
- const isDrag = ref<boolean>(false)
63
- const topPanelH = ref<number>(80) // 80%
64
- watch(
65
- () => props.topPanelH,
66
- (newValue) => {
67
- if (newValue === undefined) return
68
- topPanelH.value = newValue
69
- },
70
- { immediate: true }
71
- )
72
-
73
- let parentElem: HTMLDivElement | null
74
- const mouseup = (): void => {
75
- if (!isGrab.value) {
76
- return
77
- }
78
-
79
- isGrab.value = false
80
- isDrag.value = false
81
-
82
- emits('dragend', topPanelH.value)
83
- }
84
- let mousemove = (e: MouseEvent): void => {
85
- if (!isGrab.value) {
86
- return
87
- }
88
-
89
- e.preventDefault()
90
- isDrag.value = true
91
-
92
- doDrag(e.clientY)
93
- }
94
- mousemove = useThrottle(mousemove)
95
-
96
- const doDrag = (clientY: number): void => {
97
- const parentElemTop = parentElem?.getBoundingClientRect().top || 0
98
- const parentHeight = parentElem?.clientHeight || 0
99
- const onePercent = parentHeight / 100
100
-
101
- const topLimit = clientY <= props.topPanelMinHeight + parentElemTop + 1.5
102
- const bottomLimit =
103
- clientY >= parentHeight + parentElemTop - props.bottomPanelMinHeight - 1.5
104
-
105
- if (topLimit || bottomLimit) {
106
- return
107
- }
108
-
109
- topPanelH.value = (clientY - parentElemTop) / onePercent
110
- }
111
-
112
- const elementId = `vertical${useUniqueId()}`
113
- const keydown = (e: KeyboardEvent): void => {
114
- if (!isFocus.value) return
115
-
116
- const gutter = document.getElementById(`gutter-${elementId}`)
117
-
118
- if (!gutter) return
119
-
120
- const gutterTop = ~~(gutter.getBoundingClientRect().top + 1.5)
121
-
122
- if (e.keyCode === 40) {
123
- doDrag(gutterTop + 10)
124
- }
125
- if (e.keyCode === 38) {
126
- doDrag(gutterTop - 10)
127
- }
128
- }
129
-
130
- onMounted(() => {
131
- parentElem = document.querySelector(props.parentElementSelector)
132
-
133
- window.addEventListener('mousemove', mousemove)
134
- window.addEventListener('mouseup', mouseup)
135
- window.addEventListener('keydown', keydown)
136
- })
137
- onUnmounted(() => {
138
- window.removeEventListener('mouseup', mouseup)
139
- window.removeEventListener('mousemove', mousemove)
140
- window.removeEventListener('keydown', keydown)
141
- })
142
- </script>
143
-
144
- <style scoped lang="scss">
145
- .fill-parent {
146
- &.dragging {
147
- .gutter-vertical.gutter {
148
- background-color: var(--gutter-active-bg-color);
149
- }
150
- }
151
-
152
- .vui-horizontal-panel.firstPanel {
153
- max-height: calc(100% - 36px);
154
- height: calc(100vh - 36px);
155
-
156
- .sec-nav-container {
157
- width: 100%;
158
- height: 100%;
159
- overflow: hidden;
160
- }
161
- }
162
-
163
- .gutter-vertical {
164
- position: relative;
165
- //min-height: 3px; // for old
166
- min-height: 4px; // for new
167
- background-color: var(--gutter-bg-color);
168
- transition-delay: 0.25s;
169
- transition-duration: 0.25s;
170
-
171
- &-handler {
172
- position: absolute;
173
- width: 100%;
174
- height: 10px;
175
- background: transparent;
176
- left: 0;
177
- top: -3.5px;
178
- z-index: 2;
179
- }
180
-
181
- &:focus {
182
- background-color: var(--gutter-active-bg-color);
183
- outline: none;
184
- }
185
-
186
- &:hover {
187
- background-color: var(--gutter-hover-bg-color);
188
- cursor: row-resize;
189
-
190
- &:before {
191
- // for old
192
- //background-color: hsla(0, 0%, 100%, 0.5);
193
- //box-shadow: inset 0 0 0 1px rgb(0 0 0 / 10%);
194
-
195
- // for new
196
- background-color: rgba(255, 255, 255, 0.8)
197
- }
198
- }
199
-
200
- &:before {
201
- content: '';
202
- position: relative;
203
- display: block;
204
- //background: rgba(0, 0, 0, 0.1); // for old
205
- background: #9da6ad;
206
- transition-delay: 0.25s;
207
- transition-duration: 0.25s;
208
- width: 24px;
209
- height: 100%;
210
- left: calc(50% - 12px);
211
- }
212
- }
213
- .secondPanel {
214
- height: auto;
215
- overflow: hidden;
216
- flex: 1;
217
-
218
- // for new
219
- box-shadow: 0 4px 20px 0 #0000001F;
220
- z-index: 1;
221
- }
222
- }
223
- </style>
1
+ <template>
2
+ <common-split-vertical-new
3
+ v-if="isNewView"
4
+ v-model:is-grab="isGrab"
5
+ v-model:is-focus="isFocus"
6
+ :element-id="elementId"
7
+ :is-drag="isDrag"
8
+ :top-panel-style="topPanelStyle"
9
+ :bottom-panel-style="bottomPanelStyle"
10
+ >
11
+ <template #firstPanel>
12
+ <slot name="firstPanel" />
13
+ </template>
14
+
15
+ <template #secondPanel>
16
+ <slot name="secondPanel" />
17
+ </template>
18
+ </common-split-vertical-new>
19
+
20
+ <common-split-vertical-old
21
+ v-else
22
+ v-model:is-grab="isGrab"
23
+ v-model:is-focus="isFocus"
24
+ :element-id="elementId"
25
+ :is-drag="isDrag"
26
+ :top-panel-style="topPanelStyle"
27
+ :bottom-panel-style="bottomPanelStyle"
28
+ >
29
+ <template #firstPanel>
30
+ <slot name="firstPanel" />
31
+ </template>
32
+
33
+ <template #secondPanel>
34
+ <slot name="secondPanel" />
35
+ </template>
36
+ </common-split-vertical-old>
37
+ </template>
38
+
39
+ <script setup lang="ts">
40
+ import type { UI_I_SplitVerticalStyle } from '~/components/common/split/vertical/lib/models/interfaces'
41
+
42
+ const props = withDefaults(defineProps<{
43
+ parentElementSelector: string
44
+ topPanelHForce?: string
45
+ topPanelH?: number
46
+ topPanelMinHeight?: number
47
+ bottomPanelMinHeight?: number
48
+ }>(), {
49
+ topPanelMinHeight: 200, // 200px
50
+ bottomPanelMinHeight: 200, // 200px
51
+ topPanelHForce: '',
52
+ topPanelH: undefined,
53
+ })
54
+ const emits = defineEmits<{
55
+ (event: 'dragend', value: number): void
56
+ }>()
57
+
58
+ const { $store }: any = useNuxtApp()
59
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
60
+
61
+ const topPanelStyle = computed<UI_I_SplitVerticalStyle>(() => {
62
+ let height = `calc(${topPanelH.value}% - 1.5px)`
63
+ if (props.topPanelHForce) {
64
+ height = props.topPanelHForce
65
+ }
66
+ return { height }
67
+ })
68
+
69
+ const bottomPanelStyle = computed<UI_I_SplitVerticalStyle>(() => {
70
+ let height = `calc(${100 - topPanelH.value}% - 1.5px)`
71
+
72
+ return { height }
73
+ })
74
+
75
+ const isGrab = ref<boolean>(false)
76
+ const isFocus = ref<boolean>(false)
77
+ const isDrag = ref<boolean>(false)
78
+ const topPanelH = ref<number>(80) // 80%
79
+ watch(
80
+ () => props.topPanelH,
81
+ (newValue) => {
82
+ if (newValue === undefined) return
83
+ topPanelH.value = newValue
84
+ },
85
+ { immediate: true }
86
+ )
87
+
88
+ let parentElem: HTMLDivElement | null
89
+ const mouseup = (): void => {
90
+ if (!isGrab.value) {
91
+ return
92
+ }
93
+
94
+ isGrab.value = false
95
+ isDrag.value = false
96
+
97
+ emits('dragend', topPanelH.value)
98
+ }
99
+ let mousemove = (e: MouseEvent): void => {
100
+ if (!isGrab.value) {
101
+ return
102
+ }
103
+
104
+ e.preventDefault()
105
+ isDrag.value = true
106
+
107
+ doDrag(e.clientY)
108
+ }
109
+ mousemove = useThrottle(mousemove)
110
+
111
+ const doDrag = (clientY: number): void => {
112
+ const parentElemTop = parentElem?.getBoundingClientRect().top || 0
113
+ const parentHeight = parentElem?.clientHeight || 0
114
+ const onePercent = parentHeight / 100
115
+
116
+ const topLimit = clientY <= props.topPanelMinHeight + parentElemTop + 1.5
117
+ const bottomLimit =
118
+ clientY >= parentHeight + parentElemTop - props.bottomPanelMinHeight - 1.5
119
+
120
+ if (topLimit || bottomLimit) {
121
+ return
122
+ }
123
+
124
+ topPanelH.value = (clientY - parentElemTop) / onePercent
125
+ }
126
+
127
+ const elementId = `vertical${useUniqueId()}`
128
+ const keydown = (e: KeyboardEvent): void => {
129
+ if (!isFocus.value) return
130
+
131
+ const gutter = document.getElementById(`gutter-${elementId}`)
132
+
133
+ if (!gutter) return
134
+
135
+ const gutterTop = ~~(gutter.getBoundingClientRect().top + 1.5)
136
+
137
+ if (e.keyCode === 40) {
138
+ doDrag(gutterTop + 10)
139
+ }
140
+ if (e.keyCode === 38) {
141
+ doDrag(gutterTop - 10)
142
+ }
143
+ }
144
+
145
+ onMounted(() => {
146
+ parentElem = document.querySelector(props.parentElementSelector)
147
+
148
+ window.addEventListener('mousemove', mousemove)
149
+ window.addEventListener('mouseup', mouseup)
150
+ window.addEventListener('keydown', keydown)
151
+ })
152
+ onUnmounted(() => {
153
+ window.removeEventListener('mouseup', mouseup)
154
+ window.removeEventListener('mousemove', mousemove)
155
+ window.removeEventListener('keydown', keydown)
156
+ })
157
+ </script>
158
+
159
+ <style scoped lang="scss">
160
+ </style>
@@ -0,0 +1,123 @@
1
+ <template>
2
+ <div :id="props.elementId" :class="['fill-parent vertical', { dragging: props.isDrag }]">
3
+ <div class="vui-horizontal-panel firstPanel" :style="props.topPanelStyle">
4
+ <div class="vui-horizontal-panel sec-nav-container">
5
+ <slot name="firstPanel" />
6
+ </div>
7
+ </div>
8
+
9
+ <div
10
+ :id="`gutter-${props.elementId}`"
11
+ class="gutter gutter-vertical"
12
+ tabindex="0"
13
+ @mousedown="isGrab = true"
14
+ @focus="isFocus = true"
15
+ @blur="isFocus = false"
16
+ >
17
+ <div class="gutter-vertical-handler"></div>
18
+ </div>
19
+
20
+ <div class="secondPanel bottom" :style="props.bottomPanelStyle">
21
+ <slot name="secondPanel" />
22
+ </div>
23
+ </div>
24
+ </template>
25
+
26
+ <script setup lang="ts">
27
+ const isGrab = defineModel<boolean>('isGrab')
28
+ const isFocus = defineModel<boolean>('isFocus')
29
+
30
+ const props = defineProps<{
31
+ elementId: number
32
+ isDrag: number
33
+ topPanelStyle: number
34
+ bottomPanelStyle: number
35
+ }>()
36
+ </script>
37
+
38
+ <style>
39
+ :root {
40
+ --gutter-handler-bg-color: #9da6ad;
41
+ --gutter-handler-active-bg-color: #FFFFFFCC;
42
+ --second-panel-box-shadow: 0 4px 20px 0 #0000001F, 0 -1px 12px 0 #00000014;
43
+ }
44
+ :root.dark-theme {
45
+ --gutter-handler-bg-color: #9DA6AD52;
46
+ --gutter-handler-active-bg-color: #213444CC;
47
+ --second-panel-box-shadow: 0 4px 20px 0 #0000001F;
48
+ }
49
+ </style>
50
+
51
+ <style scoped lang="scss">
52
+ .fill-parent {
53
+ &.dragging {
54
+ .gutter-vertical.gutter {
55
+ background-color: var(--gutter-active-bg-color);
56
+ }
57
+ }
58
+
59
+ .vui-horizontal-panel.firstPanel {
60
+ max-height: calc(100% - 36px);
61
+ height: calc(100vh - 36px);
62
+
63
+ .sec-nav-container {
64
+ width: 100%;
65
+ height: 100%;
66
+ overflow: hidden;
67
+ }
68
+ }
69
+
70
+ .gutter-vertical {
71
+ position: relative;
72
+ min-height: 4px;
73
+ background-color: var(--gutter-bg-color);
74
+ transition-delay: 0.25s;
75
+ transition-duration: 0.25s;
76
+
77
+ &-handler {
78
+ position: absolute;
79
+ width: 100%;
80
+ height: 10px;
81
+ background: transparent;
82
+ left: 0;
83
+ top: -3.5px;
84
+ z-index: 2;
85
+ }
86
+
87
+ &:focus {
88
+ background-color: var(--gutter-active-bg-color);
89
+ outline: none;
90
+ }
91
+
92
+ &:hover {
93
+ background-color: var(--gutter-hover-bg-color);
94
+ cursor: row-resize;
95
+
96
+ &:before {
97
+ background-color: var(--gutter-handler-active-bg-color);
98
+ }
99
+ }
100
+
101
+ &:before {
102
+ content: '';
103
+ position: relative;
104
+ display: block;
105
+ background: var(--gutter-handler-bg-color);
106
+ transition-delay: 0.25s;
107
+ transition-duration: 0.25s;
108
+ width: 24px;
109
+ height: 2px;
110
+ left: calc(50% - 12px);
111
+ top: calc(50% - 1px);
112
+ border-radius: 4px;
113
+ }
114
+ }
115
+ .secondPanel {
116
+ height: auto;
117
+ overflow: hidden;
118
+ flex: 1;
119
+ box-shadow: var(--second-panel-box-shadow);
120
+ z-index: 1;
121
+ }
122
+ }
123
+ </style>
@@ -0,0 +1,108 @@
1
+ <template>
2
+ <div :id="props.elementId" :class="['fill-parent vertical', { dragging: props.isDrag }]">
3
+ <div class="vui-horizontal-panel firstPanel" :style="props.topPanelStyle">
4
+ <div class="vui-horizontal-panel sec-nav-container">
5
+ <slot name="firstPanel" />
6
+ </div>
7
+ </div>
8
+
9
+ <div
10
+ :id="`gutter-${props.elementId}`"
11
+ class="gutter gutter-vertical"
12
+ tabindex="0"
13
+ @mousedown="isGrab = true"
14
+ @focus="isFocus = true"
15
+ @blur="isFocus = false"
16
+ >
17
+ <div class="gutter-vertical-handler"></div>
18
+ </div>
19
+
20
+ <div class="secondPanel bottom" :style="props.bottomPanelStyle">
21
+ <slot name="secondPanel" />
22
+ </div>
23
+ </div>
24
+ </template>
25
+
26
+ <script setup lang="ts">
27
+ const isGrab = defineModel<boolean>('isGrab')
28
+ const isFocus = defineModel<boolean>('isFocus')
29
+
30
+ const props = defineProps<{
31
+ elementId: number
32
+ isDrag: number
33
+ topPanelStyle: number
34
+ bottomPanelStyle: number
35
+ }>()
36
+ </script>
37
+
38
+ <style scoped lang="scss">
39
+ .fill-parent {
40
+ &.dragging {
41
+ .gutter-vertical.gutter {
42
+ background-color: var(--gutter-active-bg-color);
43
+ }
44
+ }
45
+
46
+ .vui-horizontal-panel.firstPanel {
47
+ max-height: calc(100% - 36px);
48
+ height: calc(100vh - 36px);
49
+
50
+ .sec-nav-container {
51
+ width: 100%;
52
+ height: 100%;
53
+ overflow: hidden;
54
+ }
55
+ }
56
+
57
+ .gutter-vertical {
58
+ position: relative;
59
+ min-height: 3px;
60
+ background-color: var(--gutter-bg-color);
61
+ transition-delay: 0.25s;
62
+ transition-duration: 0.25s;
63
+
64
+ &-handler {
65
+ position: absolute;
66
+ width: 100%;
67
+ height: 10px;
68
+ background: transparent;
69
+ left: 0;
70
+ top: -3.5px;
71
+ z-index: 2;
72
+ }
73
+
74
+ &:focus {
75
+ background-color: var(--gutter-active-bg-color);
76
+ outline: none;
77
+ }
78
+
79
+ &:hover {
80
+ background-color: var(--gutter-hover-bg-color);
81
+ cursor: row-resize;
82
+
83
+ &:before {
84
+ background-color: hsla(0, 0%, 100%, 0.5);
85
+ box-shadow: inset 0 0 0 1px rgb(0 0 0 / 10%);
86
+ }
87
+ }
88
+
89
+ &:before {
90
+ content: '';
91
+ position: relative;
92
+ display: block;
93
+ background: rgba(0, 0, 0, 0.1);
94
+ background: #9da6ad;
95
+ transition-delay: 0.25s;
96
+ transition-duration: 0.25s;
97
+ width: 24px;
98
+ height: 100%;
99
+ left: calc(50% - 12px);
100
+ }
101
+ }
102
+ .secondPanel {
103
+ height: auto;
104
+ overflow: hidden;
105
+ flex: 1;
106
+ }
107
+ }
108
+ </style>