/*! UIkit 2.27.5 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ (function(addon) { var component; if (window.UIkit2) { component = addon(UIkit2); } if (typeof define == 'function' && define.amd) { define('uikit-search', ['uikit'], function(){ return component || addon(UIkit2); }); } })(function(UI){ "use strict"; UI.component('search', { defaults: { msgResultsHeader : 'Search Results', msgMoreResults : 'More Results', msgNoResults : 'No results found', template : '<ul class="uk-nav uk-nav-search uk-autocomplete-results">\ {{#msgResultsHeader}}<li class="uk-nav-header uk-skip">{{msgResultsHeader}}</li>{{/msgResultsHeader}}\ {{#items && items.length}}\ {{~items}}\ <li data-url="{{!$item.url}}">\ <a href="{{!$item.url}}">\ {{{$item.title}}}\ {{#$item.text}}<div>{{{$item.text}}}</div>{{/$item.text}}\ </a>\ </li>\ {{/items}}\ {{#msgMoreResults}}\ <li class="uk-nav-divider uk-skip"></li>\ <li class="uk-search-moreresults" data-moreresults="true"><a href="#" onclick="jQuery(this).closest(\'form\').submit();">{{msgMoreResults}}</a></li>\ {{/msgMoreResults}}\ {{/end}}\ {{^items.length}}\ {{#msgNoResults}}<li class="uk-skip"><a>{{msgNoResults}}</a></li>{{/msgNoResults}}\ {{/end}}\ </ul>', renderer: function(data) { var opts = this.options; this.dropdown.append(this.template({items:data.results || [], msgResultsHeader:opts.msgResultsHeader, msgMoreResults: opts.msgMoreResults, msgNoResults: opts.msgNoResults})); this.show(); } }, boot: function() { // init code UI.$html.on('focus.search.uikit', '[data-uk-search]', function(e) { var ele =UI.$(this); if (!ele.data('search')) { UI.search(ele, UI.Utils.options(ele.attr('data-uk-search'))); } }); }, init: function() { var $this = this; this.autocomplete = UI.autocomplete(this.element, this.options); this.autocomplete.dropdown.addClass('uk-dropdown-search'); this.autocomplete.input.on("keyup", function(){ $this.element[$this.autocomplete.input.val() ? 'addClass':'removeClass']('uk-active'); }).closest("form").on("reset", function(){ $this.value = ''; $this.element.removeClass('uk-active'); }); this.on('selectitem.uk.autocomplete', function(e, data) { if (data.url) { location.href = data.url; } else if(data.moreresults) { $this.autocomplete.input.closest('form').submit(); } }); this.element.data('search', this); } }); });