diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index 5e18fcb3f3..7c3f29a828 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.82", - "_release": "1.3.82", + "version": "1.3.93", + "_release": "1.3.93", "_resolution": { "type": "version", - "tag": "1.3.82", - "commit": "f25cb631146a714f2cc99666ce060f89eedde9e8" + "tag": "1.3.93", + "commit": "e471f95b705f30e5e07437f1adb28ca9f957b6e3" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.0", diff --git a/dashboard-ui/bower_components/emby-webcomponents/alert/alert.js b/dashboard-ui/bower_components/emby-webcomponents/alert/alert.js index 31bf70a203..96847a2d64 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/alert/alert.js +++ b/dashboard-ui/bower_components/emby-webcomponents/alert/alert.js @@ -1,4 +1,4 @@ -define(['dialogHelper', 'layoutManager', 'globalize', 'html!./../icons/nav.html', 'css!./../prompt/style.css', 'paper-button', 'paper-icon-button-light', 'paper-input'], function (dialogHelper, layoutManager, globalize) { +define(['dialogHelper', 'layoutManager', 'globalize', 'html!./../icons/nav.html', 'css!./../prompt/style.css', 'paper-button', 'paper-icon-button-light'], function (dialogHelper, layoutManager, globalize) { function getIcon(icon, cssClass, canFocus, autoFocus) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/backdrop/backdrop.js b/dashboard-ui/bower_components/emby-webcomponents/backdrop/backdrop.js index 43eb979a67..0bf47b0ed3 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/backdrop/backdrop.js +++ b/dashboard-ui/bower_components/emby-webcomponents/backdrop/backdrop.js @@ -107,6 +107,8 @@ var elem = getBackdropContainer(); elem.innerHTML = ''; + getSkinContainer().removeAttribute('data-backdroptype'); + if (clearAll) { hasExternalBackdrop = false; } @@ -114,16 +116,18 @@ } var skinContainer; - function setSkinContainerBackgroundEnabled() { - + function getSkinContainer() { if (!skinContainer) { skinContainer = document.querySelector('.skinContainer'); } + return skinContainer; + } + function setSkinContainerBackgroundEnabled() { if (hasInternalBackdrop || hasExternalBackdrop) { - skinContainer.classList.add('withBackdrop'); + getSkinContainer().classList.add('withBackdrop'); } else { - skinContainer.classList.remove('withBackdrop'); + getSkinContainer().classList.remove('withBackdrop'); } } @@ -166,7 +170,7 @@ currentLoadingBackdrop = instance; } - function setBackdrops(items) { + function setBackdrops(items, type) { var images = items.map(function (i) { @@ -207,7 +211,7 @@ quality: 100 }); - setBackdrop(imgUrl); + setBackdrop(imgUrl, type); }); } else { @@ -215,11 +219,17 @@ } } - function setBackdrop(url) { + function setBackdrop(url, type) { if (url) { setBackdropImage(url); + if (type) { + getSkinContainer().setAttribute('data-backdroptype', type); + } else { + getSkinContainer().removeAttribute('data-backdroptype'); + } + } else { clearBackdrop(); } diff --git a/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js b/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js index 5a939d6712..a9c7717fb3 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js +++ b/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js @@ -1,4 +1,4 @@ -define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'scrollHelper', 'embyRouter', 'globalize', 'paper-checkbox', 'paper-input', 'paper-icon-button-light', 'emby-select', 'html!./../icons/nav.html', 'css!./../formdialog'], function (shell, dialogHelper, loading, layoutManager, connectionManager, scrollHelper, embyRouter, globalize) { +define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'scrollHelper', 'embyRouter', 'globalize', 'paper-checkbox', 'emby-input', 'paper-icon-button-light', 'emby-select', 'html!./../icons/nav.html', 'css!./../formdialog'], function (shell, dialogHelper, loading, layoutManager, connectionManager, scrollHelper, embyRouter, globalize) { var currentServerId; @@ -153,8 +153,8 @@ html += '
'; - html += '
'; - html += ''; + html += '
'; + html += ''; html += '
' + globalize.translate('sharedcomponents#NewCollectionNameExample') + '
'; html += '
'; diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js index e03b51d86d..f857fd79dc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js @@ -249,6 +249,15 @@ return elem.animate(keyframes, timing).onfinish = onFinish; } + function scaleDown(elem) { + + var keyframes = [ + { transform: 'none', opacity: 1, offset: 0 }, + { transform: 'scale(0)', opacity: 0, offset: 1 }]; + var timing = elem.animationConfig.exit.timing; + return elem.animate(keyframes, timing); + } + function fadeOut(elem) { var keyframes = [ @@ -291,6 +300,8 @@ if (dlg.animationConfig.exit.name == 'fadeout') { animation = fadeOut(dlg); + } else if (dlg.animationConfig.exit.name == 'scaledown') { + animation = scaleDown(dlg); } else if (dlg.animationConfig.exit.name == 'slidedown') { animation = slideDown(dlg); } else { @@ -396,32 +407,32 @@ } var defaultEntryAnimation = browser.animate ? 'scaleup' : 'fadein'; - dlg.entryAnimation = options.entryAnimation || defaultEntryAnimation; - dlg.exitAnimation = 'fadeout'; + var entryAnimation = options.entryAnimation || defaultEntryAnimation; + var defaultExitAnimation = browser.animate ? 'scaledown' : 'fadeout'; + var exitAnimation = options.exitAnimation || defaultExitAnimation; // If it's not fullscreen then lower the default animation speed to make it open really fast var entryAnimationDuration = options.entryAnimationDuration || (options.size ? 200 : 300); + var exitAnimationDuration = options.exitAnimationDuration || (options.size ? 200 : 300); dlg.animationConfig = { // scale up 'entry': { - name: dlg.entryAnimation, + name: entryAnimation, node: dlg, timing: { duration: entryAnimationDuration, easing: 'ease-out' } }, // fade out 'exit': { - name: dlg.exitAnimation, + name: exitAnimation, node: dlg, - timing: { duration: options.exitAnimationDuration || 300, easing: 'ease-in' } + timing: { duration: exitAnimationDuration, easing: 'ease-out' } } }; // too buggy in IE, not even worth it if (!enableAnimation()) { dlg.animationConfig = null; - dlg.entryAnimation = null; - dlg.exitAnimation = null; } dlg.classList.add('dialog'); diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-input/emby-input.css b/dashboard-ui/bower_components/emby-webcomponents/emby-input/emby-input.css new file mode 100644 index 0000000000..f34da16a20 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-input/emby-input.css @@ -0,0 +1,53 @@ +[is="emby-input"] { + display: block; + margin: 0; + margin-bottom: 0 !important; + background: none; + border: 1px solid rgb(221, 221, 221); + border-width: 0 0 1px 0; + /* Prefixed box-sizing rules necessary for older browsers */ + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + /* Remove select styling */ + /* Font size must the 16px or larger to prevent iOS page zoom on focus */ + font-size: inherit; + /* General select styles: change as needed */ + font-family: inherit; + font-weight: inherit; + color: inherit; + padding: .35em 0 .3em 0; + cursor: pointer; + outline: none !important; + width: 100%; + background-color: transparent; + border-radius: 0; +} + +.inputContainer { + margin-bottom: 1.5em; +} + +.inputLabel { + display: block; +} + +.inputLabelFocused { + color: #52B54B; +} + +.emby-input-selectionbar { + height: 2px; + transform: scale(.01, 1); + transition: transform .25s ease-out; + position: relative; + top: -1px; + margin-bottom: .5em; + -webkit-transform-origin: center center; + transform-origin: center center; +} + +[is="emby-input"]:focus + .emby-input-selectionbar { + background-color: #52B54B; + transform: none; +} diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-input/emby-input.js b/dashboard-ui/bower_components/emby-webcomponents/emby-input/emby-input.js new file mode 100644 index 0000000000..08bc197182 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-input/emby-input.js @@ -0,0 +1,71 @@ +define(['layoutManager', 'browser', 'css!./emby-input'], function (layoutManager, browser) { + + var EmbyInputPrototype = Object.create(HTMLInputElement.prototype); + + function getLabel(input) { + var elem = input.previousSibling; + while (elem && elem.tagName != 'LABEL') { + elem = elem.previousSibling; + } + return elem; + } + + function onFocus(e) { + var label = getLabel(this); + if (label) { + label.classList.add('inputLabelFocused'); + label.classList.remove('inputLabelUnfocused'); + } + } + + function onBlur(e) { + var label = getLabel(this); + if (label) { + label.classList.add('inputLabelUnfocused'); + label.classList.remove('inputLabelFocused'); + } + } + + EmbyInputPrototype.createdCallback = function () { + + var parent = this.parentNode; + if (!parent.classList.contains('inputContainer')) { + var div = this.ownerDocument.createElement('div'); + div.classList.add('inputContainer'); + parent.replaceChild(div, this); + div.appendChild(this); + } + if (!this.id) { + this.id = 'input' + new Date().getTime(); + } + + this.removeEventListener('focus', onFocus); + this.removeEventListener('blur', onBlur); + + this.addEventListener('focus', onFocus); + this.addEventListener('blur', onBlur); + }; + + EmbyInputPrototype.attachedCallback = function () { + + if (this.getAttribute('data-embyinput') != 'true') { + this.setAttribute('data-embyinput', 'true'); + + var label = this.ownerDocument.createElement('label'); + label.innerHTML = this.getAttribute('label') || ''; + label.classList.add('inputLabel'); + label.classList.add('inputLabelUnfocused'); + label.htmlFor = this.id; + this.parentNode.insertBefore(label, this); + + var div = document.createElement('div'); + div.classList.add('emby-input-selectionbar'); + this.parentNode.insertBefore(div, this.nextSibling); + } + }; + + document.registerElement('emby-input', { + prototype: EmbyInputPrototype, + extends: 'input' + }); +}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js b/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js index 8d1b29b935..147efaf028 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js @@ -141,7 +141,6 @@ var div = document.createElement('div'); div.classList.add('emby-select-selectionbar'); - div.innerHTML = '
'; this.parentNode.insertBefore(div, this.nextSibling); } }; diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js index d0f7373912..cb5a021c12 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js @@ -6,7 +6,9 @@ var items = {}; self.refresh = function () { - reloadPage(options.element); + + var date = new Date(); + changeDate(options.element, date); }; self.destroy = function () { @@ -249,7 +251,14 @@ addAccent = false; } - html += '