1/*! 2 * jQuery sidebar plugin 3 * --------------------- 4 * A stupid simple sidebar jQuery plugin. 5 * 6 * Developed with <3 and JavaScript by the jillix developers. 7 * Copyright (c) 2013-15 jillix 8 * */ 9(function($) { 10 11 /** 12 * sidebar 13 * Initialize sidebar on selected elements. 14 * 15 * ```js 16 * $(".my-sidebar").sidebar({...}); 17 * ``` 18 * 19 * After the call above, you can programatically open/close/toggle the sidebar using: 20 * 21 * ```js 22 * $(".my-sidebar").trigger("sidebar:open"); 23 * $(".my-sidebar").trigger("sidebar:close"); 24 * $(".my-sidebar").trigger("sidebar:toggle"); 25 * $(".my-sidebar").trigger("sidebar:close", [{ speed: 0 }]); 26 * ``` 27 * 28 * After the sidebar is opened/closed, `sidebar:opened`/`sidebar:closed` event is emitted. 29 * 30 * ```js 31 * $(".my-sidebar").on("sidebar:opened", function () { 32 * // Do something on open 33 * }); 34 * 35 * $(".my-sidebar").on("sidebar:closed", function () { 36 * // Do something on close 37 * }); 38 * ``` 39 * 40 * @name sidebar 41 * @function 42 * @param {Object} options An object that will be merged with the default options. 43 * 44 * - `speed` (Number): animation speed (default: `200`) 45 * - `side` (String): left|right|top|bottom (default: `"left"`) 46 * - `isClosed` (Boolean): A boolean value indicating if the sidebar is closed or not (default: `false`). 47 * - `close` (Boolean): If `true`, the sidebar will be closed by default. 48 * 49 * @return {jQuery} The jQuery elements that were selected. 50 */ 51 $.fn.sidebar = function(options) { 52 53 var self = this; 54 if (self.length > 1) { 55 return self.each(function () { 56 $(this).sidebar(options); 57 }); 58 } 59 60 // Width, height 61 var width = self.outerWidth(); 62 var height = self.outerHeight(); 63 64 // Defaults 65 var settings = $.extend({ 66 67 // Animation speed 68 speed: 200, 69 70 // Side: left|right|top|bottom 71 side: "left", 72 73 // Is closed 74 isClosed: false, 75 76 // Should I close the sidebar? 77 close: true 78 79 }, options); 80 81 /*! 82 * Opens the sidebar 83 * $([jQuery selector]).trigger("sidebar:open"); 84 * */ 85 self.on("sidebar:open", function(ev, data) { 86 var properties = {}; 87 properties[settings.side] = 0; 88 settings.isClosed = null; 89 self.stop().show('fast').animate(properties, $.extend({}, settings, data).speed, function() { 90 settings.isClosed = false; 91 self.trigger("sidebar:opened"); 92 }); 93 }); 94 95 96 /*! 97 * Closes the sidebar 98 * $("[jQuery selector]).trigger("sidebar:close"); 99 * */ 100 self.on("sidebar:close", function(ev, data) { 101 var properties = {}; 102 if (settings.side === "left" || settings.side === "right") { 103 properties[settings.side] = -self.outerWidth(); 104 } else { 105 properties[settings.side] = -self.outerHeight(); 106 } 107 settings.isClosed = null; 108 self.stop().animate(properties, $.extend({}, settings, data).speed, function() { 109 settings.isClosed = true; 110 self.trigger("sidebar:closed"); 111 self.hide(); 112 }); 113 }); 114 115 /*! 116 * Toggles the sidebar 117 * $("[jQuery selector]).trigger("sidebar:toggle"); 118 * */ 119 self.on("sidebar:toggle", function(ev, data) { 120 if (settings.isClosed) { 121 self.trigger("sidebar:open", [data]); 122 } else { 123 self.trigger("sidebar:close", [data]); 124 } 125 }); 126 127 function closeWithNoAnimation() { 128 self.trigger("sidebar:close", [{ 129 speed: 0 130 }]); 131 } 132 133 // Close the sidebar 134 if (!settings.isClosed && settings.close) { 135 closeWithNoAnimation(); 136 } 137 138 $(window).on("resize", function () { 139 if (!settings.isClosed) { return; } 140 closeWithNoAnimation(); 141 }); 142 143 self.data("sidebar", settings); 144 145 return self; 146 }; 147 148 // Version 149 $.fn.sidebar.version = "3.3.2"; 150})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.