66 lines
1.5 KiB
JavaScript
66 lines
1.5 KiB
JavaScript
|
|
var INLINE_NS = 'inline',
|
|
_hiddenClass,
|
|
_inlinePlaceholder,
|
|
_lastInlineElement,
|
|
_putInlineElementsBack = function() {
|
|
if(_lastInlineElement) {
|
|
_inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach();
|
|
_lastInlineElement = null;
|
|
}
|
|
};
|
|
|
|
$.magnificPopup.registerModule(INLINE_NS, {
|
|
options: {
|
|
hiddenClass: 'hide', // will be appended with `mfp-` prefix
|
|
markup: '',
|
|
tNotFound: 'Content not found'
|
|
},
|
|
proto: {
|
|
|
|
initInline: function() {
|
|
mfp.types.push(INLINE_NS);
|
|
|
|
_mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() {
|
|
_putInlineElementsBack();
|
|
});
|
|
},
|
|
|
|
getInline: function(item, template) {
|
|
|
|
_putInlineElementsBack();
|
|
|
|
if(item.src) {
|
|
var inlineSt = mfp.st.inline,
|
|
el = $(item.src);
|
|
|
|
if(el.length) {
|
|
|
|
// If target element has parent - we replace it with placeholder and put it back after popup is closed
|
|
var parent = el[0].parentNode;
|
|
if(parent && parent.tagName) {
|
|
if(!_inlinePlaceholder) {
|
|
_hiddenClass = inlineSt.hiddenClass;
|
|
_inlinePlaceholder = _getEl(_hiddenClass);
|
|
_hiddenClass = 'mfp-'+_hiddenClass;
|
|
}
|
|
// replace target inline element with placeholder
|
|
_lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);
|
|
}
|
|
|
|
mfp.updateStatus('ready');
|
|
} else {
|
|
mfp.updateStatus('error', inlineSt.tNotFound);
|
|
el = $('<div>');
|
|
}
|
|
|
|
item.inlineElement = el;
|
|
return el;
|
|
}
|
|
|
|
mfp.updateStatus('ready');
|
|
mfp._parseMarkup(template, {}, item);
|
|
return template;
|
|
}
|
|
}
|
|
}); |