Element Framework

Flags

Below is a list of available flags in the Halo theme. You can use them with the Flag Element

  • HTML
  • JS
  • CSS
<div class="header"></div>
<div id="loader-content"></div>
<div id="content"></div>
var FLAG_URL = 'https://cdn.refinitiv.com/public/libs/elf/info.json';
var content = document.getElementById('content');
var theme = 'halo';
var flagFullname = {
  "af": "Afghanistan",
  "ax": "Åland Islands",
  "al": "Albania",
  "dz": "Algeria",
  "as": "American Samoa",
  "ad": "Andorra",
  "ao": "Angola",
  "ai": "Anguilla",
  "aq": "Antarctica",
  "ag": "Antigua and Barbuda",
  "ar": "Argentina",
  "am": "Armenia",
  "aw": "Aruba",
  "au": "Australia",
  "at": "Austria",
  "az": "Azerbaijan",
  "bs": "Bahamas",
  "bh": "Bahrain",
  "bd": "Bangladesh",
  "bb": "Barbados",
  "by": "Belarus",
  "be": "Belgium",
  "bz": "Belize",
  "bj": "Benin",
  "bm": "Bermuda",
  "bt": "Bhutan",
  "bo": "Bolivia",
  "bq": "Bonaire, Sint Eustatius and Saba",
  "ba": "Bosnia and Herzegovina",
  "bw": "Botswana",
  "bv": "Bouvet Island",
  "br": "Brazil",
  "io": "British Indian Ocean Territory",
  "bn": "Brunei Darussalam",
  "bg": "Bulgaria",
  "bf": "Burkina Faso",
  "bi": "Burundi",
  "cv": "Cabo Verde",
  "kh": "Cambodia",
  "cm": "Cameroon",
  "ca": "Canada",
  "ky": "Cayman Islands",
  "cf": "Central African Republic",
  "td": "Chad",
  "cl": "Chile",
  "cn": "China",
  "cx": "Christmas Island",
  "cc": "Cocos (Keeling) Islands",
  "co": "Colombia",
  "km": "Comoros",
  "cd": "DR Congo",
  "cg": "Congo",
  "ck": "Cook Islands",
  "cr": "Costa Rica",
  "ci": "Côte d'Ivoire",
  "hr": "Croatia",
  "cu": "Cuba",
  "cw": "Curaçao",
  "cy": "Cyprus",
  "cz": "Czechia",
  "dk": "Denmark",
  "dj": "Djibouti",
  "dm": "Dominica",
  "do": "Dominican Republic",
  "ec": "Ecuador",
  "eg": "Egypt",
  "sv": "El Salvador",
  "gq": "Equatorial Guinea",
  "er": "Eritrea",
  "ee": "Estonia",
  "et": "Ethiopia",
  "eu": "European Union",
  "fk": "Falkland Islands [Malvinas]",
  "fo": "Faroe Islands",
  "fj": "Fiji",
  "fi": "Finland",
  "fr": "France",
  "gf": "French Guiana",
  "pf": "French Polynesia",
  "tf": "French Southern Territories",
  "ga": "Gabon",
  "gm": "Gambia",
  "ge": "Georgia",
  "de": "Germany",
  "gh": "Ghana",
  "gi": "Gibraltar",
  "gr": "Greece",
  "gl": "Greenland",
  "gd": "Grenada",
  "gp": "Guadeloupe",
  "gu": "Guam",
  "gt": "Guatemala",
  "gg": "Guernsey",
  "gn": "Guinea",
  "gw": "Guinea-Bissau",
  "gy": "Guyana",
  "ht": "Haiti",
  "hm": "Heard Island and McDonald Islands",
  "va": "Holy See",
  "hn": "Honduras",
  "hk": "Hong Kong",
  "hu": "Hungary",
  "is": "Iceland",
  "in": "India",
  "id": "Indonesia",
  "ir": "Iran",
  "iq": "Iraq",
  "ie": "Ireland",
  "im": "Isle of Man",
  "il": "Israel",
  "it": "Italy",
  "jm": "Jamaica",
  "jp": "Japan",
  "je": "Jersey",
  "jo": "Jordan",
  "kz": "Kazakhstan",
  "ke": "Kenya",
  "ki": "Kiribati",
  "kp": "North Korea",
  "kr": "South Korea",
  "kw": "Kuwait",
  "kg": "Kyrgyzstan",
  "la": "Laos",
  "lv": "Latvia",
  "lb": "Lebanon",
  "ls": "Lesotho",
  "lr": "Liberia",
  "ly": "Libya",
  "li": "Liechtenstein",
  "lt": "Lithuania",
  "lu": "Luxembourg",
  "mo": "Macao",
  "mk": "Macedonia",
  "mg": "Madagascar",
  "mw": "Malawi",
  "my": "Malaysia",
  "mv": "Maldives",
  "ml": "Mali",
  "mt": "Malta",
  "mh": "Marshall Islands",
  "mq": "Martinique",
  "mr": "Mauritania",
  "mu": "Mauritius",
  "yt": "Mayotte",
  "mx": "Mexico",
  "fm": "Micronesia",
  "md": "Moldova",
  "mc": "Monaco",
  "mn": "Mongolia",
  "me": "Montenegro",
  "ms": "Montserrat",
  "ma": "Morocco",
  "mz": "Mozambique",
  "mm": "Myanmar",
  "na": "Namibia",
  "nr": "Nauru",
  "np": "Nepal",
  "nl": "Netherlands",
  "nc": "New Caledonia",
  "nz": "New Zealand",
  "ni": "Nicaragua",
  "ne": "Niger",
  "ng": "Nigeria",
  "nu": "Niue",
  "nf": "Norfolk Island",
  "mp": "Northern Mariana Islands",
  "no": "Norway",
  "om": "Oman",
  "pk": "Pakistan",
  "pw": "Palau",
  "ps": "Palestine",
  "pa": "Panama",
  "pg": "Papua New Guinea",
  "py": "Paraguay",
  "pe": "Peru",
  "ph": "Philippines",
  "pn": "Pitcairn",
  "pl": "Poland",
  "pt": "Portugal",
  "pr": "Puerto Rico",
  "qa": "Qatar",
  "re": "Réunion",
  "ro": "Romania",
  "ru": "Russia",
  "rw": "Rwanda",
  "bl": "Saint Barthélemy",
  "sh": "Saint Helena, Ascension and Tristan da Cunha",
  "kn": "Saint Kitts and Nevis",
  "lc": "Saint Lucia",
  "mf": "Saint Martin (French part)",
  "pm": "Saint Pierre and Miquelon",
  "vc": "Saint Vincent and the Grenadines",
  "ws": "Samoa",
  "sm": "San Marino",
  "st": "Sao Tome and Principe",
  "sa": "Saudi Arabia",
  "gb-sct": "Scotland",
  "sn": "Senegal",
  "rs": "Serbia",
  "sc": "Seychelles",
  "sl": "Sierra Leone",
  "sg": "Singapore",
  "sx": "Sint Maarten (Dutch part)",
  "sk": "Slovakia",
  "si": "Slovenia",
  "sb": "Solomon Islands",
  "so": "Somalia",
  "za": "South Africa",
  "gs": "South Georgia and the South Sandwich Islands",
  "ss": "South Sudan",
  "es": "Spain",
  "lk": "Sri Lanka",
  "sd": "Sudan",
  "sr": "Suriname",
  "sj": "Svalbard and Jan Mayen",
  "sz": "Swaziland",
  "se": "Sweden",
  "ch": "Switzerland",
  "sy": "Syria",
  "tw": "Taiwan",
  "tj": "Tajikistan",
  "tz": "Tanzania",
  "th": "Thailand",
  "tl": "Timor-Leste",
  "tg": "Togo",
  "tk": "Tokelau",
  "to": "Tonga",
  "tt": "Trinidad and Tobago",
  "tn": "Tunisia",
  "tr": "Turkey",
  "tm": "Turkmenistan",
  "tc": "Turks and Caicos Islands",
  "tv": "Tuvalu",
  "ug": "Uganda",
  "ua": "Ukraine",
  "ae": "United Arab Emirates",
  "gb": "United Kingdom",
  "un": "United Nations",
  "um": "United States Minor Outlying Islands",
  "us": "United States of America",
  "uy": "Uruguay",
  "uz": "Uzbekistan",
  "vu": "Vanuatu",
  "ve": "Venezuela",
  "vn": "Viet Nam",
  "vg": "Virgin Islands (British)",
  "vi": "Virgin Islands (U.S.)",
  "gb-wls": "Wales",
  "wf": "Wallis and Futuna",
  "eh": "Western Sahara",
  "ye": "Yemen",
  "zm": "Zambia",
  "zw": "Zimbabwe",
  "es-ca": "Senyera (Catalonia)",
  "es-ga": "Galicia",
  "gb-eng": "England",
  "gb-nir": "Northern Ireland",
  "xk": "Palau"
}

