diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index cd37d7b8b4..3d3e5f757b 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.3.45", - "_release": "1.3.45", + "version": "1.3.48", + "_release": "1.3.48", "_resolution": { "type": "version", - "tag": "1.3.45", - "commit": "dbaa46e3aa38a939b82f305c61e875e1a30da2fe" + "tag": "1.3.48", + "commit": "0764e35340e4625a5af560b2f46468646a7d9d10" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.0", diff --git a/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js b/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js index d357d5d36b..aafe21fd78 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js @@ -88,12 +88,48 @@ define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events'], functio target.addEventListener(type, handler, optionsOrCapture); } + function unveilWithIntersection(images) { + + var filledCount = 0; + + var observer = new IntersectionObserver(function (entries) { + for (var j = 0, length2 = entries.length; j < length2; j++) { + var entry = entries[j]; + var intersectionRatio = entry.intersectionRatio; + if (intersectionRatio) { + + var target = entry.target; + observer.unobserve(target); + fillImage(target); + filledCount++; + } + } + + if (filledCount >= images.length) { + //observer.disconnect(); + } + }, + { + /* Using default options. Details below */ + } + ); + // Start observing an element + for (var i = 0, length = images.length; i < length; i++) { + observer.observe(images[i]); + } + } + function unveilElements(images) { if (!images.length) { return; } + if (window.IntersectionObserver) { + unveilWithIntersection(images); + return; + } + var filledImages = []; var cancellationTokens = []; diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js b/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js index 305fb12543..ead7a4a4ae 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js +++ b/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js @@ -11,7 +11,14 @@ define(['apphost', 'globalize', 'connectionManager'], function (appHost, globali var commands = []; - if (item.CanDownload && user.Policy.EnableContentDownloading && appHost.supports('filedownload')) { + if (item.CanDelete) { + commands.push({ + name: globalize.translate('sharedcomponents#Delete'), + id: 'delete' + }); + } + + if (item.CanDownload && appHost.supports('filedownload')) { commands.push({ name: globalize.translate('sharedcomponents#Download'), id: 'download' @@ -69,6 +76,14 @@ define(['apphost', 'globalize', 'connectionManager'], function (appHost, globali case 'refresh': { refresh(apiClient, itemId); + reject(); + break; + } + case 'delete': + { + deleteItem(apiClient, itemId).then(function () { + resolve(true); + }); break; } case 'share': @@ -83,11 +98,33 @@ define(['apphost', 'globalize', 'connectionManager'], function (appHost, globali break; } default: + reject(); break; } }); } + function deleteItem(apiClient, itemId) { + + return new Promise(function (resolve, reject) { + + var msg = globalize.translate('sharedcomponents#ConfirmDeleteItem'); + var title = globalize.translate('sharedcomponents#HeaderDeleteItem'); + + require(['confirm'], function (confirm) { + + confirm(msg, title).then(function () { + + apiClient.deleteItem(itemId).then(function () { + resolve(true); + }); + + }, reject); + + }); + }); + } + function refresh(apiClient, itemId) { apiClient.refreshItem(itemId, { @@ -97,7 +134,6 @@ define(['apphost', 'globalize', 'connectionManager'], function (appHost, globali MetadataRefreshMode: 'FullRefresh', ReplaceAllImages: false, ReplaceAllMetadata: true - }); require(['toast'], function (toast) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/router.js b/dashboard-ui/bower_components/emby-webcomponents/router.js index ffad2468bf..52c784be2f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/router.js +++ b/dashboard-ui/bower_components/emby-webcomponents/router.js @@ -203,10 +203,10 @@ define(['loading', 'viewManager', 'skinManager', 'pluginManager', 'backdrop', 'b if (!isBackNav) { // Don't force a new view for home due to the back menu - if (route.type != 'home') { + //if (route.type != 'home') { onNewViewNeeded(); return; - } + //} } viewManager.tryRestoreView(currentRequest).then(function () { 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 3b2082f16a..a4cbd770d8 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json @@ -50,6 +50,9 @@ "Edit": "Edit", "Download": "Download", "Advanced": "Advanced", + "Delete": "Delete", + "HeaderDeleteItem": "Delete Item", + "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", "Refresh": "Refresh", "RefreshQueued": "Refresh queued." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js b/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js index a967c1ad58..cc1647d053 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js +++ b/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js @@ -112,76 +112,74 @@ define(['browser'], function (browser) { function slide(newAnimatedPage, oldAnimatedPage, transition, isBack) { - var timings = { - duration: 450, - iterations: 1, - easing: 'ease-out', - fill: 'both' - } + return new Promise(function (resolve, reject) { + var timings = { + duration: 450, + iterations: 1, + easing: 'ease-out' + } - var animations = []; + var animations = []; - if (oldAnimatedPage) { - var destination = isBack ? '100%' : '-100%'; + if (oldAnimatedPage) { + var destination = isBack ? '100%' : '-100%'; - animations.push(oldAnimatedPage.animate([ + animations.push(oldAnimatedPage.animate([ - { transform: 'none', offset: 0 }, - { transform: 'translate3d(' + destination + ', 0, 0)', offset: 1 } + { transform: 'none', offset: 0 }, + { transform: 'translate3d(' + destination + ', 0, 0)', offset: 1 } + + ], timings)); + } + + newAnimatedPage.classList.remove('hide'); + + var start = isBack ? '-100%' : '100%'; + + animations.push(newAnimatedPage.animate([ + + { transform: 'translate3d(' + start + ', 0, 0)', offset: 0 }, + { transform: 'none', offset: 1 } ], timings)); - } - newAnimatedPage.classList.remove('hide'); + currentAnimations = animations; - var start = isBack ? '-100%' : '100%'; - - animations.push(newAnimatedPage.animate([ - - { transform: 'translate3d(' + start + ', 0, 0)', offset: 0 }, - { transform: 'none', offset: 1 } - - ], timings)); - - currentAnimations = animations; - - return new Promise(function (resolve, reject) { animations[animations.length - 1].onfinish = resolve; }); } function fade(newAnimatedPage, oldAnimatedPage, transition, isBack) { - var timings = { - duration: 200, - iterations: 1, - easing: 'ease-out', - fill: 'both' - } + return new Promise(function (resolve, reject) { + var timings = { + duration: 200, + iterations: 1, + easing: 'ease-out' + } - var animations = []; + var animations = []; - if (oldAnimatedPage) { - animations.push(oldAnimatedPage.animate([ + if (oldAnimatedPage) { + animations.push(oldAnimatedPage.animate([ - { opacity: 1, offset: 0 }, - { opacity: 0, offset: 1 } + { opacity: 1, offset: 0 }, + { opacity: 0, offset: 1 } + + ], timings)); + } + + newAnimatedPage.classList.remove('hide'); + + animations.push(newAnimatedPage.animate([ + + { opacity: 0, offset: 0 }, + { opacity: 1, offset: 1 } ], timings)); - } - newAnimatedPage.classList.remove('hide'); + currentAnimations = animations; - animations.push(newAnimatedPage.animate([ - - { opacity: 0, offset: 0 }, - { opacity: 1, offset: 1 } - - ], timings)); - - currentAnimations = animations; - - return new Promise(function (resolve, reject) { animations[animations.length - 1].onfinish = resolve; }); } 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 955c9dc566..01c5a1084b 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.2", "commit": "18e8e12dcd9a4560de480562f65935feed334b86" }, - "_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