Files
edx-platform/lms/static/js/leanModal.js
Syed Ali Abbas Zaidi d7053a6783 fix: eslint autofixable issues (#32181)
* fix: eslint operator-linebreak issue

* fix: eslint quotes issue

* fix: react jsx indent and props issues

* fix: eslint trailing spaces issues

* fix: eslint line around directives issue

* fix: eslint semi rule

* fix: eslint newline per chain rule

* fix: eslint space infix ops rule

* fix: eslint space-in-parens issue

* fix: eslint space before function paren issue

* fix: eslint space before blocks issue

* fix: eslint arrow body style issue

* fix: eslint dot-location issue

* fix: eslint quotes issue

* fix: eslint quote props issue

* fix: eslint operator assignment issue

* fix: eslint new line after import issue

* fix: indent issues

* fix: operator assignment issue

* fix: all autofixable eslint issues

* fix: all react related fixable issues

* fix: autofixable eslint issues

* chore: remove all template literals

* fix: remaining autofixable issues

* fix: failing js test
2023-05-18 11:03:59 +05:00

148 lines
5.9 KiB
JavaScript

(function($) { // eslint-disable-line wrap-iife
'use strict';
$.fn.extend({
/*
* leanModal prepares an element to be a modal dialog. Call it once on the
* element that launches the dialog, when the page is ready. This function
* will add a .click() handler that properly opens the dialog.
*
* The launching element must:
* - be an <a> element, not a button,
* - have an href= attribute identifying the id of the dialog element,
* - have rel='leanModal'.
*/
leanModal: function(options) {
var defaults = {
top: 100,
overlay: 0.5,
closeButton: null,
position: 'fixed'
};
var overlay = '<div id="lean_overlay"></div>';
if ($('#lean_overlay').length === 0) {
edx.HtmlUtils.append(
$('body'),
$(overlay)
);
}
options = $.extend(defaults, options); // eslint-disable-line no-param-reassign
function closeModal(modalId, e) {
$('#lean_overlay').fadeOut(200);
$('iframe', modalId).attr('src', '');
$(modalId).css({display: 'none'});
if (modalId === '#modal_clone') {
$(modalId).remove();
}
e.preventDefault();
$(document).off('keydown.leanModal');
}
return this.each(function() {
var o = options;
$(this).click(function(e) {
var modalId = $(this).attr('href'),
modalClone, modalCloneHtml, notice, $notice;
$('.modal').hide();
if ($(modalId).hasClass('video-modal')) {
// Video modals need to be cloned before being presented as a modal
// This is because actions on the video get recorded in the history.
// Deleting the video (clone) prevents the odd back button behavior.
modalClone = $(modalId).clone(true, true);
modalClone.attr('id', 'modal_clone');
modalCloneHtml = edx.HtmlUtils.template(modalClone);
$(modalId).after(
edx.HtmlUtils.ensureHtml(modalCloneHtml).toString()
);
modalId = '#modal_clone';
}
$(document).on('keydown.leanModal', function(event) {
if (event.which === 27) {
closeModal(modalId, event);
}
});
$('#lean_overlay').click(function(ev) {
closeModal(modalId, ev);
});
$(o.closeButton).click(function(ev) {
closeModal(modalId, ev);
});
// To enable closing of email modal when copy button hit
$(o.copyEmailButton).click(function(ev) {
closeModal(modalId, ev);
});
$('#lean_overlay').css({display: 'block', opacity: 0});
$('#lean_overlay').fadeTo(200, o.overlay);
$('iframe', modalId).attr('src', $('iframe', modalId).data('src'));
if ($(modalId).hasClass('email-modal')) {
$(modalId).css({
width: 80 + '%',
height: 80 + '%',
position: o.position,
opacity: 0,
'z-index': 11000,
left: 10 + '%',
top: 10 + '%'
});
} else {
$(modalId).css({
position: o.position,
opacity: 0,
'z-index': 11000,
left: 50 + '%',
'margin-left': -($(modalId).outerWidth() / 2) + 'px',
top: o.top + 'px'
});
}
$(modalId).show().fadeTo(200, 1);
$(modalId).find('.notice').hide()
.html('');
notice = $(this).data('notice');
if (notice !== undefined) {
$notice = $(modalId).find('.notice');
$notice.show().text(notice);
// This is for activating leanModal links that were in the notice.
// We should have a cleaner way of allowing all dynamically added leanmodal links to work.
$notice.find('a[rel*=leanModal]').leanModal({
top: 120,
overlay: 1,
closeButton: '.close-modal',
position: 'absolute'
});
}
e.preventDefault();
});
});
}
});
$(document).ready(function($) { // eslint-disable-line no-shadow
$('button[rel*=leanModal]').each(function() {
var sep, embed;
$(this).leanModal({
top: 120, overlay: 1, closeButton: '.close-modal', position: 'absolute'
});
embed = $($(this).attr('href')).find('iframe');
if (embed.length > 0 && embed.attr('src')) {
sep = (embed.attr('src').indexOf('?') > 0) ? '&' : '?';
embed.data('src', embed.attr('src') + sep + 'autoplay=1&rel=0');
embed.attr('src', '');
}
});
});
})(jQuery);