155 lines
3.9 KiB
JavaScript
Executable File
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;
|
|
}); |