@@ -1287,3 +1287,103 @@ describe("TabContainer popover", () => {
12871287 cy . get ( "@list" ) . find ( ".ui5-tab-overflow-itemContent-wrapper" ) . eq ( 3 ) . should ( "have.css" , "padding-left" , "24px" ) ;
12881288 } ) ;
12891289} ) ;
1290+
1291+ describe ( "Tab semantic click event" , ( ) => {
1292+ it ( "fires click event on tab when clicked" , ( ) => {
1293+ cy . mount (
1294+ < TabContainer id = "tc1" collapsed >
1295+ < Tab id = "tab1" text = "Products" > </ Tab >
1296+ < Tab text = "Laptops" selected > </ Tab >
1297+ </ TabContainer >
1298+ ) ;
1299+
1300+ cy . get ( "#tab1" ) . then ( ( $tab ) => {
1301+ $tab [ 0 ] . addEventListener ( "click" , cy . stub ( ) . as ( "clickStub" ) ) ;
1302+ } ) ;
1303+
1304+ cy . get ( "#tc1" ) . shadow ( ) . find ( ".ui5-tab-strip-item:nth-child(1)" ) . realClick ( ) ;
1305+
1306+ cy . get ( "@clickStub" ) . should ( "have.been.calledOnce" ) ;
1307+ cy . get ( "@clickStub" ) . should ( ( stub : any ) => {
1308+ const event = stub . firstCall . args [ 0 ] ;
1309+ expect ( event ) . to . be . instanceOf ( CustomEvent ) ;
1310+ expect ( event . detail . tab ) . to . exist ;
1311+ expect ( event . detail . originalEvent ) . to . be . instanceOf ( MouseEvent ) ;
1312+ } ) ;
1313+ } ) ;
1314+
1315+ it ( "fires click event on tab when activated with Enter key" , ( ) => {
1316+ cy . mount (
1317+ < TabContainer id = "tc1" collapsed >
1318+ < Tab id = "tab1" text = "Products" > </ Tab >
1319+ < Tab text = "Laptops" selected > </ Tab >
1320+ </ TabContainer >
1321+ ) ;
1322+
1323+ cy . get ( "#tab1" ) . then ( ( $tab ) => {
1324+ $tab [ 0 ] . addEventListener ( "click" , cy . stub ( ) . as ( "clickStub" ) ) ;
1325+ } ) ;
1326+
1327+ cy . get ( "#tc1" ) . shadow ( ) . find ( ".ui5-tab-strip-item:nth-child(1)" ) . realClick ( ) ;
1328+ cy . realPress ( "Enter" ) ;
1329+
1330+ cy . get ( "@clickStub" ) . should ( "have.been.calledTwice" ) ;
1331+ } ) ;
1332+
1333+ it ( "fires click event on tab when activated with Space key" , ( ) => {
1334+ cy . mount (
1335+ < TabContainer id = "tc1" collapsed >
1336+ < Tab id = "tab1" text = "Products" > </ Tab >
1337+ < Tab text = "Laptops" selected > </ Tab >
1338+ </ TabContainer >
1339+ ) ;
1340+
1341+ cy . get ( "#tab1" ) . then ( ( $tab ) => {
1342+ $tab [ 0 ] . addEventListener ( "click" , cy . stub ( ) . as ( "clickStub" ) ) ;
1343+ } ) ;
1344+
1345+ cy . get ( "#tc1" ) . shadow ( ) . find ( ".ui5-tab-strip-item:nth-child(1)" ) . realClick ( ) ;
1346+ cy . realPress ( "Space" ) ;
1347+
1348+ cy . get ( "@clickStub" ) . should ( "have.been.calledTwice" ) ;
1349+ } ) ;
1350+
1351+ it ( "does not fire click event on disabled tab" , ( ) => {
1352+ cy . mount (
1353+ < TabContainer id = "tc1" collapsed >
1354+ < Tab id = "tab1" text = "Products" disabled > </ Tab >
1355+ < Tab text = "Laptops" selected > </ Tab >
1356+ </ TabContainer >
1357+ ) ;
1358+
1359+ cy . get ( "#tab1" ) . then ( ( $tab ) => {
1360+ $tab [ 0 ] . addEventListener ( "click" , cy . stub ( ) . as ( "clickStub" ) ) ;
1361+ } ) ;
1362+
1363+ cy . get ( "#tc1" ) . shadow ( ) . find ( ".ui5-tab-strip-item:nth-child(1)" ) . click ( { force : true } ) ;
1364+
1365+ cy . get ( "@clickStub" ) . should ( "not.have.been.called" ) ;
1366+ } ) ;
1367+
1368+ it ( "fires both click on Tab and tab-select on TabContainer" , ( ) => {
1369+ cy . mount (
1370+ < TabContainer id = "tc1" collapsed >
1371+ < Tab id = "tab1" text = "Products" > </ Tab >
1372+ < Tab text = "Laptops" selected > </ Tab >
1373+ </ TabContainer >
1374+ ) ;
1375+
1376+ cy . get ( "#tab1" ) . then ( ( $tab ) => {
1377+ $tab [ 0 ] . addEventListener ( "click" , cy . stub ( ) . as ( "tabClickStub" ) ) ;
1378+ } ) ;
1379+
1380+ cy . get ( "#tc1" ) . then ( ( $tc ) => {
1381+ $tc [ 0 ] . addEventListener ( "ui5-tab-select" , cy . stub ( ) . as ( "tabSelectStub" ) ) ;
1382+ } ) ;
1383+
1384+ cy . get ( "#tc1" ) . shadow ( ) . find ( ".ui5-tab-strip-item:nth-child(1)" ) . realClick ( ) ;
1385+
1386+ cy . get ( "@tabClickStub" ) . should ( "have.been.calledOnce" ) ;
1387+ cy . get ( "@tabSelectStub" ) . should ( "have.been.calledOnce" ) ;
1388+ } ) ;
1389+ } ) ;
0 commit comments