Current Path : /var/www/ljmtc/cbt/lib/amd/build/ |
Current File : /var/www/ljmtc/cbt/lib/amd/build/paged_content_paging_dropdown.min.js.map |
{"version":3,"sources":["../src/paged_content_paging_dropdown.js"],"names":["define","$","CustomEvents","PagedContentEvents","PubSub","SELECTORS","ROOT","DROPDOWN_ITEM","DROPDOWN_TOGGLE","ACTIVE_DROPDOWN_ITEM","CARET","getPageNumber","item","parseInt","attr","getAllItems","root","find","getPreviousItems","pageNumber","filter","index","element","getLimit","getOffset","offset","each","prevItem","getActiveItem","generateEventPayload","items","map","limit","get","generatePageNumbers","setActiveItem","id","prevItems","allItems","add","eventPayload","toggle","caret","removeClass","addClass","html","text","append","publish","SHOW_PAGES","init","activeItem","length","events","activate","on","e","data","target","closest","originalEvent","preventDefault","rootSelector"],"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 * Javascript to manage the paging dropdown control.\n *\n * @module core/paged_content_paging_dropdown\n * @copyright 2018 Ryan Wyllie <ryan@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(\n [\n 'jquery',\n 'core/custom_interaction_events',\n 'core/paged_content_events',\n 'core/pubsub'\n ],\n function(\n $,\n CustomEvents,\n PagedContentEvents,\n PubSub\n ) {\n\n var SELECTORS = {\n ROOT: '[data-region=\"paging-dropdown-container\"]',\n DROPDOWN_ITEM: '[data-region=\"dropdown-item\"]',\n DROPDOWN_TOGGLE: '[data-region=\"dropdown-toggle\"]',\n ACTIVE_DROPDOWN_ITEM: '[data-region=\"dropdown-item\"].active',\n CARET: '[data-region=\"caret\"]'\n };\n\n /**\n * Get the page number.\n *\n * @param {jquery} item The dropdown item.\n * @returns {Number}\n */\n var getPageNumber = function(item) {\n return parseInt(item.attr('data-page-number'), 10);\n };\n\n /**\n * Get all paging dropdown items.\n *\n * @param {jquery} root The root element.\n * @returns {jquery} A jquery object with all items.\n */\n var getAllItems = function(root) {\n return root.find(SELECTORS.DROPDOWN_ITEM);\n };\n\n /**\n * Get all paging dropdown items with lower page numbers than the given\n * dropdown item.\n *\n * @param {jquery} root The root element.\n * @param {jquery} item The dropdown item.\n * @returns {jquery} A jquery object with all items.\n */\n var getPreviousItems = function(root, item) {\n var pageNumber = getPageNumber(item);\n return getAllItems(root).filter(function(index, element) {\n return getPageNumber($(element)) < pageNumber;\n });\n };\n\n /**\n * Get the number of items to be loaded for the dropdown item.\n *\n * @param {jquery} item The dropdown item.\n * @returns {Number}\n */\n var getLimit = function(item) {\n return parseInt(item.attr('data-item-count'), 10);\n };\n\n /**\n * Get the offset of items from the start of the itemset for the given\n * dropdown item.\n *\n * @param {jquery} root The root element.\n * @param {jquery} item The dropdown item.\n * @returns {Number}\n */\n var getOffset = function(root, item) {\n if (item.attr('data-offset') != undefined) {\n return parseInt(item.attr('data-offset'), 10);\n }\n\n var offset = 0;\n\n getPreviousItems(root, item).each(function(index, prevItem) {\n prevItem = $(prevItem);\n offset += getLimit(prevItem);\n });\n\n item.attr('data-offset', offset);\n return offset;\n };\n\n /**\n * Get the active dropdown item.\n *\n * @param {jquery} root The root element.\n * @returns {jquery} The active dropdown item.\n */\n var getActiveItem = function(root) {\n return root.find(SELECTORS.ACTIVE_DROPDOWN_ITEM);\n };\n\n /**\n * Create the event payload for the list of dropdown items. The event payload\n * is an array of objects with one object per dropdown item.\n *\n * Each payload object contains the page number, limit, and offset for the\n * corresponding dropdown item.\n *\n * For example: If we had 3 dropdown items with incrementing page numbers loading\n * 25 items per page then the generated payload would look like:\n * [\n * {\n * pageNumber: 1,\n * limit: 25,\n * offset: 0\n * },\n * {\n * pageNumber: 2,\n * limit: 25,\n * offset: 25\n * },\n * {\n * pageNumber: 3,\n * limit: 25,\n * offset: 50\n * }\n * ]\n *\n * @param {jquery} root The root element.\n * @param {jquery} items The dropdown items.\n * @returns {object[]} The payload for the event.\n */\n var generateEventPayload = function(root, items) {\n return items.map(function(index, item) {\n item = $(item);\n return {\n pageNumber: getPageNumber(item),\n limit: getLimit(item),\n offset: getOffset(root, item),\n };\n }).get();\n };\n\n /**\n * Add page number attributes to each of the given items. The page numbers\n * start at 1 and increment by 1 for each item, e.g. 1, 2, 3 etc.\n *\n * @param {jquery} items The dropdown items.\n */\n var generatePageNumbers = function(items) {\n items.each(function(index, item) {\n item = $(item);\n item.attr('data-page-number', index + 1);\n });\n };\n\n /**\n * Make the given item active by setting the active class on it and firing\n * the SHOW_PAGES event for the paged content to show the appropriate\n * pages.\n *\n * @param {jquery} root The root element.\n * @param {jquery} item The dropdown item.\n * @param {string} id A unique id for this instance.\n */\n var setActiveItem = function(root, item, id) {\n var prevItems = getPreviousItems(root, item);\n var allItems = prevItems.add(item);\n var eventPayload = generateEventPayload(root, allItems);\n var toggle = root.find(SELECTORS.DROPDOWN_TOGGLE);\n var caret = toggle.find(SELECTORS.CARET);\n\n getActiveItem(root).removeClass('active');\n item.addClass('active');\n\n // Update the dropdown toggle to show which item is selected.\n toggle.html(item.text());\n // Bootstrap 2 compatibility.\n toggle.append(caret);\n // Fire the event to tell the content to update.\n PubSub.publish(id + PagedContentEvents.SHOW_PAGES, eventPayload);\n };\n\n /**\n * Initialise the module by firing the SHOW_PAGES event for an existing\n * active page found and setting up the event listener for the user to select\n * new pages.\n *\n * @param {object} root The root element.\n * @param {string} id A unique id for this instance.\n */\n var init = function(root, id) {\n root = $(root);\n var items = getAllItems(root);\n generatePageNumbers(items);\n\n var activeItem = getActiveItem(root);\n if (activeItem.length) {\n // Fire the first event for the content to make sure it's visible.\n setActiveItem(root, activeItem, id);\n }\n\n CustomEvents.define(root, [\n CustomEvents.events.activate\n ]);\n\n root.on(CustomEvents.events.activate, SELECTORS.DROPDOWN_ITEM, function(e, data) {\n var item = $(e.target).closest(SELECTORS.DROPDOWN_ITEM);\n setActiveItem(root, item, id);\n\n data.originalEvent.preventDefault();\n });\n };\n\n return {\n init: init,\n rootSelector: SELECTORS.ROOT,\n };\n});\n"],"file":"paged_content_paging_dropdown.min.js"}