From c043164de5a7596f97b1e5ba677b84bb478c1fa9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 22 Aug 2016 14:28:24 -0400 Subject: [PATCH 1/4] start a dashboard folder --- .../emby-button/paper-icon-button-light.js | 2 +- .../bower_components/iron-meta/.bower.json | 6 +- dashboard-ui/camerauploadsettings.html | 24 +++++ dashboard-ui/cinemamodeconfiguration.html | 2 +- dashboard-ui/css/site.css | 16 ---- .../{scripts => dashboard}/aboutpage.js | 0 .../{scripts => dashboard}/autoorganizelog.js | 0 .../autoorganizesmart.js | 0 .../{scripts => dashboard}/autoorganizetv.js | 0 .../cinemamodeconfiguration.js | 0 .../dashboardgeneral.js | 0 .../dashboardhosting.js | 0 .../{scripts => dashboard}/devicesupload.js | 0 .../{scripts => dashboard}/librarydisplay.js | 0 .../{scripts => dashboard}/librarysettings.js | 0 .../livetvtunerprovider-satip.js | 0 .../{scripts => dashboard}/logpage.js | 0 .../wizardcomponents.js | 0 .../wizardfinishpage.js | 0 dashboard-ui/devices/ios/ios.css | 2 +- dashboard-ui/devicesupload.html | 2 +- dashboard-ui/mysyncsettings.html | 13 +-- dashboard-ui/scripts/camerauploadsettings.js | 95 +++++++++++++++++++ dashboard-ui/scripts/mysyncsettings.js | 22 ----- dashboard-ui/scripts/site.js | 86 +++++++++-------- dashboard-ui/serviceworker.js | 7 +- 26 files changed, 182 insertions(+), 95 deletions(-) create mode 100644 dashboard-ui/camerauploadsettings.html rename dashboard-ui/{scripts => dashboard}/aboutpage.js (100%) rename dashboard-ui/{scripts => dashboard}/autoorganizelog.js (100%) rename dashboard-ui/{scripts => dashboard}/autoorganizesmart.js (100%) rename dashboard-ui/{scripts => dashboard}/autoorganizetv.js (100%) rename dashboard-ui/{scripts => dashboard}/cinemamodeconfiguration.js (100%) rename dashboard-ui/{scripts => dashboard}/dashboardgeneral.js (100%) rename dashboard-ui/{scripts => dashboard}/dashboardhosting.js (100%) rename dashboard-ui/{scripts => dashboard}/devicesupload.js (100%) rename dashboard-ui/{scripts => dashboard}/librarydisplay.js (100%) rename dashboard-ui/{scripts => dashboard}/librarysettings.js (100%) rename dashboard-ui/{scripts => dashboard}/livetvtunerprovider-satip.js (100%) rename dashboard-ui/{scripts => dashboard}/logpage.js (100%) rename dashboard-ui/{scripts => dashboard}/wizardcomponents.js (100%) rename dashboard-ui/{scripts => dashboard}/wizardfinishpage.js (100%) create mode 100644 dashboard-ui/scripts/camerauploadsettings.js diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js b/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js index 39250a7a7..b414c68a2 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js @@ -48,7 +48,7 @@ } } - EmbyButtonPrototype.attachedCallback = function () { + EmbyButtonPrototype.createdCallback = function () { if (this.classList.contains('paper-icon-button-light')) { return; diff --git a/dashboard-ui/bower_components/iron-meta/.bower.json b/dashboard-ui/bower_components/iron-meta/.bower.json index e1304d174..f4bfef4a7 100644 --- a/dashboard-ui/bower_components/iron-meta/.bower.json +++ b/dashboard-ui/bower_components/iron-meta/.bower.json @@ -26,14 +26,14 @@ "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, "main": "iron-meta.html", - "homepage": "https://github.com/PolymerElements/iron-meta", + "homepage": "https://github.com/polymerelements/iron-meta", "_release": "1.1.1", "_resolution": { "type": "version", "tag": "v1.1.1", "commit": "e171ee234b482219c9514e6f9551df48ef48bd9f" }, - "_source": "git://github.com/PolymerElements/iron-meta.git", + "_source": "git://github.com/polymerelements/iron-meta.git", "_target": "^1.0.0", - "_originalSource": "PolymerElements/iron-meta" + "_originalSource": "polymerelements/iron-meta" } \ No newline at end of file diff --git a/dashboard-ui/camerauploadsettings.html b/dashboard-ui/camerauploadsettings.html new file mode 100644 index 000000000..3cade19b9 --- /dev/null +++ b/dashboard-ui/camerauploadsettings.html @@ -0,0 +1,24 @@ +
+ +
+
+ +

+ ${HeaderCameraUpload} +

+ +

${SelectCameraUploadServers}

+ +
+
+
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/dashboard-ui/cinemamodeconfiguration.html b/dashboard-ui/cinemamodeconfiguration.html index 1238c2c3e..13bf29fca 100644 --- a/dashboard-ui/cinemamodeconfiguration.html +++ b/dashboard-ui/cinemamodeconfiguration.html @@ -1,4 +1,4 @@ -
+
diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index 0d09ff734..0a3b6756b 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -533,22 +533,6 @@ progress { } } -.nativeApp *:not(input):not(select):not(textarea) { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-touch-callout: none; - -moz-touch-callout: none; - -ms-touch-callout: none; - touch-callout: none; - -webkit-user-drag: none; - -moz-user-drag: none; - -ms-user-drag: none; - user-drag: none; -} - .syncActivityForTarget { margin: 0 0 3em 0; } diff --git a/dashboard-ui/scripts/aboutpage.js b/dashboard-ui/dashboard/aboutpage.js similarity index 100% rename from dashboard-ui/scripts/aboutpage.js rename to dashboard-ui/dashboard/aboutpage.js diff --git a/dashboard-ui/scripts/autoorganizelog.js b/dashboard-ui/dashboard/autoorganizelog.js similarity index 100% rename from dashboard-ui/scripts/autoorganizelog.js rename to dashboard-ui/dashboard/autoorganizelog.js diff --git a/dashboard-ui/scripts/autoorganizesmart.js b/dashboard-ui/dashboard/autoorganizesmart.js similarity index 100% rename from dashboard-ui/scripts/autoorganizesmart.js rename to dashboard-ui/dashboard/autoorganizesmart.js diff --git a/dashboard-ui/scripts/autoorganizetv.js b/dashboard-ui/dashboard/autoorganizetv.js similarity index 100% rename from dashboard-ui/scripts/autoorganizetv.js rename to dashboard-ui/dashboard/autoorganizetv.js diff --git a/dashboard-ui/scripts/cinemamodeconfiguration.js b/dashboard-ui/dashboard/cinemamodeconfiguration.js similarity index 100% rename from dashboard-ui/scripts/cinemamodeconfiguration.js rename to dashboard-ui/dashboard/cinemamodeconfiguration.js diff --git a/dashboard-ui/scripts/dashboardgeneral.js b/dashboard-ui/dashboard/dashboardgeneral.js similarity index 100% rename from dashboard-ui/scripts/dashboardgeneral.js rename to dashboard-ui/dashboard/dashboardgeneral.js diff --git a/dashboard-ui/scripts/dashboardhosting.js b/dashboard-ui/dashboard/dashboardhosting.js similarity index 100% rename from dashboard-ui/scripts/dashboardhosting.js rename to dashboard-ui/dashboard/dashboardhosting.js diff --git a/dashboard-ui/scripts/devicesupload.js b/dashboard-ui/dashboard/devicesupload.js similarity index 100% rename from dashboard-ui/scripts/devicesupload.js rename to dashboard-ui/dashboard/devicesupload.js diff --git a/dashboard-ui/scripts/librarydisplay.js b/dashboard-ui/dashboard/librarydisplay.js similarity index 100% rename from dashboard-ui/scripts/librarydisplay.js rename to dashboard-ui/dashboard/librarydisplay.js diff --git a/dashboard-ui/scripts/librarysettings.js b/dashboard-ui/dashboard/librarysettings.js similarity index 100% rename from dashboard-ui/scripts/librarysettings.js rename to dashboard-ui/dashboard/librarysettings.js diff --git a/dashboard-ui/scripts/livetvtunerprovider-satip.js b/dashboard-ui/dashboard/livetvtunerprovider-satip.js similarity index 100% rename from dashboard-ui/scripts/livetvtunerprovider-satip.js rename to dashboard-ui/dashboard/livetvtunerprovider-satip.js diff --git a/dashboard-ui/scripts/logpage.js b/dashboard-ui/dashboard/logpage.js similarity index 100% rename from dashboard-ui/scripts/logpage.js rename to dashboard-ui/dashboard/logpage.js diff --git a/dashboard-ui/scripts/wizardcomponents.js b/dashboard-ui/dashboard/wizardcomponents.js similarity index 100% rename from dashboard-ui/scripts/wizardcomponents.js rename to dashboard-ui/dashboard/wizardcomponents.js diff --git a/dashboard-ui/scripts/wizardfinishpage.js b/dashboard-ui/dashboard/wizardfinishpage.js similarity index 100% rename from dashboard-ui/scripts/wizardfinishpage.js rename to dashboard-ui/dashboard/wizardfinishpage.js diff --git a/dashboard-ui/devices/ios/ios.css b/dashboard-ui/devices/ios/ios.css index 2cb4cf359..9f71cff17 100644 --- a/dashboard-ui/devices/ios/ios.css +++ b/dashboard-ui/devices/ios/ios.css @@ -43,7 +43,7 @@ body:not(.dashboardDocument) .mainDrawerButton { .emby-tab-button { font-weight: 400; - text-transform: none; + text-transform: none!important; border-color: transparent !important; border-width: 0 !important; } diff --git a/dashboard-ui/devicesupload.html b/dashboard-ui/devicesupload.html index dbb1283f6..df4c89b3f 100644 --- a/dashboard-ui/devicesupload.html +++ b/dashboard-ui/devicesupload.html @@ -1,4 +1,4 @@ -
+
diff --git a/dashboard-ui/mysyncsettings.html b/dashboard-ui/mysyncsettings.html index 43dced84a..bdf815618 100644 --- a/dashboard-ui/mysyncsettings.html +++ b/dashboard-ui/mysyncsettings.html @@ -20,21 +20,10 @@
-

- ${HeaderCameraUpload} -

- -

${SelectCameraUploadServers}

- -
-
-
- -

+ tv
${ButtonDisplaySettings}
${ButtonDisplaySettingsHelp}
@@ -16,7 +16,7 @@
- + home
${ButtonHomeScreenSettings}
${ButtonHomeScreenSettingsHelp}
@@ -26,7 +26,7 @@
- + play_circle_filled
${ButtonPlaybackSettings}
${ButtonPlaybackSettingsHelp}
@@ -36,7 +36,7 @@
- + person
${ButtonProfile}
${ButtonProfileHelp}
@@ -44,12 +44,20 @@
+ +
+ photo +
+
${TabCameraUpload}
+
+
+
+
- -
-
${ButtonSyncSettings}
-
${ButtonSyncSettingsHelp}
+ file_download +
+
${HeaderOfflineSync}
@@ -60,15 +68,15 @@
- -
+ wifi +
${HeaderSelectServer}
- -
+ lock +
${ButtonSignOut}
@@ -81,8 +89,8 @@
- -
+ settings +
${ButtonServerDashboard}
diff --git a/dashboard-ui/mysyncsettings.html b/dashboard-ui/mysyncsettings.html index bdf815618..fe6d060a1 100644 --- a/dashboard-ui/mysyncsettings.html +++ b/dashboard-ui/mysyncsettings.html @@ -4,7 +4,7 @@

- ${HeaderSync} + ${HeaderOfflineSync}


diff --git a/dashboard-ui/scripts/camerauploadsettings.js b/dashboard-ui/scripts/camerauploadsettings.js index 9a7bf2c0b..680656bb0 100644 --- a/dashboard-ui/scripts/camerauploadsettings.js +++ b/dashboard-ui/scripts/camerauploadsettings.js @@ -1,4 +1,4 @@ -define(['appSettings'], function (appSettings) { +define(['appSettings', 'emby-checkbox'], function (appSettings) { function loadForm(page, user) { @@ -34,7 +34,7 @@ toast(Globalize.translate('SettingsSaved')); }); - if (cameraUploadServers.length || syncPath) { + if (cameraUploadServers.length) { if (window.MainActivity) { MainActivity.authorizeStorage(); } @@ -60,18 +60,6 @@ return false; }); - view.querySelector('#btnSelectSyncPath').addEventListener('click', function () { - - require(['nativedirectorychooser'], function () { - NativeDirectoryChooser.chooseDirectory().then(function (path) { - - if (path) { - view.querySelector('#txtSyncPath').value = path; - } - }); - }); - }); - view.addEventListener('viewshow', function () { var page = this; @@ -83,12 +71,6 @@ loadForm(page, user); }); - - if (AppInfo.supportsSyncPathSetting) { - page.querySelector('.fldSyncPath').classList.remove('hide'); - } else { - page.querySelector('.fldSyncPath').classList.add('hide'); - } }); }; diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 23baf529c..7e310528c 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -1046,12 +1046,9 @@ setDrawerClass(); - //require(['appfooter'], function (appfooter) { - // var footer = new appfooter({}); - // require(['dockedtabs'], function (dockedtabs) { - // new dockedtabs({ - // appFooter: footer - // }); + //require(['appfooter-shared', 'dockedtabs'], function (footer, dockedtabs) { + // new dockedtabs({ + // appFooter: footer // }); //}); }); \ No newline at end of file diff --git a/dashboard-ui/scripts/mypreferencescommon.js b/dashboard-ui/scripts/mypreferencescommon.js index fd1647cb6..c42722083 100644 --- a/dashboard-ui/scripts/mypreferencescommon.js +++ b/dashboard-ui/scripts/mypreferencescommon.js @@ -1,47 +1,53 @@ -pageIdOn('pageinit', 'myPreferencesMenuPage', function () { +define(['apphost', 'listViewStyle'], function (appHost) { - var page = this; + return function (view, params) { - page.querySelector('.btnLogout').addEventListener('click', function () { + view.querySelector('.btnLogout').addEventListener('click', function () { - Dashboard.logout(); - }); + Dashboard.logout(); + }); -}); + view.addEventListener('viewshow', function () { -pageIdOn('pageshow', 'myPreferencesMenuPage', function () { + var page = this; - var page = this; + var userId = params.userId || Dashboard.getCurrentUserId(); - var userId = getParameterByName('userId') || Dashboard.getCurrentUserId(); + page.querySelector('.lnkDisplayPreferences').setAttribute('href', 'mypreferencesdisplay.html?userId=' + userId); + page.querySelector('.lnkLanguagePreferences').setAttribute('href', 'mypreferenceslanguages.html?userId=' + userId); + page.querySelector('.lnkHomeScreenPreferences').setAttribute('href', 'mypreferenceshome.html?userId=' + userId); + page.querySelector('.lnkMyProfile').setAttribute('href', 'myprofile.html?userId=' + userId); + page.querySelector('.lnkSync').setAttribute('href', 'mysyncsettings.html?userId=' + userId); + page.querySelector('.lnkCameraUpload').setAttribute('href', 'camerauploadsettings.html?userId=' + userId); - page.querySelector('.lnkDisplayPreferences').setAttribute('href', 'mypreferencesdisplay.html?userId=' + userId); - page.querySelector('.lnkLanguagePreferences').setAttribute('href', 'mypreferenceslanguages.html?userId=' + userId); - page.querySelector('.lnkHomeScreenPreferences').setAttribute('href', 'mypreferenceshome.html?userId=' + userId); - page.querySelector('.lnkMyProfile').setAttribute('href', 'myprofile.html?userId=' + userId); - page.querySelector('.lnkSync').setAttribute('href', 'mysyncsettings.html?userId=' + userId); + if (appHost.supports('cameraupload')) { + page.querySelector('.lnkCameraUpload').classList.remove('hide'); + } else { + page.querySelector('.lnkCameraUpload').classList.add('hide'); + } - if (Dashboard.capabilities().SupportsSync) { - page.querySelector('.lnkSync').classList.remove('hide'); - } else { - page.querySelector('.lnkSync').classList.add('hide'); - } + if (appHost.supports('sync')) { + page.querySelector('.lnkSync').classList.remove('hide'); + } else { + page.querySelector('.lnkSync').classList.add('hide'); + } - Dashboard.getCurrentUser().then(function (user) { + Dashboard.getCurrentUser().then(function (user) { - page.querySelector('.headerUser').innerHTML = user.Name; + page.querySelector('.headerUser').innerHTML = user.Name; - if (user.Policy.IsAdministrator) { - page.querySelector('.adminSection').classList.remove('hide'); - } else { - page.querySelector('.adminSection').classList.add('hide'); - } - }); - - if (Dashboard.isConnectMode()) { - page.querySelector('.selectServer').classList.remove('hide'); - } else { - page.querySelector('.selectServer').classList.add('hide'); - } + if (user.Policy.IsAdministrator) { + page.querySelector('.adminSection').classList.remove('hide'); + } else { + page.querySelector('.adminSection').classList.add('hide'); + } + }); + if (Dashboard.isConnectMode()) { + page.querySelector('.selectServer').classList.remove('hide'); + } else { + page.querySelector('.selectServer').classList.add('hide'); + } + }); + }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/mysyncsettings.js b/dashboard-ui/scripts/mysyncsettings.js index a45d08563..a7f98dbb6 100644 --- a/dashboard-ui/scripts/mysyncsettings.js +++ b/dashboard-ui/scripts/mysyncsettings.js @@ -1,4 +1,4 @@ -define(['appSettings'], function (appSettings) { +define(['appSettings', 'apphost'], function (appSettings, appHost) { function loadForm(page, user) { @@ -20,7 +20,7 @@ toast(Globalize.translate('SettingsSaved')); }); - if (cameraUploadServers.length || syncPath) { + if (syncPath) { if (window.MainActivity) { MainActivity.authorizeStorage(); } @@ -70,7 +70,7 @@ loadForm(page, user); }); - if (AppInfo.supportsSyncPathSetting) { + if (appHost.supports('customsyncpath')) { page.querySelector('.fldSyncPath').classList.remove('hide'); } else { page.querySelector('.fldSyncPath').classList.add('hide'); diff --git a/dashboard-ui/scripts/nowplayingbar.js b/dashboard-ui/scripts/nowplayingbar.js index 28eda5368..312bb02b8 100644 --- a/dashboard-ui/scripts/nowplayingbar.js +++ b/dashboard-ui/scripts/nowplayingbar.js @@ -75,7 +75,6 @@ return html; } - var translateY = '-64px'; function slideDown(elem) { if (elem.classList.contains('hide')) { @@ -93,8 +92,8 @@ requestAnimationFrame(function () { var keyframes = [ - { transform: 'translateY(' + translateY + ')', offset: 0 }, - { transform: 'none', offset: 1 }]; + { transform: 'none', offset: 0 }, + { transform: 'translateY(100%)', offset: 1 }]; var timing = { duration: 200, iterations: 1, fill: 'both', easing: 'ease-out' }; elem.animate(keyframes, timing).onfinish = onfinish; }); @@ -115,8 +114,8 @@ requestAnimationFrame(function () { var keyframes = [ - { transform: 'none', offset: 0 }, - { transform: 'translateY(' + translateY + ')', offset: 1 }]; + { transform: 'translateY(100%)', offset: 0 }, + { transform: 'none', offset: 1 }]; var timing = { duration: 200, iterations: 1, fill: 'both', easing: 'ease-out' }; elem.animate(keyframes, timing); }); @@ -308,17 +307,18 @@ return new Promise(function (resolve, reject) { - require(['itemShortcuts', 'css!css/nowplayingbar.css', 'emby-slider'], function (itemShortcuts) { + require(['appfooter-shared', 'itemShortcuts', 'css!css/nowplayingbar.css', 'emby-slider'], function (appfooter, itemShortcuts) { - nowPlayingBarElement = document.querySelector('.nowPlayingBar'); + var parentContainer = appfooter.element; + nowPlayingBarElement = parentContainer.querySelector('.nowPlayingBar'); if (nowPlayingBarElement) { resolve(nowPlayingBarElement); return; } - document.body.insertAdjacentHTML('beforeend', getNowPlayingBarHtml()); - nowPlayingBarElement = document.querySelector('.nowPlayingBar'); + parentContainer.insertAdjacentHTML('beforeend', getNowPlayingBarHtml()); + nowPlayingBarElement = parentContainer.querySelector('.nowPlayingBar'); if (browser.safari && browser.slow) { // Not handled well here. The wrong elements receive events, bar doesn't update quickly enough, etc. diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 3856112f9..474fd1ce5 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -861,7 +861,7 @@ var Dashboard = { if (enableVlcAudio) { profile.DirectPlayProfiles.push({ - Container: "aac,mp3,mpa,wav,wma,mp2,ogg,oga,webma,ape,opus", + Container: "aac,mp3,mpa,wav,wma,mp2,ogg,oga,webma,ape,m4a,opus,flac", Type: 'Audio' }); @@ -987,8 +987,6 @@ var AppInfo = {}; AppInfo.enableBackButton = isIOS && (window.navigator.standalone || AppInfo.isNativeApp); - AppInfo.supportsSyncPathSetting = isCordova && isAndroid; - if (isCordova && isIOS) { AppInfo.moreIcon = 'more-horiz'; } else { @@ -1206,6 +1204,11 @@ var AppInfo = {}; return hammer; } + function createSharedAppFooter(appFooter) { + var footer = new appFooter({}); + return footer; + } + function initRequire() { var urlArgs = "v=" + (window.dashboardVersion || new Date().getDate()); @@ -1503,6 +1506,7 @@ var AppInfo = {}; define("headroom-window", ['headroom'], createWindowHeadroom); define("hammer-main", ['hammer'], createMainContentHammer); + define("appfooter-shared", ['appfooter'], createSharedAppFooter); // mock this for now. not used in this app define("playbackManager", [], function () { @@ -2330,7 +2334,8 @@ var AppInfo = {}; path: '/mypreferencesmenu.html', dependencies: ['emby-button'], autoFocus: false, - transition: 'fade' + transition: 'fade', + controller: 'scripts/mypreferencescommon' }); defineRoute({ @@ -2753,10 +2758,7 @@ var AppInfo = {}; postInitDependencies.push('cordova/ios/orientation'); postInitDependencies.push('cordova/ios/remotecontrols'); - if (Dashboard.capabilities().SupportsSync) { - - postInitDependencies.push('cordova/ios/backgroundfetch'); - } + //postInitDependencies.push('cordova/ios/backgroundfetch'); } } else if (browserInfo.chrome) { diff --git a/dashboard-ui/thirdparty/paper-button-style.css b/dashboard-ui/thirdparty/paper-button-style.css index 7087b1611..1429fe441 100644 --- a/dashboard-ui/thirdparty/paper-button-style.css +++ b/dashboard-ui/thirdparty/paper-button-style.css @@ -6,10 +6,6 @@ background: #e1f5f3; } -button.emby-button.fab.blue { - background: #03a9f4; -} - button.emby-button.menuButton { color: #212121; text-align: left; @@ -126,18 +122,6 @@ button.emby-button.notext { padding-right: .25em !important; } -.fab.green { - background-color: #81c784 !important; -} - -.fab.orange { - background-color: #ffd54f !important; -} - -.fab.red { - background-color: #e57373 !important; -} - .ui-body-b .paperListLabel, .ui-body-b .fieldDescription, .ui-body-b .selectLabelUnfocused, .ui-body-b .inputLabelUnfocused, .ui-body-b .textareaLabelUnfocused { color: #ccc; }