@@ -23,7 +23,9 @@ a-layout.new-layout
23
23
:results ="results"
24
24
:types ="types"
25
25
:explainResult ="explainResult"
26
+ :is-in-full-size-mode ="false"
26
27
@update:explainResult ="(val) => (explainResult = val)"
28
+ @toggle-full-size ="handleToggleFullSize"
27
29
)
28
30
a-resize-box.panel-resize (
29
31
v-model:height ="logsHeight"
@@ -33,6 +35,27 @@ a-layout.new-layout
33
35
a-tabs.panel-tabs
34
36
a-tab-pane( title ="Log" key ="log" )
35
37
LogsNew( :logs ="queryLogs" )
38
+
39
+ a-modal.full-size-modal (
40
+ v-model:visible ="isFullSizeMode"
41
+ :class ="{ 'full-screen': isFullSizeMode }"
42
+ :align-center ="false"
43
+ :footer ="false"
44
+ :closable ="false"
45
+ :header ="false"
46
+ :esc-to-close ="true"
47
+ :mask-style ="{ backgroundColor: 'transparent', 'pointer-events': 'auto' }"
48
+ )
49
+ DataView.full-size (
50
+ v-if ="!!results?.length || !!explainResult"
51
+ :results ="results"
52
+ :types ="types"
53
+ :explainResult ="explainResult"
54
+ :show-full-size-button ="false"
55
+ :is-in-full-size-mode ="true"
56
+ @update:explainResult ="(val) => (explainResult = val)"
57
+ @toggle-full-size ="isFullSizeMode = false"
58
+ )
36
59
</template >
37
60
38
61
<script lang="ts" setup name="QueryNew">
@@ -41,7 +64,7 @@ a-layout.new-layout
41
64
import ' driver.js/dist/driver.css'
42
65
import { navbarSteps , tableSteps } from ' ../config'
43
66
44
- const { s, q } = useMagicKeys ()
67
+ const { s, q, escape } = useMagicKeys ()
45
68
const activeElement = useActiveElement ()
46
69
const { hideSidebar, databaseList } = storeToRefs (useAppStore ())
47
70
const { logs } = storeToRefs (useLogStore ())
@@ -52,6 +75,7 @@ a-layout.new-layout
52
75
const { explainResult } = storeToRefs (useCodeRunStore ())
53
76
const types = [' sql' , ' promql' ]
54
77
const logsHeight = ref (66 )
78
+ const isFullSizeMode = ref (false )
55
79
56
80
const sidebarWidth = useStorage (' sidebarWidth' , 320 )
57
81
@@ -88,12 +112,26 @@ a-layout.new-layout
88
112
queryType .value = ' promql'
89
113
})
90
114
115
+ watch (escape , (v ) => {
116
+ if (v && isFullSizeMode .value ) {
117
+ isFullSizeMode .value = false
118
+ }
119
+ })
120
+
91
121
const selectExplainTab = () => {
92
122
if (dataViewRef .value ) {
93
123
dataViewRef .value .selectTab (' explain' )
94
124
}
95
125
}
96
126
127
+ const handleToggleFullSize = (fullSize : boolean ) => {
128
+ isFullSizeMode .value = fullSize
129
+ }
130
+
131
+ const toggleFullSize = () => {
132
+ isFullSizeMode .value = ! isFullSizeMode .value
133
+ }
134
+
97
135
const globalTour = driver ({
98
136
showProgress: false ,
99
137
allowClose: false ,
@@ -168,3 +206,30 @@ a-layout.new-layout
168
206
}
169
207
}
170
208
</style >
209
+
210
+ <style lang="less">
211
+ .full-size-modal {
212
+ .arco-modal-wrapper {
213
+ overflow : hidden ;
214
+ .arco-modal {
215
+ pointer-events : auto ;
216
+ box-shadow : 0 2px 10px 0 var (--box-shadow-color );
217
+ width : calc (100vw - var (--navbar-width-collapsed ) - 16px );
218
+ border : 1px solid var (--border-color );
219
+ .arco-modal-body {
220
+ padding : 8px 16px ;
221
+ height : calc (100vh - var (--footer-height ) - 20px );
222
+ }
223
+ }
224
+ }
225
+
226
+ & .full-screen {
227
+ .arco-modal {
228
+ transform : none !important ;
229
+ position : fixed !important ;
230
+ right : 6px !important ;
231
+ top : 10px !important ;
232
+ }
233
+ }
234
+ }
235
+ </style >
0 commit comments