diff --git a/core/src/components.d.ts b/core/src/components.d.ts index d97ce6a294..a426de2070 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1469,6 +1469,7 @@ declare global { * Returns the view at the index */ 'getByIndex': (index: number) => ViewController | undefined; + 'getLength': () => number; /** * Gets the previous view */ diff --git a/core/src/components/nav/nav.tsx b/core/src/components/nav/nav.tsx index 7c78b37c87..c5d5815216 100644 --- a/core/src/components/nav/nav.tsx +++ b/core/src/components/nav/nav.tsx @@ -441,6 +441,11 @@ export class Nav implements NavOutlet { return this.isTransitioning; } + @Method() + getLength() { + return this.views.length; + } + // _queueTrns() adds a navigation stack change to the queue and schedules it to run: // 1. _nextTrns(): consumes the next transition in the queue // 2. _viewInit(): initializes enteringView if required diff --git a/core/src/components/nav/test/nav-controller.spec.ts b/core/src/components/nav/test/nav-controller.spec.ts index 3a3980666f..8d1f3d4b01 100644 --- a/core/src/components/nav/test/nav-controller.spec.ts +++ b/core/src/components/nav/test/nav-controller.spec.ts @@ -28,7 +28,7 @@ describe('NavController', () => { expect(push1Done).toHaveBeenCalledWith( hasCompleted, requiresTransition, view1, undefined, 'forward' ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView1); // Push 2 @@ -39,7 +39,7 @@ describe('NavController', () => { hasCompleted, requiresTransition, view2, view1, 'forward' ); - expect(nav.length()).toEqual(2); + expect(nav.getLength()).toEqual(2); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView2); @@ -50,7 +50,7 @@ describe('NavController', () => { expect(push3Done).toHaveBeenCalledWith( hasCompleted, requiresTransition, view3, view2, 'forward' ); - expect(nav.length()).toEqual(3); + expect(nav.getLength()).toEqual(3); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView2); expect(nav.getByIndex(2)!.component).toEqual(MockView3); @@ -61,7 +61,7 @@ describe('NavController', () => { expect(push4Done).toHaveBeenCalledWith( hasCompleted, requiresTransition, view4, view3, 'forward' ); - expect(nav.length()).toEqual(4); + expect(nav.getLength()).toEqual(4); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView2); expect(nav.getByIndex(2)!.component).toEqual(MockView3); @@ -72,7 +72,7 @@ describe('NavController', () => { expect(pop1Done).toHaveBeenCalledWith( hasCompleted, requiresTransition, view3, view4, 'back' ); - expect(nav.length()).toEqual(3); + expect(nav.getLength()).toEqual(3); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView2); expect(nav.getByIndex(2)!.component).toEqual(MockView3); @@ -82,7 +82,7 @@ describe('NavController', () => { expect(pop2Done).toHaveBeenCalledWith( hasCompleted, requiresTransition, view2, view3, 'back' ); - expect(nav.length()).toEqual(2); + expect(nav.getLength()).toEqual(2); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView2); @@ -91,7 +91,7 @@ describe('NavController', () => { expect(pop3Done).toHaveBeenCalledWith( hasCompleted, requiresTransition, view1, view2, 'back' ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView1); }, 10000); @@ -108,7 +108,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view1, undefined, 'forward' ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav['isTransitioning']).toEqual(false); @@ -126,7 +126,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view2, view1, 'forward' ); - expect(nav.length()).toEqual(2); + expect(nav.getLength()).toEqual(2); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView2); expect(nav['isTransitioning']).toEqual(false); @@ -161,7 +161,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view2, view1, 'forward' ); - expect(nav.length()).toEqual(2); + expect(nav.getLength()).toEqual(2); }, 10000); }); @@ -187,9 +187,9 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, undefined, undefined, undefined ); - expect(nav.length()).toEqual(4); + expect(nav.getLength()).toEqual(4); expect(nav.getByIndex(0)!.component).toEqual(MockView4); - expect(nav.getByIndex(nav.length() - 1)!.component).toEqual(MockView3); + expect(nav.getByIndex(nav.getLength() - 1)!.component).toEqual(MockView3); }, 10000); @@ -206,8 +206,8 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view2, view1, 'forward' ); - expect(nav.length()).toEqual(2); - expect(nav.getByIndex(nav.length() - 1)!.component).toEqual(MockView2); + expect(nav.getLength()).toEqual(2); + expect(nav.getByIndex(nav.getLength() - 1)!.component).toEqual(MockView2); }, 10000); @@ -222,8 +222,8 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view2, view1, 'forward' ); - expect(nav.length()).toEqual(2); - expect(nav.getByIndex(nav.length() - 1)!.component).toEqual(MockView2); + expect(nav.getLength()).toEqual(2); + expect(nav.getByIndex(nav.getLength() - 1)!.component).toEqual(MockView2); }, 10000); @@ -240,8 +240,8 @@ describe('NavController', () => { const rejectReason = new Error('invalid views to insert'); expect(err).toEqual(rejectReason); expect(trnsDone).toHaveBeenCalledWith(hasCompleted, requiresTransition, rejectReason); - expect(nav.length()).toEqual(1); - expect(nav.getByIndex(nav.length() - 1)!.component).toEqual(MockView1); + expect(nav.getLength()).toEqual(1); + expect(nav.getByIndex(nav.getLength() - 1)!.component).toEqual(MockView1); done(); }); }, 10000); @@ -273,7 +273,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, undefined, undefined, undefined ); - expect(nav.length()).toEqual(5); + expect(nav.getLength()).toEqual(5); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView4); expect(nav.getByIndex(2)!.component).toEqual(MockView5); @@ -300,7 +300,7 @@ describe('NavController', () => { hasCompleted, requiresTransition, rejectReason ); expect(err).toEqual(rejectReason); - expect(nav.length()).toEqual(0); + expect(nav.getLength()).toEqual(0); expect(nav['isTransitioning']).toEqual(false); done(); }); @@ -332,7 +332,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view1, view2, 'back' ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav['isTransitioning']).toEqual(false); @@ -355,7 +355,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view2, view3, 'back' ); - expect(nav.length()).toEqual(2); + expect(nav.getLength()).toEqual(2); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView2); @@ -375,7 +375,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view2, view4, 'back' ); - expect(nav.length()).toEqual(2); + expect(nav.getLength()).toEqual(2); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView2); @@ -424,7 +424,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view1, view4, 'back' ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView1); }, 10000); @@ -476,7 +476,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view1, view4, 'back' ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView1); }, 10000); @@ -491,7 +491,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, undefined, undefined, undefined ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView1); }, 10000); @@ -543,7 +543,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, undefined, undefined, undefined ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView4); }, 10000); @@ -599,7 +599,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, undefined, undefined, undefined ); - expect(nav.length()).toEqual(3); + expect(nav.getLength()).toEqual(3); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView2); expect(nav.getByIndex(2)!.component).toEqual(MockView5); @@ -649,7 +649,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view2, view4, 'back' ); - expect(nav.length()).toEqual(2); + expect(nav.getLength()).toEqual(2); expect(nav.getByIndex(0)!.component).toEqual(MockView1); expect(nav.getByIndex(1)!.component).toEqual(MockView2); @@ -693,7 +693,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, undefined, undefined, undefined ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView3); }, 10000); @@ -732,7 +732,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view2, view3, 'back' ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView2); }, 10000); @@ -771,7 +771,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view1, view3, 'back' ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView1); }, 10000); @@ -797,7 +797,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view4, view3, 'back' ); - expect(nav.length()).toEqual(1); + expect(nav.getLength()).toEqual(1); expect(nav.getByIndex(0)!.component).toEqual(MockView4); }, 10000); @@ -828,7 +828,7 @@ describe('NavController', () => { expect(trnsDone).toHaveBeenCalledWith( hasCompleted, requiresTransition, view5, view2, 'back' ); - expect(nav.length()).toEqual(2); + expect(nav.getLength()).toEqual(2); expect(nav.getByIndex(0)!.component).toEqual(MockView4); expect(nav.getByIndex(1)!.component).toEqual(MockView5); diff --git a/core/src/components/popover-controller/popover-controller.tsx b/core/src/components/popover-controller/popover-controller.tsx index 2a34ae00d5..e6e9a34a74 100644 --- a/core/src/components/popover-controller/popover-controller.tsx +++ b/core/src/components/popover-controller/popover-controller.tsx @@ -1,6 +1,6 @@ import { Component, Listen, Method, Prop } from '@stencil/core'; -import { PopoverOptions, OverlayController } from '../../interface'; +import { OverlayController, PopoverOptions } from '../../interface'; import { createOverlay, dismissOverlay, getTopOverlay, removeLastOverlay } from '../../utils/overlays'; @Component({