diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index b488817fd0..37fc0ce90e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json +++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json @@ -16,12 +16,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.2.94", - "_release": "1.2.94", + "version": "1.3.7", + "_release": "1.3.7", "_resolution": { "type": "version", - "tag": "1.2.94", - "commit": "3f1eacda1566966e6b33b198f96ae046f9d49ad2" + "tag": "1.3.7", + "commit": "106e16436f7c13ea1317d2bf98c89eac8fa63668" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.0", diff --git a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js index 9dc78d2489..77d6d49830 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js +++ b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js @@ -88,7 +88,8 @@ // title var dialogOptions = { removeOnClose: true, - enableHistory: options.enableHistory + enableHistory: options.enableHistory, + scrollY: false }; var backButton = false; diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.css b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.css index b7f3b72325..831a69a97b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.css +++ b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.css @@ -4,7 +4,6 @@ z-index: 999999 !important; position: fixed; margin: 24px 40px; - -webkit-overflow-scrolling: touch; -webkit-font-smoothing: antialiased; box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.4); height: auto; @@ -32,21 +31,6 @@ max-width: 70%; } - .dialog.scrollY { - overflow-y: auto; - -webkit-overflow-scrolling: touch; - overflow-x: hidden; - } - - .dialog.hiddenScroll::-webkit-scrollbar { - display: none; - } - - .dialog.hiddenScroll { - -ms-overflow-style: none; - overflow: -moz-scrollbars-none; - } - @media all and (min-width: 1280px) and (min-height: 720px) { .dialog.medium { @@ -80,14 +64,9 @@ } .dialog > * { - margin-top: 20px; padding: 0 24px; } - .dialog > *:first-child { - margin-top: 24px; - } - .dialog .buttons { position: relative; padding: 8px 8px 8px 24px; diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js index 6fb246d3dc..f77864d861 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js @@ -1,4 +1,4 @@ -define(['historyManager', 'focusManager', 'browser', 'layoutManager', 'inputManager', 'css!./dialoghelper.css'], function (historyManager, focusManager, browser, layoutManager, inputManager) { +define(['historyManager', 'focusManager', 'browser', 'layoutManager', 'inputManager', 'scrollHelper', 'css!./dialoghelper.css', 'scrollStyles'], function (historyManager, focusManager, browser, layoutManager, inputManager, scrollHelper) { function dialogHashHandler(dlg, hash, resolve) { @@ -380,11 +380,12 @@ dlg.classList.add('dialog'); - dlg.classList.add('scrollY'); + if (options.scrollY !== false) { + dlg.classList.add('smoothScrollY'); - if (layoutManager.tv || layoutManager.mobile) { - // Need scrollbars for mouse use - dlg.classList.add('hiddenScroll'); + if (layoutManager.tv) { + scrollHelper.centerFocus.on(dlg, false); + } } if (options.removeOnClose) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/formdialog.css b/dashboard-ui/bower_components/emby-webcomponents/formdialog.css new file mode 100644 index 0000000000..8b82f2a1d6 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/formdialog.css @@ -0,0 +1,44 @@ +.formDialog { + display: flex; + flex-direction: column; +} + + .formDialog .dialogHeader { + padding: .35em .5em; + display: flex; + align-items: center; + background-color: #101010; + flex-shrink: 0; + } + + .formDialog .dialogHeaderTitle { + margin-left: .75em; + } + + .formDialog form { + margin: 0 auto; + } + + .formDialog .dialogContent { + flex-grow: 1; + flex-shrink: 0; + width: 100%; + height: 100%; + } + + .formDialog .dialogContentInner { + padding-bottom: 50vh; + padding-top: 1.5em; + } + +@media all and (min-width: 1000px) { + + .formDialog form { + max-width: 70vw; + } +} + +.layout-tv .formDialog .dialogHeader { + padding-top: 1.5em; + padding-bottom: 1.5em; +} diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js index d705805b5a..19a2c103ac 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js @@ -70,7 +70,7 @@ var limit = 5; context.querySelector('.guideRequiresUnlock').classList.remove('hide'); - context.querySelector('.unlockText').innerHTML = globalize.translate('MessageLiveTvGuideRequiresUnlock', limit); + context.querySelector('.unlockText').innerHTML = globalize.translate('LiveTvGuideRequiresUnlock', limit); return limit; }); diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.css b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.css new file mode 100644 index 0000000000..842bfe0ffe --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.css @@ -0,0 +1,3 @@ +.recordingDialog .btnSubmit { + background-color: #cc3333; +} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js index aad83eed0e..b7722ba6b6 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js @@ -1,4 +1,4 @@ -define(['dialogHelper', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'paper-checkbox', 'paper-input', 'paper-icon-button-light'], function (dialogHelper, mediaInfo, appHost, connectionManager, require, loading) { +define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'scrollStyles', 'paper-checkbox', 'paper-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'html!./../icons/mediainfo.html', 'html!./../icons/nav.html'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper) { var currentProgramId; var currentServerId; @@ -39,7 +39,7 @@ function hideSeriesRecordingFields(context) { slideUpToHide(context.querySelector('#seriesFields')); - context.querySelector('.btnSubmitContainer').classList.remove('hide'); + context.querySelector('.btnSubmit').classList.remove('hide'); context.querySelector('.supporterContainer').classList.add('hide'); } @@ -125,14 +125,14 @@ function showSeriesRecordingFields(context, apiClient) { slideDownToShow(context.querySelector('#seriesFields')); - context.querySelector('.btnSubmitContainer').classList.remove('hide'); + context.querySelector('.btnSubmit').classList.remove('hide'); getRegistration(currentProgramId, apiClient).then(function (regInfo) { if (regInfo.IsValid) { - context.querySelector('.btnSubmitContainer').classList.remove('hide'); + context.querySelector('.btnSubmit').classList.remove('hide'); } else { - context.querySelector('.btnSubmitContainer').classList.add('hide'); + context.querySelector('.btnSubmit').classList.add('hide'); } if (regInfo.IsRegistered) { @@ -160,7 +160,7 @@ elem.classList.remove('hide'); - elem.style.overflow = 'hidden'; + elem.style.overflowY = 'hidden'; requestAnimationFrame(function () { @@ -181,7 +181,7 @@ return; } - elem.style.overflow = 'hidden'; + elem.style.overflowY = 'hidden'; requestAnimationFrame(function () { @@ -195,10 +195,21 @@ }); } + function onPremiereLinkClicked(e) { + + require(['shell'], function (shell) { + shell.openUrl('https://emby.media/premiere'); + }); + e.preventDefault(); + return false; + } + function init(context) { var apiClient = connectionManager.getApiClient(currentServerId); + context.querySelector('.lnkPremiere').addEventListener('click', onPremiereLinkClicked); + context.querySelector('#chkRecordSeries').addEventListener('change', function () { if (this.checked) { @@ -208,6 +219,22 @@ } }); + context.querySelector('.btnSubmit').addEventListener('click', function () { + + // Do a fake form submit this the button isn't a real submit button + var fakeSubmit = document.createElement('input'); + fakeSubmit.setAttribute('type', 'submit'); + fakeSubmit.style.display = 'none'; + var form = context.querySelector('form'); + form.appendChild(fakeSubmit); + fakeSubmit.click(); + + // Seeing issues in smart tv browsers where the form does not get submitted if the button is removed prior to the submission actually happening + setTimeout(function () { + form.removeChild(fakeSubmit); + }, 500); + }); + context.querySelector('.btnCancel').addEventListener('click', function () { closeDialog(false); @@ -325,32 +352,37 @@ loading.show(); require(['text!./recordingcreator.template.html'], function (template) { - var dlg = dialogHelper.createDialog({ - removeOnClose: true, - size: 'small' - }); - dlg.classList.add('ui-body-b'); - dlg.classList.add('background-theme-b'); + var dialogOptions = { + removeOnClose: true, + scrollY: false + }; + + if (layoutManager.tv) { + dialogOptions.size = 'fullscreen'; + } else { + dialogOptions.size = 'small'; + } + + var dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add('formDialog'); + dlg.classList.add('recordingDialog'); var html = ''; - html += Globalize.translateDocument(template); + html += globalize.translateDocument(template, 'sharedcomponents'); dlg.innerHTML = html; document.body.appendChild(dlg); - dialogHelper.open(dlg); - currentDialog = dlg; dlg.addEventListener('close', function () { if (recordingCreated) { require(['toast'], function (toast) { - toast(Globalize.translate('MessageRecordingScheduled')); + toast(globalize.translate('RecordingScheduled')); }); resolve(); } else { @@ -358,10 +390,18 @@ } }); + if (layoutManager.tv) { + scrollHelper.centerFocus.on(dlg.querySelector('.dialogContent'), false); + } + hideSeriesRecordingFields(dlg); init(dlg); reload(dlg, itemId); + + setTimeout(function () { + dialogHelper.open(dlg); + }, 1000); }); }); } diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.template.html b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.template.html index 8b3dd90cca..3962726b5d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.template.html @@ -1,73 +1,69 @@ 
- +
${HeaderNewRecording}
+
+
- +

