diff --git a/src/optimize/BaseOptimizer.js b/src/optimize/BaseOptimizer.js index 9ca708ab04fd9..e236769f466d7 100644 --- a/src/optimize/BaseOptimizer.js +++ b/src/optimize/BaseOptimizer.js @@ -63,6 +63,7 @@ class BaseOptimizer { getConfig() { let mapQ = this.sourceMaps ? '?sourceMap' : ''; + let mapQPre = mapQ ? mapQ + '&' : '?'; return { context: fromRoot('.'), @@ -101,7 +102,7 @@ class BaseOptimizer { test: /\.less$/, loader: ExtractTextPlugin.extract( 'style', - `css${mapQ}!autoprefixer${mapQ ? mapQ + '&' : '?'}{ "browsers": ["last 2 versions","> 5%"] }!less${mapQ}` + `css${mapQ}!autoprefixer${mapQPre}{ "browsers": ["last 2 versions","> 5%"] }!less${mapQPre}dumpLineNumbers=comments` ) }, { test: /\.css$/, loader: ExtractTextPlugin.extract('style', `css${mapQ}`) }, @@ -109,7 +110,7 @@ class BaseOptimizer { { test: /\.json$/, loader: 'json' }, { test: /\.(html|tmpl)$/, loader: 'raw' }, { test: /\.png$/, loader: 'url?limit=10000&name=[path][name].[ext]' }, - { test: /\.(woff|woff2|ttf|eot|svg|ico)(\?|$)/, loader: 'file?name=[path][name].[ext]' }, + { test: /\.(woff|woff2|ttf|eot|svg|ico|gif)(\?|$)/, loader: 'file?name=[path][name].[ext]' }, { test: /[\/\\]src[\/\\](plugins|ui)[\/\\].+\.js$/, loader: `rjs-repack${mapQ}` }, { test: /\.js$/, diff --git a/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js b/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js index 1f9bf7b622351..2411e915e149c 100644 --- a/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js +++ b/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js @@ -60,11 +60,11 @@ define(function (require) { }; $scope.toggleDisplay = function (field) { - // inheritted param to fieldChooser + // This is inherited from fieldChooser $scope.toggle(field.name); if (field.display) $scope.increaseFieldCounter(field); - // we are now displaying the field, kill it's details + // we are now displaying the field, kill its details if (field.details) { $scope.toggleDetails(field); } diff --git a/src/plugins/kibana/public/kibana.js b/src/plugins/kibana/public/kibana.js index 2d059cc972c81..ada2082a54178 100644 --- a/src/plugins/kibana/public/kibana.js +++ b/src/plugins/kibana/public/kibana.js @@ -30,8 +30,8 @@ routes chrome .setBrand({ - 'logo': 'url(' + kibanaLogoUrl + ') left no-repeat', - 'smallLogo': 'url(' + kibanaLogoUrl + ') left no-repeat' + 'logo': 'url(' + kibanaLogoUrl + ') center / 160px 70px no-repeat #e8488b', + 'smallLogo': 'url(' + kibanaLogoUrl + ') center / 160px 70px no-repeat #e8488b' }) .setNavBackground('#222222') .setTabDefaults({ diff --git a/src/plugins/kibana/public/settings/sections/advanced/advanced_row.html b/src/plugins/kibana/public/settings/sections/advanced/advanced_row.html index 1bd6edaac6441..4b57f33041143 100644 --- a/src/plugins/kibana/public/settings/sections/advanced/advanced_row.html +++ b/src/plugins/kibana/public/settings/sections/advanced/advanced_row.html @@ -16,7 +16,7 @@
@@ -65,7 +65,7 @@
- + {{conf.value || conf.defVal}} {{(conf.value || conf.defVal).join(', ')}} {{conf.value === undefined ? conf.defVal : conf.value}} @@ -74,7 +74,7 @@ - - {{ chrome.getBrand('title') }} - {{ chrome.getActiveTabTitle() }} - - + + + - - - - + + - - + + -
+
+ diff --git a/src/ui/public/chrome/directives/app_switcher/app_switcher.less b/src/ui/public/chrome/directives/app_switcher/app_switcher.less index 95ac50baa310c..f6ad38223eda1 100644 --- a/src/ui/public/chrome/directives/app_switcher/app_switcher.less +++ b/src/ui/public/chrome/directives/app_switcher/app_switcher.less @@ -1,55 +1,104 @@ +@import (reference) "~ui/styles/mixins"; @import (reference) "~ui/styles/variables"; -@app-icon-size: 48px; -@app-icon-padding: 10px; +// as - App Switcher +@as-open-width: 170px; +@as-closed-width: 53px; +@app-icon-height: 30px; +@transition-time: .65s; +@transition-delay: .2s; +body { overflow-x: hidden; } + +.app-links-wrapper { + width: @as-open-width; + position: fixed; + left: 0; + top: 0; + bottom: 0; + z-index: 0; + background-color: #3caed2; + overflow: hidden; + transition: width @transition-time; + transition-delay: @transition-delay; + + &:hover { + .app-title { + display: inline-block; + } + + .app-wrapper { + transform: translateX(@as-open-width - @as-closed-width); + } + } + + .logo { + height: 70px; + width: @as-open-width; + list-style-type: none; + &.kibana { + background: url("~ui/images/kibana.svg") center / 160px 70px no-repeat #e8488b; + } + } + .bottom-apps { + position: absolute; + bottom: 0; + } +} +.app-wrapper { + .real-flex-parent(); + position: absolute; + transition: transform @transition-time; + transition-delay: @transition-delay; + left: @as-closed-width; + top: 0; + right: 0; + bottom: 0; + z-index: 1; + margin: 0 auto; + background-color: #fff; + + .navbar-right { + margin-right: 0; + } +} .app-links { text-align: justify; .app-link { - display: inline-block; - vertical-align: top; - text-align: left; - width: @app-icon-size + (@app-icon-padding * 2); - margin: 0px 10px; - padding: @app-icon-padding; - border-radius: @border-radius-base; - - .app-icon { + width: @as-open-width; + height: @app-icon-height; + > a { display: block; - height: @app-icon-size; - width: @app-icon-size; + height: 100%; + color: #fff; + } + .app-icon { + float: left; + text-align: center; + font-size: 1.7em; + display: inline-block; + height: @app-icon-height; + width: @as-closed-width; background-position: center; background-size: contain; - border-radius: @border-radius-base; - background-color: @gray-light; - width: 100%; - - &-missing { - text-align: center; - font-size: 2.7em; - font-weight: bold; - font-family: @font-family-sans-serif; - color: #fff; + > i { } } .app-title { - color: @text-color; + width: calc(@as-open-width - @as-closed-width); + display: inline-block; + float: right; font-size: 0.9em; - width: 100%; text-align: center; - margin-top: 3px; - } - - &:hover .app-title { - text-decoration: underline; + line-height: @app-icon-height; } &.active { - background: @gray-lighter; - .app-title { - text-decoration: underline; + background-color: #73c6e0; + > a { + color: #333; + text-decoration: none; } } diff --git a/src/ui/public/images/kibana.gif b/src/ui/public/images/kibana.gif new file mode 100644 index 0000000000000..767b01aceef29 Binary files /dev/null and b/src/ui/public/images/kibana.gif differ diff --git a/src/ui/public/images/kibana.svg b/src/ui/public/images/kibana.svg index 888b9aafa2ef3..dfb45b1544b7b 100644 --- a/src/ui/public/images/kibana.svg +++ b/src/ui/public/images/kibana.svg @@ -1,140 +1 @@ - - - -image/svg+xml \ No newline at end of file +Kibana-Full-Logo \ No newline at end of file diff --git a/src/ui/public/state_management/state.js b/src/ui/public/state_management/state.js index 1c0c91ed003cc..64e202d6e41ba 100644 --- a/src/ui/public/state_management/state.js +++ b/src/ui/public/state_management/state.js @@ -23,7 +23,7 @@ define(function (require) { self.fetch(); }), - // begining of full route update, new app will be initialized before + // beginning of full route update, new app will be initialized before // $routeChangeSuccess or $routeChangeError $rootScope.$on('$routeChangeStart', function () { if (self._persistAcrossApps) { @@ -136,8 +136,8 @@ define(function (require) { * @returns {void} */ State.prototype.destroy = function () { - this.off(); // removes all listners - this._cleanUpListeners(); // Removes the $routeUpdate listner + this.off(); // removes all listeners + this._cleanUpListeners(); // Removes the $routeUpdate listener }; State.prototype.setDefaults = function (defaults) { diff --git a/src/ui/public/styles/base.less b/src/ui/public/styles/base.less index 6dcb58bf4b151..493592cc62995 100644 --- a/src/ui/public/styles/base.less +++ b/src/ui/public/styles/base.less @@ -76,16 +76,16 @@ ul.navbar-inline li { } .content { - .flex-parent(); - position: relative; - z-index: 0; + .real-flex-parent(@flow: row nowrap); + width: 100%; + height: 100%; + overflow: hidden; > nav { - position: relative; z-index: 1; .navbar-right { - margin-right: 0; + margin-right: 0 !important; } } } @@ -94,6 +94,7 @@ ul.navbar-inline li { .flex-parent(@shrink: 0); position: relative; z-index: 0; + background-color: #fff; } .top-fixed { diff --git a/src/ui/public/styles/mixins.less b/src/ui/public/styles/mixins.less index 568f9dd03dada..983ddc1ecfd30 100644 --- a/src/ui/public/styles/mixins.less +++ b/src/ui/public/styles/mixins.less @@ -1,15 +1,20 @@ @import "~ui/styles/variables"; @import (reference) "~bootstrap/less/mixins"; -.flex-parent(@grow: 1, @shrink: 1, @basis: auto) { +.flex-parent(@grow: 1, @shrink: 1, @basis: auto, @direction: column) { flex: @grow @shrink @basis; display: flex; - flex-direction: column; + flex-direction: @direction; > * { flex-shrink: 0; } } +.real-flex-parent(@flow: column nowrap) { + display: flex; + flex-flow: @flow; +} + .ellipsis() { white-space: nowrap; diff --git a/src/ui/public/time_buckets/time_buckets.js b/src/ui/public/time_buckets/time_buckets.js index 1d2449d84a910..71faa411f91d7 100644 --- a/src/ui/public/time_buckets/time_buckets.js +++ b/src/ui/public/time_buckets/time_buckets.js @@ -88,9 +88,9 @@ define(function (require) { /** * Return the current bounds, if we have any. * - * THIS DOES NOT CLONE THE BOUNDS, so editting them + * THIS DOES NOT CLONE THE BOUNDS, so editing them * may have unexpected side-effects. Always - * call bounds.min.clone() before editting + * call bounds.min.clone() before editing * * @return {object|undefined} - If bounds are not defined, this * returns undefined, else it returns the bounds diff --git a/test/support/pages/common.js b/test/support/pages/common.js index 60212a0c9982e..c246031a45437 100644 --- a/test/support/pages/common.js +++ b/test/support/pages/common.js @@ -154,11 +154,11 @@ define(function (require) { var self = this; return self.remote.setFindTimeout(defaultTimeout) - .findByCssSelector('.content > .application') + .findByCssSelector('.app-wrapper > .application') .then(function () { return self.runScript(function () { var $ = window.$; - var $scope = $('.content > .application').scope(); + var $scope = $('.app-wrapper > .application').scope(); return $scope ? $scope.chrome.getApp() : {}; }); });