diff --git a/mod/feedback/amd/build/edit.min.js b/mod/feedback/amd/build/edit.min.js index 697a7d357c6..d449e2278f1 100644 --- a/mod/feedback/amd/build/edit.min.js +++ b/mod/feedback/amd/build/edit.min.js @@ -1,3 +1,3 @@ -define("mod_feedback/edit",["exports","core/loadingicon","core/notification","core/pending","core/prefetch","core/sortable_list","core/str","core/toast","mod_feedback/local/repository","core/templates"],(function(_exports,_loadingicon,_notification,_pending,_prefetch,_sortable_list,_str,_toast,_repository,_templates){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_notification=_interopRequireDefault(_notification),_pending=_interopRequireDefault(_pending),_sortable_list=_interopRequireDefault(_sortable_list),_templates=_interopRequireDefault(_templates);const Selectors_deleteQuestionButton='[data-action="delete"]',Selectors_sortableListRegion='[data-region="questions-sortable-list"]',Selectors_sortableElement='[data-region="questions-sortable-list"] .feedback_itemlist[id]',Selectors_sortableElementTitle='[data-region="item-title"] span',Selectors_questionLabel='[data-region="questions-sortable-list"] .col-form-label',Selectors_actionsMenuData="[data-item-actions-menu]",getItemOrder=element=>{const sortableList=element.closest(Selectors_sortableListRegion);let itemOrder=[];return sortableList.querySelectorAll(Selectors_sortableElement).forEach((item=>{var id;itemOrder.push((id=item.id,Number(id.replace(/^.*feedback_item_/i,""))))})),itemOrder.toString()};let initialized=!1,moduleId=null;_exports.init=async cmId=>{if(moduleId=cmId,initialized)return;(0,_prefetch.prefetchStrings)("core",["yes","no"]),(0,_prefetch.prefetchStrings)("admin",["confirmation"]),(0,_prefetch.prefetchStrings)("mod_feedback",["confirmdeleteitem","questionmoved","move_item"]),await enhanceEditForm(),document.addEventListener("click",(async event=>{const deleteButton=event.target.closest(Selectors_deleteQuestionButton);if(deleteButton){event.preventDefault();const confirmationStrings=await(0,_str.getStrings)([{key:"confirmation",component:"admin"},{key:"confirmdeleteitem",component:"mod_feedback"},{key:"yes",component:"core"},{key:"no",component:"core"}]);_notification.default.confirm(...confirmationStrings,(()=>{window.location=deleteButton.getAttribute("href")}))}else;}));new _sortable_list.default(document.querySelector(Selectors_sortableListRegion)).getElementName=element=>{var _element$0$querySelec;return Promise.resolve(null===(_element$0$querySelec=element[0].querySelector(Selectors_sortableElementTitle))||void 0===_element$0$querySelec?void 0:_element$0$querySelec.textContent)},document.addEventListener(_sortable_list.default.EVENTS.elementDrop,(event=>{if(!event.detail.positionChanged)return;const pendingPromise=new _pending.default("mod_feedback/questions:reorder"),itemOrder=getItemOrder(event.detail.element[0]);(0,_loadingicon.addIconToContainerRemoveOnCompletion)(event.detail.element[0],pendingPromise),(0,_repository.reorderQuestions)(moduleId,itemOrder).then((()=>(0,_str.getString)("questionmoved","mod_feedback"))).then(_toast.add).then((()=>pendingPromise.resolve())).catch(_notification.default.exception)})),initialized=!0};const enhanceEditForm=async()=>{const questionLabels=document.querySelectorAll(Selectors_questionLabel),movetitle=await(0,_str.getString)("move_item","mod_feedback"),updates=Array.from(questionLabels).map((async container=>{const label=container.querySelector(Selectors_actionsMenuData);if(label)try{const contextData={movetitle:movetitle,label:label.parentElement.outerHTML,actionsmenu:JSON.parse(label.dataset.itemActionsMenu||"{}")};container.innerHTML=await _templates.default.render("mod_feedback/item_edit_enhanced_title",contextData)}catch(error){await _notification.default.exception(error)}}));await Promise.all(updates)}})); +define("mod_feedback/edit",["exports","jquery","core/loadingicon","core/notification","core/pending","core/prefetch","core/sortable_list","core/str","core/toast","mod_feedback/local/repository","core/templates"],(function(_exports,_jquery,_loadingicon,_notification,_pending,_prefetch,_sortable_list,_str,_toast,_repository,_templates){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_jquery=_interopRequireDefault(_jquery),_notification=_interopRequireDefault(_notification),_pending=_interopRequireDefault(_pending),_sortable_list=_interopRequireDefault(_sortable_list),_templates=_interopRequireDefault(_templates);const Selectors_deleteQuestionButton='[data-action="delete"]',Selectors_sortableListRegion='[data-region="questions-sortable-list"]',Selectors_sortableElement='[data-region="questions-sortable-list"] .feedback_itemlist[id]',Selectors_sortableElementTitle='[data-region="item-title"] span',Selectors_questionLabel='[data-region="questions-sortable-list"] .col-form-label',Selectors_actionsMenuData="[data-item-actions-menu]",getItemOrder=element=>{const sortableList=element.closest(Selectors_sortableListRegion);let itemOrder=[];return sortableList.querySelectorAll(Selectors_sortableElement).forEach((item=>{var id;itemOrder.push((id=item.id,Number(id.replace(/^.*feedback_item_/i,""))))})),itemOrder.toString()};let initialized=!1,moduleId=null;_exports.init=async cmId=>{if(moduleId=cmId,initialized)return;(0,_prefetch.prefetchStrings)("core",["yes","no"]),(0,_prefetch.prefetchStrings)("admin",["confirmation"]),(0,_prefetch.prefetchStrings)("mod_feedback",["confirmdeleteitem","questionmoved","move_item"]),await enhanceEditForm(),document.addEventListener("click",(async event=>{const deleteButton=event.target.closest(Selectors_deleteQuestionButton);if(deleteButton){event.preventDefault();const confirmationStrings=await(0,_str.getStrings)([{key:"confirmation",component:"admin"},{key:"confirmdeleteitem",component:"mod_feedback"},{key:"yes",component:"core"},{key:"no",component:"core"}]);_notification.default.confirm(...confirmationStrings,(()=>{window.location=deleteButton.getAttribute("href")}))}else;}));new _sortable_list.default(document.querySelector(Selectors_sortableListRegion)).getElementName=element=>{var _element$0$querySelec;return Promise.resolve(null===(_element$0$querySelec=element[0].querySelector(Selectors_sortableElementTitle))||void 0===_element$0$querySelec?void 0:_element$0$querySelec.textContent)},(0,_jquery.default)(Selectors_sortableListRegion).on(_sortable_list.default.EVENTS.DROP,((event,info)=>{if(!info.positionChanged)return;const pendingPromise=new _pending.default("mod_feedback/questions:reorder"),itemOrder=getItemOrder(info.element[0]);(0,_loadingicon.addIconToContainerRemoveOnCompletion)(info.element[0],pendingPromise),(0,_repository.reorderQuestions)(moduleId,itemOrder).then((()=>(0,_str.getString)("questionmoved","mod_feedback"))).then(_toast.add).then((()=>pendingPromise.resolve())).catch(_notification.default.exception)})),initialized=!0};const enhanceEditForm=async()=>{const questionLabels=document.querySelectorAll(Selectors_questionLabel),movetitle=await(0,_str.getString)("move_item","mod_feedback"),updates=Array.from(questionLabels).map((async container=>{const label=container.querySelector(Selectors_actionsMenuData);if(label)try{const contextData={movetitle:movetitle,label:label.parentElement.outerHTML,actionsmenu:JSON.parse(label.dataset.itemActionsMenu||"{}")};container.innerHTML=await _templates.default.render("mod_feedback/item_edit_enhanced_title",contextData)}catch(error){await _notification.default.exception(error)}}));await Promise.all(updates)}})); //# sourceMappingURL=edit.min.js.map \ No newline at end of file diff --git a/mod/feedback/amd/build/edit.min.js.map b/mod/feedback/amd/build/edit.min.js.map index 5f0937ab3f1..a69adeedc0a 100644 --- a/mod/feedback/amd/build/edit.min.js.map +++ b/mod/feedback/amd/build/edit.min.js.map @@ -1 +1 @@ -{"version":3,"file":"edit.min.js","sources":["../src/edit.js"],"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 .\n\n/**\n * Edit items in feedback module\n *\n * @module mod_feedback/edit\n * @copyright 2016 Marina Glancy\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport {addIconToContainerRemoveOnCompletion} from 'core/loadingicon';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport SortableList from 'core/sortable_list';\nimport {getString, getStrings} from 'core/str';\nimport {add as addToast} from 'core/toast';\nimport {reorderQuestions} from 'mod_feedback/local/repository';\nimport Templates from 'core/templates';\n\nconst Selectors = {\n deleteQuestionButton: '[data-action=\"delete\"]',\n sortableListRegion: '[data-region=\"questions-sortable-list\"]',\n sortableElement: '[data-region=\"questions-sortable-list\"] .feedback_itemlist[id]',\n sortableElementTitle: '[data-region=\"item-title\"] span',\n questionLabel: '[data-region=\"questions-sortable-list\"] .col-form-label',\n actionsMenuData: '[data-item-actions-menu]',\n};\n\n/**\n * Returns the Feedback question item id from the DOM id of an item.\n *\n * @param {String} id The dom id, f.g.: feedback_item_22\n * @return int\n */\nconst getItemId = (id) => {\n return Number(id.replace(/^.*feedback_item_/i, ''));\n};\n\n/**\n * Returns the order of the items in the sortable list.\n *\n * @param {Element} element The element to get the order from.\n * @return string\n */\nconst getItemOrder = (element) => {\n const sortableList = element.closest(Selectors.sortableListRegion);\n let itemOrder = [];\n sortableList.querySelectorAll(Selectors.sortableElement).forEach((item) => {\n itemOrder.push(getItemId(item.id));\n });\n return itemOrder.toString();\n};\n\nlet initialized = false;\nlet moduleId = null;\n\n/**\n * Initialise editor and all it's modules\n *\n * @param {Integer} cmId\n */\nexport const init = async(cmId) => {\n\n moduleId = cmId;\n\n // Ensure we only add our listeners once (can be called multiple times).\n if (initialized) {\n return;\n }\n\n prefetchStrings('core', [\n 'yes',\n 'no',\n ]);\n prefetchStrings('admin', [\n 'confirmation',\n ]);\n prefetchStrings('mod_feedback', [\n 'confirmdeleteitem',\n 'questionmoved',\n 'move_item',\n ]);\n\n await enhanceEditForm();\n\n // Add event listeners.\n document.addEventListener('click', async event => {\n\n // Delete question.\n const deleteButton = event.target.closest(Selectors.deleteQuestionButton);\n if (deleteButton) {\n event.preventDefault();\n const confirmationStrings = await getStrings([\n {key: 'confirmation', component: 'admin'},\n {key: 'confirmdeleteitem', component: 'mod_feedback'},\n {key: 'yes', component: 'core'},\n {key: 'no', component: 'core'},\n ]);\n Notification.confirm(...confirmationStrings, () => {\n window.location = deleteButton.getAttribute('href');\n });\n return;\n }\n });\n\n // Initialize sortable list to handle active conditions moving.\n const sortableList = new SortableList(document.querySelector(Selectors.sortableListRegion));\n sortableList.getElementName = element => Promise.resolve(element[0].querySelector(Selectors.sortableElementTitle)?.textContent);\n\n document.addEventListener(SortableList.EVENTS.elementDrop, event => {\n if (!event.detail.positionChanged) {\n return;\n }\n const pendingPromise = new Pending('mod_feedback/questions:reorder');\n const itemOrder = getItemOrder(event.detail.element[0]);\n addIconToContainerRemoveOnCompletion(event.detail.element[0], pendingPromise);\n reorderQuestions(moduleId, itemOrder)\n .then(() => getString('questionmoved', 'mod_feedback'))\n .then(addToast)\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n });\n\n initialized = true;\n};\n\n/**\n * Enhance the edit form by adding a move item button and an action menu to each question.\n *\n * @returns {Promise}\n */\nconst enhanceEditForm = async() => {\n const questionLabels = document.querySelectorAll(Selectors.questionLabel);\n const movetitle = await getString('move_item', 'mod_feedback');\n\n const updates = Array.from(questionLabels).map(async(container) => {\n const label = container.querySelector(Selectors.actionsMenuData);\n if (!label) {\n return;\n }\n\n try {\n const contextData = {\n movetitle,\n label: label.parentElement.outerHTML,\n actionsmenu: JSON.parse(label.dataset.itemActionsMenu || '{}'),\n };\n container.innerHTML = await Templates.render('mod_feedback/item_edit_enhanced_title', contextData);\n } catch (error) {\n await Notification.exception(error);\n }\n });\n await Promise.all(updates);\n};\n"],"names":["Selectors","getItemOrder","element","sortableList","closest","itemOrder","querySelectorAll","forEach","item","id","push","Number","replace","toString","initialized","moduleId","async","cmId","enhanceEditForm","document","addEventListener","deleteButton","event","target","preventDefault","confirmationStrings","key","component","confirm","window","location","getAttribute","SortableList","querySelector","getElementName","Promise","resolve","_element$0$querySelec","textContent","EVENTS","elementDrop","detail","positionChanged","pendingPromise","Pending","then","addToast","catch","Notification","exception","questionLabels","movetitle","updates","Array","from","map","label","container","contextData","parentElement","outerHTML","actionsmenu","JSON","parse","dataset","itemActionsMenu","innerHTML","Templates","render","error","all"],"mappings":"sqBAmCMA,+BACoB,yBADpBA,6BAEkB,0CAFlBA,0BAGe,iEAHfA,+BAIoB,kCAJpBA,wBAKa,0DALbA,0BAMe,2BAmBfC,aAAgBC,gBACZC,aAAeD,QAAQE,QAAQJ,kCACjCK,UAAY,UAChBF,aAAaG,iBAAiBN,2BAA2BO,SAASC,OAbnDC,IAAAA,GAcXJ,UAAUK,MAdCD,GAccD,KAAKC,GAb3BE,OAAOF,GAAGG,QAAQ,qBAAsB,UAexCP,UAAUQ,gBAGjBC,aAAc,EACdC,SAAW,mBAOKC,MAAAA,UAEhBD,SAAWE,KAGPH,iDAIY,OAAQ,CACpB,MACA,qCAEY,QAAS,CACrB,+CAEY,eAAgB,CAC5B,oBACA,gBACA,oBAGEI,kBAGNC,SAASC,iBAAiB,SAASJ,MAAAA,cAGzBK,aAAeC,MAAMC,OAAOnB,QAAQJ,mCACtCqB,cACAC,MAAME,uBACAC,0BAA4B,mBAAW,CACzC,CAACC,IAAK,eAAgBC,UAAW,SACjC,CAACD,IAAK,oBAAqBC,UAAW,gBACtC,CAACD,IAAK,MAAOC,UAAW,QACxB,CAACD,IAAK,KAAMC,UAAW,gCAEdC,WAAWH,qBAAqB,KACzCI,OAAOC,SAAWT,aAAaU,aAAa,oBAOnC,IAAIC,uBAAab,SAASc,cAAcjC,+BAChDkC,eAAiBhC,2CAAWiC,QAAQC,sCAAQlC,QAAQ,GAAG+B,cAAcjC,wEAAzBqC,sBAA0DC,cAEnHnB,SAASC,iBAAiBY,uBAAaO,OAAOC,aAAalB,YAClDA,MAAMmB,OAAOC,6BAGZC,eAAiB,IAAIC,iBAAQ,kCAC7BvC,UAAYJ,aAAaqB,MAAMmB,OAAOvC,QAAQ,0DACfoB,MAAMmB,OAAOvC,QAAQ,GAAIyC,iDAC7C5B,SAAUV,WACtBwC,MAAK,KAAM,kBAAU,gBAAiB,kBACtCA,KAAKC,YACLD,MAAK,IAAMF,eAAeP,YAC1BW,MAAMC,sBAAaC,cAG5BnC,aAAc,SAQZI,gBAAkBF,gBACdkC,eAAiB/B,SAASb,iBAAiBN,yBAC3CmD,gBAAkB,kBAAU,YAAa,gBAEzCC,QAAUC,MAAMC,KAAKJ,gBAAgBK,KAAIvC,MAAAA,kBACrCwC,MAAQC,UAAUxB,cAAcjC,8BACjCwD,gBAKKE,YAAc,CAChBP,UAAAA,UACAK,MAAOA,MAAMG,cAAcC,UAC3BC,YAAaC,KAAKC,MAAMP,MAAMQ,QAAQC,iBAAmB,OAE7DR,UAAUS,gBAAkBC,mBAAUC,OAAO,wCAAyCV,aACxF,MAAOW,aACCrB,sBAAaC,UAAUoB,iBAG/BlC,QAAQmC,IAAIlB"} \ No newline at end of file +{"version":3,"file":"edit.min.js","sources":["../src/edit.js"],"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 .\n\n/**\n * Edit items in feedback module\n *\n * @module mod_feedback/edit\n * @copyright 2016 Marina Glancy\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n\"use strict\";\n\nimport $ from 'jquery';\nimport {addIconToContainerRemoveOnCompletion} from 'core/loadingicon';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {prefetchStrings} from 'core/prefetch';\nimport SortableList from 'core/sortable_list';\nimport {getString, getStrings} from 'core/str';\nimport {add as addToast} from 'core/toast';\nimport {reorderQuestions} from 'mod_feedback/local/repository';\nimport Templates from 'core/templates';\n\nconst Selectors = {\n deleteQuestionButton: '[data-action=\"delete\"]',\n sortableListRegion: '[data-region=\"questions-sortable-list\"]',\n sortableElement: '[data-region=\"questions-sortable-list\"] .feedback_itemlist[id]',\n sortableElementTitle: '[data-region=\"item-title\"] span',\n questionLabel: '[data-region=\"questions-sortable-list\"] .col-form-label',\n actionsMenuData: '[data-item-actions-menu]',\n};\n\n/**\n * Returns the Feedback question item id from the DOM id of an item.\n *\n * @param {String} id The dom id, f.g.: feedback_item_22\n * @return int\n */\nconst getItemId = (id) => {\n return Number(id.replace(/^.*feedback_item_/i, ''));\n};\n\n/**\n * Returns the order of the items in the sortable list.\n *\n * @param {Element} element The element to get the order from.\n * @return string\n */\nconst getItemOrder = (element) => {\n const sortableList = element.closest(Selectors.sortableListRegion);\n let itemOrder = [];\n sortableList.querySelectorAll(Selectors.sortableElement).forEach((item) => {\n itemOrder.push(getItemId(item.id));\n });\n return itemOrder.toString();\n};\n\nlet initialized = false;\nlet moduleId = null;\n\n/**\n * Initialise editor and all it's modules\n *\n * @param {Integer} cmId\n */\nexport const init = async(cmId) => {\n\n moduleId = cmId;\n\n // Ensure we only add our listeners once (can be called multiple times).\n if (initialized) {\n return;\n }\n\n prefetchStrings('core', [\n 'yes',\n 'no',\n ]);\n prefetchStrings('admin', [\n 'confirmation',\n ]);\n prefetchStrings('mod_feedback', [\n 'confirmdeleteitem',\n 'questionmoved',\n 'move_item',\n ]);\n\n await enhanceEditForm();\n\n // Add event listeners.\n document.addEventListener('click', async event => {\n\n // Delete question.\n const deleteButton = event.target.closest(Selectors.deleteQuestionButton);\n if (deleteButton) {\n event.preventDefault();\n const confirmationStrings = await getStrings([\n {key: 'confirmation', component: 'admin'},\n {key: 'confirmdeleteitem', component: 'mod_feedback'},\n {key: 'yes', component: 'core'},\n {key: 'no', component: 'core'},\n ]);\n Notification.confirm(...confirmationStrings, () => {\n window.location = deleteButton.getAttribute('href');\n });\n return;\n }\n });\n\n // Initialize sortable list to handle active conditions moving.\n const sortableList = new SortableList(document.querySelector(Selectors.sortableListRegion));\n sortableList.getElementName = element => Promise.resolve(element[0].querySelector(Selectors.sortableElementTitle)?.textContent);\n\n $(Selectors.sortableListRegion).on(SortableList.EVENTS.DROP, (event, info) => {\n if (!info.positionChanged) {\n return;\n }\n const pendingPromise = new Pending('mod_feedback/questions:reorder');\n const itemOrder = getItemOrder(info.element[0]);\n addIconToContainerRemoveOnCompletion(info.element[0], pendingPromise);\n reorderQuestions(moduleId, itemOrder)\n .then(() => getString('questionmoved', 'mod_feedback'))\n .then(addToast)\n .then(() => pendingPromise.resolve())\n .catch(Notification.exception);\n });\n\n initialized = true;\n};\n\n/**\n * Enhance the edit form by adding a move item button and an action menu to each question.\n *\n * @returns {Promise}\n */\nconst enhanceEditForm = async() => {\n const questionLabels = document.querySelectorAll(Selectors.questionLabel);\n const movetitle = await getString('move_item', 'mod_feedback');\n\n const updates = Array.from(questionLabels).map(async(container) => {\n const label = container.querySelector(Selectors.actionsMenuData);\n if (!label) {\n return;\n }\n\n try {\n const contextData = {\n movetitle,\n label: label.parentElement.outerHTML,\n actionsmenu: JSON.parse(label.dataset.itemActionsMenu || '{}'),\n };\n container.innerHTML = await Templates.render('mod_feedback/item_edit_enhanced_title', contextData);\n } catch (error) {\n await Notification.exception(error);\n }\n });\n await Promise.all(updates);\n};\n"],"names":["Selectors","getItemOrder","element","sortableList","closest","itemOrder","querySelectorAll","forEach","item","id","push","Number","replace","toString","initialized","moduleId","async","cmId","enhanceEditForm","document","addEventListener","deleteButton","event","target","preventDefault","confirmationStrings","key","component","confirm","window","location","getAttribute","SortableList","querySelector","getElementName","Promise","resolve","_element$0$querySelec","textContent","on","EVENTS","DROP","info","positionChanged","pendingPromise","Pending","then","addToast","catch","Notification","exception","questionLabels","movetitle","updates","Array","from","map","label","container","contextData","parentElement","outerHTML","actionsmenu","JSON","parse","dataset","itemActionsMenu","innerHTML","Templates","render","error","all"],"mappings":"+tBAoCMA,+BACoB,yBADpBA,6BAEkB,0CAFlBA,0BAGe,iEAHfA,+BAIoB,kCAJpBA,wBAKa,0DALbA,0BAMe,2BAmBfC,aAAgBC,gBACZC,aAAeD,QAAQE,QAAQJ,kCACjCK,UAAY,UAChBF,aAAaG,iBAAiBN,2BAA2BO,SAASC,OAbnDC,IAAAA,GAcXJ,UAAUK,MAdCD,GAccD,KAAKC,GAb3BE,OAAOF,GAAGG,QAAQ,qBAAsB,UAexCP,UAAUQ,gBAGjBC,aAAc,EACdC,SAAW,mBAOKC,MAAAA,UAEhBD,SAAWE,KAGPH,iDAIY,OAAQ,CACpB,MACA,qCAEY,QAAS,CACrB,+CAEY,eAAgB,CAC5B,oBACA,gBACA,oBAGEI,kBAGNC,SAASC,iBAAiB,SAASJ,MAAAA,cAGzBK,aAAeC,MAAMC,OAAOnB,QAAQJ,mCACtCqB,cACAC,MAAME,uBACAC,0BAA4B,mBAAW,CACzC,CAACC,IAAK,eAAgBC,UAAW,SACjC,CAACD,IAAK,oBAAqBC,UAAW,gBACtC,CAACD,IAAK,MAAOC,UAAW,QACxB,CAACD,IAAK,KAAMC,UAAW,gCAEdC,WAAWH,qBAAqB,KACzCI,OAAOC,SAAWT,aAAaU,aAAa,oBAOnC,IAAIC,uBAAab,SAASc,cAAcjC,+BAChDkC,eAAiBhC,2CAAWiC,QAAQC,sCAAQlC,QAAQ,GAAG+B,cAAcjC,wEAAzBqC,sBAA0DC,kCAEjHtC,8BAA8BuC,GAAGP,uBAAaQ,OAAOC,MAAM,CAACnB,MAAOoB,YAC5DA,KAAKC,6BAGJC,eAAiB,IAAIC,iBAAQ,kCAC7BxC,UAAYJ,aAAayC,KAAKxC,QAAQ,0DACPwC,KAAKxC,QAAQ,GAAI0C,iDACrC7B,SAAUV,WACtByC,MAAK,KAAM,kBAAU,gBAAiB,kBACtCA,KAAKC,YACLD,MAAK,IAAMF,eAAeR,YAC1BY,MAAMC,sBAAaC,cAG5BpC,aAAc,SAQZI,gBAAkBF,gBACdmC,eAAiBhC,SAASb,iBAAiBN,yBAC3CoD,gBAAkB,kBAAU,YAAa,gBAEzCC,QAAUC,MAAMC,KAAKJ,gBAAgBK,KAAIxC,MAAAA,kBACrCyC,MAAQC,UAAUzB,cAAcjC,8BACjCyD,gBAKKE,YAAc,CAChBP,UAAAA,UACAK,MAAOA,MAAMG,cAAcC,UAC3BC,YAAaC,KAAKC,MAAMP,MAAMQ,QAAQC,iBAAmB,OAE7DR,UAAUS,gBAAkBC,mBAAUC,OAAO,wCAAyCV,aACxF,MAAOW,aACCrB,sBAAaC,UAAUoB,iBAG/BnC,QAAQoC,IAAIlB"} \ No newline at end of file diff --git a/mod/feedback/amd/src/edit.js b/mod/feedback/amd/src/edit.js index faacbdd65ed..85d972494b9 100644 --- a/mod/feedback/amd/src/edit.js +++ b/mod/feedback/amd/src/edit.js @@ -23,6 +23,7 @@ "use strict"; +import $ from 'jquery'; import {addIconToContainerRemoveOnCompletion} from 'core/loadingicon'; import Notification from 'core/notification'; import Pending from 'core/pending'; @@ -123,13 +124,13 @@ export const init = async(cmId) => { const sortableList = new SortableList(document.querySelector(Selectors.sortableListRegion)); sortableList.getElementName = element => Promise.resolve(element[0].querySelector(Selectors.sortableElementTitle)?.textContent); - document.addEventListener(SortableList.EVENTS.elementDrop, event => { - if (!event.detail.positionChanged) { + $(Selectors.sortableListRegion).on(SortableList.EVENTS.DROP, (event, info) => { + if (!info.positionChanged) { return; } const pendingPromise = new Pending('mod_feedback/questions:reorder'); - const itemOrder = getItemOrder(event.detail.element[0]); - addIconToContainerRemoveOnCompletion(event.detail.element[0], pendingPromise); + const itemOrder = getItemOrder(info.element[0]); + addIconToContainerRemoveOnCompletion(info.element[0], pendingPromise); reorderQuestions(moduleId, itemOrder) .then(() => getString('questionmoved', 'mod_feedback')) .then(addToast)