@@ -1590,6 +1590,104 @@ describe("Keyboard Handling", () => {
15901590 . eq ( 1 )
15911591 . should ( "have.attr" , "selected" ) ;
15921592 } ) ;
1593+
1594+ it ( "should deselect all tokens on [Escape] key" , ( ) => {
1595+ cy . get ( "[ui5-token]" )
1596+ . eq ( 0 )
1597+ . as ( "firstToken" ) ;
1598+
1599+ cy . get ( "[ui5-token]" )
1600+ . eq ( 1 )
1601+ . as ( "secondToken" ) ;
1602+
1603+ cy . get ( "[ui5-token]" )
1604+ . eq ( 2 )
1605+ . as ( "thirdToken" ) ;
1606+
1607+ cy . get ( "@firstToken" )
1608+ . realClick ( ) ;
1609+
1610+ cy . realPress ( [ "Shift" , "End" ] ) ;
1611+
1612+ cy . get ( "@firstToken" )
1613+ . should ( "have.attr" , "selected" ) ;
1614+
1615+ cy . get ( "@secondToken" )
1616+ . should ( "have.attr" , "selected" ) ;
1617+
1618+ cy . get ( "@thirdToken" )
1619+ . should ( "have.attr" , "selected" ) ;
1620+
1621+ cy . realPress ( "Escape" ) ;
1622+
1623+ cy . get ( "@firstToken" )
1624+ . should ( "not.have.attr" , "selected" ) ;
1625+
1626+ cy . get ( "@secondToken" )
1627+ . should ( "not.have.attr" , "selected" ) ;
1628+
1629+ cy . get ( "@thirdToken" )
1630+ . should ( "not.have.attr" , "selected" ) ;
1631+ } ) ;
1632+
1633+ it ( "should fire selection-change event on [Escape] when tokens are selected" , ( ) => {
1634+ cy . mount (
1635+ < Tokenizer onSelectionChange = { cy . stub ( ) . as ( "selectionChange" ) } >
1636+ < Token text = "Andora" > </ Token >
1637+ < Token text = "Bulgaria" > </ Token >
1638+ < Token text = "Canada" > </ Token >
1639+ </ Tokenizer >
1640+ ) ;
1641+
1642+ cy . get ( "[ui5-token]" )
1643+ . eq ( 0 )
1644+ . realClick ( ) ;
1645+
1646+ cy . get ( "@selectionChange" )
1647+ . should ( "have.been.called" ) ;
1648+
1649+ cy . get ( "@selectionChange" )
1650+ . invoke ( "resetHistory" ) ;
1651+
1652+ cy . realPress ( "Escape" ) ;
1653+
1654+ cy . get ( "@selectionChange" )
1655+ . should ( "have.been.calledOnce" ) ;
1656+
1657+ cy . get ( "@selectionChange" )
1658+ . its ( "firstCall.args.0.detail.tokens" )
1659+ . should ( "have.length" , 0 ) ;
1660+ } ) ;
1661+
1662+ it ( "should not fire selection-change on [Escape] when no tokens are selected" , ( ) => {
1663+ cy . mount (
1664+ < Tokenizer onSelectionChange = { cy . stub ( ) . as ( "selectionChange" ) } >
1665+ < Token text = "Andora" > </ Token >
1666+ < Token text = "Bulgaria" > </ Token >
1667+ </ Tokenizer >
1668+ ) ;
1669+
1670+ cy . get ( "[ui5-token]" )
1671+ . eq ( 0 )
1672+ . realClick ( ) ;
1673+
1674+ cy . get ( "@selectionChange" )
1675+ . invoke ( "resetHistory" ) ;
1676+
1677+ cy . realPress ( "Space" ) ;
1678+
1679+ cy . get ( "[ui5-token]" )
1680+ . eq ( 0 )
1681+ . should ( "not.have.attr" , "selected" ) ;
1682+
1683+ cy . get ( "@selectionChange" )
1684+ . invoke ( "resetHistory" ) ;
1685+
1686+ cy . realPress ( "Escape" ) ;
1687+
1688+ cy . get ( "@selectionChange" )
1689+ . should ( "not.have.been.called" ) ;
1690+ } ) ;
15931691} ) ;
15941692
15951693describe ( "Clipboard Operations" , ( ) => {
0 commit comments