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
2c562d23
Commit
2c562d23
authored
10 years ago
by
Jacob
Browse files
Options
Download
Plain Diff
Merge pull request #14590 from twbs/carousel-keyboard-option
Add `keyboard` option to carousel
parents
f75fc324
038a63b0
4 merge requests
!28721
Hot test
,
!16605
Test pull please ignore
,
!22103
test
,
!25326
Adjust examples
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
docs/_includes/js/carousel.html
+6
-0
docs/_includes/js/carousel.html
js/carousel.js
+5
-2
js/carousel.js
js/tests/unit/carousel.js
+79
-0
js/tests/unit/carousel.js
with
90 additions
and
2 deletions
+90
-2
docs/_includes/js/carousel.html
+
6
-
0
View file @
2c562d23
...
...
@@ -178,6 +178,12 @@ $('.carousel').carousel()
<td>
true
</td>
<td>
Whether the carousel should cycle continuously or have hard stops.
</td>
</tr>
<tr>
<td>
keyboard
</td>
<td>
boolean
</td>
<td>
true
</td>
<td>
Whether the carousel should react to keyboard events.
</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
...
...
This diff is collapsed.
Click to expand it.
js/carousel.js
+
5
-
2
View file @
2c562d23
...
...
@@ -14,7 +14,7 @@
// =========================
var
Carousel
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
)
.
on
(
'
keydown.bs.carousel
'
,
$
.
proxy
(
this
.
keydown
,
this
))
this
.
$element
=
$
(
element
)
this
.
$indicators
=
this
.
$element
.
find
(
'
.carousel-indicators
'
)
this
.
options
=
options
this
.
paused
=
...
...
@@ -23,6 +23,8 @@
this
.
$active
=
this
.
$items
=
null
this
.
options
.
keyboard
&&
this
.
$element
.
on
(
'
keydown.bs.carousel
'
,
$
.
proxy
(
this
.
keydown
,
this
))
this
.
options
.
pause
==
'
hover
'
&&
!
(
'
ontouchstart
'
in
document
.
documentElement
)
&&
this
.
$element
.
on
(
'
mouseenter.bs.carousel
'
,
$
.
proxy
(
this
.
pause
,
this
))
.
on
(
'
mouseleave.bs.carousel
'
,
$
.
proxy
(
this
.
cycle
,
this
))
...
...
@@ -35,7 +37,8 @@
Carousel
.
DEFAULTS
=
{
interval
:
5000
,
pause
:
'
hover
'
,
wrap
:
true
wrap
:
true
,
keyboard
:
true
}
Carousel
.
prototype
.
keydown
=
function
(
e
)
{
...
...
This diff is collapsed.
Click to expand it.
js/tests/unit/carousel.js
+
79
-
0
View file @
2c562d23
...
...
@@ -399,6 +399,85 @@ $(function () {
strictEqual
(
$template
.
find
(
'
.item
'
)[
1
],
$template
.
find
(
'
.active
'
)[
0
],
'
second item active
'
)
})
test
(
'
should go to previous item if left arrow key is pressed
'
,
function
()
{
var
templateHTML
=
'
<div id="myCarousel" class="carousel" data-interval="false">
'
+
'
<div class="carousel-inner">
'
+
'
<div id="first" class="item">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
<div id="second" class="item active">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
<div id="third" class="item">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
</div>
'
+
'
</div>
'
var
$template
=
$
(
templateHTML
)
$template
.
bootstrapCarousel
()
strictEqual
(
$template
.
find
(
'
.item
'
)[
1
],
$template
.
find
(
'
.active
'
)[
0
],
'
second item active
'
)
$template
.
trigger
(
$
.
Event
(
'
keydown
'
,
{
which
:
37
}))
strictEqual
(
$template
.
find
(
'
.item
'
)[
0
],
$template
.
find
(
'
.active
'
)[
0
],
'
first item active
'
)
})
test
(
'
should go to next item if right arrow key is pressed
'
,
function
()
{
var
templateHTML
=
'
<div id="myCarousel" class="carousel" data-interval="false">
'
+
'
<div class="carousel-inner">
'
+
'
<div id="first" class="item active">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
<div id="second" class="item">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
<div id="third" class="item">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
</div>
'
+
'
</div>
'
var
$template
=
$
(
templateHTML
)
$template
.
bootstrapCarousel
()
strictEqual
(
$template
.
find
(
'
.item
'
)[
0
],
$template
.
find
(
'
.active
'
)[
0
],
'
first item active
'
)
$template
.
trigger
(
$
.
Event
(
'
keydown
'
,
{
which
:
39
}))
strictEqual
(
$template
.
find
(
'
.item
'
)[
1
],
$template
.
find
(
'
.active
'
)[
0
],
'
second item active
'
)
})
test
(
'
should support disabling the keyboard navigation
'
,
function
()
{
var
templateHTML
=
'
<div id="myCarousel" class="carousel" data-interval="false" data-keyboard="false">
'
+
'
<div class="carousel-inner">
'
+
'
<div id="first" class="item active">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
<div id="second" class="item">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
<div id="third" class="item">
'
+
'
<img alt="">
'
+
'
</div>
'
+
'
</div>
'
+
'
</div>
'
var
$template
=
$
(
templateHTML
)
$template
.
bootstrapCarousel
()
strictEqual
(
$template
.
find
(
'
.item
'
)[
0
],
$template
.
find
(
'
.active
'
)[
0
],
'
first item active
'
)
$template
.
trigger
(
$
.
Event
(
'
keydown
'
,
{
which
:
39
}))
strictEqual
(
$template
.
find
(
'
.item
'
)[
0
],
$template
.
find
(
'
.active
'
)[
0
],
'
first item still active after right arrow press
'
)
$template
.
trigger
(
$
.
Event
(
'
keydown
'
,
{
which
:
37
}))
strictEqual
(
$template
.
find
(
'
.item
'
)[
0
],
$template
.
find
(
'
.active
'
)[
0
],
'
first item still active after left arrow press
'
)
})
test
(
'
should only add mouseenter and mouseleave listeners when not on mobile
'
,
function
()
{
var
isMobile
=
'
ontouchstart
'
in
document
.
documentElement
var
templateHTML
=
'
<div id="myCarousel" class="carousel" data-interval="false" data-pause="hover">
'
...
...
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