Ridiculous giant update
[deck.js.git] / extensions / menu / deck.menu.js
blob9b02a25ac61ab39cdd5980ae0d99da07d31707d8
1 /*!
2 Deck JS - deck.menu - 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 */
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.
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         $.extend(true, $[deck].defaults, {
28                 classes: {
29                         menu: 'deck-menu'
30                 },
31                 
32                 keys: {
33                         menu: 77 // m
34                 }
35         });
37         /*
38         jQuery.deck('showMenu')
39         
40         Shows the slide menu by adding the class specified by the menu class option
41         to the deck container.
42         */
43         $[deck]('extend', 'showMenu', function() {
44                 $[deck]('getContainer').addClass($[deck]('getOptions').classes.menu);
45         });
47         /*
48         jQuery.deck('hideMenu')
49         
50         Hides the slide menu by removing the class specified by the menu class
51         option from the deck container.
52         */
53         $[deck]('extend', 'hideMenu', function() {
54                 $[deck]('getContainer').removeClass($[deck]('getOptions').classes.menu);
55         });
57         /*
58         jQuery.deck('toggleMenu')
59         
60         Toggles between showing and hiding the slide menu.
61         */
62         $[deck]('extend', 'toggleMenu', function() {
63                 $[deck]('getContainer').toggleClass($[deck]('getOptions').classes.menu);
64         });
66         $d.bind('deck.init', function() {
67                 // Bind key events
68                 $d.bind('keydown.deck', function(e) {
69                         if (e.which == $[deck]('getOptions').keys.menu) {
70                                 $[deck]('toggleMenu');
71                         }
72                 });
73         });
74 })(jQuery, 'deck');