mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[FIX] web_responsive: Other minor fixes
* Add Tecnativa as author * Remove untestable JS method * Rename to web_responsive
This commit is contained in:
committed by
Sergey Shebanin
parent
e7aa0e1bf9
commit
7518b95999
177
web_responsive/static/lib/js/drawer.3.2.0.js
Executable file
177
web_responsive/static/lib/js/drawer.3.2.0.js
Executable file
@@ -0,0 +1,177 @@
|
||||
/*!
|
||||
* jquery-drawer v3.2.0
|
||||
* Flexible drawer menu using jQuery, iScroll and CSS.
|
||||
* http://git.blivesta.com/drawer
|
||||
* License : MIT
|
||||
* Author : blivesta <design@blivesta.com> (http://blivesta.com/)
|
||||
*/
|
||||
|
||||
;(function umd(factory) {
|
||||
'use strict';
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof exports === 'object') {
|
||||
module.exports = factory(require('jquery'));
|
||||
} else {
|
||||
factory(jQuery);
|
||||
}
|
||||
}(function Drawer($) {
|
||||
'use strict';
|
||||
var namespace = 'drawer';
|
||||
var touches = typeof document.ontouchstart != 'undefined';
|
||||
var __ = {
|
||||
init: function init(options) {
|
||||
options = $.extend({
|
||||
iscroll: {
|
||||
mouseWheel: true,
|
||||
preventDefault: false
|
||||
},
|
||||
showOverlay: true
|
||||
}, options);
|
||||
|
||||
__.settings = {
|
||||
state: false,
|
||||
events: {
|
||||
opened: 'drawer.opened',
|
||||
closed: 'drawer.closed'
|
||||
},
|
||||
dropdownEvents: {
|
||||
opened: 'shown.bs.dropdown',
|
||||
closed: 'hidden.bs.dropdown'
|
||||
}
|
||||
};
|
||||
|
||||
__.settings.class = $.extend({
|
||||
nav: 'drawer-nav',
|
||||
toggle: 'drawer-toggle',
|
||||
overlay: 'drawer-overlay',
|
||||
open: 'drawer-open',
|
||||
close: 'drawer-close',
|
||||
dropdown: 'drawer-dropdown'
|
||||
}, options.class);
|
||||
|
||||
return this.each(function instantiateDrawer() {
|
||||
var _this = this;
|
||||
var $this = $(this);
|
||||
var data = $this.data(namespace);
|
||||
|
||||
if (!data) {
|
||||
options = $.extend({}, options);
|
||||
$this.data(namespace, { options: options });
|
||||
|
||||
__.refresh.call(_this);
|
||||
|
||||
if (options.showOverlay) {
|
||||
__.addOverlay.call(_this);
|
||||
}
|
||||
|
||||
$('.' + __.settings.class.toggle).on('click.' + namespace, function toggle() {
|
||||
__.toggle.call(_this);
|
||||
return _this.iScroll.refresh();
|
||||
});
|
||||
|
||||
$(window).resize(function close() {
|
||||
__.close.call(_this);
|
||||
return _this.iScroll.refresh();
|
||||
});
|
||||
|
||||
$('.' + __.settings.class.dropdown)
|
||||
.on(__.settings.dropdownEvents.opened + ' ' + __.settings.dropdownEvents.closed, function onOpenedOrClosed() {
|
||||
return _this.iScroll.refresh();
|
||||
});
|
||||
}
|
||||
|
||||
}); // end each
|
||||
},
|
||||
|
||||
refresh: function refresh() {
|
||||
this.iScroll = new IScroll(
|
||||
'.' + __.settings.class.nav,
|
||||
$(this).data(namespace).options.iscroll
|
||||
);
|
||||
},
|
||||
|
||||
addOverlay: function addOverlay() {
|
||||
var _this = this;
|
||||
var $this = $(this);
|
||||
var $overlay = $('<div>').addClass(__.settings.class.overlay + ' ' + __.settings.class.toggle);
|
||||
|
||||
return $this.append($overlay);
|
||||
},
|
||||
|
||||
toggle: function toggle() {
|
||||
var _this = this;
|
||||
|
||||
if (__.settings.state) {
|
||||
return __.close.call(_this);
|
||||
} else {
|
||||
return __.open.call(_this);
|
||||
}
|
||||
},
|
||||
|
||||
open: function open() {
|
||||
var $this = $(this);
|
||||
|
||||
if (touches) {
|
||||
$this.on('touchmove.' + namespace, function disableTouch(event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
}
|
||||
|
||||
return $this
|
||||
.removeClass(__.settings.class.close)
|
||||
.addClass(__.settings.class.open)
|
||||
.css({ 'overflow': 'hidden' })
|
||||
.drawerCallback(function triggerOpenedListeners() {
|
||||
__.settings.state = true;
|
||||
$this.trigger(__.settings.events.opened);
|
||||
});
|
||||
},
|
||||
|
||||
close: function close() {
|
||||
var $this = $(this);
|
||||
|
||||
if (touches) $this.off('touchmove.' + namespace);
|
||||
|
||||
return $this
|
||||
.removeClass(__.settings.class.open)
|
||||
.addClass(__.settings.class.close)
|
||||
.css({ 'overflow': 'auto' })
|
||||
.drawerCallback(function triggerClosedListeners() {
|
||||
__.settings.state = false;
|
||||
$this.trigger(__.settings.events.closed);
|
||||
});
|
||||
},
|
||||
|
||||
destroy: function destroy() {
|
||||
return this.each(function destroyEach() {
|
||||
var $this = $(this);
|
||||
$(window).off('.' + namespace);
|
||||
$this.removeData(namespace);
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$.fn.drawerCallback = function drawerCallback(callback) {
|
||||
var end = 'transitionend webkitTransitionEnd';
|
||||
return this.each(function setAnimationEndHandler() {
|
||||
var $this = $(this);
|
||||
$this.on(end, function invokeCallbackOnAnimationEnd() {
|
||||
$this.off(end);
|
||||
return callback.call(this);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
$.fn.drawer = function drawer(method) {
|
||||
if (__[method]) {
|
||||
return __[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
||||
} else if (typeof method === 'object' || !method) {
|
||||
return __.init.apply(this, arguments);
|
||||
} else {
|
||||
$.error('Method ' + method + ' does not exist on jQuery.' + namespace);
|
||||
}
|
||||
};
|
||||
|
||||
}));
|
||||
Reference in New Issue
Block a user