diff --git a/src/components/input/native-input.ts b/src/components/input/native-input.ts index 5eeb9c273c..473de4477f 100644 --- a/src/components/input/native-input.ts +++ b/src/components/input/native-input.ts @@ -31,7 +31,7 @@ export class NativeInput { } @HostListener('input', ['$event']) - private _change(ev) { + private _change(ev: any) { this.valueChange.emit(ev.target.value); } @@ -40,9 +40,9 @@ export class NativeInput { var self = this; self.focusChange.emit(true); - - function docTouchEnd(ev) { - var tapped: HTMLElement = ev.target; + + function docTouchEnd(ev: TouchEvent) { + var tapped = ev.target; if (tapped && self.element()) { if (tapped.tagName !== 'INPUT' && tapped.tagName !== 'TEXTAREA' && !tapped.classList.contains('input-cover')) { self.element().blur(); @@ -178,7 +178,7 @@ export class NativeInput { } -function cloneInput(focusedInputEle, addCssClass) { +function cloneInput(focusedInputEle: any, addCssClass: string) { let clonedInputEle = focusedInputEle.cloneNode(true); clonedInputEle.classList.add('cloned-input'); clonedInputEle.classList.add(addCssClass); @@ -191,7 +191,7 @@ function cloneInput(focusedInputEle, addCssClass) { return clonedInputEle; } -function removeClone(focusedInputEle, queryCssClass) { +function removeClone(focusedInputEle: any, queryCssClass: string) { let clonedInputEle = focusedInputEle.parentElement.querySelector('.' + queryCssClass); if (clonedInputEle) { clonedInputEle.parentNode.removeChild(clonedInputEle); diff --git a/src/components/nav/nav-controller.ts b/src/components/nav/nav-controller.ts index 519bfd5d13..b7182cdc32 100644 --- a/src/components/nav/nav-controller.ts +++ b/src/components/nav/nav-controller.ts @@ -1783,6 +1783,13 @@ export class NavController extends Ion { return this._views.length; } + /** + * @private + */ + isSwipeBackEnabled(): boolean { + return this._sbEnabled; + } + /** * Returns the root `NavController`. * @returns {NavController} diff --git a/src/components/nav/nav.ts b/src/components/nav/nav.ts index 819c97eac5..cdb0d0da4f 100644 --- a/src/components/nav/nav.ts +++ b/src/components/nav/nav.ts @@ -191,7 +191,6 @@ export class Nav extends NavController implements AfterViewInit { get swipeBackEnabled(): boolean { return this._sbEnabled; } - set swipeBackEnabled(val: boolean) { this._sbEnabled = isTrueProperty(val); } diff --git a/src/components/tabs/tab.ts b/src/components/tabs/tab.ts index 0abbf34cb1..df2dc319a8 100644 --- a/src/components/tabs/tab.ts +++ b/src/components/tabs/tab.ts @@ -201,6 +201,17 @@ export class Tab extends NavController { this._isShown = isTrueProperty(val); } + /** + * @input {boolean} Whether it's possible to swipe-to-go-back on this tab or not. + */ + @Input() + get swipeBackEnabled(): boolean { + return this._sbEnabled; + } + set swipeBackEnabled(val: boolean) { + this._sbEnabled = isTrueProperty(val); + } + /** * @output {Tab} Method to call when the current tab is selected */ @@ -222,6 +233,10 @@ export class Tab extends NavController { parentTabs.add(this); + if (parentTabs.rootNav) { + this._sbEnabled = parentTabs.rootNav.isSwipeBackEnabled(); + } + this._panelId = 'tabpanel-' + this.id; this._btnId = 'tab-' + this.id; } diff --git a/src/components/tabs/test/advanced/index.ts b/src/components/tabs/test/advanced/index.ts index ccc17eba3c..ed64b2dcda 100644 --- a/src/components/tabs/test/advanced/index.ts +++ b/src/components/tabs/test/advanced/index.ts @@ -411,7 +411,7 @@ class Tab3Page1 { @Component({ - template: '' + template: '' }) class E2EApp { root = SignIn; diff --git a/src/components/tabs/test/advanced/tabs.html b/src/components/tabs/test/advanced/tabs.html index 338c2b32ff..53e15a20ce 100644 --- a/src/components/tabs/test/advanced/tabs.html +++ b/src/components/tabs/test/advanced/tabs.html @@ -1,6 +1,6 @@ - +