diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-tabs/emby-tabs.js b/dashboard-ui/bower_components/emby-webcomponents/emby-tabs/emby-tabs.js index cc9a140ed9..1de8deedae 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-tabs/emby-tabs.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-tabs/emby-tabs.js @@ -238,7 +238,7 @@ this.selectionBar = null; }; - EmbyTabs.selectedIndex = function (selected) { + EmbyTabs.selectedIndex = function (selected, triggerEvent) { var tabs = this; @@ -253,7 +253,7 @@ var tabButtons = tabs.querySelectorAll('.' + buttonClass); - if (current == selected) { + if (current == selected || triggerEvent === false) { tabs.dispatchEvent(new CustomEvent("beforetabchange", { detail: { @@ -266,7 +266,13 @@ } })); - moveSelectionBar(tabs, tabButtons[selected], tabButtons[selected], false); + var currentTabButton = tabButtons[current]; + moveSelectionBar(tabs, tabButtons[selected], currentTabButton, false); + + if (current != selected && currentTabButton) { + currentTabButton.classList.remove(activeButtonClass); + } + } else { tabButtons[selected].click(); } diff --git a/dashboard-ui/components/dockedtabs/dockedtabs.css b/dashboard-ui/components/dockedtabs/dockedtabs.css index 97102427f9..7ae094c728 100644 --- a/dashboard-ui/components/dockedtabs/dockedtabs.css +++ b/dashboard-ui/components/dockedtabs/dockedtabs.css @@ -17,12 +17,12 @@ border-width: 0 !important; } - .dockedtabs-tab-button:not(.hide) { - display: flex !important; - } +.dockedtabs-tab-button { + display: flex; +} -.dockedtabs-tab-button-noflex:not(.hide) { - display: block !important; +.dockedtabs-tab-button-noflex { + display: block; } .dockedtabs-tab-button, .dockedtabs-tab-button-foreground { diff --git a/dashboard-ui/components/dockedtabs/dockedtabs.js b/dashboard-ui/components/dockedtabs/dockedtabs.js index 16d32beac8..9112486d9a 100644 --- a/dashboard-ui/components/dockedtabs/dockedtabs.js +++ b/dashboard-ui/components/dockedtabs/dockedtabs.js @@ -1,4 +1,7 @@ -define(['apphost', 'connectionManager', 'events', 'globalize', 'browser', 'css!./dockedtabs', 'emby-tabs'], function (appHost, connectionManager, events, globalize, browser) { +define(['apphost', 'connectionManager', 'events', 'globalize', 'browser', 'require', 'dom', 'emby-tabs'], function (appHost, connectionManager, events, globalize, browser, require, dom) { + + // Make sure this is pulled in after button and tab css + require(['css!./dockedtabs']); var currentUser = {}; var currentUserViews = []; @@ -31,7 +34,7 @@ Dashboard.navigate('reports.html'); break; case 'metadatamanager': - Dashboard.navigate('metadatamanager.html'); + Dashboard.navigate('edititemmetadata.html'); break; case 'manageserver': Dashboard.navigate('dashboard.html'); @@ -45,7 +48,7 @@ } } - function showMenu(menuItems, button) { + function showMenu(menuItems, button, tabIndex) { var actionSheetType = browser.safari ? 'actionsheet' : 'webActionSheet'; @@ -59,12 +62,19 @@ exitAnimation: 'fadeout', entryAnimationDuration: 160, exitAnimationDuration: 100, - offsetTop: -30, + offsetTop: -35, positionY: 'top', dialogClass: 'dockedtabs-dlg', menuItemClass: 'dockedtabs-dlg-menuitem' - }).then(executeCommand); + }).then(function (id) { + + executeCommand(id); + if (id) { + var tabs = dom.parentWithClass(button, 'dockedtabs-tabs'); + tabs.selectedIndex(tabIndex, false); + } + }); }); } @@ -78,7 +88,7 @@ }; }); - showMenu(commands, button); + showMenu(commands, button, 1); } function showMoreMenu(button) { @@ -91,10 +101,14 @@ name: globalize.translate('ButtonManageServer'), id: 'manageserver' }); - commands.push({ - name: globalize.translate('MetadataManager'), - id: 'metadatamanager' - }); + + if (dom.getWindowSize().innerWidth >= 800) { + commands.push({ + name: globalize.translate('MetadataManager'), + id: 'metadatamanager' + }); + } + commands.push({ name: globalize.translate('ButtonReports'), id: 'reports' @@ -125,7 +139,7 @@ id: 'signout' }); - showMenu(commands, button); + showMenu(commands, button, 5); } function onTabClick(e) { @@ -163,7 +177,7 @@ function addNoFlexClass(buttons) { - setTimeout(function() { + setTimeout(function () { for (var i = 0, length = buttons.length; i < length; i++) { var button = buttons[i]; diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css index 24ab0ff989..fd8f8be30e 100644 --- a/dashboard-ui/css/librarybrowser.css +++ b/dashboard-ui/css/librarybrowser.css @@ -845,7 +845,6 @@ span.itemCommunityRating:not(:empty) + .userDataIcons { position: fixed; right: 0; bottom: 0; - z-index: 999; text-align: center; font-size: 90%; display: none; diff --git a/dashboard-ui/scripts/channels.js b/dashboard-ui/scripts/channels.js index c06a1faa28..954ae61290 100644 --- a/dashboard-ui/scripts/channels.js +++ b/dashboard-ui/scripts/channels.js @@ -81,12 +81,10 @@ loadTab(view, parseInt(e.detail.selectedTabIndex)); }); - if (AppInfo.enableHeadRoom) { - require(["headroom-window"], function (headroom) { - headroom.add(viewTabs); - self.headroom = headroom; - }); - } + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); view.addEventListener('viewdestroy', function (e) { diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js index e03031bd2f..327aa508d0 100644 --- a/dashboard-ui/scripts/indexpage.js +++ b/dashboard-ui/scripts/indexpage.js @@ -4,7 +4,7 @@ function getDefaultSection(index) { - if (AppInfo.isNativeApp && browserInfo.safari) { + if (AppInfo.isNativeApp) { switch (index) { @@ -24,7 +24,6 @@ return ''; } } - switch (index) { case 0: @@ -371,12 +370,10 @@ Events.off(ApiClient, "websocketmessage", onWebSocketMessage); }); - if (AppInfo.enableHeadRoom) { - require(["headroom-window"], function (headroom) { - headroom.add(viewTabs); - self.headroom = headroom; - }); - } + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); view.addEventListener('viewdestroy', function (e) { if (self.headroom) { diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 090540b065..b41164eeda 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -28,9 +28,7 @@ html += ''; html += ''; - if (AppInfo.enableSearchInTopMenu) { - html += ''; - } + html += ''; html += ''; @@ -948,10 +946,6 @@ function initHeadRoom(elem) { - if (!AppInfo.enableHeadRoom) { - return; - } - require(["headroom-window"], function (headroom) { headroom.add(elem); diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js index d492dc7601..3427bc0a7e 100644 --- a/dashboard-ui/scripts/livetvsuggested.js +++ b/dashboard-ui/scripts/livetvsuggested.js @@ -211,12 +211,10 @@ document.body.classList.remove('autoScrollY'); }); - if (AppInfo.enableHeadRoom) { - require(["headroom-window"], function (headroom) { - headroom.add(viewTabs); - self.headroom = headroom; - }); - } + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); view.addEventListener('viewdestroy', function (e) { diff --git a/dashboard-ui/scripts/moviesrecommended.js b/dashboard-ui/scripts/moviesrecommended.js index 8723b1f5f7..139ca6eb2e 100644 --- a/dashboard-ui/scripts/moviesrecommended.js +++ b/dashboard-ui/scripts/moviesrecommended.js @@ -330,12 +330,10 @@ Events.off(MediaController, 'playbackstop', onPlaybackStop); }); - if (AppInfo.enableHeadRoom) { - require(["headroom-window"], function (headroom) { - headroom.add(viewTabs); - self.headroom = headroom; - }); - } + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); view.addEventListener('viewdestroy', function (e) { if (self.headroom) { diff --git a/dashboard-ui/scripts/musicrecommended.js b/dashboard-ui/scripts/musicrecommended.js index f18ebfa09c..15a6bfea68 100644 --- a/dashboard-ui/scripts/musicrecommended.js +++ b/dashboard-ui/scripts/musicrecommended.js @@ -360,12 +360,10 @@ loadTab(view, parseInt(e.detail.selectedTabIndex)); }); - if (AppInfo.enableHeadRoom) { - require(["headroom-window"], function (headroom) { - headroom.add(viewTabs); - self.headroom = headroom; - }); - } + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); view.addEventListener('viewdestroy', function (e) { diff --git a/dashboard-ui/scripts/sections.js b/dashboard-ui/scripts/sections.js index ee63a68fd6..bad9984734 100644 --- a/dashboard-ui/scripts/sections.js +++ b/dashboard-ui/scripts/sections.js @@ -347,7 +347,8 @@ lazy: true, context: 'home', centerText: true, - overlayPlayButton: true + overlayPlayButton: true, + allowBottomPadding: !enableScrollX() }); html += ''; } @@ -390,7 +391,8 @@ showChildCountIndicator: true, lazy: true, context: 'home', - overlayPlayButton: true + overlayPlayButton: true, + allowBottomPadding: !enableScrollX() }); html += ''; } @@ -451,14 +453,12 @@ if (items.length) { - var screenWidth = dom.getWindowSize().innerWidth; - html += '
'; html += '

' + Globalize.translate('HeaderMyMedia') + '

'; html += '
'; - var scrollX = enableScrollX() && browserInfo.safari && screenWidth > 800; + var scrollX = enableScrollX() && dom.getWindowSize().innerWidth >= 640; if (scrollX) { html += '
'; @@ -472,7 +472,8 @@ centerText: true, lazy: true, autoThumb: true, - transition: false + transition: false, + allowBottomPadding: !enableScrollX() }); html += '
'; } @@ -535,7 +536,8 @@ showDetailsMenu: true, overlayPlayButton: true, context: 'home', - centerText: true + centerText: true, + allowBottomPadding: !enableScrollX() }); html += ''; } @@ -578,7 +580,8 @@ lazy: true, overlayPlayButton: true, context: 'home', - centerText: true + centerText: true, + allowBottomPadding: !enableScrollX() }); html += ''; } @@ -705,7 +708,9 @@ lazy: true, showDetailsMenu: true, centerText: true, - overlayPlayButton: true + overlayPlayButton: true, + allowBottomPadding: !enableScrollX() + }); html += ''; diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index e4796b7193..8d93390aa4 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -923,7 +923,6 @@ var AppInfo = {}; var isCordova = Dashboard.isRunningInCordova(); - AppInfo.enableSearchInTopMenu = true; AppInfo.enableHomeFavorites = true; AppInfo.enableHomeTabs = true; AppInfo.enableNowPlayingPageBottomTabs = true; @@ -941,9 +940,7 @@ var AppInfo = {}; if (isCordova) { //AppInfo.enableSectionTransitions = true; - AppInfo.enableSearchInTopMenu = false; AppInfo.enableHomeFavorites = false; - AppInfo.enableHomeTabs = false; AppInfo.enableNowPlayingPageBottomTabs = false; } } @@ -954,6 +951,7 @@ var AppInfo = {}; AppInfo.enableAppLayouts = true; AppInfo.supportsExternalPlayerMenu = true; AppInfo.isNativeApp = true; + AppInfo.enableHomeTabs = false; if (isIOS) { AppInfo.supportsExternalPlayers = false; @@ -963,9 +961,6 @@ var AppInfo = {}; AppInfo.enableSupporterMembership = true; } - // This doesn't perform well on iOS - AppInfo.enableHeadRoom = !isIOS && !browserInfo.msie; - // This currently isn't working on android, unfortunately AppInfo.supportsFileInput = !(AppInfo.isNativeApp && isAndroid); diff --git a/dashboard-ui/scripts/tvrecommended.js b/dashboard-ui/scripts/tvrecommended.js index 6750485b9e..1f2ab1495f 100644 --- a/dashboard-ui/scripts/tvrecommended.js +++ b/dashboard-ui/scripts/tvrecommended.js @@ -272,12 +272,10 @@ Events.off(ApiClient, "websocketmessage", onWebSocketMessage); }); - if (AppInfo.enableHeadRoom) { - require(["headroom-window"], function (headroom) { - headroom.add(viewTabs); - self.headroom = headroom; - }); - } + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); view.addEventListener('viewdestroy', function (e) {