Files
dbois/public/js/vendor/Section/GridMenu.js
T
2017-12-14 10:17:13 +01:00

155 lines
3.9 KiB
JavaScript
Executable File

(function (global, factory) {
if (typeof define === "function" && define.amd) {
define('/Section/GridMenu', ['exports', 'jquery', 'Component'], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require('jquery'), require('Component'));
} else {
var mod = {
exports: {}
};
factory(mod.exports, global.jQuery, global.Component);
global.SectionGridMenu = mod.exports;
}
})(this, function (exports, _jquery, _Component2) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _jquery2 = babelHelpers.interopRequireDefault(_jquery);
var _Component3 = babelHelpers.interopRequireDefault(_Component2);
var $BODY = (0, _jquery2.default)('body');
var $HTML = (0, _jquery2.default)('html');
var Scrollable = function () {
function Scrollable($el) {
babelHelpers.classCallCheck(this, Scrollable);
this.$el = $el;
this.api = null;
this.init();
}
babelHelpers.createClass(Scrollable, [{
key: 'init',
value: function init() {
this.api = this.$el.asScrollable({
namespace: 'scrollable',
skin: 'scrollable-inverse',
direction: 'vertical',
contentSelector: '>',
containerSelector: '>'
}).data('asScrollable');
}
}, {
key: 'update',
value: function update() {
if (this.api) {
this.api.update();
}
}
}, {
key: 'enable',
value: function enable() {
if (!this.api) {
this.init();
}
if (this.api) {
this.api.enable();
}
}
}, {
key: 'disable',
value: function disable() {
if (this.api) {
this.api.disable();
}
}
}]);
return Scrollable;
}();
var GridMenu = function (_Component) {
babelHelpers.inherits(GridMenu, _Component);
function GridMenu() {
var _ref;
babelHelpers.classCallCheck(this, GridMenu);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var _this = babelHelpers.possibleConstructorReturn(this, (_ref = GridMenu.__proto__ || Object.getPrototypeOf(GridMenu)).call.apply(_ref, [this].concat(args)));
_this.isOpened = false;
_this.scrollable = new Scrollable(_this.$el);
return _this;
}
babelHelpers.createClass(GridMenu, [{
key: 'open',
value: function open() {
this.animate(function () {
this.$el.addClass('active');
(0, _jquery2.default)('[data-toggle="gridmenu"]').addClass('active').attr('aria-expanded', true);
$BODY.addClass('site-gridmenu-active');
$HTML.addClass('disable-scrolling');
}, function () {
this.scrollable.enable();
});
this.isOpened = true;
}
}, {
key: 'close',
value: function close() {
this.animate(function () {
this.$el.removeClass('active');
(0, _jquery2.default)('[data-toggle="gridmenu"]').addClass('active').attr('aria-expanded', true);
$BODY.removeClass('site-gridmenu-active');
$HTML.removeClass('disable-scrolling');
}, function () {
this.scrollable.disable();
});
this.isOpened = false;
}
}, {
key: 'toggle',
value: function toggle(opened) {
if (opened) {
this.open();
} else {
this.close();
}
}
}, {
key: 'animate',
value: function animate(doing, callback) {
var _this2 = this;
doing.call(this);
this.$el.trigger('changing.site.gridmenu');
setTimeout(function () {
callback.call(_this2);
_this2.$el.trigger('changed.site.gridmenu');
}, 500);
}
}]);
return GridMenu;
}(_Component3.default);
exports.default = GridMenu;
});