aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bower_components/admin-lte/build/js/PushMenu.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/bower_components/admin-lte/build/js/PushMenu.js')
-rw-r--r--public/bower_components/admin-lte/build/js/PushMenu.js176
1 files changed, 176 insertions, 0 deletions
diff --git a/public/bower_components/admin-lte/build/js/PushMenu.js b/public/bower_components/admin-lte/build/js/PushMenu.js
new file mode 100644
index 0000000..f45e971
--- /dev/null
+++ b/public/bower_components/admin-lte/build/js/PushMenu.js
@@ -0,0 +1,176 @@
+/* PushMenu()
+ * ==========
+ * Adds the push menu functionality to the sidebar.
+ *
+ * @usage: $('.btn').pushMenu(options)
+ * or add [data-toggle="push-menu"] to any button
+ * Pass any option as data-option="value"
+ */
++function ($) {
+ 'use strict';
+
+ var DataKey = 'lte.pushmenu';
+
+ var Default = {
+ collapseScreenSize : 767,
+ expandOnHover : false,
+ expandTransitionDelay: 200
+ };
+
+ var Selector = {
+ collapsed : '.sidebar-collapse',
+ open : '.sidebar-open',
+ mainSidebar : '.main-sidebar',
+ contentWrapper: '.content-wrapper',
+ searchInput : '.sidebar-form .form-control',
+ button : '[data-toggle="push-menu"]',
+ mini : '.sidebar-mini',
+ expanded : '.sidebar-expanded-on-hover',
+ layoutFixed : '.fixed'
+ };
+
+ var ClassName = {
+ collapsed : 'sidebar-collapse',
+ open : 'sidebar-open',
+ mini : 'sidebar-mini',
+ expanded : 'sidebar-expanded-on-hover',
+ expandFeature: 'sidebar-mini-expand-feature',
+ layoutFixed : 'fixed'
+ };
+
+ var Event = {
+ expanded : 'expanded.pushMenu',
+ collapsed: 'collapsed.pushMenu'
+ };
+
+ // PushMenu Class Definition
+ // =========================
+ var PushMenu = function (options) {
+ this.options = options;
+ this.init();
+ };
+
+ PushMenu.prototype.init = function () {
+ if (this.options.expandOnHover
+ || ($('body').is(Selector.mini + Selector.layoutFixed))) {
+ this.expandOnHover();
+ $('body').addClass(ClassName.expandFeature);
+ }
+
+ $(Selector.contentWrapper).click(function () {
+ // Enable hide menu when clicking on the content-wrapper on small screens
+ if ($(window).width() <= this.options.collapseScreenSize && $('body').hasClass(ClassName.open)) {
+ this.close();
+ }
+ }.bind(this));
+
+ // __Fix for android devices
+ $(Selector.searchInput).click(function (e) {
+ e.stopPropagation();
+ });
+ };
+
+ PushMenu.prototype.toggle = function () {
+ var windowWidth = $(window).width();
+ var isOpen = !$('body').hasClass(ClassName.collapsed);
+
+ if (windowWidth <= this.options.collapseScreenSize) {
+ isOpen = $('body').hasClass(ClassName.open);
+ }
+
+ if (!isOpen) {
+ this.open();
+ } else {
+ this.close();
+ }
+ };
+
+ PushMenu.prototype.open = function () {
+ var windowWidth = $(window).width();
+
+ if (windowWidth > this.options.collapseScreenSize) {
+ $('body').removeClass(ClassName.collapsed)
+ .trigger($.Event(Event.expanded));
+ }
+ else {
+ $('body').addClass(ClassName.open)
+ .trigger($.Event(Event.expanded));
+ }
+ };
+
+ PushMenu.prototype.close = function () {
+ var windowWidth = $(window).width();
+ if (windowWidth > this.options.collapseScreenSize) {
+ $('body').addClass(ClassName.collapsed)
+ .trigger($.Event(Event.collapsed));
+ } else {
+ $('body').removeClass(ClassName.open + ' ' + ClassName.collapsed)
+ .trigger($.Event(Event.collapsed));
+ }
+ };
+
+ PushMenu.prototype.expandOnHover = function () {
+ $(Selector.mainSidebar).hover(function () {
+ if ($('body').is(Selector.mini + Selector.collapsed)
+ && $(window).width() > this.options.collapseScreenSize) {
+ this.expand();
+ }
+ }.bind(this), function () {
+ if ($('body').is(Selector.expanded)) {
+ this.collapse();
+ }
+ }.bind(this));
+ };
+
+ PushMenu.prototype.expand = function () {
+ setTimeout(function () {
+ $('body').removeClass(ClassName.collapsed)
+ .addClass(ClassName.expanded);
+ }, this.options.expandTransitionDelay);
+ };
+
+ PushMenu.prototype.collapse = function () {
+ setTimeout(function () {
+ $('body').removeClass(ClassName.expanded)
+ .addClass(ClassName.collapsed);
+ }, this.options.expandTransitionDelay);
+ };
+
+ // PushMenu Plugin Definition
+ // ==========================
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this);
+ var data = $this.data(DataKey);
+
+ if (!data) {
+ var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option);
+ $this.data(DataKey, (data = new PushMenu(options)));
+ }
+
+ if (option === 'toggle') data.toggle();
+ });
+ }
+
+ var old = $.fn.pushMenu;
+
+ $.fn.pushMenu = Plugin;
+ $.fn.pushMenu.Constructor = PushMenu;
+
+ // No Conflict Mode
+ // ================
+ $.fn.pushMenu.noConflict = function () {
+ $.fn.pushMenu = old;
+ return this;
+ };
+
+ // Data API
+ // ========
+ $(document).on('click', Selector.button, function (e) {
+ e.preventDefault();
+ Plugin.call($(this), 'toggle');
+ });
+ $(window).on('load', function () {
+ Plugin.call($(Selector.button));
+ });
+}(jQuery);