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
main
cleanup-floating-forms
cssvar-function
dependabot/npm_and_yarn/stylelint-and-stylelint-config-twbs-bootstrap-15.3.0
extend-snippets
feat/data-target
floating-always-visible
floating-labels-icons
fod-main-banner
form-controls-with-icons
github/fork/719media/patch-13
github/fork/719media/patch-14
github/fork/719media/patch-9
github/fork/ChellyAhmed/fix-typo-reboot.md
github/fork/ChellyAhmed/offcanvas-scroll-back
github/fork/CtrlAltLilith/main
github/fork/Elysiome/offcanvas-optional-window-resizing
github/fork/JanSargsyan/main
github/fork/LunicLynx/support-different-line-height-for-buttons
github/fork/Psixodelik/main
github/fork/Ronid1/ronid1/offcanvas_static_backdrop
github/fork/RyanBerliner/tooltip-accessibility
github/fork/SantiagoPVazquez/Feature-default-border-bottom-to-dropdown-item
github/fork/Sir-Genius/utils
github/fork/Sumit-Singh-8/main
github/fork/Viktor-VERA2020/offcanvas-slide
github/fork/Zivangu9/input-group-for-form-control-plaintext
github/fork/alpadev/alpadev/call-dispose-on-component-reinstantiation
github/fork/astagi/fix/tree-shake-modules
github/fork/compnerd/dark-accordion-icon
github/fork/derSascha/dropdown-dont-close-on-input-click
github/fork/dev-ph1l/main
github/fork/donquixote/issue-33861-utl-mixin
github/fork/florianlacreuse/mixin-make-row-gutter-y
github/fork/gregorw/main
github/fork/iteggmbh/transitionend-dispose-race
github/fork/jdelStrother/patch-1
github/fork/jonnysp/form-floating
github/fork/jonnysp/independent-offcanvas
github/fork/jonnysp/theme-dark-on-card-and-modal-fix
github/fork/josefdlange/floating-label-placeholder-opacity
github/fork/julien-deramond/enhance-change-version.js
github/fork/julien-deramond/main-jd-fix-offset-content
github/fork/julien-deramond/main-jd-issue-with-utitlies
github/fork/julien-deramond/main-xmr-pa11y-ci-jd-add-hideElements
github/fork/kyletsang/fix-tooltip-padding
github/fork/lacutah/CheckboxCenteringDocumentation
github/fork/lekoala/patch-3
github/fork/louismaximepiton/main-kld-lmp-collapse-proposal
github/fork/louismaximepiton/main-lmp-card-inner-border-radius-fix
github/fork/louismaximepiton/main-lmp-carousel-multiple-images
github/fork/louismaximepiton/main-lmp-css-var-init
github/fork/louismaximepiton/main-lmp-disabled-floating-label-fix
github/fork/louismaximepiton/main-lmp-input-range-fix
github/fork/louismaximepiton/main-lmp-shift-color
github/fork/louismaximepiton/main-lmp-table-active-tr-fix
github/fork/maciek-szn/switch
github/fork/michael-roth/feature/19964-multiple-tab-targets
github/fork/mistic100/dom-utils
github/fork/nkdas91/accordion
github/fork/nstungcom/fix-missing-modal-open-class
github/fork/oraliahdz/animation-utilities
github/fork/pine3ree/patch-7
github/fork/pouwerkerk/unindent-scss-docs-shortcode
github/fork/smares/smares-no-scolling-on-modal-close
github/fork/tgm-git/patch-1
gs-forms
gs-toasts-with-animated-progress-bar
gs/add-history-helper
gs/change-version-dir-on-docs
gs/data-must-set-onlu-one-instance
gs/docs/fix-drop-down-error
gs/event-handler-2
gs/make-docs-js-build
gs/make-simple-attribute-toggler
gs/popover-fix-doc
gs/provide-steConfig-method
gs/scrollspy-smoothscroll-option-use-browser-history
gs/streamline-jqueryInterface
gs/support-drop-down-in-navbar
gs/test-js-generic-trigger
gs/try-web-components
gs/tweak-collapse-js-selector
gs/use-event-handler-in-cocmponent
gs/use-rollup-replace-for-version
jo-docs-thanks-page
jo-ssr-friendly
logical-props-spacing-utils
main-fod-disabled-form-check-label
main-fod-nested-accordion
main-fod-simpler-table-structure
main-fod-table-separator
main-fod-utilities-contrast
main-jd-abbr-title
main-jd-add-chips
main-jd-add-doc-for-sass-custom-colors
main-jd-add-enable-host-to-handle-web-components
main-jd-browserstack-fine-tune
main-jd-browserstack-updates
main-jd-docs-consistent-usage-of-css-sections-step-2
main-jd-fix-docs-headers-in-white
main-jd-fix-highlight-docs-border-radius
main-jd-fix-placeholder-color-background-params-for-img-markup
main-jd-glossary-experiment
main-jd-postcss-drop-empty-css-vars
main-jd-proto-doc-astro
main-jd-skip-navigation-component
main-jd-stackblitz-for-examples
main-jd-upgrade-browserlistrc
main-jd-use-host
main-lmp-dark-theme-customization
main-lmp-handle-scroll-target
main-lmp-tab-fix
main-mc-opensearch
main-xmr-bundlewatch-action
main-xmr-eslint-plugin-compat
main-xmr-hugo-docs-vendor
main-xmr-hugo-rm-ver
main-xmr-linkinator-prod
main-xmr-min-mangle
main-xmr-pa11y-ci
more-darkmode-examples
nested-dropdowns
patrickhlauke-issue37428
patrickhlauke-use-of-color-tweaks
pr/34102
pr/37590
previous-next-docs-links
sticky-thead
utilities-functions-mixin
v530-dev
v6-postcss-custom-media
v6-spinner-dots
v6/gs/use-floating-ui-in-place-of-popper
xmr/dev
xmr/docs-png
xmr/docs-svgs
xmr/hugo-reorg-files
xmr/js-2
xmr/markdownlint
xmr/prepare-530-alpha2
xmr/xo
v5.3.0-alpha1
v5.2.3
v5.2.2
v5.2.1
v5.2.0
v5.2.0-beta1
v5.1.3
v5.1.2
v5.1.1
v5.1.0
v5.0.2
v5.0.1
v5.0.0
v5.0.0-beta3
v5.0.0-beta2
v5.0.0-beta1
v5.0.0-alpha3
v5.0.0-alpha2
v5.0.0-alpha1
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'
const
EVENT_KEY
=
`.
${
DATA_KEY
}
`
const
DATA_API_KEY
=
'
.data-api
'
const
ARROW_LEFT_KEY
CODE
=
37
// KeyboardEvent.which value for left arrow key
const
ARROW_RIGHT_KEY
CODE
=
39
// KeyboardEvent.which value for right arrow key
const
ARROW_LEFT_KEY
=
'
ArrowLeft
'
const
ARROW_RIGHT_KEY
=
'
ArrowRight
'
const
TOUCHEVENT_COMPAT_WAIT
=
500
// Time for mouse compat events to fire after touch
const
SWIPE_THRESHOLD
=
40
...
...
@@ -342,12 +342,12 @@ class Carousel {
return
}
switch
(
event
.
which
)
{
case
ARROW_LEFT_KEY
CODE
:
switch
(
event
.
key
)
{
case
ARROW_LEFT_KEY
:
event
.
preventDefault
()
this
.
prev
()
break
case
ARROW_RIGHT_KEY
CODE
:
case
ARROW_RIGHT_KEY
:
event
.
preventDefault
()
this
.
next
()
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'
const
$
=
getjQuery
()
const
namespaceRegex
=
/
[^
.
]
*
(?=\.
.*
)\.
|.*/
const
stripNameRegex
=
/
\.
.*/
const
keyEventRegex
=
/^key/
const
stripUidRegex
=
/::
\d
+$/
const
eventRegistry
=
{}
// Events storage
let
uidEvent
=
1
...
...
@@ -94,11 +93,6 @@ function getEvent(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
}
...
...
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'
const
EVENT_KEY
=
`.
${
DATA_KEY
}
`
const
DATA_API_KEY
=
'
.data-api
'
const
ESCAPE_KEY
CODE
=
27
// KeyboardEvent.which value for Escape (Esc) key
const
SPACE_KEY
CODE
=
32
// KeyboardEvent.which value for space key
const
TAB_KEY
CODE
=
9
// KeyboardEvent.which value for tab key
const
ARROW_UP_KEY
CODE
=
38
// KeyboardEvent.which value for up arrow key
const
ARROW_DOWN_KEY
CODE
=
40
// KeyboardEvent.which value for down arrow key
const
RIGHT_MOUSE_BUTTON
_WHICH
=
3
// MouseEvent.
which
value for the
right button (assuming a right-handed mouse)
const
ESCAPE_KEY
=
'
Escape
'
const
SPACE_KEY
=
'
Space
'
const
TAB_KEY
=
'
Tab
'
const
ARROW_UP_KEY
=
'
ArrowUp
'
const
ARROW_DOWN_KEY
=
'
ArrowDown
'
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_HIDDEN
=
`hidden
${
EVENT_KEY
}
`
...
...
@@ -372,8 +372,8 @@ class Dropdown {
}
static
clearMenus
(
event
)
{
if
(
event
&&
(
event
.
which
===
RIGHT_MOUSE_BUTTON
_WHICH
||
(
event
.
type
===
'
keyup
'
&&
event
.
which
!==
TAB_KEY
CODE
)))
{
if
(
event
&&
(
event
.
button
===
RIGHT_MOUSE_BUTTON
||
(
event
.
type
===
'
keyup
'
&&
event
.
key
!==
TAB_KEY
)))
{
return
}
...
...
@@ -401,7 +401,7 @@ class Dropdown {
if
(
event
&&
((
event
.
type
===
'
click
'
&&
/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
))
{
continue
}
...
...
@@ -443,10 +443,10 @@ class Dropdown {
// - If key is not up or down => not a dropdown command
// - If trigger inside the menu => not a dropdown command
if
(
/input|textarea/i
.
test
(
event
.
target
.
tagName
)
?
event
.
which
===
SPACE_KEY
CODE
||
(
event
.
which
!==
ESCAPE_KEY
CODE
&&
((
event
.
which
!==
ARROW_DOWN_KEY
CODE
&&
event
.
which
!==
ARROW_UP_KEY
CODE
)
||
event
.
key
===
SPACE_KEY
||
(
event
.
key
!==
ESCAPE_KEY
&&
((
event
.
key
!==
ARROW_DOWN_KEY
&&
event
.
key
!==
ARROW_UP_KEY
)
||
SelectorEngine
.
closest
(
event
.
target
,
SELECTOR_MENU
)))
:
!
REGEXP_KEYDOWN
.
test
(
event
.
which
))
{
!
REGEXP_KEYDOWN
.
test
(
event
.
key
))
{
return
}
...
...
@@ -460,14 +460,14 @@ class Dropdown {
const
parent
=
Dropdown
.
getParentFromElement
(
this
)
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
]
button
.
focus
()
Dropdown
.
clearMenus
()
return
}
if
(
!
isActive
||
event
.
which
===
SPACE_KEY
CODE
)
{
if
(
!
isActive
||
event
.
key
===
SPACE_KEY
)
{
Dropdown
.
clearMenus
()
return
}
...
...
@@ -481,11 +481,11 @@ class Dropdown {
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
--
}
if
(
event
.
which
===
ARROW_DOWN_KEY
CODE
&&
index
<
items
.
length
-
1
)
{
// Down
if
(
event
.
key
===
ARROW_DOWN_KEY
&&
index
<
items
.
length
-
1
)
{
// Down
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'
const
DATA_KEY
=
'
bs.modal
'
const
EVENT_KEY
=
`.
${
DATA_KEY
}
`
const
DATA_API_KEY
=
'
.data-api
'
const
ESCAPE_KEY
CODE
=
27
// KeyboardEvent.which value for Escape (Esc) key
const
ESCAPE_KEY
=
'
Escape
'
const
Default
=
{
backdrop
:
true
,
...
...
@@ -299,10 +299,10 @@ class Modal {
_setEscapeEvent
()
{
if
(
this
.
_isShown
)
{
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
()
this
.
hide
()
}
else
if
(
!
this
.
_config
.
keyboard
&&
event
.
which
===
ESCAPE_KEY
CODE
)
{
}
else
if
(
!
this
.
_config
.
keyboard
&&
event
.
key
===
ESCAPE_KEY
)
{
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', () => {
done
()
})
const
key
D
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
39
const
key
d
own
=
createEvent
(
'
keydown
'
)
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
=>
{
...
...
@@ -100,10 +100,10 @@ describe('Carousel', () => {
done
()
})
const
key
D
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
37
const
key
d
own
=
createEvent
(
'
keydown
'
)
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
=>
{
...
...
@@ -130,10 +130,10 @@ describe('Carousel', () => {
done
()
})
const
key
D
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
40
const
key
d
own
=
createEvent
(
'
keydown
'
)
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
'
,
()
=>
{
...
...
@@ -157,34 +157,34 @@ describe('Carousel', () => {
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
spyNext
=
spyOn
(
carousel
,
'
next
'
)
const
key
D
own
=
createEvent
(
'
keydown
'
,
{
bubbles
:
true
,
cancelable
:
true
})
key
D
own
.
which
=
39
Object
.
defineProperty
(
key
D
own
,
'
target
'
,
{
const
key
d
own
=
createEvent
(
'
keydown
'
,
{
bubbles
:
true
,
cancelable
:
true
})
key
d
own
.
key
=
'
ArrowRight
'
Object
.
defineProperty
(
key
d
own
,
'
target
'
,
{
value
:
input
,
writable
:
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
(
spyNext
).
not
.
toHaveBeenCalled
()
spyKey
D
own
.
calls
.
reset
()
spyKey
d
own
.
calls
.
reset
()
spyPrev
.
calls
.
reset
()
spyNext
.
calls
.
reset
()
Object
.
defineProperty
(
key
D
own
,
'
target
'
,
{
Object
.
defineProperty
(
key
d
own
,
'
target
'
,
{
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
(
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', () => {
dropdownEl
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
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
document
.
dispatchEvent
(
key
U
p
)
key
u
p
.
key
=
'
Tab
'
document
.
dispatchEvent
(
key
u
p
)
})
dropdownEl
.
addEventListener
(
'
hidden.bs.dropdown
'
,
()
=>
{
...
...
@@ -1165,10 +1165,10 @@ describe('Dropdown', () => {
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
'
)
const
key
U
p
=
createEvent
(
'
keyup
'
)
key
U
p
.
which
=
9
//
Tab
const
key
u
p
=
createEvent
(
'
keyup
'
)
key
u
p
.
key
=
'
Tab
'
document
.
dispatchEvent
(
key
U
p
)
document
.
dispatchEvent
(
key
u
p
)
})
dropdownTestMenu
.
addEventListener
(
'
hidden.bs.dropdown
'
,
()
=>
{
...
...
@@ -1180,10 +1180,10 @@ describe('Dropdown', () => {
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
'
)
const
key
U
p
=
createEvent
(
'
keyup
'
)
key
U
p
.
which
=
9
//
Tab
const
key
u
p
=
createEvent
(
'
keyup
'
)
key
u
p
.
key
=
'
Tab
'
document
.
dispatchEvent
(
key
U
p
)
document
.
dispatchEvent
(
key
u
p
)
})
btnGroup
.
addEventListener
(
'
hidden.bs.dropdown
'
,
()
=>
{
...
...
@@ -1217,10 +1217,10 @@ describe('Dropdown', () => {
})
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
const
key
D
own
=
createEvent
(
'
keydown
'
)
const
key
d
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
27
triggerDropdown
.
dispatchEvent
(
key
D
own
)
key
d
own
.
key
=
'
Escape
'
triggerDropdown
.
dispatchEvent
(
key
d
own
)
})
triggerDropdown
.
click
()
...
...
@@ -1245,15 +1245,15 @@ describe('Dropdown', () => {
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
input
.
focus
()
const
key
D
own
=
createEvent
(
'
keydown
'
)
const
key
d
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
38
input
.
dispatchEvent
(
key
D
own
)
key
d
own
.
key
=
'
ArrowUp
'
input
.
dispatchEvent
(
key
d
own
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
textarea
.
focus
()
textarea
.
dispatchEvent
(
key
D
own
)
textarea
.
dispatchEvent
(
key
d
own
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
done
()
...
...
@@ -1278,11 +1278,11 @@ describe('Dropdown', () => {
const
dropdown
=
fixtureEl
.
querySelector
(
'
.dropdown
'
)
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
const
key
D
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
40
const
key
d
own
=
createEvent
(
'
keydown
'
)
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
.
hasAttribute
(
'
disabled
'
)).
toEqual
(
false
,
'
:disabled not focused
'
)
...
...
@@ -1314,10 +1314,10 @@ describe('Dropdown', () => {
const
dropdown
=
fixtureEl
.
querySelector
(
'
.dropdown
'
)
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
const
key
D
own
=
createEvent
(
'
keydown
'
)
key
D
own
.
which
=
40
const
key
d
own
=
createEvent
(
'
keydown
'
)
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
.
style
.
display
===
'
none
'
).
toEqual
(
false
,
'
"display: none" not focused
'
)
...
...
@@ -1346,19 +1346,19 @@ describe('Dropdown', () => {
const
item2
=
fixtureEl
.
querySelector
(
'
#item2
'
)
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
const
keyDown
40
=
createEvent
(
'
keydown
'
)
key
Down40
.
which
=
40
const
key
downArrow
Down
=
createEvent
(
'
keydown
'
)
key
downArrowDown
.
key
=
'
ArrowDown
'
triggerDropdown
.
dispatchEvent
(
keyDown
40
)
triggerDropdown
.
dispatchEvent
(
key
downArrow
Down
)
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
'
)
const
key
D
own
38
=
createEvent
(
'
keydown
'
)
key
D
own
38
.
which
=
38
const
key
d
own
ArrowUp
=
createEvent
(
'
keydown
'
)
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
'
)
done
()
...
...
@@ -1438,59 +1438,55 @@ describe('Dropdown', () => {
const
input
=
fixtureEl
.
querySelector
(
'
input
'
)
const
textarea
=
fixtureEl
.
querySelector
(
'
textarea
'
)
// Space key
const
keyDownSpace
=
createEvent
(
'
keydown
'
)
keyDownSpace
.
which
=
32
const
keydownSpace
=
createEvent
(
'
keydown
'
)
keydownSpace
.
key
=
'
Space
'
// Key up
const
keyDownUp
=
createEvent
(
'
keydown
'
)
keyDownSpace
.
which
=
38
const
keydownArrowUp
=
createEvent
(
'
keydown
'
)
keydownArrowUp
.
key
=
'
ArrowUp
'
// Key down
const
keyDown
=
createEvent
(
'
keydown
'
)
keyDownSpace
.
which
=
40
const
keydownArrowDown
=
createEvent
(
'
keydown
'
)
keydownArrowDown
.
key
=
'
ArrowDown
'
// Key escape
const
keyDownEscape
=
createEvent
(
'
keydown
'
)
keyDownEscape
.
which
=
27
const
keydownEscape
=
createEvent
(
'
keydown
'
)
keydownEscape
.
key
=
'
Escape
'
dropdown
.
addEventListener
(
'
shown.bs.dropdown
'
,
()
=>
{
// Space
key
//
Key
Space
input
.
focus
()
input
.
dispatchEvent
(
key
D
ownSpace
)
input
.
dispatchEvent
(
key
d
ownSpace
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
textarea
.
focus
()
textarea
.
dispatchEvent
(
key
D
ownSpace
)
textarea
.
dispatchEvent
(
key
d
ownSpace
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
// Key
u
p
// Key
ArrowU
p
input
.
focus
()
input
.
dispatchEvent
(
key
D
ownUp
)
input
.
dispatchEvent
(
key
d
own
Arrow
Up
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
textarea
.
focus
()
textarea
.
dispatchEvent
(
key
D
ownUp
)
textarea
.
dispatchEvent
(
key
d
own
Arrow
Up
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
// Key
d
own
// Key
ArrowD
own
input
.
focus
()
input
.
dispatchEvent
(
keyDown
)
input
.
dispatchEvent
(
key
downArrow
Down
)
expect
(
document
.
activeElement
).
toEqual
(
input
,
'
input still focused
'
)
textarea
.
focus
()
textarea
.
dispatchEvent
(
keyDown
)
textarea
.
dispatchEvent
(
key
downArrow
Down
)
expect
(
document
.
activeElement
).
toEqual
(
textarea
,
'
textarea still focused
'
)
// Key
e
scape
// Key
E
scape
input
.
focus
()
input
.
dispatchEvent
(
key
D
ownEscape
)
input
.
dispatchEvent
(
key
d
ownEscape
)
expect
(
triggerDropdown
.
classList
.
contains
(
'
show
'
)).
toEqual
(
false
,
'
dropdown menu is not shown
'
)
done
()
...
...
@@ -1523,9 +1519,9 @@ describe('Dropdown', () => {
// Key escape
button
.
focus
()
// Key escape
const
key
D
ownEscape
=
createEvent
(
'
keydown
'
)
key
D
ownEscape
.
which
=
27
button
.
dispatchEvent
(
key
D
ownEscape
)
const
key
d
ownEscape
=
createEvent
(
'
keydown
'
)
key
d
ownEscape
.
key
=
'
Escape
'
button
.
dispatchEvent
(
key
d
ownEscape
)
setTimeout
(()
=>
{
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', () => {
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
const
keydownEscape
=
createEvent
(
'
keydown
'
)
keydownEscape
.
which
=
27
keydownEscape
.
key
=
'
Escape
'
modalEl
.
dispatchEvent
(
keydownEscape
)
})
...
...
@@ -479,7 +479,7 @@ describe('Modal', () => {
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
const
keydownTab
=
createEvent
(
'
keydown
'
)
keydownTab
.
which
=
9
keydownTab
.
key
=
'
Tab
'
modalEl
.
dispatchEvent
(
keydownTab
)
setTimeout
(
expectDone
,
30
)
...
...
@@ -584,7 +584,7 @@ describe('Modal', () => {
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
const
keydownEscape
=
createEvent
(
'
keydown
'
)
keydownEscape
.
which
=
27
keydownEscape
.
key
=
'
Escape
'
modalEl
.
dispatchEvent
(
keydownEscape
)
shownCallback
()
...
...
@@ -611,7 +611,7 @@ describe('Modal', () => {
modalEl
.
addEventListener
(
'
shown.bs.modal
'
,
()
=>
{
const
keydownEscape
=
createEvent
(
'
keydown
'
)
keydownEscape
.
which
=
27
keydownEscape
.
key
=
'
Escape
'
modalEl
.
dispatchEvent
(
keydownEscape
)
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