Current Path : /var/www/ljmtc/cbt/lib/amd/build/ |
Current File : /var/www/ljmtc/cbt/lib/amd/build/inplace_editable.min.js.map |
{"version":3,"sources":["../src/inplace_editable.js"],"names":["define","$","ajax","templates","notification","str","cfg","url","autocomplete","Pending","on","e","type","keyCode","editingEnabledPromise","stopImmediatePropagation","preventDefault","target","mainelement","closest","addSpinner","element","addClass","spinner","find","length","show","attr","imageUrl","append","removeSpinner","removeClass","hide","updateValue","value","pendingId","join","pendingPromise","call","methodname","args","itemid","component","itemtype","then","data","render","html","js","oldvalue","newelement","replaceNode","focus","trigger","ajaxreturn","resolve","fail","ex","Event","exception","newvalue","M","util","js_complete","isDefaultPrevented","turnEditingOff","el","off","removeAttr","uniqueId","prefix","idlength","uniqid","i","Math","floor","random","turnEditingOnText","get_string","done","s","instr","inputelement","lbl","select","behatsiterunning","val","turnEditingOnToggle","turnEditingOnSelect","options","key","turnEditingOnAutocomplete","attributes","saveelement","cancelelement","multiple","JSON","parse","renderPix","enhance","tags","placeholder","caseSensitive","showSuggestions","noSelectionString","stringify","empty","turnEditingOffEverywhere","each","turnEditingOn","parseJSON"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * AJAX helper for the inline editing a value.\n *\n * This script is automatically included from template core/inplace_editable\n * It registers a click-listener on [data-inplaceeditablelink] link (the \"inplace edit\" icon),\n * then replaces the displayed value with an input field. On \"Enter\" it sends a request\n * to web service core_update_inplace_editable, which invokes the specified callback.\n * Any exception thrown by the web service (or callback) is displayed as an error popup.\n *\n * @module core/inplace_editable\n * @package core\n * @copyright 2016 Marina Glancy\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 3.1\n */\ndefine(['jquery',\n 'core/ajax',\n 'core/templates',\n 'core/notification',\n 'core/str',\n 'core/config',\n 'core/url',\n 'core/form-autocomplete',\n 'core/pending',\n ],\n function($, ajax, templates, notification, str, cfg, url, autocomplete, Pending) {\n\n $('body').on('click keypress', '[data-inplaceeditable] [data-inplaceeditablelink]', function(e) {\n if (e.type === 'keypress' && e.keyCode !== 13) {\n return;\n }\n var editingEnabledPromise = new Pending('autocomplete-start-editing');\n e.stopImmediatePropagation();\n e.preventDefault();\n var target = $(this),\n mainelement = target.closest('[data-inplaceeditable]');\n\n var addSpinner = function(element) {\n element.addClass('updating');\n var spinner = element.find('img.spinner');\n if (spinner.length) {\n spinner.show();\n } else {\n spinner = $('<img/>')\n .attr('src', url.imageUrl('i/loading_small'))\n .addClass('spinner').addClass('smallicon')\n ;\n element.append(spinner);\n }\n };\n\n var removeSpinner = function(element) {\n element.removeClass('updating');\n element.find('img.spinner').hide();\n };\n\n var updateValue = function(mainelement, value) {\n var pendingId = [\n mainelement.attr('data-itemid'),\n mainelement.attr('data-component'),\n mainelement.attr('data-itemtype'),\n ].join('-');\n var pendingPromise = new Pending(pendingId);\n\n addSpinner(mainelement);\n ajax.call([{\n methodname: 'core_update_inplace_editable',\n args: {\n itemid: mainelement.attr('data-itemid'),\n component: mainelement.attr('data-component'),\n itemtype: mainelement.attr('data-itemtype'),\n value: value,\n },\n }])[0]\n .then(function(data) {\n return templates.render('core/inplace_editable', data)\n .then(function(html, js) {\n var oldvalue = mainelement.attr('data-value');\n var newelement = $(html);\n templates.replaceNode(mainelement, newelement, js);\n newelement.find('[data-inplaceeditablelink]').focus();\n newelement.trigger({\n type: 'updated',\n ajaxreturn: data,\n oldvalue: oldvalue,\n });\n\n return;\n });\n })\n .then(function() {\n return pendingPromise.resolve();\n })\n .fail(function(ex) {\n var e = $.Event('updatefailed', {\n exception: ex,\n newvalue: value\n });\n removeSpinner(mainelement);\n M.util.js_complete(pendingId);\n mainelement.trigger(e);\n if (!e.isDefaultPrevented()) {\n notification.exception(ex);\n }\n });\n };\n\n var turnEditingOff = function(el) {\n el.find('input').off();\n el.find('select').off();\n el.html(el.attr('data-oldcontent'));\n el.removeAttr('data-oldcontent');\n el.removeClass('inplaceeditingon');\n el.find('[data-inplaceeditablelink]').focus();\n };\n\n var turnEditingOffEverywhere = function() {\n $('span.inplaceeditable.inplaceeditingon').each(function() {\n turnEditingOff($(this));\n });\n };\n\n var uniqueId = function(prefix, idlength) {\n var uniqid = prefix,\n i;\n for (i = 0; i < idlength; i++) {\n uniqid += String(Math.floor(Math.random() * 10));\n }\n // Make sure this ID is not already taken by an existing element.\n if ($(\"#\" + uniqid).length === 0) {\n return uniqid;\n }\n return uniqueId(prefix, idlength);\n };\n\n var turnEditingOnText = function(el) {\n str.get_string('edittitleinstructions').done(function(s) {\n var instr = $('<span class=\"editinstructions\">' + s + '</span>').\n attr('id', uniqueId('id_editinstructions_', 20)),\n inputelement = $('<input type=\"text\"/>').\n attr('id', uniqueId('id_inplacevalue_', 20)).\n attr('value', el.attr('data-value')).\n attr('aria-describedby', instr.attr('id')).\n addClass('ignoredirty').\n addClass('form-control'),\n lbl = $('<label class=\"accesshide\">' + mainelement.attr('data-editlabel') + '</label>').\n attr('for', inputelement.attr('id'));\n el.html('').append(instr).append(lbl).append(inputelement);\n\n inputelement.focus();\n inputelement.select();\n inputelement.on('keyup keypress focusout', function(e) {\n if (cfg.behatsiterunning && e.type === 'focusout') {\n // Behat triggers focusout too often.\n return;\n }\n if (e.type === 'keypress' && e.keyCode === 13) {\n // We need 'keypress' event for Enter because keyup/keydown would catch Enter that was\n // pressed in other fields.\n var val = inputelement.val();\n turnEditingOff(el);\n updateValue(el, val);\n }\n if ((e.type === 'keyup' && e.keyCode === 27) || e.type === 'focusout') {\n // We need 'keyup' event for Escape because keypress does not work with Escape.\n turnEditingOff(el);\n }\n });\n });\n };\n\n var turnEditingOnToggle = function(el, newvalue) {\n turnEditingOff(el);\n updateValue(el, newvalue);\n };\n\n var turnEditingOnSelect = function(el, options) {\n var i,\n inputelement = $('<select></select>').\n attr('id', uniqueId('id_inplacevalue_', 20)).\n addClass('custom-select'),\n lbl = $('<label class=\"accesshide\">' + mainelement.attr('data-editlabel') + '</label>')\n .attr('for', inputelement.attr('id'));\n for (i in options) {\n inputelement\n .append($('<option>')\n .attr('value', options[i].key)\n .html(options[i].value));\n }\n inputelement.val(el.attr('data-value'));\n\n el.html('')\n .append(lbl)\n .append(inputelement);\n\n inputelement.focus();\n inputelement.select();\n inputelement.on('keyup change focusout', function(e) {\n if (cfg.behatsiterunning && e.type === 'focusout') {\n // Behat triggers focusout too often.\n return;\n }\n if (e.type === 'change') {\n var val = inputelement.val();\n turnEditingOff(el);\n updateValue(el, val);\n }\n if ((e.type === 'keyup' && e.keyCode === 27) || e.type === 'focusout') {\n // We need 'keyup' event for Escape because keypress does not work with Escape.\n turnEditingOff(el);\n }\n });\n };\n\n var turnEditingOnAutocomplete = function(el, args) {\n var i,\n inputelement = $('<select></select>').\n attr('id', uniqueId('id_inplacevalue_', 20)).\n addClass('form-autocomplete-original-select').\n addClass('custom-select'),\n lbl = $('<label class=\"accesshide\">' + mainelement.attr('data-editlabel') + '</label>')\n .attr('for', inputelement.attr('id')),\n options = args.options,\n attributes = args.attributes,\n saveelement = $('<a href=\"#\"></a>'),\n cancelelement = $('<a href=\"#\"></a>');\n\n for (i in options) {\n inputelement\n .append($('<option>')\n .attr('value', options[i].key)\n .html(options[i].value));\n }\n if (attributes.multiple) {\n inputelement.attr('multiple', 'true');\n }\n inputelement.val(JSON.parse(el.attr('data-value')));\n\n str.get_string('savechanges', 'core').then(function(s) {\n return templates.renderPix('e/save', 'core', s);\n }).then(function(html) {\n saveelement.append(html);\n return;\n }).fail(notification.exception);\n\n str.get_string('cancel', 'core').then(function(s) {\n return templates.renderPix('e/cancel', 'core', s);\n }).then(function(html) {\n cancelelement.append(html);\n return;\n }).fail(notification.exception);\n\n el.html('')\n .append(lbl)\n .append(inputelement)\n .append(saveelement)\n .append(cancelelement);\n\n inputelement.focus();\n inputelement.select();\n autocomplete.enhance(inputelement,\n attributes.tags,\n attributes.ajax,\n attributes.placeholder,\n attributes.caseSensitive,\n attributes.showSuggestions,\n attributes.noSelectionString)\n .then(function() {\n // Focus on the enhanced combobox.\n el.find('[role=combobox]').focus();\n // Stop eslint nagging.\n return;\n }).fail(notification.exception);\n\n inputelement.on('keyup', function(e) {\n if ((e.type === 'keyup' && e.keyCode === 27) || e.type === 'focusout') {\n // We need 'keyup' event for Escape because keypress does not work with Escape.\n turnEditingOff(el);\n }\n });\n saveelement.on('click', function(e) {\n var val = JSON.stringify(inputelement.val());\n // We need to empty the node to destroy all event handlers etc.\n inputelement.empty();\n turnEditingOff(el);\n updateValue(el, val);\n e.preventDefault();\n });\n cancelelement.on('click', function(e) {\n // We need to empty the node to destroy all event handlers etc.\n inputelement.empty();\n turnEditingOff(el);\n e.preventDefault();\n });\n };\n\n var turnEditingOn = function(el) {\n el.addClass('inplaceeditingon');\n el.attr('data-oldcontent', el.html());\n\n var type = el.attr('data-type');\n var options = el.attr('data-options');\n\n if (type === 'toggle') {\n turnEditingOnToggle(el, options);\n } else if (type === 'select') {\n turnEditingOnSelect(el, $.parseJSON(options));\n } else if (type === 'autocomplete') {\n turnEditingOnAutocomplete(el, $.parseJSON(options));\n } else {\n turnEditingOnText(el);\n }\n };\n\n // Turn editing on for the current element and register handler for Enter/Esc keys.\n turnEditingOffEverywhere();\n turnEditingOn(mainelement);\n editingEnabledPromise.resolve();\n\n });\n\n return {};\n});\n"],"file":"inplace_editable.min.js"}