1/** 2 * Component Language Selector 3 * @module LanguageSelector 4 * @param {jQuery} $ Instance of jQuery 5 * @return {Object} List of language selector methods methods 6 */ 7XA.component.languageSelector = (function($) { 8 /** 9 * This object stores all public api methods 10 * @type {Object.<Methods>} 11 * @memberOf module:LanguageSelector 12 * */ 13 var api = {}; 14 /** 15 * readDataAttributes function that return 16 * name of a language flag in format 17 * 'flags-'+language name 18 * @memberOf module:LanguageSelector 19 * @param {jQuery} item 20 * @private 21 */ 22 function readDataAttributes(item) { 23 var country = item.data("country-code"); 24 25 return "flags-" + country; 26 } 27 /** 28 * initLanguageSelector sets up flag classes for laguage selector items 29 * and bind 'click' event to drop-down item that toggle visibility 30 * @memberOf module:LanguageSelector 31 * @param {jQuery} instance Root DOM element of language selector 32 * component 33 */ 34 function initLanguageSelector(instance) { 35 var el = $(instance), 36 header = el.find(".language-selector-select-item"), 37 dropDownList = el.find(".language-selector-item-container"), 38 dropDownItem = dropDownList.find(".language-selector-item"); 39 40 var className = readDataAttributes(header); 41 header.find(">a").addClass(className); 42 43 dropDownList.find(".language-selector-item").each(function() { 44 className = readDataAttributes($(this)); 45 $(this) 46 .find(">a") 47 .addClass(className); 48 }); 49 50 header.on("click", function() { 51 dropDownList.slideToggle(); 52 }); 53 54 dropDownItem.on("click", function() { 55 var url = $(this) 56 .find("a") 57 .attr("href"); 58 59 window.location.href = url; 60 }); 61 } 62 /** 63 * initInstance method calls 64 * [".initLanguageSelector"]{@link module:LanguageSelector.initLanguageSelector} method. 65 * @memberOf module:LanguageSelector 66 * @method 67 * @param {jQuery} component Root DOM element of language selector component 68 * @alias module:LanguageSelector.initInstance 69 */ 70 api.initInstance = function(component) { 71 initLanguageSelector(component); 72 }; 73 74 /** 75 * init method calls in a loop for each 76 * language selector component on a page and runs LanguageSelector's 77 * [".initInstance"]{@link module:LanguageSelector.api.initInstance} method. 78 * @memberOf module:LanguageSelector 79 * @alias module:LanguageSelector.init 80 */ 81 api.init = function() { 82 var languageSelector = $(".language-selector:not(.initialized)"); 83 84 languageSelector.each(function() { 85 api.initInstance(this); 86 $(this).addClass("initialized"); 87 }); 88 }; 89 90 return api; 91})(jQuery, document); 92 93XA.register("language-selector", XA.component.languageSelector);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.