Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Bootstrap
bootstrap
Commits
dcd99aa7
Commit
dcd99aa7
authored
4 years ago
by
Tanguy Krotoff
Committed by
XhmikosR
4 years ago
Browse files
Options
Download
Email Patches
Plain Diff
Replace event.which with event.key and event.button
parent
8547ab14
1 merge request
!31948
Examples/Floating-labels: fix bad behavior with autofill
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
js/src/carousel.js
+5
-5
js/src/carousel.js
js/src/dom/event-handler.js
+0
-6
js/src/dom/event-handler.js
js/src/dropdown.js
+17
-17
js/src/dropdown.js
js/src/modal.js
+3
-3
js/src/modal.js
js/tests/unit/carousel.spec.js
+19
-19
js/tests/unit/carousel.spec.js
js/tests/unit/dropdown.spec.js
+52
-56
js/tests/unit/dropdown.spec.js
js/tests/unit/modal.spec.js
+4
-4
js/tests/unit/modal.spec.js
with
100 additions
and
110 deletions
+100
-110
js/src/carousel.js
+
5
-
5
View file @
dcd99aa7
...
@@ -33,8 +33,8 @@ const DATA_KEY = 'bs.carousel'
...
@@ -33,8 +33,8 @@ const DATA_KEY = 'bs.carousel'
const
EVENT_KEY
=
`.
${
DATA_KEY
}
`
const
EVENT_KEY
=
`.
${
DATA_KEY
}
`
const
DATA_API_KEY
=
'
.data-api
'
const
DATA_API_KEY
=
'
.data-api
'
const
ARROW_LEFT_KEY
CODE
=
37
// KeyboardEvent.which value for left arrow key
const
ARROW_LEFT_KEY
=
'
ArrowLeft
'
const
ARROW_RIGHT_KEY
CODE
=
39
// KeyboardEvent.which value for right arrow key
const
ARROW_RIGHT_KEY
=
'
ArrowRight
'
const
TOUCHEVENT_COMPAT_WAIT
=
500
// Time for mouse compat events to fire after touch
const
TOUCHEVENT_COMPAT_WAIT
=
500
// Time for mouse compat events to fire after touch
const
SWIPE_THRESHOLD
=
40
const
SWIPE_THRESHOLD
=
40
...
@@ -342,12 +342,12 @@ class Carousel {
...
@@ -342,12 +342,12 @@ class Carousel {
return
return
}
}
switch
(
event
.
which
)
{
switch
(
event
.
key
)
{
case
ARROW_LEFT_KEY
CODE
:
case
ARROW_LEFT_KEY
:
event
.
preventDefault
()
event
.
preventDefault
()
this
.
prev
()
this
.
prev
()
break
break
case
ARROW_RIGHT_KEY
CODE
:
case
ARROW_RIGHT_KEY
:
event
.
preventDefault
()
event
.
preventDefault
()
this
.
next
()
this
.
next
()
break
break
...
...
This diff is collapsed.
Click to expand it.
js/src/dom/event-handler.js
+
0
-
6
View file @
dcd99aa7
...
@@ -17,7 +17,6 @@ import { defaultPreventedPreservedOnDispatch } from './polyfill'
...
@@ -17,7 +17,6 @@ import { defaultPreventedPreservedOnDispatch } from './polyfill'
const
$
=
getjQuery
()
const
$
=
getjQuery
()
const
namespaceRegex
=
/
[^
.
]
*
(?=\.
.*
)\.
|.*/
const
namespaceRegex
=
/
[^
.
]
*
(?=\.
.*
)\.
|.*/
const
stripNameRegex
=
/
\.
.*/
const
stripNameRegex
=
/
\.
.*/
const
keyEventRegex
=
/^key/
const
stripUidRegex
=
/::
\d
+$/
const
stripUidRegex
=
/::
\d
+$/
const
eventRegistry
=
{}
// Events storage
const
eventRegistry
=
{}
// Events storage
let
uidEvent
=
1
let
uidEvent
=
1
...
@@ -94,11 +93,6 @@ function getEvent(element) {
...
@@ -94,11 +93,6 @@ function getEvent(element) {
}
}
function
fixEvent
(
event
,
element
)
{
function
fixEvent
(
event
,
element
)
{
// Add which for key events
if
(
event
.
which
===
null
&&
keyEventRegex
.
test
(
event
.
type
))
{
event
.
which
=
event
.
charCode
===
null
?
event
.
keyCode
:
event
.
charCode
}
event
.
delegateTarget
=
element
event
.
delegateTarget
=
element
}
}
...
...
This diff is collapsed.
Click to expand it.
js/src/dropdown.js
+
17
-
17
View file @
dcd99aa7
...
@@ -31,14 +31,14 @@ const DATA_KEY = 'bs.dropdown'
...
@@ -31,14 +31,14 @@ const DATA_KEY = 'bs.dropdown'
const
EVENT_KEY
=
`.
${
DATA_KEY
}
`
const
EVENT_KEY
=
`.
${
DATA_KEY
}
`
const
DATA_API_KEY
=
'
.data-api
'
const
DATA_API_KEY
=
'
.data-api
'
const
ESCAPE_KEY
CODE
=
27
// KeyboardEvent.which value for Escape (Esc) key
const
ESCAPE_KEY
=
'
Escape
'
const
SPACE_KEY
CODE
=
32
// KeyboardEvent.which value for space key
const
SPACE_KEY
=
'
Space
'
const
TAB_KEY
CODE
=
9
// KeyboardEvent.which value for tab key
const
TAB_KEY
=
'
Tab
'
const
ARROW_UP_KEY
CODE
=
38
// KeyboardEvent.which value for up arrow key
const
ARROW_UP_KEY
=
'
ArrowUp
'
const
ARROW_DOWN_KEY
CODE
=
40
// KeyboardEvent.which value for down arrow key
const
ARROW_DOWN_KEY
=
'
ArrowDown
'
const
RIGHT_MOUSE_BUTTON
_WHICH
=
3
// MouseEvent.
which
value for the
right button (assuming a right-handed mouse)
const
RIGHT_MOUSE_BUTTON
=
2
// MouseEvent.
button
value for the
secondary button, usually the right button
const
REGEXP_KEYDOWN
=
new
RegExp
(
`
${
ARROW_UP_KEY
CODE
}
|
${
ARROW_DOWN_KEY
CODE
}
|
${
ESCAPE_KEY
CODE
}
`
)
const
REGEXP_KEYDOWN
=
new
RegExp
(
`
${
ARROW_UP_KEY
}
|
${
ARROW_DOWN_KEY
}
|
${
ESCAPE_KEY
}
`
)
const
EVENT_HIDE
=
`hide
${
EVENT_KEY
}
`
const
EVENT_HIDE
=
`hide
${
EVENT_KEY
}
`
const
EVENT_HIDDEN
=
`hidden
${
EVENT_KEY
}
`
const
EVENT_HIDDEN
=
`hidden
${
EVENT_KEY
}
`
...
@@ -372,8 +372,8 @@ class Dropdown {
...
@@ -372,8 +372,8 @@ class Dropdown {
}
}
static
clearMenus
(
event
)
{
static
clearMenus
(
event
)
{
if
(
event
&&
(
event
.
which
===
RIGHT_MOUSE_BUTTON
_WHICH
||
if
(
event
&&
(
event
.
button
===
RIGHT_MOUSE_BUTTON
||
(
event
.
type
===
'
keyup
'
&&
event
.
which
!==
TAB_KEY
CODE
)))
{
(
event
.
type
===
'
keyup
'
&&
event
.
key
!==
TAB_KEY
)))
{
return
return
}
}
...
@@ -401,7 +401,7 @@ class Dropdown {
...
@@ -401,7 +401,7 @@ class Dropdown {
if
(
event
&&
((
event
.
type
===
'
click
'
&&
if
(
event
&&
((
event
.
type
===
'
click
'
&&
/input|textarea/i
.
test
(
event
.
target
.
tagName
))
||
/input|textarea/i
.
test
(
event
.
target
.
tagName
))
||
(
event
.
type
===
'
keyup
'
&&
event
.
which
===
TAB_KEY
CODE
))
&&
(
event
.
type
===
'
keyup
'
&&
event
.
key
===
TAB_KEY
))
&&
dropdownMenu
.
contains
(
event
.
target
))
{
dropdownMenu
.
contains
(
event
.
target
))
{
continue
continue
}
}
...
@@ -443,10 +443,10 @@ class Dropdown {
...
@@ -443,10 +443,10 @@ class Dropdown {
// - If key is not up or down => not a dropdown command
// - If key is not up or down => not a dropdown command
// - If trigger inside the menu => not a dropdown command
// - If trigger inside the menu => not a dropdown command
if
(
/input|textarea/i
.
test
(
event
.
target
.
tagName
)
?
if
(
/input|textarea/i
.
test
(
event
.
target
.
tagName
)
?
event
.
which
===
SPACE_KEY
CODE
||
(
event
.
which
!==
ESCAPE_KEY
CODE
&&
event
.
key
===
SPACE_KEY
||
(
event
.
key
!==
ESCAPE_KEY
&&
((
event
.
which
!==
ARROW_DOWN_KEY
CODE
&&
event
.
which
!==
ARROW_UP_KEY
CODE
)
||
((
event
.
key
!==
ARROW_DOWN_KEY
&&
event
.
key
!==
ARROW_UP_KEY
)
||
SelectorEngine
.
closest
(
event
.
target
,
SELECTOR_MENU
)))
:
SelectorEngine
.
closest
(
event
.
target
,
SELECTOR_MENU
)))
:
!
REGEXP_KEYDOWN
.
test
(
event
.
which
))
{
!
REGEXP_KEYDOWN
.
test
(
event
.
key
))
{
return
return
}
}
...
@@ -460,14 +460,14 @@ class Dropdown {
...
@@ -460,14 +460,14 @@ class Dropdown {
const
parent
=
Dropdown
.
getParentFromElement
(
this
)
const
parent
=
Dropdown
.
getParentFromElement
(
this
)
const
isActive
=
this
.
classList
.
contains
(
CLASS_NAME_SHOW
)
const
isActive
=
this
.
classList
.
contains
(
CLASS_NAME_SHOW
)
if
(
event
.
which
===
ESCAPE_KEY
CODE
)
{
if
(
event
.
key
===
ESCAPE_KEY
)
{
const
button
=
this
.
matches
(
SELECTOR_DATA_TOGGLE
)
?
this
:
SelectorEngine
.
prev
(
this
,
SELECTOR_DATA_TOGGLE
)[
0
]
const
button
=
this
.
matches
(
SELECTOR_DATA_TOGGLE
)
?
this
:
SelectorEngine
.
prev
(
this
,
SELECTOR_DATA_TOGGLE
)[
0
]
button
.
focus
()
button
.
focus
()
Dropdown
.
clearMenus
()
Dropdown
.
clearMenus
()
return
return
}
}
if
(
!
isActive
||
event
.
which
===
SPACE_KEY
CODE
)
{
if
(
!
isActive
||
event
.
key
===
SPACE_KEY
)
{
Dropdown
.
clearMenus
()
Dropdown
.
clearMenus
()
return
return
}
}
...
@@ -481,11 +481,11 @@ class Dropdown {
...
@@ -481,11 +481,11 @@ class Dropdown {
let
index
=
items
.
indexOf
(
event
.
target
)
||
0
let
index
=
items
.
indexOf
(
event
.
target
)
||
0
if
(
event
.
which
===
ARROW_UP_KEY
CODE
&&
index
>
0
)
{
// Up
if
(
event
.
key
===
ARROW_UP_KEY
&&
index
>
0
)
{
// Up
index
--
index
--
}
}
if
(
event
.
which
===
ARROW_DOWN_KEY
CODE
&&
index
<
items
.
length
-
1
)
{
// Down
if
(
event
.
key
===
ARROW_DOWN_KEY
&&
index
<
items
.
length
-
1
)
{
// Down
index
++
index
++
}
}
...
...
This diff is collapsed.
Click to expand it.
js/src/modal.js
+
3
-
3
View file @
dcd99aa7
...
@@ -31,7 +31,7 @@ const VERSION = '4.3.1'
...
@@ -31,7 +31,7 @@ const VERSION = '4.3.1'
const
DATA_KEY
=
'
bs.modal
'
const
DATA_KEY
=
'
bs.modal
'
const
EVENT_KEY
=
`.
${
DATA_KEY
}
`
const
EVENT_KEY
=
`.
${
DATA_KEY
}
`
const
DATA_API_KEY
=
'
.data-api
'
const
DATA_API_KEY
=
'
.data-api
'
const
ESCAPE_KEY
CODE
=
27
// KeyboardEvent.which value for Escape (Esc) key
const
ESCAPE_KEY
=
'
Escape
'
const
Default
=
{
const
Default
=
{
backdrop
:
true
,
backdrop
:
true
,
...
@@ -299,10 +299,10 @@ class Modal {
...
@@ -299,10 +299,10 @@ class Modal {
_setEscapeEvent
()
{
_setEscapeEvent
()
{
if
(
this
.
_isShown
)
{
if
(
this
.
_isShown
)
{
EventHandler
.
on
(
this
.
_element
,
EVENT_KEYDOWN_DISMISS
,
event
=>
{
EventHandler
.
on
(
this
.
_element
,
EVENT_KEYDOWN_DISMISS
,
event
=>
{
if
(
this
.
_config
.
keyboard
&&
event
.
which
===
ESCAPE_KEY
CODE
)
{
if
(
this
.
_config
.
keyboard
&&
event
.
key
===
ESCAPE_KEY
)
{
event
.
preventDefault
()
event
.
preventDefault
()
this
.
hide
()
this
.
hide
()
}
else
if
(
!
this
.
_config
.
keyboard
&&
event
.
which
===
ESCAPE_KEY
CODE
)
{
}
else
if
(
!
this
.
_config
.
keyboard
&&
event
.
key
===
ESCAPE_KEY
)
{
this
.
_triggerBackdropTransition
()
this
.
_triggerBackdropTransition
()
}
}
})
})
...
...
This diff is collapsed.
Click to expand it.
js/tests/unit/carousel.spec.js
+
19
-
19
View file @
dcd99aa7
...
@@ -70,10 +70,10 @@ describe('Carousel', () => {
...
@@ -70,10 +70,10 @@ describe('Carousel', () => {
done
()
done
()
})
})
const
key
D
own
=
createEvent
(
'
keydown
'
)
const
key
d
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
39
key
d
own
.
key
=
'
ArrowRight
'
carouselEl
.
dispatchEvent
(
key
D
own
)
carouselEl
.
dispatchEvent
(
key
d
own
)
})
})
it
(
'
should go to previous item if left arrow key is pressed
'
,
done
=>
{
it
(
'
should go to previous item if left arrow key is pressed
'
,
done
=>
{
...
@@ -100,10 +100,10 @@ describe('Carousel', () => {
...
@@ -100,10 +100,10 @@ describe('Carousel', () => {
done
()
done
()
})
})
const
key
D
own
=
createEvent
(
'
keydown
'
)
const
key
d
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
37
key
d
own
.
key
=
'
ArrowLeft
'
carouselEl
.
dispatchEvent
(
key
D
own
)
carouselEl
.
dispatchEvent
(
key
d
own
)
})
})
it
(
'
should not prevent keydown if key is not ARROW_LEFT or ARROW_RIGHT
'
,
done
=>
{
it
(
'
should not prevent keydown if key is not ARROW_LEFT or ARROW_RIGHT
'
,
done
=>
{
...
@@ -130,10 +130,10 @@ describe('Carousel', () => {
...
@@ -130,10 +130,10 @@ describe('Carousel', () => {
done
()
done
()
})
})
const
key
D
own
=
createEvent
(
'
keydown
'
)
const
key
d
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
40
key
d
own
.
key
=
'
ArrowDown
'
carouselEl
.
dispatchEvent
(
key
D
own
)
carouselEl
.
dispatchEvent
(
key
d
own
)
})
})
it
(
'
should ignore keyboard events within <input>s and <textarea>s
'
,
()
=>
{
it
(
'
should ignore keyboard events within <input>s and <textarea>s
'
,
()
=>
{
...
@@ -157,34 +157,34 @@ describe('Carousel', () => {
...
@@ -157,34 +157,34 @@ describe('Carousel', () => {
keyboard
:
true
keyboard
:
true
})
})
const
spyKey
D
own
=
spyOn
(
carousel
,
'
_keydown
'
).
and
.
callThrough
()
const
spyKey
d
own
=
spyOn
(
carousel
,
'
_keydown
'
).
and
.
callThrough
()
const
spyPrev
=
spyOn
(
carousel
,
'
prev
'
)
const
spyPrev
=
spyOn
(
carousel
,
'
prev
'
)
const
spyNext
=
spyOn
(
carousel
,
'
next
'
)
const
spyNext
=
spyOn
(
carousel
,
'
next
'
)
const
key
D
own
=
createEvent
(
'
keydown
'
,
{
bubbles
:
true
,
cancelable
:
true
})
const
key
d
own
=
createEvent
(
'
keydown
'
,
{
bubbles
:
true
,
cancelable
:
true
})
key
D
own
.
which
=
39
key
d
own
.
key
=
'
ArrowRight
'
Object
.
defineProperty
(
key
D
own
,
'
target
'
,
{
Object
.
defineProperty
(
key
d
own
,
'
target
'
,
{
value
:
input
,
value
:
input
,
writable
:
true
,
writable
:
true
,
configurable
:
true
configurable
:
true
})
})
input
.
dispatchEvent
(
key
D
own
)
input
.
dispatchEvent
(
key
d
own
)
expect
(
spyKey
D
own
).
toHaveBeenCalled
()
expect
(
spyKey
d
own
).
toHaveBeenCalled
()
expect
(
spyPrev
).
not
.
toHaveBeenCalled
()
expect
(
spyPrev
).
not
.
toHaveBeenCalled
()
expect
(
spyNext
).
not
.
toHaveBeenCalled
()
expect
(
spyNext
).
not
.
toHaveBeenCalled
()
spyKey
D
own
.
calls
.
reset
()
spyKey
d
own
.
calls
.
reset
()
spyPrev
.
calls
.
reset
()
spyPrev
.
calls
.
reset
()
spyNext
.
calls
.
reset
()
spyNext
.
calls
.
reset
()
Object
.
defineProperty
(
key
D
own
,
'
target
'
,
{
Object
.
defineProperty
(
key
d
own
,
'
target
'
,
{
value
:
textarea
value
:
textarea
})
})
textarea
.
dispatchEvent
(
key
D
own
)
textarea
.
dispatchEvent
(
key
d
own
)
expect
(
spyKey
D
own
).
toHaveBeenCalled
()
expect
(
spyKey
d
own
).
toHaveBeenCalled
()
expect
(
spyPrev
).
not
.
toHaveBeenCalled
()
expect
(
spyPrev
).
not
.
toHaveBeenCalled
()
expect
(
spyNext
).
not
.
toHaveBeenCalled
()
expect
(
spyNext
).
not
.
toHaveBeenCalled
()
})
})
...
...
This diff is collapsed.
Click to expand it.
js/tests/unit/dropdown.spec.js
+
52
-
56
View file @
dcd99aa7
...
@@ -1068,10 +1068,10 @@ describe('Dropdown', () => {
...
@@ -1068,10 +1068,10 @@ describe('Dropdown', () => {
dropdownEl
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
dropdownEl
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
expect
(
btnDropdown
.
classList
.
contains
(
'
show
'
)).
toEqual
(
true
)
expect
(
btnDropdown
.
classList
.
contains
(
'
show
'
)).
toEqual
(
true
)
const
key
U
p
=
createEvent
(
'
keyup
'
)
const
key
u
p
=
createEvent
(
'
keyup
'
)
key
U
p
.
which
=
9
//
Tab
key
u
p
.
key
=
'
Tab
'
document
.
dispatchEvent
(
key
U
p
)
document
.
dispatchEvent
(
key
u
p
)
})
})
dropdownEl
.
addEventListener
(
'
hidden.bs.dropdown
'
,
()
=>
{
dropdownEl
.
addEventListener
(
'
hidden.bs.dropdown
'
,
()
=>
{
...
@@ -1165,10 +1165,10 @@ describe('Dropdown', () => {
...
@@ -1165,10 +1165,10 @@ describe('Dropdown', () => {
expect
(
first
.
classList
.
contains
(
'
show
'
)).
toEqual
(
true
,
'
"show" class added on click
'
)
expect
(
first
.
classList
.
contains
(
'
show
'
)).
toEqual
(
true
,
'
"show" class added on click
'
)
expect
(
fixtureEl
.
querySelectorAll
(
'
.dropdown-menu.show
'
).
length
).
toEqual
(
1
,
'
only one dropdown is shown
'
)
expect
(
fixtureEl
.
querySelectorAll
(
'
.dropdown-menu.show
'
).
length
).
toEqual
(
1
,
'
only one dropdown is shown
'
)
const
key
U
p
=
createEvent
(
'
keyup
'
)
const
key
u
p
=
createEvent
(
'
keyup
'
)
key
U
p
.
which
=
9
//
Tab
key
u
p
.
key
=
'
Tab
'
document
.
dispatchEvent
(
key
U
p
)
document
.
dispatchEvent
(
key
u
p
)
})
})
dropdownTestMenu
.
addEventListener
(
'
hidden.bs.dropdown
'
,
()
=>
{
dropdownTestMenu
.
addEventListener
(
'
hidden.bs.dropdown
'
,
()
=>
{
...
@@ -1180,10 +1180,10 @@ describe('Dropdown', () => {
...
@@ -1180,10 +1180,10 @@ describe('Dropdown', () => {
expect
(
last
.
classList
.
contains
(
'
show
'
)).
toEqual
(
true
,
'
"show" class added on click
'
)
expect
(
last
.
classList
.
contains
(
'
show
'
)).
toEqual
(
true
,
'
"show" class added on click
'
)
expect
(
fixtureEl
.
querySelectorAll
(
'
.dropdown-menu.show
'
).
length
).
toEqual
(
1
,
'
only one dropdown is shown
'
)
expect
(
fixtureEl
.
querySelectorAll
(
'
.dropdown-menu.show
'
).
length
).
toEqual
(
1
,
'
only one dropdown is shown
'
)
const
key
U
p
=
createEvent
(
'
keyup
'
)
const
key
u
p
=
createEvent
(
'
keyup
'
)
key
U
p
.
which
=
9
//
Tab
key
u
p
.
key
=
'
Tab
'
document
.
dispatchEvent
(
key
U
p
)
document
.
dispatchEvent
(
key
u
p
)
})
})
btnGroup
.
addEventListener
(
'
hidden.bs.dropdown
'
,
()
=>
{
btnGroup
.
addEventListener
(
'
hidden.bs.dropdown
'
,
()
=>
{
...
@@ -1217,10 +1217,10 @@ describe('Dropdown', () => {
...
@@ -1217,10 +1217,10 @@ describe('Dropdown', () => {
})
})
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
const
key
D
own
=
createEvent
(
'
keydown
'
)
const
key
d
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
27
key
d
own
.
key
=
'
Escape
'
triggerDropdown
.
dispatchEvent
(
key
D
own
)
triggerDropdown
.
dispatchEvent
(
key
d
own
)
})
})
triggerDropdown
.
click
()
triggerDropdown
.
click
()
...
@@ -1245,15 +1245,15 @@ describe('Dropdown', () => {
...
@@ -1245,15 +1245,15 @@ describe('Dropdown', () => {
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
input
.
focus
()
input
.
focus
()
const
key
D
own
=
createEvent
(
'
keydown
'
)
const
key
d
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
38
key
d
own
.
key
=
'
ArrowUp
'
input
.
dispatchEvent
(
key
D
own
)
input
.
dispatchEvent
(
key
d
own
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
textarea
.
focus
()
textarea
.
focus
()
textarea
.
dispatchEvent
(
key
D
own
)
textarea
.
dispatchEvent
(
key
d
own
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
done
()
done
()
...
@@ -1278,11 +1278,11 @@ describe('Dropdown', () => {
...
@@ -1278,11 +1278,11 @@ describe('Dropdown', () => {
const
dropdown
=
fixtureEl
.
querySelector
(
'
.dropdown
'
)
const
dropdown
=
fixtureEl
.
querySelector
(
'
.dropdown
'
)
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
const
key
D
own
=
createEvent
(
'
keydown
'
)
const
key
d
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
40
key
d
own
.
key
=
'
ArrowDown
'
triggerDropdown
.
dispatchEvent
(
key
D
own
)
triggerDropdown
.
dispatchEvent
(
key
d
own
)
triggerDropdown
.
dispatchEvent
(
key
D
own
)
triggerDropdown
.
dispatchEvent
(
key
d
own
)
expect
(
document
.
activeElement
.
classList
.
contains
(
'
disabled
'
)).
toEqual
(
false
,
'
.disabled not focused
'
)
expect
(
document
.
activeElement
.
classList
.
contains
(
'
disabled
'
)).
toEqual
(
false
,
'
.disabled not focused
'
)
expect
(
document
.
activeElement
.
hasAttribute
(
'
disabled
'
)).
toEqual
(
false
,
'
:disabled not focused
'
)
expect
(
document
.
activeElement
.
hasAttribute
(
'
disabled
'
)).
toEqual
(
false
,
'
:disabled not focused
'
)
...
@@ -1314,10 +1314,10 @@ describe('Dropdown', () => {
...
@@ -1314,10 +1314,10 @@ describe('Dropdown', () => {
const
dropdown
=
fixtureEl
.
querySelector
(
'
.dropdown
'
)
const
dropdown
=
fixtureEl
.
querySelector
(
'
.dropdown
'
)
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
const
key
D
own
=
createEvent
(
'
keydown
'
)
const
key
d
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
40
key
d
own
.
key
=
'
ArrowDown
'
triggerDropdown
.
dispatchEvent
(
key
D
own
)
triggerDropdown
.
dispatchEvent
(
key
d
own
)
expect
(
document
.
activeElement
.
classList
.
contains
(
'
d-none
'
)).
toEqual
(
false
,
'
.d-none not focused
'
)
expect
(
document
.
activeElement
.
classList
.
contains
(
'
d-none
'
)).
toEqual
(
false
,
'
.d-none not focused
'
)
expect
(
document
.
activeElement
.
style
.
display
===
'
none
'
).
toEqual
(
false
,
'
"display: none" not focused
'
)
expect
(
document
.
activeElement
.
style
.
display
===
'
none
'
).
toEqual
(
false
,
'
"display: none" not focused
'
)
...
@@ -1346,19 +1346,19 @@ describe('Dropdown', () => {
...
@@ -1346,19 +1346,19 @@ describe('Dropdown', () => {
const
item2
=
fixtureEl
.
querySelector
(
'
#item2
'
)
const
item2
=
fixtureEl
.
querySelector
(
'
#item2
'
)
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
const
keyDown
40
=
createEvent
(
'
keydown
'
)
const
key
downArrow
Down
=
createEvent
(
'
keydown
'
)
key
Down40
.
which
=
40
key
downArrowDown
.
key
=
'
ArrowDown
'
triggerDropdown
.
dispatchEvent
(
keyDown
40
)
triggerDropdown
.
dispatchEvent
(
key
downArrow
Down
)
expect
(
document
.
activeElement
).
toEqual
(
item1
,
'
item1 is focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
item1
,
'
item1 is focused
'
)
document
.
activeElement
.
dispatchEvent
(
keyDown
40
)
document
.
activeElement
.
dispatchEvent
(
key
downArrow
Down
)
expect
(
document
.
activeElement
).
toEqual
(
item2
,
'
item2 is focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
item2
,
'
item2 is focused
'
)
const
key
D
own
38
=
createEvent
(
'
keydown
'
)
const
key
d
own
ArrowUp
=
createEvent
(
'
keydown
'
)
key
D
own
38
.
which
=
38
key
d
own
ArrowUp
.
key
=
'
ArrowUp
'
document
.
activeElement
.
dispatchEvent
(
key
D
own
38
)
document
.
activeElement
.
dispatchEvent
(
key
d
own
ArrowUp
)
expect
(
document
.
activeElement
).
toEqual
(
item1
,
'
item1 is focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
item1
,
'
item1 is focused
'
)
done
()
done
()
...
@@ -1438,59 +1438,55 @@ describe('Dropdown', () => {
...
@@ -1438,59 +1438,55 @@ describe('Dropdown', () => {
const
input
=
fixtureEl
.
querySelector
(
'
input
'
)
const
input
=
fixtureEl
.
querySelector
(
'
input
'
)
const
textarea
=
fixtureEl
.
querySelector
(
'
textarea
'
)
const
textarea
=
fixtureEl
.
querySelector
(
'
textarea
'
)
// Space key
const
keydownSpace
=
createEvent
(
'
keydown
'
)
const
keyDownSpace
=
createEvent
(
'
keydown
'
)
keydownSpace
.
key
=
'
Space
'
keyDownSpace
.
which
=
32
// Key up
const
keydownArrowUp
=
createEvent
(
'
keydown
'
)
const
keyDownUp
=
createEvent
(
'
keydown
'
)
keydownArrowUp
.
key
=
'
ArrowUp
'
keyDownSpace
.
which
=
38
// Key down
const
keydownArrowDown
=
createEvent
(
'
keydown
'
)
const
keyDown
=
createEvent
(
'
keydown
'
)
keydownArrowDown
.
key
=
'
ArrowDown
'
keyDownSpace
.
which
=
40
// Key escape
const
keydownEscape
=
createEvent
(
'
keydown
'
)
const
keyDownEscape
=
createEvent
(
'
keydown
'
)
keydownEscape
.
key
=
'
Escape
'
keyDownEscape
.
which
=
27
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
// Space
key
//
Key
Space
input
.
focus
()
input
.
focus
()
input
.
dispatchEvent
(
key
D
ownSpace
)
input
.
dispatchEvent
(
key
d
ownSpace
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
textarea
.
focus
()
textarea
.
focus
()
textarea
.
dispatchEvent
(
key
D
ownSpace
)
textarea
.
dispatchEvent
(
key
d
ownSpace
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
// Key
u
p
// Key
ArrowU
p
input
.
focus
()
input
.
focus
()
input
.
dispatchEvent
(
key
D
ownUp
)
input
.
dispatchEvent
(
key
d
own
Arrow
Up
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
textarea
.
focus
()
textarea
.
focus
()
textarea
.
dispatchEvent
(
key
D
ownUp
)
textarea
.
dispatchEvent
(
key
d
own
Arrow
Up
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
// Key
d
own
// Key
ArrowD
own
input
.
focus
()
input
.
focus
()
input
.
dispatchEvent
(
keyDown
)
input
.
dispatchEvent
(
key
downArrow
Down
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
textarea
.
focus
()
textarea
.
focus
()
textarea
.
dispatchEvent
(
keyDown
)
textarea
.
dispatchEvent
(
key
downArrow
Down
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
// Key
e
scape
// Key
E
scape
input
.
focus
()
input
.
focus
()
input
.
dispatchEvent
(
key
D
ownEscape
)
input
.
dispatchEvent
(
key
d
ownEscape
)
expect
(
triggerDropdown
.
classList
.
contains
(
'
show
'
)).
toEqual
(
false
,
'
dropdown menu is not shown
'
)
expect
(
triggerDropdown
.
classList
.
contains
(
'
show
'
)).
toEqual
(
false
,
'
dropdown menu is not shown
'
)
done
()
done
()
...
@@ -1523,9 +1519,9 @@ describe('Dropdown', () => {
...
@@ -1523,9 +1519,9 @@ describe('Dropdown', () => {
// Key escape
// Key escape
button
.
focus
()
button
.
focus
()
// Key escape
// Key escape
const
key
D
ownEscape
=
createEvent
(
'
keydown
'
)
const
key
d
ownEscape
=
createEvent
(
'
keydown
'
)
key
D
ownEscape
.
which
=
27
key
d
ownEscape
.
key
=
'
Escape
'
button
.
dispatchEvent
(
key
D
ownEscape
)
button
.
dispatchEvent
(
key
d
ownEscape
)
setTimeout
(()
=>
{
setTimeout
(()
=>
{
expect
(
dropdown
.
toggle
).
not
.
toHaveBeenCalled
()
expect
(
dropdown
.
toggle
).
not
.
toHaveBeenCalled
()
...
...
This diff is collapsed.
Click to expand it.
js/tests/unit/modal.spec.js
+
4
-
4
View file @
dcd99aa7
...
@@ -450,7 +450,7 @@ describe('Modal', () => {
...
@@ -450,7 +450,7 @@ describe('Modal', () => {
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
const
keydownEscape
=
createEvent
(
'
keydown
'
)
const
keydownEscape
=
createEvent
(
'
keydown
'
)
keydownEscape
.
which
=
27
keydownEscape
.
key
=
'
Escape
'
modalEl
.
dispatchEvent
(
keydownEscape
)
modalEl
.
dispatchEvent
(
keydownEscape
)
})
})
...
@@ -479,7 +479,7 @@ describe('Modal', () => {
...
@@ -479,7 +479,7 @@ describe('Modal', () => {
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
const
keydownTab
=
createEvent
(
'
keydown
'
)
const
keydownTab
=
createEvent
(
'
keydown
'
)
keydownTab
.
which
=
9
keydownTab
.
key
=
'
Tab
'
modalEl
.
dispatchEvent
(
keydownTab
)
modalEl
.
dispatchEvent
(
keydownTab
)
setTimeout
(
expectDone
,
30
)
setTimeout
(
expectDone
,
30
)
...
@@ -584,7 +584,7 @@ describe('Modal', () => {
...
@@ -584,7 +584,7 @@ describe('Modal', () => {
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
const
keydownEscape
=
createEvent
(
'
keydown
'
)
const
keydownEscape
=
createEvent
(
'
keydown
'
)
keydownEscape
.
which
=
27
keydownEscape
.
key
=
'
Escape
'
modalEl
.
dispatchEvent
(
keydownEscape
)
modalEl
.
dispatchEvent
(
keydownEscape
)
shownCallback
()
shownCallback
()
...
@@ -611,7 +611,7 @@ describe('Modal', () => {
...
@@ -611,7 +611,7 @@ describe('Modal', () => {
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
const
keydownEscape
=
createEvent
(
'
keydown
'
)
const
keydownEscape
=
createEvent
(
'
keydown
'
)
keydownEscape
.
which
=
27
keydownEscape
.
key
=
'
Escape
'
modalEl
.
dispatchEvent
(
keydownEscape
)
modalEl
.
dispatchEvent
(
keydownEscape
)
shownCallback
()
shownCallback
()
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Snippets