PageSourceSearch

https://www.xanax.com/-/media/Base-Themes/Components-Theme/Scripts/component-language-selector.js

js xanax.com collected 2026-09-24 22:55:21 UTC 3,080 bytes, 93 lines download raw bytes

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.