From 16281ee1cac9bb56249ba96bf104b8f4bc37153c Mon Sep 17 00:00:00 2001 From: Mads Jensen Date: Wed, 3 Oct 2018 15:18:44 +0200 Subject: [PATCH 01/10] [BUG] Added a click event to the generated button and a toggle() on the OL list when an item is clicked. Minor other changes, like switching all 'var's to, the ES6 standard, 'let' --- src/jquery.flagstrap.js | 71 +++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/src/jquery.flagstrap.js b/src/jquery.flagstrap.js index 77a0212..8b546d7 100644 --- a/src/jquery.flagstrap.js +++ b/src/jquery.flagstrap.js @@ -8,7 +8,8 @@ */ (function ($) { - var defaults = { + let defaults = { + inputId: undefined, buttonSize: "btn-md", buttonType: "btn-default", labelMargin: "10px", @@ -21,7 +22,7 @@ selectedCountry: '' }; - var countries = { + let countries = { "AF": "Afghanistan", "AL": "Albania", "DZ": "Algeria", @@ -268,17 +269,17 @@ $.flagStrap = function (element, options, i) { - var plugin = this; + let plugin = this; - var uniqueId = generateId(8); + let uniqueId = generateId(8); plugin.countries = {}; plugin.selected = { value: null, text: null }; plugin.settings = { inputName: 'country-' + uniqueId }; - var $container = $(element); - var htmlSelectId = 'flagstrap-' + uniqueId; - var htmlSelect = '#' + htmlSelectId; + let $container = $(element); + let htmlSelectId = 'flagstrap-' + uniqueId; + let htmlSelect = '#' + htmlSelectId; plugin.init = function () { @@ -308,7 +309,7 @@ // Check to see if the onSelect callback method is assigned / callable, bind the change event for broadcast if (plugin.settings.onSelect !== undefined && plugin.settings.onSelect instanceof Function) { $(htmlSelect).change(function (event) { - var element = this; + let element = this; options.onSelect($(element).val(), element); }); } @@ -318,11 +319,11 @@ }; - var buildHtmlSelect = function () { - var htmlSelectElement = $('').attr('id', htmlSelectId).attr('name', plugin.settings.inputName); $.each(plugin.countries, function (code, country) { - var optionAttributes = { value: code }; + let optionAttributes = { value: code }; if (plugin.settings.selectedCountry !== undefined) { if (plugin.settings.selectedCountry === code) { optionAttributes = { value: code, selected: "selected" }; @@ -343,30 +344,33 @@ return htmlSelectElement; }; - var buildDropDownButton = function () { + let buildDropDownButton = function () { - var selectedText = $(htmlSelect).find('option').first().text(); - var selectedValue = $(htmlSelect).find('option').first().val(); + let firstOption = $(htmlSelect + ' option:first-child'); + let selectedText = firstOption.text(); + let selectedValue = firstOption.val(); + let selectedLabel = $('').addClass('flagstrap-icon flagstrap-placeholder'); selectedText = plugin.selected.text || selectedText; selectedValue = plugin.selected.value || selectedValue; if (selectedValue !== plugin.settings.placeholder.value) { - var $selectedLabel = $('').addClass('flagstrap-icon flagstrap-' + selectedValue.toLowerCase()).css('margin-right', plugin.settings.labelMargin); - } else { - var $selectedLabel = $('').addClass('flagstrap-icon flagstrap-placeholder'); + selectedLabel = $('').addClass('flagstrap-icon flagstrap-' + selectedValue.toLowerCase()).css('margin-right', plugin.settings.labelMargin); } - var buttonLabel = $('') + let buttonLabel = $('') .addClass('flagstrap-selected-' + uniqueId) - .html($selectedLabel) + .html(selectedLabel) .append(selectedText); - var button = $('