function request(url, callback) {
  var xmlHttp = new XMLHttpRequest();
  xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
      callback(xmlHttp.responseText);
  }
  xmlHttp.open("GET", url, true); // true for asynchronous
  xmlHttp.send(null);
}

var displayFlags = function(data) {
  var flagList;

  if (data) {
    data = JSON.parse(data);
    if (!data || !data[theme] || !data[theme].flag || !data[theme].flag.length) {
      content.classList.add('no-content');
      content.innerHTML = 'No flag to display';
    } else {
      flagList = data[theme].flag;
    }
  }

  for (var i = 0; i < flagList.length; i++) {
    const name = flagList[i].name;
    var item = document.createElement('div');
    item.classList.add('item');

    var flag = document.createElement('ef-flag');
    flag.setAttribute('flag', name);

    var flagName = document.createElement('div');
    flagName.classList.add('flag-name');
    flagName.textContent = name;

    var fullname = document.createElement('div');
    fullname.classList.add('flag-fullname');
    fullname.textContent = flagFullname[name] || "";

    item.appendChild(flag);
    item.appendChild(fullname);
    item.appendChild(flagName);

    content.appendChild(item);
  }

  var loader = document.getElementById('loader-content');
  loader.parentNode.removeChild(loader);
}

function displayLoader() {
  var loader = document.getElementById('loader-content');
  for (var j = 0; j < 54; j++) {
    var item = document.createElement('div');
    item.classList.add('item');
    loader.appendChild(item);
  }
}

document.addEventListener('DOMContentLoaded', function() {
  displayLoader();
  request(FLAG_URL, displayFlags);
});
html {
  margin-top: 20px;
}

.item {
  width: 100px;
  text-align: center;
  margin: 7px;
  border: solid 1px #aaa;
  padding-top: 20px;
}

.item:hover {
  transition: background-color 0.3s cubic-bezier(0.075, 0.82, 0.165, 1);
  background-color: #dddfe4;
}

.flag-name {
  font-size: 13px;
  border-top: solid 1px #aaa;
  margin-bottom: 5px;
  font-weight: 500;
}

.flag-fullname {
  padding-top: 5px;
  font-size: 13px;
  height: 50px;
}

#content {
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
  margin: 20px 0;
  min-height: 300px;
}

.no-content {
  justify-content: center;
  align-items: center;
  color: #8a8a96;
  background-color: #fdfdfd;
}

ef-flag {
  font-size: 30px;
}

#loader-content {
  display: flex;
  flex-wrap: wrap;
  margin: 20px 0;
}

#loader-content .item {
  height: 73px;
  width: 73px;
  margin: 3px;
  background-color: #f3f3f3;
}