From 23c58063ac61d080ffe4852a8a0287401a992fac Mon Sep 17 00:00:00 2001 From: Simon Sturgess Date: Mon, 2 Nov 2015 13:12:10 +0000 Subject: [PATCH 1/5] Conditionally removing selected class from trigger if an option has a blank value. --- fancySelect.coffee | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fancySelect.coffee b/fancySelect.coffee index 26de6bd..277d561 100644 --- a/fancySelect.coffee +++ b/fancySelect.coffee @@ -148,7 +148,10 @@ $.fn.fancySelect = (opts = {}) -> options.find('.selected').removeClass('selected') clicked.addClass 'selected' - trigger.addClass 'selected' + if clicked.data('raw-value') === '' + trigger.removeClass 'selected' + else + trigger.addClass 'selected' return sel.val(clicked.data('raw-value')).trigger('change.fs').trigger('blur.fs').trigger('focus.fs') # handle mouse selection From 731a6b72da8a32ec85e5c27baf72f790dca1a358 Mon Sep 17 00:00:00 2001 From: Simon Sturgess Date: Mon, 2 Nov 2015 13:12:57 +0000 Subject: [PATCH 2/5] Conditionally removing selected class from trigger if an option has a blank value. --- fancySelect.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fancySelect.js b/fancySelect.js index 4bd378a..e3d9b24 100644 --- a/fancySelect.js +++ b/fancySelect.js @@ -162,7 +162,11 @@ } options.find('.selected').removeClass('selected'); clicked.addClass('selected'); - trigger.addClass('selected'); + if(clicked.data('raw-value') === '') { + trigger.removeClass('selected'); + } else { + trigger.addClass('selected'); + } return sel.val(clicked.data('raw-value')).trigger('change.fs').trigger('blur.fs').trigger('focus.fs'); }); options.on('mouseenter.fs', 'li', function() { From 2923829d36d577227419f0aac6b90cbcdbffa22b Mon Sep 17 00:00:00 2001 From: dahliacreative Date: Wed, 4 Nov 2015 09:13:42 +0000 Subject: [PATCH 3/5] fixing coffee source --- fancySelect.coffee | 5 +- fancySelect.js | 377 ++++++++++++++++++++++----------------------- 2 files changed, 186 insertions(+), 196 deletions(-) diff --git a/fancySelect.coffee b/fancySelect.coffee index 277d561..4df345c 100644 --- a/fancySelect.coffee +++ b/fancySelect.coffee @@ -148,10 +148,7 @@ $.fn.fancySelect = (opts = {}) -> options.find('.selected').removeClass('selected') clicked.addClass 'selected' - if clicked.data('raw-value') === '' - trigger.removeClass 'selected' - else - trigger.addClass 'selected' + trigger.toggleClass 'selected', clicked.data('raw-value') != '' return sel.val(clicked.data('raw-value')).trigger('change.fs').trigger('blur.fs').trigger('focus.fs') # handle mouse selection diff --git a/fancySelect.js b/fancySelect.js index e3d9b24..a97ba45 100644 --- a/fancySelect.js +++ b/fancySelect.js @@ -1,210 +1,203 @@ -// Generated by CoffeeScript 1.4.0 -(function() { - var $; +var $; - $ = window.jQuery || window.Zepto || window.$; +$ = window.jQuery || window.Zepto || window.$; - $.fn.fancySelect = function(opts) { - var isiOS, settings; - if (opts == null) { - opts = {}; +$.fn.fancySelect = function(opts) { + var isiOS, settings; + if (opts == null) { + opts = {}; + } + settings = $.extend({ + forceiOS: false, + includeBlank: false, + optionTemplate: function(optionEl) { + return optionEl.text(); + }, + triggerTemplate: function(optionEl) { + return optionEl.text(); } - settings = $.extend({ - forceiOS: false, - includeBlank: false, - optionTemplate: function(optionEl) { - return optionEl.text(); - }, - triggerTemplate: function(optionEl) { - return optionEl.text(); - } - }, opts); - isiOS = !!navigator.userAgent.match(/iP(hone|od|ad)/i); - return this.each(function() { - var copyOptionsToList, disabled, options, sel, trigger, updateTriggerText, wrapper; - sel = $(this); - if (sel.hasClass('fancified') || sel[0].tagName !== 'SELECT') { - return; - } - sel.addClass('fancified'); - sel.css({ - width: 1, - height: 1, - display: 'block', - position: 'absolute', - top: 0, - left: 0, - opacity: 0 - }); - sel.wrap('
'); - wrapper = sel.parent(); - if (sel.data('class')) { - wrapper.addClass(sel.data('class')); - } - wrapper.append('
'); - if (!(isiOS && !settings.forceiOS)) { - wrapper.append('
    '); - } - trigger = wrapper.find('.trigger'); - options = wrapper.find('.options'); - disabled = sel.prop('disabled'); - if (disabled) { - wrapper.addClass('disabled'); + }, opts); + isiOS = !!navigator.userAgent.match(/iP(hone|od|ad)/i); + return this.each(function() { + var copyOptionsToList, disabled, options, sel, trigger, updateTriggerText, wrapper; + sel = $(this); + if (sel.hasClass('fancified') || sel[0].tagName !== 'SELECT') { + return; + } + sel.addClass('fancified'); + sel.css({ + width: 1, + height: 1, + display: 'block', + position: 'absolute', + top: 0, + left: 0, + opacity: 0 + }); + sel.wrap('
    '); + wrapper = sel.parent(); + if (sel.data('class')) { + wrapper.addClass(sel.data('class')); + } + wrapper.append('
    '); + if (!(isiOS && !settings.forceiOS)) { + wrapper.append('
      '); + } + trigger = wrapper.find('.trigger'); + options = wrapper.find('.options'); + disabled = sel.prop('disabled'); + if (disabled) { + wrapper.addClass('disabled'); + } + updateTriggerText = function() { + var triggerHtml; + triggerHtml = settings.triggerTemplate(sel.find(':selected')); + return trigger.html(triggerHtml); + }; + sel.on('blur.fs', function() { + if (trigger.hasClass('open')) { + return setTimeout(function() { + return trigger.trigger('close.fs'); + }, 120); } - updateTriggerText = function() { - var triggerHtml; - triggerHtml = settings.triggerTemplate(sel.find(':selected')); - return trigger.html(triggerHtml); - }; - sel.on('blur.fs', function() { - if (trigger.hasClass('open')) { - return setTimeout(function() { - return trigger.trigger('close.fs'); - }, 120); - } - }); - trigger.on('close.fs', function() { - trigger.removeClass('open'); - return options.removeClass('open'); - }); - trigger.on('click.fs', function() { - var offParent, parent; - if (!disabled) { - trigger.toggleClass('open'); - if (isiOS && !settings.forceiOS) { - if (trigger.hasClass('open')) { - return sel.focus(); - } - } else { - if (trigger.hasClass('open')) { - parent = trigger.parent(); - offParent = parent.offsetParent(); - if ((parent.offset().top + parent.outerHeight() + options.outerHeight() + 20) > $(window).height() + $(window).scrollTop()) { - options.addClass('overflowing'); - } else { - options.removeClass('overflowing'); - } - } - options.toggleClass('open'); - if (!isiOS) { - return sel.focus(); - } - } - } - }); - sel.on('enable', function() { - sel.prop('disabled', false); - wrapper.removeClass('disabled'); - disabled = false; - return copyOptionsToList(); - }); - sel.on('disable', function() { - sel.prop('disabled', true); - wrapper.addClass('disabled'); - return disabled = true; - }); - sel.on('change.fs', function(e) { - if (e.originalEvent && e.originalEvent.isTrusted) { - return e.stopPropagation(); - } else { - return updateTriggerText(); - } - }); - sel.on('keydown', function(e) { - var hovered, newHovered, w; - w = e.which; - hovered = options.find('.hover'); - hovered.removeClass('hover'); - if (!options.hasClass('open')) { - if (w === 13 || w === 32 || w === 38 || w === 40) { - e.preventDefault(); - return trigger.trigger('click.fs'); + }); + trigger.on('close.fs', function() { + trigger.removeClass('open'); + return options.removeClass('open'); + }); + trigger.on('click.fs', function() { + var offParent, parent; + if (!disabled) { + trigger.toggleClass('open'); + if (isiOS && !settings.forceiOS) { + if (trigger.hasClass('open')) { + return sel.focus(); } } else { - if (w === 38) { - e.preventDefault(); - if (hovered.length && hovered.index() > 0) { - hovered.prev().addClass('hover'); - } else { - options.find('li:last-child').addClass('hover'); - } - } else if (w === 40) { - e.preventDefault(); - if (hovered.length && hovered.index() < options.find('li').length - 1) { - hovered.next().addClass('hover'); + if (trigger.hasClass('open')) { + parent = trigger.parent(); + offParent = parent.offsetParent(); + if ((parent.offset().top + parent.outerHeight() + options.outerHeight() + 20) > $(window).height() + $(window).scrollTop()) { + options.addClass('overflowing'); } else { - options.find('li:first-child').addClass('hover'); - } - } else if (w === 27) { - e.preventDefault(); - trigger.trigger('click.fs'); - } else if (w === 13 || w === 32) { - e.preventDefault(); - hovered.trigger('mousedown.fs'); - } else if (w === 9) { - if (trigger.hasClass('open')) { - trigger.trigger('close.fs'); + options.removeClass('overflowing'); } } - newHovered = options.find('.hover'); - if (newHovered.length) { - options.scrollTop(0); - return options.scrollTop(newHovered.position().top - 12); + options.toggleClass('open'); + if (!isiOS) { + return sel.focus(); } } - }); - options.on('mousedown.fs', 'li', function(e) { - var clicked; - clicked = $(this); - sel.val(clicked.data('raw-value')); - if (!isiOS) { - sel.trigger('blur.fs').trigger('focus.fs'); + } + }); + sel.on('enable', function() { + sel.prop('disabled', false); + wrapper.removeClass('disabled'); + disabled = false; + return copyOptionsToList(); + }); + sel.on('disable', function() { + sel.prop('disabled', true); + wrapper.addClass('disabled'); + return disabled = true; + }); + sel.on('change.fs', function(e) { + if (e.originalEvent && e.originalEvent.isTrusted) { + return e.stopPropagation(); + } else { + return updateTriggerText(); + } + }); + sel.on('keydown', function(e) { + var hovered, newHovered, w; + w = e.which; + hovered = options.find('.hover'); + hovered.removeClass('hover'); + if (!options.hasClass('open')) { + if (w === 13 || w === 32 || w === 38 || w === 40) { + e.preventDefault(); + return trigger.trigger('click.fs'); } - options.find('.selected').removeClass('selected'); - clicked.addClass('selected'); - if(clicked.data('raw-value') === '') { - trigger.removeClass('selected'); - } else { - trigger.addClass('selected'); + } else { + if (w === 38) { + e.preventDefault(); + if (hovered.length && hovered.index() > 0) { + hovered.prev().addClass('hover'); + } else { + options.find('li:last-child').addClass('hover'); + } + } else if (w === 40) { + e.preventDefault(); + if (hovered.length && hovered.index() < options.find('li').length - 1) { + hovered.next().addClass('hover'); + } else { + options.find('li:first-child').addClass('hover'); + } + } else if (w === 27) { + e.preventDefault(); + trigger.trigger('click.fs'); + } else if (w === 13 || w === 32) { + e.preventDefault(); + hovered.trigger('mousedown.fs'); + } else if (w === 9) { + if (trigger.hasClass('open')) { + trigger.trigger('close.fs'); + } } - return sel.val(clicked.data('raw-value')).trigger('change.fs').trigger('blur.fs').trigger('focus.fs'); - }); - options.on('mouseenter.fs', 'li', function() { - var hovered, nowHovered; - nowHovered = $(this); - hovered = options.find('.hover'); - hovered.removeClass('hover'); - return nowHovered.addClass('hover'); - }); - options.on('mouseleave.fs', 'li', function() { - return options.find('.hover').removeClass('hover'); - }); - copyOptionsToList = function() { - var selOpts; - updateTriggerText(); - if (isiOS && !settings.forceiOS) { - return; + newHovered = options.find('.hover'); + if (newHovered.length) { + options.scrollTop(0); + return options.scrollTop(newHovered.position().top - 12); } - selOpts = sel.find('option'); - return sel.find('option').each(function(i, opt) { - var optHtml; - opt = $(opt); - if (!opt.prop('disabled') && (opt.val() || settings.includeBlank)) { - optHtml = settings.optionTemplate(opt); - if (opt.prop('selected')) { - return options.append("
    • " + optHtml + "
    • "); - } else { - return options.append("
    • " + optHtml + "
    • "); - } + } + }); + options.on('mousedown.fs', 'li', function(e) { + var clicked; + clicked = $(this); + sel.val(clicked.data('raw-value')); + if (!isiOS) { + sel.trigger('blur.fs').trigger('focus.fs'); + } + options.find('.selected').removeClass('selected'); + clicked.addClass('selected'); + trigger.toggleClass('selected', clicked.data('raw-value') !== ''); + return sel.val(clicked.data('raw-value')).trigger('change.fs').trigger('blur.fs').trigger('focus.fs'); + }); + options.on('mouseenter.fs', 'li', function() { + var hovered, nowHovered; + nowHovered = $(this); + hovered = options.find('.hover'); + hovered.removeClass('hover'); + return nowHovered.addClass('hover'); + }); + options.on('mouseleave.fs', 'li', function() { + return options.find('.hover').removeClass('hover'); + }); + copyOptionsToList = function() { + var selOpts; + updateTriggerText(); + if (isiOS && !settings.forceiOS) { + return; + } + selOpts = sel.find('option'); + return sel.find('option').each(function(i, opt) { + var optHtml; + opt = $(opt); + if (!opt.prop('disabled') && (opt.val() || settings.includeBlank)) { + optHtml = settings.optionTemplate(opt); + if (opt.prop('selected')) { + return options.append("
    • " + optHtml + "
    • "); + } else { + return options.append("
    • " + optHtml + "
    • "); } - }); - }; - sel.on('update.fs', function() { - wrapper.find('.options').empty(); - return copyOptionsToList(); + } }); + }; + sel.on('update.fs', function() { + wrapper.find('.options').empty(); return copyOptionsToList(); }); - }; - -}).call(this); + return copyOptionsToList(); + }); +}; +RunLink \ No newline at end of file From 6cd1f33edea3dd8d22fb3c30b5cebfdf0322feda Mon Sep 17 00:00:00 2001 From: Simon Sturgess Date: Wed, 4 Nov 2015 10:18:50 +0000 Subject: [PATCH 4/5] Update fancySelect.js --- fancySelect.js | 1 - 1 file changed, 1 deletion(-) diff --git a/fancySelect.js b/fancySelect.js index a97ba45..008c226 100644 --- a/fancySelect.js +++ b/fancySelect.js @@ -200,4 +200,3 @@ $.fn.fancySelect = function(opts) { return copyOptionsToList(); }); }; -RunLink \ No newline at end of file From b62a3edd65dc1c83f73e922a682f7c7b9925e84a Mon Sep 17 00:00:00 2001 From: Simon Sturgess Date: Wed, 4 Nov 2015 10:59:10 +0000 Subject: [PATCH 5/5] adding self executing function --- fancySelect.js | 374 +++++++++++++++++++++++++------------------------ 1 file changed, 188 insertions(+), 186 deletions(-) diff --git a/fancySelect.js b/fancySelect.js index 008c226..f037238 100644 --- a/fancySelect.js +++ b/fancySelect.js @@ -1,202 +1,204 @@ -var $; +(function() { + var $; -$ = window.jQuery || window.Zepto || window.$; - -$.fn.fancySelect = function(opts) { - var isiOS, settings; - if (opts == null) { - opts = {}; - } - settings = $.extend({ - forceiOS: false, - includeBlank: false, - optionTemplate: function(optionEl) { - return optionEl.text(); - }, - triggerTemplate: function(optionEl) { - return optionEl.text(); - } - }, opts); - isiOS = !!navigator.userAgent.match(/iP(hone|od|ad)/i); - return this.each(function() { - var copyOptionsToList, disabled, options, sel, trigger, updateTriggerText, wrapper; - sel = $(this); - if (sel.hasClass('fancified') || sel[0].tagName !== 'SELECT') { - return; - } - sel.addClass('fancified'); - sel.css({ - width: 1, - height: 1, - display: 'block', - position: 'absolute', - top: 0, - left: 0, - opacity: 0 - }); - sel.wrap('
      '); - wrapper = sel.parent(); - if (sel.data('class')) { - wrapper.addClass(sel.data('class')); + $ = window.jQuery || window.Zepto || window.$; + + $.fn.fancySelect = function(opts) { + var isiOS, settings; + if (opts == null) { + opts = {}; } - wrapper.append('
      '); - if (!(isiOS && !settings.forceiOS)) { - wrapper.append('
        '); - } - trigger = wrapper.find('.trigger'); - options = wrapper.find('.options'); - disabled = sel.prop('disabled'); - if (disabled) { - wrapper.addClass('disabled'); - } - updateTriggerText = function() { - var triggerHtml; - triggerHtml = settings.triggerTemplate(sel.find(':selected')); - return trigger.html(triggerHtml); - }; - sel.on('blur.fs', function() { - if (trigger.hasClass('open')) { - return setTimeout(function() { - return trigger.trigger('close.fs'); - }, 120); + settings = $.extend({ + forceiOS: false, + includeBlank: false, + optionTemplate: function(optionEl) { + return optionEl.text(); + }, + triggerTemplate: function(optionEl) { + return optionEl.text(); } - }); - trigger.on('close.fs', function() { - trigger.removeClass('open'); - return options.removeClass('open'); - }); - trigger.on('click.fs', function() { - var offParent, parent; - if (!disabled) { - trigger.toggleClass('open'); - if (isiOS && !settings.forceiOS) { - if (trigger.hasClass('open')) { - return sel.focus(); - } - } else { - if (trigger.hasClass('open')) { - parent = trigger.parent(); - offParent = parent.offsetParent(); - if ((parent.offset().top + parent.outerHeight() + options.outerHeight() + 20) > $(window).height() + $(window).scrollTop()) { - options.addClass('overflowing'); - } else { - options.removeClass('overflowing'); - } - } - options.toggleClass('open'); - if (!isiOS) { - return sel.focus(); - } - } + }, opts); + isiOS = !!navigator.userAgent.match(/iP(hone|od|ad)/i); + return this.each(function() { + var copyOptionsToList, disabled, options, sel, trigger, updateTriggerText, wrapper; + sel = $(this); + if (sel.hasClass('fancified') || sel[0].tagName !== 'SELECT') { + return; } - }); - sel.on('enable', function() { - sel.prop('disabled', false); - wrapper.removeClass('disabled'); - disabled = false; - return copyOptionsToList(); - }); - sel.on('disable', function() { - sel.prop('disabled', true); - wrapper.addClass('disabled'); - return disabled = true; - }); - sel.on('change.fs', function(e) { - if (e.originalEvent && e.originalEvent.isTrusted) { - return e.stopPropagation(); - } else { - return updateTriggerText(); + sel.addClass('fancified'); + sel.css({ + width: 1, + height: 1, + display: 'block', + position: 'absolute', + top: 0, + left: 0, + opacity: 0 + }); + sel.wrap('
        '); + wrapper = sel.parent(); + if (sel.data('class')) { + wrapper.addClass(sel.data('class')); } - }); - sel.on('keydown', function(e) { - var hovered, newHovered, w; - w = e.which; - hovered = options.find('.hover'); - hovered.removeClass('hover'); - if (!options.hasClass('open')) { - if (w === 13 || w === 32 || w === 38 || w === 40) { - e.preventDefault(); - return trigger.trigger('click.fs'); + wrapper.append('
        '); + if (!(isiOS && !settings.forceiOS)) { + wrapper.append('
          '); + } + trigger = wrapper.find('.trigger'); + options = wrapper.find('.options'); + disabled = sel.prop('disabled'); + if (disabled) { + wrapper.addClass('disabled'); + } + updateTriggerText = function() { + var triggerHtml; + triggerHtml = settings.triggerTemplate(sel.find(':selected')); + return trigger.html(triggerHtml); + }; + sel.on('blur.fs', function() { + if (trigger.hasClass('open')) { + return setTimeout(function() { + return trigger.trigger('close.fs'); + }, 120); } - } else { - if (w === 38) { - e.preventDefault(); - if (hovered.length && hovered.index() > 0) { - hovered.prev().addClass('hover'); + }); + trigger.on('close.fs', function() { + trigger.removeClass('open'); + return options.removeClass('open'); + }); + trigger.on('click.fs', function() { + var offParent, parent; + if (!disabled) { + trigger.toggleClass('open'); + if (isiOS && !settings.forceiOS) { + if (trigger.hasClass('open')) { + return sel.focus(); + } } else { - options.find('li:last-child').addClass('hover'); + if (trigger.hasClass('open')) { + parent = trigger.parent(); + offParent = parent.offsetParent(); + if ((parent.offset().top + parent.outerHeight() + options.outerHeight() + 20) > $(window).height() + $(window).scrollTop()) { + options.addClass('overflowing'); + } else { + options.removeClass('overflowing'); + } + } + options.toggleClass('open'); + if (!isiOS) { + return sel.focus(); + } } - } else if (w === 40) { - e.preventDefault(); - if (hovered.length && hovered.index() < options.find('li').length - 1) { - hovered.next().addClass('hover'); - } else { - options.find('li:first-child').addClass('hover'); + } + }); + sel.on('enable', function() { + sel.prop('disabled', false); + wrapper.removeClass('disabled'); + disabled = false; + return copyOptionsToList(); + }); + sel.on('disable', function() { + sel.prop('disabled', true); + wrapper.addClass('disabled'); + return disabled = true; + }); + sel.on('change.fs', function(e) { + if (e.originalEvent && e.originalEvent.isTrusted) { + return e.stopPropagation(); + } else { + return updateTriggerText(); + } + }); + sel.on('keydown', function(e) { + var hovered, newHovered, w; + w = e.which; + hovered = options.find('.hover'); + hovered.removeClass('hover'); + if (!options.hasClass('open')) { + if (w === 13 || w === 32 || w === 38 || w === 40) { + e.preventDefault(); + return trigger.trigger('click.fs'); + } + } else { + if (w === 38) { + e.preventDefault(); + if (hovered.length && hovered.index() > 0) { + hovered.prev().addClass('hover'); + } else { + options.find('li:last-child').addClass('hover'); + } + } else if (w === 40) { + e.preventDefault(); + if (hovered.length && hovered.index() < options.find('li').length - 1) { + hovered.next().addClass('hover'); + } else { + options.find('li:first-child').addClass('hover'); + } + } else if (w === 27) { + e.preventDefault(); + trigger.trigger('click.fs'); + } else if (w === 13 || w === 32) { + e.preventDefault(); + hovered.trigger('mousedown.fs'); + } else if (w === 9) { + if (trigger.hasClass('open')) { + trigger.trigger('close.fs'); + } } - } else if (w === 27) { - e.preventDefault(); - trigger.trigger('click.fs'); - } else if (w === 13 || w === 32) { - e.preventDefault(); - hovered.trigger('mousedown.fs'); - } else if (w === 9) { - if (trigger.hasClass('open')) { - trigger.trigger('close.fs'); + newHovered = options.find('.hover'); + if (newHovered.length) { + options.scrollTop(0); + return options.scrollTop(newHovered.position().top - 12); } } - newHovered = options.find('.hover'); - if (newHovered.length) { - options.scrollTop(0); - return options.scrollTop(newHovered.position().top - 12); + }); + options.on('mousedown.fs', 'li', function(e) { + var clicked; + clicked = $(this); + sel.val(clicked.data('raw-value')); + if (!isiOS) { + sel.trigger('blur.fs').trigger('focus.fs'); } - } - }); - options.on('mousedown.fs', 'li', function(e) { - var clicked; - clicked = $(this); - sel.val(clicked.data('raw-value')); - if (!isiOS) { - sel.trigger('blur.fs').trigger('focus.fs'); - } - options.find('.selected').removeClass('selected'); - clicked.addClass('selected'); - trigger.toggleClass('selected', clicked.data('raw-value') !== ''); - return sel.val(clicked.data('raw-value')).trigger('change.fs').trigger('blur.fs').trigger('focus.fs'); - }); - options.on('mouseenter.fs', 'li', function() { - var hovered, nowHovered; - nowHovered = $(this); - hovered = options.find('.hover'); - hovered.removeClass('hover'); - return nowHovered.addClass('hover'); - }); - options.on('mouseleave.fs', 'li', function() { - return options.find('.hover').removeClass('hover'); - }); - copyOptionsToList = function() { - var selOpts; - updateTriggerText(); - if (isiOS && !settings.forceiOS) { - return; - } - selOpts = sel.find('option'); - return sel.find('option').each(function(i, opt) { - var optHtml; - opt = $(opt); - if (!opt.prop('disabled') && (opt.val() || settings.includeBlank)) { - optHtml = settings.optionTemplate(opt); - if (opt.prop('selected')) { - return options.append("
        • " + optHtml + "
        • "); - } else { - return options.append("
        • " + optHtml + "
        • "); - } + options.find('.selected').removeClass('selected'); + clicked.addClass('selected'); + trigger.toggleClass('selected', clicked.data('raw-value') !== ''); + return sel.val(clicked.data('raw-value')).trigger('change.fs').trigger('blur.fs').trigger('focus.fs'); + }); + options.on('mouseenter.fs', 'li', function() { + var hovered, nowHovered; + nowHovered = $(this); + hovered = options.find('.hover'); + hovered.removeClass('hover'); + return nowHovered.addClass('hover'); + }); + options.on('mouseleave.fs', 'li', function() { + return options.find('.hover').removeClass('hover'); + }); + copyOptionsToList = function() { + var selOpts; + updateTriggerText(); + if (isiOS && !settings.forceiOS) { + return; } + selOpts = sel.find('option'); + return sel.find('option').each(function(i, opt) { + var optHtml; + opt = $(opt); + if (!opt.prop('disabled') && (opt.val() || settings.includeBlank)) { + optHtml = settings.optionTemplate(opt); + if (opt.prop('selected')) { + return options.append("
        • " + optHtml + "
        • "); + } else { + return options.append("
        • " + optHtml + "
        • "); + } + } + }); + }; + sel.on('update.fs', function() { + wrapper.find('.options').empty(); + return copyOptionsToList(); }); - }; - sel.on('update.fs', function() { - wrapper.find('.options').empty(); return copyOptionsToList(); }); - return copyOptionsToList(); - }); -}; + }; +}).call(this);