From 04cf441c5ae18400c6b4865b0b37a71718dc9d46 Mon Sep 17 00:00:00 2001 From: Ola Bini Date: Thu, 31 Jul 2014 19:29:33 -0300 Subject: Add web-ui based on previous code --- web-ui/app/js/search/search_trigger.js | 68 ++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 web-ui/app/js/search/search_trigger.js (limited to 'web-ui/app/js/search/search_trigger.js') diff --git a/web-ui/app/js/search/search_trigger.js b/web-ui/app/js/search/search_trigger.js new file mode 100644 index 00000000..4f8a7a5e --- /dev/null +++ b/web-ui/app/js/search/search_trigger.js @@ -0,0 +1,68 @@ +/*global _ */ +/*global Smail */ + +define( + [ + 'flight/lib/component', + 'views/templates', + 'page/events' + ], function (defineComponent, templates, events) { + + 'use strict'; + + return defineComponent(searchTrigger); + + function searchTrigger() { + var placeHolder = 'Search results for: '; + + this.defaultAttrs({ + input: 'input[type=search]', + form: 'form' + }); + + this.render = function() { + this.$node.html(templates.search.trigger()); + }; + + this.search = function(ev, data) { + ev.preventDefault(); + var input = this.select('input'); + var value = input.val(); + input.blur(); + if(!_.isEmpty(value)){ + this.trigger(document, events.ui.tag.select, { tag: 'all', skipMailListRefresh: true }); + this.trigger(document, events.search.perform, { query: value }); + } else { + this.trigger(document, events.ui.tag.select, { tag: 'all'}); + this.trigger(document, events.search.empty); + } + }; + + this.clearInput = function(event, data) { + if (!data.skipMailListRefresh) + this.select('input').val(''); + }; + + this.showOnlySearchTerms = function(event){ + var value = this.select('input').val(); + var searchTerms = value.slice(placeHolder.length); + this.select('input').val(searchTerms); + }; + + this.showSearchTermsAndPlaceHolder = function(event){ + var value = this.select('input').val(); + if (value.length > 0){ + this.select('input').val(placeHolder + value); + } + }; + + this.after('initialize', function () { + this.render(); + this.on(this.select('form'), 'submit', this.search); + this.on(this.select('input'), 'focus', this.showOnlySearchTerms); + this.on(this.select('input'), 'blur', this.showSearchTermsAndPlaceHolder); + this.on(document, events.ui.tag.selected, this.clearInput); + }); + } + } +); -- cgit v1.2.3