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
8df9298b
Commit
8df9298b
authored
10 years ago
by
Chris Rebert
Browse files
Options
Download
Plain Diff
Merge pull request #15152 from twbs/fix-15144
honor wrap option in Carousel.getItemForDirection [skip validator]
parents
d782eed4
b7398bc9
4 merge requests
!28721
Hot test
,
!16605
Test pull please ignore
,
!22103
test
,
!25326
Adjust examples
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
js/carousel.js
+4
-7
js/carousel.js
js/tests/unit/carousel.js
+153
-0
js/tests/unit/carousel.js
with
157 additions
and
7 deletions
+157
-7
js/carousel.js
+
4
-
7
View file @
8df9298b
...
@@ -70,8 +70,11 @@
...
@@ -70,8 +70,11 @@
}
}
Carousel
.
prototype
.
getItemForDirection
=
function
(
direction
,
active
)
{
Carousel
.
prototype
.
getItemForDirection
=
function
(
direction
,
active
)
{
var
delta
=
direction
==
'
prev
'
?
-
1
:
1
var
activeIndex
=
this
.
getItemIndex
(
active
)
var
activeIndex
=
this
.
getItemIndex
(
active
)
var
willWrap
=
(
direction
==
'
prev
'
&&
activeIndex
===
0
)
||
(
direction
==
'
next
'
&&
activeIndex
==
(
this
.
$items
.
length
-
1
))
if
(
willWrap
&&
!
this
.
options
.
wrap
)
return
active
var
delta
=
direction
==
'
prev
'
?
-
1
:
1
var
itemIndex
=
(
activeIndex
+
delta
)
%
this
.
$items
.
length
var
itemIndex
=
(
activeIndex
+
delta
)
%
this
.
$items
.
length
return
this
.
$items
.
eq
(
itemIndex
)
return
this
.
$items
.
eq
(
itemIndex
)
}
}
...
@@ -116,14 +119,8 @@
...
@@ -116,14 +119,8 @@
var
$next
=
next
||
this
.
getItemForDirection
(
type
,
$active
)
var
$next
=
next
||
this
.
getItemForDirection
(
type
,
$active
)
var
isCycling
=
this
.
interval
var
isCycling
=
this
.
interval
var
direction
=
type
==
'
next
'
?
'
left
'
:
'
right
'
var
direction
=
type
==
'
next
'
?
'
left
'
:
'
right
'
var
fallback
=
type
==
'
next
'
?
'
first
'
:
'
last
'
var
that
=
this
var
that
=
this
if
(
!
$next
.
length
)
{
if
(
!
this
.
options
.
wrap
)
return
$next
=
this
.
$element
.
find
(
'
.item
'
)[
fallback
]()
}
if
(
$next
.
hasClass
(
'
active
'
))
return
(
this
.
sliding
=
false
)
if
(
$next
.
hasClass
(
'
active
'
))
return
(
this
.
sliding
=
false
)
var
relatedTarget
=
$next
[
0
]
var
relatedTarget
=
$next
[
0
]
...
...
This diff is collapsed.
Click to expand it.
js/tests/unit/carousel.js
+
153
-
0
View file @
8df9298b
...
@@ -541,4 +541,157 @@ $(function () {
...
@@ -541,4 +541,157 @@ $(function () {
strictEqual
(
type
in
$
.
_data
(
$template
[
0
],
'
events
'
),
!
isMobile
,
'
does
'
+
(
isMobile
?
'
not
'
:
''
)
+
'
listen for
'
+
type
+
'
events
'
)
strictEqual
(
type
in
$
.
_data
(
$template
[
0
],
'
events
'
),
!
isMobile
,
'
does
'
+
(
isMobile
?
'
not
'
:
''
)
+
'
listen for
'
+
type
+
'
events
'
)
})
})
})
})
test
(
'
should wrap around from end to start when wrap option is true
'
,
function
()
{
var
carouselHTML
=
'
<div id="carousel-example-generic" class="carousel slide" data-wrap="true">
'
+
'
<ol class="carousel-indicators">
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"/>
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="1"/>
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="2"/>
'
+
'
</ol>
'
+
'
<div class="carousel-inner">
'
+
'
<div class="item active" id="one">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
<div class="item" id="two">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
<div class="item" id="three">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
</div>
'
+
'
<a class="left carousel-control" href="#carousel-example-generic" data-slide="prev"/>
'
+
'
<a class="right carousel-control" href="#carousel-example-generic" data-slide="next"/>
'
+
'
</div>
'
var
$carousel
=
$
(
carouselHTML
)
var
getActiveId
=
function
()
{
return
$carousel
.
find
(
'
.item.active
'
).
attr
(
'
id
'
)
}
stop
()
$carousel
.
one
(
'
slid.bs.carousel
'
,
function
()
{
strictEqual
(
getActiveId
(),
'
two
'
,
'
carousel slid from 1st to 2nd slide
'
)
$carousel
.
one
(
'
slid.bs.carousel
'
,
function
()
{
strictEqual
(
getActiveId
(),
'
three
'
,
'
carousel slid from 2nd to 3rd slide
'
)
$carousel
.
one
(
'
slid.bs.carousel
'
,
function
()
{
strictEqual
(
getActiveId
(),
'
one
'
,
'
carousel wrapped around and slid from 3rd to 1st slide
'
)
start
()
})
.
bootstrapCarousel
(
'
next
'
)
})
.
bootstrapCarousel
(
'
next
'
)
})
.
bootstrapCarousel
(
'
next
'
)
})
test
(
'
should wrap around from start to end when wrap option is true
'
,
function
()
{
var
carouselHTML
=
'
<div id="carousel-example-generic" class="carousel slide" data-wrap="true">
'
+
'
<ol class="carousel-indicators">
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"/>
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="1"/>
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="2"/>
'
+
'
</ol>
'
+
'
<div class="carousel-inner">
'
+
'
<div class="item active" id="one">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
<div class="item" id="two">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
<div class="item" id="three">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
</div>
'
+
'
<a class="left carousel-control" href="#carousel-example-generic" data-slide="prev"/>
'
+
'
<a class="right carousel-control" href="#carousel-example-generic" data-slide="next"/>
'
+
'
</div>
'
var
$carousel
=
$
(
carouselHTML
)
stop
()
$carousel
.
on
(
'
slid.bs.carousel
'
,
function
()
{
strictEqual
(
$carousel
.
find
(
'
.item.active
'
).
attr
(
'
id
'
),
'
three
'
,
'
carousel wrapped around and slid from 1st to 3rd slide
'
)
start
()
})
.
bootstrapCarousel
(
'
prev
'
)
})
test
(
'
should stay at the end when the next method is called and wrap is false
'
,
function
()
{
var
carouselHTML
=
'
<div id="carousel-example-generic" class="carousel slide" data-wrap="false">
'
+
'
<ol class="carousel-indicators">
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"/>
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="1"/>
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="2"/>
'
+
'
</ol>
'
+
'
<div class="carousel-inner">
'
+
'
<div class="item active" id="one">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
<div class="item" id="two">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
<div class="item" id="three">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
</div>
'
+
'
<a class="left carousel-control" href="#carousel-example-generic" data-slide="prev"/>
'
+
'
<a class="right carousel-control" href="#carousel-example-generic" data-slide="next"/>
'
+
'
</div>
'
var
$carousel
=
$
(
carouselHTML
)
var
getActiveId
=
function
()
{
return
$carousel
.
find
(
'
.item.active
'
).
attr
(
'
id
'
)
}
stop
()
$carousel
.
one
(
'
slid.bs.carousel
'
,
function
()
{
strictEqual
(
getActiveId
(),
'
two
'
,
'
carousel slid from 1st to 2nd slide
'
)
$carousel
.
one
(
'
slid.bs.carousel
'
,
function
()
{
strictEqual
(
getActiveId
(),
'
three
'
,
'
carousel slid from 2nd to 3rd slide
'
)
$carousel
.
one
(
'
slid.bs.carousel
'
,
function
()
{
ok
(
false
,
'
carousel slid when it should not have slid
'
)
})
.
bootstrapCarousel
(
'
next
'
)
strictEqual
(
getActiveId
(),
'
three
'
,
'
carousel did not wrap around and stayed on 3rd slide
'
)
start
()
})
.
bootstrapCarousel
(
'
next
'
)
})
.
bootstrapCarousel
(
'
next
'
)
})
test
(
'
should stay at the start when the prev method is called and wrap is false
'
,
function
()
{
var
carouselHTML
=
'
<div id="carousel-example-generic" class="carousel slide" data-wrap="false">
'
+
'
<ol class="carousel-indicators">
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"/>
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="1"/>
'
+
'
<li data-target="#carousel-example-generic" data-slide-to="2"/>
'
+
'
</ol>
'
+
'
<div class="carousel-inner">
'
+
'
<div class="item active" id="one">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
<div class="item" id="two">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
<div class="item" id="three">
'
+
'
<div class="carousel-caption"/>
'
+
'
</div>
'
+
'
</div>
'
+
'
<a class="left carousel-control" href="#carousel-example-generic" data-slide="prev"/>
'
+
'
<a class="right carousel-control" href="#carousel-example-generic" data-slide="next"/>
'
+
'
</div>
'
var
$carousel
=
$
(
carouselHTML
)
$carousel
.
on
(
'
slid.bs.carousel
'
,
function
()
{
ok
(
false
,
'
carousel slid when it should not have slid
'
)
})
.
bootstrapCarousel
(
'
prev
'
)
strictEqual
(
$carousel
.
find
(
'
.item.active
'
).
attr
(
'
id
'
),
'
one
'
,
'
carousel did not wrap around and stayed on 1st slide
'
)
})
})
})
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