@@ -109,81 +109,87 @@ const emptyMsg = computed(()=>{
109109< / script>
110110
111111< template>
112- < AppHeader v- if = " !props.embed" : main= " !isChat" >
113- < template #center>
114- < b> Local Ports ({{portsFilter .length }})< / b>
115- < / template>
116-
117- < template #end>
118- < Button icon= " pi pi-refresh" text @click= " getPorts" : loading= " loader" / >
119- < / template>
120- < / AppHeader>
121- < Card class = " nopd" v- if = " !error" >
122- < template #content>
123- < InputGroup class = " search-bar" >
124- < Button : disabled= " !typing" icon= " pi pi-search" : label= " selectedMesh?.name" / >
125- < Textarea @keyup= " watchEnter" v- model= " typing" : autoResize= " true" class = " drak-input bg-gray-900 text-white flex-1" placeholder= " Type service | port" rows= " 1" cols= " 30" / >
126- < / InputGroup>
127- < / template>
128- < / Card>
129- < Loading v- if = " loading" / >
130- < div v- else - if = " portsFilter && portsFilter.length >0" class = " text-center" >
131- < div class = " mt-1 grid text-left px-3" >
132- < div class = " col-12 md:col-6 lg:col-3" v- for = " (port,hid) in portsFilter" : key= " hid" >
133- < div class = " surface-card shadow-2 p-3 border-round" >
134- < div class = " flex justify-content-between mb-1" >
135- < div>
136- < span class = " block text-tip font-medium mb-3" >
137- {{port .listen .ip }} | {{port .protocol }}
138- < / span>
139-
140- < div class = " text-900 font-medium text-xl" >
141- < Status : run= " port.open" : error= " port.error" : text= " port.listen.port" / >
142- < / div>
143- < / div>
144- < div class = " flex" >
145- < div v- tooltip= " 'Delete Port'" @click= " deletePort(port)" class = " pointer flex align-items-center justify-content-center p-button-secondary border-round mr-2" style= " width: 2.5rem; height: 2.5rem" >
146- < i class = " pi pi-trash text-tip text-xl" >< / i>
147- < / div>
112+ < div class = " flex flex-row min-h-screen" : class = " {'embed-ep-header':props.embed}" >
113+ < div class = " relative w-full h-full" >
114+ < AppHeader : main= " !isChat" v- if = " !props.embed" >
115+ < template #center>
116+ < b> Local Ports ({{portsFilter .length }})< / b>
117+ < / template>
118+
119+ < template #end>
120+ < Button icon= " pi pi-refresh" text @click= " getPorts" : loading= " loader" / >
121+ < / template>
122+ < / AppHeader>
123+ < Card class = " nopd" v- if = " !error" >
124+ < template #content>
125+ < InputGroup class = " search-bar" >
126+ < Button : disabled= " !typing" icon= " pi pi-search" : label= " selectedMesh?.name" / >
127+ < Textarea @keyup= " watchEnter" v- model= " typing" : autoResize= " true" class = " drak-input bg-gray-900 text-white flex-1" placeholder= " Type service | port" rows= " 1" cols= " 30" / >
128+ < / InputGroup>
129+ < / template>
130+ < / Card>
131+ < Loading v- if = " loading" / >
132+ < ScrollPanel class = " w-full absolute" style= " bottom: 0;" : style= " {'top':props.embed?'35px':'75px'}" v- else - if = " portsFilter && portsFilter.length >0" >
133+ < div class = " text-center" >
134+ < div class = " mt-1 grid text-left px-3" >
135+ < div class = " col-12" : class = " props.embed?'md:col-6 lg:col-4':'md:col-6 lg:col-3'" v- for = " (port,hid) in portsFilter" : key= " hid" >
136+ < div class = " surface-card shadow-2 p-3 border-round" >
137+ < div class = " flex justify-content-between mb-1" >
138+ < div>
139+ < span class = " block text-tip font-medium mb-3" >
140+ {{port .listen .ip }} | {{port .protocol }}
141+ < / span>
142+
143+ < div class = " text-900 font-medium text-xl" >
144+ < Status : run= " port.open" : error= " port.error" : text= " port.listen.port" / >
145+ < / div>
146+ < / div>
147+ < div class = " flex" >
148+ < div v- tooltip= " 'Delete Port'" @click= " deletePort(port)" class = " pointer flex align-items-center justify-content-center p-button-secondary border-round mr-2" style= " width: 2.5rem; height: 2.5rem" >
149+ < i class = " pi pi-trash text-tip text-xl" >< / i>
150+ < / div>
151+ < / div>
148152 < / div>
153+ < Fieldset legend= " Target" : toggleable= " true" >
154+ < div class = " mb-2" v- if = " port?.mesh" >
155+ < Chip class = " pl-0 pr-3 mr-2" >
156+ < span class = " bg-primary border-circle w-2rem h-2rem flex align-items-center justify-content-center" >
157+ < i class = " pi pi-globe" / >
158+ < / span>
159+ < span class = " font-medium ml-2" >
160+ Mesh: {{decodeURI (port .mesh )}}
161+ < / span>
162+ < / Chip>
163+ < / div>
164+ < div class = " mb-2" >
165+ < Chip class = " pl-0 pr-3 mr-2" >
166+ < span class = " bg-primary border-circle w-2rem h-2rem flex align-items-center justify-content-center" >
167+ < i class = " pi pi-server" / >
168+ < / span>
169+ < span class = " font-medium ml-2" >
170+ Service: {{port .target ? .service }}
171+ < / span>
172+ < / Chip>
173+ < / div>
174+ < div class = " mb-2" v- if = " port.target?.endpoint" >
175+ < Chip class = " pl-0 pr-3 mr-2" >
176+ < span style= " min-width: 28px;" class = " bg-primary border-circle w-2rem h-2rem flex align-items-center justify-content-center" >
177+ < i class = " pi pi-chart-scatter" / >
178+ < / span>
179+ < span class = " font-medium ml-2" >
180+ EP : {{endpointMap[port .target ? .endpoint ]? .name || ' Unnamed EP' }}
181+ < / span>
182+ < / Chip>
183+ < / div>
184+ < / Fieldset>
149185 < / div>
150- < Fieldset legend= " Target" : toggleable= " true" >
151- < div class = " mb-2" v- if = " port?.mesh" >
152- < Chip class = " pl-0 pr-3 mr-2" >
153- < span class = " bg-primary border-circle w-2rem h-2rem flex align-items-center justify-content-center" >
154- < i class = " pi pi-globe" / >
155- < / span>
156- < span class = " font-medium ml-2" >
157- Mesh: {{decodeURI (port .mesh )}}
158- < / span>
159- < / Chip>
160- < / div>
161- < div class = " mb-2" >
162- < Chip class = " pl-0 pr-3 mr-2" >
163- < span class = " bg-primary border-circle w-2rem h-2rem flex align-items-center justify-content-center" >
164- < i class = " pi pi-server" / >
165- < / span>
166- < span class = " font-medium ml-2" >
167- Service: {{port .target ? .service }}
168- < / span>
169- < / Chip>
170- < / div>
171- < div class = " mb-2" v- if = " port.target?.endpoint" >
172- < Chip class = " pl-0 pr-3 mr-2" >
173- < span style= " min-width: 28px;" class = " bg-primary border-circle w-2rem h-2rem flex align-items-center justify-content-center" >
174- < i class = " pi pi-chart-scatter" / >
175- < / span>
176- < span class = " font-medium ml-2" >
177- EP : {{endpointMap[port .target ? .endpoint ]? .name || ' Unnamed EP' }}
178- < / span>
179- < / Chip>
180- < / div>
181- < / Fieldset>
182186 < / div>
183- < / div>
187+ < / div>
188+ < / div>
189+ < / ScrollPanel>
190+ < Empty v- else : title= " emptyMsg" : error= " error" / >
184191 < / div>
185192 < / div>
186- < Empty v- else : title= " emptyMsg" : error= " error" / >
187193< / template>
188194
189195< style scoped lang= " scss" >
0 commit comments