mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00

Removes jQuery dependency from calling code that wants to listen for these events. Maintains backwards compatibility with existing code that does want to listen to jQuery-style events.
2 lines
5.1 KiB
JavaScript
2 lines
5.1 KiB
JavaScript
define ("core/inplace_editable",["jquery","core/ajax","core/templates","core/notification","core/str","core/config","core/url","core/form-autocomplete","core/pending","core/local/inplace_editable/events"],function(a,b,c,d,e,f,g,h,i,j){var k=function(a){a.removeClass("updating");a.find("img.spinner").hide()},l=function(e,f,g){var h=[e.attr("data-itemid"),e.attr("data-component"),e.attr("data-itemtype")].join("-"),l=new i(h);m(e);b.call([{methodname:"core_update_inplace_editable",args:{itemid:e.attr("data-itemid"),component:e.attr("data-component"),itemtype:e.attr("data-itemtype"),value:f}}])[0].then(function(b){return c.render("core/inplace_editable",b).then(function(d,f){var h=e.attr("data-value"),i=a(d);c.replaceNode(e,i,f);if(!g){i.find("[data-inplaceeditablelink]").focus()}j.notifyElementUpdated(i.get(0),b,h)})}).then(function(){return l.resolve()}).fail(function(a){k(e);M.util.js_complete(h);var b=j.notifyElementUpdateFailed(e.get(0),a,f);if(!b.defaultPrevented){d.exception(a)}})},m=function(b){b.addClass("updating");var c=b.find("img.spinner");if(c.length){c.show()}else{c=a("<img/>").attr("src",g.imageUrl("i/loading_small")).addClass("spinner").addClass("smallicon");b.append(c)}};a("body").on("click keypress","[data-inplaceeditable] [data-inplaceeditablelink]",function(b){if("keypress"===b.type&&13!==b.keyCode){return}var g=new i("autocomplete-start-editing");b.stopImmediatePropagation();b.preventDefault();var j=a(this),k=j.closest("[data-inplaceeditable]"),m=function(a){a.find("input").off();a.find("select").off();a.html(a.attr("data-oldcontent"));a.removeAttr("data-oldcontent");a.removeClass("inplaceeditingon");a.find("[data-inplaceeditablelink]").focus()},n=function(b,c){var d=b,e;for(e=0;e<c;e++){d+=Math.floor(10*Math.random())+""}if(0===a("#"+d).length){return d}return n(b,c)},o=function(b){e.get_string("edittitleinstructions").done(function(c){var d=a("<span class=\"editinstructions\">"+c+"</span>").attr("id",n("id_editinstructions_",20)),e=a("<input type=\"text\"/>").attr("id",n("id_inplacevalue_",20)).attr("value",b.attr("data-value")).attr("aria-describedby",d.attr("id")).addClass("ignoredirty").addClass("form-control"),g=a("<label class=\"accesshide\">"+k.attr("data-editlabel")+"</label>").attr("for",e.attr("id"));b.html("").append(d).append(g).append(e);e.focus();e.select();e.on("keyup keypress focusout",function(a){if(f.behatsiterunning&&"focusout"===a.type){return}if("keypress"===a.type&&13===a.keyCode){var c=e.val();m(b);l(b,c)}if("keyup"===a.type&&27===a.keyCode||"focusout"===a.type){m(b)}})})},p=function(a,b){m(a);l(a,b)},q=function(b,c){var d,e=a("<select></select>").attr("id",n("id_inplacevalue_",20)).addClass("custom-select"),g=a("<label class=\"accesshide\">"+k.attr("data-editlabel")+"</label>").attr("for",e.attr("id"));for(d in c){e.append(a("<option>").attr("value",c[d].key).html(c[d].value))}e.val(b.attr("data-value"));b.html("").append(g).append(e);e.focus();e.select();e.on("keyup change focusout",function(a){if(f.behatsiterunning&&"focusout"===a.type){return}if("change"===a.type){var c=e.val();m(b);l(b,c)}if("keyup"===a.type&&27===a.keyCode||"focusout"===a.type){m(b)}})},r=function(b,f){var g,j=a("<select></select>").attr("id",n("id_inplacevalue_",20)).addClass("form-autocomplete-original-select").addClass("custom-select"),o=a("<label class=\"accesshide\">"+k.attr("data-editlabel")+"</label>").attr("for",j.attr("id")),p=f.options,q=f.attributes,r=a("<a href=\"#\"></a>"),s=a("<a href=\"#\"></a>");for(g in p){j.append(a("<option>").attr("value",p[g].key).html(p[g].value))}if(q.multiple){j.attr("multiple","true")}j.val(JSON.parse(b.attr("data-value")));e.get_string("savechanges","core").then(function(a){return c.renderPix("e/save","core",a)}).then(function(a){r.append(a)}).fail(d.exception);e.get_string("cancel","core").then(function(a){return c.renderPix("e/cancel","core",a)}).then(function(a){s.append(a)}).fail(d.exception);b.html("").append(o).append(j).append(r).append(s);j.focus();j.select();h.enhance(j,q.tags,q.ajax,q.placeholder,q.caseSensitive,q.showSuggestions,q.noSelectionString).then(function(){b.find("[role=combobox]").focus()}).fail(d.exception);j.on("keyup",function(a){if("keyup"===a.type&&27===a.keyCode||"focusout"===a.type){m(b)}});r.on("click",function(a){var c=JSON.stringify(j.val());j.empty();m(b);l(b,c);a.preventDefault()});s.on("click",function(a){j.empty();m(b);a.preventDefault()})};(function turnEditingOffEverywhere(){a("span.inplaceeditable.inplaceeditingon").each(function(){m(a(this))})})();(function turnEditingOn(b){b.addClass("inplaceeditingon");b.attr("data-oldcontent",b.html());var c=b.attr("data-type"),d=b.attr("data-options");if("toggle"===c){p(b,d)}else if("select"===c){q(b,a.parseJSON(d))}else if("autocomplete"===c){r(b,a.parseJSON(d))}else{o(b)}})(k);g.resolve()});return{getInplaceEditable:function getInplaceEditable(b){var c=b.querySelector("[data-inplaceeditable]");if(!c){return}return{element:c,getValue:function getValue(){return this.element.dataset.value},setValue:function setValue(b){l(a(this.element),b,!0)},getItemId:function getItemId(){return this.element.dataset.itemid}}}}});
|
|
//# sourceMappingURL=inplace_editable.min.js.map
|