Skip to content

Commit 84b3ff3

Browse files
Put checks in on init to deal with empty decks, fixes imakewebthings#51
1 parent e3d8776 commit 84b3ff3

File tree

4 files changed

+39
-4
lines changed

4 files changed

+39
-4
lines changed

core/deck.core.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,9 @@ that use the API provided by core.
233233
});
234234
});
235235

236-
updateStates();
236+
if (slides.length) {
237+
updateStates();
238+
}
237239

238240
// Show deck again now that slides are in place
239241
$container.removeClass(options.classes.loading);

extensions/hash/deck.hash.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,10 @@ slide.
6565

6666
$d.bind('deck.init', function() {
6767
var opts = $[deck]('getOptions');
68-
$internals = $();
68+
$internals = $(),
69+
slides = $[deck]('getSlides');
6970

70-
$.each($[deck]('getSlides'), function(i, $el) {
71+
$.each(slides, function(i, $el) {
7172
var hash;
7273

7374
/* Hand out ids to the unfortunate slides born without them */
@@ -96,7 +97,9 @@ slide.
9697
}
9798

9899
/* Set up first id container state class */
99-
$[deck]('getContainer').addClass(opts.classes.onPrefix + $[deck]('getSlide').attr('id'));
100+
if (slides.length) {
101+
$[deck]('getContainer').addClass(opts.classes.onPrefix + $[deck]('getSlide').attr('id'));
102+
};
100103
})
101104
/* Update permalink, address bar, and state class on a slide change */
102105
.bind('deck.change', function(e, from, to) {

test/fixtures/empty.html

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<div class="deck-container">
2+
<a href="#" class="deck-prev-link">Previous</a>
3+
<a href="#" class="deck-next-link">Next</a>
4+
5+
<p class="deck-status">
6+
<span class="deck-status-current"></span>
7+
/
8+
<span class="deck-status-total"></span>
9+
</p>
10+
11+
<form action="." method="get" class="goto-form">
12+
<label for="goto-slide">Go to slide:</label>
13+
<input type="number" name="slidenum" id="goto-slide" value="">
14+
<input type="submit" value="Go">
15+
</form>
16+
17+
<a href="#" class="deck-permalink">#</a>
18+
<a href="#custom-id" id="internal-test">Internal Test Link</a>
19+
</div>

test/spec.core.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,4 +415,15 @@ describe('Deck JS', function() {
415415
expect($.deck('getSlide').find('iframe').data('src')).toBeUndefined();
416416
});
417417
});
418+
419+
describe('empty deck', function() {
420+
beforeEach(function() {
421+
loadFixtures('empty.html');
422+
$.deck('.slide');
423+
});
424+
425+
describe('getSlide()', function() {
426+
it('should not error on init', $.noop);
427+
});
428+
});
418429
});

0 commit comments

Comments
 (0)