Current Path : /var/www/ljmtc/cbt/lib/form/amd/build/ |
Current File : /var/www/ljmtc/cbt/lib/form/amd/build/showadvanced.min.js.map |
{"version":3,"sources":["../src/showadvanced.js"],"names":["define","$","Log","Strings","Notification","SELECTORS","FIELDSETCONTAINSADVANCED","DIVFITEMADVANCED","DIVADVANCEDSECTION","DIVFCONTAINER","MORELESSLINK","CSS","SHOW","MORELESSACTIONS","MORELESSTOGGLER","SHOWLESS","WRAPPERS","FITEM","FELEMENT","ADVANCEDDIV","uniqIdSeed","ShowAdvanced","id","form","document","getElementById","enhanceForm","prototype","fieldsets","find","each","index","item","enhanceFieldset","bind","on","switchState","e","which","generateId","node","prop","fieldset","statuselement","length","debug","get_strings","key","component","then","results","showmore","showless","morelesslink","addClass","val","html","attr","idlist","formadvancedsection","wrapAll","fitem","felement","append","before","fail","exception","preventDefault","target","closest","toggleClass","removeClass","init","formid"],"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 * A class to help show and hide advanced form content.\n *\n * @module core_form/showadvanced\n * @class showadvanced\n * @package core_form\n * @copyright 2016 Damyon Wiese <damyon@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['jquery', 'core/log', 'core/str', 'core/notification'], function($, Log, Strings, Notification) {\n\n var SELECTORS = {\n FIELDSETCONTAINSADVANCED: 'fieldset.containsadvancedelements',\n DIVFITEMADVANCED: 'div.fitem.advanced',\n DIVADVANCEDSECTION: 'div#form-advanced-div',\n DIVFCONTAINER: 'div.fcontainer',\n MORELESSLINK: 'fieldset.containsadvancedelements .moreless-toggler'\n },\n CSS = {\n SHOW: 'show',\n MORELESSACTIONS: 'moreless-actions',\n MORELESSTOGGLER: 'moreless-toggler',\n SHOWLESS: 'moreless-less'\n },\n WRAPPERS = {\n FITEM: '<div class=\"fitem\"></div>',\n FELEMENT: '<div class=\"felement\"></div>',\n ADVANCEDDIV: '<div id=\"form-advanced-div\"></div>'\n },\n IDPREFIX = 'showadvancedid-';\n\n /** @type {Integer} uniqIdSeed Auto incrementing number used to generate ids. */\n var uniqIdSeed = 0;\n\n /**\n * ShowAdvanced behaviour class.\n * @param {String} id The id of the form.\n */\n var ShowAdvanced = function(id) {\n this.id = id;\n\n var form = $(document.getElementById(id));\n this.enhanceForm(form);\n };\n\n /** @type {String} id The form id to enhance. */\n ShowAdvanced.prototype.id = '';\n\n /**\n * @method enhanceForm\n * @param {JQuery} form JQuery selector representing the form\n * @return {ShowAdvanced}\n */\n ShowAdvanced.prototype.enhanceForm = function(form) {\n var fieldsets = form.find(SELECTORS.FIELDSETCONTAINSADVANCED);\n\n // Enhance each fieldset in the form matching the selector.\n fieldsets.each(function(index, item) {\n this.enhanceFieldset($(item));\n }.bind(this));\n\n // Attach some event listeners.\n // Subscribe more/less links to click event.\n form.on('click', SELECTORS.MORELESSLINK, this.switchState);\n\n // Subscribe to key events but filter for space or enter.\n form.on('keydown', SELECTORS.MORELESSLINK, function(e) {\n // Enter or space.\n if (e.which == 13 || e.which == 32) {\n return this.switchState(e);\n }\n return true;\n }.bind(this));\n return this;\n };\n\n\n /**\n * Generates a uniq id for the dom element it's called on unless the element already has an id.\n * The id is set on the dom node before being returned.\n *\n * @method generateId\n * @param {JQuery} node JQuery selector representing a single DOM Node.\n * @return {String}\n */\n ShowAdvanced.prototype.generateId = function(node) {\n var id = node.prop('id');\n if (typeof id === 'undefined') {\n id = IDPREFIX + (uniqIdSeed++);\n node.prop('id', id);\n }\n return id;\n };\n\n /**\n * @method enhanceFieldset\n * @param {JQuery} fieldset JQuery selector representing a fieldset\n * @return {ShowAdvanced}\n */\n ShowAdvanced.prototype.enhanceFieldset = function(fieldset) {\n var statuselement = $('input[name=mform_showmore_' + fieldset.prop('id') + ']');\n if (!statuselement.length) {\n Log.debug(\"M.form.showadvanced::processFieldset was called on an fieldset without a status field: '\" +\n fieldset.prop('id') + \"'\");\n return this;\n }\n\n // Fetch some strings.\n Strings.get_strings([{\n key: 'showmore',\n component: 'core_form'\n }, {\n key: 'showless',\n component: 'core_form'\n }]).then(function(results) {\n var showmore = results[0],\n showless = results[1];\n\n // Generate more/less links.\n var morelesslink = $('<a href=\"#\"></a>');\n morelesslink.addClass(CSS.MORELESSTOGGLER);\n if (statuselement.val() === '0') {\n morelesslink.html(showmore);\n morelesslink.attr('aria-expanded', 'false');\n } else {\n morelesslink.html(showless);\n morelesslink.attr('aria-expanded', 'true');\n morelesslink.addClass(CSS.SHOWLESS);\n fieldset.find(SELECTORS.DIVFITEMADVANCED).addClass(CSS.SHOW);\n }\n // Build a list of advanced fieldsets.\n var idlist = [];\n fieldset.find(SELECTORS.DIVFITEMADVANCED).each(function(index, node) {\n idlist[idlist.length] = this.generateId($(node));\n }.bind(this));\n\n // Set aria attributes.\n morelesslink.attr('role', 'button');\n morelesslink.attr('aria-controls', 'form-advanced-div');\n\n var formadvancedsection = $(WRAPPERS.ADVANCEDDIV);\n fieldset.find(SELECTORS.DIVFITEMADVANCED).wrapAll(formadvancedsection);\n // Add elements to the DOM.\n var fitem = $(WRAPPERS.FITEM);\n fitem.addClass(CSS.MORELESSACTIONS);\n var felement = $(WRAPPERS.FELEMENT);\n felement.append(morelesslink);\n fitem.append(felement);\n\n fieldset.find(SELECTORS.DIVADVANCEDSECTION).before(fitem);\n return true;\n }.bind(this)).fail(Notification.exception);\n\n return this;\n };\n\n /**\n * @method switchState\n * @param {Event} e Event that triggered this action.\n * @return {Boolean}\n */\n ShowAdvanced.prototype.switchState = function(e) {\n e.preventDefault();\n\n // Fetch some strings.\n Strings.get_strings([{\n key: 'showmore',\n component: 'core_form'\n }, {\n key: 'showless',\n component: 'core_form'\n }]).then(function(results) {\n var showmore = results[0],\n showless = results[1],\n fieldset = $(e.target).closest(SELECTORS.FIELDSETCONTAINSADVANCED);\n\n // Toggle collapsed class.\n fieldset.find(SELECTORS.DIVFITEMADVANCED).toggleClass(CSS.SHOW);\n\n // Get corresponding hidden variable.\n var statuselement = $('input[name=mform_showmore_' + fieldset.prop('id') + ']');\n\n // Invert it and change the link text.\n if (statuselement.val() === '0') {\n statuselement.val(1);\n $(e.target).addClass(CSS.SHOWLESS);\n $(e.target).html(showless);\n $(e.target).attr('aria-expanded', 'true');\n } else {\n statuselement.val(0);\n $(e.target).removeClass(CSS.SHOWLESS);\n $(e.target).html(showmore);\n $(e.target).attr('aria-expanded', 'false');\n }\n return true;\n }).fail(Notification.exception);\n\n return this;\n };\n\n return {\n /**\n * Initialise this module.\n * @method init\n * @param {String} formid\n * @return {ShowAdvanced}\n */\n init: function(formid) {\n return new ShowAdvanced(formid);\n }\n };\n});\n"],"file":"showadvanced.min.js"}