Browse Source

Merge pull request #8709 from Clem-Fern/feat#8680

Eugene 2 years ago
parent
commit
8b89db41d2

+ 5 - 4
tabby-core/src/components/selectorModal.component.ts

@@ -76,10 +76,11 @@ export class SelectorModalComponent<T> {
                 { sort: true },
             ).search(f)
 
-            const freeOption = this.options.find(x => x.freeInputPattern)
-            if (freeOption && !this.filteredOptions.includes(freeOption)) {
-                this.filteredOptions.push(freeOption)
-            }
+            this.options.filter(x => x.freeInputPattern).forEach(freeOption => {
+                if (!this.filteredOptions.includes(freeOption)) {
+                    this.filteredOptions.push(freeOption)
+                }
+            })
         }
         this.selectedIndex = Math.max(0, this.selectedIndex)
         this.selectedIndex = Math.min(this.filteredOptions.length - 1, this.selectedIndex)

+ 1 - 0
tabby-core/src/configDefaults.yaml

@@ -54,3 +54,4 @@ hacks:
   disableVibrancyWhileDragging: false
   enableFluentBackground: false
 language: null
+defaultQuickConnectProvider: "ssh"

+ 1 - 0
tabby-core/src/index.ts

@@ -219,6 +219,7 @@ export default class AppModule { // eslint-disable-line @typescript-eslint/no-ex
                 name: this.translate.instant('Quick connect'),
                 freeInputPattern: this.translate.instant('Connect to "%s"...'),
                 icon: 'fas fa-arrow-right',
+                description: `(${provider.name.toUpperCase()})`,
                 callback: query => {
                     const p = provider.quickConnect(query)
                     if (p) {

+ 6 - 3
tabby-core/src/services/profiles.service.ts

@@ -177,17 +177,20 @@ export class ProfilesService {
                     })
                 } catch { }
 
-                if (this.getProviders().some(x => x.supportsQuickConnect)) {
+                this.getProviders().filter(x => x.supportsQuickConnect).forEach(provider => {
                     options.push({
                         name: this.translate.instant('Quick connect'),
                         freeInputPattern: this.translate.instant('Connect to "%s"...'),
+                        description: `(${provider.name.toUpperCase()})`,
                         icon: 'fas fa-arrow-right',
+                        weight: provider.id !== this.config.store.defaultQuickConnectProvider ? 1 : 0,
                         callback: query => {
-                            const profile = this.quickConnect(query)
+                            const profile = provider.quickConnect(query)
                             resolve(profile)
                         },
                     })
-                }
+                })
+
                 await this.selector.show(this.translate.instant('Select profile or enter an address'), options)
             } catch (err) {
                 reject(err)

+ 14 - 0
tabby-settings/src/components/profilesSettingsTab.component.pug

@@ -149,6 +149,20 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
                     option(ngValue='wt', translation) Windows Terminal
                     option(ngValue='cygwin', translation) Cygwin
 
+            .form-line
+                .header
+                    .title(translate) Default "Connect to" type
+                    .description(translate) Default connection type used by quick connect feature (ex. SSH, Telnet)
+
+                select.form-control(
+                    [(ngModel)]='config.store.defaultQuickConnectProvider',
+                    (ngModelChange)='config.save()',
+                )
+                    option(
+                        *ngFor='let provider of getQuickConnectProviders()',
+                        [ngValue]='provider.id'
+                    ) {{provider.name}}
+
             .form-line.content-box
                 .header
                     .title(translate) Default profile settings

+ 4 - 0
tabby-settings/src/components/profilesSettingsTab.component.ts

@@ -312,4 +312,8 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
     isProfileBlacklisted (profile: PartialProfile<Profile>): boolean {
         return profile.id && this.config.store.profileBlacklist.includes(profile.id)
     }
+
+    getQuickConnectProviders (): ProfileProvider<Profile>[] {
+        return this.profileProviders.filter(x => x.supportsQuickConnect)
+    }
 }

+ 1 - 1
tabby-telnet/src/profiles.ts

@@ -8,7 +8,7 @@ import { TelnetProfile } from './session'
 export class TelnetProfilesService extends ProfileProvider<TelnetProfile> {
     id = 'telnet'
     name = 'Telnet'
-    supportsQuickConnect = false
+    supportsQuickConnect = true
     settingsComponent = TelnetProfileSettingsComponent
     configDefaults = {
         options: {