+

+

+

-

-

-

-

+
+
+
+ ${RecordSeries} +
-
+
+
+

${Days}

+
+
+ ${Sunday} + ${Monday} + ${Tuesday} + ${Wednesday} + ${Thursday} + ${Friday} + ${Saturday} +
+
+
+ ${RecordOnlyNewEpisodes} + ${RecordAnytime} + ${RecordOnAllChannels} +
+
+
+
+
+ ${OptionConvertRecordingsToStreamingFormat} +
${OptionConvertRecordingsToStreamingFormatHelp}
+ +

- ${OptionRecordSeries} +

- -
-
-

${HeaderDays}

-
-
- ${OptionSunday} - ${OptionMonday} - ${OptionTuesday} - ${OptionWednesday} - ${OptionThursday} - ${OptionFriday} - ${OptionSaturday} -
-
-

${HeaderRepeatingOptions}

-
-
- ${OptionRecordOnlyNewEpisodes} - ${OptionRecordAnytime} - ${OptionRecordOnAllChannels} -
+
+
-
-

- ${OptionConvertRecordingsToStreamingFormat} -
${OptionConvertRecordingsToStreamingFormatHelp}
- -
-
-
- -
-
-
- -
-
-
-
-

${MessageActiveSubscriptionRequiredSeriesRecordings}

