/
var
/
www
/
html
/
lgpd
/
lib
/
form
/
amd
/
build
/
Upload File
HOME
{"version":3,"sources":["../src/showadvanced.js"],"names":["define","$","Log","Strings","Notification","SELECTORS","FIELDSETCONTAINSADVANCED","DIVFITEMADVANCED","DIVFCONTAINER","MORELESSLINK","CSS","SHOW","MORELESSACTIONS","MORELESSTOGGLER","SHOWLESS","WRAPPERS","FITEM","FELEMENT","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","idlist","attr","join","fitem","felement","append","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 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 },\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 } else {\n morelesslink.html(showless);\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', idlist.join(' '));\n\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.DIVFCONTAINER).append(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 } else {\n statuselement.val(0);\n $(e.target).removeClass(CSS.SHOWLESS);\n $(e.target).html(showmore);\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"}