@@ -23,7 +23,9 @@ a-layout.new-layout
2323 :results ="results"
2424 :types ="types"
2525 :explainResult ="explainResult"
26+ :is-in-full-size-mode ="false"
2627 @update:explainResult ="(val) => (explainResult = val)"
28+ @toggle-full-size ="handleToggleFullSize"
2729 )
2830 a-resize-box.panel-resize (
2931 v-model:height ="logsHeight"
@@ -33,6 +35,27 @@ a-layout.new-layout
3335 a-tabs.panel-tabs
3436 a-tab-pane( title ="Log" key ="log" )
3537 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+ )
3659</template >
3760
3861<script lang="ts" setup name="QueryNew">
@@ -41,7 +64,7 @@ a-layout.new-layout
4164 import ' driver.js/dist/driver.css'
4265 import { navbarSteps , tableSteps } from ' ../config'
4366
44- const { s, q } = useMagicKeys ()
67+ const { s, q, escape } = useMagicKeys ()
4568 const activeElement = useActiveElement ()
4669 const { hideSidebar, databaseList } = storeToRefs (useAppStore ())
4770 const { logs } = storeToRefs (useLogStore ())
@@ -52,6 +75,7 @@ a-layout.new-layout
5275 const { explainResult } = storeToRefs (useCodeRunStore ())
5376 const types = [' sql' , ' promql' ]
5477 const logsHeight = ref (66 )
78+ const isFullSizeMode = ref (false )
5579
5680 const sidebarWidth = useStorage (' sidebarWidth' , 320 )
5781
@@ -88,12 +112,26 @@ a-layout.new-layout
88112 queryType .value = ' promql'
89113 })
90114
115+ watch (escape , (v ) => {
116+ if (v && isFullSizeMode .value ) {
117+ isFullSizeMode .value = false
118+ }
119+ })
120+
91121 const selectExplainTab = () => {
92122 if (dataViewRef .value ) {
93123 dataViewRef .value .selectTab (' explain' )
94124 }
95125 }
96126
127+ const handleToggleFullSize = (fullSize : boolean ) => {
128+ isFullSizeMode .value = fullSize
129+ }
130+
131+ const toggleFullSize = () => {
132+ isFullSizeMode .value = ! isFullSizeMode .value
133+ }
134+
97135 const globalTour = driver ({
98136 showProgress: false ,
99137 allowClose: false ,
@@ -168,3 +206,30 @@ a-layout.new-layout
168206 }
169207 }
170208 </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