-

${HeaderEnjoyDayTrial}

- ${HeaderBecomeProjectSupporter} +
+
+

${MessageActiveSubscriptionRequiredSeriesRecordings}

+

${HeaderEnjoyDayTrial}

+ ${HeaderBecomeProjectSupporter} +
+ ${Record}
- -
-
-
-
- \ No newline at end of file +
+
+
+ +
\ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/slideshow/slideshow.js b/dashboard-ui/bower_components/emby-webcomponents/slideshow/slideshow.js index 7c0cabaffe..3255f4a0ac 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/slideshow/slideshow.js +++ b/dashboard-ui/bower_components/emby-webcomponents/slideshow/slideshow.js @@ -118,7 +118,8 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f dlg = dialogHelper.createDialog({ exitAnimationDuration: options.interactive ? 400 : 800, size: 'fullscreen', - autoFocus: false + autoFocus: false, + scrollY: false }); dlg.classList.add('slideshowDialog'); diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json index d046b4e7c4..50adac9ee0 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json @@ -2,7 +2,7 @@ "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "ServerUpdateNeeded": "This Emby Server needs to be updated. To download the latest version, please visit {0}", - "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "LiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", "AttributeNew": "New", "AttributePremiere": "Premiere", "AttributeLive": "Live", @@ -22,5 +22,28 @@ "HeaderSelectDate": "Select Date", "ButtonOk": "Ok", "ButtonCancel": "Cancel", - "ButtonGotIt": "Got It" + "ButtonGotIt": "Got It", + "RecordingScheduled": "Recording scheduled.", + "HeaderNewRecording": "New Recording", + "Sunday": "Sunday", + "Monday": "Monday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday", + "Thursday": "Thursday", + "Friday": "Friday", + "Saturday": "Saturday", + "Days": "Days", + "RecordSeries": "Record series", + "PrePaddingMinutes": "Pre-padding minutes:", + "PostPaddingMinutes": "Post-padding minutes:", + "RecordOnAllChannels": "Record on all channels", + "RecordAnytime": "Record at any time", + "RecordOnlyNewEpisodes": "Record only new episodes", + "HeaderBecomeProjectSupporter": "Get Emby Premiere", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", + "OptionConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format", + "OptionConvertRecordingsToStreamingFormatHelp": "Recordings will be converted on the fly to MP4 for easy playback on your devices.", + "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", + "Record": "Record" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/iron-a11y-announcer/.bower.json b/dashboard-ui/bower_components/iron-a11y-announcer/.bower.json index 1baafa9707..d0996a0614 100644 --- a/dashboard-ui/bower_components/iron-a11y-announcer/.bower.json +++ b/dashboard-ui/bower_components/iron-a11y-announcer/.bower.json @@ -30,14 +30,14 @@ "web-component-tester": "polymer/web-component-tester#^3.4.0" }, "ignore": [], - "homepage": "https://github.com/polymerelements/iron-a11y-announcer", + "homepage": "https://github.com/PolymerElements/iron-a11y-announcer", "_release": "1.0.4", "_resolution": { "type": "version", "tag": "v1.0.4", "commit": "5ce3eb8c4282bb53cd72e348858dc6be6b4c50b9" }, - "_source": "git://github.com/polymerelements/iron-a11y-announcer.git", + "_source": "git://github.com/PolymerElements/iron-a11y-announcer.git", "_target": "^1.0.0", - "_originalSource": "polymerelements/iron-a11y-announcer" + "_originalSource": "PolymerElements/iron-a11y-announcer" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/iron-selector/.bower.json b/dashboard-ui/bower_components/iron-selector/.bower.json index e5306ccfc9..1da99816d3 100644 --- a/dashboard-ui/bower_components/iron-selector/.bower.json +++ b/dashboard-ui/bower_components/iron-selector/.bower.json @@ -36,7 +36,7 @@ "tag": "v1.5.1", "commit": "e3e34408fad8f7cde59c4255cf3fe90f7dcf91d8" }, - "_source": "git://github.com/PolymerElements/iron-selector.git", + "_source": "git://github.com/polymerelements/iron-selector.git", "_target": "^1.0.0", - "_originalSource": "PolymerElements/iron-selector" + "_originalSource": "polymerelements/iron-selector" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/paper-behaviors/.bower.json b/dashboard-ui/bower_components/paper-behaviors/.bower.json index a6b333d335..2b04bf9f8a 100644 --- a/dashboard-ui/bower_components/paper-behaviors/.bower.json +++ b/dashboard-ui/bower_components/paper-behaviors/.bower.json @@ -45,7 +45,7 @@ "tag": "v1.0.11", "commit": "e3c1ab0c72905b58fb4d9adc2921ea73b5c085a5" }, - "_source": "git://github.com/polymerelements/paper-behaviors.git", + "_source": "git://github.com/PolymerElements/paper-behaviors.git", "_target": "^1.0.0", - "_originalSource": "polymerelements/paper-behaviors" + "_originalSource": "PolymerElements/paper-behaviors" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/paper-ripple/.bower.json b/dashboard-ui/bower_components/paper-ripple/.bower.json index 2f654d71c6..157225ee71 100644 --- a/dashboard-ui/bower_components/paper-ripple/.bower.json +++ b/dashboard-ui/bower_components/paper-ripple/.bower.json @@ -32,14 +32,14 @@ "iron-test-helpers": "PolymerElements/iron-test-helpers#^1.0.0" }, "ignore": [], - "homepage": "https://github.com/polymerelements/paper-ripple", + "homepage": "https://github.com/PolymerElements/paper-ripple", "_release": "1.0.5", "_resolution": { "type": "version", "tag": "v1.0.5", "commit": "d72e7a9a8ab518b901ed18dde492df3b87a93be5" }, - "_source": "git://github.com/polymerelements/paper-ripple.git", + "_source": "git://github.com/PolymerElements/paper-ripple.git", "_target": "^1.0.0", - "_originalSource": "polymerelements/paper-ripple" + "_originalSource": "PolymerElements/paper-ripple" } \ No newline at end of file diff --git a/dashboard-ui/thirdparty/paper-button-style.css b/dashboard-ui/thirdparty/paper-button-style.css index 0c65c09b2a..f4c566eea8 100644 --- a/dashboard-ui/thirdparty/paper-button-style.css +++ b/dashboard-ui/thirdparty/paper-button-style.css @@ -538,11 +538,6 @@ div.dialogHeader { color: #fff; } -.ui-body-a .pageContentPaperMaterial { - background-color: #fff; - padding: 1.5em; -} - .ui-body-b div.dialogHeader { background-color: #101010; }