keydown 0.7.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. data/.gitignore +2 -0
  2. data/.travis.yml +3 -0
  3. data/LICENSE +1 -1
  4. data/README.md +16 -15
  5. data/VERSION +1 -1
  6. data/keydown.gemspec +9 -6
  7. data/lib/keydown.rb +9 -22
  8. data/lib/keydown/html_helpers.rb +12 -0
  9. data/lib/keydown/{lib/slide.rb → slide.rb} +16 -19
  10. data/lib/keydown/{lib/slidedeck.rb → slidedeck.rb} +20 -5
  11. data/lib/keydown/tasks.rb +5 -0
  12. data/lib/keydown/tasks/base.rb +15 -0
  13. data/lib/keydown/tasks/generate.rb +5 -1
  14. data/lib/keydown/tasks/slides.rb +1 -1
  15. data/lib/version.rb +1 -1
  16. data/spec/lib/html_helpers_spec.rb +26 -0
  17. data/spec/lib/slide_spec.rb +29 -17
  18. data/spec/lib/slidedeck_spec.rb +41 -13
  19. data/spec/spec_helper.rb +2 -6
  20. data/spec/tasks/generate_spec.rb +41 -20
  21. data/spec/tasks/slides_spec.rb +83 -44
  22. data/templates/deck.js/code.html.haml +1 -0
  23. data/templates/deck.js/index.html.haml +54 -0
  24. data/templates/deck.js/slide.html.haml +6 -0
  25. data/templates/generate/css/%presentation_name%.css +12 -1
  26. data/templates/generate/deck.js/core/deck.core.css +394 -0
  27. data/templates/generate/deck.js/core/deck.core.js +461 -0
  28. data/templates/generate/deck.js/core/deck.core.scss +432 -0
  29. data/templates/generate/deck.js/extensions/codemirror/CONTRIBUTORS.txt +2 -0
  30. data/templates/generate/deck.js/extensions/codemirror/MIT-LICENSE.txt +21 -0
  31. data/templates/generate/deck.js/extensions/codemirror/README.md +120 -0
  32. data/templates/generate/deck.js/extensions/codemirror/VERSION.txt +1 -0
  33. data/templates/generate/deck.js/extensions/codemirror/codemirror.js +21 -0
  34. data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.css +89 -0
  35. data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.js +213 -0
  36. data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.scss +107 -0
  37. data/templates/generate/deck.js/extensions/codemirror/mode/clike/clike.js +247 -0
  38. data/templates/generate/deck.js/extensions/codemirror/mode/clike/index.html +102 -0
  39. data/templates/generate/deck.js/extensions/codemirror/mode/clojure/clojure.js +207 -0
  40. data/templates/generate/deck.js/extensions/codemirror/mode/clojure/index.html +85 -0
  41. data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/LICENSE +22 -0
  42. data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/coffeescript.js +325 -0
  43. data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/index.html +722 -0
  44. data/templates/generate/deck.js/extensions/codemirror/mode/css/css.js +124 -0
  45. data/templates/generate/deck.js/extensions/codemirror/mode/css/index.html +56 -0
  46. data/templates/generate/deck.js/extensions/codemirror/mode/diff/diff.css +3 -0
  47. data/templates/generate/deck.js/extensions/codemirror/mode/diff/diff.js +13 -0
  48. data/templates/generate/deck.js/extensions/codemirror/mode/diff/index.html +99 -0
  49. data/templates/generate/deck.js/extensions/codemirror/mode/haskell/haskell.js +242 -0
  50. data/templates/generate/deck.js/extensions/codemirror/mode/haskell/index.html +60 -0
  51. data/templates/generate/deck.js/extensions/codemirror/mode/htmlmixed/htmlmixed.js +79 -0
  52. data/templates/generate/deck.js/extensions/codemirror/mode/htmlmixed/index.html +52 -0
  53. data/templates/generate/deck.js/extensions/codemirror/mode/javascript/index.html +78 -0
  54. data/templates/generate/deck.js/extensions/codemirror/mode/javascript/javascript.js +348 -0
  55. data/templates/generate/deck.js/extensions/codemirror/mode/lua/index.html +72 -0
  56. data/templates/generate/deck.js/extensions/codemirror/mode/lua/lua.js +138 -0
  57. data/templates/generate/deck.js/extensions/codemirror/mode/php/index.html +49 -0
  58. data/templates/generate/deck.js/extensions/codemirror/mode/php/php.js +115 -0
  59. data/templates/generate/deck.js/extensions/codemirror/mode/plsql/index.html +63 -0
  60. data/templates/generate/deck.js/extensions/codemirror/mode/plsql/plsql.js +217 -0
  61. data/templates/generate/deck.js/extensions/codemirror/mode/python/LICENSE.txt +21 -0
  62. data/templates/generate/deck.js/extensions/codemirror/mode/python/index.html +123 -0
  63. data/templates/generate/deck.js/extensions/codemirror/mode/python/python.js +321 -0
  64. data/templates/generate/deck.js/extensions/codemirror/mode/r/LICENSE +24 -0
  65. data/templates/generate/deck.js/extensions/codemirror/mode/r/index.html +74 -0
  66. data/templates/generate/deck.js/extensions/codemirror/mode/r/r.js +141 -0
  67. data/templates/generate/deck.js/extensions/codemirror/mode/rst/index.html +526 -0
  68. data/templates/generate/deck.js/extensions/codemirror/mode/rst/rst.css +75 -0
  69. data/templates/generate/deck.js/extensions/codemirror/mode/rst/rst.js +333 -0
  70. data/templates/generate/deck.js/extensions/codemirror/mode/ruby/LICENSE +24 -0
  71. data/templates/generate/deck.js/extensions/codemirror/mode/ruby/index.html +172 -0
  72. data/templates/generate/deck.js/extensions/codemirror/mode/ruby/ruby.js +195 -0
  73. data/templates/generate/deck.js/extensions/codemirror/mode/scheme/index.html +65 -0
  74. data/templates/generate/deck.js/extensions/codemirror/mode/scheme/scheme.js +202 -0
  75. data/templates/generate/deck.js/extensions/codemirror/mode/smalltalk/index.html +56 -0
  76. data/templates/generate/deck.js/extensions/codemirror/mode/smalltalk/smalltalk.js +122 -0
  77. data/templates/generate/deck.js/extensions/codemirror/mode/sparql/index.html +41 -0
  78. data/templates/generate/deck.js/extensions/codemirror/mode/sparql/sparql.js +143 -0
  79. data/templates/generate/deck.js/extensions/codemirror/mode/stex/index.html +96 -0
  80. data/templates/generate/deck.js/extensions/codemirror/mode/stex/stex.js +167 -0
  81. data/templates/generate/deck.js/extensions/codemirror/mode/velocity/index.html +103 -0
  82. data/templates/generate/deck.js/extensions/codemirror/mode/velocity/velocity.js +146 -0
  83. data/templates/generate/deck.js/extensions/codemirror/mode/xml/index.html +42 -0
  84. data/templates/generate/deck.js/extensions/codemirror/mode/xml/xml.js +231 -0
  85. data/templates/generate/deck.js/extensions/codemirror/mode/xmlpure/index.html +60 -0
  86. data/templates/generate/deck.js/extensions/codemirror/mode/xmlpure/xmlpure.js +481 -0
  87. data/templates/generate/deck.js/extensions/codemirror/mode/yaml/index.html +68 -0
  88. data/templates/generate/deck.js/extensions/codemirror/mode/yaml/yaml.js +95 -0
  89. data/templates/generate/deck.js/extensions/codemirror/themes/cobalt.css +17 -0
  90. data/templates/generate/deck.js/extensions/codemirror/themes/default.css +19 -0
  91. data/templates/generate/deck.js/extensions/codemirror/themes/elegant.css +9 -0
  92. data/templates/generate/deck.js/extensions/codemirror/themes/neat.css +8 -0
  93. data/templates/generate/deck.js/extensions/codemirror/themes/night.css +20 -0
  94. data/templates/generate/deck.js/extensions/goto/deck.goto.css +41 -0
  95. data/templates/generate/deck.js/extensions/goto/deck.goto.html +6 -0
  96. data/templates/generate/deck.js/extensions/goto/deck.goto.js +118 -0
  97. data/templates/generate/deck.js/extensions/goto/deck.goto.scss +46 -0
  98. data/templates/generate/deck.js/extensions/hash/deck.hash.css +13 -0
  99. data/templates/generate/deck.js/extensions/hash/deck.hash.html +2 -0
  100. data/templates/generate/deck.js/extensions/hash/deck.hash.js +125 -0
  101. data/templates/generate/deck.js/extensions/hash/deck.hash.scss +15 -0
  102. data/templates/generate/deck.js/extensions/menu/deck.menu.css +24 -0
  103. data/templates/generate/deck.js/extensions/menu/deck.menu.js +127 -0
  104. data/templates/generate/deck.js/extensions/menu/deck.menu.scss +29 -0
  105. data/templates/generate/deck.js/extensions/navigation/deck.navigation.css +43 -0
  106. data/templates/generate/deck.js/extensions/navigation/deck.navigation.html +3 -0
  107. data/templates/generate/deck.js/extensions/navigation/deck.navigation.js +83 -0
  108. data/templates/generate/deck.js/extensions/navigation/deck.navigation.scss +56 -0
  109. data/templates/generate/deck.js/extensions/scale/deck.scale.css +16 -0
  110. data/templates/generate/deck.js/extensions/scale/deck.scale.js +155 -0
  111. data/templates/generate/deck.js/extensions/scale/deck.scale.scss +17 -0
  112. data/templates/generate/deck.js/extensions/status/deck.status.css +14 -0
  113. data/templates/generate/deck.js/extensions/status/deck.status.html +6 -0
  114. data/templates/generate/deck.js/extensions/status/deck.status.js +42 -0
  115. data/templates/generate/deck.js/extensions/status/deck.status.scss +16 -0
  116. data/templates/generate/deck.js/support/jquery.1.6.4.min.js +4 -0
  117. data/templates/generate/deck.js/support/modernizr.custom.js +4 -0
  118. data/templates/generate/deck.js/themes/style/neon.css +114 -0
  119. data/templates/generate/deck.js/themes/style/neon.scss +139 -0
  120. data/templates/generate/deck.js/themes/style/swiss.css +75 -0
  121. data/templates/generate/deck.js/themes/style/swiss.scss +91 -0
  122. data/templates/generate/deck.js/themes/style/web-2.0.css +187 -0
  123. data/templates/generate/deck.js/themes/style/web-2.0.scss +214 -0
  124. data/templates/generate/deck.js/themes/transition/fade.css +44 -0
  125. data/templates/generate/deck.js/themes/transition/fade.scss +70 -0
  126. data/templates/generate/deck.js/themes/transition/horizontal-slide.css +79 -0
  127. data/templates/generate/deck.js/themes/transition/horizontal-slide.scss +94 -0
  128. data/templates/generate/deck.js/themes/transition/vertical-slide.css +97 -0
  129. data/templates/generate/deck.js/themes/transition/vertical-slide.scss +116 -0
  130. data/templates/keydown.css.erb +27 -23
  131. metadata +171 -32
  132. data/Gemfile.lock +0 -41
  133. data/templates/generate/css/rocks.css +0 -392
  134. data/templates/generate/css/syntax_highlighting.css +0 -135
  135. data/templates/generate/js/rocks.js +0 -419
  136. data/templates/rocks/index.rhtml +0 -132
  137. data/templates/rocks/slide.rhtml +0 -10
