From 244d304b6e3d9466137477aa6c4ac909210fb620 Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Fri, 6 Aug 2021 13:24:57 +0100 Subject: [PATCH] MDL-72291 output: emit native events from inplace editable element. 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. --- lib/amd/build/inplace_editable.min.js | 2 +- lib/amd/build/inplace_editable.min.js.map | 2 +- .../local/inplace_editable/events.min.js | 2 + .../local/inplace_editable/events.min.js.map | 1 + lib/amd/src/inplace_editable.js | 21 ++- lib/amd/src/local/inplace_editable/events.js | 126 ++++++++++++++++++ lib/upgrade.txt | 2 + 7 files changed, 142 insertions(+), 14 deletions(-) create mode 100644 lib/amd/build/local/inplace_editable/events.min.js create mode 100644 lib/amd/build/local/inplace_editable/events.min.js.map create mode 100644 lib/amd/src/local/inplace_editable/events.js diff --git a/lib/amd/build/inplace_editable.min.js b/lib/amd/build/inplace_editable.min.js index f0bc8b9d0bc..678a21a8d7c 100644 --- a/lib/amd/build/inplace_editable.min.js +++ b/lib/amd/build/inplace_editable.min.js @@ -1,2 +1,2 @@ -define ("core/inplace_editable",["jquery","core/ajax","core/templates","core/notification","core/str","core/config","core/url","core/form-autocomplete","core/pending"],function(a,b,c,d,e,f,g,h,i){var j=function(a){a.removeClass("updating");a.find("img.spinner").hide()},k=function(f,g,h){var k=[f.attr("data-itemid"),f.attr("data-component"),f.attr("data-itemtype")].join("-"),m=new i(k);l(f);b.call([{methodname:"core_update_inplace_editable",args:{itemid:f.attr("data-itemid"),component:f.attr("data-component"),itemtype:f.attr("data-itemtype"),value:g}}])[0].then(function(b){return c.render("core/inplace_editable",b).then(function(d,e){var g=f.attr("data-value"),i=a(d);c.replaceNode(f,i,e);if(!h){i.find("[data-inplaceeditablelink]").focus()}i.trigger({type:"updated",ajaxreturn:b,oldvalue:g})})}).then(function(){return m.resolve()}).fail(function(b){var c=a.Event("updatefailed",{exception:b,newvalue:g});j(f);M.util.js_complete(k);f.trigger(c);if(!c.isDefaultPrevented()){d.exception(b)}})},l=function(b){b.addClass("updating");var c=b.find("img.spinner");if(c.length){c.show()}else{c=a("").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),l=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+"").attr("id",n("id_editinstructions_",20)),e=a("").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("").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);k(b,c)}if("keyup"===a.type&&27===a.keyCode||"focusout"===a.type){m(b)}})})},p=function(a,b){m(a);k(a,b)},q=function(b,c){var d,e=a("").attr("id",n("id_inplacevalue_",20)).addClass("custom-select"),g=a("").attr("for",e.attr("id"));for(d in c){e.append(a("