annotate deck.js/extensions/menu/deck.menu.js @ 0:dd1c78c6398f

add having slides
author taiki <taiki@cr.ie.u-ryukyu.ac.jp>
date Mon, 25 Mar 2013 05:14:03 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 /*!
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 Deck JS - deck.menu
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 Copyright (c) 2011 Caleb Troughton
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 Dual licensed under the MIT license and GPL license.
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 https://github.com/imakewebthings/deck.js/blob/master/MIT-license.txt
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 https://github.com/imakewebthings/deck.js/blob/master/GPL-license.txt
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 */
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 /*
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 This module adds the methods and key binding to show and hide a menu of all
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 slides in the deck. The deck menu state is indicated by the presence of a class
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 on the deck container.
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 */
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 (function($, deck, undefined) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 var $d = $(document),
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 rootSlides; // Array of top level slides
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 /*
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 Extends defaults/options.
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 options.classes.menu
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 This class is added to the deck container when showing the slide menu.
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 options.keys.menu
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 The numeric keycode used to toggle between showing and hiding the slide
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 menu.
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 options.touch.doubletapWindow
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 Two consecutive touch events within this number of milliseconds will
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 be considered a double tap, and will toggle the menu on touch devices.
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 */
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 $.extend(true, $[deck].defaults, {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 classes: {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 menu: 'deck-menu'
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 },
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 keys: {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 menu: 77 // m
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 },
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 touch: {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 doubletapWindow: 400
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 }
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 /*
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 jQuery.deck('showMenu')
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 Shows the slide menu by adding the class specified by the menu class option
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 to the deck container.
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 */
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 $[deck]('extend', 'showMenu', function() {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 var $c = $[deck]('getContainer'),
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 opts = $[deck]('getOptions');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 if ($c.hasClass(opts.classes.menu)) return;
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 // Hide through loading class to short-circuit transitions (perf)
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 $c.addClass([opts.classes.loading, opts.classes.menu].join(' '));
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 /* Forced to do this in JS until CSS learns second-grade math. Save old
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 style value for restoration when menu is hidden. */
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 if (Modernizr.csstransforms) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 $.each(rootSlides, function(i, $slide) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 $slide.data('oldStyle', $slide.attr('style'));
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 $slide.css({
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 'position': 'absolute',
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 'left': ((i % 4) * 25) + '%',
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 'top': (Math.floor(i / 4) * 25) + '%'
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 }
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 // Need to ensure the loading class renders first, then remove
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 window.setTimeout(function() {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 $c.removeClass(opts.classes.loading)
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 .scrollTop($[deck]('getSlide').offset().top);
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 }, 0);
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 /*
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 jQuery.deck('hideMenu')
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 Hides the slide menu by removing the class specified by the menu class
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 option from the deck container.
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 */
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 $[deck]('extend', 'hideMenu', function() {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 var $c = $[deck]('getContainer'),
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 opts = $[deck]('getOptions');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 if (!$c.hasClass(opts.classes.menu)) return;
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 $c.removeClass(opts.classes.menu);
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 $c.addClass(opts.classes.loading);
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 /* Restore old style value */
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 if (Modernizr.csstransforms) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 $.each(rootSlides, function(i, $slide) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 var oldStyle = $slide.data('oldStyle');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 $slide.attr('style', oldStyle ? oldStyle : '');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 }
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 window.setTimeout(function() {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 $c.removeClass(opts.classes.loading).scrollTop(0);
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 }, 0);
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 /*
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 jQuery.deck('toggleMenu')
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 Toggles between showing and hiding the slide menu.
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 */
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 $[deck]('extend', 'toggleMenu', function() {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 $[deck]('getContainer').hasClass($[deck]('getOptions').classes.menu) ?
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 $[deck]('hideMenu') : $[deck]('showMenu');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 $d.bind('deck.init', function() {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 var opts = $[deck]('getOptions'),
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 touchEndTime = 0,
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 currentSlide,
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 slideTest = $.map([
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 opts.classes.before,
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 opts.classes.previous,
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 opts.classes.current,
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 opts.classes.next,
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 opts.classes.after
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 ], function(el, i) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 return '.' + el;
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 }).join(', ');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
133
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 // Build top level slides array
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 rootSlides = [];
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 $.each($[deck]('getSlides'), function(i, $el) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 if (!$el.parentsUntil(opts.selectors.container, slideTest).length) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 rootSlides.push($el);
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 }
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
141
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 // Bind key events
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 $d.unbind('keydown.deckmenu').bind('keydown.deckmenu', function(e) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 if (e.which === opts.keys.menu || $.inArray(e.which, opts.keys.menu) > -1) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 $[deck]('toggleMenu');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 e.preventDefault();
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 }
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
149
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 // Double tap to toggle slide menu for touch devices
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 $[deck]('getContainer').unbind('touchstart.deckmenu').bind('touchstart.deckmenu', function(e) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 currentSlide = $[deck]('getSlide');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 })
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 .unbind('touchend.deckmenu').bind('touchend.deckmenu', function(e) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 var now = Date.now();
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 // Ignore this touch event if it caused a nav change (swipe)
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 if (currentSlide !== $[deck]('getSlide')) return;
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 if (now - touchEndTime < opts.touch.doubletapWindow) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 $[deck]('toggleMenu');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 e.preventDefault();
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 }
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 touchEndTime = now;
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 // Selecting slides from the menu
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 $.each($[deck]('getSlides'), function(i, $s) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 $s.unbind('click.deckmenu').bind('click.deckmenu', function(e) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 if (!$[deck]('getContainer').hasClass(opts.classes.menu)) return;
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
171
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 $[deck]('go', i);
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 $[deck]('hideMenu');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 e.stopPropagation();
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 e.preventDefault();
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 })
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 .bind('deck.change', function(e, from, to) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 var container = $[deck]('getContainer');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
181
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 if (container.hasClass($[deck]('getOptions').classes.menu)) {
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 container.scrollTop($[deck]('getSlide', to).offset().top);
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 }
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 });
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 })(jQuery, 'deck');
dd1c78c6398f add having slides
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
187