diff options
Diffstat (limited to 'assets/js')
-rw-r--r-- | assets/js/site.js | 96 | ||||
-rw-r--r-- | assets/js/tabcomplete.min.js | 6 |
2 files changed, 102 insertions, 0 deletions
diff --git a/assets/js/site.js b/assets/js/site.js index 731798048..04776b425 100644 --- a/assets/js/site.js +++ b/assets/js/site.js @@ -1,6 +1,102 @@ $(function() { + var ads = [ + { quote: "Take your icon game to the next level.", content: "ad_1_next_level"}, + { quote: "Subset your icons, add your own, and serve up from a CDN.", content: "ad_2_all_value_add"}, + { quote: "Make your icons load 10x faster!", content: "ad_3_faster_loading"}, + { quote: "Looking for other great icon sets?", content: "ad_4_more_icons"}, + { quote: "Need a custom icon in Font Awesome?", content: "ad_5_custom_icons"} + ]; + + selectFonticonsAd(); + // start the icon carousel $('#icon-carousel').carousel({ interval: 5000 }); + + var $filter_by = $('#filter-by'); + + // Filter icons + if($filter_by.length) { + var $filter_val = $('#filter-val'); + var $filter = $('#filter'); + var $other = $('#new, #web-application, #transportation, #gender, #form-control, #medical, #currency, #text-editor, #directional, #video-player, #brand, #file-type, #spinner, #payment, #chart'); + var $clear = $('#filter-clear'); + var $no_results = $('#no-search-results'); + + var $icons = $('.filter-icon', $filter); + + // Add tab completion + $filter_by.tabcomplete(filterSet, { + arrowKeys: true + }); + + $clear.on('click', function(e) { + e.preventDefault(); + $filter_by + .val('') + .trigger('input') + .trigger('keyup') + .focus(); + + $clear.addClass('hide'); // Hide clear button + }); + + + $filter_by.on('keyup', function() { + var $this = $(this); + var val = $this.val().toLowerCase(); + $filter.toggle(!!val); + $other.toggle(!val); + $clear.toggleClass('hide', !val); + $filter_val.text(val); + + if(!val) return; + + var resultsCount = 0; + $icons.each(function() { + var filter = $(this).attr('data-filter').split('|'); + var show = inFilter(val, filter); + if (!show) { + if (val.slice(-1) === 's') { + // Try to be smart. Make plural terms singular. + show = inFilter(val.slice(0, -1), filter); + } + } + if (show) resultsCount++; + $(this).toggle(!!show); + }); + + if( resultsCount == 0 && val.length != 0 ) { + $no_results.find('span').text(val); + $no_results.show(); + } else { + $no_results.hide(); + } + }); + } + + function inFilter(val, filter) { + for (var i = 0; i < filter.length; i++) { + if (filter[i].match(val)) return true; + } + return false; + } + + $filter_by + .val('') + .trigger('input') + .trigger('keyup'); + + if ($clear) { + $clear.addClass('hide'); // Hide clear button + } + + function selectFonticonsAd() { + random_number = Math.floor( Math.random() * ads.length ); + random_ad = ads[random_number]; + + $('#rotating-message').html(random_ad.quote); + $('#rotating-url').attr("href", "https://fonticons.com/?utm_source=font_awesome_homepage&utm_medium=display&utm_content=" + random_ad.content + "&utm_campaign=promo_4.3_update"); + } }); diff --git a/assets/js/tabcomplete.min.js b/assets/js/tabcomplete.min.js new file mode 100644 index 000000000..f4c1fdf87 --- /dev/null +++ b/assets/js/tabcomplete.min.js @@ -0,0 +1,6 @@ +/*! + * tabcomplete + * http://github.com/erming/tabcomplete + * v1.4.1 + */ +!function(a){function b(b,c,d){return a.grep(c,function(a){return d?!a.indexOf(b):!a.toLowerCase().indexOf(b.toLowerCase())})}function c(b){var c=this,d=c.prev(".hint");c.css({backgroundColor:"transparent",position:"relative"}),d.length||(c.options.wrapInput&&c.wrap(a("<div>").css({position:"relative",height:c.css("height"),display:c.css("display")})),d=c.clone().attr("tabindex",-1).removeAttr("id name placeholder").addClass("hint").insertBefore(c),d.css({position:"absolute"}));var e="";if("undefined"!=typeof b){var f=c.val();e=f+b.substr(f.split(/ |\n/).pop().length)}d.val(e)}function d(a){var b=this,c=b.val();a&&(b.val(c+a.substr(c.split(/ |\n/).pop().length)),b[0].selectionStart=c.length)}var e={backspace:8,tab:9,up:38,down:40};a.tabcomplete={},a.tabcomplete.defaultOptions={after:"",arrowKeys:!1,hint:"placeholder",match:b,caseSensitive:!1,minLength:1,wrapInput:!0},a.fn.tab=a.fn.tabcomplete=function(b,f){if(this.length>1)return this.each(function(){a(this).tabcomplete(b,f)});var g=this.prop("tagName");if("INPUT"==g||"TEXTAREA"==g){this.options=f=a.extend(a.tabcomplete.defaultOptions,f),this.unbind(".tabcomplete"),this.prev(".hint").remove();var h=this,i=!1,j=-1,k=[],l="",m=a.noop;switch(f.hint){case"placeholder":m=c;break;case"select":m=d}return this.on("input.tabcomplete",function(){var c=h.val(),d=c.split(/ |\n/).pop();j=-1,l="",k=[],h[0].selectionStart==c.length&&d.length&&(k=f.match(d,b,f.caseSensitive),f.after&&(k=a.map(k,function(a){return a+f.after}))),h.trigger("match",k.length),f.hint&&(("select"!=f.hint||!i)&&d.length>=f.minLength?m.call(h,k[0]):m.call(h,"")),i&&(i=!1)}),this.on("keydown.tabcomplete",function(a){var b=a.which;if(b==e.tab||f.arrowKeys&&(b==e.up||b==e.down)){if(a.preventDefault(),b!=e.up)j++;else{if(-1==j)return;0==j?j=k.length-1:j--}var c=k[j%k.length];if(!c)return;var d=h.val();if(l=l||d.split(/ |\n/).pop(),l.length<f.minLength)return;var g="select"==f.hint?d:d.substr(0,h[0].selectionStart-l.length)+c;h.val(g),"select"==f.hint&&(h[0].selectionStart=g.length),l=c,h.trigger("tabcomplete",l),f.hint&&m.call(h,"")}else a.which==e.backspace&&(i=!0,j=-1,l="")}),f.hint&&m.call(this,""),this}}}(jQuery);
\ No newline at end of file |