@@ -0,0 +1,13 @@
1
+ .deck-container .deck-permalink {
2
+ display: none;
3
+ position: absolute;
4
+ z-index: 4;
5
+ bottom: 30px;
6
+ right: 0;
7
+ width: 48px;
8
+ text-align: center;
9
+ }
10
+
11
+ .no-history .deck-container:hover .deck-permalink {
12
+ display: block;
13
+ }
@@ -0,0 +1,2 @@
1
+ <!-- Place the following snippet at the bottom of the deck container. -->
2
+ <a href="." title="Permalink to this slide" class="deck-permalink">#</a>
@@ -0,0 +1,125 @@
1
+ /*!
2
+ Deck JS - deck.hash
3
+ Copyright (c) 2011 Caleb Troughton
4
+ Dual licensed under the MIT license and GPL license.
5
+ https://github.com/imakewebthings/deck.js/blob/master/MIT-license.txt
6
+ https://github.com/imakewebthings/deck.js/blob/master/GPL-license.txt
7
+ */
8
+
9
+ /*
10
+ This module adds deep linking to individual slides, enables internal links
11
+ to slides within decks, and updates the address bar with the hash as the user
12
+ moves through the deck. A permalink anchor is also updated. Standard themes
13
+ hide this link in browsers that support the History API, and show it for
14
+ those that do not. Slides that do not have an id are assigned one according to
15
+ the hashPrefix option. In addition to the on-slide container state class
16
+ kept by core, this module adds an on-slide state class that uses the id of each
17
+ slide.
18
+ */
19
+ (function ($, deck, window, undefined) {
20
+ var $d = $(document),
21
+ $window = $(window),
22
+
23
+ /* Collection of internal fragment links in the deck */
24
+ $internals,
25
+
26
+ /*
27
+ Internal only function. Given a string, extracts the id from the hash,
28
+ matches it to the appropriate slide, and navigates there.
29
+ */
30
+ goByHash = function(str) {
31
+ var id = str.substr(str.indexOf("#") + 1),
32
+ slides = $[deck]('getSlides');
33
+
34
+ $.each(slides, function(i, $el) {
35
+ if ($el.attr('id') === id) {
36
+ $[deck]('go', i);
37
+ return false;
38
+ }
39
+ });
40
+
41
+ // If we don't set these to 0 the container scrolls due to hashchange
42
+ $[deck]('getContainer').scrollLeft(0).scrollTop(0);
43
+ };
44
+
45
+ /*
46
+ Extends defaults/options.
47
+
48
+ options.selectors.hashLink
49
+ The element matching this selector has its href attribute updated to
50
+ the hash of the current slide as the user navigates through the deck.
51
+
52
+ options.hashPrefix
53
+ Every slide that does not have an id is assigned one at initialization.
54
+ Assigned ids take the form of hashPrefix + slideIndex, e.g., slide-0,
55
+ slide-12, etc.
56
+ */
57
+ $.extend(true, $[deck].defaults, {
58
+ selectors: {
59
+ hashLink: '.deck-permalink'
60
+ },
61
+
62
+ hashPrefix: 'slide-'
63
+ });
64
+
65
+
66
+ $d.bind('deck.init', function() {
67
+ var opts = $[deck]('getOptions');
68
+ $internals = $();
69
+
70
+ $.each($[deck]('getSlides'), function(i, $el) {
71
+ var hash;
72
+
73
+ /* Hand out ids to the unfortunate slides born without them */
74
+ if (!$el.attr('id')) {
75
+ $el.attr('id', opts.hashPrefix + i);
76
+ }
77
+
78
+ hash ='#' + $el.attr('id');
79
+
80
+ /* Deep link to slides on init */
81
+ if (hash === window.location.hash) {
82
+ $[deck]('go', i);
83
+ }
84
+
85
+ /* Add internal links to this slide */
86
+ $internals = $internals.add('a[href="' + hash + '"]');
87
+ });
88
+
89
+ if (!Modernizr.hashchange) {
90
+ /* Set up internal links using click for the poor browsers
91
+ without a hashchange event. */
92
+ $internals.unbind('click.deckhash').bind('click.deckhash', function(e) {
93
+ goByHash($(this).attr('href'));
94
+ });
95
+ }
96
+
97
+ /* Set up first id container state class */
98
+ $[deck]('getContainer').addClass(opts.classes.onPrefix + $[deck]('getSlide').attr('id'));
99
+ })
100
+ /* Update permalink, address bar, and state class on a slide change */
101
+ .bind('deck.change', function(e, from, to) {
102
+ var hash = '#' + $[deck]('getSlide', to).attr('id'),
103
+ opts = $[deck]('getOptions'),
104
+ osp = opts.classes.onPrefix,
105
+ $c = $[deck]('getContainer');
106
+
107
+ $c.removeClass(osp + $[deck]('getSlide', from).attr('id'));
108
+ $c.addClass(osp + $[deck]('getSlide', to).attr('id'));
109
+
110
+ $(opts.selectors.hashLink).attr('href', hash);
111
+ if (Modernizr.history) {
112
+ window.history.replaceState({}, "", hash);
113
+ }
114
+ });
115
+
116
+ /* Deals with internal links in modern browsers */
117
+ $window.bind('hashchange.deckhash', function(e) {
118
+ if (e.originalEvent && e.originalEvent.newURL) {
119
+ goByHash(e.originalEvent.newURL);
120
+ }
121
+ else {
122
+ goByHash(window.location.hash);
123
+ }
124
+ });
125
+ })(jQuery, 'deck', this);
@@ -0,0 +1,15 @@
1
+ .deck-container {
2
+ .deck-permalink {
3
+ display:none;
4
+ position:absolute;
5
+ z-index:4;
6
+ bottom:30px;
7
+ right:0;
8
+ width:48px;
9
+ text-align:center;
10
+ }
11
+ }
12
+
13
+ .no-history .deck-container:hover .deck-permalink {
14
+ display:block;
15
+ }
@@ -0,0 +1,24 @@
1
+ .deck-menu > .slide {
2
+ float: left;
3
+ width: 22%;
4
+ height: 22%;
5
+ min-height: 0;
6
+ margin: 1%;
7
+ font-size: 0.22em;
8
+ overflow: hidden;
9
+ padding: 0 0.5%;
10
+ }
11
+ .deck-menu .slide {
12
+ background: #eee;
13
+ position: relative;
14
+ left: 0;
15
+ top: 0;
16
+ visibility: visible;
17
+ cursor: pointer;
18
+ }
19
+ .deck-menu iframe, .deck-menu img, .deck-menu video {
20
+ max-width: 100%;
21
+ }
22
+ .deck-menu .deck-current, .no-touch .deck-menu .slide:hover {
23
+ background: #ddf;
24
+ }
@@ -0,0 +1,127 @@
1
+ /*!
2
+ Deck JS - deck.menu
3
+ Copyright (c) 2011 Caleb Troughton
4
+ Dual licensed under the MIT license and GPL license.
5
+ https://github.com/imakewebthings/deck.js/blob/master/MIT-license.txt
6
+ https://github.com/imakewebthings/deck.js/blob/master/GPL-license.txt
7
+ */
8
+
9
+ /*
10
+ This module adds the methods and key binding to show and hide a menu of all
11
+ slides in the deck. The deck menu state is indicated by the presence of a class
12
+ on the deck container.
13
+ */
14
+ (function($, deck, undefined) {
15
+ var $d = $(document);
16
+
17
+ /*
18
+ Extends defaults/options.
19
+
20
+ options.classes.menu
21
+ This class is added to the deck container when showing the slide menu.
22
+
23
+ options.keys.menu
24
+ The numeric keycode used to toggle between showing and hiding the slide
25
+ menu.
26
+
27
+ options.touch.doubletapWindow
28
+ Two consecutive touch events within this number of milliseconds will
29
+ be considered a double tap, and will toggle the menu on touch devices.
30
+ */
31
+ $.extend(true, $[deck].defaults, {
32
+ classes: {
33
+ menu: 'deck-menu'
34
+ },
35
+
36
+ keys: {
37
+ menu: 77 // m
38
+ },
39
+
40
+ touch: {
41
+ doubletapWindow: 400
42
+ }
43
+ });
44
+
45
+ /*
46
+ jQuery.deck('showMenu')
47
+
48
+ Shows the slide menu by adding the class specified by the menu class option
49
+ to the deck container.
50
+ */
51
+ $[deck]('extend', 'showMenu', function() {
52
+ $[deck]('getContainer').addClass($[deck]('getOptions').classes.menu);
53
+ $[deck]('getContainer').scrollTop($[deck]('getSlide').offset().top);
54
+ });
55
+
56
+ /*
57
+ jQuery.deck('hideMenu')
58
+
59
+ Hides the slide menu by removing the class specified by the menu class
60
+ option from the deck container.
61
+ */
62
+ $[deck]('extend', 'hideMenu', function() {
63
+ $[deck]('getContainer').removeClass($[deck]('getOptions').classes.menu);
64
+ $[deck]('getContainer').scrollTop(0);
65
+ });
66
+
67
+ /*
68
+ jQuery.deck('toggleMenu')
69
+
70
+ Toggles between showing and hiding the slide menu.
71
+ */
72
+ $[deck]('extend', 'toggleMenu', function() {
73
+ $[deck]('getContainer').hasClass($[deck]('getOptions').classes.menu) ?
74
+ $[deck]('hideMenu') : $[deck]('showMenu');
75
+ });
76
+
77
+ $d.bind('deck.init', function() {
78
+ var opts = $[deck]('getOptions'),
79
+ touchEndTime = 0,
80
+ currentSlide;
81
+
82
+ // Bind key events
83
+ $d.unbind('keydown.deckmenu').bind('keydown.deckmenu', function(e) {
84
+ if (e.which === opts.keys.menu || $.inArray(e.which, opts.keys.menu) > -1) {
85
+ $[deck]('toggleMenu');
86
+ e.preventDefault();
87
+ }
88
+ });
89
+
90
+ // Double tap to toggle slide menu for touch devices
91
+ $[deck]('getContainer').unbind('touchstart.deckmenu').bind('touchstart.deckmenu', function(e) {
92
+ currentSlide = $[deck]('getSlide');
93
+ })
94
+ .unbind('touchend.deckmenu').bind('touchend.deckmenu', function(e) {
95
+ var now = Date.now();
96
+
97
+ // Ignore this touch event if it caused a nav change (swipe)
98
+ if (currentSlide !== $[deck]('getSlide')) return;
99
+
100
+ if (now - touchEndTime < opts.touch.doubletapWindow) {
101
+ $[deck]('toggleMenu');
102
+ e.preventDefault();
103
+ }
104
+ touchEndTime = now;
105
+ });
106
+
107
+ // Selecting slides from the menu
108
+ $.each($[deck]('getSlides'), function(i, $s) {
109
+ $s.unbind('click.deckmenu').bind('click.deckmenu', function(e) {
110
+ if (!$[deck]('getContainer').hasClass(opts.classes.menu)) return;
111
+
112
+ $[deck]('go', i);
113
+ $[deck]('hideMenu');
114
+ e.stopPropagation();
115
+ e.preventDefault();
116
+ });
117
+ });
118
+ })
119
+ .bind('deck.change', function(e, from, to) {
120
+ var container = $[deck]('getContainer');
121
+
122
+ if (container.hasClass($[deck]('getOptions').classes.menu)) {
123
+ container.scrollTop($[deck]('getSlide', to).offset().top);
124
+ }
125
+ });
126
+ })(jQuery, 'deck');
127
+
@@ -0,0 +1,29 @@
1
+ .deck-menu {
2
+ > .slide {
3
+ float:left;
4
+ width:22%;
5
+ height:22%;
6
+ min-height:0;
7
+ margin:1%;
8
+ font-size:0.22em;
9
+ overflow:hidden;
10
+ padding:0 0.5%;
11
+ }
12
+
13
+ .slide {
14
+ background:#eee;
15
+ position:relative;
16
+ left:0;
17
+ top:0;
18
+ visibility:visible;
19
+ cursor:pointer;
20
+ }
21
+
22
+ iframe, img, video {
23
+ max-width:100%;
24
+ }
25
+
26
+ .deck-current, .no-touch & .slide:hover {
27
+ background:#ddf;
28
+ }
29
+ }
@@ -0,0 +1,43 @@
1
+ .deck-container .deck-prev-link, .deck-container .deck-next-link {
2
+ display: none;
3
+ position: absolute;
4
+ z-index: 3;
5
+ top: 50%;
6
+ width: 32px;
7
+ height: 32px;
8
+ margin-top: -16px;
9
+ font-size: 20px;
10
+ font-weight: bold;
11
+ line-height: 32px;
12
+ vertical-align: middle;
13
+ text-align: center;
14
+ text-decoration: none;
15
+ color: #fff;
16
+ background: #888;
17
+ }
18
+ .borderradius .deck-container .deck-prev-link, .borderradius .deck-container .deck-next-link {
19
+ -webkit-border-radius: 16px;
20
+ -moz-border-radius: 16px;
21
+ border-radius: 16px;
22
+ }
23
+ .deck-container .deck-prev-link:hover, .deck-container .deck-prev-link:focus, .deck-container .deck-prev-link:active, .deck-container .deck-prev-link:visited, .deck-container .deck-next-link:hover, .deck-container .deck-next-link:focus, .deck-container .deck-next-link:active, .deck-container .deck-next-link:visited {
24
+ color: #fff;
25
+ }
26
+ .deck-container .deck-prev-link {
27
+ left: 8px;
28
+ }
29
+ .deck-container .deck-next-link {
30
+ right: 8px;
31
+ }
32
+ .deck-container:hover .deck-prev-link, .deck-container:hover .deck-next-link {
33
+ display: block;
34
+ }
35
+ .deck-container:hover .deck-prev-link.deck-nav-disabled, .touch .deck-container:hover .deck-prev-link, .deck-container:hover .deck-next-link.deck-nav-disabled, .touch .deck-container:hover .deck-next-link {
36
+ display: none;
37
+ }
38
+
39
+ @media print {
40
+ .deck-prev-link, .deck-next-link {
41
+ display: none !important;
42
+ }
43
+ }
@@ -0,0 +1,3 @@
1
+ <!-- Place the following snippet at the bottom of the deck container. -->
2
+ <a href="#" class="deck-prev-link" title="Previous">&#8592;</a>
3
+ <a href="#" class="deck-next-link" title="Next">&#8594;</a>
@@ -0,0 +1,83 @@
1
+ /*!
2
+ Deck JS - deck.navigation - v1.0
3
+ Copyright (c) 2011 Caleb Troughton
4
+ Dual licensed under the MIT license and GPL license.
5
+ https://github.com/imakewebthings/deck.js/blob/master/MIT-license.txt
6
+ https://github.com/imakewebthings/deck.js/blob/master/GPL-license.txt
7
+ */
8
+
9
+ /*
10
+ This module adds clickable previous and next links to the deck.
11
+ */
12
+ (function($, deck, undefined) {
13
+ var $d = $(document);
14
+
15
+ /*
16
+ Extends defaults/options.
17
+
18
+ options.classes.navDisabled
19
+ This class is added to a navigation link when that action is disabled.
20
+ It is added to the previous link when on the first slide, and to the
21
+ next link when on the last slide.
22
+
23
+ options.selectors.nextLink
24
+ The elements that match this selector will move the deck to the next
25
+ slide when clicked.
26
+
27
+ options.selectors.previousLink
28
+ The elements that match this selector will move to deck to the previous
29
+ slide when clicked.
30
+ */
31
+ $.extend(true, $[deck].defaults, {
32
+ classes: {
33
+ navDisabled: 'deck-nav-disabled'
34
+ },
35
+
36
+ selectors: {
37
+ nextLink: '.deck-next-link',
38
+ previousLink: '.deck-prev-link'
39
+ }
40
+ });
41
+
42
+ $d.bind('deck.init', function() {
43
+ var opts = $[deck]('getOptions'),
44
+ nextSlide = $[deck]('getSlide', 1),
45
+ nextId = nextSlide ? nextSlide.attr('id') : undefined;
46
+
47
+ // Setup prev/next link events
48
+ $(opts.selectors.previousLink)
49
+ .unbind('click.decknavigation')
50
+ .bind('click.decknavigation', function(e) {
51
+ $[deck]('prev');
52
+ e.preventDefault();
53
+ });
54
+
55
+ $(opts.selectors.nextLink)
56
+ .unbind('click.decknavigation')
57
+ .bind('click.decknavigation', function(e) {
58
+ $[deck]('next');
59
+ e.preventDefault();
60
+ });
61
+
62
+ // Start on first slide, previous link is disabled, set next link href
63
+ $(opts.selectors.previousLink).addClass(opts.classes.navDisabled);
64
+ $(opts.selectors.nextLink).attr('href', '#' + (nextId ? nextId : ''));
65
+ })
66
+ /* Updates link hrefs, and disabled states if last/first slide */
67
+ .bind('deck.change', function(e, from, to) {
68
+ var opts = $[deck]('getOptions'),
69
+ last = $[deck]('getSlides').length - 1,
70
+ prevSlide = $[deck]('getSlide', to - 1),
71
+ nextSlide = $[deck]('getSlide', to + 1),
72
+ prevId = prevSlide ? prevSlide.attr('id') : undefined;
73
+ nextId = nextSlide ? nextSlide.attr('id') : undefined;
74
+
75
+ $(opts.selectors.previousLink)
76
+ .toggleClass(opts.classes.navDisabled, !to)
77
+ .attr('href', '#' + (prevId ? prevId : ''));
78
+ $(opts.selectors.nextLink)
79
+ .toggleClass(opts.classes.navDisabled, to === last)
80
+ .attr('href', '#' + (nextId ? nextId : ''));
81
+ });
82
+ })(jQuery, 'deck');
83
+