@@ -8,22 +8,26 @@ import { By } from '@angular/platform-browser';
8
8
import { RouterTestingModule } from '@angular/router/testing' ;
9
9
import { Router } from '@angular/router' ;
10
10
import { Location } from '@angular/common' ;
11
- import { AddingSelectedTabComponent , TabsContactsComponent , TabsDisabledTestComponent , TabsRoutingDisabledTestComponent ,
12
- TabsRoutingGuardTestComponent , TabsRoutingTestComponent , TabsTabsOnlyModeTest1Component , TabsTabsOnlyModeTest2Component ,
11
+ import {
12
+ AddingSelectedTabComponent , TabsContactsComponent , TabsDisabledTestComponent , TabsRoutingDisabledTestComponent ,
13
+ TabsRoutingGuardTestComponent , TabsRoutingTestComponent , TabsRtlComponent , TabsTabsOnlyModeTest1Component , TabsTabsOnlyModeTest2Component ,
13
14
TabsTest2Component , TabsTestBug4420Component , TabsTestComponent , TabsTestCustomStylesComponent ,
14
15
TabsTestHtmlAttributesComponent , TabsTestSelectedTabComponent , TabsWithPrefixSuffixTestComponent ,
15
- TemplatedTabsTestComponent } from '../../test-utils/tabs-components.spec' ;
16
+ TemplatedTabsTestComponent
17
+ } from '../../test-utils/tabs-components.spec' ;
16
18
import { IgxTabsModule } from './tabs.module' ;
17
19
import { configureTestSuite } from '../../test-utils/configure-suite' ;
18
20
import { UIInteractions , wait } from '../../test-utils/ui-interactions.spec' ;
19
21
import { IgxTabContentComponent } from './tab-content.component' ;
20
22
import { RoutingTestGuard } from '../../test-utils/routing-test-guard.spec' ;
21
- import { RoutingView1Component ,
23
+ import {
24
+ RoutingView1Component ,
22
25
RoutingView2Component ,
23
26
RoutingView3Component ,
24
27
RoutingView4Component ,
25
28
RoutingView5Component ,
26
- RoutingViewComponentsModule } from '../../test-utils/routing-view-components.spec' ;
29
+ RoutingViewComponentsModule
30
+ } from '../../test-utils/routing-view-components.spec' ;
27
31
import { IgxButtonModule } from '../../directives/button/button.directive' ;
28
32
import { IgxDropDownModule } from '../../drop-down/public_api' ;
29
33
import { IgxToggleModule } from '../../directives/toggle/toggle.directive' ;
@@ -58,7 +62,7 @@ describe('IgxTabs', () => {
58
62
declarations : [ TabsTestHtmlAttributesComponent , TabsTestComponent , TabsTest2Component , TemplatedTabsTestComponent ,
59
63
TabsRoutingDisabledTestComponent , TabsTestSelectedTabComponent , TabsTestCustomStylesComponent , TabsTestBug4420Component ,
60
64
TabsRoutingTestComponent , TabsTabsOnlyModeTest1Component , TabsTabsOnlyModeTest2Component , TabsDisabledTestComponent ,
61
- TabsRoutingGuardTestComponent , TabsWithPrefixSuffixTestComponent , TabsContactsComponent , AddingSelectedTabComponent ] ,
65
+ TabsRoutingGuardTestComponent , TabsWithPrefixSuffixTestComponent , TabsContactsComponent , AddingSelectedTabComponent , TabsRtlComponent ] ,
62
66
imports : [ IgxTabsModule , BrowserAnimationsModule , IgxButtonModule , IgxIconModule , IgxDropDownModule , IgxToggleModule ,
63
67
RoutingViewComponentsModule , IgxPrefixModule , IgxSuffixModule , RouterTestingModule . withRoutes ( testRoutes ) ] ,
64
68
providers : [ RoutingTestGuard , PlatformUtil ]
@@ -280,7 +284,7 @@ describe('IgxTabs', () => {
280
284
fixture . detectChanges ( ) ;
281
285
expect ( tabs . offset ) . toBeGreaterThan ( 0 ) ;
282
286
283
- tabs . scrollLeft ( null ) ;
287
+ tabs . scrollPrev ( null ) ;
284
288
285
289
tick ( 100 ) ;
286
290
fixture . detectChanges ( ) ;
@@ -700,14 +704,14 @@ describe('IgxTabs', () => {
700
704
headerElements = tabItems . map ( item => item . headerComponent . nativeElement ) ;
701
705
702
706
fixture . ngZone . run ( ( ) => {
703
- router . initialNavigation ( ) ;
704
- } ) ;
707
+ router . initialNavigation ( ) ;
708
+ } ) ;
705
709
tick ( ) ;
706
710
expect ( location . path ( ) ) . toBe ( '/' ) ;
707
711
708
712
fixture . ngZone . run ( ( ) => {
709
- UIInteractions . simulateClickAndSelectEvent ( headerElements [ 0 ] ) ;
710
- } ) ;
713
+ UIInteractions . simulateClickAndSelectEvent ( headerElements [ 0 ] ) ;
714
+ } ) ;
711
715
tick ( ) ;
712
716
expect ( location . path ( ) ) . toBe ( '/view1' ) ;
713
717
fixture . detectChanges ( ) ;
@@ -716,8 +720,8 @@ describe('IgxTabs', () => {
716
720
expect ( tabItems [ 1 ] . selected ) . toBe ( false ) ;
717
721
718
722
fixture . ngZone . run ( ( ) => {
719
- UIInteractions . simulateClickAndSelectEvent ( headerElements [ 1 ] ) ;
720
- } ) ;
723
+ UIInteractions . simulateClickAndSelectEvent ( headerElements [ 1 ] ) ;
724
+ } ) ;
721
725
tick ( ) ;
722
726
expect ( location . path ( ) ) . toBe ( '/view1' ) ;
723
727
fixture . detectChanges ( ) ;
@@ -1048,7 +1052,7 @@ describe('IgxTabs', () => {
1048
1052
expect ( indexChangingSpy ) . toHaveBeenCalledTimes ( 2 ) ;
1049
1053
expect ( indexChangeSpy ) . toHaveBeenCalledTimes ( 2 ) ;
1050
1054
expect ( itemChangeSpy ) . toHaveBeenCalledTimes ( 2 ) ;
1051
- } ) ) ;
1055
+ } ) ) ;
1052
1056
1053
1057
it ( 'Validate the events are not fired when navigating between tabs with home/end before pressing enter/space key.' ,
1054
1058
fakeAsync ( ( ) => {
@@ -1112,7 +1116,7 @@ describe('IgxTabs', () => {
1112
1116
expect ( indexChangingSpy ) . toHaveBeenCalledTimes ( 2 ) ;
1113
1117
expect ( indexChangeSpy ) . toHaveBeenCalledTimes ( 2 ) ;
1114
1118
expect ( itemChangeSpy ) . toHaveBeenCalledTimes ( 2 ) ;
1115
- } ) ) ;
1119
+ } ) ) ;
1116
1120
1117
1121
} ) ;
1118
1122
} ) ;
@@ -1290,4 +1294,63 @@ describe('IgxTabs', () => {
1290
1294
1291
1295
expect ( rightScrollButton . clientWidth ) . toBeFalsy ( ) ;
1292
1296
} ) ;
1297
+
1298
+ describe ( 'IgxTabs RTL' , ( ) => {
1299
+ let fix ;
1300
+ let tabs ;
1301
+ let tabItems ;
1302
+ let headers ;
1303
+
1304
+ beforeEach ( ( ) => {
1305
+ document . body . dir = 'rtl' ;
1306
+ fix = TestBed . createComponent ( TabsRtlComponent ) ;
1307
+ tabs = fix . componentInstance . tabs ;
1308
+ fix . detectChanges ( ) ;
1309
+ tabItems = tabs . items . toArray ( ) ;
1310
+ headers = tabItems . map ( item => item . headerComponent . nativeElement ) ;
1311
+ } ) ;
1312
+
1313
+ it ( 'should position scroll buttons properly' , ( ) => {
1314
+ fix . componentInstance . wrapperDiv . nativeElement . style . width = '300px' ;
1315
+ fix . detectChanges ( ) ;
1316
+
1317
+ const scrollNextButton = fix . componentInstance . tabs . scrollNextButton ;
1318
+ const scrollPrevButton = fix . componentInstance . tabs . scrollPrevButton ;
1319
+ expect ( scrollNextButton . nativeElement . offsetLeft ) . toBeLessThan ( scrollPrevButton . nativeElement . offsetLeft ) ;
1320
+ } ) ;
1321
+
1322
+ it ( 'should select next tab when left arrow is pressed and previous tab when right arrow is pressed' , fakeAsync ( ( ) => {
1323
+ tick ( 100 ) ;
1324
+ fix . detectChanges ( ) ;
1325
+ headers = tabs . items . map ( item => item . headerComponent . nativeElement ) ;
1326
+
1327
+ headers [ 0 ] . focus ( ) ;
1328
+ headers [ 0 ] . dispatchEvent ( KEY_LEFT_EVENT ) ;
1329
+ tick ( 200 ) ;
1330
+ fix . detectChanges ( ) ;
1331
+ expect ( tabs . selectedIndex ) . toBe ( 1 ) ;
1332
+
1333
+ headers [ 1 ] . dispatchEvent ( KEY_LEFT_EVENT ) ;
1334
+ tick ( 200 ) ;
1335
+ fix . detectChanges ( ) ;
1336
+ expect ( tabs . selectedIndex ) . toBe ( 2 ) ;
1337
+
1338
+ headers [ 2 ] . dispatchEvent ( KEY_LEFT_EVENT ) ;
1339
+ tick ( 200 ) ;
1340
+ fix . detectChanges ( ) ;
1341
+ expect ( tabs . selectedIndex ) . toBe ( 3 ) ;
1342
+
1343
+ headers [ 0 ] . dispatchEvent ( KEY_RIGHT_EVENT ) ;
1344
+ tick ( 200 ) ;
1345
+ fix . detectChanges ( ) ;
1346
+ expect ( tabs . selectedIndex ) . toBe ( 8 ) ;
1347
+
1348
+ headers [ 8 ] . dispatchEvent ( KEY_RIGHT_EVENT ) ;
1349
+ tick ( 200 ) ;
1350
+ fix . detectChanges ( ) ;
1351
+ expect ( tabs . selectedIndex ) . toBe ( 7 ) ;
1352
+ } ) ) ;
1353
+ } ) ;
1293
1354
} ) ;
1355
+
1356
+
0 commit comments