Browse Source

* fx; * stack

modules
RubaXa 11 years ago
parent
commit
8a5bd5a38f
  1. 38
      src/Ply.es6

38
src/Ply.es6

@ -607,6 +607,7 @@
function _createOverlay(style) { function _createOverlay(style) {
return _buildDOM({ return _buildDOM({
ply: ':overlay', ply: ':overlay',
tag: '.ply-overlay',
css: _extend({ css: _extend({
top: 0, top: 0,
left: 0, left: 0,
@ -695,7 +696,7 @@
// //
// Настройки по умолчанию // Настройки по умолчанию
// //
var defaults = { var defaults = {
layer: {}, layer: {},
@ -726,7 +727,7 @@
// //
// Основной код // Основной код
// //
@ -760,16 +761,22 @@
// Очередь эффектов // Очередь эффектов
_this.fx = { queue: _promise((resolve) => { resolve(); }) }; _this.fx = (executor) => {
_this.fx.add = (executor) => { /* jshint boss:true */
/* jshint boss:true*/
return !(_this.fx.queue = _this.fx.queue.then(executor, executor).then(() => { return !(_this.fx.queue = _this.fx.queue.then(executor, executor).then(() => {
return _this; return _this;
})); }));
}; };
_this.fx.queue = _promise((resolve) => { resolve(); });
// Подписываемся «контрол» «отмена» и «крестик» // Клик по затемнению
_this.on('click', ':overlay', () => {
_this.hasFlag('closeByOverlay') && _this.closeBy('overlay');
});
// Подписываемся кнопку «отмена» и «крестик»
_this.on('click', ':close', (evt, el) => { _this.on('click', ':close', (evt, el) => {
evt.preventDefault(); evt.preventDefault();
_this.closeBy(el.nodeName === 'BUTTON' ? 'cancel' : 'x'); _this.closeBy(el.nodeName === 'BUTTON' ? 'cancel' : 'x');
@ -980,7 +987,7 @@
Ply.stack[state ? 'add' : 'remove'](_this); Ply.stack[state ? 'add' : 'remove'](_this);
// Очередь эффектов // Очередь эффектов
_this.fx.add(() => { _this.fx(() => {
return _preloadImage(_this.wrapEl).then(() => { return _preloadImage(_this.wrapEl).then(() => {
if (state) { if (state) {
_appendChild(_this.bodyEl, _this.wrapEl); _appendChild(_this.bodyEl, _this.wrapEl);
@ -1038,7 +1045,7 @@
var _this = this; var _this = this;
if (_this.visible) { if (_this.visible) {
_this.fx.add(() => { _this.fx(() => {
return _preloadImage(openEl).then(() => { return _preloadImage(openEl).then(() => {
prepare(); prepare();
@ -1162,9 +1169,6 @@
if (evt.keyCode === keys.esc && layer.hasFlag('closeByEsc')) { if (evt.keyCode === keys.esc && layer.hasFlag('closeByEsc')) {
layer.closeBy('esc'); layer.closeBy('esc');
} }
else if (layer.hasFlag('closeByOverlay') && evt.target.getAttribute(_plyAttr) === ':overlay') {
layer.closeBy('overlay');
}
}, },
@ -1175,16 +1179,10 @@
add: function (layer) { add: function (layer) {
var idx = array_push.call(this, layer); var idx = array_push.call(this, layer);
if (this.last) {
// _css(layer.overlayEl, 'visibility', 'hidden');
_css(this.last.layerEl, 'display', 'none');
}
this.last = layer; this.last = layer;
this._idx[layer.cid] = idx - 1; this._idx[layer.cid] = idx - 1;
if (idx === 1) { if (idx === 1) {
_addEvent(document, 'click', this._pop);
_addEvent(document, 'keyup', this._pop); _addEvent(document, 'keyup', this._pop);
} }
}, },
@ -1203,11 +1201,7 @@
delete this._idx[layer.cid]; delete this._idx[layer.cid];
this.last = this[this.length-1]; this.last = this[this.length-1];
if (this.last) { if (!this.last) {
// _css(layer.overlayEl, 'visibility', '');
_css(this.last.layerEl, 'display', 'inline-block');
} else {
_removeEvent(document, 'click', this._pop);
_removeEvent(document, 'keyup', this._pop); _removeEvent(document, 'keyup', this._pop);
} }
} }

Loading…
Cancel
Save