Browse Source

Merge pull request #261 from kwonoj/feat-tab-cycle

feat(tab): enable cycle tab selection
Eugene Pankov 8 years ago
parent
commit
ace81aced2
2 changed files with 17 additions and 6 deletions
  1. 1 0
      terminus-core/src/configDefaults.yaml
  2. 16 6
      terminus-core/src/services/app.service.ts

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

@@ -3,6 +3,7 @@ appearance:
   dockScreen: current
   dockFill: 50
   tabsLocation: top
+  cycleTabs: true
   theme: Standard
   frame: thin
   css: '/* * { color: blue !important; } */'

+ 16 - 6
terminus-core/src/services/app.service.ts

@@ -3,6 +3,7 @@ import { Injectable, ComponentFactoryResolver, Injector, Optional } from '@angul
 import { DefaultTabProvider } from '../api/defaultTabProvider'
 import { BaseTabComponent } from '../components/baseTab.component'
 import { Logger, LogService } from '../services/log.service'
+import { ConfigService } from '../services/config.service'
 
 export declare type TabComponentType = new (...args: any[]) => BaseTabComponent
 
@@ -18,6 +19,7 @@ export class AppService {
     constructor (
         private componentFactoryResolver: ComponentFactoryResolver,
         @Optional() private defaultTabProvider: DefaultTabProvider,
+        private config: ConfigService,
         private injector: Injector,
         log: LogService,
     ) {
@@ -70,16 +72,24 @@ export class AppService {
     }
 
     nextTab () {
-        let tabIndex = this.tabs.indexOf(this.activeTab)
-        if (tabIndex < this.tabs.length - 1) {
-            this.selectTab(this.tabs[tabIndex + 1])
+        if (this.tabs.length > 1) {
+            let tabIndex = this.tabs.indexOf(this.activeTab)
+            if (tabIndex < this.tabs.length - 1) {
+                this.selectTab(this.tabs[tabIndex + 1])
+            } else if (this.config.store.appearance.cycleTabs) {
+                this.selectTab(this.tabs[0])
+            }
         }
     }
 
     previousTab () {
-        let tabIndex = this.tabs.indexOf(this.activeTab)
-        if (tabIndex > 0) {
-            this.selectTab(this.tabs[tabIndex - 1])
+        if (this.tabs.length > 1) {
+            let tabIndex = this.tabs.indexOf(this.activeTab)
+            if (tabIndex > 0) {
+                this.selectTab(this.tabs[tabIndex - 1])
+            } else if (this.config.store.appearance.cycleTabs) {
+                this.selectTab(this.tabs[this.tabs.length - 1])
+            }
         }
     }