diff --git a/dashboard-ui/cordova/searchmenu.js b/dashboard-ui/cordova/searchmenu.js new file mode 100644 index 0000000000..7b6e0fd0a2 --- /dev/null +++ b/dashboard-ui/cordova/searchmenu.js @@ -0,0 +1,26 @@ +(function () { + + function searchMenu() { + + var self = this; + + self.show = function () { + + cordova.searchbar.show(); + }; + + self.hide = function () { + + cordova.searchbar.hide(); + }; + + document.addEventListener('searchEvent', function (data) { + + Events.trigger(self, 'change', [data.text || '']); + + }, true); + } + + window.SearchMenu = new searchMenu(); + +})(); \ No newline at end of file diff --git a/dashboard-ui/scripts/search.js b/dashboard-ui/scripts/search.js index 10c0c34c90..65638c685e 100644 --- a/dashboard-ui/scripts/search.js +++ b/dashboard-ui/scripts/search.js @@ -61,7 +61,6 @@ self.showSearchPanel = function () { showSearchMenu(); - $('.headerSearchInput').focus(); }; } window.Search = new search(); @@ -179,96 +178,34 @@ function bindSearchEvents() { - $('.headerSearchInput').on("keyup", function (e) { + require(['searchmenu'], function () { + Events.on(SearchMenu, 'closed', closeSearchResults); + Events.on(SearchMenu, 'change', function (e, value) { - // Down key - if (e.keyCode == 40) { - - //var first = $('.card', panel)[0]; - - //if (first) { - // first.focus(); - //} - - return false; - - } else { - - onHeaderSearchChange(this.value); - } - - }).on("search", function (e) { - - if (!this.value) { - - onHeaderSearchChange(''); - } - - }); - - $('.btnCloseSearch').on('click', closeSearchOverlay); - - $('.viewMenuSearchForm').on('submit', function () { - - return false; + onHeaderSearchChange(value); + }); }); } - function closeSearchOverlay() { - $('.headerSearchInput').val(''); + function closeSearchResults() { + onHeaderSearchChange(''); hideSearchMenu(); } function showSearchMenu() { - - require(["jquery", "velocity"], function ($, Velocity) { - - $('.btnCloseSearch').hide(); - var elem = $('.viewMenuSearch') - .css({ left: '100%' }) - .removeClass('hide')[0]; - - Velocity.animate(elem, { "left": "0px" }, - { - complete: function () { - $('.headerSearchInput').focus(); - $('.btnCloseSearch').show(); - } - }); + require(['searchmenu'], function () { + SearchMenu.show(); }); } function hideSearchMenu() { - - var viewMenuSearch = document.querySelector('.viewMenuSearch'); - - if (!viewMenuSearch) { - return; - } - - if (!viewMenuSearch.classList.contains('hide')) { - require(["jquery", "velocity"], function ($, Velocity) { - - $('.btnCloseSearch').hide(); - viewMenuSearch.style.left = '0'; - - Velocity.animate(viewMenuSearch, { "left": "100%" }, - { - complete: function () { - $('.viewMenuSearch').visible(false); - } - }); - }); - } + require(['searchmenu'], function () { + SearchMenu.hide(); + }); } - $(document).on('pagebeforehide', ".libraryPage", function () { - - $('#txtSearch', this).val(''); - $('#searchHints', this).empty(); - - }).on('pagecontainerbeforehide', closeSearchOverlay); + $(document).on('pagecontainerbeforehide', closeSearchResults); $(document).on('headercreated', function () { diff --git a/dashboard-ui/scripts/searchmenu.js b/dashboard-ui/scripts/searchmenu.js new file mode 100644 index 0000000000..d7445300ca --- /dev/null +++ b/dashboard-ui/scripts/searchmenu.js @@ -0,0 +1,92 @@ +(function () { + + function searchMenu() { + + var self = this; + + self.show = function () { + + $('.headerSearchInput').val(''); + + require(["jquery", "velocity"], function ($, Velocity) { + + $('.btnCloseSearch').hide(); + var elem = $('.viewMenuSearch') + .css({ left: '100%' }) + .removeClass('hide')[0]; + + Velocity.animate(elem, { "left": "0px" }, + { + complete: function () { + $('.headerSearchInput').focus(); + $('.btnCloseSearch').show(); + } + }); + }); + }; + + self.hide = function () { + + var viewMenuSearch = document.querySelector('.viewMenuSearch'); + + if (!viewMenuSearch) { + return; + } + + if (!viewMenuSearch.classList.contains('hide')) { + require(["jquery", "velocity"], function ($, Velocity) { + + $('.btnCloseSearch').hide(); + viewMenuSearch.style.left = '0'; + + Velocity.animate(viewMenuSearch, { "left": "100%" }, + { + complete: function () { + $('.viewMenuSearch').visible(false); + } + }); + }); + } + }; + + $('.viewMenuSearchForm').on('submit', function () { + + return false; + }); + + $('.btnCloseSearch').on('click', function () { + Events.trigger(self, 'closed'); + }); + + $('.headerSearchInput').on("keyup", function (e) { + + // Down key + if (e.keyCode == 40) { + + //var first = $('.card', panel)[0]; + + //if (first) { + // first.focus(); + //} + + return false; + + } else { + + Events.trigger(self, 'change', [this.value]); + } + + }).on("search", function (e) { + + if (!this.value) { + + Events.trigger(self, 'change', ['']); + } + + }); + + } + + window.SearchMenu = new searchMenu(); + +})(); \ No newline at end of file diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 83e41b8495..a597d476a8 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -2014,6 +2014,12 @@ var AppInfo = {}; define("sharingwidget", ["scripts/sharingwidget"]); } + if (Dashboard.isRunningInCordova() && $.browser.safari) { + define("searchmenu", ["cordova/searchmenu"]); + } else { + define("searchmenu", ["scripts/searchmenu"]); + } + $.extend(AppInfo, Dashboard.getAppInfo(appName, deviceId, deviceName)); $(document).on('WebComponentsReady', function () {