X7ROOT File Manager
Current Path:
/home/cbholdings/pasukulu/grade/amd/build/searchwidget
home
/
cbholdings
/
pasukulu
/
grade
/
amd
/
build
/
searchwidget
/
📁
..
📄
basewidget.min.js
(5.86 KB)
📄
basewidget.min.js.map
(14.03 KB)
📄
group.min.js
(4.38 KB)
📄
group.min.js.map
(8.26 KB)
📄
initials.min.js
(4.59 KB)
📄
initials.min.js.map
(9.16 KB)
📄
repository.min.js
(1.07 KB)
📄
repository.min.js.map
(2.99 KB)
📄
selectors.min.js
(839 B)
📄
selectors.min.js.map
(2.15 KB)
Editing: initials.min.js.map
{"version":3,"file":"initials.min.js","sources":["../../src/searchwidget/initials.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 <http://www.gnu.org/licenses/>.\n\n/**\n * A small dropdown to filter users within the gradebook.\n *\n * @module core_grades/searchwidget/initials\n * @copyright 2022 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Pending from 'core/pending';\nimport * as Url from 'core/url';\nimport CustomEvents from \"core/custom_interaction_events\";\nimport $ from 'jquery';\n\n/**\n * Whether the event listener has already been registered for this module.\n *\n * @type {boolean}\n */\nlet registered = false;\n\n// Contain our selectors within this file until they could be of use elsewhere.\nconst selectors = {\n pageListItem: 'page-item',\n pageClickableItem: '.page-link',\n activeItem: 'active',\n formDropdown: '.initialsdropdownform',\n parentDomNode: '.initials-selector',\n firstInitial: 'firstinitial',\n lastInitial: 'lastinitial',\n initialBars: '.initialbar', // Both first and last name use this class.\n targetButton: 'initialswidget',\n formItems: {\n type: 'submit',\n save: 'save',\n cancel: 'cancel'\n }\n};\n\n/**\n * Our initial hook into the module which will eventually allow us to handle the dropdown initials bar form.\n *\n * @param {String} callingLink The link to redirect upon form submission.\n */\nexport const init = (callingLink) => {\n if (registered) {\n return;\n }\n const pendingPromise = new Pending();\n registerListenerEvents(callingLink);\n // BS events always bubble so, we need to listen for the event higher up the chain.\n $(selectors.parentDomNode).on('shown.bs.dropdown', () => {\n document.querySelector(selectors.pageClickableItem).focus({preventScroll: true});\n });\n pendingPromise.resolve();\n registered = true;\n};\n\n/**\n * Register event listeners.\n *\n * @param {String} callingLink The link to redirect upon form submission.\n */\nconst registerListenerEvents = (callingLink) => {\n const events = [\n 'click',\n CustomEvents.events.activate,\n CustomEvents.events.keyboardActivate\n ];\n CustomEvents.define(document, events);\n\n // Register events.\n events.forEach((event) => {\n document.addEventListener(event, (e) => {\n // Always fetch the latest information when we click as state is a fickle thing.\n let {firstActive, lastActive, sifirst, silast} = onClickVariables();\n let itemToReset = '';\n\n // Prevent the usual form behaviour.\n if (e.target.closest(selectors.formDropdown)) {\n e.preventDefault();\n }\n\n // Handle the state of active initials before form submission.\n if (e.target.closest(`${selectors.formDropdown} .${selectors.pageListItem}`)) {\n // Ensure the li items don't cause weird clicking emptying out the form.\n if (e.target.classList.contains(selectors.pageListItem)) {\n return;\n }\n\n const initialsBar = e.target.closest(selectors.initialBars); // Find out which initial bar we are in.\n\n // We want to find the current active item in the menu area the user selected.\n // We also want to fetch the raw item out of the array for instant manipulation.\n if (initialsBar.classList.contains(selectors.firstInitial)) {\n sifirst = e.target;\n itemToReset = firstActive;\n } else {\n silast = e.target;\n itemToReset = lastActive;\n }\n swapActiveItems(itemToReset, e);\n }\n\n // Handle form submissions.\n if (e.target.closest(`${selectors.formDropdown}`) && e.target.type === selectors.formItems.type) {\n if (e.target.dataset.action === selectors.formItems.save) {\n // Ensure we strip out the value (All) as it messes with the PHP side of the initials bar.\n // Then we will redirect the user back onto the page with new filters applied.\n window.location = Url.relativeUrl(callingLink, {\n 'id': e.target.closest(selectors.formDropdown).dataset.courseid,\n 'sifirst': sifirst.parentElement.classList.contains('initialbarall') ? '' : sifirst.value,\n 'silast': silast.parentElement.classList.contains('initialbarall') ? '' : silast.value,\n });\n }\n if (e.target.dataset.action === selectors.formItems.cancel) {\n $(`.${selectors.targetButton}`).dropdown('toggle');\n }\n }\n });\n });\n};\n\n/**\n * A small abstracted helper function which allows us to ensure we have up-to-date lists of nodes.\n *\n * @returns {{firstActive: HTMLElement, lastActive: HTMLElement, sifirst: ?String, silast: ?String}}\n */\nconst onClickVariables = () => {\n // Ensure we have an up-to-date initials bar.\n const firstItems = [...document.querySelectorAll(`.${selectors.firstInitial} li`)];\n const lastItems = [...document.querySelectorAll(`.${selectors.lastInitial} li`)];\n const firstActive = firstItems.filter((item) => item.classList.contains(selectors.activeItem))[0];\n const lastActive = lastItems.filter((item) => item.classList.contains(selectors.activeItem))[0];\n // Ensure we retain both of the selections from a previous instance.\n let sifirst = firstActive.querySelector(selectors.pageClickableItem);\n let silast = lastActive.querySelector(selectors.pageClickableItem);\n return {firstActive, lastActive, sifirst, silast};\n};\n\n/**\n * Given we are provided the old li and current click event, swap around the active properties.\n *\n * @param {HTMLElement} itemToReset\n * @param {Event} e\n */\nconst swapActiveItems = (itemToReset, e) => {\n itemToReset.classList.remove(selectors.activeItem);\n itemToReset.querySelector(selectors.pageClickableItem).ariaCurrent = false;\n\n // Set the select item as the current item.\n const itemToSetActive = e.target.parentElement;\n itemToSetActive.classList.add(selectors.activeItem);\n e.target.ariaCurrent = true;\n};\n"],"names":["registered","selectors","type","save","cancel","callingLink","pendingPromise","Pending","registerListenerEvents","on","document","querySelector","focus","preventScroll","resolve","events","CustomEvents","activate","keyboardActivate","define","forEach","event","addEventListener","e","firstActive","lastActive","sifirst","silast","onClickVariables","itemToReset","target","closest","preventDefault","classList","contains","swapActiveItems","dataset","action","window","location","Url","relativeUrl","courseid","parentElement","value","dropdown","firstItems","querySelectorAll","lastItems","filter","item","remove","ariaCurrent","add"],"mappings":";;;;;;;44BAiCIA,YAAa,QAGXC,uBACY,YADZA,4BAEiB,aAFjBA,qBAGU,SAHVA,uBAIY,wBAJZA,wBAKa,qBALbA,uBAMY,eANZA,sBAOW,cAPXA,sBAQW,cARXA,uBASY,iBATZA,oBAUS,CACPC,KAAM,SACNC,KAAM,OACNC,OAAQ,wBASKC,iBACbL,wBAGEM,eAAiB,IAAIC,iBAC3BC,uBAAuBH,iCAErBJ,yBAAyBQ,GAAG,qBAAqB,KAC/CC,SAASC,cAAcV,6BAA6BW,MAAM,CAACC,eAAe,OAE9EP,eAAeQ,UACfd,YAAa,SAQXQ,uBAA0BH,oBACtBU,OAAS,CACX,QACAC,mCAAaD,OAAOE,SACpBD,mCAAaD,OAAOG,qDAEXC,OAAOT,SAAUK,QAG9BA,OAAOK,SAASC,QACZX,SAASY,iBAAiBD,OAAQE,QAE1BC,YAACA,YAADC,WAAcA,WAAdC,QAA0BA,QAA1BC,OAAmCA,QAAUC,mBAC7CC,YAAc,MAGdN,EAAEO,OAAOC,QAAQ9B,yBACjBsB,EAAES,iBAIFT,EAAEO,OAAOC,kBAAW9B,oCAA2BA,yBAA2B,IAEtEsB,EAAEO,OAAOG,UAAUC,SAASjC,+BAIZsB,EAAEO,OAAOC,QAAQ9B,uBAIrBgC,UAAUC,SAASjC,yBAC/ByB,QAAUH,EAAEO,OACZD,YAAcL,cAEdG,OAASJ,EAAEO,OACXD,YAAcJ,YAElBU,gBAAgBN,YAAaN,GAI7BA,EAAEO,OAAOC,kBAAW9B,0BAA6BsB,EAAEO,OAAO5B,OAASD,oBAAoBC,OACnFqB,EAAEO,OAAOM,QAAQC,SAAWpC,oBAAoBE,OAGhDmC,OAAOC,SAAWC,IAAIC,YAAYpC,YAAa,IACrCkB,EAAEO,OAAOC,QAAQ9B,wBAAwBmC,QAAQM,iBAC5ChB,QAAQiB,cAAcV,UAAUC,SAAS,iBAAmB,GAAKR,QAAQkB,aAC1EjB,OAAOgB,cAAcV,UAAUC,SAAS,iBAAmB,GAAKP,OAAOiB,SAGrFrB,EAAEO,OAAOM,QAAQC,SAAWpC,oBAAoBG,uCAC1CH,yBAA0B4C,SAAS,kBAYvDjB,iBAAmB,WAEfkB,WAAa,IAAIpC,SAASqC,4BAAqB9C,gCAC/C+C,UAAY,IAAItC,SAASqC,4BAAqB9C,+BAC9CuB,YAAcsB,WAAWG,QAAQC,MAASA,KAAKjB,UAAUC,SAASjC,wBAAuB,GACzFwB,WAAauB,UAAUC,QAAQC,MAASA,KAAKjB,UAAUC,SAASjC,wBAAuB,OAEzFyB,QAAUF,YAAYb,cAAcV,6BACpC0B,OAASF,WAAWd,cAAcV,mCAC/B,CAACuB,YAAAA,YAAaC,WAAAA,WAAYC,QAAAA,QAASC,OAAAA,SASxCQ,gBAAkB,CAACN,YAAaN,KAClCM,YAAYI,UAAUkB,OAAOlD,sBAC7B4B,YAAYlB,cAAcV,6BAA6BmD,aAAc,EAG7C7B,EAAEO,OAAOa,cACjBV,UAAUoB,IAAIpD,sBAC9BsB,EAAEO,OAAOsB,aAAc"}
Upload File
Create Folder